@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
|
@@ -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/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,41 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 2026.7.12 - 2026-07-12
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
|
|
7
|
+
- Promote plan workflow primitives to the public SDK: plan create/steps/dependencies/decisions/discoveries/validation/materialization ([pm-je50](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-je50.toon))
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
|
|
11
|
+
- Restore 100% SDK workspace read-error coverage ([pm-jw2a](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-jw2a.toon))
|
|
12
|
+
- GH-510: macOS nightly red — withTempPmPath skips realpath canonicalization; init-path-guard probe-root assertion fails (/var vs /private/var) ([pm-dprb](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-dprb.toon))
|
|
13
|
+
- GH-454: schema add-field accepts reserved built-in names silently; collision error names no partner ([pm-b9ov](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-b9ov.toon))
|
|
14
|
+
- GH-516: pm init seeds unrelated managed packages into fresh PM_GLOBAL_PATH workspaces ([pm-b0se](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-b0se.toon))
|
|
15
|
+
- GH-448: boolean custom field is silently never persisted (data-loss class) ([pm-sjfs](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-sjfs.toon))
|
|
16
|
+
- GH-509: pm claim --next lacks candidate filters and race-loss walk — thread next filters + advance to next candidate ([pm-fjxm](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-fjxm.toon))
|
|
17
|
+
- Prevent Decision items from entering agent work lanes by default; allow explicit maintainer opt-in ([pm-eqk0](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-eqk0.toon))
|
|
18
|
+
- GH-513: pm next ready\[\] documented as ranked but not priority-ordered; no rank/score exposed ([pm-1mwk](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-1mwk.toon))
|
|
19
|
+
- Fix red main coverage gate: measure-agent-token-surface.mjs landed without a covering spec ([pm-ksca](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-ksca.toon))
|
|
20
|
+
- GH-508: dedupe LegacyNoneCollectionNormalizer tables duplicated between create.ts and update.ts (CodeFactor) ([pm-zuw8](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-zuw8.toon))
|
|
21
|
+
- Release-readiness guard expects pre-sync version:check command after date-version synchronization ([pm-pmmv](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-pmmv.toon))
|
|
22
|
+
- Restore generated-loader docstrings and redact host path from tracker history ([pm-9ugc](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-9ugc.toon))
|
|
23
|
+
- Full coverage contention times out metadata content-filter integration case ([pm-d30l](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-d30l.toon))
|
|
24
|
+
- GH-453: plan materialize --json response omits title/type/parent on materialized entries ([pm-ypha](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-ypha.toon))
|
|
25
|
+
- GH-452: plan materialize dead-ends on types with required-on-create custom fields ([pm-qd2h](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-qd2h.toon))
|
|
26
|
+
- GH-507: recovery suggested_retry appends <value\> to missing boolean EXTENSION flags (contract arity ignored) ([pm-9qcr](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-9qcr.toon))
|
|
27
|
+
- GH-505: nested extension failures suggest irrelevant missing flags instead of preserving tracker recovery ([pm-o71e](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-o71e.toon))
|
|
28
|
+
- GH-504: importer/exporter registered without options yields an unusable CLI command (no arg/flag contracts) ([pm-0mjz](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-0mjz.toon))
|
|
29
|
+
- GH-503: flattened extension-command aliases (csv-export, jira-sync) drop option contracts ([pm-s9iu](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/issues/pm-s9iu.toon))
|
|
30
|
+
|
|
31
|
+
### Other
|
|
32
|
+
|
|
33
|
+
- CI/CD + test-suite performance: in-process CLI runner and dedupe redundant matrix legs ([pm-7rlp](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-7rlp.toon))
|
|
34
|
+
- Coverage to 100%: src/core, src/mcp, and src/sdk modules ([pm-krwu](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-krwu.toon))
|
|
35
|
+
- Baseline agent token cost of the CLI surface: measure pm --help, per-command help, and contracts payload sizes before consolidation ([pm-a22j](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-a22j.toon))
|
|
36
|
+
- Research and document the July 2026 native ChatGPT/Codex plugin implementation plan ([pm-n28t](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-n28t.toon))
|
|
37
|
+
- Align all plugin and package manifests to date-based versioning with release-time sync ([pm-hxsv](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-hxsv.toon))
|
|
38
|
+
|
|
3
39
|
## 2026.7.11 - 2026-07-11
|
|
4
40
|
|
|
5
41
|
### Added
|
|
@@ -587,7 +623,6 @@
|
|
|
587
623
|
- ADR: literal all-src coverage supersedes curated include/exclude allowlist ([pm-w13j](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/decisions/pm-w13j.toon))
|
|
588
624
|
- Literal 100% all-source test coverage & module-mirrored test reorganization ([pm-xau3](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/epics/pm-xau3.toon))
|
|
589
625
|
- Coverage to 100%: packages, plugins, and docs examples ([pm-6tch](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-6tch.toon))
|
|
590
|
-
- Coverage to 100%: src/core, src/mcp, and src/sdk modules ([pm-krwu](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-krwu.toon))
|
|
591
626
|
- Coverage to 100%: src/cli command handlers (group B — query, search, calendar, test, init, extension) ([pm-7v9s](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-7v9s.toon))
|
|
592
627
|
- Coverage to 100%: src/cli command handlers (group A — mutation, history, storage, schema) ([pm-ud1x](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-ud1x.toon))
|
|
593
628
|
- Coverage to 100%: src/cli infrastructure (registration, bootstrap, help, main) ([pm-uvxc](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-uvxc.toon))
|
|
@@ -1076,7 +1111,6 @@
|
|
|
1076
1111
|
- Calendar + SDK + vector-search + docs review (2026-05-27) ([pm-a0w4](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-a0w4.toon))
|
|
1077
1112
|
- Code-quality & dead/duplicate code audit (2026-05-27) ([pm-jvbt](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-jvbt.toon))
|
|
1078
1113
|
- Keep large modules maintainable via barrel re-export splits + explicit uncovered allowlist ([pm-3cbk](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/decisions/pm-3cbk.toon))
|
|
1079
|
-
- CI/CD + test-suite performance: in-process CLI runner and dedupe redundant matrix legs ([pm-7rlp](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-7rlp.toon))
|
|
1080
1114
|
- Bump @sentry/node 10.53.1 to 10.54.0 ([pm-0g2p](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-0g2p.toon))
|
|
1081
1115
|
- Dedupe history-redact + history-repair lock+ownership scaffolding ([pm-kbm9](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/chores/pm-kbm9.toon))
|
|
1082
1116
|
- Agent-UX combined PR: compact mutation output (pm-ch59) + smarter unknown-flag recovery (pm-8nyc) ([pm-70mi](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/plans/pm-70mi.toon))
|
package/README.md
CHANGED
|
@@ -27,8 +27,6 @@
|
|
|
27
27
|
| Settings, storage, search, and output | [Configuration](docs/CONFIGURATION.md) |
|
|
28
28
|
| Safe test execution and linked tests | [Testing](docs/TESTING.md) |
|
|
29
29
|
| Package and extension authoring | [Packages and Extensions](docs/EXTENSIONS.md) and [SDK](docs/SDK.md) |
|
|
30
|
-
| Codex native integration | [Codex Plugin](docs/CODEX_PLUGIN.md) |
|
|
31
|
-
| Claude Code native integration | [Claude Code Plugin](docs/CLAUDE_CODE_PLUGIN.md) |
|
|
32
30
|
| Maintainer release process (daily auto-release + local parity) | [Releasing](docs/RELEASING.md) |
|
|
33
31
|
| Contributor internals | [Architecture](docs/ARCHITECTURE.md) |
|
|
34
32
|
|
|
@@ -54,14 +52,6 @@ Project-local invocation also works:
|
|
|
54
52
|
npx --yes @unbrained/pm-cli@latest --help
|
|
55
53
|
```
|
|
56
54
|
|
|
57
|
-
For Claude Code, install the native plugin (no `pm` CLI required):
|
|
58
|
-
|
|
59
|
-
```
|
|
60
|
-
/plugin install pm-claude@pm
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
This registers 28 MCP tools, 5 workflow skills, 14 slash commands, 4 subagents, hybrid TUI tracking, and a session-start context hook — all without shelling out to the `pm` CLI.
|
|
64
|
-
|
|
65
55
|
`pm` packages use the same package-first vocabulary:
|
|
66
56
|
|
|
67
57
|
```bash
|
|
@@ -115,15 +105,6 @@ If no relevant item exists, create a parent lineage before child work, claim the
|
|
|
115
105
|
|
|
116
106
|
For token-aware local routing, install `guide-shell` with `pm install guide-shell --project`, then use `pm guide workflows` and drill into related topics (`commands`, `skills`, `release`) only when needed.
|
|
117
107
|
|
|
118
|
-
## Release Automation
|
|
119
|
-
|
|
120
|
-
- Daily release preparation runs in `.github/workflows/auto-release.yml`.
|
|
121
|
-
- Tag-driven publishing remains in `.github/workflows/release.yml`.
|
|
122
|
-
- Local parity commands:
|
|
123
|
-
- `pnpm release:pipeline:dry-run`
|
|
124
|
-
- `pnpm release:pipeline`
|
|
125
|
-
- run maintainer-only reliability checks separately and keep their raw details in ignored local notes
|
|
126
|
-
|
|
127
108
|
## Core Model
|
|
128
109
|
|
|
129
110
|
- Items live under `.agents/pm/` as TOON by default, with JSON-front-matter markdown also supported.
|
|
@@ -136,20 +117,6 @@ For token-aware local routing, install `guide-shell` with `pm install guide-shel
|
|
|
136
117
|
|
|
137
118
|
Search behavior (lexical `search.tuning` weights, hybrid `--semantic-weight`, query expansion, reranking, and vector-store options) is fully configurable — see [Search Configuration](docs/CONFIGURATION.md#search-configuration).
|
|
138
119
|
|
|
139
|
-
## Tracker References
|
|
140
|
-
|
|
141
|
-
Current documentation work is tracked through:
|
|
142
|
-
|
|
143
|
-
- [pm-u9d0](.agents/pm/epics/pm-u9d0.toon) - docs, onboarding, release, and CI capability epic
|
|
144
|
-
|
|
145
|
-
Legacy documentation baseline references (closed):
|
|
146
|
-
|
|
147
|
-
- [pm-3042](.agents/pm/epics/pm-3042.toon) - documentation overhaul epic (closed)
|
|
148
|
-
- [pm-r9gu](.agents/pm/features/pm-r9gu.toon) - documentation structure feature (closed)
|
|
149
|
-
- [pm-1sb2](.agents/pm/tasks/pm-1sb2.toon) - README and public docs rewrite task (closed)
|
|
150
|
-
|
|
151
|
-
Docs should link to relevant `pm` items, and `pm` items should link back to changed docs through `pm docs`.
|
|
152
|
-
|
|
153
120
|
## License
|
|
154
121
|
|
|
155
122
|
[MIT](LICENSE)
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { GlobalOptions } from "../../core/shared/command-types.js";
|
|
2
2
|
import { type NextRecommendation, type NextOptions } from "./next.js";
|
|
3
|
+
/** Stable warning/error code for an exhausted atomic next-work walk. */
|
|
4
|
+
export declare const NO_AVAILABLE_NEXT_ITEM_CODE = "no_available_next_item";
|
|
3
5
|
/** Documents the claim result payload exchanged by command, SDK, and package integrations. */
|
|
4
6
|
export interface ClaimResult {
|
|
5
7
|
/** Value that configures or reports item for this contract. */
|
|
@@ -16,12 +18,37 @@ export interface ClaimResult {
|
|
|
16
18
|
warnings?: string[];
|
|
17
19
|
}
|
|
18
20
|
/** Result of atomically selecting and claiming the next caller-available item. */
|
|
19
|
-
export interface
|
|
21
|
+
export interface ClaimNextAvailableResult extends ClaimResult {
|
|
22
|
+
/** True when an actionable candidate was claimed. */
|
|
23
|
+
available: true;
|
|
20
24
|
/** Value that configures or reports recommendation for this contract. */
|
|
21
25
|
recommendation: NextRecommendation;
|
|
22
26
|
/** Value that configures or reports attempts for this contract. */
|
|
23
27
|
attempts: number;
|
|
24
28
|
}
|
|
29
|
+
/** Non-error empty result returned when an if-available candidate walk is exhausted. */
|
|
30
|
+
export interface ClaimNextUnavailableResult {
|
|
31
|
+
/** Indicates that no candidate remained claimable. */
|
|
32
|
+
available: false;
|
|
33
|
+
/** Empty item projection for a deliberately unavailable selection. */
|
|
34
|
+
item: null;
|
|
35
|
+
/** Caller identity that attempted the selection. */
|
|
36
|
+
claimed_by: string;
|
|
37
|
+
/** No previous owner exists for an empty selection. */
|
|
38
|
+
previous_assignee: null;
|
|
39
|
+
/** Whether forced selection was requested. */
|
|
40
|
+
forced: boolean;
|
|
41
|
+
/** Signals a deliberate non-error skip. */
|
|
42
|
+
skipped: true;
|
|
43
|
+
/** No recommendation survived the bounded walk. */
|
|
44
|
+
recommendation: null;
|
|
45
|
+
/** Number of ranked candidates attempted. */
|
|
46
|
+
attempts: number;
|
|
47
|
+
/** Stable machine-readable exhaustion warning. */
|
|
48
|
+
warnings: [typeof NO_AVAILABLE_NEXT_ITEM_CODE];
|
|
49
|
+
}
|
|
50
|
+
/** Result of a successful or deliberately empty atomic next-work claim. */
|
|
51
|
+
export type ClaimNextResult = ClaimNextAvailableResult | ClaimNextUnavailableResult;
|
|
25
52
|
/** Returns whether a failed claim lost the atomic test-and-set race. */
|
|
26
53
|
export declare function isAlreadyClaimedError(error: unknown): boolean;
|
|
27
54
|
type ClaimRunner = (id: string, force: boolean, global: GlobalOptions, options: ClaimMutationOptions) => Promise<ClaimResult>;
|
|
@@ -46,6 +73,8 @@ export interface ClaimMutationOptions {
|
|
|
46
73
|
message?: string;
|
|
47
74
|
/** Value that configures or reports if available for this contract. */
|
|
48
75
|
ifAvailable?: boolean;
|
|
76
|
+
/** Maximum ranked candidates attempted by `claim --next`. */
|
|
77
|
+
maxAttempts?: string | number;
|
|
49
78
|
}
|
|
50
79
|
/** Documents the release mutation options payload exchanged by command, SDK, and package integrations. */
|
|
51
80
|
export interface ReleaseMutationOptions extends ClaimMutationOptions {
|
|
@@ -56,6 +85,8 @@ export interface ReleaseMutationOptions extends ClaimMutationOptions {
|
|
|
56
85
|
export declare function runClaim(id: string, force: boolean, global: GlobalOptions, options?: ClaimMutationOptions): Promise<ClaimResult>;
|
|
57
86
|
/** Selects ranked actionable work and claims the first candidate still available under the item lock. Conflicts caused by parallel claimers advance to the next candidate instead of returning a thundering-herd failure. */
|
|
58
87
|
export declare function runClaimNext(force: boolean, global: GlobalOptions, options?: ClaimMutationOptions, nextOptions?: NextOptions): Promise<ClaimNextResult>;
|
|
88
|
+
/** Parses the bounded candidate walk used by `claim --next`. */
|
|
89
|
+
export declare function parseClaimNextAttempts(raw: string | number | undefined): number;
|
|
59
90
|
/** Claims the first still-available row from a pre-ranked recommendation set. */
|
|
60
91
|
export declare function claimNextFromRecommendations(recommendations: NextRecommendation[], force: boolean, global: GlobalOptions, options?: ClaimMutationOptions, claimRunner?: ClaimRunner): Promise<ClaimNextResult>;
|
|
61
92
|
/** Implements run release for the public runtime surface of this module. */
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Implements the pm claim command surface and its agent-facing runtime behavior.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="
|
|
7
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="c0e18740-ab85-5611-94aa-3e49751f63d0")}catch(e){}}();
|
|
8
8
|
import { pathExists } from "../../core/fs/fs-utils.js";
|
|
9
9
|
import { resolveRuntimeStatusRegistry, statusIsTerminal, } from "../../core/schema/runtime-schema.js";
|
|
10
10
|
import { EXIT_CODE } from "../../core/shared/constants.js";
|
|
@@ -16,6 +16,8 @@ import { readSettings } from "../../core/store/settings.js";
|
|
|
16
16
|
import { resolveAuthor } from "../../core/shared/author.js";
|
|
17
17
|
import { wrapOwnershipConflict } from "./annotation-command.js";
|
|
18
18
|
import { runNext } from "./next.js";
|
|
19
|
+
/** Stable warning/error code for an exhausted atomic next-work walk. */
|
|
20
|
+
export const NO_AVAILABLE_NEXT_ITEM_CODE = "no_available_next_item";
|
|
19
21
|
/** Returns whether a failed claim lost the atomic test-and-set race. */
|
|
20
22
|
export function isAlreadyClaimedError(error) {
|
|
21
23
|
return (error instanceof PmCliError && error.context?.code === "already_claimed_by");
|
|
@@ -85,27 +87,44 @@ export async function runClaim(id, force, global, options = {}) {
|
|
|
85
87
|
}
|
|
86
88
|
/** Selects ranked actionable work and claims the first candidate still available under the item lock. Conflicts caused by parallel claimers advance to the next candidate instead of returning a thundering-herd failure. */
|
|
87
89
|
export async function runClaimNext(force, global, options = {}, nextOptions = {}) {
|
|
88
|
-
const
|
|
90
|
+
const maxAttempts = parseClaimNextAttempts(options.maxAttempts);
|
|
91
|
+
const settings = await readSettings(resolvePmRoot(process.cwd(), global.path));
|
|
92
|
+
const claimOptions = {
|
|
93
|
+
...options,
|
|
94
|
+
author: resolveAuthor(options.author, settings.author_default),
|
|
95
|
+
};
|
|
96
|
+
const next = await runNext({
|
|
97
|
+
...nextOptions,
|
|
98
|
+
callerAuthor: claimOptions.author,
|
|
99
|
+
limit: String(maxAttempts),
|
|
100
|
+
}, global);
|
|
89
101
|
const recommendations = [next.recommended, ...next.ready]
|
|
90
102
|
.filter((entry) => entry !== null)
|
|
91
103
|
.map((entry) => ({
|
|
92
104
|
...entry,
|
|
93
105
|
reasons: "reasons" in entry ? entry.reasons : ["ranked ready candidate"],
|
|
94
106
|
}));
|
|
95
|
-
return claimNextFromRecommendations(recommendations, force, global,
|
|
107
|
+
return claimNextFromRecommendations(recommendations.slice(0, maxAttempts), force, global, claimOptions);
|
|
108
|
+
}
|
|
109
|
+
/** Parses the bounded candidate walk used by `claim --next`. */
|
|
110
|
+
export function parseClaimNextAttempts(raw) {
|
|
111
|
+
if (raw === undefined)
|
|
112
|
+
return 10;
|
|
113
|
+
const parsed = Number(raw);
|
|
114
|
+
if (!Number.isSafeInteger(parsed) || parsed < 1 || parsed > 100) {
|
|
115
|
+
throw new PmCliError("--max-attempts must be an integer from 1 to 100", EXIT_CODE.USAGE);
|
|
116
|
+
}
|
|
117
|
+
return parsed;
|
|
96
118
|
}
|
|
97
119
|
/** Claims the first still-available row from a pre-ranked recommendation set. */
|
|
98
120
|
export async function claimNextFromRecommendations(recommendations, force, global, options = {}, claimRunner = runClaim) {
|
|
99
121
|
let attempts = 0;
|
|
100
|
-
let lastSkipped;
|
|
101
122
|
for (const recommendation of recommendations) {
|
|
102
123
|
attempts += 1;
|
|
103
124
|
try {
|
|
104
125
|
const claimed = await claimRunner(recommendation.id, force, global, options);
|
|
105
|
-
const result = { ...claimed, recommendation, attempts };
|
|
106
|
-
if (claimed.skipped)
|
|
107
|
-
lastSkipped = result;
|
|
108
|
-
else
|
|
126
|
+
const result = { ...claimed, recommendation, attempts, available: true };
|
|
127
|
+
if (!claimed.skipped)
|
|
109
128
|
return result;
|
|
110
129
|
}
|
|
111
130
|
catch (error) {
|
|
@@ -113,13 +132,31 @@ export async function claimNextFromRecommendations(recommendations, force, globa
|
|
|
113
132
|
throw error;
|
|
114
133
|
}
|
|
115
134
|
}
|
|
116
|
-
if (
|
|
117
|
-
return
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
135
|
+
if (options.ifAvailable === true) {
|
|
136
|
+
return {
|
|
137
|
+
available: false,
|
|
138
|
+
item: null,
|
|
139
|
+
claimed_by: options.author ?? process.env.PM_AUTHOR ?? "unknown",
|
|
140
|
+
previous_assignee: null,
|
|
141
|
+
forced: force,
|
|
142
|
+
skipped: true,
|
|
143
|
+
recommendation: null,
|
|
144
|
+
attempts,
|
|
145
|
+
warnings: [NO_AVAILABLE_NEXT_ITEM_CODE],
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
const noCandidatesMatched = attempts === 0;
|
|
149
|
+
throw new PmCliError(noCandidatesMatched
|
|
150
|
+
? "No actionable items matched the selection filters"
|
|
151
|
+
: "No actionable item remained available to claim", noCandidatesMatched ? EXIT_CODE.NOT_FOUND : EXIT_CODE.CONFLICT, {
|
|
152
|
+
code: NO_AVAILABLE_NEXT_ITEM_CODE,
|
|
153
|
+
why: noCandidatesMatched
|
|
154
|
+
? "No ready items matched the specified filters or selection criteria."
|
|
155
|
+
: "Every ranked candidate was claimed by another agent before this atomic selection completed.",
|
|
121
156
|
nextSteps: [
|
|
122
|
-
|
|
157
|
+
noCandidatesMatched
|
|
158
|
+
? "Verify the filters or run pm next to inspect all ready work."
|
|
159
|
+
: "Run pm claim --next again to refresh the ranked candidate set.",
|
|
123
160
|
],
|
|
124
161
|
});
|
|
125
162
|
}
|
|
@@ -174,4 +211,4 @@ export async function runRelease(id, force, global, options = {}) {
|
|
|
174
211
|
};
|
|
175
212
|
}
|
|
176
213
|
//# sourceMappingURL=claim.js.map
|
|
177
|
-
//# debugId=
|
|
214
|
+
//# debugId=c0e18740-ab85-5611-94aa-3e49751f63d0
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claim.js","sources":["cli/commands/claim.ts"],"sourceRoot":"/","sourcesContent":["/**\n * @module cli/commands/claim\n *\n * Implements the pm claim command surface and its agent-facing runtime behavior.\n */\nimport { pathExists } from \"../../core/fs/fs-utils.js\";\nimport {\n resolveRuntimeStatusRegistry,\n statusIsTerminal,\n} from \"../../core/schema/runtime-schema.js\";\nimport { EXIT_CODE } from \"../../core/shared/constants.js\";\nimport type { GlobalOptions } from \"../../core/shared/command-types.js\";\nimport { PmCliError } from \"../../core/shared/errors.js\";\nimport { toItemRecord } from \"../../core/item/item-record.js\";\nimport { mutateItem } from \"../../core/store/item-store.js\";\nimport { getSettingsPath, resolvePmRoot } from \"../../core/store/paths.js\";\nimport { readSettings } from \"../../core/store/settings.js\";\nimport { resolveAuthor } from \"../../core/shared/author.js\";\nimport { wrapOwnershipConflict } from \"./annotation-command.js\";\nimport { runNext, type NextRecommendation, type NextOptions } from \"./next.js\";\n\n/** Documents the claim result payload exchanged by command, SDK, and package integrations. */\nexport interface ClaimResult {\n /** Value that configures or reports item for this contract. */\n item: Record<string, unknown>;\n /** Value that configures or reports claimed by for this contract. */\n claimed_by: string;\n /** Value that configures or reports previous assignee for this contract. */\n previous_assignee: string | null;\n /** Value that configures or reports forced for this contract. */\n forced: boolean;\n /** Value that configures or reports skipped for this contract. */\n skipped?: boolean;\n /** Value that configures or reports warnings for this contract. */\n warnings?: string[];\n}\n\n/** Result of atomically selecting and claiming the next caller-available item. */\nexport interface ClaimNextResult extends ClaimResult {\n /** Value that configures or reports recommendation for this contract. */\n recommendation: NextRecommendation;\n /** Value that configures or reports attempts for this contract. */\n attempts: number;\n}\n\n/** Returns whether a failed claim lost the atomic test-and-set race. */\nexport function isAlreadyClaimedError(error: unknown): boolean {\n return (\n error instanceof PmCliError && error.context?.code === \"already_claimed_by\"\n );\n}\n\ntype ClaimRunner = (\n id: string,\n force: boolean,\n global: GlobalOptions,\n options: ClaimMutationOptions,\n) => Promise<ClaimResult>;\n\n/** Documents the release result payload exchanged by command, SDK, and package integrations. */\nexport interface ReleaseResult {\n /** Value that configures or reports item for this contract. */\n item: Record<string, unknown>;\n /** Value that configures or reports released by for this contract. */\n released_by: string;\n /** Value that configures or reports previous assignee for this contract. */\n previous_assignee: string | null;\n /** Value that configures or reports audit release for this contract. */\n audit_release: boolean;\n /** Value that configures or reports forced for this contract. */\n forced: boolean;\n}\n\n/** Documents the claim mutation options payload exchanged by command, SDK, and package integrations. */\nexport interface ClaimMutationOptions {\n /** Value that configures or reports author for this contract. */\n author?: string;\n /** Human-readable explanation suitable for logs and agent-facing output. */\n message?: string;\n /** Value that configures or reports if available for this contract. */\n ifAvailable?: boolean;\n}\n\n/** Documents the release mutation options payload exchanged by command, SDK, and package integrations. */\nexport interface ReleaseMutationOptions extends ClaimMutationOptions {\n /** Value that configures or reports allow audit release for this contract. */\n allowAuditRelease?: boolean;\n}\n\n/** Implements run claim for the public runtime surface of this module. */\nexport async function runClaim(\n id: string,\n force: boolean,\n global: GlobalOptions,\n options: ClaimMutationOptions = {},\n): Promise<ClaimResult> {\n const pmRoot = resolvePmRoot(process.cwd(), global.path);\n if (!(await pathExists(getSettingsPath(pmRoot)))) {\n throw new PmCliError(\n `Tracker is not initialized at ${pmRoot}. Run pm init first.`,\n EXIT_CODE.NOT_FOUND,\n );\n }\n const settings = await readSettings(pmRoot);\n const statusRegistry = resolveRuntimeStatusRegistry(settings.schema);\n const author = resolveAuthor(options.author, settings.author_default);\n let previousAssignee: string | null = null;\n let skipped = false;\n const mutationWarnings: string[] = [];\n\n const result = await mutateItem({\n pmRoot,\n settings,\n id,\n op: \"claim\",\n author,\n message: options.message,\n force,\n skipNoop: true,\n mutate(document) {\n const currentAssignee = document.metadata.assignee;\n const currentAssigneeText =\n typeof currentAssignee === \"string\" ? currentAssignee : \"\";\n previousAssignee =\n currentAssigneeText.trim().length > 0 ? currentAssigneeText : null;\n if (\n statusIsTerminal(document.metadata.status, statusRegistry) &&\n !force\n ) {\n throw new PmCliError(\n `Cannot claim terminal item ${document.metadata.id} without --force`,\n EXIT_CODE.CONFLICT,\n );\n }\n const heldByOther =\n previousAssignee !== null && previousAssignee !== author;\n if (heldByOther && options.ifAvailable === true) {\n skipped = true;\n mutationWarnings.push(`claim_skipped_held_by:${previousAssignee}`);\n return { changedFields: [] };\n }\n if (heldByOther && !force) {\n throw new PmCliError(\n `Item ${document.metadata.id} is already claimed by ${previousAssignee}. Use --force to take over, or --if-available to skip without failing.`,\n EXIT_CODE.CONFLICT,\n {\n code: \"already_claimed_by\",\n why: \"Claim is an atomic test-and-set so parallel agents never proceed believing they own the same item.\",\n nextSteps: [\n \"Run pm next to pick a different unclaimed item.\",\n \"Re-run with --if-available to treat a held item as a no-op skip.\",\n \"Re-run with --force only when taking over the item is coordinated.\",\n ],\n },\n );\n }\n if (heldByOther) {\n mutationWarnings.push(`claim_takeover:${previousAssignee}->${author}`);\n }\n document.metadata.assignee = author;\n return { changedFields: [\"assignee\"], warnings: mutationWarnings };\n },\n });\n\n return {\n item: toItemRecord(result.item),\n claimed_by:\n skipped && previousAssignee !== null ? previousAssignee : author,\n previous_assignee: previousAssignee,\n forced: force,\n ...(skipped ? { skipped: true } : {}),\n ...(mutationWarnings.length > 0 ? { warnings: mutationWarnings } : {}),\n };\n}\n\n/** Selects ranked actionable work and claims the first candidate still available under the item lock. Conflicts caused by parallel claimers advance to the next candidate instead of returning a thundering-herd failure. */\nexport async function runClaimNext(\n force: boolean,\n global: GlobalOptions,\n options: ClaimMutationOptions = {},\n nextOptions: NextOptions = {},\n): Promise<ClaimNextResult> {\n const next = await runNext(\n { ...nextOptions, callerAuthor: options.author, limit: \"10\" },\n global,\n );\n const recommendations = [next.recommended, ...next.ready]\n .filter((entry): entry is NextRecommendation => entry !== null)\n .map((entry) => ({\n ...entry,\n reasons: \"reasons\" in entry ? entry.reasons : [\"ranked ready candidate\"],\n }));\n return claimNextFromRecommendations(recommendations, force, global, options);\n}\n\n/** Claims the first still-available row from a pre-ranked recommendation set. */\nexport async function claimNextFromRecommendations(\n recommendations: NextRecommendation[],\n force: boolean,\n global: GlobalOptions,\n options: ClaimMutationOptions = {},\n claimRunner: ClaimRunner = runClaim,\n): Promise<ClaimNextResult> {\n let attempts = 0;\n let lastSkipped: ClaimNextResult | undefined;\n for (const recommendation of recommendations) {\n attempts += 1;\n try {\n const claimed = await claimRunner(\n recommendation.id,\n force,\n global,\n options,\n );\n const result = { ...claimed, recommendation, attempts };\n if (claimed.skipped) lastSkipped = result;\n else return result;\n } catch (error: unknown) {\n if (!isAlreadyClaimedError(error)) throw error;\n }\n }\n if (lastSkipped) return lastSkipped;\n throw new PmCliError(\n \"No actionable item remained available to claim\",\n EXIT_CODE.CONFLICT,\n {\n code: \"no_available_next_item\",\n why: \"Every ranked candidate was claimed by another agent before this atomic selection completed.\",\n nextSteps: [\n \"Run pm claim --next again to refresh the ranked candidate set.\",\n ],\n },\n );\n}\n\n/** Implements run release for the public runtime surface of this module. */\nexport async function runRelease(\n id: string,\n force: boolean,\n global: GlobalOptions,\n options: ReleaseMutationOptions = {},\n): Promise<ReleaseResult> {\n const pmRoot = resolvePmRoot(process.cwd(), global.path);\n if (!(await pathExists(getSettingsPath(pmRoot)))) {\n throw new PmCliError(\n `Tracker is not initialized at ${pmRoot}. Run pm init first.`,\n EXIT_CODE.NOT_FOUND,\n );\n }\n const settings = await readSettings(pmRoot);\n const author = resolveAuthor(options.author, settings.author_default);\n let previousAssignee: string | null = null;\n\n let result: Awaited<ReturnType<typeof mutateItem>>;\n try {\n result = await mutateItem({\n pmRoot,\n settings,\n id,\n op: \"release\",\n author,\n message: options.message,\n force,\n bypassAssigneeConflict: Boolean(options.allowAuditRelease),\n mutate(document) {\n previousAssignee = document.metadata.assignee ?? null;\n if (!previousAssignee) {\n return { changedFields: [] };\n }\n delete document.metadata.assignee;\n return { changedFields: [\"assignee\"] };\n },\n });\n } catch (error: unknown) {\n wrapOwnershipConflict(error, {\n required:\n \"For audited non-owner handoffs, prefer --allow-audit-release before considering --force.\",\n examples: [\n 'pm release pm-a1b2 --author \"reviewer\" --allow-audit-release',\n ],\n nextSteps: [\n \"Use --allow-audit-release for append-only release handoffs that only clear assignee metadata.\",\n \"Use --force only when an explicit override is approved for broader ownership conflicts.\",\n ],\n });\n }\n\n return {\n item: toItemRecord(result.item),\n released_by: author,\n previous_assignee: previousAssignee,\n audit_release: options.allowAuditRelease === true,\n forced: force,\n };\n}\n"],"names":[],"mappings":"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","debugId":"de297ba8-c57e-5d25-8e88-8df02a74d5c6"}
|
|
1
|
+
{"version":3,"file":"claim.js","sources":["cli/commands/claim.ts"],"sourceRoot":"/","sourcesContent":["/**\n * @module cli/commands/claim\n *\n * Implements the pm claim command surface and its agent-facing runtime behavior.\n */\nimport { pathExists } from \"../../core/fs/fs-utils.js\";\nimport {\n resolveRuntimeStatusRegistry,\n statusIsTerminal,\n} from \"../../core/schema/runtime-schema.js\";\nimport { EXIT_CODE } from \"../../core/shared/constants.js\";\nimport type { GlobalOptions } from \"../../core/shared/command-types.js\";\nimport { PmCliError } from \"../../core/shared/errors.js\";\nimport { toItemRecord } from \"../../core/item/item-record.js\";\nimport { mutateItem } from \"../../core/store/item-store.js\";\nimport { getSettingsPath, resolvePmRoot } from \"../../core/store/paths.js\";\nimport { readSettings } from \"../../core/store/settings.js\";\nimport { resolveAuthor } from \"../../core/shared/author.js\";\nimport { wrapOwnershipConflict } from \"./annotation-command.js\";\nimport { runNext, type NextRecommendation, type NextOptions } from \"./next.js\";\n\n/** Stable warning/error code for an exhausted atomic next-work walk. */\nexport const NO_AVAILABLE_NEXT_ITEM_CODE = \"no_available_next_item\";\n\n/** Documents the claim result payload exchanged by command, SDK, and package integrations. */\nexport interface ClaimResult {\n /** Value that configures or reports item for this contract. */\n item: Record<string, unknown>;\n /** Value that configures or reports claimed by for this contract. */\n claimed_by: string;\n /** Value that configures or reports previous assignee for this contract. */\n previous_assignee: string | null;\n /** Value that configures or reports forced for this contract. */\n forced: boolean;\n /** Value that configures or reports skipped for this contract. */\n skipped?: boolean;\n /** Value that configures or reports warnings for this contract. */\n warnings?: string[];\n}\n\n/** Result of atomically selecting and claiming the next caller-available item. */\nexport interface ClaimNextAvailableResult extends ClaimResult {\n /** True when an actionable candidate was claimed. */\n available: true;\n /** Value that configures or reports recommendation for this contract. */\n recommendation: NextRecommendation;\n /** Value that configures or reports attempts for this contract. */\n attempts: number;\n}\n\n/** Non-error empty result returned when an if-available candidate walk is exhausted. */\nexport interface ClaimNextUnavailableResult {\n /** Indicates that no candidate remained claimable. */\n available: false;\n /** Empty item projection for a deliberately unavailable selection. */\n item: null;\n /** Caller identity that attempted the selection. */\n claimed_by: string;\n /** No previous owner exists for an empty selection. */\n previous_assignee: null;\n /** Whether forced selection was requested. */\n forced: boolean;\n /** Signals a deliberate non-error skip. */\n skipped: true;\n /** No recommendation survived the bounded walk. */\n recommendation: null;\n /** Number of ranked candidates attempted. */\n attempts: number;\n /** Stable machine-readable exhaustion warning. */\n warnings: [typeof NO_AVAILABLE_NEXT_ITEM_CODE];\n}\n\n/** Result of a successful or deliberately empty atomic next-work claim. */\nexport type ClaimNextResult =\n | ClaimNextAvailableResult\n | ClaimNextUnavailableResult;\n\n/** Returns whether a failed claim lost the atomic test-and-set race. */\nexport function isAlreadyClaimedError(error: unknown): boolean {\n return (\n error instanceof PmCliError && error.context?.code === \"already_claimed_by\"\n );\n}\n\ntype ClaimRunner = (\n id: string,\n force: boolean,\n global: GlobalOptions,\n options: ClaimMutationOptions,\n) => Promise<ClaimResult>;\n\n/** Documents the release result payload exchanged by command, SDK, and package integrations. */\nexport interface ReleaseResult {\n /** Value that configures or reports item for this contract. */\n item: Record<string, unknown>;\n /** Value that configures or reports released by for this contract. */\n released_by: string;\n /** Value that configures or reports previous assignee for this contract. */\n previous_assignee: string | null;\n /** Value that configures or reports audit release for this contract. */\n audit_release: boolean;\n /** Value that configures or reports forced for this contract. */\n forced: boolean;\n}\n\n/** Documents the claim mutation options payload exchanged by command, SDK, and package integrations. */\nexport interface ClaimMutationOptions {\n /** Value that configures or reports author for this contract. */\n author?: string;\n /** Human-readable explanation suitable for logs and agent-facing output. */\n message?: string;\n /** Value that configures or reports if available for this contract. */\n ifAvailable?: boolean;\n /** Maximum ranked candidates attempted by `claim --next`. */\n maxAttempts?: string | number;\n}\n\n/** Documents the release mutation options payload exchanged by command, SDK, and package integrations. */\nexport interface ReleaseMutationOptions extends ClaimMutationOptions {\n /** Value that configures or reports allow audit release for this contract. */\n allowAuditRelease?: boolean;\n}\n\n/** Implements run claim for the public runtime surface of this module. */\nexport async function runClaim(\n id: string,\n force: boolean,\n global: GlobalOptions,\n options: ClaimMutationOptions = {},\n): Promise<ClaimResult> {\n const pmRoot = resolvePmRoot(process.cwd(), global.path);\n if (!(await pathExists(getSettingsPath(pmRoot)))) {\n throw new PmCliError(\n `Tracker is not initialized at ${pmRoot}. Run pm init first.`,\n EXIT_CODE.NOT_FOUND,\n );\n }\n const settings = await readSettings(pmRoot);\n const statusRegistry = resolveRuntimeStatusRegistry(settings.schema);\n const author = resolveAuthor(options.author, settings.author_default);\n let previousAssignee: string | null = null;\n let skipped = false;\n const mutationWarnings: string[] = [];\n\n const result = await mutateItem({\n pmRoot,\n settings,\n id,\n op: \"claim\",\n author,\n message: options.message,\n force,\n skipNoop: true,\n mutate(document) {\n const currentAssignee = document.metadata.assignee;\n const currentAssigneeText =\n typeof currentAssignee === \"string\" ? currentAssignee : \"\";\n previousAssignee =\n currentAssigneeText.trim().length > 0 ? currentAssigneeText : null;\n if (\n statusIsTerminal(document.metadata.status, statusRegistry) &&\n !force\n ) {\n throw new PmCliError(\n `Cannot claim terminal item ${document.metadata.id} without --force`,\n EXIT_CODE.CONFLICT,\n );\n }\n const heldByOther =\n previousAssignee !== null && previousAssignee !== author;\n if (heldByOther && options.ifAvailable === true) {\n skipped = true;\n mutationWarnings.push(`claim_skipped_held_by:${previousAssignee}`);\n return { changedFields: [] };\n }\n if (heldByOther && !force) {\n throw new PmCliError(\n `Item ${document.metadata.id} is already claimed by ${previousAssignee}. Use --force to take over, or --if-available to skip without failing.`,\n EXIT_CODE.CONFLICT,\n {\n code: \"already_claimed_by\",\n why: \"Claim is an atomic test-and-set so parallel agents never proceed believing they own the same item.\",\n nextSteps: [\n \"Run pm next to pick a different unclaimed item.\",\n \"Re-run with --if-available to treat a held item as a no-op skip.\",\n \"Re-run with --force only when taking over the item is coordinated.\",\n ],\n },\n );\n }\n if (heldByOther) {\n mutationWarnings.push(`claim_takeover:${previousAssignee}->${author}`);\n }\n document.metadata.assignee = author;\n return { changedFields: [\"assignee\"], warnings: mutationWarnings };\n },\n });\n\n return {\n item: toItemRecord(result.item),\n claimed_by:\n skipped && previousAssignee !== null ? previousAssignee : author,\n previous_assignee: previousAssignee,\n forced: force,\n ...(skipped ? { skipped: true } : {}),\n ...(mutationWarnings.length > 0 ? { warnings: mutationWarnings } : {}),\n };\n}\n\n/** Selects ranked actionable work and claims the first candidate still available under the item lock. Conflicts caused by parallel claimers advance to the next candidate instead of returning a thundering-herd failure. */\nexport async function runClaimNext(\n force: boolean,\n global: GlobalOptions,\n options: ClaimMutationOptions = {},\n nextOptions: NextOptions = {},\n): Promise<ClaimNextResult> {\n const maxAttempts = parseClaimNextAttempts(options.maxAttempts);\n const settings = await readSettings(resolvePmRoot(process.cwd(), global.path));\n const claimOptions = {\n ...options,\n author: resolveAuthor(options.author, settings.author_default),\n };\n const next = await runNext(\n {\n ...nextOptions,\n callerAuthor: claimOptions.author,\n limit: String(maxAttempts),\n },\n global,\n );\n const recommendations = [next.recommended, ...next.ready]\n .filter((entry): entry is NextRecommendation => entry !== null)\n .map((entry) => ({\n ...entry,\n reasons: \"reasons\" in entry ? entry.reasons : [\"ranked ready candidate\"],\n }));\n return claimNextFromRecommendations(\n recommendations.slice(0, maxAttempts),\n force,\n global,\n claimOptions,\n );\n}\n\n/** Parses the bounded candidate walk used by `claim --next`. */\nexport function parseClaimNextAttempts(raw: string | number | undefined): number {\n if (raw === undefined) return 10;\n const parsed = Number(raw);\n if (!Number.isSafeInteger(parsed) || parsed < 1 || parsed > 100) {\n throw new PmCliError(\n \"--max-attempts must be an integer from 1 to 100\",\n EXIT_CODE.USAGE,\n );\n }\n return parsed;\n}\n\n/** Claims the first still-available row from a pre-ranked recommendation set. */\nexport async function claimNextFromRecommendations(\n recommendations: NextRecommendation[],\n force: boolean,\n global: GlobalOptions,\n options: ClaimMutationOptions = {},\n claimRunner: ClaimRunner = runClaim,\n): Promise<ClaimNextResult> {\n let attempts = 0;\n for (const recommendation of recommendations) {\n attempts += 1;\n try {\n const claimed = await claimRunner(\n recommendation.id,\n force,\n global,\n options,\n );\n const result = { ...claimed, recommendation, attempts, available: true as const };\n if (!claimed.skipped) return result;\n } catch (error: unknown) {\n if (!isAlreadyClaimedError(error)) throw error;\n }\n }\n if (options.ifAvailable === true) {\n return {\n available: false,\n item: null,\n claimed_by: options.author ?? process.env.PM_AUTHOR ?? \"unknown\",\n previous_assignee: null,\n forced: force,\n skipped: true,\n recommendation: null,\n attempts,\n warnings: [NO_AVAILABLE_NEXT_ITEM_CODE],\n };\n }\n const noCandidatesMatched = attempts === 0;\n throw new PmCliError(\n noCandidatesMatched\n ? \"No actionable items matched the selection filters\"\n : \"No actionable item remained available to claim\",\n noCandidatesMatched ? EXIT_CODE.NOT_FOUND : EXIT_CODE.CONFLICT,\n {\n code: NO_AVAILABLE_NEXT_ITEM_CODE,\n why: noCandidatesMatched\n ? \"No ready items matched the specified filters or selection criteria.\"\n : \"Every ranked candidate was claimed by another agent before this atomic selection completed.\",\n nextSteps: [\n noCandidatesMatched\n ? \"Verify the filters or run pm next to inspect all ready work.\"\n : \"Run pm claim --next again to refresh the ranked candidate set.\",\n ],\n },\n );\n}\n\n/** Implements run release for the public runtime surface of this module. */\nexport async function runRelease(\n id: string,\n force: boolean,\n global: GlobalOptions,\n options: ReleaseMutationOptions = {},\n): Promise<ReleaseResult> {\n const pmRoot = resolvePmRoot(process.cwd(), global.path);\n if (!(await pathExists(getSettingsPath(pmRoot)))) {\n throw new PmCliError(\n `Tracker is not initialized at ${pmRoot}. Run pm init first.`,\n EXIT_CODE.NOT_FOUND,\n );\n }\n const settings = await readSettings(pmRoot);\n const author = resolveAuthor(options.author, settings.author_default);\n let previousAssignee: string | null = null;\n\n let result: Awaited<ReturnType<typeof mutateItem>>;\n try {\n result = await mutateItem({\n pmRoot,\n settings,\n id,\n op: \"release\",\n author,\n message: options.message,\n force,\n bypassAssigneeConflict: Boolean(options.allowAuditRelease),\n mutate(document) {\n previousAssignee = document.metadata.assignee ?? null;\n if (!previousAssignee) {\n return { changedFields: [] };\n }\n delete document.metadata.assignee;\n return { changedFields: [\"assignee\"] };\n },\n });\n } catch (error: unknown) {\n wrapOwnershipConflict(error, {\n required:\n \"For audited non-owner handoffs, prefer --allow-audit-release before considering --force.\",\n examples: [\n 'pm release pm-a1b2 --author \"reviewer\" --allow-audit-release',\n ],\n nextSteps: [\n \"Use --allow-audit-release for append-only release handoffs that only clear assignee metadata.\",\n \"Use --force only when an explicit override is approved for broader ownership conflicts.\",\n ],\n });\n }\n\n return {\n item: toItemRecord(result.item),\n released_by: author,\n previous_assignee: previousAssignee,\n audit_release: options.allowAuditRelease === true,\n forced: force,\n };\n}\n"],"names":[],"mappings":"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","debugId":"c0e18740-ab85-5611-94aa-3e49751f63d0"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Implements the pm completion command surface and its agent-facing runtime behavior.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="
|
|
7
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="cd8e131d-bdef-5850-9a84-d9784c113804")}catch(e){}}();
|
|
8
8
|
import { EXIT_CODE } from "../../core/shared/constants.js";
|
|
9
9
|
import { PmCliError } from "../../core/shared/errors.js";
|
|
10
10
|
import { SCAFFOLD_CAPABILITIES } from "./extension/scaffold.js";
|
|
@@ -1501,6 +1501,15 @@ ${zshSearchRuntimeFieldFlags} '--json[Output JSON]' \\
|
|
|
1501
1501
|
'--force[Force override]' \\
|
|
1502
1502
|
'--if-available[Skip work held by another author]' \\
|
|
1503
1503
|
'--next[Atomically claim the next actionable item]' \\
|
|
1504
|
+
'--type[Filter --next candidates by type]:(${typeChoices})' \\
|
|
1505
|
+
'--tag[Filter --next candidates by tag]:(${zshTagChoices})' \\
|
|
1506
|
+
'--priority[Filter --next candidates by priority]:(0 1 2 3 4)' \\
|
|
1507
|
+
'--assignee-filter[Filter --next candidates by ownership]:assignee_filter:(assigned unassigned)' \\
|
|
1508
|
+
'--parent[Scope --next candidates to a subtree]:parent' \\
|
|
1509
|
+
'--sprint[Filter --next candidates by sprint]:sprint' \\
|
|
1510
|
+
'--release[Filter --next candidates by release]:release' \\
|
|
1511
|
+
'--max-attempts[Bound the --next candidate walk]:max_attempts' \\
|
|
1512
|
+
'--include-decisions[Allow human-gated Decision candidates]' \\
|
|
1504
1513
|
'--json[Output JSON]' \\
|
|
1505
1514
|
'--quiet[Suppress stdout]'
|
|
1506
1515
|
;;
|
|
@@ -2651,4 +2660,4 @@ export function runCompletion(shell, itemTypes = [], tags = [], eagerTagExpansio
|
|
|
2651
2660
|
};
|
|
2652
2661
|
}
|
|
2653
2662
|
//# sourceMappingURL=completion.js.map
|
|
2654
|
-
//# debugId=
|
|
2663
|
+
//# debugId=cd8e131d-bdef-5850-9a84-d9784c113804
|