@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
package/docs/CODEX_PLUGIN.md
CHANGED
|
@@ -2,6 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
pm-cli ships a repo-local Codex plugin at [`plugins/pm-codex`](../plugins/pm-codex/README.md).
|
|
4
4
|
|
|
5
|
+
It is a real Codex plugin package: the repo marketplace installs it and Codex registers its skills and bundled
|
|
6
|
+
MCP server. It is not yet a self-contained cached runtime or an Apps SDK-backed ChatGPT app. The official-source
|
|
7
|
+
audit, verified gaps, and phased remediation plan are documented in
|
|
8
|
+
[Native ChatGPT and Codex Plugin Implementation Plan](CHATGPT_CODEX_PLUGIN_IMPLEMENTATION.md).
|
|
9
|
+
|
|
5
10
|
## Install From This Repo
|
|
6
11
|
|
|
7
12
|
```bash
|
|
@@ -18,7 +23,7 @@ The canonical tool, skill, command, and safety inventory lives in the plugin REA
|
|
|
18
23
|
|
|
19
24
|
Keep this page as the public docs router so the MCP tool/action list has one maintained source.
|
|
20
25
|
|
|
21
|
-
##
|
|
26
|
+
## Current MCP Runtime Note
|
|
22
27
|
|
|
23
28
|
The plugin launcher uses the local repository build when `dist/mcp/server.js` is present. When the plugin is cached outside the repo, it falls back to:
|
|
24
29
|
|
|
@@ -28,6 +33,11 @@ npx -y --package=@unbrained/pm-cli@latest pm-mcp
|
|
|
28
33
|
|
|
29
34
|
The fallback starts the package MCP server, not the `pm` CLI command. Tool calls import pm command modules and return JSON-compatible structured results.
|
|
30
35
|
|
|
36
|
+
This is current behavior, not the target distribution contract. A normal cached install has no repository
|
|
37
|
+
`dist/` ancestor, so it depends on npm availability and can run a newer server than the installed plugin. Track
|
|
38
|
+
the self-contained, version-coherent runtime work under
|
|
39
|
+
[pm-95d7](../.agents/pm/features/pm-95d7.toon).
|
|
40
|
+
|
|
31
41
|
## Safety
|
|
32
42
|
|
|
33
43
|
For real repository tracking, leave `path` unset so pm uses the repository `.agents/pm` root. For tests, use a sandbox `cwd` or `path` and isolate `PM_GLOBAL_PATH`.
|
package/docs/COMMANDS.md
CHANGED
|
@@ -101,7 +101,9 @@ pm dedupe-audit --mode parent_scope --limit 20
|
|
|
101
101
|
pm dedupe-merge --keep pm-canonical --close pm-duplicate --dry-run
|
|
102
102
|
```
|
|
103
103
|
|
|
104
|
-
Use `pm next` when the only question is "what should I work on now?" It computes dependency-aware readiness, keeps dangling dependency ids blocked until repaired, and combines lifecycle-blocked plus graph-blocked work in the companion queue. The `recommended` projection is excluded from the `ready` tail
|
|
104
|
+
Use `pm next` when the only question is "what should I work on now?" It computes dependency-aware readiness, keeps dangling dependency ids blocked until repaired, and combines lifecycle-blocked plus graph-blocked work in the companion queue. The `recommended` projection is excluded from the `ready` tail; every actionable row carries its one-based `rank`, and the tail preserves the exact recommendation order. Foreign-owned in-progress work is summarized under `held_by_others`. Human-gated `Decision` records remain visible under `decision_needed` but are excluded from agent recommendations by default.
|
|
105
|
+
|
|
106
|
+
Use `pm claim --next` to atomically select and claim caller-available work with bounded conflict retry. It accepts the same `--type`, `--tag`, `--priority`, `--assignee-filter`, `--parent`, `--sprint`, and `--release` candidate filters as `pm next`; `--max-attempts` bounds the ranked race-loss walk (default 10, maximum 100). With `--if-available`, exhaustion is a successful empty result (`available: false`, `item: null`, `skipped: true`) instead of an exception, which supports contention-tolerant worker loops. Pass `--include-decisions` only for a coordinated maintainer lane authorized to claim human-gated decisions. Scope snapshots with `--parent`, cap rows with `--limit`/`--blocked-limit`, or use `--ready-only` for the tightest projection.
|
|
105
107
|
|
|
106
108
|
```bash
|
|
107
109
|
pm next # recommend the next action + ready/blocked queues
|
package/docs/README.md
CHANGED
|
@@ -24,6 +24,7 @@ pm guide release --json
|
|
|
24
24
|
| Coding agent | [Agent Guide](AGENT_GUIDE.md) | [Configuration](CONFIGURATION.md), then command help |
|
|
25
25
|
| Maintainer | [Contributing](../CONTRIBUTING.md) | [Testing](TESTING.md), [Releasing](RELEASING.md), [Architecture](ARCHITECTURE.md) |
|
|
26
26
|
| Package author | [Packages and Extensions](EXTENSIONS.md) | [SDK](SDK.md), [starter extension](examples/starter-extension/README.md) |
|
|
27
|
+
| Codex or ChatGPT plugin implementer | [Codex Plugin](CODEX_PLUGIN.md) | [Native ChatGPT and Codex Plugin Implementation Plan](CHATGPT_CODEX_PLUGIN_IMPLEMENTATION.md) |
|
|
27
28
|
| Codex user | [Codex Plugin](CODEX_PLUGIN.md) | [Agent Guide](AGENT_GUIDE.md), then [Command Reference](COMMANDS.md) |
|
|
28
29
|
| Claude Code user | [Claude Code Plugin](CLAUDE_CODE_PLUGIN.md) | [Agent Guide](AGENT_GUIDE.md), then [Command Reference](COMMANDS.md) |
|
|
29
30
|
| Machine client | `pm contracts --json` | [Command Reference](COMMANDS.md#machine-contracts), optionally `pm install guide-shell --project && pm guide commands` |
|
|
@@ -42,6 +43,8 @@ pm guide release --json
|
|
|
42
43
|
- [Extension Author Contracts](EXTENSION_AUTHOR_CONTRACTS.md) - the stability guarantees and contract surface package authors build against.
|
|
43
44
|
- [SDK](SDK.md) - public import surfaces and typed authoring examples.
|
|
44
45
|
- [Codex Plugin](CODEX_PLUGIN.md) - native MCP plugin install, tools, skills, and safety notes.
|
|
46
|
+
- [Native ChatGPT and Codex Plugin Implementation Plan](CHATGPT_CODEX_PLUGIN_IMPLEMENTATION.md) - official-source
|
|
47
|
+
research, current-state audit, target architectures, security, testing, and phased remediation plan.
|
|
45
48
|
- [Claude Code Plugin](CLAUDE_CODE_PLUGIN.md) - native Claude Code plugin architecture and install flow.
|
|
46
49
|
- [CLI Simplification Migration](MIGRATION_CLI_SIMPLIFICATION.md) - root discovery (`--pm-path`), recovery bundles, and clear/unset semantics for automation maintainers.
|
|
47
50
|
- [Releasing](RELEASING.md) - maintainer release checklist and failure handling.
|
package/docs/SDK.md
CHANGED
|
@@ -112,9 +112,12 @@ Command/action contract exports:
|
|
|
112
112
|
- Typed annotation and relationship primitives on `PmClient`: `comments`, `notes`, `learnings`, `files`, `filesDiscover`, `docs`, `deps`, and `append`
|
|
113
113
|
- Annotation and relationship option/result contracts: `CommentsCommandOptions` / `CommentsResult`, `NotesCommandOptions` / `NotesResult`, `LearningsCommandOptions` / `LearningsResult`, `FilesCommandOptions` / `FilesResult`, `FilesDiscoverOptions` / `FilesDiscoverResult`, `DocsCommandOptions` / `DocsResult`, `DepsCommandOptions` / `DepsResult`, `AppendCommandOptions` / `AppendResult`
|
|
114
114
|
- Typed customization primitives on `PmClient`: `init`, `config`, `schema`, `schemaList`, `schemaShow`, `schemaAddType`, `schemaRemoveType`, `schemaAddStatus`, `schemaRemoveStatus`, `schemaAddField`, `schemaRemoveField`, `schemaListFields`, `schemaShowField`, `schemaApplyPreset`, `schemaInferTypes`, `schemaShowStatus`, `profile`, `profileList`, `profileShow`, `profileApply`, and `profileLint`
|
|
115
|
+
- Workspace-scaffold primitives: `ensurePmGitignore` and `getPmGitignoreBlock` let custom tools apply the same idempotent runtime/search cache policy as `pm init` without importing CLI internals.
|
|
115
116
|
- Customization primitive option/result contracts: `InitCommandOptions` / `InitResult`, `ConfigCommandOptions` / `ConfigResult`, `SchemaSubcommand` / `SchemaResult` / `SchemaInspectResult`, `SchemaListResult`, `SchemaShowResult`, `SchemaAddTypeResult`, `SchemaRemoveTypeResult`, `SchemaAddStatusResult`, `SchemaRemoveStatusResult`, `SchemaAddFieldResult`, `SchemaRemoveFieldResult`, `SchemaListFieldsResult`, `SchemaShowFieldResult`, `SchemaApplyPresetResult`, `SchemaAddTypeInferResult`, `SchemaShowStatusResult`, `ProfileSubcommand` / `ProfileResult`, `ProfileListResult`, `ProfileShowResult`, `ProfileApplyResult`, `ProfileLintResult`
|
|
116
117
|
- Typed governance and maintenance primitives on `PmClient`: `validate`, `health`, and `gc`
|
|
117
118
|
- Governance and maintenance option/result contracts: `ValidateCommandOptions` / `ValidateResult`, `RunHealthOptions` / `HealthResult`, `GcCommandOptions` / `GcResult`
|
|
119
|
+
- Typed plan workflow primitives on `PmClient`: `plan`, `planCreate`, `planShow`, `planAddStep`, `planUpdateStep`, `planCompleteStep`, `planBlockStep`, `planReorderStep`, `planRemoveStep`, `planLink`, `planUnlink`, `planDecision`, `planDiscovery`, `planValidation`, `planResume`, `planApprove`, and `planMaterialize`
|
|
120
|
+
- Plan contracts: `PlanSubcommand`, `PlanCommandOptions`, `PlanCommandResult`, `PlanResultPlan`, `PlanStepSummary`, `PlanShowDepth`, and `PlanTemplateName`
|
|
118
121
|
- Typed package and extension lifecycle primitives on `PmClient`: `extension`, `extensionList`, `extensionActivate`, `extensionDeactivate`, `package`, `packageList`, `packageInstall`, `packageUninstall`, `packageDoctor`, `packageManage`, `packageDescribe`, `packageReload`, `packageCatalog`, `packageActivate`, `packageDeactivate`, and `upgrade`
|
|
119
122
|
- Lifecycle primitive option/result contracts: `ExtensionCommandOptions` / `ExtensionCommandResult`, `PackageCommandOptions` / `PackageCommandResult`, `UpgradeCommandOptions` / `UpgradeResult`
|
|
120
123
|
- `PM_CORE_COMMAND_NAMES`
|
|
@@ -123,6 +126,35 @@ Command/action contract exports:
|
|
|
123
126
|
- `PM_PROVIDER_TOOL_PARAMETERS_SCHEMA`
|
|
124
127
|
- `PM_TOOL_ACTION_PARAMETER_CONTRACTS`
|
|
125
128
|
|
|
129
|
+
### Plan workflows
|
|
130
|
+
|
|
131
|
+
Custom tools can manage durable plans without shelling out or importing CLI internals. The typed façade uses the same engine and result envelopes as `pm plan` and MCP `pm_plan`:
|
|
132
|
+
|
|
133
|
+
```ts
|
|
134
|
+
import { PmClient } from "@unbrained/pm-cli/sdk";
|
|
135
|
+
|
|
136
|
+
const pm = new PmClient({ pmRoot, author: "planning-agent" });
|
|
137
|
+
await pm.schemaAddField("acceptance_owner", {
|
|
138
|
+
type: "string",
|
|
139
|
+
requiredOnCreate: true,
|
|
140
|
+
requiredTypes: ["Task"],
|
|
141
|
+
});
|
|
142
|
+
const created = await pm.planCreate({
|
|
143
|
+
title: "Ship governed workflow",
|
|
144
|
+
step: ["Implement", "Verify"],
|
|
145
|
+
});
|
|
146
|
+
await pm.planUpdateStep(created.plan.id, "plan-step-001", {
|
|
147
|
+
stepStatus: "in_progress",
|
|
148
|
+
});
|
|
149
|
+
const result = await pm.planMaterialize(created.plan.id, {
|
|
150
|
+
steps: "all",
|
|
151
|
+
materializeType: "Task",
|
|
152
|
+
field: ["acceptance_owner=planning-agent"],
|
|
153
|
+
});
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
`field` is repeatable and forwards `name=value` pairs through normal schema-aware create validation for every materialized child. Required-on-create fields remain mandatory. Each `materialized` entry includes `id`, `title`, `type`, `parent`, `tags`, and `from_step`, so an agent can confirm the created work without extra `get` calls.
|
|
157
|
+
|
|
126
158
|
Testing helper exports (also under `@unbrained/pm-cli/sdk/testing`):
|
|
127
159
|
|
|
128
160
|
- `createExtensionTestHarness`
|
|
@@ -206,7 +238,7 @@ is the "invoke" verb that completes the package-author testing loop —
|
|
|
206
238
|
`activateExtensionForTest` → `assertRegisteredCommandContract` → **run** →
|
|
207
239
|
`deactivateExtensionForTest`. It dispatches a registered command handler through
|
|
208
240
|
pm's real engine and returns the `CommandHandlerResult`, so a test can assert
|
|
209
|
-
|
|
241
|
+
_behavior_ (`result.result`) rather than only that the command is wired. The
|
|
210
242
|
`CommandHandlerContext` is built with agent-safe global defaults
|
|
211
243
|
(`{ json: true, quiet: true, noPager: true }`) that callers may override. A clean
|
|
212
244
|
run yields `{ handled: true, result, warnings: [] }`; a handler that throws a
|
|
@@ -243,7 +275,7 @@ Each override helper guards that a matching override is registered for the targe
|
|
|
243
275
|
(command / format / service), so a typo surfaces as a descriptive error rather
|
|
244
276
|
than a silent `overridden: false` / `handled: false`.
|
|
245
277
|
|
|
246
|
-
The
|
|
278
|
+
The _executable registration_ surfaces — search providers, vector store
|
|
247
279
|
adapters, schema migrations, importers, and exporters — also have invoke helpers,
|
|
248
280
|
so every executable register\* method has both an `assertRegistered*` and a
|
|
249
281
|
`runRegistered*ForTest` counterpart. Each exercises the real registered behavior,
|
|
@@ -291,7 +323,7 @@ silent no-op. All invoke helpers are `async`, so a test always `await`s them.
|
|
|
291
323
|
`describeExtensionActivation(activation, { extensionName })` is the **describe**
|
|
292
324
|
(enumerate-all) verb that complements the `assertRegistered*` (verify-one) and
|
|
293
325
|
`runRegistered*ForTest` (invoke-one) helpers. The activation result already
|
|
294
|
-
carries per-surface
|
|
326
|
+
carries per-surface _counts_; this returns the _names_. It walks every
|
|
295
327
|
sub-registry once and returns a flat `ExtensionActivationSummary` whose arrays
|
|
296
328
|
are de-duplicated and locale-sorted (except `hooks`, emitted in canonical
|
|
297
329
|
lifecycle order to mirror `hook_counts`) of every registered surface's
|
|
@@ -346,9 +378,15 @@ default `2`; section headings render one level deeper) control nesting, and
|
|
|
346
378
|
empty ones.
|
|
347
379
|
|
|
348
380
|
```ts
|
|
349
|
-
import {
|
|
381
|
+
import {
|
|
382
|
+
describeExtensionBlueprint,
|
|
383
|
+
renderExtensionSurfaceMarkdown,
|
|
384
|
+
} from "@unbrained/pm-cli/sdk";
|
|
350
385
|
|
|
351
|
-
const reference = renderExtensionSurfaceMarkdown(
|
|
386
|
+
const reference = renderExtensionSurfaceMarkdown(
|
|
387
|
+
describeExtensionBlueprint(blueprint),
|
|
388
|
+
{ title: "my-pkg", headingLevel: 2 },
|
|
389
|
+
);
|
|
352
390
|
// → "## my-pkg\n\nCapabilities: `commands`, `schema`\n\n### Commands\n\n- `greet hello`\n…"
|
|
353
391
|
```
|
|
354
392
|
|
|
@@ -461,7 +499,10 @@ const grouped = await pm.aggregate({ groupBy: "status", count: true });
|
|
|
461
499
|
const stats = await pm.stats({ metadataCoverage: true });
|
|
462
500
|
await pm.comments(created.item.id, { add: "Investigation context captured." });
|
|
463
501
|
await pm.files(created.item.id, { add: ["src/index.ts"], note: "entrypoint" });
|
|
464
|
-
await pm.docs(created.item.id, {
|
|
502
|
+
await pm.docs(created.item.id, {
|
|
503
|
+
add: ["docs/SDK.md"],
|
|
504
|
+
note: "authoring reference",
|
|
505
|
+
});
|
|
465
506
|
const graph = await pm.deps(created.item.id, { format: "graph" });
|
|
466
507
|
const types = await pm.schemaList();
|
|
467
508
|
const profiles = await pm.profileList();
|
|
@@ -469,7 +510,10 @@ const validation = await pm.validate({ checkResolution: true });
|
|
|
469
510
|
const health = await pm.health({ checkOnly: true, summary: true });
|
|
470
511
|
const packages = await pm.packageList({ project: true });
|
|
471
512
|
const doctor = await pm.packageDoctor({ project: true, isolated: true });
|
|
472
|
-
const plannedUpgrade = await pm.upgrade(undefined, {
|
|
513
|
+
const plannedUpgrade = await pm.upgrade(undefined, {
|
|
514
|
+
dryRun: true,
|
|
515
|
+
cliOnly: true,
|
|
516
|
+
});
|
|
473
517
|
|
|
474
518
|
await runAction({
|
|
475
519
|
action: "context",
|
|
@@ -493,11 +537,15 @@ integration, or agent runtime. Presentation stays outside the SDK primitive:
|
|
|
493
537
|
callers choose their own rendering while the data shape remains shared with the
|
|
494
538
|
CLI.
|
|
495
539
|
|
|
496
|
-
The `next` result excludes the recommended item from the `ready` tail,
|
|
497
|
-
foreign-owned work in `held_by_others`, and
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
540
|
+
The `next` result excludes the recommended item from the `ready` tail, assigns
|
|
541
|
+
stable one-based ranks, reports foreign-owned work in `held_by_others`, and
|
|
542
|
+
treats dangling dependency ids as unresolved blockers. Human-gated decisions
|
|
543
|
+
remain visible in `decision_needed` but stay outside the agent-ready queue unless
|
|
544
|
+
the caller explicitly opts in. `PmClient.claimNext()` and top-level `claimNext()`
|
|
545
|
+
compose the same ranking result and atomic claim mutation, accept the next-work
|
|
546
|
+
filters, and bound the race-loss candidate walk with `maxAttempts` (1 through
|
|
547
|
+
100 inclusive), so custom SDK
|
|
548
|
+
tools do not need to reproduce CLI concurrency policy.
|
|
501
549
|
|
|
502
550
|
Lifecycle convenience methods and the matching top-level functions (`create`,
|
|
503
551
|
`update`, `close`, `claim`, `release`, `copy`, `deleteItem`, `restore`,
|
|
@@ -688,11 +736,19 @@ methods bind to the right sub-registry for you:
|
|
|
688
736
|
```ts
|
|
689
737
|
import { createExtensionTestHarness } from "@unbrained/pm-cli/sdk/testing";
|
|
690
738
|
|
|
691
|
-
const ext = await createExtensionTestHarness(extensionModule, {
|
|
739
|
+
const ext = await createExtensionTestHarness(extensionModule, {
|
|
740
|
+
capabilities: ["commands", "schema"],
|
|
741
|
+
});
|
|
692
742
|
|
|
693
|
-
ext.assertCommandContract({
|
|
743
|
+
ext.assertCommandContract({
|
|
744
|
+
command: "incident triage",
|
|
745
|
+
flags: ["--severity"],
|
|
746
|
+
});
|
|
694
747
|
ext.assertFlags({ targetCommand: "list", flags: ["--incident-filter"] });
|
|
695
|
-
const { result } = await ext.runCommand({
|
|
748
|
+
const { result } = await ext.runCommand({
|
|
749
|
+
command: "incident triage",
|
|
750
|
+
options: { severity: "high" },
|
|
751
|
+
});
|
|
696
752
|
const summary = ext.activationSummary();
|
|
697
753
|
const reference = ext.renderMarkdown({ title: "incident package surfaces" });
|
|
698
754
|
await ext.deactivate();
|
|
@@ -702,24 +758,24 @@ For provider-safe schemas, use `PM_PROVIDER_TOOL_PARAMETERS_SCHEMA`. It is flat
|
|
|
702
758
|
|
|
703
759
|
## Capability Requirements
|
|
704
760
|
|
|
705
|
-
| Registration
|
|
706
|
-
|
|
707
|
-
| `registerCommand`
|
|
708
|
-
| inline command flags
|
|
709
|
-
| `registerFlags`
|
|
710
|
-
| `registerItemFields`
|
|
711
|
-
| `registerItemTypes`
|
|
712
|
-
| `registerMigration`
|
|
713
|
-
| `registerProfile`
|
|
714
|
-
| `registerImporter`
|
|
715
|
-
| `registerExporter`
|
|
716
|
-
| `registerParser`
|
|
717
|
-
| `registerPreflight`
|
|
718
|
-
| `registerService`
|
|
719
|
-
| `registerRenderer`
|
|
720
|
-
| lifecycle hooks
|
|
721
|
-
| `registerSearchProvider`
|
|
722
|
-
| `registerVectorStoreAdapter` | `search`
|
|
761
|
+
| Registration | Manifest capability |
|
|
762
|
+
| ---------------------------- | ------------------- |
|
|
763
|
+
| `registerCommand` | `commands` |
|
|
764
|
+
| inline command flags | `schema` |
|
|
765
|
+
| `registerFlags` | `schema` |
|
|
766
|
+
| `registerItemFields` | `schema` |
|
|
767
|
+
| `registerItemTypes` | `schema` |
|
|
768
|
+
| `registerMigration` | `schema` |
|
|
769
|
+
| `registerProfile` | `schema` |
|
|
770
|
+
| `registerImporter` | `importers` |
|
|
771
|
+
| `registerExporter` | `importers` |
|
|
772
|
+
| `registerParser` | `parser` |
|
|
773
|
+
| `registerPreflight` | `preflight` |
|
|
774
|
+
| `registerService` | `services` |
|
|
775
|
+
| `registerRenderer` | `renderers` |
|
|
776
|
+
| lifecycle hooks | `hooks` |
|
|
777
|
+
| `registerSearchProvider` | `search` |
|
|
778
|
+
| `registerVectorStoreAdapter` | `search` |
|
|
723
779
|
|
|
724
780
|
Some override surfaces are single-winner: command overrides, parser overrides, preflight overrides, and output renderers. Keep those handlers narrowly scoped and verify package combinations with:
|
|
725
781
|
|
|
@@ -754,7 +810,9 @@ export default defineExtension({
|
|
|
754
810
|
description: "Return a deterministic hello payload.",
|
|
755
811
|
intent: "verify SDK extension activation",
|
|
756
812
|
examples: ["pm hello"],
|
|
757
|
-
failure_hints: [
|
|
813
|
+
failure_hints: [
|
|
814
|
+
"Run pm package doctor --detail deep --trace on activation failures.",
|
|
815
|
+
],
|
|
758
816
|
run: async () => ({ ok: true, message: "hello" }),
|
|
759
817
|
});
|
|
760
818
|
},
|
|
@@ -989,7 +1047,7 @@ the type level.
|
|
|
989
1047
|
pm packages are authored **and loaded** as TypeScript (ADR
|
|
990
1048
|
[pm-2c28](../.agents/pm/decisions/pm-2c28.toon) / [pm-m1uz](../.agents/pm/decisions/pm-m1uz.toon)). A bare `const cmd = { ... }`
|
|
991
1049
|
satisfies the registration types only structurally and widens its literals;
|
|
992
|
-
wrapping it in a builder checks the object against the contract
|
|
1050
|
+
wrapping it in a builder checks the object against the contract _and_ preserves
|
|
993
1051
|
the narrow literal types, while inferring the nested handler's `context`
|
|
994
1052
|
parameter from the builder signature — the same ergonomics `defineConfig` gives a
|
|
995
1053
|
Vite config. It also lets you colocate, export, reuse, and unit-test a definition
|
|
@@ -1046,7 +1104,11 @@ surfaces you use (ideally with `define*`-authored definitions) and leave the res
|
|
|
1046
1104
|
out:
|
|
1047
1105
|
|
|
1048
1106
|
```ts
|
|
1049
|
-
import {
|
|
1107
|
+
import {
|
|
1108
|
+
composeExtension,
|
|
1109
|
+
defineCommand,
|
|
1110
|
+
deriveExtensionCapabilities,
|
|
1111
|
+
} from "@unbrained/pm-cli/sdk";
|
|
1050
1112
|
import type { ExtensionBlueprint } from "@unbrained/pm-cli/sdk";
|
|
1051
1113
|
|
|
1052
1114
|
const echo = defineCommand({
|
|
@@ -1059,7 +1121,9 @@ const echo = defineCommand({
|
|
|
1059
1121
|
const blueprint: ExtensionBlueprint = {
|
|
1060
1122
|
commands: [echo],
|
|
1061
1123
|
parsers: { "command-kit echo": (context) => ({ options: context.options }) },
|
|
1062
|
-
flags: {
|
|
1124
|
+
flags: {
|
|
1125
|
+
list: [{ long: "--kit-note", value_type: "string", value_name: "text" }],
|
|
1126
|
+
},
|
|
1063
1127
|
};
|
|
1064
1128
|
|
|
1065
1129
|
// The generated `activate` registers commands → overrides → flags → parsers →
|
|
@@ -1124,11 +1188,16 @@ export const commandsModule = defineExtensionBlueprint({
|
|
|
1124
1188
|
|
|
1125
1189
|
```ts
|
|
1126
1190
|
// index.ts — the manifest entry; import sibling .ts modules by their real extension (loaded directly via native type stripping).
|
|
1127
|
-
import {
|
|
1191
|
+
import {
|
|
1192
|
+
composeExtension,
|
|
1193
|
+
mergeExtensionBlueprints,
|
|
1194
|
+
} from "@unbrained/pm-cli/sdk";
|
|
1128
1195
|
import { commandsModule } from "./commands.ts";
|
|
1129
1196
|
import { searchModule } from "./search.ts";
|
|
1130
1197
|
|
|
1131
|
-
export default composeExtension(
|
|
1198
|
+
export default composeExtension(
|
|
1199
|
+
mergeExtensionBlueprints(commandsModule, searchModule),
|
|
1200
|
+
);
|
|
1132
1201
|
```
|
|
1133
1202
|
|
|
1134
1203
|
The merge is pure, deterministic, and never mutates an input. Each surface combines
|
|
@@ -1170,8 +1239,8 @@ const manifest = synthesizeExtensionManifest(blueprint, {
|
|
|
1170
1239
|
manifest.capabilities; // ["commands", "parser", "schema"] — derived, not hand-written
|
|
1171
1240
|
```
|
|
1172
1241
|
|
|
1173
|
-
Where `defineExtensionManifest` only
|
|
1174
|
-
|
|
1242
|
+
Where `defineExtensionManifest` only _types_ a manifest you wrote by hand, this
|
|
1243
|
+
_generates_ it. For the rare surface registered through the imperative `activate`
|
|
1175
1244
|
escape hatch (invisible to static derivation — e.g. a renderer wired in
|
|
1176
1245
|
`activate`), pass `additionalCapabilities` and they are unioned in (legacy-alias
|
|
1177
1246
|
resolved, unknown names dropped). Use the result as the on-disk `manifest.json`
|
|
@@ -1198,7 +1267,7 @@ const { module, manifest } = composeExtensionPackage(blueprint, {
|
|
|
1198
1267
|
entry: "./index.ts",
|
|
1199
1268
|
priority: 0,
|
|
1200
1269
|
});
|
|
1201
|
-
export default module;
|
|
1270
|
+
export default module; // the package entry's default export
|
|
1202
1271
|
// write `manifest` verbatim as manifest.json — capabilities derived, never hand-synced
|
|
1203
1272
|
```
|
|
1204
1273
|
|
|
@@ -1221,7 +1290,10 @@ the runtime guardrails (the same discipline as `deriveExtensionCapabilities`
|
|
|
1221
1290
|
inverting [`reconcileExtensionCapabilityUsage`](#capability-requirements)):
|
|
1222
1291
|
|
|
1223
1292
|
```ts
|
|
1224
|
-
import {
|
|
1293
|
+
import {
|
|
1294
|
+
describeExtensionBlueprint,
|
|
1295
|
+
lintExtensionBlueprint,
|
|
1296
|
+
} from "@unbrained/pm-cli/sdk";
|
|
1225
1297
|
|
|
1226
1298
|
// describeExtensionBlueprint returns the same ExtensionActivationSummary shape as
|
|
1227
1299
|
// the runtime describeExtensionActivation — but from the blueprint data alone, no
|
|
@@ -1234,8 +1306,10 @@ describeExtensionBlueprint(blueprint).command_handlers; // ["command-kit echo",
|
|
|
1234
1306
|
// `error` (the loader throws extension_capability_missing); a declared-but-unused
|
|
1235
1307
|
// capability, a duplicate command, a command/override conflict, and a present-but-
|
|
1236
1308
|
// empty surface are `warning`s. Pass declaredCapabilities or set manifest.capabilities.
|
|
1237
|
-
const report = lintExtensionBlueprint(blueprint, {
|
|
1238
|
-
|
|
1309
|
+
const report = lintExtensionBlueprint(blueprint, {
|
|
1310
|
+
declaredCapabilities: ["commands", "parser", "schema"],
|
|
1311
|
+
});
|
|
1312
|
+
report.ok; // false if any error-severity finding
|
|
1239
1313
|
report.findings; // [{ code, severity, message, capability?/command?/field? }, ...]
|
|
1240
1314
|
```
|
|
1241
1315
|
|
|
@@ -1292,7 +1366,7 @@ tests of extension registration shape; keep `pm package doctor` and runtime
|
|
|
1292
1366
|
contracts in integration tests.
|
|
1293
1367
|
|
|
1294
1368
|
For declarative (`composeExtension`) packages, `assertExtensionBlueprint(blueprint, options?)`
|
|
1295
|
-
is the `assert*` family member that preflights the blueprint
|
|
1369
|
+
is the `assert*` family member that preflights the blueprint _without_ activating
|
|
1296
1370
|
it — it runs `lintExtensionBlueprint` and throws if any finding is error-severity
|
|
1297
1371
|
(today: a capability a surface exercises but the declared set omits, which would
|
|
1298
1372
|
fail activation with `extension_capability_missing`). It returns the full
|
|
@@ -1309,7 +1383,7 @@ const report = assertExtensionBlueprint(blueprint);
|
|
|
1309
1383
|
|
|
1310
1384
|
`assertExtensionManifestMatchesBlueprint(manifest, blueprint)` is the **strict**
|
|
1311
1385
|
bookend to that lenient preflight: where `assertExtensionBlueprint` only fails on
|
|
1312
|
-
an
|
|
1386
|
+
an _undeclared_ capability and merely warns on an unused one, this assertion fails
|
|
1313
1387
|
on **both** — so a hand-maintained `manifest.json` stays exactly the least-privilege
|
|
1314
1388
|
set the blueprint requires (assert what `synthesizeExtensionManifest` would
|
|
1315
1389
|
otherwise generate). Only `capabilities` are reconciled, since that is the one
|
|
@@ -1325,7 +1399,7 @@ assertExtensionManifestMatchesBlueprint(manifest, blueprint);
|
|
|
1325
1399
|
```
|
|
1326
1400
|
|
|
1327
1401
|
Where the blueprint guards `capabilities`, a manifest's `pm_min_version` /
|
|
1328
|
-
`pm_max_version` bounds guard
|
|
1402
|
+
`pm_max_version` bounds guard _which pm CLI versions the package supports_.
|
|
1329
1403
|
Tracker references: `pm-knma` introduced `checkExtensionManifestCompatibility`;
|
|
1330
1404
|
`pm-hng2` introduced `assertExtensionManifestCompatible`.
|
|
1331
1405
|
`checkExtensionManifestCompatibility(manifest, { pmVersion, pmMaxVersionExceededMode? })`
|
|
@@ -1343,7 +1417,9 @@ import { checkExtensionManifestCompatibility } from "@unbrained/pm-cli/sdk";
|
|
|
1343
1417
|
import { assertExtensionManifestCompatible } from "@unbrained/pm-cli/sdk/testing";
|
|
1344
1418
|
|
|
1345
1419
|
// Inspect every bound outcome against a target version…
|
|
1346
|
-
const report = checkExtensionManifestCompatibility(manifest, {
|
|
1420
|
+
const report = checkExtensionManifestCompatibility(manifest, {
|
|
1421
|
+
pmVersion: "2026.6.23",
|
|
1422
|
+
});
|
|
1347
1423
|
// report.compatible === false, report.findings[0].code === "pm_min_version_unmet", …
|
|
1348
1424
|
|
|
1349
1425
|
// …or fail the package's own suite when a bound would block the load.
|
|
@@ -1375,14 +1451,24 @@ import { assertExtensionPreflight } from "@unbrained/pm-cli/sdk/testing";
|
|
|
1375
1451
|
|
|
1376
1452
|
// Inspect every author-time stage in one report…
|
|
1377
1453
|
const report = preflightExtension(blueprint, {
|
|
1378
|
-
identity: {
|
|
1454
|
+
identity: {
|
|
1455
|
+
name: "command-kit",
|
|
1456
|
+
version: "1.0.0",
|
|
1457
|
+
entry: "./index.ts",
|
|
1458
|
+
priority: 0,
|
|
1459
|
+
},
|
|
1379
1460
|
target: { pmVersion: "2026.6.23" },
|
|
1380
1461
|
});
|
|
1381
1462
|
// report.manifest.capabilities (derived), report.compatibility.compatible, report.findings[]
|
|
1382
1463
|
|
|
1383
1464
|
// …or guard the whole package in one CI line.
|
|
1384
1465
|
assertExtensionPreflight(blueprint, {
|
|
1385
|
-
identity: {
|
|
1466
|
+
identity: {
|
|
1467
|
+
name: "command-kit",
|
|
1468
|
+
version: "1.0.0",
|
|
1469
|
+
entry: "./index.ts",
|
|
1470
|
+
priority: 0,
|
|
1471
|
+
},
|
|
1386
1472
|
target: { pmVersion: "2026.6.23" },
|
|
1387
1473
|
});
|
|
1388
1474
|
```
|
|
@@ -1407,13 +1493,18 @@ the `"<name> import"` / `"<name> export"` command path. Pass the whole `activati
|
|
|
1407
1493
|
and the registration name:
|
|
1408
1494
|
|
|
1409
1495
|
```ts
|
|
1410
|
-
import {
|
|
1496
|
+
import {
|
|
1497
|
+
runRegisteredImporterForTest,
|
|
1498
|
+
runRegisteredExporterForTest,
|
|
1499
|
+
} from "@unbrained/pm-cli/sdk/testing";
|
|
1411
1500
|
|
|
1412
1501
|
const imported = await runRegisteredImporterForTest(activation, {
|
|
1413
1502
|
importer: "csv",
|
|
1414
1503
|
options: { rows: 3 },
|
|
1415
1504
|
});
|
|
1416
|
-
const exported = await runRegisteredExporterForTest(activation, {
|
|
1505
|
+
const exported = await runRegisteredExporterForTest(activation, {
|
|
1506
|
+
exporter: "csv",
|
|
1507
|
+
});
|
|
1417
1508
|
|
|
1418
1509
|
// Both return a CommandHandlerResult: imported.result is the importer's return value.
|
|
1419
1510
|
```
|
|
@@ -1454,10 +1545,13 @@ const parsed = await runRegisteredParserOverrideForTest(activation.parsers, {
|
|
|
1454
1545
|
});
|
|
1455
1546
|
// parsed.overridden === true; parsed.context holds the rewritten args/options.
|
|
1456
1547
|
|
|
1457
|
-
const rendered = await runRegisteredRendererOverrideForTest(
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
-
|
|
1548
|
+
const rendered = await runRegisteredRendererOverrideForTest(
|
|
1549
|
+
activation.renderers,
|
|
1550
|
+
{
|
|
1551
|
+
format: "toon",
|
|
1552
|
+
result: { id: "pm-1a2b" },
|
|
1553
|
+
},
|
|
1554
|
+
);
|
|
1461
1555
|
// rendered.rendered is the custom string the override produced.
|
|
1462
1556
|
```
|
|
1463
1557
|
|
|
@@ -1490,8 +1584,12 @@ assertRegisteredExporter(activation.registrations, {
|
|
|
1490
1584
|
exporter: "jsonl",
|
|
1491
1585
|
extensionName: "my-ext",
|
|
1492
1586
|
});
|
|
1493
|
-
assertRegisteredSearchProvider(activation.registrations, {
|
|
1494
|
-
|
|
1587
|
+
assertRegisteredSearchProvider(activation.registrations, {
|
|
1588
|
+
provider: "semantic-local",
|
|
1589
|
+
});
|
|
1590
|
+
assertRegisteredVectorStoreAdapter(activation.registrations, {
|
|
1591
|
+
adapter: "pinecone",
|
|
1592
|
+
});
|
|
1495
1593
|
```
|
|
1496
1594
|
|
|
1497
1595
|
Use `assertRegisteredVectorStoreAdapter` for packages that call
|
|
@@ -1549,7 +1647,10 @@ import {
|
|
|
1549
1647
|
} from "@unbrained/pm-cli/sdk/testing";
|
|
1550
1648
|
|
|
1551
1649
|
assertRegisteredCommandOverride(activation.commands, { command: "list" });
|
|
1552
|
-
assertRegisteredParserOverride(activation.parsers, {
|
|
1650
|
+
assertRegisteredParserOverride(activation.parsers, {
|
|
1651
|
+
command: "list",
|
|
1652
|
+
extensionName: "my-ext",
|
|
1653
|
+
});
|
|
1553
1654
|
assertRegisteredPreflightOverride(activation.preflight); // preflight overrides are global (no command)
|
|
1554
1655
|
assertRegisteredRendererOverride(activation.renderers, { format: "toon" });
|
|
1555
1656
|
```
|
|
@@ -1605,9 +1706,17 @@ export const kanbanProfile = defineProjectProfile({
|
|
|
1605
1706
|
summary: "WIP-limited flow with a verifying stage.",
|
|
1606
1707
|
types: [{ name: "Card", folder: "cards" }],
|
|
1607
1708
|
statuses: [{ id: "doing", roles: ["active"] }],
|
|
1608
|
-
fields: [
|
|
1709
|
+
fields: [
|
|
1710
|
+
{ key: "wip_limit", type: "number", commands: ["create", "update"] },
|
|
1711
|
+
],
|
|
1609
1712
|
workflows: [{ type: "Card", allowed_transitions: [["open", "doing"]] }],
|
|
1610
|
-
config: [
|
|
1713
|
+
config: [
|
|
1714
|
+
{
|
|
1715
|
+
key: "search_provider",
|
|
1716
|
+
value: "bm25",
|
|
1717
|
+
summary: "Offline lexical search.",
|
|
1718
|
+
},
|
|
1719
|
+
],
|
|
1611
1720
|
templates: [{ name: "card", options: { type: "Card" } }],
|
|
1612
1721
|
packages: [{ spec: "templates", reason: "Reusable card shapes." }],
|
|
1613
1722
|
});
|
|
@@ -1629,7 +1738,9 @@ surface to `schema`. Prove a profile registered with `assertRegisteredProfile`:
|
|
|
1629
1738
|
```ts
|
|
1630
1739
|
import { assertRegisteredProfile } from "@unbrained/pm-cli/sdk/testing";
|
|
1631
1740
|
|
|
1632
|
-
const { profile } = assertRegisteredProfile(activation.registrations, {
|
|
1741
|
+
const { profile } = assertRegisteredProfile(activation.registrations, {
|
|
1742
|
+
profile: "kanban",
|
|
1743
|
+
});
|
|
1633
1744
|
// profile is the normalized ProjectProfileDefinition
|
|
1634
1745
|
```
|
|
1635
1746
|
|
|
@@ -1651,11 +1762,21 @@ import {
|
|
|
1651
1762
|
|
|
1652
1763
|
// Invoke a registered provider's semantic query (or embed / embedBatch /
|
|
1653
1764
|
// queryExpansion / rerank); the result type follows `operation`.
|
|
1654
|
-
const hits = await runRegisteredSearchProviderForTest(
|
|
1655
|
-
|
|
1656
|
-
|
|
1657
|
-
|
|
1658
|
-
|
|
1765
|
+
const hits = await runRegisteredSearchProviderForTest(
|
|
1766
|
+
activation.registrations,
|
|
1767
|
+
{
|
|
1768
|
+
provider: "semantic-local",
|
|
1769
|
+
operation: "query",
|
|
1770
|
+
context: {
|
|
1771
|
+
query: "calendar",
|
|
1772
|
+
mode: "semantic",
|
|
1773
|
+
tokens: ["calendar"],
|
|
1774
|
+
options: {},
|
|
1775
|
+
settings,
|
|
1776
|
+
documents,
|
|
1777
|
+
},
|
|
1778
|
+
},
|
|
1779
|
+
);
|
|
1659
1780
|
|
|
1660
1781
|
// Invoke a registered adapter's upsert / query / delete.
|
|
1661
1782
|
await runRegisteredVectorStoreAdapterForTest(activation.registrations, {
|
|
@@ -1711,7 +1832,11 @@ export default defineExtension({
|
|
|
1711
1832
|
aliases: ["incident"],
|
|
1712
1833
|
required_create_fields: ["title", "description", "severity"],
|
|
1713
1834
|
options: [
|
|
1714
|
-
{
|
|
1835
|
+
{
|
|
1836
|
+
key: "severity",
|
|
1837
|
+
values: ["critical", "major", "minor"],
|
|
1838
|
+
required: true,
|
|
1839
|
+
},
|
|
1715
1840
|
{ key: "service", values: ["api", "web", "worker"] },
|
|
1716
1841
|
],
|
|
1717
1842
|
},
|
|
@@ -1810,8 +1935,16 @@ export default defineExtension({
|
|
|
1810
1935
|
name: "example-search",
|
|
1811
1936
|
async query(context) {
|
|
1812
1937
|
return context.documents
|
|
1813
|
-
.filter((doc) =>
|
|
1814
|
-
|
|
1938
|
+
.filter((doc) =>
|
|
1939
|
+
doc.metadata.title
|
|
1940
|
+
?.toLowerCase()
|
|
1941
|
+
.includes(context.query.toLowerCase()),
|
|
1942
|
+
)
|
|
1943
|
+
.map((doc) => ({
|
|
1944
|
+
id: doc.metadata.id,
|
|
1945
|
+
score: 0.5,
|
|
1946
|
+
matched_fields: ["title"],
|
|
1947
|
+
}));
|
|
1815
1948
|
},
|
|
1816
1949
|
});
|
|
1817
1950
|
},
|
package/marketplace.json
CHANGED
|
@@ -6,14 +6,14 @@
|
|
|
6
6
|
},
|
|
7
7
|
"metadata": {
|
|
8
8
|
"description": "Official marketplace for pm CLI — native git-based project management for Claude Code and AI coding agents.",
|
|
9
|
-
"version": "
|
|
9
|
+
"version": "2026.7.12"
|
|
10
10
|
},
|
|
11
11
|
"plugins": [
|
|
12
12
|
{
|
|
13
13
|
"name": "pm-claude",
|
|
14
14
|
"source": "./plugins/pm-claude",
|
|
15
15
|
"description": "Native pm CLI integration for Claude Code — 28 MCP tools, 5 workflow skills, 14 slash commands, 4 subagents, hybrid TUI task tracking, session context injection, and coordination subagents for git-based project management without leaving Claude Code.",
|
|
16
|
-
"version": "
|
|
16
|
+
"version": "2026.7.12",
|
|
17
17
|
"author": {
|
|
18
18
|
"name": "unbrained",
|
|
19
19
|
"url": "https://github.com/unbraind/pm-cli"
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@unbrained/pm-cli",
|
|
3
|
-
"version": "2026.7.
|
|
3
|
+
"version": "2026.7.12",
|
|
4
4
|
"description": "Git-native project management CLI for humans and agents.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"packageManager": "pnpm@11.10.0",
|
|
@@ -91,8 +91,9 @@
|
|
|
91
91
|
"smoke:external-packages": "node scripts/smoke-external-packages.mjs",
|
|
92
92
|
"smoke:codex-plugin": "node scripts/smoke-codex-plugin-mcp.mjs",
|
|
93
93
|
"smoke:claude-plugin": "node scripts/smoke-claude-plugin.mjs",
|
|
94
|
-
"version:check": "node scripts/release-version.mjs check",
|
|
94
|
+
"version:check": "node scripts/release-version.mjs check && node scripts/sync-versions.mjs check",
|
|
95
95
|
"version:next": "node scripts/release-version.mjs next",
|
|
96
|
+
"version:sync": "node scripts/sync-versions.mjs apply",
|
|
96
97
|
"changelog:pm:install": "node dist/cli.js install npm:pm-changelog --project",
|
|
97
98
|
"changelog:pm": "pnpm changelog:pm:install && node dist/cli.js changelog generate --output CHANGELOG.md --title \"Changelog\" --mode replace --all-release-tags --status closed --item-url-base https://github.com/unbraind/pm-cli/blob/main/.agents/pm",
|
|
98
99
|
"changelog:pm:check": "pnpm changelog:pm:install && node dist/cli.js changelog generate --output CHANGELOG.md --title \"Changelog\" --mode replace --all-release-tags --status closed --item-url-base https://github.com/unbraind/pm-cli/blob/main/.agents/pm --check",
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/** @module packages/pm-beads/extensions/beads/runtime-loader */
|
|
1
2
|
import { existsSync } from "node:fs";
|
|
2
3
|
import path from "node:path";
|
|
3
4
|
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
@@ -11,6 +12,7 @@ const CURRENT_EXTENSION_ROOT = path.dirname(fileURLToPath(import.meta.url));
|
|
|
11
12
|
const EXTENSION_NAME = "beads";
|
|
12
13
|
const PACKAGE_NAME = "pm-beads";
|
|
13
14
|
const DIAGNOSTIC_NAME = "beads";
|
|
15
|
+
/** Runtime module exports loaded from the installed package or co-located extension. */
|
|
14
16
|
export type PackageRuntimeModule = Record<string, unknown>;
|
|
15
17
|
|
|
16
18
|
function isRecord(value: unknown): value is Record<string, unknown> {
|
|
@@ -94,6 +96,7 @@ async function tryRuntime(modulePath: string, attempted: string[]): Promise<Pack
|
|
|
94
96
|
}
|
|
95
97
|
}
|
|
96
98
|
|
|
99
|
+
/** Resolve and load the first usable packaged runtime module. */
|
|
97
100
|
export async function loadPackageRuntimeModule(): Promise<PackageRuntimeModule> {
|
|
98
101
|
const attempted: string[] = [];
|
|
99
102
|
for (const modulePath of [...resolvePackageRootCandidates().flatMap(runtimePaths), path.join(CURRENT_EXTENSION_ROOT, "runtime.ts")]) {
|