@unbrained/pm-cli 2026.7.11 → 2026.7.12
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/.claude-plugin/marketplace.json +2 -2
- package/CHANGELOG.md +36 -2
- package/README.md +0 -33
- package/dist/cli/commands/claim.d.ts +32 -1
- package/dist/cli/commands/claim.js +52 -15
- package/dist/cli/commands/claim.js.map +1 -1
- package/dist/cli/commands/completion.js +11 -2
- package/dist/cli/commands/completion.js.map +1 -1
- package/dist/cli/commands/create.js +4 -65
- package/dist/cli/commands/create.js.map +1 -1
- package/dist/cli/commands/index.d.ts +1 -1
- package/dist/cli/commands/index.js +3 -3
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/init.js +18 -2
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/legacy-none-tokens.d.ts +49 -1
- package/dist/cli/commands/legacy-none-tokens.js +73 -2
- package/dist/cli/commands/legacy-none-tokens.js.map +1 -1
- package/dist/cli/commands/next.d.ts +14 -2
- package/dist/cli/commands/next.js +39 -11
- package/dist/cli/commands/next.js.map +1 -1
- package/dist/cli/commands/plan.d.ts +5 -0
- package/dist/cli/commands/plan.js +44 -2
- package/dist/cli/commands/plan.js.map +1 -1
- package/dist/cli/commands/update.js +7 -67
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/extension-command-help.d.ts +13 -1
- package/dist/cli/extension-command-help.js +79 -5
- package/dist/cli/extension-command-help.js.map +1 -1
- package/dist/cli/main.js +9 -6
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/register-list-query.js +3 -2
- package/dist/cli/register-list-query.js.map +1 -1
- package/dist/cli/register-mutation.js +3 -2
- package/dist/cli/register-mutation.js.map +1 -1
- package/dist/cli/register-operations.js +24 -3
- package/dist/cli/register-operations.js.map +1 -1
- package/dist/cli-bundle/chunks/append-RH3G5RAV.js +11 -0
- package/dist/cli-bundle/chunks/{append-464PHZ65.js → append-T5DTS4NU.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-YMP6AKGU.js → chunk-2XWRFOPR.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-HT5P3WC6.js → chunk-2Z36LSAT.js} +6 -6
- package/dist/cli-bundle/chunks/{chunk-WQ5227PH.js → chunk-33O5P6KT.js} +135 -41
- package/dist/cli-bundle/chunks/chunk-33O5P6KT.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-DBV6QRYT.js → chunk-3KJ3FG5O.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-AQLKMQQA.js → chunk-3M5BWYUA.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-GPBKJERW.js → chunk-3WASQS5G.js} +42 -6
- package/dist/cli-bundle/chunks/chunk-3WASQS5G.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-47CCRGRH.js → chunk-47TKJR3D.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-YCSDMIQW.js → chunk-4MO4PPR2.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-WCRAUCJO.js → chunk-546WPG33.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-RLOWK5EQ.js → chunk-5754C5XS.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-7U5INZ2C.js → chunk-5V746BN3.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-7324AI5M.js → chunk-66YL6RR5.js} +30 -20
- package/dist/cli-bundle/chunks/{chunk-7324AI5M.js.map → chunk-66YL6RR5.js.map} +2 -2
- package/dist/cli-bundle/chunks/{chunk-ZLQDOBZL.js → chunk-6OK5QSGH.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-ROH64TST.js → chunk-6XNMSLBT.js} +78 -72
- package/dist/cli-bundle/chunks/chunk-6XNMSLBT.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-2HNZKLHV.js → chunk-7SHFQB2A.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-6APTSPP5.js → chunk-7SIWW7C3.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-7HQQT6AT.js → chunk-7TYZTBEV.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-VTOQH22Y.js → chunk-A2HZUSEA.js} +8 -6
- package/dist/cli-bundle/chunks/{chunk-VTOQH22Y.js.map → chunk-A2HZUSEA.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-YCHJLOO2.js → chunk-A6AK7W5M.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-WBKZAO3P.js → chunk-A6AVSYRJ.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-L7C6RTGH.js → chunk-ACDIA6NP.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-AX3BJLPV.js → chunk-ACRC3HI4.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-QCKPSFII.js → chunk-AHIEDSW2.js} +30 -20
- package/dist/cli-bundle/chunks/{chunk-QCKPSFII.js.map → chunk-AHIEDSW2.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-B6JBI7JX.js → chunk-ANLHBXAE.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-2KQG6L3J.js → chunk-AS62PEJE.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-OJ64VYGO.js → chunk-BAK2VLTQ.js} +62 -33
- package/dist/cli-bundle/chunks/chunk-BAK2VLTQ.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-J3EXRK2H.js → chunk-BLRO2POO.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-KDNZSVCK.js → chunk-CDR2A3VI.js} +15 -74
- package/dist/cli-bundle/chunks/chunk-CDR2A3VI.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-2WGV5WRW.js → chunk-DJI5IS46.js} +42 -20
- package/dist/cli-bundle/chunks/{chunk-2WGV5WRW.js.map → chunk-DJI5IS46.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-VOXOXART.js → chunk-DLZ3RXAL.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-H6YDNW46.js → chunk-DNH44IKP.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-QI5KTH6A.js → chunk-EBBROE54.js} +9 -9
- package/dist/cli-bundle/chunks/{chunk-GC5ME4ZU.js → chunk-FF523THY.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-5OBMSBWX.js → chunk-FIZUJWXQ.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-HLBSL5KE.js → chunk-FVWQFTTW.js} +6 -6
- package/dist/cli-bundle/chunks/{chunk-YIWYD7TC.js → chunk-FVZEIWTL.js} +10 -10
- package/dist/cli-bundle/chunks/{chunk-E72ZO34Z.js → chunk-G6B5XGNV.js} +97 -32
- package/dist/cli-bundle/chunks/{chunk-E72ZO34Z.js.map → chunk-G6B5XGNV.js.map} +4 -4
- package/dist/cli-bundle/chunks/{chunk-4DC5XNMS.js → chunk-GFBV2254.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-OKZ35F3Y.js → chunk-GRB3TFOC.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-TZFULSN4.js → chunk-GVGFLZQS.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-RTG2LHQ7.js → chunk-HLZXQKGZ.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-5F7UJHFY.js → chunk-HO6CDURZ.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-MN2YMU55.js → chunk-HOE3UV3G.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-XQLLRYOX.js → chunk-HRCJGQXL.js} +134 -40
- package/dist/cli-bundle/chunks/chunk-HRCJGQXL.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-I535LTZ2.js → chunk-IS6M4ETF.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-K7HEURQ4.js → chunk-J2XEW4YL.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-GZNB5V5J.js → chunk-J2ZDZG4A.js} +44 -12
- package/dist/cli-bundle/chunks/chunk-J2ZDZG4A.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-O2Q7YQGO.js → chunk-J7XSQCJO.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-RA2LPP6E.js → chunk-JM4Z53DN.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-JR6FIX53.js → chunk-JNNPTGXR.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-I5VZGPS2.js → chunk-K7CGOZK5.js} +6 -6
- package/dist/cli-bundle/chunks/{chunk-B6OANV3G.js → chunk-KDH62ECD.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-LIY2ILWI.js → chunk-KXFY6AI4.js} +41 -5
- package/dist/cli-bundle/chunks/chunk-KXFY6AI4.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-NR7PTIR7.js → chunk-L23NAJHL.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-FCZ6WYSR.js → chunk-LEXFDABF.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-GP54I36Z.js → chunk-LNAGQRIL.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-DD2WZD6L.js → chunk-LU4Z7POS.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-FEVEIX53.js → chunk-LX265XY7.js} +6 -6
- package/dist/cli-bundle/chunks/{chunk-NJABR6EB.js → chunk-MQAGSAMS.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-MRMS62WQ.js → chunk-N4NKVLPY.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-RY57ESL2.js → chunk-ND3MDD6L.js} +9 -9
- package/dist/cli-bundle/chunks/{chunk-Y476SA4V.js → chunk-NEJKKTCG.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-Q3EW4RE5.js → chunk-NGL3X3XM.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-ENJDRDDP.js → chunk-NK54BSL7.js} +8 -8
- package/dist/cli-bundle/chunks/{chunk-KHQYX2QB.js → chunk-NN57FRRN.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-VNCQ7SSG.js → chunk-NNRXTZ7Y.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-KZQHMDS6.js → chunk-NOIIRLCO.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-CTAPVM6C.js → chunk-O5ELBOEJ.js} +14 -73
- package/dist/cli-bundle/chunks/chunk-O5ELBOEJ.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-K2PDZYUF.js → chunk-OC2CLNMS.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-SN7Q7M4U.js → chunk-OKUFGORG.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-ZLWBLI5R.js → chunk-OOK6V7BF.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-DDEYJ3BH.js → chunk-OUQ4I6HC.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-C4FIA5U6.js → chunk-OYCZDDUC.js} +61 -32
- package/dist/cli-bundle/chunks/chunk-OYCZDDUC.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-X7ZXLB3C.js → chunk-PDOJRPYR.js} +7 -7
- package/dist/cli-bundle/chunks/{chunk-HDNEQAHV.js → chunk-PHQPQNAT.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-FMFSUTTD.js → chunk-PTJ7NVUU.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-5URFS7C4.js → chunk-PUMGO764.js} +7 -7
- package/dist/cli-bundle/chunks/{chunk-RPZ57GQ7.js → chunk-QFCCN4JO.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-RAC2UXLT.js → chunk-QPWXNK56.js} +43 -11
- package/dist/cli-bundle/chunks/chunk-QPWXNK56.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-35YNX7RQ.js → chunk-QYIDXRRX.js} +7 -7
- package/dist/cli-bundle/chunks/{chunk-ITIUEWD5.js → chunk-RFDT674H.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-2BUNV627.js → chunk-SJ2DADDH.js} +8 -8
- package/dist/cli-bundle/chunks/{chunk-MSPZSUKQ.js → chunk-SV7PEWKW.js} +41 -19
- package/dist/cli-bundle/chunks/{chunk-MSPZSUKQ.js.map → chunk-SV7PEWKW.js.map} +2 -2
- package/dist/cli-bundle/chunks/{chunk-ZYDUOY54.js → chunk-TKD4NESJ.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-BU2CV5ZU.js → chunk-TMNQV4EK.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-GJNBKU6G.js → chunk-TWELUDDF.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-A3AIKEYC.js → chunk-TYCM65DJ.js} +78 -72
- package/dist/cli-bundle/chunks/chunk-TYCM65DJ.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-Y5E6FCAL.js → chunk-U3S22BOJ.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-MORRAQXQ.js → chunk-UAZ6W3H3.js} +91 -33
- package/dist/cli-bundle/chunks/chunk-UAZ6W3H3.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-2BKRMFGK.js → chunk-UFY4ETU6.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-EEUIIDWF.js → chunk-UGQENMKM.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-XK5CTXMB.js → chunk-UGSHP6SR.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-2JWIRG4V.js → chunk-VF24O6TV.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-PZBRTJ3Y.js → chunk-VLVTXEGG.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-X6HT3FP3.js → chunk-VMGK6ESD.js} +7 -5
- package/dist/cli-bundle/chunks/{chunk-X6HT3FP3.js.map → chunk-VMGK6ESD.js.map} +2 -2
- package/dist/cli-bundle/chunks/{chunk-NAGOH4YJ.js → chunk-VXUWCJS7.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-ETGRUM64.js → chunk-WBMARQCV.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-L6C62S4V.js → chunk-WZDABROA.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-P63GUQK5.js → chunk-XG5GVZRX.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-6UWHAJEX.js → chunk-XGCPTS6L.js} +10 -10
- package/dist/cli-bundle/chunks/{chunk-XGUXU4IQ.js → chunk-Y44B5FBE.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-C3QR2DPR.js → chunk-YP6DWEWQ.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-TB6364F7.js → chunk-Z7XTVIN5.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-XSJZF3TO.js → chunk-ZEKVLV6P.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-SNFLSFFH.js → chunk-ZFPOBSPC.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-RYASC6U3.js → chunk-ZUB725AA.js} +7 -7
- package/dist/cli-bundle/chunks/{close-A77IGXNC.js → close-CQHW3WMK.js} +5 -5
- package/dist/cli-bundle/chunks/close-ZZW5FLTB.js +12 -0
- package/dist/cli-bundle/chunks/{close-many-P2YOWN52.js → close-many-AR2YH3SJ.js} +12 -12
- package/dist/cli-bundle/chunks/close-many-IKCEGBLQ.js +21 -0
- package/dist/cli-bundle/chunks/comments-NV4SIY5Z.js +13 -0
- package/dist/cli-bundle/chunks/{comments-FNLKE3TW.js → comments-UV4HMI2K.js} +7 -7
- package/dist/cli-bundle/chunks/{copy-U6H22S7E.js → copy-OUFWOHVG.js} +4 -4
- package/dist/cli-bundle/chunks/copy-X7HJFWIH.js +9 -0
- package/dist/cli-bundle/chunks/{create-HS64DHTL.js → create-QEDL4KKT.js} +9 -9
- package/dist/cli-bundle/chunks/create-R6MMMMJS.js +25 -0
- package/dist/cli-bundle/chunks/{delete-4XPF5XLP.js → delete-MJGZFDHZ.js} +4 -4
- package/dist/cli-bundle/chunks/delete-OOJRG4HF.js +10 -0
- package/dist/cli-bundle/chunks/{deps-TMOF765V.js → deps-4OP6Q76N.js} +4 -4
- package/dist/cli-bundle/chunks/{deps-R44LVZTU.js → deps-Y5X6NFT5.js} +4 -4
- package/dist/cli-bundle/chunks/docs-SILTBWSO.js +14 -0
- package/dist/cli-bundle/chunks/{docs-HN6QKGEU.js → docs-UKTQVUHS.js} +6 -6
- package/dist/cli-bundle/chunks/{files-RNFWG435.js → files-2QEI2V3C.js} +6 -6
- package/dist/cli-bundle/chunks/{files-NX4LNOPL.js → files-7OIKZPI3.js} +6 -6
- package/dist/cli-bundle/chunks/focus-3YC5LFCG.js +10 -0
- package/dist/cli-bundle/chunks/{focus-OBSDVVI7.js → focus-FFWH32BF.js} +5 -5
- package/dist/cli-bundle/chunks/{history-compact-RZMMFSTO.js → history-compact-AAA4W6LY.js} +8 -8
- package/dist/cli-bundle/chunks/{history-compact-CKNRN637.js → history-compact-PIURAPW5.js} +8 -8
- package/dist/cli-bundle/chunks/history-redact-KWZ7LKQB.js +16 -0
- package/dist/cli-bundle/chunks/{history-redact-W7TTAEX2.js → history-redact-NTO74EIV.js} +6 -6
- package/dist/cli-bundle/chunks/history-repair-QWZJYYOJ.js +18 -0
- package/dist/cli-bundle/chunks/{history-repair-RGAQBOIS.js → history-repair-ROV5TD3L.js} +8 -8
- package/dist/cli-bundle/chunks/learnings-25TJCVON.js +13 -0
- package/dist/cli-bundle/chunks/{learnings-VDRTXWTF.js → learnings-3WJFJT7E.js} +7 -7
- package/dist/cli-bundle/chunks/{notes-UXXTI3J5.js → notes-FM53JJ5C.js} +7 -7
- package/dist/cli-bundle/chunks/notes-IAHGNCYQ.js +13 -0
- package/dist/cli-bundle/chunks/{plan-H3OPE2RP.js → plan-EJ4USP2S.js} +10 -10
- package/dist/cli-bundle/chunks/plan-WHV4H2RW.js +24 -0
- package/dist/cli-bundle/chunks/{profile-PFNN3CBJ.js → profile-SZQVKHUQ.js} +9 -9
- package/dist/cli-bundle/chunks/{profile-FCZWT5LE.js → profile-TXE673DR.js} +9 -9
- package/dist/cli-bundle/chunks/{register-list-query-BGEGWQ6S.js → register-list-query-LSR2G2SJ.js} +16 -16
- package/dist/cli-bundle/chunks/{register-list-query-BGEGWQ6S.js.map → register-list-query-LSR2G2SJ.js.map} +1 -1
- package/dist/cli-bundle/chunks/{register-list-query-ODDZVR6N.js → register-list-query-S6I73L5W.js} +15 -15
- package/dist/cli-bundle/chunks/{register-list-query-ODDZVR6N.js.map → register-list-query-S6I73L5W.js.map} +2 -2
- package/dist/cli-bundle/chunks/{register-mutation-OAJXSNWK.js → register-mutation-77GYER52.js} +32 -32
- package/dist/cli-bundle/chunks/{register-mutation-OAJXSNWK.js.map → register-mutation-77GYER52.js.map} +1 -1
- package/dist/cli-bundle/chunks/{register-mutation-2APBEHTJ.js → register-mutation-A2SC3K5G.js} +31 -31
- package/dist/cli-bundle/chunks/{register-mutation-2APBEHTJ.js.map → register-mutation-A2SC3K5G.js.map} +2 -2
- package/dist/cli-bundle/chunks/{register-operations-3TYKCKEZ.js → register-operations-KSAIBSZH.js} +43 -33
- package/dist/cli-bundle/chunks/register-operations-KSAIBSZH.js.map +1 -0
- package/dist/cli-bundle/chunks/{register-operations-WKZSX4QP.js → register-operations-W6Z5LVI5.js} +42 -32
- package/dist/cli-bundle/chunks/register-operations-W6Z5LVI5.js.map +7 -0
- package/dist/cli-bundle/chunks/{register-setup-HSVJDV3R.js → register-setup-KB5U3RES.js} +15 -15
- package/dist/cli-bundle/chunks/{register-setup-KE5L3H7U.js → register-setup-ZG7YXPHJ.js} +15 -15
- package/dist/cli-bundle/chunks/{restore-MDNVYUDD.js → restore-F5HPTRBR.js} +6 -6
- package/dist/cli-bundle/chunks/restore-LN57EB5H.js +14 -0
- package/dist/cli-bundle/chunks/{schema-AJCAANMB.js → schema-3DKXA4KR.js} +6 -6
- package/dist/cli-bundle/chunks/{schema-2B37DMM2.js → schema-QLTOK23S.js} +6 -6
- package/dist/cli-bundle/chunks/update-2T5EWMXD.js +21 -0
- package/dist/cli-bundle/chunks/{update-ZCDGTSNL.js → update-IKMNH3W4.js} +12 -12
- package/dist/cli-bundle/chunks/{update-many-6E2DDBE4.js → update-many-3Q6Z2Q4Y.js} +19 -19
- package/dist/cli-bundle/chunks/update-many-OTAS4BWH.js +30 -0
- package/dist/cli-bundle/main.js +75 -20
- package/dist/cli-bundle/main.js.map +2 -2
- package/dist/cli-bundle/sdk-runtime.js +63 -52
- package/dist/cli-bundle/sdk-testing.js +6 -6
- package/dist/cli-bundle/sdk.js +63 -54
- package/dist/cli-bundle/sdk.js.map +2 -2
- package/dist/core/extensions/item-fields.js +3 -3
- package/dist/core/extensions/item-fields.js.map +1 -1
- package/dist/core/extensions/loader.js +29 -20
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/schema/fields-file.js +5 -3
- package/dist/core/schema/fields-file.js.map +1 -1
- package/dist/sdk/cli-contracts/flag-contracts.js +12 -2
- package/dist/sdk/cli-contracts/flag-contracts.js.map +1 -1
- package/dist/sdk/cli-contracts/tool-parameter-tables.js +14 -2
- package/dist/sdk/cli-contracts/tool-parameter-tables.js.map +1 -1
- package/dist/sdk/cli-contracts/tool-schema.d.ts +1 -1
- package/dist/sdk/cli-contracts/tool-schema.js +18 -6
- package/dist/sdk/cli-contracts/tool-schema.js.map +1 -1
- package/dist/sdk/index.d.ts +3 -1
- package/dist/sdk/index.js +4 -3
- package/dist/sdk/index.js.map +1 -1
- package/dist/sdk/runtime.d.ts +51 -1
- package/dist/sdk/runtime.js +91 -4
- package/dist/sdk/runtime.js.map +1 -1
- package/dist/sdk/workspace.d.ts +15 -0
- package/dist/sdk/workspace.js +50 -0
- package/dist/sdk/workspace.js.map +1 -0
- package/docs/AGENT_GUIDE.md +1 -0
- package/docs/CHATGPT_CODEX_PLUGIN_IMPLEMENTATION.md +775 -0
- package/docs/CODEX_PLUGIN.md +11 -1
- package/docs/COMMANDS.md +3 -1
- package/docs/README.md +3 -0
- package/docs/SDK.md +204 -71
- package/marketplace.json +2 -2
- package/package.json +3 -2
- package/packages/pm-beads/extensions/beads/runtime-loader.ts +3 -0
- package/packages/pm-beads/package.json +1 -1
- package/packages/pm-calendar/package.json +1 -1
- package/packages/pm-command-kit/package.json +1 -1
- package/packages/pm-governance-audit/package.json +1 -1
- package/packages/pm-guide-shell/package.json +1 -1
- package/packages/pm-kanban/package.json +1 -1
- package/packages/pm-lifecycle-hooks/package.json +1 -1
- package/packages/pm-linked-test-adapters/package.json +1 -1
- package/packages/pm-search-advanced/package.json +1 -1
- package/packages/pm-templates/package.json +1 -1
- package/packages/pm-todos/extensions/todos/runtime-loader.ts +3 -0
- package/packages/pm-todos/package.json +1 -1
- package/plugins/pm-claude/.claude-plugin/plugin.json +1 -1
- package/plugins/pm-codex/.codex-plugin/plugin.json +1 -1
- package/dist/cli-bundle/chunks/append-425YGJMY.js +0 -11
- package/dist/cli-bundle/chunks/chunk-A3AIKEYC.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-C4FIA5U6.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-CTAPVM6C.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-GPBKJERW.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-GZNB5V5J.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-KDNZSVCK.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-LIY2ILWI.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-MORRAQXQ.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-OJ64VYGO.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-RAC2UXLT.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-ROH64TST.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-WQ5227PH.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-XQLLRYOX.js.map +0 -1
- package/dist/cli-bundle/chunks/close-II7JKV32.js +0 -12
- package/dist/cli-bundle/chunks/close-many-FD46X4WK.js +0 -21
- package/dist/cli-bundle/chunks/comments-OAU2E7RK.js +0 -13
- package/dist/cli-bundle/chunks/copy-5MOERABQ.js +0 -9
- package/dist/cli-bundle/chunks/create-DOMKSBHN.js +0 -25
- package/dist/cli-bundle/chunks/delete-BMOQWZRQ.js +0 -10
- package/dist/cli-bundle/chunks/docs-J4OI4PWM.js +0 -14
- package/dist/cli-bundle/chunks/focus-7H5B4PKZ.js +0 -10
- package/dist/cli-bundle/chunks/history-redact-ZNS2QTMI.js +0 -16
- package/dist/cli-bundle/chunks/history-repair-LQ5IU4ZX.js +0 -18
- package/dist/cli-bundle/chunks/learnings-AHMJNIQZ.js +0 -13
- package/dist/cli-bundle/chunks/notes-GJI26GJR.js +0 -13
- package/dist/cli-bundle/chunks/plan-ZHJH6VMF.js +0 -24
- package/dist/cli-bundle/chunks/register-operations-3TYKCKEZ.js.map +0 -1
- package/dist/cli-bundle/chunks/register-operations-WKZSX4QP.js.map +0 -7
- package/dist/cli-bundle/chunks/restore-AR77QSO6.js +0 -14
- package/dist/cli-bundle/chunks/update-D3ZZ2V7Z.js +0 -21
- package/dist/cli-bundle/chunks/update-many-2Q2PRSSB.js +0 -30
- /package/dist/cli-bundle/chunks/{append-425YGJMY.js.map → append-RH3G5RAV.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{append-464PHZ65.js.map → append-T5DTS4NU.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-YMP6AKGU.js.map → chunk-2XWRFOPR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-HT5P3WC6.js.map → chunk-2Z36LSAT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-DBV6QRYT.js.map → chunk-3KJ3FG5O.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-AQLKMQQA.js.map → chunk-3M5BWYUA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-47CCRGRH.js.map → chunk-47TKJR3D.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-YCSDMIQW.js.map → chunk-4MO4PPR2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-WCRAUCJO.js.map → chunk-546WPG33.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-RLOWK5EQ.js.map → chunk-5754C5XS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-7U5INZ2C.js.map → chunk-5V746BN3.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-ZLQDOBZL.js.map → chunk-6OK5QSGH.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-2HNZKLHV.js.map → chunk-7SHFQB2A.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-6APTSPP5.js.map → chunk-7SIWW7C3.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-7HQQT6AT.js.map → chunk-7TYZTBEV.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-YCHJLOO2.js.map → chunk-A6AK7W5M.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-WBKZAO3P.js.map → chunk-A6AVSYRJ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-L7C6RTGH.js.map → chunk-ACDIA6NP.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-AX3BJLPV.js.map → chunk-ACRC3HI4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-B6JBI7JX.js.map → chunk-ANLHBXAE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-2KQG6L3J.js.map → chunk-AS62PEJE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-J3EXRK2H.js.map → chunk-BLRO2POO.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-VOXOXART.js.map → chunk-DLZ3RXAL.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-H6YDNW46.js.map → chunk-DNH44IKP.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-QI5KTH6A.js.map → chunk-EBBROE54.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-GC5ME4ZU.js.map → chunk-FF523THY.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-5OBMSBWX.js.map → chunk-FIZUJWXQ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-HLBSL5KE.js.map → chunk-FVWQFTTW.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-YIWYD7TC.js.map → chunk-FVZEIWTL.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-4DC5XNMS.js.map → chunk-GFBV2254.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-OKZ35F3Y.js.map → chunk-GRB3TFOC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-TZFULSN4.js.map → chunk-GVGFLZQS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-RTG2LHQ7.js.map → chunk-HLZXQKGZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-5F7UJHFY.js.map → chunk-HO6CDURZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-MN2YMU55.js.map → chunk-HOE3UV3G.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-I535LTZ2.js.map → chunk-IS6M4ETF.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-K7HEURQ4.js.map → chunk-J2XEW4YL.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-O2Q7YQGO.js.map → chunk-J7XSQCJO.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-RA2LPP6E.js.map → chunk-JM4Z53DN.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-JR6FIX53.js.map → chunk-JNNPTGXR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-I5VZGPS2.js.map → chunk-K7CGOZK5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-B6OANV3G.js.map → chunk-KDH62ECD.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-NR7PTIR7.js.map → chunk-L23NAJHL.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-FCZ6WYSR.js.map → chunk-LEXFDABF.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-GP54I36Z.js.map → chunk-LNAGQRIL.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-DD2WZD6L.js.map → chunk-LU4Z7POS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-FEVEIX53.js.map → chunk-LX265XY7.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-NJABR6EB.js.map → chunk-MQAGSAMS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-MRMS62WQ.js.map → chunk-N4NKVLPY.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-RY57ESL2.js.map → chunk-ND3MDD6L.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-Y476SA4V.js.map → chunk-NEJKKTCG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-Q3EW4RE5.js.map → chunk-NGL3X3XM.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-ENJDRDDP.js.map → chunk-NK54BSL7.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-KHQYX2QB.js.map → chunk-NN57FRRN.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-VNCQ7SSG.js.map → chunk-NNRXTZ7Y.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-KZQHMDS6.js.map → chunk-NOIIRLCO.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-K2PDZYUF.js.map → chunk-OC2CLNMS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-SN7Q7M4U.js.map → chunk-OKUFGORG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-ZLWBLI5R.js.map → chunk-OOK6V7BF.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-DDEYJ3BH.js.map → chunk-OUQ4I6HC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-X7ZXLB3C.js.map → chunk-PDOJRPYR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-HDNEQAHV.js.map → chunk-PHQPQNAT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-FMFSUTTD.js.map → chunk-PTJ7NVUU.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-5URFS7C4.js.map → chunk-PUMGO764.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-RPZ57GQ7.js.map → chunk-QFCCN4JO.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-35YNX7RQ.js.map → chunk-QYIDXRRX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-ITIUEWD5.js.map → chunk-RFDT674H.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-2BUNV627.js.map → chunk-SJ2DADDH.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-ZYDUOY54.js.map → chunk-TKD4NESJ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-BU2CV5ZU.js.map → chunk-TMNQV4EK.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-GJNBKU6G.js.map → chunk-TWELUDDF.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-Y5E6FCAL.js.map → chunk-U3S22BOJ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-2BKRMFGK.js.map → chunk-UFY4ETU6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-EEUIIDWF.js.map → chunk-UGQENMKM.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-XK5CTXMB.js.map → chunk-UGSHP6SR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-2JWIRG4V.js.map → chunk-VF24O6TV.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-PZBRTJ3Y.js.map → chunk-VLVTXEGG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-NAGOH4YJ.js.map → chunk-VXUWCJS7.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-ETGRUM64.js.map → chunk-WBMARQCV.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-L6C62S4V.js.map → chunk-WZDABROA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-P63GUQK5.js.map → chunk-XG5GVZRX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-6UWHAJEX.js.map → chunk-XGCPTS6L.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-XGUXU4IQ.js.map → chunk-Y44B5FBE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-C3QR2DPR.js.map → chunk-YP6DWEWQ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-TB6364F7.js.map → chunk-Z7XTVIN5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-XSJZF3TO.js.map → chunk-ZEKVLV6P.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-SNFLSFFH.js.map → chunk-ZFPOBSPC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-RYASC6U3.js.map → chunk-ZUB725AA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-A77IGXNC.js.map → close-CQHW3WMK.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-II7JKV32.js.map → close-ZZW5FLTB.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-many-P2YOWN52.js.map → close-many-AR2YH3SJ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-many-FD46X4WK.js.map → close-many-IKCEGBLQ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{comments-OAU2E7RK.js.map → comments-NV4SIY5Z.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{comments-FNLKE3TW.js.map → comments-UV4HMI2K.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{copy-U6H22S7E.js.map → copy-OUFWOHVG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{copy-5MOERABQ.js.map → copy-X7HJFWIH.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{create-HS64DHTL.js.map → create-QEDL4KKT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{create-DOMKSBHN.js.map → create-R6MMMMJS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{delete-4XPF5XLP.js.map → delete-MJGZFDHZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{delete-BMOQWZRQ.js.map → delete-OOJRG4HF.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{deps-TMOF765V.js.map → deps-4OP6Q76N.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{deps-R44LVZTU.js.map → deps-Y5X6NFT5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{docs-J4OI4PWM.js.map → docs-SILTBWSO.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{docs-HN6QKGEU.js.map → docs-UKTQVUHS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{files-RNFWG435.js.map → files-2QEI2V3C.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{files-NX4LNOPL.js.map → files-7OIKZPI3.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{focus-7H5B4PKZ.js.map → focus-3YC5LFCG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{focus-OBSDVVI7.js.map → focus-FFWH32BF.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-compact-RZMMFSTO.js.map → history-compact-AAA4W6LY.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-compact-CKNRN637.js.map → history-compact-PIURAPW5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-redact-ZNS2QTMI.js.map → history-redact-KWZ7LKQB.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-redact-W7TTAEX2.js.map → history-redact-NTO74EIV.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-repair-LQ5IU4ZX.js.map → history-repair-QWZJYYOJ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-repair-RGAQBOIS.js.map → history-repair-ROV5TD3L.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{learnings-AHMJNIQZ.js.map → learnings-25TJCVON.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{learnings-VDRTXWTF.js.map → learnings-3WJFJT7E.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{notes-UXXTI3J5.js.map → notes-FM53JJ5C.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{notes-GJI26GJR.js.map → notes-IAHGNCYQ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{plan-H3OPE2RP.js.map → plan-EJ4USP2S.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{plan-ZHJH6VMF.js.map → plan-WHV4H2RW.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{profile-PFNN3CBJ.js.map → profile-SZQVKHUQ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{profile-FCZWT5LE.js.map → profile-TXE673DR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{register-setup-HSVJDV3R.js.map → register-setup-KB5U3RES.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{register-setup-KE5L3H7U.js.map → register-setup-ZG7YXPHJ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{restore-MDNVYUDD.js.map → restore-F5HPTRBR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{restore-AR77QSO6.js.map → restore-LN57EB5H.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{schema-AJCAANMB.js.map → schema-3DKXA4KR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{schema-2B37DMM2.js.map → schema-QLTOK23S.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-D3ZZ2V7Z.js.map → update-2T5EWMXD.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-ZCDGTSNL.js.map → update-IKMNH3W4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-many-6E2DDBE4.js.map → update-many-3Q6Z2Q4Y.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-many-2Q2PRSSB.js.map → update-many-OTAS4BWH.js.map} +0 -0
|
@@ -5,19 +5,19 @@ import {
|
|
|
5
5
|
} from "./chunk-CUFW7ITY.js";
|
|
6
6
|
import {
|
|
7
7
|
createStdinTokenResolver
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-OC2CLNMS.js";
|
|
9
9
|
import {
|
|
10
10
|
mutateItem,
|
|
11
11
|
readSettings,
|
|
12
12
|
toItemRecord
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-VXUWCJS7.js";
|
|
14
14
|
import {
|
|
15
15
|
EXIT_CODE,
|
|
16
16
|
PmCliError,
|
|
17
17
|
getSettingsPath,
|
|
18
18
|
pathExists,
|
|
19
19
|
resolvePmRoot
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-AHIEDSW2.js";
|
|
21
21
|
|
|
22
22
|
// dist/cli/commands/append.js
|
|
23
23
|
async function runAppend(id, options, global) {
|
|
@@ -61,6 +61,6 @@ async function runAppend(id, options, global) {
|
|
|
61
61
|
export {
|
|
62
62
|
runAppend
|
|
63
63
|
};
|
|
64
|
-
//# sourceMappingURL=chunk-
|
|
64
|
+
//# sourceMappingURL=chunk-J7XSQCJO.js.map
|
|
65
65
|
|
|
66
66
|
//# debugId=c1a718f6-bc42-53b0-a337-f777e26bd386
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import {
|
|
4
4
|
collectUsedExtensionCapabilities,
|
|
5
5
|
normalizeExtensionName
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-AHIEDSW2.js";
|
|
7
7
|
|
|
8
8
|
// dist/core/extensions/activation-summary.js
|
|
9
9
|
var HOOK_REGISTRY_FIELD_TO_KIND = [
|
|
@@ -145,6 +145,6 @@ export {
|
|
|
145
145
|
describeExtensionActivation,
|
|
146
146
|
renderExtensionSurfaceMarkdown
|
|
147
147
|
};
|
|
148
|
-
//# sourceMappingURL=chunk-
|
|
148
|
+
//# sourceMappingURL=chunk-JM4Z53DN.js.map
|
|
149
149
|
|
|
150
150
|
//# debugId=54a1549c-1d6b-5d29-b0a5-3856ace420dc
|
|
@@ -2,11 +2,11 @@
|
|
|
2
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]="22670538-a967-5856-adde-bb5576f11f56")}catch(e){}}();
|
|
3
3
|
import {
|
|
4
4
|
normalizeItemId
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-VXUWCJS7.js";
|
|
6
6
|
import {
|
|
7
7
|
EXIT_CODE,
|
|
8
8
|
PmCliError
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-AHIEDSW2.js";
|
|
10
10
|
|
|
11
11
|
// dist/core/item/parent-reference-policy.js
|
|
12
12
|
var PLACEHOLDER_REFERENCE_TOKENS = /* @__PURE__ */ new Set(["none", "null", "undefined"]);
|
|
@@ -95,6 +95,6 @@ export {
|
|
|
95
95
|
normalizeSprintReleaseFormatPolicy,
|
|
96
96
|
validateSprintOrReleaseValue
|
|
97
97
|
};
|
|
98
|
-
//# sourceMappingURL=chunk-
|
|
98
|
+
//# sourceMappingURL=chunk-JNNPTGXR.js.map
|
|
99
99
|
|
|
100
100
|
//# debugId=22670538-a967-5856-adde-bb5576f11f56
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
scanHistoryDrift
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-NNRXTZ7Y.js";
|
|
4
4
|
import {
|
|
5
5
|
executeHistoryRewrite,
|
|
6
6
|
resolveHistorySubject,
|
|
7
7
|
writeHistoryRawWithRollback
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-XG5GVZRX.js";
|
|
9
9
|
import {
|
|
10
10
|
historyEntriesToRaw,
|
|
11
11
|
readHistoryEntries,
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
replayHash,
|
|
14
14
|
toReplayDocument,
|
|
15
15
|
verifyHistoryChain
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-AS62PEJE.js";
|
|
17
17
|
import {
|
|
18
18
|
getActiveExtensionRegistrations,
|
|
19
19
|
listAllFrontMatterWithBody,
|
|
@@ -21,7 +21,7 @@ import {
|
|
|
21
21
|
readLocatedItem,
|
|
22
22
|
readSettings,
|
|
23
23
|
runActiveOnWriteHooks
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-NEJKKTCG.js";
|
|
25
25
|
import {
|
|
26
26
|
EXIT_CODE,
|
|
27
27
|
PmCliError,
|
|
@@ -30,7 +30,7 @@ import {
|
|
|
30
30
|
readFileIfExists,
|
|
31
31
|
resolveItemTypeRegistry,
|
|
32
32
|
resolvePmRoot
|
|
33
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-66YL6RR5.js";
|
|
34
34
|
|
|
35
35
|
// dist/cli/commands/history-repair.js
|
|
36
36
|
import jsonPatch from "fast-json-patch";
|
|
@@ -269,4 +269,4 @@ export {
|
|
|
269
269
|
assertHistoryRepairTarget,
|
|
270
270
|
runHistoryRepairAll
|
|
271
271
|
};
|
|
272
|
-
//# sourceMappingURL=chunk-
|
|
272
|
+
//# sourceMappingURL=chunk-K7CGOZK5.js.map
|
|
@@ -3,19 +3,19 @@ import {
|
|
|
3
3
|
} from "./chunk-YRYYFGV3.js";
|
|
4
4
|
import {
|
|
5
5
|
createStdinTokenResolver
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-OKUFGORG.js";
|
|
7
7
|
import {
|
|
8
8
|
mutateItem,
|
|
9
9
|
readSettings,
|
|
10
10
|
toItemRecord
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-NEJKKTCG.js";
|
|
12
12
|
import {
|
|
13
13
|
EXIT_CODE,
|
|
14
14
|
PmCliError,
|
|
15
15
|
getSettingsPath,
|
|
16
16
|
pathExists,
|
|
17
17
|
resolvePmRoot
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-66YL6RR5.js";
|
|
19
19
|
|
|
20
20
|
// dist/cli/commands/append.js
|
|
21
21
|
!(function() {
|
|
@@ -66,4 +66,4 @@ async function runAppend(id, options, global2) {
|
|
|
66
66
|
export {
|
|
67
67
|
runAppend
|
|
68
68
|
};
|
|
69
|
-
//# sourceMappingURL=chunk-
|
|
69
|
+
//# sourceMappingURL=chunk-KDH62ECD.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
runCreate
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-TYCM65DJ.js";
|
|
4
4
|
import {
|
|
5
5
|
splitCommaList
|
|
6
6
|
} from "./chunk-D6HZN36B.js";
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
nowIso,
|
|
12
12
|
readLocatedItem,
|
|
13
13
|
readSettings
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-NEJKKTCG.js";
|
|
15
15
|
import {
|
|
16
16
|
EXIT_CODE,
|
|
17
17
|
PLAN_HARNESS_VALUES,
|
|
@@ -24,13 +24,13 @@ import {
|
|
|
24
24
|
resolveItemTypeRegistry,
|
|
25
25
|
resolvePmRoot,
|
|
26
26
|
resolveTypeName
|
|
27
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-66YL6RR5.js";
|
|
28
28
|
|
|
29
29
|
// dist/cli/commands/plan.js
|
|
30
30
|
!(function() {
|
|
31
31
|
try {
|
|
32
32
|
var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
|
|
33
|
-
n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "
|
|
33
|
+
n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "5ec672ec-6e36-5040-aa20-ef02ed65ee3a");
|
|
34
34
|
} catch (e2) {
|
|
35
35
|
}
|
|
36
36
|
})();
|
|
@@ -1259,8 +1259,41 @@ function buildMaterializeDependencies(parent, planItemId, step) {
|
|
|
1259
1259
|
}
|
|
1260
1260
|
async function createMaterializedStepItems(params) {
|
|
1261
1261
|
const materialized = [];
|
|
1262
|
+
const materializeFields = {};
|
|
1263
|
+
const reservedMaterializeKeys = /* @__PURE__ */ new Set([
|
|
1264
|
+
"title",
|
|
1265
|
+
"description",
|
|
1266
|
+
"type",
|
|
1267
|
+
"parent",
|
|
1268
|
+
"tags",
|
|
1269
|
+
"author",
|
|
1270
|
+
"message",
|
|
1271
|
+
"dep"
|
|
1272
|
+
]);
|
|
1273
|
+
for (const specification of toSpecArray(params.options.field)) {
|
|
1274
|
+
const separator = specification.indexOf("=");
|
|
1275
|
+
if (separator <= 0) {
|
|
1276
|
+
throw new PmCliError(`Invalid --field entry "${specification}"; expected name=value`, EXIT_CODE.USAGE);
|
|
1277
|
+
}
|
|
1278
|
+
const name = specification.slice(0, separator).trim();
|
|
1279
|
+
const value = specification.slice(separator + 1).trim();
|
|
1280
|
+
if (name.length === 0) {
|
|
1281
|
+
throw new PmCliError(`Invalid --field entry "${specification}"; expected name=value`, EXIT_CODE.USAGE);
|
|
1282
|
+
}
|
|
1283
|
+
const segments = name.trim().replaceAll(/([a-z0-9])([A-Z])/g, "$1 $2").replaceAll(/[^A-Za-z0-9]+/g, " ").split(/\s+/).filter(Boolean).map((segment) => segment.toLowerCase());
|
|
1284
|
+
if (segments.length === 0) {
|
|
1285
|
+
throw new PmCliError(`Invalid --field entry "${specification}"; expected name=value`, EXIT_CODE.USAGE);
|
|
1286
|
+
}
|
|
1287
|
+
const [first, ...rest] = segments;
|
|
1288
|
+
const fieldKey = `${first}${rest.map((segment) => `${segment.slice(0, 1).toUpperCase()}${segment.slice(1)}`).join("")}`;
|
|
1289
|
+
if (reservedMaterializeKeys.has(fieldKey)) {
|
|
1290
|
+
throw new PmCliError(`Invalid --field entry "${specification}"; "${fieldKey}" is reserved by materialize and cannot be overridden`, EXIT_CODE.USAGE);
|
|
1291
|
+
}
|
|
1292
|
+
materializeFields[fieldKey] = value;
|
|
1293
|
+
}
|
|
1262
1294
|
for (const step of params.targets) {
|
|
1263
1295
|
const created = await runCreate({
|
|
1296
|
+
...materializeFields,
|
|
1264
1297
|
title: step.title,
|
|
1265
1298
|
description: step.body?.trim() || step.title,
|
|
1266
1299
|
type: params.resolvedTypeName,
|
|
@@ -1272,7 +1305,10 @@ async function createMaterializedStepItems(params) {
|
|
|
1272
1305
|
}, { ...{}, path: params.pmRoot });
|
|
1273
1306
|
materialized.push({
|
|
1274
1307
|
id: created.item.id,
|
|
1308
|
+
title: created.item.title,
|
|
1275
1309
|
type: params.resolvedTypeName,
|
|
1310
|
+
parent: created.item.parent,
|
|
1311
|
+
tags: created.item.tags ?? [],
|
|
1276
1312
|
from_step: step.id
|
|
1277
1313
|
});
|
|
1278
1314
|
}
|
|
@@ -1457,4 +1493,4 @@ export {
|
|
|
1457
1493
|
resolvePlanTemplateSteps,
|
|
1458
1494
|
runPlan
|
|
1459
1495
|
};
|
|
1460
|
-
//# sourceMappingURL=chunk-
|
|
1496
|
+
//# sourceMappingURL=chunk-KXFY6AI4.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../../../cli/commands/plan.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * @module cli/commands/plan\n *\n * Implements the pm plan 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 {\n resolveItemTypeRegistry,\n resolveTypeName,\n} 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 { splitCommaList } from \"../../core/shared/split-comma-list.js\";\nimport { nowIso } from \"../../core/shared/time.js\";\nimport {\n locateItem,\n mutateItem,\n readLocatedItem,\n} from \"../../core/store/item-store.js\";\nimport { getSettingsPath, resolvePmRoot } from \"../../core/store/paths.js\";\nimport { readSettings } from \"../../core/store/settings.js\";\nimport type {\n DependencyKind,\n ItemDocument,\n ItemMetadata,\n PlanDecision,\n PlanDiscovery,\n PlanHarness,\n PlanMode,\n PlanStep,\n PlanStepDoc,\n PlanStepFile,\n PlanStepLink,\n PlanStepLinkKind,\n PlanStepStatus,\n PlanStepTest,\n PlanValidationCheck,\n} from \"../../types/index.js\";\nimport {\n PLAN_HARNESS_VALUES,\n PLAN_MODE_VALUES,\n PLAN_STEP_LINK_KIND_VALUES,\n PLAN_STEP_STATUS_VALUES,\n} from \"../../types/index.js\";\nimport {\n runCreate,\n type CreateCommandOptions,\n type CreateResult,\n} from \"./create.js\";\n\n/** Public contract for plan subcommands, shared by SDK and presentation-layer consumers. */\nexport const PLAN_SUBCOMMANDS = [\n \"create\",\n \"show\",\n \"add-step\",\n \"update-step\",\n \"complete-step\",\n \"block-step\",\n \"reorder-step\",\n \"remove-step\",\n \"link\",\n \"unlink\",\n \"decision\",\n \"discovery\",\n \"validation\",\n \"resume\",\n \"approve\",\n \"materialize\",\n] as const;\n/** Restricts plan subcommand values accepted by command, SDK, and storage contracts. */\nexport type PlanSubcommand = (typeof PLAN_SUBCOMMANDS)[number];\n\n/** Supported values accepted by the plan show depth contract. */\nexport const PLAN_SHOW_DEPTH_VALUES = [\"brief\", \"standard\", \"deep\"] as const;\n/** Restricts plan show depth values accepted by command, SDK, and storage contracts. */\nexport type PlanShowDepth = (typeof PLAN_SHOW_DEPTH_VALUES)[number];\n\n/** Documents the plan command options payload exchanged by command, SDK, and package integrations. */\nexport interface PlanCommandOptions {\n /** Value that configures or reports title for this contract. */\n title?: string;\n /** Value that configures or reports description for this contract. */\n description?: string;\n /** Value that configures or reports scope for this contract. */\n scope?: string;\n /** Value that configures or reports parent for this contract. */\n parent?: string;\n /** Value that configures or reports related for this contract. */\n related?: string | string[];\n /** Value that configures or reports blocks for this contract. */\n blocks?: string | string[];\n /** Value that configures or reports blocked by for this contract. */\n blockedBy?: string | string[];\n /** Value that configures or reports harness for this contract. */\n harness?: string;\n /** Value that configures or reports mode for this contract. */\n mode?: string;\n /** Value that configures or reports resume context for this contract. */\n resumeContext?: string;\n /** Value that configures or reports tags for this contract. */\n tags?: string;\n /** Value that configures or reports priority for this contract. */\n priority?: string;\n /** Value that configures or reports body for this contract. */\n body?: string;\n /** Value that configures or reports claim for this contract. */\n claim?: boolean;\n /** Value that configures or reports from search for this contract. */\n fromSearch?: string;\n /** Value that configures or reports step title for this contract. */\n stepTitle?: string;\n /** pm-6mit: repeatable --step values. On create each value seeds one ordered step (argv order; values are never comma-split so titles may contain commas). On other subcommands a single value aliases stepTitle. */\n step?: string | string[];\n /** Value that configures or reports step body for this contract. */\n stepBody?: string;\n /** Value that configures or reports step owner for this contract. */\n stepOwner?: string;\n /** Lifecycle state reported for stepthe record. */\n stepStatus?: string;\n /** Value that configures or reports step evidence for this contract. */\n stepEvidence?: string;\n /** Value that configures or reports step blocked reason for this contract. */\n stepBlockedReason?: string;\n /** Value that configures or reports step replacement for this contract. */\n stepReplacement?: string;\n /** Value that configures or reports depends on for this contract. */\n dependsOn?: string | string[];\n /** Value that configures or reports link for this contract. */\n link?: string | string[];\n /** Value that configures or reports link kind for this contract. */\n linkKind?: string;\n /** Value that configures or reports link note for this contract. */\n linkNote?: string;\n /** Value that configures or reports promote to item dep for this contract. */\n promoteToItemDep?: boolean;\n /** Value that configures or reports allow multiple active for this contract. */\n allowMultipleActive?: boolean;\n /** Value that configures or reports file for this contract. */\n file?: string | string[];\n /** Value that configures or reports test for this contract. */\n test?: string | string[];\n /** Value that configures or reports doc for this contract. */\n doc?: string | string[];\n /** Value that configures or reports decision text for this contract. */\n decisionText?: string;\n /** Value that configures or reports decision for this contract. */\n decision?: string;\n /** Value that configures or reports decision rationale for this contract. */\n decisionRationale?: string;\n /** Value that configures or reports decision evidence for this contract. */\n decisionEvidence?: string;\n /** Value that configures or reports discovery text for this contract. */\n discoveryText?: string;\n /** Value that configures or reports discovery for this contract. */\n discovery?: string;\n /** Value that configures or reports validation text for this contract. */\n validationText?: string;\n /** Value that configures or reports validation for this contract. */\n validation?: string;\n /** Value that configures or reports validation command for this contract. */\n validationCommand?: string;\n /** Value that configures or reports validation expected for this contract. */\n validationExpected?: string;\n /** Value that configures or reports depth for this contract. */\n depth?: string;\n /** Value that configures or reports fields for this contract. */\n fields?: string;\n /** Value that configures or reports steps for this contract. */\n steps?: string;\n /** Value that configures or reports template for this contract. */\n template?: string;\n /** Schema type that determines the shape and validation rules for this value. */\n materializeType?: string;\n /** Value that configures or reports materialize parent for this contract. */\n materializeParent?: string;\n /** Value that configures or reports materialize tags for this contract. */\n materializeTags?: string;\n /** Custom field values forwarded to every materialized item as `name=value` pairs. */\n field?: string | string[];\n /** Value that configures or reports author for this contract. */\n author?: string;\n /** Human-readable explanation suitable for logs and agent-facing output. */\n message?: string;\n /** Value that configures or reports force for this contract. */\n force?: boolean;\n}\n\n/** Documents the plan command result payload exchanged by command, SDK, and package integrations. */\nexport interface PlanCommandResult {\n /** Value that configures or reports action for this contract. */\n action: PlanSubcommand;\n /** Value that configures or reports plan for this contract. */\n plan: PlanResultPlan;\n /** Value that configures or reports step for this contract. */\n step?: PlanStep;\n /** Value that configures or reports current step for this contract. */\n current_step?: PlanStep | undefined;\n /** Value that configures or reports next actions for this contract. */\n next_actions?: string[];\n /** Value that configures or reports materialized for this contract. */\n materialized?: {\n id: string;\n title: string;\n type: string;\n parent?: string;\n tags: string[];\n from_step: string;\n }[];\n // pm-fl0c #10 (2026-05-28): steps that pm plan materialize intentionally\n // skipped (already-completed or already-materialized via an `implements`\n // link). Surfacing these makes `--steps all` idempotent without users\n // having to read history to find out what was done.\n /** Value that configures or reports materialize skipped for this contract. */\n materialize_skipped?: {\n from_step: string;\n reason: \"already_completed\" | \"already_materialized\";\n existing_id?: string;\n }[];\n /** Value that configures or reports warnings for this contract. */\n warnings: string[];\n /** ISO 8601 timestamp recording when generated occurred. */\n generated_at: string;\n}\n\n/** Documents the plan result plan payload exchanged by command, SDK, and package integrations. */\nexport interface PlanResultPlan {\n /** Stable identifier used to reference this record across commands and storage. */\n id: string;\n /** Value that configures or reports title for this contract. */\n title: string;\n /** Lifecycle state reported for status. */\n status: string;\n /** Value that configures or reports mode for this contract. */\n mode: PlanMode;\n /** Value that configures or reports scope for this contract. */\n scope?: string;\n /** Value that configures or reports harness for this contract. */\n harness?: PlanHarness;\n /** Value that configures or reports parent for this contract. */\n parent?: string;\n /** Value that configures or reports resume context for this contract. */\n resume_context?: string;\n /** Value that configures or reports steps summary for this contract. */\n steps_summary: PlanStepSummary;\n /** Value that configures or reports current step for this contract. */\n current_step?:\n | { id: string; order: number; title: string; status: PlanStepStatus }\n | undefined;\n /** Value that configures or reports blocked steps for this contract. */\n blocked_steps?: {\n id: string;\n order: number;\n title: string;\n blocked_reason?: string;\n }[];\n /** Value that configures or reports steps for this contract. */\n steps?: PlanStep[];\n /** Value that configures or reports decisions for this contract. */\n decisions?: PlanDecision[];\n /** Value that configures or reports discoveries for this contract. */\n discoveries?: PlanDiscovery[];\n /** Value that configures or reports validation for this contract. */\n validation?: PlanValidationCheck[];\n /** Value that configures or reports linked items for this contract. */\n linked_items?: { id: string; kind: DependencyKind }[];\n}\n\n/** Documents the plan step summary payload exchanged by command, SDK, and package integrations. */\nexport interface PlanStepSummary {\n /** Value that configures or reports total for this contract. */\n total: number;\n /** Value that configures or reports pending for this contract. */\n pending: number;\n /** Value that configures or reports in progress for this contract. */\n in_progress: number;\n /** Value that configures or reports blocked for this contract. */\n blocked: number;\n /** Value that configures or reports completed for this contract. */\n completed: number;\n /** Value that configures or reports skipped for this contract. */\n skipped: number;\n /** Value that configures or reports superseded for this contract. */\n superseded: number;\n /** Whole-percent step-completion progress (`round(completed / total * 100)`), surfaced so agents see plan progress without recomputing it (GH-158 #5). */\n completion_pct: number;\n}\n\nconst STEP_ID_PREFIX = \"plan-step-\";\nconst DEFAULT_PLAN_MODE: PlanMode = \"draft\";\n\n/** Public contract for plan template names, shared by SDK and presentation-layer consumers. */\nexport const PLAN_TEMPLATE_NAMES = [\n \"bug-investigation\",\n \"feature-implementation\",\n \"refactoring-sprint\",\n] as const;\n/** Restricts plan template names accepted by `pm plan create --template` (GH-158 #2). */\nexport type PlanTemplateName = (typeof PLAN_TEMPLATE_NAMES)[number];\n\ninterface PlanTemplateStepSeed {\n title: string;\n body: string;\n}\n\n// Built-in step scaffolds for the most common agent workflows. Each seeds an\n// ordered list of pending steps so `pm plan create --template <name>` produces a\n// ready-to-execute plan instead of an empty shell (GH-158 #2).\nconst PLAN_TEMPLATES: Record<PlanTemplateName, PlanTemplateStepSeed[]> = {\n \"bug-investigation\": [\n {\n title: \"Reproduce the bug\",\n body: \"Capture exact steps, inputs, and the observed vs expected behavior.\",\n },\n {\n title: \"Locate the root cause\",\n body: \"Trace the failure to the responsible code path with evidence.\",\n },\n {\n title: \"Write a failing test\",\n body: \"Add a regression test that fails for the current bug.\",\n },\n {\n title: \"Implement the fix\",\n body: \"Apply the minimal change that makes the failing test pass.\",\n },\n {\n title: \"Verify and document\",\n body: \"Run the full suite and record the resolution and verification.\",\n },\n ],\n \"feature-implementation\": [\n {\n title: \"Clarify requirements & acceptance criteria\",\n body: \"Confirm scope, edge cases, and done-conditions.\",\n },\n {\n title: \"Design the approach\",\n body: \"Decide the data model, interfaces, and integration points.\",\n },\n {\n title: \"Implement the change\",\n body: \"Build the feature behind the agreed design.\",\n },\n { title: \"Add tests\", body: \"Cover the new behavior and its edge cases.\" },\n {\n title: \"Update docs & changelog\",\n body: \"Document the feature and surface it to users.\",\n },\n ],\n \"refactoring-sprint\": [\n {\n title: \"Map the current structure & risks\",\n body: \"Inventory the code to change and its blast radius.\",\n },\n {\n title: \"Add characterization tests\",\n body: \"Lock in current behavior before refactoring.\",\n },\n {\n title: \"Refactor incrementally\",\n body: \"Apply small, reversible steps keeping tests green.\",\n },\n {\n title: \"Verify behavior is unchanged\",\n body: \"Run the full suite and compare against the baseline.\",\n },\n {\n title: \"Clean up & document\",\n body: \"Remove dead code and record the new structure.\",\n },\n ],\n};\n\n/** Resolves the ordered step seeds for a built-in plan template, rejecting unknown names with the allowed set so agents can self-correct. */\nexport function resolvePlanTemplateSteps(raw: string): PlanTemplateStepSeed[] {\n const normalized = raw.trim().toLowerCase();\n const template = Object.prototype.hasOwnProperty.call(\n PLAN_TEMPLATES,\n normalized,\n )\n ? PLAN_TEMPLATES[normalized as PlanTemplateName]\n : undefined;\n if (!template) {\n throw new PmCliError(\n `Unknown plan template \"${raw}\". Allowed: ${PLAN_TEMPLATE_NAMES.join(\", \")}`,\n EXIT_CODE.USAGE,\n {\n code: \"unknown_plan_template\",\n examples: [\n `pm plan create --title \"Fix login crash\" --template ${PLAN_TEMPLATE_NAMES[0]}`,\n ],\n },\n );\n }\n return template.map((step) => ({ ...step }));\n}\n\n/** Computes whole-percent step completion (`round(completed / total * 100)`), returning 0 for an empty plan so the field is always a stable number. */\nfunction planCompletionPct(completed: number, total: number): number {\n return total > 0 ? Math.round((completed / total) * 100) : 0;\n}\n\n/* c8 ignore start -- detailed plan helper branches are validated through broader plan workflow integration tests. */\nfunction resolveAuthor(\n candidate: string | undefined,\n fallback: string,\n): string {\n const resolved = candidate ?? process.env.PM_AUTHOR ?? fallback;\n const trimmed = resolved.trim();\n return trimmed.length > 0 ? trimmed : \"unknown\";\n}\n\n/** pm-6mit: ordered step titles from repeated --step values. Unlike toArray this NEVER comma-splits — each --step value is one full step title, so titles containing commas survive intact (also why --step must not be list:true in contracts: the bootstrap coalescer would comma-join values). */\nfunction toOrderedStepTitles(value: unknown): string[] {\n const values = Array.isArray(value)\n ? value\n : value === undefined || value === null\n ? []\n : [value];\n return values\n .filter((entry) => entry !== undefined && entry !== null)\n .map((entry) => (typeof entry === \"string\" ? entry : String(entry)).trim())\n .filter((entry) => entry.length > 0);\n}\n\nfunction toArray(value: string | string[] | undefined): string[] {\n if (Array.isArray(value))\n return value.flatMap((entry) => splitCommaList(entry, { unique: false }));\n if (typeof value === \"string\" && value.trim().length > 0) {\n return splitCommaList(value, { unique: false });\n }\n return [];\n}\n\nfunction toSpecArray(value: string | string[] | undefined): string[] {\n if (Array.isArray(value))\n return value.map((entry) => entry.trim()).filter(Boolean);\n if (typeof value === \"string\" && value.trim().length > 0)\n return [value.trim()];\n return [];\n}\n\nfunction asPlanMode(\n value: string | undefined,\n fallback: PlanMode = DEFAULT_PLAN_MODE,\n): PlanMode {\n if (value === undefined) return fallback;\n const normalized = value.trim().toLowerCase();\n const found = PLAN_MODE_VALUES.find((entry) => entry === normalized);\n if (!found) {\n throw new PmCliError(\n `Invalid plan mode \"${value}\". Allowed: ${PLAN_MODE_VALUES.join(\", \")}`,\n EXIT_CODE.USAGE,\n );\n }\n return found;\n}\n\nfunction asStepStatus(\n value: string | undefined,\n fallback: PlanStepStatus = \"pending\",\n): PlanStepStatus {\n if (value === undefined) return fallback;\n const normalized = value.trim().toLowerCase();\n const found = PLAN_STEP_STATUS_VALUES.find((entry) => entry === normalized);\n if (!found) {\n throw new PmCliError(\n `Invalid step status \"${value}\". Allowed: ${PLAN_STEP_STATUS_VALUES.join(\", \")}`,\n EXIT_CODE.USAGE,\n );\n }\n return found;\n}\n\nfunction asLinkKind(\n value: string | undefined,\n fallback: PlanStepLinkKind = \"related\",\n): PlanStepLinkKind {\n if (value === undefined) return fallback;\n const normalized = value.trim().toLowerCase();\n const found = PLAN_STEP_LINK_KIND_VALUES.find(\n (entry) => entry === normalized,\n );\n if (!found) {\n throw new PmCliError(\n `Invalid step link kind \"${value}\". Allowed: ${PLAN_STEP_LINK_KIND_VALUES.join(\", \")}`,\n EXIT_CODE.USAGE,\n );\n }\n return found;\n}\n\nfunction asHarness(value: string | undefined): PlanHarness | undefined {\n if (value === undefined) return undefined;\n const normalized = value.trim().toLowerCase();\n if (normalized.length === 0) return undefined;\n const found = PLAN_HARNESS_VALUES.find((entry) => entry === normalized);\n if (!found) {\n throw new PmCliError(\n `Invalid plan harness \"${value}\". Allowed: ${PLAN_HARNESS_VALUES.join(\", \")}`,\n EXIT_CODE.USAGE,\n );\n }\n return found;\n}\n\nfunction asDepth(value: string | undefined): PlanShowDepth {\n if (value === undefined) return \"brief\";\n const normalized = value.trim().toLowerCase();\n const found = PLAN_SHOW_DEPTH_VALUES.find((entry) => entry === normalized);\n if (!found) {\n throw new PmCliError(\n `Invalid --depth \"${value}\". Allowed: ${PLAN_SHOW_DEPTH_VALUES.join(\", \")}`,\n EXIT_CODE.USAGE,\n );\n }\n return found;\n}\n\nfunction parsePlanFields(raw: string | undefined): string[] | null {\n if (raw === undefined) {\n return null;\n }\n const fields = raw\n .split(\",\")\n .map((entry) => entry.trim())\n .filter((entry) => entry.length > 0);\n if (fields.length === 0) {\n throw new PmCliError(\n \"Plan --fields requires a comma-separated list of plan field names\",\n EXIT_CODE.USAGE,\n );\n }\n return fields;\n}\n\nconst PLAN_FIELD_KEYS = new Set<keyof PlanResultPlan>([\n \"id\",\n \"title\",\n \"status\",\n \"mode\",\n \"scope\",\n \"harness\",\n \"parent\",\n \"resume_context\",\n \"steps_summary\",\n \"current_step\",\n \"blocked_steps\",\n \"steps\",\n \"decisions\",\n \"discoveries\",\n \"validation\",\n \"linked_items\",\n]);\n\nfunction projectPlanForFields(\n plan: PlanResultPlan,\n fields: string[],\n): PlanResultPlan {\n const source = plan as unknown as Record<string, unknown>;\n const projected: Record<string, unknown> = {};\n const unknownFields: string[] = [];\n for (const field of fields) {\n const normalized = field.startsWith(\"plan.\")\n ? field.slice(\"plan.\".length)\n : field;\n if (normalized.length === 0) {\n continue;\n }\n if (!PLAN_FIELD_KEYS.has(normalized as keyof PlanResultPlan)) {\n unknownFields.push(field);\n continue;\n }\n if (Object.prototype.hasOwnProperty.call(source, normalized)) {\n projected[normalized] = source[normalized];\n }\n }\n if (unknownFields.length > 0) {\n throw new PmCliError(\n `Unknown Plan --fields value(s): ${unknownFields.join(\", \")}`,\n EXIT_CODE.USAGE,\n {\n nextSteps: [\n `Use --fields ${[...PLAN_FIELD_KEYS].join(\",\")}`,\n \"Run pm plan show <id> --depth brief for compact default fields.\",\n ],\n recovery: {\n provided_fields: unknownFields,\n suggested_retry: `pm plan show <id> --fields ${[...PLAN_FIELD_KEYS].join(\",\")}`,\n },\n },\n );\n }\n return projected as unknown as PlanResultPlan;\n}\n\nfunction parsePairList(raw: string, label: string): Record<string, string> {\n const out: Record<string, string> = {};\n for (const entry of raw.split(\",\")) {\n const trimmed = entry.trim();\n if (trimmed.length === 0) continue;\n const equalsIndex = trimmed.indexOf(\"=\");\n if (equalsIndex <= 0) {\n throw new PmCliError(\n `Invalid ${label} entry \"${trimmed}\"; expected key=value`,\n EXIT_CODE.USAGE,\n );\n }\n out[trimmed.slice(0, equalsIndex).trim().toLowerCase()] = trimmed\n .slice(equalsIndex + 1)\n .trim();\n }\n return out;\n}\n\nfunction parseStepFile(spec: string): PlanStepFile {\n const fields = parsePairList(spec, \"--file\");\n if (!fields.path) {\n throw new PmCliError(\"--file requires path=<value>\", EXIT_CODE.USAGE);\n }\n const file: PlanStepFile = { path: fields.path };\n if (fields.scope === \"global\" || fields.scope === \"project\")\n file.scope = fields.scope;\n if (fields.note) file.note = fields.note;\n return file;\n}\n\nfunction parseStepTest(spec: string): PlanStepTest {\n const fields = parsePairList(spec, \"--test\");\n if (!fields.command && !fields.path) {\n throw new PmCliError(\n \"--test requires at least command=<value> or path=<value>\",\n EXIT_CODE.USAGE,\n );\n }\n const test: PlanStepTest = {};\n if (fields.command) test.command = fields.command;\n if (fields.path) test.path = fields.path;\n if (fields.note) test.note = fields.note;\n return test;\n}\n\nfunction parseStepDoc(spec: string): PlanStepDoc {\n const fields = parsePairList(spec, \"--doc\");\n if (!fields.path) {\n throw new PmCliError(\"--doc requires path=<value>\", EXIT_CODE.USAGE);\n }\n const doc: PlanStepDoc = { path: fields.path };\n if (fields.scope === \"global\" || fields.scope === \"project\")\n doc.scope = fields.scope;\n if (fields.note) doc.note = fields.note;\n return doc;\n}\n\nfunction summarizeSteps(steps: PlanStep[]): PlanStepSummary {\n const summary: PlanStepSummary = {\n total: steps.length,\n pending: 0,\n in_progress: 0,\n blocked: 0,\n completed: 0,\n skipped: 0,\n superseded: 0,\n completion_pct: 0,\n };\n for (const step of steps) {\n summary[step.status] += 1;\n }\n summary.completion_pct = planCompletionPct(summary.completed, summary.total);\n return summary;\n}\n\nfunction newStepId(existing: PlanStep[]): string {\n const used = new Set(existing.map((step) => step.id));\n for (\n let cursor = existing.length + 1;\n cursor < existing.length + 1024;\n cursor += 1\n ) {\n const candidate = `${STEP_ID_PREFIX}${String(cursor).padStart(3, \"0\")}`;\n if (!used.has(candidate)) return candidate;\n }\n /* c8 ignore next -- step id allocation only fails if 1024 consecutive ids are taken. */\n throw new PmCliError(\n \"Could not allocate step id (limit reached)\",\n EXIT_CODE.GENERIC_FAILURE,\n );\n}\n\nfunction resolveStepRef(steps: PlanStep[], ref: string): PlanStep {\n const trimmed = ref.trim();\n if (trimmed.length === 0) {\n throw new PmCliError(\"Step reference cannot be empty\", EXIT_CODE.USAGE);\n }\n const direct = steps.find((step) => step.id === trimmed);\n if (direct) return direct;\n if (/^\\d+$/.test(trimmed)) {\n const order = Number.parseInt(trimmed, 10);\n const byOrder = steps.find((step) => step.order === order);\n if (byOrder) return byOrder;\n }\n throw new PmCliError(`Step \"${ref}\" not found in plan`, EXIT_CODE.NOT_FOUND);\n}\n\ninterface MaterializeTargetResolution {\n targets: PlanStep[];\n skipped: {\n from_step: string;\n reason: \"already_completed\" | \"already_materialized\";\n existing_id?: string;\n }[];\n}\n\n// pm-fl0c #10 (2026-05-28): skip steps whose status is \"completed\" and steps\n// that already have an `implements` link from a prior materialize run, so\n// `pm plan materialize --steps all` is idempotent and never re-creates fresh\n// Tasks for work already tracked. Explicit step refs are still allowed\n// through (the user asked by ID) but the skip-reason is recorded.\nfunction classifyMaterializeSkip(step: PlanStep):\n | {\n reason: \"already_completed\" | \"already_materialized\";\n existing_id?: string;\n }\n | undefined {\n if (step.status === \"completed\") {\n return { reason: \"already_completed\" };\n }\n const existingImplements = (step.linked_items ?? []).find(\n (link) => link.kind === \"implements\",\n );\n if (existingImplements) {\n return {\n reason: \"already_materialized\",\n existing_id: existingImplements.id,\n };\n }\n return undefined;\n}\n\nfunction resolveMaterializeTargets(\n steps: PlanStep[],\n refs: string[],\n): MaterializeTargetResolution {\n const allRefs = refs.filter((ref) => ref.trim().toLowerCase() === \"all\");\n const targets: PlanStep[] = [];\n const skipped: {\n from_step: string;\n reason: \"already_completed\" | \"already_materialized\";\n existing_id?: string;\n }[] = [];\n if (allRefs.length > 0) {\n if (refs.length > allRefs.length) {\n throw new PmCliError(\n \"pm plan materialize --steps all cannot be combined with other step refs\",\n EXIT_CODE.USAGE,\n );\n }\n for (const step of steps\n .slice()\n .sort((left, right) => left.order - right.order)) {\n const skip = classifyMaterializeSkip(step);\n if (skip) {\n skipped.push({ from_step: step.id, ...skip });\n continue;\n }\n targets.push(step);\n }\n return { targets, skipped };\n }\n const seen = new Set<string>();\n for (const ref of refs) {\n const step = resolveStepRef(steps, ref);\n if (seen.has(step.id)) continue;\n seen.add(step.id);\n const skip = classifyMaterializeSkip(step);\n if (skip) {\n skipped.push({ from_step: step.id, ...skip });\n continue;\n }\n targets.push(step);\n }\n return { targets, skipped };\n}\n\nfunction resolvePlanLogText(\n kind: \"decision\" | \"discovery\" | \"validation\",\n options: PlanCommandOptions,\n): string | undefined {\n const canonical =\n kind === \"decision\"\n ? options.decisionText\n : kind === \"discovery\"\n ? options.discoveryText\n : options.validationText;\n const shorthand =\n kind === \"decision\"\n ? options.decision\n : kind === \"discovery\"\n ? options.discovery\n : options.validation;\n return canonical?.trim() || shorthand?.trim() || undefined;\n}\n\nfunction findCurrentStep(steps: PlanStep[]): PlanStep | undefined {\n return (\n steps.find((step) => step.status === \"in_progress\") ??\n steps.find((step) => step.status === \"pending\")\n );\n}\n\nfunction blockedSteps(\n steps: PlanStep[],\n): { id: string; order: number; title: string; blocked_reason?: string }[] {\n return steps\n .filter((step) => step.status === \"blocked\")\n .map((step) => ({\n id: step.id,\n order: step.order,\n title: step.title,\n blocked_reason: step.blocked_reason,\n }));\n}\n\nfunction projectPlan(\n item: ItemMetadata,\n depth: PlanShowDepth = \"brief\",\n): PlanResultPlan {\n const steps = (item.plan_steps ?? [])\n .slice()\n .sort((left, right) => left.order - right.order);\n const summary = summarizeSteps(steps);\n const current = findCurrentStep(steps);\n const projection: PlanResultPlan = {\n id: item.id,\n title: item.title,\n status: item.status,\n mode: (item.plan_mode ?? DEFAULT_PLAN_MODE) as PlanMode,\n scope: item.plan_scope,\n harness: item.plan_harness,\n parent: item.parent,\n resume_context: item.plan_resume_context,\n steps_summary: summary,\n current_step: current\n ? {\n id: current.id,\n order: current.order,\n title: current.title,\n status: current.status,\n }\n : undefined,\n blocked_steps: blockedSteps(steps),\n linked_items: (item.dependencies ?? []).map((dep) => ({\n id: dep.id,\n kind: dep.kind,\n })),\n };\n if (depth === \"standard\" || depth === \"deep\") {\n projection.steps = steps;\n }\n if (depth === \"deep\") {\n projection.decisions = item.plan_decisions ?? [];\n projection.discoveries = item.plan_discoveries ?? [];\n projection.validation = item.plan_validation ?? [];\n }\n return projection;\n}\n\nfunction nextActionsFor(planId: string, plan: PlanResultPlan): string[] {\n const tips: string[] = [];\n if (plan.steps_summary.total === 0) {\n tips.push(`pm plan add-step ${planId} --step-title \"First step\"`);\n }\n if (plan.current_step) {\n tips.push(\n `pm plan update-step ${planId} ${plan.current_step.id} --step-status in_progress`,\n `pm plan complete-step ${planId} ${plan.current_step.id} --step-evidence \"...\"`,\n );\n }\n if (plan.steps_summary.blocked > 0) {\n tips.push(`pm plan show ${planId} --depth standard`);\n }\n if (plan.mode === \"draft\" || plan.mode === \"research\") {\n tips.push(`pm plan approve ${planId} --message \"ready to execute\"`);\n }\n if (\n plan.steps_summary.completed === plan.steps_summary.total &&\n plan.steps_summary.total > 0\n ) {\n tips.push(`pm close ${planId} \"plan complete\"`);\n }\n return tips;\n}\n\nfunction ensurePlanItem(item: ItemMetadata): void {\n const normalizedType = (item.type ?? \"\").trim().toLowerCase();\n if (normalizedType !== \"plan\") {\n throw new PmCliError(\n `Item ${item.id} is type ${item.type}; pm plan commands require type=Plan. Use pm plan create or pm create --type Plan first.`,\n EXIT_CODE.USAGE,\n {\n code: \"wrong_item_type\",\n required: \"Use pm plan commands only with items whose type is Plan.\",\n why: \"Plan commands read and mutate Plan-specific step, decision, discovery, and validation fields.\",\n examples: [\n `pm get ${item.id} --depth brief`,\n 'pm plan create --title \"Execution plan\" --scope \"<goal>\"',\n ],\n },\n );\n }\n}\n\ninterface PlanWriteContext {\n pmRoot: string;\n settings: Awaited<ReturnType<typeof readSettings>>;\n}\n\nasync function loadContext(global: GlobalOptions): Promise<PlanWriteContext> {\n const pmRoot = resolvePmRoot(process.cwd(), global.path);\n if (!(await pathExists(getSettingsPath(pmRoot)))) {\n throw new PmCliError(\n `Tracker is not initialized at ${pmRoot}. Run pm init first.`,\n EXIT_CODE.NOT_FOUND,\n );\n }\n const settings = await readSettings(pmRoot);\n return { pmRoot, settings };\n}\n\nasync function readPlanItem(\n ctx: PlanWriteContext,\n id: string,\n): Promise<{ document: ItemDocument; itemId: string }> {\n const typeRegistry = resolveItemTypeRegistry(\n ctx.settings,\n getActiveExtensionRegistrations(),\n );\n const located = await locateItem(\n ctx.pmRoot,\n id,\n ctx.settings.id_prefix,\n ctx.settings.item_format,\n typeRegistry.type_to_folder,\n );\n if (!located) {\n throw new PmCliError(`Plan ${id} not found`, EXIT_CODE.NOT_FOUND);\n }\n const loaded = await readLocatedItem(located, {\n schema: ctx.settings.schema,\n });\n ensurePlanItem(loaded.document.metadata);\n return { document: loaded.document, itemId: located.id };\n}\n\nfunction buildPlanCreateDependencies(\n options: PlanCommandOptions,\n): string[] | undefined {\n const deps: string[] = [];\n if (options.parent) {\n deps.push(`id=${options.parent.trim()},kind=parent`);\n }\n for (const ref of toArray(options.related))\n deps.push(`id=${ref},kind=related`);\n for (const ref of toArray(options.blocks)) deps.push(`id=${ref},kind=blocks`);\n for (const ref of toArray(options.blockedBy))\n deps.push(`id=${ref},kind=blocked_by`);\n return deps.length > 0 ? deps : undefined;\n}\n\nfunction buildInitialValidation(\n options: PlanCommandOptions,\n): PlanValidationCheck | undefined {\n const text = options.validationText?.trim();\n const command = options.validationCommand?.trim();\n const expected = options.validationExpected?.trim();\n if (!text && !command && !expected) {\n return undefined;\n }\n return {\n text: text || command || \"Validation check\",\n command: command || undefined,\n expected: expected || undefined,\n };\n}\n\nfunction hasPlanStepDetailOptions(options: PlanCommandOptions): boolean {\n return (\n Boolean(options.stepBody?.trim()) ||\n Boolean(options.stepOwner?.trim()) ||\n Boolean(options.stepStatus?.trim()) ||\n Boolean(options.stepEvidence?.trim()) ||\n Boolean(options.stepBlockedReason?.trim()) ||\n Boolean(options.stepReplacement?.trim()) ||\n toArray(options.dependsOn).length > 0 ||\n toArray(options.link).length > 0 ||\n toSpecArray(options.file).length > 0 ||\n toSpecArray(options.test).length > 0 ||\n toSpecArray(options.doc).length > 0\n );\n}\n\nfunction resolveInitialStepSeed(options: PlanCommandOptions): {\n repeatedStepTitles: string[];\n stepTitleFlag: string | undefined;\n stepTitles: string[];\n templateSteps: PlanTemplateStepSeed[];\n} {\n const stepTitleFlag = options.stepTitle?.trim() || undefined;\n const repeatedStepTitles = toOrderedStepTitles(options.step);\n const templateSteps = options.template?.trim()\n ? resolvePlanTemplateSteps(options.template)\n : [];\n return {\n repeatedStepTitles,\n stepTitleFlag,\n stepTitles: [\n ...(stepTitleFlag ? [stepTitleFlag] : []),\n ...repeatedStepTitles,\n ...templateSteps.map((step) => step.title),\n ],\n templateSteps,\n };\n}\n\nfunction assertInitialStepSeedAllowed(\n seed: ReturnType<typeof resolveInitialStepSeed>,\n hasPerStepDetailOptions: boolean,\n): void {\n if (\n (seed.stepTitleFlag || seed.repeatedStepTitles.length > 0) &&\n seed.templateSteps.length > 0\n ) {\n throw new PmCliError(\n \"pm plan create --template cannot be combined with --step-title or --step; choose one step seeding source\",\n EXIT_CODE.USAGE,\n {\n code: \"ambiguous_option_combination\",\n examples: [\n `pm plan create --title \"Fix login crash\" --template ${PLAN_TEMPLATE_NAMES[0]}`,\n 'pm plan create --title \"Custom plan\" --step \"Read the code\" --step \"Write the fix\"',\n ],\n },\n );\n }\n if (seed.stepTitles.length > 1 && hasPerStepDetailOptions) {\n throw new PmCliError(\n \"pm plan create per-step options apply to a single initial step; with multiple --step values create the plan first, then refine steps individually\",\n EXIT_CODE.USAGE,\n {\n code: \"ambiguous_option_combination\",\n examples: [\n 'pm plan create --title \"Execution plan\" --step \"Read the code\" --step \"Write the fix\"',\n 'pm plan update-step <plan-id> plan-step-001 --step-body \"Inspect retry path\"',\n ],\n },\n );\n }\n}\n\nfunction buildSingleInitialStep(\n options: PlanCommandOptions,\n title: string,\n): PlanStep {\n const status = asStepStatus(options.stepStatus, \"pending\");\n const linkedItems = buildLinkInputs(options, \"depends_on\");\n const files = toSpecArray(options.file).map(parseStepFile);\n const tests = toSpecArray(options.test).map(parseStepTest);\n const docs = toSpecArray(options.doc).map(parseStepDoc);\n const now = nowIso();\n return {\n id: \"plan-step-001\",\n order: 1,\n title,\n body: options.stepBody?.trim() || undefined,\n status,\n owner: options.stepOwner?.trim() || undefined,\n evidence: options.stepEvidence?.trim() || undefined,\n blocked_reason:\n status === \"blocked\"\n ? options.stepBlockedReason?.trim() || \"\"\n : undefined,\n linked_items: linkedItems.length > 0 ? linkedItems : undefined,\n files: files.length > 0 ? files : undefined,\n tests: tests.length > 0 ? tests : undefined,\n docs: docs.length > 0 ? docs : undefined,\n created_at: now,\n updated_at: now,\n completed_at: status === \"completed\" ? now : undefined,\n };\n}\n\nfunction buildInitialSteps(options: PlanCommandOptions): {\n steps: PlanStep[];\n hasPerStepDetailOptions: boolean;\n} {\n const seed = resolveInitialStepSeed(options);\n const hasDetailOptions = hasPlanStepDetailOptions(options);\n assertInitialStepSeedAllowed(seed, hasDetailOptions);\n if (seed.stepTitles.length === 0) {\n return { steps: [], hasPerStepDetailOptions: hasDetailOptions };\n }\n if (seed.stepTitles.length === 1) {\n return {\n steps: [buildSingleInitialStep(options, seed.stepTitles[0])],\n hasPerStepDetailOptions: hasDetailOptions,\n };\n }\n const now = nowIso();\n return {\n steps: seed.stepTitles.map((stepTitle, index) => ({\n id: `${STEP_ID_PREFIX}${String(index + 1).padStart(3, \"0\")}`,\n order: index + 1,\n title: stepTitle,\n body: seed.templateSteps[index]?.body,\n status: \"pending\" as const,\n created_at: now,\n updated_at: now,\n })),\n hasPerStepDetailOptions: hasDetailOptions,\n };\n}\n\nfunction seedCreatedPlanMetadata(\n document: ItemDocument,\n options: PlanCommandOptions,\n mode: PlanMode,\n harness: PlanHarness | undefined,\n): { changedFields: string[] } {\n const changedFields = [\"plan_mode\"];\n document.metadata.plan_mode = mode;\n if (harness) {\n document.metadata.plan_harness = harness;\n changedFields.push(\"plan_harness\");\n }\n const scope = options.scope?.trim();\n if (scope) {\n document.metadata.plan_scope = scope;\n changedFields.push(\"plan_scope\");\n }\n const resumeContext = options.resumeContext?.trim();\n if (resumeContext) {\n document.metadata.plan_resume_context = resumeContext;\n changedFields.push(\"plan_resume_context\");\n }\n document.metadata.plan_steps ??= [];\n return { changedFields };\n}\n\nfunction seedCreatedPlanSteps(\n document: ItemDocument,\n initialSteps: PlanStep[],\n initialValidation: PlanValidationCheck | undefined,\n): { changedFields: string[] } {\n ensurePlanItem(document.metadata);\n document.metadata.plan_steps = initialSteps;\n if (!initialValidation) return { changedFields: [\"plan_steps\"] };\n document.metadata.plan_validation = [\n ...(document.metadata.plan_validation ?? []),\n initialValidation,\n ];\n return { changedFields: [\"plan_steps\", \"plan_validation\"] };\n}\n\nfunction seedCreatedPlanValidation(\n document: ItemDocument,\n initialValidation: PlanValidationCheck,\n): { changedFields: string[] } {\n ensurePlanItem(document.metadata);\n document.metadata.plan_validation = [\n ...(document.metadata.plan_validation ?? []),\n initialValidation,\n ];\n return { changedFields: [\"plan_validation\"] };\n}\n\nasync function planCreate(\n options: PlanCommandOptions,\n global: GlobalOptions,\n ctx: PlanWriteContext,\n): Promise<PlanCommandResult> {\n const title = options.title?.trim();\n if (!title) {\n throw new PmCliError(\"pm plan create requires --title\", EXIT_CODE.USAGE, {\n code: \"missing_required_option\",\n examples: [\n 'pm plan create --title \"Refactor lock retry\" --scope pm-a1b2',\n ],\n });\n }\n const mode = asPlanMode(options.mode, DEFAULT_PLAN_MODE);\n const harness = asHarness(options.harness);\n const fromSearch = options.fromSearch?.trim();\n\n const description =\n options.description?.trim() ?? options.scope?.trim() ?? title;\n const createOptions: CreateCommandOptions = {\n title,\n description,\n type: \"Plan\",\n body: options.body,\n tags: options.tags,\n priority: options.priority,\n parent: options.parent,\n dep: buildPlanCreateDependencies(options),\n author: options.author,\n message:\n options.message ??\n (fromSearch ? `plan create (search: ${fromSearch})` : `plan create`),\n };\n\n const createResult: CreateResult = await runCreate(createOptions, global);\n\n // The create command stores type_options. To use real metadata keys, run a follow-up mutate.\n const seedResult = await mutateItem({\n pmRoot: ctx.pmRoot,\n settings: ctx.settings,\n id: createResult.item.id,\n op: \"plan_create_metadata\",\n author: resolveAuthor(options.author, ctx.settings.author_default),\n message: \"seed plan metadata\",\n mutate(doc) {\n return seedCreatedPlanMetadata(doc, options, mode, harness);\n },\n });\n\n let finalMetadata: ItemMetadata = seedResult.item;\n let initialStep: PlanStep | undefined;\n const initialValidation = buildInitialValidation(options);\n const { steps: initialSteps, hasPerStepDetailOptions } =\n buildInitialSteps(options);\n if (initialSteps.length > 0) {\n initialStep = initialSteps[0];\n const stepped = await mutateItem({\n pmRoot: ctx.pmRoot,\n settings: ctx.settings,\n id: createResult.item.id,\n op: \"plan_create_initial_step\",\n author: resolveAuthor(options.author, ctx.settings.author_default),\n message:\n initialSteps.length === 1\n ? `plan create initial step \"${initialSteps[0].title}\"`\n : `plan create ${initialSteps.length} initial steps`,\n mutate(doc) {\n return seedCreatedPlanSteps(doc, initialSteps, initialValidation);\n },\n });\n finalMetadata = stepped.item;\n } else if (initialValidation) {\n const validated = await mutateItem({\n pmRoot: ctx.pmRoot,\n settings: ctx.settings,\n id: createResult.item.id,\n op: \"plan_create_initial_validation\",\n author: resolveAuthor(options.author, ctx.settings.author_default),\n message: \"plan create initial validation\",\n mutate(doc) {\n return seedCreatedPlanValidation(doc, initialValidation);\n },\n });\n finalMetadata = validated.item;\n } else if (hasPerStepDetailOptions) {\n throw new PmCliError(\n \"pm plan create step options require --step-title (or a single --step)\",\n EXIT_CODE.USAGE,\n {\n code: \"missing_required_option\",\n examples: [\n 'pm plan create --title \"Execution plan\" --step-title \"Read the code\"',\n ],\n },\n );\n }\n if (options.claim) {\n const claimed = await mutateItem({\n pmRoot: ctx.pmRoot,\n settings: ctx.settings,\n id: createResult.item.id,\n op: \"claim\",\n author: resolveAuthor(options.author, ctx.settings.author_default),\n message: \"plan claim by author\",\n mutate(doc) {\n doc.metadata.assignee = resolveAuthor(\n options.author,\n ctx.settings.author_default,\n );\n return { changedFields: [\"assignee\"] };\n },\n });\n finalMetadata = claimed.item;\n }\n\n const plan = projectPlan(finalMetadata, \"brief\");\n return {\n action: \"create\",\n plan,\n step: initialStep,\n next_actions: nextActionsFor(createResult.item.id, plan),\n warnings: [...createResult.warnings],\n generated_at: nowIso(),\n };\n}\n\nasync function planShow(\n id: string,\n options: PlanCommandOptions,\n ctx: PlanWriteContext,\n): Promise<PlanCommandResult> {\n const depth = asDepth(options.depth);\n const fields = parsePlanFields(options.fields);\n const { document, itemId } = await readPlanItem(ctx, id);\n const fullPlan = projectPlan(\n document.metadata,\n fields === null ? depth : \"deep\",\n );\n const plan =\n fields === null ? fullPlan : projectPlanForFields(fullPlan, fields);\n return {\n action: \"show\",\n plan,\n next_actions: nextActionsFor(itemId, fullPlan),\n warnings: [],\n generated_at: nowIso(),\n };\n}\n\ninterface MutateStepArgs {\n id: string;\n options: PlanCommandOptions;\n ctx: PlanWriteContext;\n op: string;\n message: string;\n mutator(\n steps: PlanStep[],\n doc: ItemDocument,\n ): { changedSteps: string[]; current?: PlanStep; resultStep?: PlanStep };\n}\n\nasync function mutatePlanSteps(\n args: MutateStepArgs,\n): Promise<{ document: ItemDocument; resultStep?: PlanStep; itemId: string }> {\n const author = resolveAuthor(\n args.options.author,\n args.ctx.settings.author_default,\n );\n let resultStep: PlanStep | undefined;\n const result = await mutateItem({\n pmRoot: args.ctx.pmRoot,\n settings: args.ctx.settings,\n id: args.id,\n op: args.op,\n author,\n message: args.options.message ?? args.message,\n force: args.options.force,\n mutate(doc) {\n ensurePlanItem(doc.metadata);\n const steps = (doc.metadata.plan_steps ?? []).slice();\n const before = JSON.stringify(steps);\n const outcome = args.mutator(steps, doc);\n resultStep = outcome.resultStep;\n const sorted = steps\n .slice()\n .sort((left, right) => left.order - right.order)\n .map((step, index) => ({ ...step, order: index + 1 }));\n doc.metadata.plan_steps = sorted;\n const after = JSON.stringify(sorted);\n const changedFields = before === after ? [] : [\"plan_steps\"];\n if (changedFields.length === 0 && outcome.changedSteps.length === 0) {\n return { changedFields: [] };\n }\n return {\n changedFields:\n changedFields.length > 0 ? changedFields : [\"plan_steps\"],\n };\n },\n });\n return {\n document: { metadata: result.item, body: result.body },\n resultStep,\n itemId: result.item.id,\n };\n}\n\nasync function planAddStep(\n id: string,\n options: PlanCommandOptions,\n ctx: PlanWriteContext,\n): Promise<PlanCommandResult> {\n const title = options.stepTitle?.trim();\n if (!title) {\n throw new PmCliError(\n \"pm plan add-step requires --step-title\",\n EXIT_CODE.USAGE,\n );\n }\n const status = asStepStatus(options.stepStatus, \"pending\");\n const allowMultipleActive = options.allowMultipleActive === true;\n\n const { document, resultStep, itemId } = await mutatePlanSteps({\n id,\n options,\n ctx,\n op: \"plan_add_step\",\n message: `plan add-step \"${title}\"`,\n mutator(steps) {\n const order = steps.length + 1;\n assertInProgressStepAllowed(\n steps,\n undefined,\n status,\n allowMultipleActive,\n );\n const step = buildAddedPlanStep(steps, options, { order, title, status });\n steps.push(step);\n return { changedSteps: [step.id], resultStep: step };\n },\n });\n\n const plan = projectPlan(document.metadata, \"standard\");\n return {\n action: \"add-step\",\n plan,\n step: resultStep,\n next_actions: nextActionsFor(itemId, plan),\n warnings: [],\n generated_at: nowIso(),\n };\n}\n\nfunction assertInProgressStepAllowed(\n steps: PlanStep[],\n currentStepId: string | undefined,\n desiredStatus: PlanStepStatus,\n allowMultipleActive: boolean,\n): void {\n if (desiredStatus !== \"in_progress\" || allowMultipleActive) {\n return;\n }\n const activeStep = steps.find(\n (step) => step.id !== currentStepId && step.status === \"in_progress\",\n );\n if (!activeStep) {\n return;\n }\n throw new PmCliError(\n `Plan already has step ${activeStep.id} in_progress. Pass --allow-multiple-active or update that step first.`,\n EXIT_CODE.CONFLICT,\n );\n}\n\nfunction buildAddedPlanStep(\n existingSteps: PlanStep[],\n options: PlanCommandOptions,\n seed: { order: number; title: string; status: PlanStepStatus },\n): PlanStep {\n const linkedItems = buildLinkInputs(options, \"depends_on\");\n const files = toSpecArray(options.file).map(parseStepFile);\n const tests = toSpecArray(options.test).map(parseStepTest);\n const docs = toSpecArray(options.doc).map(parseStepDoc);\n const now = nowIso();\n return {\n id: newStepId(existingSteps),\n order: seed.order,\n title: seed.title,\n body: options.stepBody?.trim() || undefined,\n status: seed.status,\n owner: options.stepOwner?.trim() || undefined,\n evidence: options.stepEvidence?.trim() || undefined,\n blocked_reason:\n seed.status === \"blocked\"\n ? options.stepBlockedReason?.trim() || \"\"\n : undefined,\n linked_items: linkedItems.length > 0 ? linkedItems : undefined,\n files: files.length > 0 ? files : undefined,\n tests: tests.length > 0 ? tests : undefined,\n docs: docs.length > 0 ? docs : undefined,\n created_at: now,\n updated_at: now,\n completed_at: seed.status === \"completed\" ? now : undefined,\n };\n}\n\nfunction buildLinkInputs(\n options: PlanCommandOptions,\n fallbackKind: PlanStepLinkKind,\n): PlanStepLink[] {\n const dependsOn = toArray(options.dependsOn).map(\n (id) => ({ id, kind: fallbackKind }) as PlanStepLink,\n );\n const related = toArray(options.related).map(\n (id) => ({ id, kind: \"related\" }) as PlanStepLink,\n );\n const blocks = toArray(options.blocks).map(\n (id) => ({ id, kind: \"blocks\" }) as PlanStepLink,\n );\n const blockedBy = toArray(options.blockedBy).map(\n (id) => ({ id, kind: \"blocked_by\" }) as PlanStepLink,\n );\n const explicit = toArray(options.link);\n const explicitKind = asLinkKind(options.linkKind, fallbackKind);\n const note = options.linkNote?.trim();\n const explicitLinks = explicit.map((id) => {\n const link: PlanStepLink = { id, kind: explicitKind };\n if (note) link.note = note;\n return link;\n });\n return [...dependsOn, ...related, ...blocks, ...blockedBy, ...explicitLinks];\n}\n\nasync function planUpdateStep(\n id: string,\n options: PlanCommandOptions,\n ctx: PlanWriteContext,\n args: {\n stepRef: string;\n finalStatus?: PlanStepStatus;\n op: string;\n allowMultipleActive?: boolean;\n },\n): Promise<PlanCommandResult> {\n const { document, resultStep, itemId } = await mutatePlanSteps({\n id,\n options,\n ctx,\n op: args.op,\n message: options.message ?? `${args.op} ${args.stepRef}`,\n mutator(steps, doc) {\n const step = resolveStepRef(steps, args.stepRef);\n const now = nowIso();\n const desiredStatus =\n args.finalStatus ?? asStepStatus(options.stepStatus, step.status);\n const allowMultipleActive =\n options.allowMultipleActive === true ||\n args.allowMultipleActive === true;\n assertInProgressStepAllowed(\n steps,\n step.status === \"in_progress\" ? step.id : undefined,\n desiredStatus,\n allowMultipleActive,\n );\n applyStepUpdates(step, options, desiredStatus, now);\n doc.metadata.updated_at = now;\n return { changedSteps: [step.id], resultStep: step };\n },\n });\n const plan = projectPlan(document.metadata, \"standard\");\n return {\n action:\n args.op === \"plan_complete_step\"\n ? \"complete-step\"\n : args.op === \"plan_block_step\"\n ? \"block-step\"\n : \"update-step\",\n plan,\n step: resultStep,\n next_actions: nextActionsFor(itemId, plan),\n warnings: [],\n generated_at: nowIso(),\n };\n}\n\nfunction applyStepUpdates(\n step: PlanStep,\n options: PlanCommandOptions,\n desiredStatus: PlanStepStatus,\n now: string,\n): void {\n assertBlockedStepReason(step, options, desiredStatus);\n applyStepFieldUpdates(step, options);\n step.status = desiredStatus;\n step.updated_at = now;\n applyStepCompletionTimestamp(step, desiredStatus, now);\n}\n\nfunction assertBlockedStepReason(\n step: PlanStep,\n options: PlanCommandOptions,\n desiredStatus: PlanStepStatus,\n): void {\n if (\n desiredStatus !== \"blocked\" ||\n options.stepBlockedReason?.trim() ||\n step.blocked_reason\n ) {\n return;\n }\n throw new PmCliError(\n \"Blocking a step requires --step-blocked-reason or an already-recorded blocked_reason.\",\n EXIT_CODE.USAGE,\n );\n}\n\nfunction applyStepFieldUpdates(\n step: PlanStep,\n options: PlanCommandOptions,\n): void {\n const title = options.stepTitle?.trim();\n if (title) {\n step.title = title;\n }\n if (options.stepBody !== undefined) {\n step.body = options.stepBody.trim() || undefined;\n }\n if (options.stepOwner !== undefined) {\n step.owner = options.stepOwner.trim() || undefined;\n }\n if (options.stepEvidence !== undefined) {\n step.evidence = options.stepEvidence.trim() || undefined;\n }\n if (options.stepBlockedReason !== undefined) {\n step.blocked_reason = options.stepBlockedReason.trim() || undefined;\n }\n if (options.stepReplacement !== undefined) {\n step.superseded_by = options.stepReplacement.trim() || undefined;\n }\n}\n\nfunction applyStepCompletionTimestamp(\n step: PlanStep,\n desiredStatus: PlanStepStatus,\n now: string,\n): void {\n if (desiredStatus === \"completed\" && !step.completed_at) {\n step.completed_at = now;\n return;\n }\n if (desiredStatus !== \"completed\") {\n step.completed_at = undefined;\n }\n}\n\nasync function planReorderStep(\n id: string,\n options: PlanCommandOptions,\n ctx: PlanWriteContext,\n stepRef: string,\n newOrder: number,\n): Promise<PlanCommandResult> {\n const { document, itemId } = await mutatePlanSteps({\n id,\n options,\n ctx,\n op: \"plan_reorder_step\",\n message: options.message ?? `plan reorder-step ${stepRef} -> ${newOrder}`,\n mutator(steps) {\n const step = resolveStepRef(steps, stepRef);\n const filtered = steps.filter((entry) => entry.id !== step.id);\n const clamped = Math.max(1, Math.min(newOrder, filtered.length + 1));\n filtered.splice(clamped - 1, 0, step);\n filtered.forEach((entry, index) => {\n entry.order = index + 1;\n entry.updated_at = nowIso();\n });\n steps.length = 0;\n steps.push(...filtered);\n return { changedSteps: [step.id], resultStep: step };\n },\n });\n const plan = projectPlan(document.metadata, \"standard\");\n return {\n action: \"reorder-step\",\n plan,\n next_actions: nextActionsFor(itemId, plan),\n warnings: [],\n generated_at: nowIso(),\n };\n}\n\nasync function planRemoveStep(\n id: string,\n options: PlanCommandOptions,\n ctx: PlanWriteContext,\n stepRef: string,\n): Promise<PlanCommandResult> {\n const { document, itemId } = await mutatePlanSteps({\n id,\n options,\n ctx,\n op: \"plan_remove_step\",\n message: options.message ?? `plan remove-step ${stepRef}`,\n mutator(steps) {\n const step = resolveStepRef(steps, stepRef);\n const remaining = steps.filter((entry) => entry.id !== step.id);\n remaining.forEach((entry, index) => {\n entry.order = index + 1;\n });\n steps.length = 0;\n steps.push(...remaining);\n return { changedSteps: [step.id] };\n },\n });\n const plan = projectPlan(document.metadata, \"standard\");\n return {\n action: \"remove-step\",\n plan,\n next_actions: nextActionsFor(itemId, plan),\n warnings: [],\n generated_at: nowIso(),\n };\n}\n\nasync function planLink(\n id: string,\n options: PlanCommandOptions,\n ctx: PlanWriteContext,\n stepRef: string,\n): Promise<PlanCommandResult> {\n const newLinks = buildLinkInputs(\n options,\n asLinkKind(options.linkKind, \"related\"),\n );\n if (newLinks.length === 0) {\n throw new PmCliError(\n \"pm plan link requires at least one --link/--related/--blocks/--blocked-by/--depends-on id\",\n EXIT_CODE.USAGE,\n );\n }\n const promoteToItemDep = options.promoteToItemDep === true;\n const { document, itemId, resultStep } = await mutatePlanSteps({\n id,\n options,\n ctx,\n op: \"plan_link_step\",\n message: options.message ?? `plan link ${stepRef}`,\n mutator(steps, doc) {\n const step = resolveStepRef(steps, stepRef);\n const existing = step.linked_items ?? [];\n const dedupKey = (link: PlanStepLink) => `${link.kind}:${link.id}`;\n const seen = new Set(existing.map(dedupKey));\n for (const link of newLinks) {\n const key = dedupKey(link);\n if (seen.has(key)) continue;\n existing.push(link);\n seen.add(key);\n }\n step.linked_items = existing;\n step.updated_at = nowIso();\n if (promoteToItemDep) {\n const deps = doc.metadata.dependencies ?? [];\n const depKey = (dep: { id: string; kind: string }) =>\n `${dep.kind}:${dep.id}`;\n const seenDeps = new Set(deps.map(depKey));\n for (const link of newLinks) {\n const candidate = {\n id: link.id,\n kind: link.kind as DependencyKind,\n created_at: nowIso(),\n author: resolveAuthor(options.author, ctx.settings.author_default),\n };\n if (seenDeps.has(depKey(candidate))) continue;\n deps.push(candidate);\n seenDeps.add(depKey(candidate));\n }\n doc.metadata.dependencies = deps;\n }\n return { changedSteps: [step.id], resultStep: step };\n },\n });\n const plan = projectPlan(document.metadata, \"standard\");\n return {\n action: \"link\",\n plan,\n step: resultStep,\n next_actions: nextActionsFor(itemId, plan),\n warnings: [],\n generated_at: nowIso(),\n };\n}\n\nasync function planUnlink(\n id: string,\n options: PlanCommandOptions,\n ctx: PlanWriteContext,\n stepRef: string,\n): Promise<PlanCommandResult> {\n const removeIds = toArray(options.link);\n if (removeIds.length === 0) {\n throw new PmCliError(\n \"pm plan unlink requires --link <id> to remove\",\n EXIT_CODE.USAGE,\n );\n }\n const { document, itemId, resultStep } = await mutatePlanSteps({\n id,\n options,\n ctx,\n op: \"plan_unlink_step\",\n message: options.message ?? `plan unlink ${stepRef}`,\n mutator(steps) {\n const step = resolveStepRef(steps, stepRef);\n const filtered = (step.linked_items ?? []).filter(\n (link) => !removeIds.includes(link.id),\n );\n step.linked_items = filtered.length > 0 ? filtered : undefined;\n step.updated_at = nowIso();\n return { changedSteps: [step.id], resultStep: step };\n },\n });\n const plan = projectPlan(document.metadata, \"standard\");\n return {\n action: \"unlink\",\n plan,\n step: resultStep,\n next_actions: nextActionsFor(itemId, plan),\n warnings: [],\n generated_at: nowIso(),\n };\n}\n\nasync function planAppendLog(\n id: string,\n options: PlanCommandOptions,\n ctx: PlanWriteContext,\n kind: \"decision\" | \"discovery\" | \"validation\",\n): Promise<PlanCommandResult> {\n const logText = resolvePlanLogText(kind, options);\n if (!logText) {\n const canonical = `--${kind}-text`;\n const shorthand = `--${kind}`;\n throw new PmCliError(\n `pm plan ${kind} requires ${canonical}`,\n EXIT_CODE.USAGE,\n {\n code: \"missing_required_option\",\n examples: [\n `pm plan ${kind} <plan-id> ${canonical} \"...\"`,\n `pm plan ${kind} <plan-id> ${shorthand} \"...\"`,\n ],\n recovery: {\n suggested_retry: `pm plan ${kind} <plan-id> ${canonical} <value>`,\n },\n },\n );\n }\n const author = resolveAuthor(options.author, ctx.settings.author_default);\n const { document, itemId } = await mutatePlanSteps({\n id,\n options,\n ctx,\n op: `plan_append_${kind}`,\n message: options.message ?? `plan ${kind} append`,\n mutator(_steps, doc) {\n const now = nowIso();\n if (kind === \"decision\") {\n const list = doc.metadata.plan_decisions ?? [];\n list.push({\n ts: now,\n author,\n decision: logText,\n rationale: options.decisionRationale?.trim() || undefined,\n evidence: options.decisionEvidence?.trim() || undefined,\n });\n doc.metadata.plan_decisions = list;\n return { changedSteps: [] };\n }\n if (kind === \"discovery\") {\n const list = doc.metadata.plan_discoveries ?? [];\n list.push({ ts: now, author, text: logText });\n doc.metadata.plan_discoveries = list;\n return { changedSteps: [] };\n }\n const list = doc.metadata.plan_validation ?? [];\n list.push({\n text: logText,\n command: options.validationCommand?.trim() || undefined,\n expected: options.validationExpected?.trim() || undefined,\n });\n doc.metadata.plan_validation = list;\n return { changedSteps: [] };\n },\n });\n const plan = projectPlan(document.metadata, \"deep\");\n return {\n action: kind,\n plan,\n next_actions: nextActionsFor(itemId, plan),\n warnings: [],\n generated_at: nowIso(),\n };\n}\n\nasync function planResume(\n id: string,\n options: PlanCommandOptions,\n ctx: PlanWriteContext,\n): Promise<PlanCommandResult> {\n const text = options.resumeContext?.trim();\n if (!text) {\n throw new PmCliError(\n \"pm plan resume requires --resume-context <text>\",\n EXIT_CODE.USAGE,\n );\n }\n const { document, itemId } = await mutatePlanSteps({\n id,\n options,\n ctx,\n op: \"plan_resume\",\n message: options.message ?? \"plan resume context update\",\n mutator(_steps, doc) {\n doc.metadata.plan_resume_context = text;\n return { changedSteps: [] };\n },\n });\n const plan = projectPlan(document.metadata, \"brief\");\n return {\n action: \"resume\",\n plan,\n next_actions: nextActionsFor(itemId, plan),\n warnings: [],\n generated_at: nowIso(),\n };\n}\n\nasync function planApprove(\n id: string,\n options: PlanCommandOptions,\n ctx: PlanWriteContext,\n): Promise<PlanCommandResult> {\n const mode = asPlanMode(options.mode ?? \"approved\", \"approved\");\n const { document, itemId } = await mutatePlanSteps({\n id,\n options,\n ctx,\n op: \"plan_approve\",\n message: options.message ?? `plan approve mode=${mode}`,\n mutator(_steps, doc) {\n doc.metadata.plan_mode = mode;\n return { changedSteps: [] };\n },\n });\n const plan = projectPlan(document.metadata, \"brief\");\n return {\n action: \"approve\",\n plan,\n next_actions: nextActionsFor(itemId, plan),\n warnings: [],\n generated_at: nowIso(),\n };\n}\n\nfunction buildMaterializeSkippedWarnings(\n materializeSkipped: {\n from_step: string;\n reason: \"already_completed\" | \"already_materialized\";\n existing_id?: string;\n }[],\n): string[] {\n return materializeSkipped.map(\n (entry) =>\n `plan_materialize_skipped:${entry.from_step}:${entry.reason}${entry.existing_id ? `:${entry.existing_id}` : \"\"}`,\n );\n}\n\nfunction buildMaterializeNoopResult(\n planRead: { document: ItemDocument; itemId: string },\n materializeSkipped: {\n from_step: string;\n reason: \"already_completed\" | \"already_materialized\";\n existing_id?: string;\n }[],\n): PlanCommandResult {\n const plan = projectPlan(planRead.document.metadata, \"standard\");\n return {\n action: \"materialize\",\n plan,\n materialized: [],\n materialize_skipped: materializeSkipped,\n next_actions: nextActionsFor(planRead.itemId, plan),\n warnings: buildMaterializeSkippedWarnings(materializeSkipped),\n generated_at: nowIso(),\n };\n}\n\nfunction buildMaterializeDependencies(\n parent: string,\n planItemId: string,\n step: PlanStep,\n): string[] {\n const deps = [\n `id=${parent},kind=parent`,\n `id=${planItemId},kind=discovered_from`,\n ];\n for (const link of step.linked_items ?? []) {\n const realKind: DependencyKind =\n link.kind === \"blocked_by\" ||\n link.kind === \"blocks\" ||\n link.kind === \"related\" ||\n link.kind === \"discovered_from\"\n ? link.kind\n : \"related\";\n deps.push(`id=${link.id},kind=${realKind}`);\n }\n return deps;\n}\n\nasync function createMaterializedStepItems(params: {\n targets: PlanStep[];\n parent: string;\n planItemId: string;\n resolvedTypeName: string;\n tags: string | undefined;\n options: PlanCommandOptions;\n pmRoot: string;\n}): Promise<\n {\n id: string;\n title: string;\n type: string;\n parent?: string;\n tags: string[];\n from_step: string;\n }[]\n> {\n const materialized: {\n id: string;\n title: string;\n type: string;\n parent?: string;\n tags: string[];\n from_step: string;\n }[] = [];\n const materializeFields: Record<string, string> = {};\n const reservedMaterializeKeys = new Set([\n \"title\",\n \"description\",\n \"type\",\n \"parent\",\n \"tags\",\n \"author\",\n \"message\",\n \"dep\",\n ]);\n for (const specification of toSpecArray(params.options.field)) {\n const separator = specification.indexOf(\"=\");\n if (separator <= 0) {\n throw new PmCliError(\n `Invalid --field entry \"${specification}\"; expected name=value`,\n EXIT_CODE.USAGE,\n );\n }\n const name = specification.slice(0, separator).trim();\n const value = specification.slice(separator + 1).trim();\n if (name.length === 0) {\n throw new PmCliError(\n `Invalid --field entry \"${specification}\"; expected name=value`,\n EXIT_CODE.USAGE,\n );\n }\n const segments = name\n .trim()\n .replaceAll(/([a-z0-9])([A-Z])/g, \"$1 $2\")\n .replaceAll(/[^A-Za-z0-9]+/g, \" \")\n .split(/\\s+/)\n .filter(Boolean)\n .map((segment) => segment.toLowerCase());\n if (segments.length === 0) {\n throw new PmCliError(\n `Invalid --field entry \"${specification}\"; expected name=value`,\n EXIT_CODE.USAGE,\n );\n }\n const [first, ...rest] = segments;\n const fieldKey = `${first}${rest.map((segment) => `${segment.slice(0, 1).toUpperCase()}${segment.slice(1)}`).join(\"\")}`;\n if (reservedMaterializeKeys.has(fieldKey)) {\n throw new PmCliError(\n `Invalid --field entry \"${specification}\"; \"${fieldKey}\" is reserved by materialize and cannot be overridden`,\n EXIT_CODE.USAGE,\n );\n }\n materializeFields[fieldKey] = value;\n }\n for (const step of params.targets) {\n const created = await runCreate(\n {\n ...materializeFields,\n title: step.title,\n description: step.body?.trim() || step.title,\n type: params.resolvedTypeName,\n parent: params.parent,\n tags: params.tags,\n author: params.options.author,\n message:\n params.options.message ??\n `materialized from plan ${params.planItemId} step ${step.id}`,\n dep: buildMaterializeDependencies(\n params.parent,\n params.planItemId,\n step,\n ),\n },\n { ...({} as GlobalOptions), path: params.pmRoot } as GlobalOptions,\n );\n materialized.push({\n id: created.item.id,\n title: created.item.title,\n type: params.resolvedTypeName,\n parent: created.item.parent,\n tags: created.item.tags ?? [],\n from_step: step.id,\n });\n }\n return materialized;\n}\n\nfunction linkMaterializedStepItems(\n currentSteps: PlanStep[],\n targets: PlanStep[],\n materialized: { id: string; type: string; from_step: string }[],\n): void {\n for (const target of targets) {\n const matched = materialized.find((entry) => entry.from_step === target.id);\n if (!matched) {\n continue;\n }\n const step = currentSteps.find((entry) => entry.id === target.id);\n if (!step) {\n continue;\n }\n const links = step.linked_items ?? [];\n links.push({\n id: matched.id,\n kind: \"implements\",\n note: `materialized as ${matched.type}`,\n });\n step.linked_items = links;\n step.updated_at = nowIso();\n }\n}\n\nasync function planMaterialize(\n id: string,\n options: PlanCommandOptions,\n ctx: PlanWriteContext,\n): Promise<PlanCommandResult> {\n const stepRefs = toArray(options.steps);\n if (stepRefs.length === 0) {\n throw new PmCliError(\n \"pm plan materialize requires --steps <ids|orders|all>\",\n EXIT_CODE.USAGE,\n );\n }\n const targetType = options.materializeType?.trim() || \"Task\";\n const typeRegistry = resolveItemTypeRegistry(\n ctx.settings,\n getActiveExtensionRegistrations(),\n );\n const resolvedTypeName = resolveTypeName(targetType, typeRegistry);\n if (!resolvedTypeName) {\n throw new PmCliError(\n `Invalid --materialize-type \"${targetType}\"`,\n EXIT_CODE.USAGE,\n );\n }\n const parent = options.materializeParent?.trim() || id;\n const tags = options.materializeTags;\n\n const planRead = await readPlanItem(ctx, id);\n const steps = (planRead.document.metadata.plan_steps ?? []).slice();\n const { targets, skipped: materializeSkipped } = resolveMaterializeTargets(\n steps,\n stepRefs,\n );\n if (targets.length === 0) {\n if (materializeSkipped.length > 0) {\n return buildMaterializeNoopResult(planRead, materializeSkipped);\n }\n throw new PmCliError(\n \"No matching plan steps found for --steps\",\n EXIT_CODE.NOT_FOUND,\n );\n }\n\n const materialized = await createMaterializedStepItems({\n targets,\n parent,\n planItemId: planRead.itemId,\n resolvedTypeName,\n tags,\n options,\n pmRoot: ctx.pmRoot,\n });\n\n const { document, itemId } = await mutatePlanSteps({\n id,\n options,\n ctx,\n op: \"plan_materialize\",\n message: options.message ?? `plan materialize ${stepRefs.join(\",\")}`,\n mutator(currentSteps) {\n linkMaterializedStepItems(currentSteps, targets, materialized);\n return { changedSteps: targets.map((entry) => entry.id) };\n },\n });\n const plan = projectPlan(document.metadata, \"standard\");\n return {\n action: \"materialize\",\n plan,\n materialized,\n ...(materializeSkipped.length > 0\n ? { materialize_skipped: materializeSkipped }\n : {}),\n next_actions: nextActionsFor(itemId, plan),\n warnings: buildMaterializeSkippedWarnings(materializeSkipped),\n generated_at: nowIso(),\n };\n}\n\n/* c8 ignore stop */\n/** Documents the plan dispatch input payload exchanged by command, SDK, and package integrations. */\nexport interface PlanDispatchInput {\n /** Value that configures or reports subcommand for this contract. */\n subcommand: PlanSubcommand;\n /** Stable identifier used to reference this record across commands and storage. */\n id?: string;\n /** Value that configures or reports step ref for this contract. */\n stepRef?: string;\n /** Value that configures or reports reorder to for this contract. */\n reorderTo?: number;\n /** Value that configures or reports options for this contract. */\n options: PlanCommandOptions;\n /** Value that configures or reports global for this contract. */\n global: GlobalOptions;\n}\n\nfunction normalizePlanStepAliasInput(\n input: PlanDispatchInput,\n): PlanDispatchInput {\n if (input.subcommand === \"create\") {\n return input;\n }\n const stepValues = toOrderedStepTitles(input.options.step);\n if (stepValues.length > 1) {\n throw new PmCliError(\n `pm plan ${input.subcommand} accepts a single --step/--step-title value (repeated --step seeds ordered steps only on pm plan create)`,\n EXIT_CODE.USAGE,\n );\n }\n if (stepValues.length === 1 && !input.options.stepTitle?.trim()) {\n return {\n ...input,\n options: { ...input.options, stepTitle: stepValues[0] },\n };\n }\n return input;\n}\n\nfunction requirePlanId(\n input: PlanDispatchInput,\n label: PlanSubcommand,\n): string {\n if (!input.id) {\n throw new PmCliError(\n `pm plan ${label} requires a plan id`,\n EXIT_CODE.USAGE,\n );\n }\n return input.id;\n}\n\nfunction requirePlanStepRef(\n input: PlanDispatchInput,\n label: PlanSubcommand,\n): { id: string; stepRef: string } {\n const id = requirePlanId(input, label);\n if (!input.stepRef) {\n throw new PmCliError(\n `pm plan ${label} requires <plan-id> <step>`,\n EXIT_CODE.USAGE,\n );\n }\n return { id, stepRef: input.stepRef };\n}\n\nfunction requireReorderTarget(input: PlanDispatchInput): {\n id: string;\n stepRef: string;\n reorderTo: number;\n} {\n const target = requirePlanStepRef(input, \"reorder-step\");\n if (input.reorderTo === undefined) {\n throw new PmCliError(\n \"pm plan reorder-step requires <plan-id> <step> <new-order>\",\n EXIT_CODE.USAGE,\n );\n }\n return { ...target, reorderTo: input.reorderTo };\n}\n\ntype PlanDispatcher = (\n input: PlanDispatchInput,\n ctx: PlanWriteContext,\n) => Promise<PlanCommandResult>;\n\nconst PLAN_DISPATCHERS: Record<PlanSubcommand, PlanDispatcher> = {\n create: (input, ctx) => planCreate(input.options, input.global, ctx),\n show: (input, ctx) =>\n planShow(requirePlanId(input, \"show\"), input.options, ctx),\n \"add-step\": (input, ctx) =>\n planAddStep(requirePlanId(input, \"add-step\"), input.options, ctx),\n \"update-step\": (input, ctx) => {\n const target = requirePlanStepRef(input, \"update-step\");\n return planUpdateStep(target.id, input.options, ctx, {\n stepRef: target.stepRef,\n op: \"plan_update_step\",\n });\n },\n \"complete-step\": (input, ctx) => {\n const target = requirePlanStepRef(input, \"complete-step\");\n return planUpdateStep(target.id, input.options, ctx, {\n stepRef: target.stepRef,\n finalStatus: \"completed\",\n op: \"plan_complete_step\",\n });\n },\n \"block-step\": (input, ctx) => {\n const target = requirePlanStepRef(input, \"block-step\");\n return planUpdateStep(target.id, input.options, ctx, {\n stepRef: target.stepRef,\n finalStatus: \"blocked\",\n op: \"plan_block_step\",\n });\n },\n \"reorder-step\": (input, ctx) => {\n const target = requireReorderTarget(input);\n return planReorderStep(\n target.id,\n input.options,\n ctx,\n target.stepRef,\n target.reorderTo,\n );\n },\n \"remove-step\": (input, ctx) => {\n const target = requirePlanStepRef(input, \"remove-step\");\n return planRemoveStep(target.id, input.options, ctx, target.stepRef);\n },\n link: (input, ctx) => {\n const target = requirePlanStepRef(input, \"link\");\n return planLink(target.id, input.options, ctx, target.stepRef);\n },\n unlink: (input, ctx) => {\n const target = requirePlanStepRef(input, \"unlink\");\n return planUnlink(target.id, input.options, ctx, target.stepRef);\n },\n decision: (input, ctx) =>\n planAppendLog(\n requirePlanId(input, \"decision\"),\n input.options,\n ctx,\n \"decision\",\n ),\n discovery: (input, ctx) =>\n planAppendLog(\n requirePlanId(input, \"discovery\"),\n input.options,\n ctx,\n \"discovery\",\n ),\n validation: (input, ctx) =>\n planAppendLog(\n requirePlanId(input, \"validation\"),\n input.options,\n ctx,\n \"validation\",\n ),\n resume: (input, ctx) =>\n planResume(requirePlanId(input, \"resume\"), input.options, ctx),\n approve: (input, ctx) =>\n planApprove(requirePlanId(input, \"approve\"), input.options, ctx),\n materialize: (input, ctx) =>\n planMaterialize(requirePlanId(input, \"materialize\"), input.options, ctx),\n};\n\nfunction resolvePlanDispatcher(subcommand: PlanSubcommand): PlanDispatcher {\n const dispatcher = PLAN_DISPATCHERS[subcommand];\n if (!dispatcher) {\n throw new PmCliError(\n `Unknown pm plan subcommand \"${subcommand}\"`,\n EXIT_CODE.USAGE,\n );\n }\n return dispatcher;\n}\n\n/** Implements run plan for the public runtime surface of this module. */\nexport async function runPlan(\n input: PlanDispatchInput,\n): Promise<PlanCommandResult> {\n const ctx = await loadContext(input.global);\n const normalizedInput = normalizePlanStepAliasInput(input);\n return resolvePlanDispatcher(normalizedInput.subcommand)(\n normalizedInput,\n ctx,\n );\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["global", "list"]
|
|
7
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
BUILTIN_ITEM_TYPE_VALUES,
|
|
3
3
|
toDefaultFolder
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-66YL6RR5.js";
|
|
5
5
|
|
|
6
6
|
// dist/core/schema/item-types-file.js
|
|
7
7
|
!(function() {
|
|
@@ -263,4 +263,4 @@ export {
|
|
|
263
263
|
buildInvalidTypeHint,
|
|
264
264
|
buildInvalidTypeError
|
|
265
265
|
};
|
|
266
|
-
//# sourceMappingURL=chunk-
|
|
266
|
+
//# sourceMappingURL=chunk-L23NAJHL.js.map
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
EXIT_CODE,
|
|
5
5
|
PmCliError,
|
|
6
6
|
resolveTypeName
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-AHIEDSW2.js";
|
|
8
8
|
|
|
9
9
|
// dist/cli/shared-parsers.js
|
|
10
10
|
function parseLimit(raw, label = "--limit") {
|
|
@@ -50,6 +50,6 @@ export {
|
|
|
50
50
|
parsePriority,
|
|
51
51
|
parseType
|
|
52
52
|
};
|
|
53
|
-
//# sourceMappingURL=chunk-
|
|
53
|
+
//# sourceMappingURL=chunk-LEXFDABF.js.map
|
|
54
54
|
|
|
55
55
|
//# debugId=399686f0-6993-54a6-af33-eb82810de996
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getRuntimePath,
|
|
3
3
|
writeFileAtomic
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-66YL6RR5.js";
|
|
5
5
|
|
|
6
6
|
// dist/core/session/session-state.js
|
|
7
7
|
import { promises as fs } from "node:fs";
|
|
@@ -58,4 +58,4 @@ export {
|
|
|
58
58
|
setFocusedItem,
|
|
59
59
|
clearFocusedItem
|
|
60
60
|
};
|
|
61
|
-
//# sourceMappingURL=chunk-
|
|
61
|
+
//# sourceMappingURL=chunk-LNAGQRIL.js.map
|
|
@@ -2,14 +2,14 @@
|
|
|
2
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]="b82858eb-c433-52f9-bd8b-b0374037a312")}catch(e){}}();
|
|
3
3
|
import {
|
|
4
4
|
nowIso
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-VXUWCJS7.js";
|
|
6
6
|
import {
|
|
7
7
|
EXIT_CODE,
|
|
8
8
|
PmCliError,
|
|
9
9
|
pathExists,
|
|
10
10
|
toErrorMessage,
|
|
11
11
|
writeFileAtomic
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-AHIEDSW2.js";
|
|
13
13
|
|
|
14
14
|
// dist/core/checkpoint/mutation-checkpoint.js
|
|
15
15
|
import { mkdir, readFile } from "node:fs/promises";
|
|
@@ -130,6 +130,6 @@ export {
|
|
|
130
130
|
loadMutationCheckpoint,
|
|
131
131
|
restoreCheckpointItems
|
|
132
132
|
};
|
|
133
|
-
//# sourceMappingURL=chunk-
|
|
133
|
+
//# sourceMappingURL=chunk-LU4Z7POS.js.map
|
|
134
134
|
|
|
135
135
|
//# debugId=b82858eb-c433-52f9-bd8b-b0374037a312
|
|
@@ -2,13 +2,13 @@ import {
|
|
|
2
2
|
executeHistoryRewrite,
|
|
3
3
|
resolveHistorySubject,
|
|
4
4
|
writeHistoryRawWithRollback
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-XG5GVZRX.js";
|
|
6
6
|
import {
|
|
7
7
|
resolveAuthor
|
|
8
8
|
} from "./chunk-YRYYFGV3.js";
|
|
9
9
|
import {
|
|
10
10
|
lifecycleClassifierFromStatusRegistry
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-QFCCN4JO.js";
|
|
12
12
|
import {
|
|
13
13
|
cloneEmptyReplayDocument,
|
|
14
14
|
historyEntriesToRaw,
|
|
@@ -18,7 +18,7 @@ import {
|
|
|
18
18
|
toReplayDocument,
|
|
19
19
|
tryApplyReplayPatch,
|
|
20
20
|
verifyHistoryChain
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-AS62PEJE.js";
|
|
22
22
|
import {
|
|
23
23
|
createHistoryEntry,
|
|
24
24
|
getActiveExtensionRegistrations,
|
|
@@ -28,7 +28,7 @@ import {
|
|
|
28
28
|
readSettings,
|
|
29
29
|
runActiveOnReadHooks,
|
|
30
30
|
runActiveOnWriteHooks
|
|
31
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-NEJKKTCG.js";
|
|
32
32
|
import {
|
|
33
33
|
EXIT_CODE,
|
|
34
34
|
PmCliError,
|
|
@@ -38,7 +38,7 @@ import {
|
|
|
38
38
|
resolveItemTypeRegistry,
|
|
39
39
|
resolvePmRoot,
|
|
40
40
|
resolveRuntimeStatusRegistry
|
|
41
|
-
} from "./chunk-
|
|
41
|
+
} from "./chunk-66YL6RR5.js";
|
|
42
42
|
|
|
43
43
|
// dist/cli/commands/history-compact.js
|
|
44
44
|
import fs from "node:fs/promises";
|
|
@@ -605,4 +605,4 @@ export {
|
|
|
605
605
|
assertHistoryCompactTarget,
|
|
606
606
|
runHistoryCompactBulk
|
|
607
607
|
};
|
|
608
|
-
//# sourceMappingURL=chunk-
|
|
608
|
+
//# sourceMappingURL=chunk-LX265XY7.js.map
|