@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
|
@@ -0,0 +1,775 @@
|
|
|
1
|
+
# Native ChatGPT and Codex Plugin Implementation Plan
|
|
2
|
+
|
|
3
|
+
Tracked research: [pm-n28t](../.agents/pm/tasks/pm-n28t.toon). Future implementation:
|
|
4
|
+
[pm-95d7](../.agents/pm/features/pm-95d7.toon).
|
|
5
|
+
|
|
6
|
+
Research date: **2026-07-11**. This page is a research and implementation plan. It does not record a completed
|
|
7
|
+
plugin remediation, ChatGPT app deployment, or public plugin submission.
|
|
8
|
+
|
|
9
|
+
## Executive Conclusion
|
|
10
|
+
|
|
11
|
+
The current `plugins/pm-codex` package is an actual native Codex plugin, but it is not yet a complete,
|
|
12
|
+
self-contained, validation-clean ChatGPT/Codex distribution.
|
|
13
|
+
|
|
14
|
+
- It has the required `.codex-plugin/plugin.json`, a repo marketplace entry, skills, and bundled MCP
|
|
15
|
+
configuration. An isolated Codex CLI 0.144.1 install accepted it, enabled it, and registered `pm-mcp`.
|
|
16
|
+
- It is not self-contained after marketplace installation. The installed cache does not contain `dist/` or
|
|
17
|
+
dependencies, so the launcher falls through to `npx -y --package=@unbrained/pm-cli@latest pm-mcp`.
|
|
18
|
+
- It currently fails the built-in `@plugin-creator` validator because every bundled skill points at icon files
|
|
19
|
+
that do not exist relative to that skill.
|
|
20
|
+
- Its `commands/` directory is not a documented Codex plugin component and is not referenced from the manifest.
|
|
21
|
+
Those files must be treated as unverified payload, not advertised functionality.
|
|
22
|
+
- It is not a ChatGPT app. It has no `.app.json`, developer-mode app mapping, reachable HTTPS or tunnel-backed
|
|
23
|
+
MCP endpoint, Apps SDK tool metadata, or app submission evidence.
|
|
24
|
+
- Its MCP descriptors expose input schemas, but not the output schemas or required safety annotations expected
|
|
25
|
+
for a submitted MCP-backed plugin.
|
|
26
|
+
|
|
27
|
+
The correct strategy is therefore two explicit tracks:
|
|
28
|
+
|
|
29
|
+
1. Make the local Codex and ChatGPT desktop-hosted plugin self-contained, validation-clean, and truthful.
|
|
30
|
+
2. Decide separately whether to build an MCP-backed ChatGPT app. If that track is selected, choose how a web
|
|
31
|
+
client will reach the git-native repository before writing app code.
|
|
32
|
+
|
|
33
|
+
Do not describe these tracks as one interchangeable artifact. A native plugin package and a ChatGPT app are
|
|
34
|
+
related, but they are not the same thing.
|
|
35
|
+
|
|
36
|
+
## Verdict Matrix
|
|
37
|
+
|
|
38
|
+
| Question | Verified answer on 2026-07-11 | Consequence |
|
|
39
|
+
|---|---|---|
|
|
40
|
+
| Is `pm-codex` a native Codex plugin? | Yes. Codex installs the marketplace entry and registers its skills/MCP server. | Keep the plugin lineage; do not replace it with an unrelated format. |
|
|
41
|
+
| Is the installed plugin self-contained? | No. Its cached launcher uses `npx ...@latest` when no repo `dist/` is reachable. | Bundle or package a version-matched runtime inside the installed artifact. |
|
|
42
|
+
| Does the official validator pass? | No. Six skill icon checks fail. | Fix per-skill assets or remove invalid skill icon declarations. |
|
|
43
|
+
| Is it a ChatGPT app? | No. There is no app mapping or ChatGPT-reachable MCP endpoint. | Build and test an app only after choosing a repository-access architecture. |
|
|
44
|
+
| Is it ready for public plugin submission? | No. App transport, annotations, schemas, legal metadata, tests, and review materials are incomplete. | Treat submission as a later gated phase. |
|
|
45
|
+
| Is the current `mcpServers` wrapper proven invalid? | No. Codex 0.144.1, OpenAI-curated plugins, and the current `@plugin-creator` scaffold accept it. | Do not make a speculative casing-only edit. Add compatibility validation instead. |
|
|
46
|
+
| Are files under `commands/` proven Codex plugin commands? | No. Current plugin docs list skills, apps, MCP config, hooks, and assets, not a `commands/` component. | Migrate useful prompts into skills or remove the unsupported claim. |
|
|
47
|
+
|
|
48
|
+
## Source Currency and Research Method
|
|
49
|
+
|
|
50
|
+
The sources below were opened live on 2026-07-11. The Codex documentation URLs on
|
|
51
|
+
`developers.openai.com` currently redirect to official pages on `learn.chatgpt.com`; both are OpenAI-owned
|
|
52
|
+
documentation surfaces. The current pages, not older remembered terminology, are the source of truth for this
|
|
53
|
+
plan.
|
|
54
|
+
|
|
55
|
+
Primary official sources:
|
|
56
|
+
|
|
57
|
+
- [Plugins](https://developers.openai.com/codex/plugins) — supported clients, install behavior, plugin parts,
|
|
58
|
+
and permission boundaries.
|
|
59
|
+
- [Build plugins](https://developers.openai.com/codex/plugins/build) — scaffold, marketplace, manifest,
|
|
60
|
+
distribution, MCP configuration, hooks, and packaging.
|
|
61
|
+
- [Build an app](https://learn.chatgpt.com/docs/build-app) — distinction between the plugin package and its
|
|
62
|
+
optional MCP-backed app.
|
|
63
|
+
- [Submit plugins](https://learn.chatgpt.com/docs/submit-plugins) — portal fields, review, tool annotations,
|
|
64
|
+
tests, identity, verification, and publishing.
|
|
65
|
+
- [Apps SDK overview](https://developers.openai.com/apps-sdk) and
|
|
66
|
+
[MCP server guide](https://developers.openai.com/apps-sdk/build/mcp-server) — ChatGPT app runtime model.
|
|
67
|
+
- [Define tools](https://developers.openai.com/apps-sdk/plan/tools) and
|
|
68
|
+
[Apps SDK reference](https://developers.openai.com/apps-sdk/reference) — focused tools, schemas,
|
|
69
|
+
`structuredContent`, and annotations.
|
|
70
|
+
- [Deploy your app](https://developers.openai.com/apps-sdk/deploy) and
|
|
71
|
+
[Connect from ChatGPT](https://developers.openai.com/apps-sdk/deploy/connect-chatgpt) — stable HTTPS `/mcp`,
|
|
72
|
+
developer mode, refresh, and client testing.
|
|
73
|
+
- [Authentication](https://developers.openai.com/apps-sdk/build/auth) and
|
|
74
|
+
[Security and privacy](https://developers.openai.com/apps-sdk/guides/security-privacy) — OAuth 2.1,
|
|
75
|
+
authorization, scopes, consent, prompt injection, logging, and data handling.
|
|
76
|
+
- [Test your integration](https://developers.openai.com/apps-sdk/deploy/testing) — handler tests, MCP
|
|
77
|
+
Inspector, developer mode, API Playground, golden prompts, and regression checks.
|
|
78
|
+
- [MCP Apps compatibility](https://developers.openai.com/apps-sdk/mcp-apps-in-chatgpt) — portable iframe UI
|
|
79
|
+
bridge and ChatGPT extensions.
|
|
80
|
+
- [Secure MCP Tunnel](https://developers.openai.com/api/docs/guides/secure-mcp-tunnels) — outbound-only access
|
|
81
|
+
from ChatGPT/Codex to a private or local MCP server.
|
|
82
|
+
- [Apps SDK changelog](https://developers.openai.com/apps-sdk/changelog) and
|
|
83
|
+
[Codex changelog](https://developers.openai.com/codex/changelog) — recent behavior and plugin rollout
|
|
84
|
+
changes.
|
|
85
|
+
|
|
86
|
+
Live implementation evidence was also collected from:
|
|
87
|
+
|
|
88
|
+
- Codex CLI 0.144.1 contracts and an isolated temporary `CODEX_HOME`.
|
|
89
|
+
- The current OpenAI-curated plugin cache installed with Codex.
|
|
90
|
+
- The built-in `@plugin-creator` scaffold and validator.
|
|
91
|
+
- The repository manifest, marketplace, launcher, tool definitions, smokes, and docs.
|
|
92
|
+
|
|
93
|
+
The official build page currently describes a companion `.mcp.json` as a direct server map or a wrapped
|
|
94
|
+
`mcp_servers` object. In contrast, the current OpenAI-curated plugins, `@plugin-creator` scaffold, validator,
|
|
95
|
+
and Codex 0.144.1 use or accept a wrapped `mcpServers` object. This is a documentation/runtime discrepancy.
|
|
96
|
+
The working runtime contract wins for this checkout, and a future change must be driven by executable
|
|
97
|
+
validation across supported Codex versions rather than by casing speculation.
|
|
98
|
+
|
|
99
|
+
## The Current OpenAI Product Model
|
|
100
|
+
|
|
101
|
+
### Plugin
|
|
102
|
+
|
|
103
|
+
A plugin is the package a user discovers, installs, shares, submits, and publishes. It may contain:
|
|
104
|
+
|
|
105
|
+
- one or more skills;
|
|
106
|
+
- an MCP-backed app;
|
|
107
|
+
- bundled MCP server configuration for a Codex host;
|
|
108
|
+
- lifecycle hooks;
|
|
109
|
+
- visual assets; or
|
|
110
|
+
- a combination of those parts.
|
|
111
|
+
|
|
112
|
+
Every plugin has a `.codex-plugin/plugin.json` entry point. Skills, `.app.json`, `.mcp.json`, hooks, and assets
|
|
113
|
+
belong at the plugin root, not inside `.codex-plugin/`.
|
|
114
|
+
|
|
115
|
+
### App
|
|
116
|
+
|
|
117
|
+
An app is an MCP-backed capability inside a plugin. Its server defines tools, authentication, data handling,
|
|
118
|
+
and real behavior. A custom UI is optional. When UI is useful, the app registers MCP UI resources and uses the
|
|
119
|
+
MCP Apps bridge; ChatGPT-specific `window.openai` APIs are extensions, not the default portable foundation.
|
|
120
|
+
|
|
121
|
+
An app is needed when a plugin must expose live tools to ChatGPT, connect to a service, authenticate a user, or
|
|
122
|
+
perform actions through MCP. A skill-only plugin remains valid, but it does not turn a local CLI into a remotely
|
|
123
|
+
reachable ChatGPT tool service.
|
|
124
|
+
|
|
125
|
+
### Marketplace
|
|
126
|
+
|
|
127
|
+
A marketplace is an ordered catalog, not the plugin itself. The current documented locations are:
|
|
128
|
+
|
|
129
|
+
- repo: `$REPO_ROOT/.agents/plugins/marketplace.json`;
|
|
130
|
+
- personal: `~/.agents/plugins/marketplace.json`; and
|
|
131
|
+
- legacy repo compatibility: `$REPO_ROOT/.claude-plugin/marketplace.json`.
|
|
132
|
+
|
|
133
|
+
Marketplace sources may be local, Git-backed, or npm-backed. Codex copies an installed plugin into
|
|
134
|
+
`~/.codex/plugins/cache/<marketplace>/<plugin>/<version>/` and loads the cached copy. A relative path that only
|
|
135
|
+
works because the source repository has files above the plugin directory is therefore not a portable runtime
|
|
136
|
+
dependency.
|
|
137
|
+
|
|
138
|
+
### Supported surfaces are not identical execution environments
|
|
139
|
+
|
|
140
|
+
Plugins can be browsed from ChatGPT Work, the ChatGPT desktop app, Codex CLI, and the Codex IDE extension.
|
|
141
|
+
That shared directory does not make a local stdio process reachable from a web conversation. ChatGPT app tools
|
|
142
|
+
need a reachable HTTPS `/mcp` endpoint or a supported tunnel to a private MCP server. Local Codex MCP servers
|
|
143
|
+
continue to execute under the Codex host sandbox and approval policy.
|
|
144
|
+
|
|
145
|
+
## Current Repository Audit
|
|
146
|
+
|
|
147
|
+
### Shipped layout
|
|
148
|
+
|
|
149
|
+
```text
|
|
150
|
+
plugins/pm-codex/
|
|
151
|
+
├── .codex-plugin/plugin.json
|
|
152
|
+
├── .mcp.json
|
|
153
|
+
├── README.md
|
|
154
|
+
├── assets/pm-cli-small.svg
|
|
155
|
+
├── commands/
|
|
156
|
+
│ ├── pm-audit.md
|
|
157
|
+
│ ├── pm-close-task.md
|
|
158
|
+
│ └── pm-start-task.md
|
|
159
|
+
├── scripts/pm-mcp-server.mjs
|
|
160
|
+
└── skills/
|
|
161
|
+
├── pm-auditor/
|
|
162
|
+
├── pm-native/
|
|
163
|
+
└── pm-release/
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
The manifest declares `skills` and `mcpServers`. It does not declare `apps` or `hooks`. That is a valid
|
|
167
|
+
plugin class: a plugin does not need an app or hook merely to be a plugin.
|
|
168
|
+
|
|
169
|
+
### Isolated install proof
|
|
170
|
+
|
|
171
|
+
The repository install instructions were replayed with a new temporary Codex home:
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
CODEX_HOME=<temporary-directory> codex plugin marketplace add .
|
|
175
|
+
CODEX_HOME=<temporary-directory> codex plugin add pm-codex@pm-local --json
|
|
176
|
+
CODEX_HOME=<temporary-directory> codex plugin list
|
|
177
|
+
CODEX_HOME=<temporary-directory> codex mcp list
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
Observed results:
|
|
181
|
+
|
|
182
|
+
- marketplace `pm-local` resolved from the repository;
|
|
183
|
+
- `pm-codex@pm-local` version `2026.7.11` installed and became enabled;
|
|
184
|
+
- Codex copied the plugin to its versioned cache;
|
|
185
|
+
- `pm-mcp` appeared as an enabled stdio MCP server; and
|
|
186
|
+
- the current camel-case `.mcp.json` wrapper was accepted.
|
|
187
|
+
|
|
188
|
+
This disproves the broad claim that the repository has no real native Codex plugin.
|
|
189
|
+
|
|
190
|
+
### Installed runtime defect
|
|
191
|
+
|
|
192
|
+
The cached archive contains the plugin files listed above, but no repository `dist/`, dependency tree, or
|
|
193
|
+
plugin-local package runtime. The generated launcher tries, in order:
|
|
194
|
+
|
|
195
|
+
1. `PM_CLI_MCP_SERVER`;
|
|
196
|
+
2. a readable `dist/mcp/server.js` found by walking ancestors of the launcher; then
|
|
197
|
+
3. `npx -y --package=@unbrained/pm-cli@latest pm-mcp`.
|
|
198
|
+
|
|
199
|
+
The versioned cache is outside the source checkout, so normal external installs cannot find the repository
|
|
200
|
+
`dist/mcp/server.js`. They therefore use the third branch. This has four consequences:
|
|
201
|
+
|
|
202
|
+
- startup requires network and npm availability;
|
|
203
|
+
- the running server version can differ from the installed plugin version;
|
|
204
|
+
- `@latest` makes behavior change independently of installed skills and documentation; and
|
|
205
|
+
- the current “native” description implies a more self-contained artifact than users receive.
|
|
206
|
+
|
|
207
|
+
The current Codex smoke starts the repository `dist/mcp/server.js` directly. It proves the MCP implementation,
|
|
208
|
+
but it does not exercise the installed cache, launcher fallback, offline startup, or plugin/runtime version
|
|
209
|
+
coherence.
|
|
210
|
+
|
|
211
|
+
### Validator defect
|
|
212
|
+
|
|
213
|
+
The official built-in validation path was run as follows:
|
|
214
|
+
|
|
215
|
+
```bash
|
|
216
|
+
uv run --with pyyaml python \
|
|
217
|
+
/path/to/plugin-creator/scripts/validate_plugin.py \
|
|
218
|
+
plugins/pm-codex
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
It fails six checks. Each of `pm-auditor`, `pm-native`, and `pm-release` declares both `icon_small` and
|
|
222
|
+
`icon_large` as `./assets/pm-cli-small.svg` in its own `agents/openai.yaml`, but none of those skill directories
|
|
223
|
+
contains `assets/pm-cli-small.svg`. The one existing asset is at the plugin root. Skill metadata paths are
|
|
224
|
+
resolved relative to the skill, so install tolerance does not make those references valid.
|
|
225
|
+
|
|
226
|
+
### Unsupported or unproven command payload
|
|
227
|
+
|
|
228
|
+
The official plugin structure documents skills, hooks, app mappings, MCP configuration, and assets. It does not
|
|
229
|
+
document a Codex plugin `commands/` loader or a manifest `commands` field. The current manifest does not point at
|
|
230
|
+
the directory, and the built-in validator ignores it.
|
|
231
|
+
|
|
232
|
+
The three command Markdown files may be useful prompt content, but the repository has no current-head proof
|
|
233
|
+
that Codex exposes them as slash commands. They should be migrated into supported skills when they add unique
|
|
234
|
+
value, or removed. Until then, docs must not count them as a working native capability.
|
|
235
|
+
|
|
236
|
+
### MCP descriptor gap for a ChatGPT app
|
|
237
|
+
|
|
238
|
+
`src/mcp/tool-definitions.ts` currently defines each tool with:
|
|
239
|
+
|
|
240
|
+
- `name`;
|
|
241
|
+
- `description`; and
|
|
242
|
+
- `inputSchema`.
|
|
243
|
+
|
|
244
|
+
The `tools/list` response returns those definitions directly. It does not provide `outputSchema` or Apps SDK
|
|
245
|
+
annotations such as `readOnlyHint`, `openWorldHint`, and `destructiveHint`.
|
|
246
|
+
|
|
247
|
+
That is sufficient for the current local MCP smoke, but not for a review-ready ChatGPT app. OpenAI requires the
|
|
248
|
+
three safety hints for every submitted MCP tool, recommends output schemas for structured results, and expects
|
|
249
|
+
tool names, descriptions, schemas, output structure, and actual behavior to agree.
|
|
250
|
+
|
|
251
|
+
The broad `pm_run` tool and combined list/add/remove/run tools also conflict with the Apps SDK recommendation of
|
|
252
|
+
one focused job per tool and separate read/write actions. A public app surface must not simply expose the entire
|
|
253
|
+
local escape hatch.
|
|
254
|
+
|
|
255
|
+
### Public listing and legal gap
|
|
256
|
+
|
|
257
|
+
The manifest currently uses `SECURITY.md` as its privacy policy and `LICENSE` as its terms of service. Those are
|
|
258
|
+
useful project documents, but they are not a privacy policy or service terms describing an MCP app, user data,
|
|
259
|
+
retention, authentication, support, or hosted processing. Public submission also requires matching publisher
|
|
260
|
+
identity, support information, production branding, a public MCP URL, domain verification, and policy
|
|
261
|
+
attestations.
|
|
262
|
+
|
|
263
|
+
### Identity and authorization gap
|
|
264
|
+
|
|
265
|
+
The local `.mcp.json` sets `PM_AUTHOR=codex-agent`. That gives local history a stable fallback author, but it is
|
|
266
|
+
not end-user identity or authorization. A hosted multi-user app must derive the actor from authenticated server
|
|
267
|
+
context, authorize the selected repository and operation on every request, and prevent callers from spoofing
|
|
268
|
+
another history author through tool arguments.
|
|
269
|
+
|
|
270
|
+
## Target Architecture
|
|
271
|
+
|
|
272
|
+
```text
|
|
273
|
+
Local Codex or desktop-hosted workflow
|
|
274
|
+
|
|
275
|
+
repo/Git/npm marketplace
|
|
276
|
+
│
|
|
277
|
+
▼
|
|
278
|
+
versioned cached plugin
|
|
279
|
+
│
|
|
280
|
+
├── bundled skills
|
|
281
|
+
└── bundled stdio pm MCP runtime
|
|
282
|
+
│
|
|
283
|
+
▼
|
|
284
|
+
selected local repo
|
|
285
|
+
│
|
|
286
|
+
▼
|
|
287
|
+
.agents/pm
|
|
288
|
+
|
|
289
|
+
ChatGPT web or public plugin workflow
|
|
290
|
+
|
|
291
|
+
published/shared plugin
|
|
292
|
+
│
|
|
293
|
+
▼
|
|
294
|
+
app/connector mapping
|
|
295
|
+
│
|
|
296
|
+
▼
|
|
297
|
+
HTTPS /mcp or Secure MCP Tunnel
|
|
298
|
+
│
|
|
299
|
+
▼
|
|
300
|
+
authorized backend or customer-controlled host
|
|
301
|
+
│
|
|
302
|
+
▼
|
|
303
|
+
explicitly selected repository and .agents/pm
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
These flows may share action handlers, schemas, and tests. They should not share assumptions about filesystem
|
|
307
|
+
access, process lifetime, authentication, or network reachability.
|
|
308
|
+
|
|
309
|
+
## Track A: Correct Local Codex Plugin
|
|
310
|
+
|
|
311
|
+
### Target package layout
|
|
312
|
+
|
|
313
|
+
```text
|
|
314
|
+
plugins/pm-codex/
|
|
315
|
+
├── .codex-plugin/plugin.json
|
|
316
|
+
├── .mcp.json
|
|
317
|
+
├── README.md
|
|
318
|
+
├── assets/
|
|
319
|
+
│ ├── composer-icon.svg
|
|
320
|
+
│ ├── logo.png
|
|
321
|
+
│ └── logo-dark.png
|
|
322
|
+
├── runtime/
|
|
323
|
+
│ └── pm-mcp-server.mjs
|
|
324
|
+
└── skills/
|
|
325
|
+
├── pm-auditor/
|
|
326
|
+
│ ├── SKILL.md
|
|
327
|
+
│ ├── agents/openai.yaml
|
|
328
|
+
│ └── assets/...
|
|
329
|
+
├── pm-native/...
|
|
330
|
+
└── pm-release/...
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
The exact runtime filename is not important. The invariant is: every file needed after installation exists
|
|
334
|
+
inside the copied plugin archive, uses an archive-relative path, and is versioned with the plugin.
|
|
335
|
+
|
|
336
|
+
### Runtime packaging requirements
|
|
337
|
+
|
|
338
|
+
Preferred implementation:
|
|
339
|
+
|
|
340
|
+
1. Produce a single bundled Node entry point for the stdio MCP server during the normal build/release pipeline.
|
|
341
|
+
2. Put that bundle and every required runtime dependency inside `plugins/pm-codex` before packaging.
|
|
342
|
+
3. Point `.mcp.json` directly at the bundled entry point.
|
|
343
|
+
4. Remove the `@latest` startup fallback from the installed path. An explicit development override may remain,
|
|
344
|
+
but production startup must not silently change versions.
|
|
345
|
+
5. Stamp plugin, marketplace, and runtime metadata from the same package-owned version source.
|
|
346
|
+
6. Make the release gate install the copied plugin in an isolated Codex home with no ancestor repo `dist/`.
|
|
347
|
+
7. Prove the server starts with npm network access unavailable and with `npx` absent from `PATH`.
|
|
348
|
+
|
|
349
|
+
An alternative is a dedicated npm plugin package. The marketplace supports `source: "npm"`, but Codex downloads
|
|
350
|
+
that package without running lifecycle scripts. The published tarball must therefore already contain the plugin
|
|
351
|
+
manifest and runnable bundled server; a post-install build is not a valid design.
|
|
352
|
+
|
|
353
|
+
Pinning the fallback to the plugin version is an acceptable short-term risk reduction, but it is not the target:
|
|
354
|
+
it remains network-dependent and does not provide an offline, self-contained plugin.
|
|
355
|
+
|
|
356
|
+
### Manifest and MCP rules
|
|
357
|
+
|
|
358
|
+
- Keep the stable kebab-case plugin name.
|
|
359
|
+
- Keep paths relative to the plugin root and `./`-prefixed.
|
|
360
|
+
- Include only component fields whose target files exist.
|
|
361
|
+
- Keep real publisher, repository, homepage, license, and install-surface metadata.
|
|
362
|
+
- Use production-ready logo assets for distribution; keep per-skill icons inside each skill archive when declared.
|
|
363
|
+
- Keep `mcpServers: "./.mcp.json"` while the supported runtime and canonical scaffold require it.
|
|
364
|
+
- Do not add `apps` until a real `.app.json` has been generated for a real developer-mode app or connector.
|
|
365
|
+
- Do not add hooks merely to appear more native. Hooks are optional and require separate trust review.
|
|
366
|
+
- Treat `commands/` as unsupported until an official contract and executable test prove otherwise.
|
|
367
|
+
|
|
368
|
+
The current canonical scaffold emits:
|
|
369
|
+
|
|
370
|
+
```json
|
|
371
|
+
{
|
|
372
|
+
"mcpServers": "./.mcp.json"
|
|
373
|
+
}
|
|
374
|
+
```
|
|
375
|
+
|
|
376
|
+
with a companion:
|
|
377
|
+
|
|
378
|
+
```json
|
|
379
|
+
{
|
|
380
|
+
"mcpServers": {
|
|
381
|
+
"pm-mcp": {
|
|
382
|
+
"command": "node",
|
|
383
|
+
"args": ["./runtime/pm-mcp-server.mjs"],
|
|
384
|
+
"env": {
|
|
385
|
+
"PM_AUTHOR": "codex-agent"
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
```
|
|
391
|
+
|
|
392
|
+
Before changing this shape, generate a fresh temporary scaffold with the then-installed `@plugin-creator`, run
|
|
393
|
+
its validator, install the result with the minimum supported Codex version and current Codex version, and record
|
|
394
|
+
the compatibility result.
|
|
395
|
+
|
|
396
|
+
### Marketplace rules
|
|
397
|
+
|
|
398
|
+
The existing repo marketplace location and source path are correct. Preserve:
|
|
399
|
+
|
|
400
|
+
```json
|
|
401
|
+
{
|
|
402
|
+
"name": "pm-local",
|
|
403
|
+
"interface": {
|
|
404
|
+
"displayName": "pm CLI Local"
|
|
405
|
+
},
|
|
406
|
+
"plugins": [
|
|
407
|
+
{
|
|
408
|
+
"name": "pm-codex",
|
|
409
|
+
"source": {
|
|
410
|
+
"source": "local",
|
|
411
|
+
"path": "./plugins/pm-codex"
|
|
412
|
+
},
|
|
413
|
+
"policy": {
|
|
414
|
+
"installation": "AVAILABLE",
|
|
415
|
+
"authentication": "ON_INSTALL"
|
|
416
|
+
},
|
|
417
|
+
"category": "Developer Tools"
|
|
418
|
+
}
|
|
419
|
+
]
|
|
420
|
+
}
|
|
421
|
+
```
|
|
422
|
+
|
|
423
|
+
For external distribution, choose one explicit source:
|
|
424
|
+
|
|
425
|
+
- `git-subdir` with a pinned tag or commit for the plugin subdirectory; or
|
|
426
|
+
- `npm` with a dedicated, already-built plugin package.
|
|
427
|
+
|
|
428
|
+
Do not use a moving branch plus a frozen plugin version, and do not rely on files outside the source archive.
|
|
429
|
+
Use `codex plugin marketplace add`, `list`, and `upgrade`; do not tell users to hand-edit `config.toml`.
|
|
430
|
+
|
|
431
|
+
### Skill and prompt migration
|
|
432
|
+
|
|
433
|
+
For each current command Markdown file:
|
|
434
|
+
|
|
435
|
+
1. Compare it with the existing `pm-native`, `pm-auditor`, and `pm-release` skills.
|
|
436
|
+
2. Delete it when it duplicates a skill.
|
|
437
|
+
3. Otherwise create a properly named skill directory with a complete `SKILL.md`, trigger conditions, and any
|
|
438
|
+
referenced assets/scripts.
|
|
439
|
+
4. Keep instructions scoped. Do not claim unavailable tools or bypass repository `AGENTS.md` rules.
|
|
440
|
+
5. Validate every skill and start a new Codex session before testing discovery.
|
|
441
|
+
|
|
442
|
+
## Track B: Decide the ChatGPT Repository-Access Model
|
|
443
|
+
|
|
444
|
+
The current pm value proposition is local, git-native project management. A ChatGPT web app cannot infer or
|
|
445
|
+
mount a user laptop repository. Before building an Apps SDK server, accept one of these architectures in an ADR.
|
|
446
|
+
|
|
447
|
+
### Option 1: Secure MCP Tunnel to a customer-controlled host
|
|
448
|
+
|
|
449
|
+
Best fit for private development, teams, and enterprise workspaces that want ChatGPT to act on an existing local
|
|
450
|
+
or private repository without publishing the pm server.
|
|
451
|
+
|
|
452
|
+
- Run the pm MCP server on the host that can access the repository.
|
|
453
|
+
- Run OpenAI `tunnel-client` in the same trust boundary.
|
|
454
|
+
- Use an outbound-only OpenAI-hosted tunnel endpoint.
|
|
455
|
+
- Associate the correct Platform organization and ChatGPT workspace.
|
|
456
|
+
- Create a developer-mode app with the Tunnel connection option.
|
|
457
|
+
- Keep the customer-controlled host online while tools are in use.
|
|
458
|
+
|
|
459
|
+
This preserves local filesystem semantics and avoids a new pm storage service. It adds host operations,
|
|
460
|
+
workspace/tunnel permissions, availability, and identity-mapping requirements. It is a strong first ChatGPT
|
|
461
|
+
proof, but it is not by itself a universal public plugin architecture.
|
|
462
|
+
|
|
463
|
+
### Option 2: Hosted multi-tenant MCP service
|
|
464
|
+
|
|
465
|
+
Required if the intended outcome is a universal public plugin whose tools work without a customer-run host.
|
|
466
|
+
|
|
467
|
+
The service needs an explicit repository substrate, for example a GitHub App plus isolated server-side
|
|
468
|
+
workspaces. That is a new product surface, not a packaging tweak. It must define:
|
|
469
|
+
|
|
470
|
+
- repository selection and authorization;
|
|
471
|
+
- checkout, branch, commit, push, and conflict behavior;
|
|
472
|
+
- tenant isolation and path containment;
|
|
473
|
+
- concurrent mutation and locking semantics;
|
|
474
|
+
- storage lifetime and deletion;
|
|
475
|
+
- secret management and OAuth scopes;
|
|
476
|
+
- audit identity and mapping to `PM_AUTHOR`;
|
|
477
|
+
- job limits, process execution, sandboxing, and egress;
|
|
478
|
+
- reconciliation when remote Git changes during a session; and
|
|
479
|
+
- observability, incident response, support, privacy, and data residency.
|
|
480
|
+
|
|
481
|
+
Do not host arbitrary `pm test --run` or package installation in the first public version. Those operations can
|
|
482
|
+
spawn processes or load third-party code and require a substantially stronger sandbox.
|
|
483
|
+
|
|
484
|
+
### Option 3: Skills-only public plugin
|
|
485
|
+
|
|
486
|
+
This can publish pm planning and workflow guidance without a hosted tool backend. It is the smallest public
|
|
487
|
+
artifact, but users would not receive live pm tools in ChatGPT web. The listing must state that limitation
|
|
488
|
+
plainly.
|
|
489
|
+
|
|
490
|
+
### Recommendation
|
|
491
|
+
|
|
492
|
+
1. Finish Track A.
|
|
493
|
+
2. Prove a private ChatGPT developer-mode app through Secure MCP Tunnel.
|
|
494
|
+
3. Use that proof to decide whether a hosted public service creates enough value to justify its security and
|
|
495
|
+
operations scope.
|
|
496
|
+
4. Submit publicly only after the chosen architecture is production-ready.
|
|
497
|
+
|
|
498
|
+
## Track C: Build the MCP-Backed ChatGPT App
|
|
499
|
+
|
|
500
|
+
This track starts only after the ADR above is accepted.
|
|
501
|
+
|
|
502
|
+
### Transport and deployment
|
|
503
|
+
|
|
504
|
+
- Expose MCP on a stable HTTPS `/mcp` endpoint, or through an approved Secure MCP Tunnel.
|
|
505
|
+
- Support low-latency streaming responses, dependable TLS, timeouts, structured logs, metrics, and request IDs.
|
|
506
|
+
- Separate the reusable pm action layer from stdio and HTTP transport adapters.
|
|
507
|
+
- Keep the HTTP adapter stateless where possible; bind repository/user context explicitly per request.
|
|
508
|
+
- Return MCP protocol errors without leaking stack traces, filesystem paths, tokens, or private data.
|
|
509
|
+
- Provide a health/readiness probe outside the MCP tool surface.
|
|
510
|
+
|
|
511
|
+
### Developer-mode app wiring
|
|
512
|
+
|
|
513
|
+
For local app development:
|
|
514
|
+
|
|
515
|
+
1. Enable Developer mode in ChatGPT under Settings → Security and login.
|
|
516
|
+
2. Create a developer-mode app under Settings → Plugins using the reachable `/mcp` endpoint or Tunnel.
|
|
517
|
+
3. Copy the generated ID beginning with `plugin_asdk_app`.
|
|
518
|
+
4. Use the built-in `@plugin-creator` to add `.app.json` and the `apps: "./.app.json"` manifest field.
|
|
519
|
+
5. Install the local marketplace plugin, start a new task, and test both skills and tools.
|
|
520
|
+
|
|
521
|
+
Do not invent an app ID or commit a personal placeholder. For public submission, the portal takes the production
|
|
522
|
+
MCP server URL and scans it directly; it does not accept an existing published ChatGPT app ID as a substitute.
|
|
523
|
+
|
|
524
|
+
### App tool contract
|
|
525
|
+
|
|
526
|
+
Do not expose `pm_run` as the primary public app tool. Start with a small, focused surface.
|
|
527
|
+
|
|
528
|
+
| Tool class | Examples | Required annotation posture |
|
|
529
|
+
|---|---|---|
|
|
530
|
+
| Read-only | context, next, search, list, get, contracts, check-only health/validate | `readOnlyHint: true`, `openWorldHint: false`, `destructiveHint: false` |
|
|
531
|
+
| Reversible private writes | create item, update metadata, add comment, claim, release | `readOnlyHint: false`, normally `openWorldHint: false`, `destructiveHint: false` |
|
|
532
|
+
| Consequential lifecycle writes | close, cancel, dependency changes, bulk changes | write annotations plus explicit confirmation; set `destructiveHint` from the actual reversibility contract |
|
|
533
|
+
| Dangerous or code-executing operations | delete, history redaction, linked-test execution, package install, arbitrary config/schema mutation | exclude from v1 or isolate behind dedicated tools, strict auth, approval, and sandboxing |
|
|
534
|
+
|
|
535
|
+
For every exposed tool:
|
|
536
|
+
|
|
537
|
+
- one user-visible job per tool;
|
|
538
|
+
- precise name and description;
|
|
539
|
+
- closed, typed `inputSchema` where possible;
|
|
540
|
+
- exact `outputSchema` for `structuredContent`;
|
|
541
|
+
- stable machine identifiers in outputs;
|
|
542
|
+
- `readOnlyHint`, `openWorldHint`, and `destructiveHint` that match every possible invocation;
|
|
543
|
+
- `idempotentHint` where true;
|
|
544
|
+
- server-side authorization regardless of hints;
|
|
545
|
+
- compact model-visible content with sensitive/private data kept out; and
|
|
546
|
+
- deterministic errors for missing repositories, stale item versions, ownership conflicts, and invalid state.
|
|
547
|
+
|
|
548
|
+
Split mixed tools. For example, one tool that lists, adds, removes, and runs tests cannot honestly have one set of
|
|
549
|
+
safety annotations. Use separate read and mutation tools or keep that operation out of the app.
|
|
550
|
+
|
|
551
|
+
### UI decision
|
|
552
|
+
|
|
553
|
+
Start tool-only unless a UI materially improves review, comparison, editing, confirmation, or navigation. If a UI
|
|
554
|
+
is justified:
|
|
555
|
+
|
|
556
|
+
- use the MCP Apps standard `_meta.ui.resourceUri` and `ui/*` JSON-RPC bridge by default;
|
|
557
|
+
- serve the component through an MCP resource;
|
|
558
|
+
- return data as `structuredContent` independently of rendering;
|
|
559
|
+
- use `window.openai` only for ChatGPT-specific extensions;
|
|
560
|
+
- declare a minimal CSP and dedicated component origin; and
|
|
561
|
+
- test inline, fullscreen/modal where used, mobile, dark mode, keyboard, and accessibility behavior.
|
|
562
|
+
|
|
563
|
+
## Authentication, Authorization, and Data Protection
|
|
564
|
+
|
|
565
|
+
Anything that exposes customer-specific repository data or write actions should authenticate the user. The
|
|
566
|
+
official Apps SDK flow expects OAuth 2.1 conforming to the MCP authorization specification.
|
|
567
|
+
|
|
568
|
+
Required controls for a hosted app:
|
|
569
|
+
|
|
570
|
+
- publish protected-resource and authorization-server discovery metadata;
|
|
571
|
+
- support authorization-code flow with PKCE `S256`;
|
|
572
|
+
- use Client ID Metadata Documents where supported, with DCR only when needed;
|
|
573
|
+
- include the MCP resource/audience in issued tokens;
|
|
574
|
+
- validate signature, issuer, audience/resource, time bounds, scopes, and app policy on every request;
|
|
575
|
+
- return standards-compliant `401` and `WWW-Authenticate` challenges;
|
|
576
|
+
- request least-privilege scopes and separate read from write scopes;
|
|
577
|
+
- bind repository access to authenticated identity and tenant;
|
|
578
|
+
- reject user-supplied author spoofing;
|
|
579
|
+
- redact tokens, secrets, PII, raw prompts, internal IDs, and debug payloads from responses and logs; and
|
|
580
|
+
- document retention, deletion, support, subprocess, Git, and third-party data behavior.
|
|
581
|
+
|
|
582
|
+
Treat prompt injection as expected input. Validate all paths and arguments server-side, contain repository roots,
|
|
583
|
+
enforce state transitions in pm, and require confirmation for consequential actions. Tool annotations influence
|
|
584
|
+
ChatGPT confirmation UX; they do not replace server authorization.
|
|
585
|
+
|
|
586
|
+
For a tunnel-backed internal app, document the separate Platform tunnel permissions, ChatGPT developer-mode
|
|
587
|
+
permissions, workspace association, host availability, and customer responsibility for the repository host.
|
|
588
|
+
|
|
589
|
+
## Listing, Legal, and Submission Requirements
|
|
590
|
+
|
|
591
|
+
Before public submission, prepare:
|
|
592
|
+
|
|
593
|
+
- verified developer or business identity in the submitting Platform organization;
|
|
594
|
+
- Apps Management write access for the submitter;
|
|
595
|
+
- customer-facing plugin name and descriptions;
|
|
596
|
+
- production logo, category, website, and support URL;
|
|
597
|
+
- an actual privacy policy and terms of service for the shipped service;
|
|
598
|
+
- public production MCP URL and exact authentication details;
|
|
599
|
+
- domain verification at `/.well-known/openai-apps-challenge` when requested;
|
|
600
|
+
- exact content security policy for any UI/network domains;
|
|
601
|
+
- reviewer credentials that do not require MFA, email, SMS, or private-network access;
|
|
602
|
+
- starter prompts;
|
|
603
|
+
- exactly five positive and three negative review test cases;
|
|
604
|
+
- country/region availability; and
|
|
605
|
+
- release notes and accurate policy attestations.
|
|
606
|
+
|
|
607
|
+
The portal scans the production MCP server and tool metadata. Fix every scan result and rescan before submission.
|
|
608
|
+
Approval does not publish automatically; after review, the publisher chooses when to publish. Published
|
|
609
|
+
skills-only, app-only, and app-plus-skills packages appear in the same universal plugin directory.
|
|
610
|
+
|
|
611
|
+
## Verification Matrix
|
|
612
|
+
|
|
613
|
+
### Track A: local plugin gates
|
|
614
|
+
|
|
615
|
+
| Gate | Evidence required |
|
|
616
|
+
|---|---|
|
|
617
|
+
| Manifest/skills | Current built-in `@plugin-creator` validator passes with no missing asset or placeholder errors. |
|
|
618
|
+
| Marketplace | Repo, Git, and/or npm source resolves to the intended plugin root with version and policy metadata. |
|
|
619
|
+
| Cache install | Fresh isolated `CODEX_HOME`; marketplace add; plugin add; installed/enabled status. |
|
|
620
|
+
| Runtime | `codex mcp list` shows the plugin-scoped server; initialize and `tools/list` pass from the cached copy. |
|
|
621
|
+
| Offline | Cached server starts with no repo ancestor, no npm network, and no `npx` fallback. |
|
|
622
|
+
| Version | Manifest, marketplace, bundled runtime, server info, and package release identify the same version. |
|
|
623
|
+
| Skills | Fresh session discovers each skill; explicit and implicit triggers behave as documented. |
|
|
624
|
+
| Unsupported payload | No advertised command or agent asset lacks an ingestion contract and runtime proof. |
|
|
625
|
+
| Platforms | Linux, macOS, and Windows path/process behavior is covered proportionally to supported Codex clients. |
|
|
626
|
+
| Regression | Existing pm MCP calls mutate only a sandbox tracker during automated tests. |
|
|
627
|
+
|
|
628
|
+
### Track C: ChatGPT app gates
|
|
629
|
+
|
|
630
|
+
| Gate | Evidence required |
|
|
631
|
+
|---|---|
|
|
632
|
+
| Handler unit tests | Representative inputs, schema failures, empty results, conflicts, auth failures, and edge cases. |
|
|
633
|
+
| MCP Inspector | List and call every tool; inspect raw requests, responses, components, and errors. |
|
|
634
|
+
| HTTPS/tunnel | Reachable `/mcp`, TLS, streaming, timeouts, health, logs, metrics, and reconnect behavior. |
|
|
635
|
+
| Developer mode | New ChatGPT task selects correct tools for direct, indirect, and negative golden prompts. |
|
|
636
|
+
| API Playground | Raw MCP exchanges and auth challenges match declared schemas. |
|
|
637
|
+
| Permissions | Read/write/destructive confirmations match annotations and workspace policy. |
|
|
638
|
+
| Security | Cross-tenant, path traversal, prompt injection, token, scope, replay, secret, and PII tests. |
|
|
639
|
+
| Output | Every structured result matches `outputSchema`; no private-only payload leaks to model-visible content. |
|
|
640
|
+
| UI, if any | MCP Apps bridge, CSP, origin, accessibility, themes, resizing, state restore, and mobile layouts. |
|
|
641
|
+
| Submission | Portal scan clean; five positive and three negative cases reproducible with reviewer credentials. |
|
|
642
|
+
|
|
643
|
+
### Repository checks for each implementation item
|
|
644
|
+
|
|
645
|
+
At minimum, link and run the checks appropriate to the changed files:
|
|
646
|
+
|
|
647
|
+
```bash
|
|
648
|
+
pnpm build
|
|
649
|
+
node scripts/run-tests.mjs test -- <focused-tests>
|
|
650
|
+
pnpm quality:docs-skills
|
|
651
|
+
pnpm quality:static
|
|
652
|
+
pm validate --check-resolution --check-history-drift
|
|
653
|
+
pm health --check-only
|
|
654
|
+
```
|
|
655
|
+
|
|
656
|
+
Broader runtime, packaging, security, coverage, and release gates are required before distribution or submission.
|
|
657
|
+
|
|
658
|
+
## File-by-File Implementation Sequence
|
|
659
|
+
|
|
660
|
+
No files in this section were changed by the research task.
|
|
661
|
+
|
|
662
|
+
### Phase 0 — architecture decision
|
|
663
|
+
|
|
664
|
+
- Add a `Decision` child under [pm-95d7](../.agents/pm/features/pm-95d7.toon).
|
|
665
|
+
- Select local-only, tunnel-backed private app, hosted public app, or an ordered combination.
|
|
666
|
+
- Define repository identity, storage, authorization, subprocess, Git, and data-retention boundaries.
|
|
667
|
+
- Record explicit non-goals and public-surface claims.
|
|
668
|
+
|
|
669
|
+
### Phase 1 — self-contained Codex runtime
|
|
670
|
+
|
|
671
|
+
Likely files:
|
|
672
|
+
|
|
673
|
+
- `scripts/gen-plugin-mcp-wrappers.mjs` or a replacement bundle generator;
|
|
674
|
+
- build/release scripts that create the plugin runtime;
|
|
675
|
+
- `plugins/pm-codex/.mcp.json`;
|
|
676
|
+
- `plugins/pm-codex/scripts/pm-mcp-server.mjs`;
|
|
677
|
+
- a new plugin-local runtime artifact;
|
|
678
|
+
- cache-layout smoke tests; and
|
|
679
|
+
- package/version synchronization tests.
|
|
680
|
+
|
|
681
|
+
Coordinate shared launcher work with the existing Claude plugin distribution issue rather than duplicating
|
|
682
|
+
fallback logic.
|
|
683
|
+
|
|
684
|
+
### Phase 2 — plugin contract cleanup
|
|
685
|
+
|
|
686
|
+
Likely files:
|
|
687
|
+
|
|
688
|
+
- each `plugins/pm-codex/skills/*/agents/openai.yaml` and its assets;
|
|
689
|
+
- `plugins/pm-codex/commands/*` migrated or removed;
|
|
690
|
+
- `.codex-plugin/plugin.json` metadata and production assets;
|
|
691
|
+
- `plugins/pm-codex/README.md` and `docs/CODEX_PLUGIN.md`; and
|
|
692
|
+
- a dedicated Codex plugin contract test using the built-in validator.
|
|
693
|
+
|
|
694
|
+
### Phase 3 — app-safe tool contract
|
|
695
|
+
|
|
696
|
+
Likely files:
|
|
697
|
+
|
|
698
|
+
- `src/mcp/tool-definitions.ts` or a separate app descriptor projection;
|
|
699
|
+
- shared tool result schemas;
|
|
700
|
+
- a transport-neutral handler layer;
|
|
701
|
+
- focused app-only tools that exclude `pm_run` and unsafe mixed operations; and
|
|
702
|
+
- descriptor/output/annotation contract snapshots.
|
|
703
|
+
|
|
704
|
+
Preserve local MCP compatibility. Do not force the public app surface to expose every local operator command.
|
|
705
|
+
|
|
706
|
+
### Phase 4 — ChatGPT app transport
|
|
707
|
+
|
|
708
|
+
Only after Phase 0 approval:
|
|
709
|
+
|
|
710
|
+
- add an HTTP/tunnel adapter around the shared handler layer;
|
|
711
|
+
- add authenticated repository context resolution;
|
|
712
|
+
- add OAuth/resource metadata when required;
|
|
713
|
+
- add developer-mode app wiring through `@plugin-creator`;
|
|
714
|
+
- add optional MCP UI resources only when justified; and
|
|
715
|
+
- add deploy, observability, security, and incident runbooks appropriate to the chosen architecture.
|
|
716
|
+
|
|
717
|
+
### Phase 5 — distribution and submission
|
|
718
|
+
|
|
719
|
+
- choose pinned Git or prebuilt npm plugin distribution;
|
|
720
|
+
- verify cache installation on supported clients;
|
|
721
|
+
- finalize listing, support, privacy, terms, branding, prompts, and regions;
|
|
722
|
+
- prepare reviewer accounts and eight required cases;
|
|
723
|
+
- scan, remediate, and submit through the Platform portal; and
|
|
724
|
+
- publish only after approval and a final production-head verification.
|
|
725
|
+
|
|
726
|
+
## pm Execution Model
|
|
727
|
+
|
|
728
|
+
The research task created only the parent feature and this documentation child. Create future children only when
|
|
729
|
+
implementation is approved; search all statuses before each creation.
|
|
730
|
+
|
|
731
|
+
Recommended future child types:
|
|
732
|
+
|
|
733
|
+
1. `Decision` — choose local, tunnel, hosted, and public-distribution scope.
|
|
734
|
+
2. `Issue` — make cached Codex installs self-contained and version-coherent.
|
|
735
|
+
3. `Chore` — repair skill assets and migrate unsupported command payload.
|
|
736
|
+
4. `Feature` — add app-safe schemas, annotations, and focused tools.
|
|
737
|
+
5. `Feature` — add the approved ChatGPT MCP transport and authentication model.
|
|
738
|
+
6. `Task` — developer-mode, security, cross-client, and submission verification.
|
|
739
|
+
|
|
740
|
+
For every child:
|
|
741
|
+
|
|
742
|
+
```bash
|
|
743
|
+
pm context --limit 10
|
|
744
|
+
pm search "<exact scope>" --status all --limit 20
|
|
745
|
+
pm create --create-mode progressive --parent pm-95d7 ...
|
|
746
|
+
pm claim <id>
|
|
747
|
+
pm update <id> --status in_progress --message "Start approved implementation"
|
|
748
|
+
pm files <id> --add path=<path>,scope=project,note="<why>"
|
|
749
|
+
pm docs <id> --add path=<path>,scope=project,note="<why>"
|
|
750
|
+
pm test <id> --add command="<sandbox-safe command>",scope=project,timeout_seconds=<n>
|
|
751
|
+
pm comments <id> "Evidence: <exact current-head proof>"
|
|
752
|
+
pm close <id> "<acceptance and verification summary>" --validate-close warn
|
|
753
|
+
pm release <id>
|
|
754
|
+
```
|
|
755
|
+
|
|
756
|
+
Only claim the children actively being edited. Keep the parent open until every accepted track is complete or an
|
|
757
|
+
ADR explicitly removes it from scope.
|
|
758
|
+
|
|
759
|
+
## Definition of Done
|
|
760
|
+
|
|
761
|
+
Do not call the work “fully native ChatGPT/Codex” until all selected claims have matching proof:
|
|
762
|
+
|
|
763
|
+
- **Native Codex plugin:** official validator passes; cached plugin starts its own version-matched server without
|
|
764
|
+
`@latest`; skills and tools load in a fresh session; cross-platform cache tests pass.
|
|
765
|
+
- **ChatGPT-compatible app:** ChatGPT reaches the selected repository through approved HTTPS/tunnel transport;
|
|
766
|
+
auth, schemas, annotations, outputs, permissions, security, and golden prompts pass.
|
|
767
|
+
- **Public plugin:** identity, legal/listing metadata, domain, reviewer tests, portal scan, review, and publication
|
|
768
|
+
are complete on the production artifact.
|
|
769
|
+
- **Documentation:** every supported surface, prerequisite, limitation, install/update path, data boundary, and
|
|
770
|
+
version is described without conflating plugin, app, MCP server, skill, or marketplace.
|
|
771
|
+
|
|
772
|
+
Until then, the accurate short description is:
|
|
773
|
+
|
|
774
|
+
> pm-cli ships a working repo-marketplace Codex plugin whose installed runtime and optional ChatGPT app/public
|
|
775
|
+
> distribution tracks still require the remediation planned in pm-95d7.
|