@unbrained/pm-cli 2026.6.30 → 2026.7.2
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/AGENTS.md +2 -0
- package/CHANGELOG.md +26 -0
- package/dist/cli/bootstrap-args.js +89 -79
- package/dist/cli/bootstrap-args.js.map +1 -1
- package/dist/cli/commander-usage.d.ts +2 -0
- package/dist/cli/commander-usage.js +58 -47
- package/dist/cli/commander-usage.js.map +1 -1
- package/dist/cli/commands/aggregate.js +102 -79
- package/dist/cli/commands/aggregate.js.map +1 -1
- package/dist/cli/commands/calendar.js +339 -303
- package/dist/cli/commands/calendar.js.map +1 -1
- package/dist/cli/commands/close-many.js +89 -68
- package/dist/cli/commands/close-many.js.map +1 -1
- package/dist/cli/commands/close.js +157 -129
- package/dist/cli/commands/close.js.map +1 -1
- package/dist/cli/commands/comments-audit.js +50 -42
- package/dist/cli/commands/comments-audit.js.map +1 -1
- package/dist/cli/commands/config.d.ts +2 -0
- package/dist/cli/commands/config.js +443 -879
- package/dist/cli/commands/config.js.map +1 -1
- package/dist/cli/commands/context.js +365 -287
- package/dist/cli/commands/context.js.map +1 -1
- package/dist/cli/commands/contracts.js +352 -238
- package/dist/cli/commands/contracts.js.map +1 -1
- package/dist/cli/commands/create.js +483 -434
- package/dist/cli/commands/create.js.map +1 -1
- package/dist/cli/commands/dedupe-audit.js +46 -39
- package/dist/cli/commands/dedupe-audit.js.map +1 -1
- package/dist/cli/commands/dedupe-merge.js +88 -69
- package/dist/cli/commands/dedupe-merge.js.map +1 -1
- package/dist/cli/commands/extension/bundled-catalog.js +59 -46
- package/dist/cli/commands/extension/bundled-catalog.js.map +1 -1
- package/dist/cli/commands/extension/doctor.js +129 -78
- package/dist/cli/commands/extension/doctor.js.map +1 -1
- package/dist/cli/commands/extension/managed-state.js +101 -57
- package/dist/cli/commands/extension/managed-state.js.map +1 -1
- package/dist/cli/commands/extension/scaffold.d.ts +7 -0
- package/dist/cli/commands/extension/scaffold.js +214 -186
- package/dist/cli/commands/extension/scaffold.js.map +1 -1
- package/dist/cli/commands/extension.d.ts +6 -1
- package/dist/cli/commands/extension.js +1034 -902
- package/dist/cli/commands/extension.js.map +1 -1
- package/dist/cli/commands/get.js +114 -81
- package/dist/cli/commands/get.js.map +1 -1
- package/dist/cli/commands/health.d.ts +17 -0
- package/dist/cli/commands/health.js +446 -307
- package/dist/cli/commands/health.js.map +1 -1
- package/dist/cli/commands/history-compact.js +209 -140
- package/dist/cli/commands/history-compact.js.map +1 -1
- package/dist/cli/commands/history-redact.js +162 -119
- package/dist/cli/commands/history-redact.js.map +1 -1
- package/dist/cli/commands/history-repair.js +120 -85
- package/dist/cli/commands/history-repair.js.map +1 -1
- package/dist/cli/commands/init.d.ts +8 -2
- package/dist/cli/commands/init.js +263 -162
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/list-filter-shared.js +55 -48
- package/dist/cli/commands/list-filter-shared.js.map +1 -1
- package/dist/cli/commands/list.js +152 -102
- package/dist/cli/commands/list.js.map +1 -1
- package/dist/cli/commands/next.js +49 -32
- package/dist/cli/commands/next.js.map +1 -1
- package/dist/cli/commands/plan.js +373 -298
- package/dist/cli/commands/plan.js.map +1 -1
- package/dist/cli/commands/recurrence-parsers.js +43 -25
- package/dist/cli/commands/recurrence-parsers.js.map +1 -1
- package/dist/cli/commands/reindex.d.ts +21 -5
- package/dist/cli/commands/reindex.js +345 -205
- package/dist/cli/commands/reindex.js.map +1 -1
- package/dist/cli/commands/restore.d.ts +8 -7
- package/dist/cli/commands/restore.js +105 -69
- package/dist/cli/commands/restore.js.map +1 -1
- package/dist/cli/commands/schema.js +33 -30
- package/dist/cli/commands/schema.js.map +1 -1
- package/dist/cli/commands/search.d.ts +10 -2
- package/dist/cli/commands/search.js +595 -536
- package/dist/cli/commands/search.js.map +1 -1
- package/dist/cli/commands/telemetry.js +98 -87
- package/dist/cli/commands/telemetry.js.map +1 -1
- package/dist/cli/commands/test-all.js +237 -168
- package/dist/cli/commands/test-all.js.map +1 -1
- package/dist/cli/commands/test.d.ts +6 -5
- package/dist/cli/commands/test.js +530 -464
- package/dist/cli/commands/test.js.map +1 -1
- package/dist/cli/commands/update-many.js +57 -42
- package/dist/cli/commands/update-many.js.map +1 -1
- package/dist/cli/commands/update.d.ts +1 -1
- package/dist/cli/commands/update.js +764 -747
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/commands/validate.d.ts +18 -1
- package/dist/cli/commands/validate.js +466 -343
- package/dist/cli/commands/validate.js.map +1 -1
- package/dist/cli/error-guidance.js +399 -357
- package/dist/cli/error-guidance.js.map +1 -1
- package/dist/cli/extension-command-options.js +48 -21
- package/dist/cli/extension-command-options.js.map +1 -1
- package/dist/cli/main.d.ts +47 -0
- package/dist/cli/main.js +428 -341
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/migration-gates.js +22 -45
- package/dist/cli/migration-gates.js.map +1 -1
- package/dist/cli/register-list-query.js +94 -105
- package/dist/cli/register-list-query.js.map +1 -1
- package/dist/cli/register-mutation.js +400 -416
- package/dist/cli/register-mutation.js.map +1 -1
- package/dist/cli/register-operations.js +86 -66
- package/dist/cli/register-operations.js.map +1 -1
- package/dist/cli/register-setup.js +120 -101
- package/dist/cli/register-setup.js.map +1 -1
- package/dist/cli/registration-helpers.js +117 -122
- package/dist/cli/registration-helpers.js.map +1 -1
- package/dist/cli-bundle/chunks/{activity-MVSEND6D.js → activity-CUC4JY3U.js} +9 -9
- package/dist/cli-bundle/chunks/activity-WEIEMM73.js +16 -0
- package/dist/cli-bundle/chunks/{aggregate-MOC4TR2G.js → aggregate-DKUTRY6R.js} +109 -85
- package/dist/cli-bundle/chunks/aggregate-DKUTRY6R.js.map +1 -0
- package/dist/cli-bundle/chunks/{aggregate-XJHLZQ5X.js → aggregate-SW5PNGCS.js} +108 -84
- package/dist/cli-bundle/chunks/{aggregate-XJHLZQ5X.js.map → aggregate-SW5PNGCS.js.map} +2 -2
- package/dist/cli-bundle/chunks/{append-KDHT4GHI.js → append-H32VOR2Y.js} +6 -6
- package/dist/cli-bundle/chunks/{append-LEDBAM3K.js → append-UBM632FK.js} +6 -6
- package/dist/cli-bundle/chunks/{chunk-Z55WX4IQ.js → chunk-2227673O.js} +158 -114
- package/dist/cli-bundle/chunks/chunk-2227673O.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-SJZTPVFT.js → chunk-2ASNV4DH.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-JVQ7UOYC.js → chunk-2CHRYUXL.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-QE5UFCCO.js → chunk-2KWL5NPW.js} +42 -27
- package/dist/cli-bundle/chunks/chunk-2KWL5NPW.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-ZEATCVAC.js → chunk-36UGKF4O.js} +21 -29
- package/dist/cli-bundle/chunks/chunk-36UGKF4O.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-JZG5ADVE.js → chunk-3AZUFQK6.js} +1103 -963
- package/dist/cli-bundle/chunks/chunk-3AZUFQK6.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-DRPF274X.js → chunk-3LCUASYG.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-JJ4SG243.js → chunk-3Q2HBMTI.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-4BU75MF4.js +87 -0
- package/dist/cli-bundle/chunks/chunk-4BU75MF4.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-GF7EAR22.js → chunk-4NUOWFBT.js} +109 -72
- package/dist/cli-bundle/chunks/chunk-4NUOWFBT.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-TQ6E76BE.js → chunk-55XRYWEG.js} +6 -6
- package/dist/cli-bundle/chunks/{chunk-5IRVSKPS.js → chunk-5GVTFFTC.js} +150 -224
- package/dist/cli-bundle/chunks/chunk-5GVTFFTC.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-CHRNYKNI.js → chunk-5PGBHRY3.js} +41 -26
- package/dist/cli-bundle/chunks/chunk-5PGBHRY3.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-53ARXF2O.js → chunk-66Z3X7ZG.js} +261 -161
- package/dist/cli-bundle/chunks/chunk-66Z3X7ZG.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-A3UNLXNJ.js → chunk-6ITZLD4T.js} +738 -688
- package/dist/cli-bundle/chunks/chunk-6ITZLD4T.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-JTRKME24.js → chunk-6YCYF2AI.js} +262 -162
- package/dist/cli-bundle/chunks/chunk-6YCYF2AI.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-RM6MHL6A.js → chunk-6ZMBJRDJ.js} +580 -467
- package/dist/cli-bundle/chunks/chunk-6ZMBJRDJ.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-RPRW26NG.js → chunk-7MYWF4ZX.js} +110 -73
- package/dist/cli-bundle/chunks/chunk-7MYWF4ZX.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-SNUK7H5J.js → chunk-7NSPKJUS.js} +716 -606
- package/dist/cli-bundle/chunks/chunk-7NSPKJUS.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-KYDYQMNW.js → chunk-7TH5NMVB.js} +95 -53
- package/dist/cli-bundle/chunks/chunk-7TH5NMVB.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-VD3LKZFX.js → chunk-7W4H4K26.js} +739 -689
- package/dist/cli-bundle/chunks/chunk-7W4H4K26.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-IBU2LLWM.js → chunk-A6VOGKBA.js} +6 -6
- package/dist/cli-bundle/chunks/{chunk-MLHX6DN5.js → chunk-AIAIXG7I.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-NIBP3I7A.js → chunk-AJEBCRIY.js} +128 -126
- package/dist/cli-bundle/chunks/chunk-AJEBCRIY.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-VZDBVEZR.js → chunk-B4O5S7I3.js} +79 -57
- package/dist/cli-bundle/chunks/{chunk-VZDBVEZR.js.map → chunk-B4O5S7I3.js.map} +2 -2
- package/dist/cli-bundle/chunks/{chunk-5ABGFWR4.js → chunk-BTX5MIQF.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-BVZZN2LH.js +809 -0
- package/dist/cli-bundle/chunks/chunk-BVZZN2LH.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-3JWQCLR5.js → chunk-CYBDUHNO.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-WFJZDUM7.js → chunk-CZPVDLD2.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-FDEVKXC4.js → chunk-EMPGXBUF.js} +22 -30
- package/dist/cli-bundle/chunks/chunk-EMPGXBUF.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-HUYYMTGW.js → chunk-EUKTMRN3.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-EVWYAG46.js → chunk-FFOQHGNH.js} +6 -6
- package/dist/cli-bundle/chunks/{chunk-IF4ERU6A.js → chunk-GFMSLORL.js} +6 -6
- package/dist/cli-bundle/chunks/{chunk-IZQOJR2B.js → chunk-GRRG3MCT.js} +198 -189
- package/dist/cli-bundle/chunks/chunk-GRRG3MCT.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-IDYCAK35.js → chunk-H4GRLYJS.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-VMY7MZEM.js → chunk-HQTPRV4D.js} +6 -6
- package/dist/cli-bundle/chunks/{chunk-CY5IJMUM.js → chunk-I66WE2HE.js} +712 -602
- package/dist/cli-bundle/chunks/chunk-I66WE2HE.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-ZFIEEDTJ.js → chunk-IEEJQCZ4.js} +509 -363
- package/dist/cli-bundle/chunks/chunk-IEEJQCZ4.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-DU66JUGT.js → chunk-IG5JYZGU.js} +488 -420
- package/dist/cli-bundle/chunks/chunk-IG5JYZGU.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-7L6TXOOC.js → chunk-JMK5GCK2.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-LBH7UYKY.js → chunk-JXAUVO6X.js} +258 -169
- package/dist/cli-bundle/chunks/{chunk-LBH7UYKY.js.map → chunk-JXAUVO6X.js.map} +2 -2
- package/dist/cli-bundle/chunks/{chunk-KRASIL6M.js → chunk-K2VYLVX4.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-4YIMPANT.js → chunk-KCO2EAN5.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-T7ZMQI4J.js → chunk-KIYCOJ63.js} +198 -189
- package/dist/cli-bundle/chunks/chunk-KIYCOJ63.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-D6USKAMA.js → chunk-KLXF7NCC.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-V3KLX7U7.js → chunk-KN3URLKS.js} +510 -364
- package/dist/cli-bundle/chunks/chunk-KN3URLKS.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-OB3RJV5F.js → chunk-LRKMWUUV.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-74PUWBGN.js → chunk-LTRAF2D7.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-5T6WPLRO.js → chunk-MNBPX5JS.js} +394 -354
- package/dist/cli-bundle/chunks/chunk-MNBPX5JS.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-4TXTVZL3.js → chunk-MRD4T5LF.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-E2Q2ULMR.js → chunk-N2JSWVWG.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-7WDETKGP.js → chunk-N3QCJS4M.js} +1105 -965
- package/dist/cli-bundle/chunks/chunk-N3QCJS4M.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-KGQ3W65B.js → chunk-NRZS637N.js} +258 -169
- package/dist/cli-bundle/chunks/chunk-NRZS637N.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-OTUJZKGI.js +799 -0
- package/dist/cli-bundle/chunks/chunk-OTUJZKGI.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-ZIE6WXJ2.js → chunk-Q6K2OACU.js} +153 -90
- package/dist/cli-bundle/chunks/chunk-Q6K2OACU.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-K46GQ265.js → chunk-Q6NXOHS6.js} +489 -421
- package/dist/cli-bundle/chunks/chunk-Q6NXOHS6.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-7RIJGN4R.js → chunk-QH3FSKRJ.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-UB3V5WUI.js → chunk-RM37OPYK.js} +394 -354
- package/dist/cli-bundle/chunks/chunk-RM37OPYK.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-OUQ5JEFM.js → chunk-S62UANU7.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-NO6Y6FB2.js → chunk-SPM2XLWI.js} +37 -28
- package/dist/cli-bundle/chunks/chunk-SPM2XLWI.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-DORJSBGJ.js → chunk-SYNKD3ZG.js} +127 -125
- package/dist/cli-bundle/chunks/chunk-SYNKD3ZG.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-6YRAMXRS.js → chunk-SYVUU7EK.js} +581 -468
- package/dist/cli-bundle/chunks/chunk-SYVUU7EK.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-D5LYZVGB.js → chunk-TPOFWBMY.js} +95 -53
- package/dist/cli-bundle/chunks/chunk-TPOFWBMY.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-IHXXUIXS.js → chunk-TTHCEV5Q.js} +92 -77
- package/dist/cli-bundle/chunks/chunk-TTHCEV5Q.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-DLDCPF5X.js → chunk-U2BEEM2X.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-Z5BM2FKQ.js → chunk-UGLU6Q2I.js} +91 -76
- package/dist/cli-bundle/chunks/chunk-UGLU6Q2I.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-73PTKMAE.js → chunk-UT73HUPC.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-F7G53BOA.js → chunk-UTSH5GWX.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-AWN4PPH5.js → chunk-UWKEJMZU.js} +157 -113
- package/dist/cli-bundle/chunks/chunk-UWKEJMZU.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-VY3VQ22F.js +84 -0
- package/dist/cli-bundle/chunks/chunk-VY3VQ22F.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-KTMMTOIP.js → chunk-W47SML5B.js} +152 -89
- package/dist/cli-bundle/chunks/chunk-W47SML5B.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-UFKNF23C.js → chunk-WJAMWAHZ.js} +157 -118
- package/dist/cli-bundle/chunks/chunk-WJAMWAHZ.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-HIBK6H4S.js → chunk-XCHUVHKU.js} +685 -544
- package/dist/cli-bundle/chunks/chunk-XCHUVHKU.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-DJDXAU74.js → chunk-XEWQKDYZ.js} +685 -544
- package/dist/cli-bundle/chunks/chunk-XEWQKDYZ.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-BOWQWXLI.js → chunk-XTHQWXVC.js} +158 -119
- package/dist/cli-bundle/chunks/chunk-XTHQWXVC.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-6T5ZIWBS.js → chunk-XWGEMNBR.js} +150 -224
- package/dist/cli-bundle/chunks/chunk-XWGEMNBR.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-JIP67N2K.js → chunk-Y4NRKBFW.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-WTRUDJ3R.js → chunk-YLZZ6T54.js} +38 -29
- package/dist/cli-bundle/chunks/chunk-YLZZ6T54.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-FBZ5XAAF.js → chunk-YPKFV2JR.js} +6 -6
- package/dist/cli-bundle/chunks/{chunk-OKQ22KTH.js → chunk-Z4DGFQDH.js} +80 -58
- package/dist/cli-bundle/chunks/{chunk-OKQ22KTH.js.map → chunk-Z4DGFQDH.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-BN3CWK6G.js → chunk-ZNHEYCDD.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-YEDFE4DC.js → chunk-ZNT7KEWE.js} +2 -2
- package/dist/cli-bundle/chunks/{claim-HMCLSLUE.js → claim-SENTPZBN.js} +8 -8
- package/dist/cli-bundle/chunks/{claim-6NINZYB3.js → claim-Z7MEQCBT.js} +8 -8
- package/dist/cli-bundle/chunks/{close-OP3LK7Z2.js → close-424MX4CU.js} +7 -7
- package/dist/cli-bundle/chunks/close-YCWQQPDS.js +14 -0
- package/dist/cli-bundle/chunks/{close-many-CXJBOWWY.js → close-many-2IV4J2TR.js} +103 -82
- package/dist/cli-bundle/chunks/close-many-2IV4J2TR.js.map +1 -0
- package/dist/cli-bundle/chunks/{close-many-BFMP6HHK.js → close-many-SWY34BII.js} +102 -81
- package/dist/cli-bundle/chunks/close-many-SWY34BII.js.map +7 -0
- package/dist/cli-bundle/chunks/{comments-ETHABIY6.js → comments-4FGNTSNV.js} +8 -8
- package/dist/cli-bundle/chunks/{comments-MU2WMBUY.js → comments-7YS5MY5X.js} +8 -8
- package/dist/cli-bundle/chunks/config-BZJKK7FZ.js +1062 -0
- package/dist/cli-bundle/chunks/config-BZJKK7FZ.js.map +1 -0
- package/dist/cli-bundle/chunks/config-G74GISC4.js +1072 -0
- package/dist/cli-bundle/chunks/config-G74GISC4.js.map +7 -0
- package/dist/cli-bundle/chunks/{context-7ZEZV3BV.js → context-LHVKJSPJ.js} +12 -12
- package/dist/cli-bundle/chunks/{context-XDI4DKKT.js → context-ZQY54JNS.js} +12 -12
- package/dist/cli-bundle/chunks/{contracts-SMOAN5NF.js → contracts-CP2EZJC7.js} +320 -199
- package/dist/cli-bundle/chunks/contracts-CP2EZJC7.js.map +7 -0
- package/dist/cli-bundle/chunks/{contracts-KP4QAGVW.js → contracts-FIZLMP7O.js} +321 -200
- package/dist/cli-bundle/chunks/contracts-FIZLMP7O.js.map +1 -0
- package/dist/cli-bundle/chunks/{copy-JJ3KOQW2.js → copy-GYNQQPW2.js} +5 -5
- package/dist/cli-bundle/chunks/{copy-CWM6SBY6.js → copy-TLW7JTQT.js} +5 -5
- package/dist/cli-bundle/chunks/{create-J5Q2ELZT.js → create-VSKYSOCD.js} +12 -12
- package/dist/cli-bundle/chunks/create-XTMAPS7I.js +28 -0
- package/dist/cli-bundle/chunks/{delete-2GZLQEUQ.js → delete-4W5JYCEG.js} +5 -5
- package/dist/cli-bundle/chunks/{delete-OOQS4KVD.js → delete-ANTOTI2I.js} +5 -5
- package/dist/cli-bundle/chunks/{deps-IF4IGL4R.js → deps-HPPE6MJN.js} +5 -5
- package/dist/cli-bundle/chunks/{deps-ZVGGCRR6.js → deps-ZQZN54EZ.js} +5 -5
- package/dist/cli-bundle/chunks/{docs-NFTBCQQC.js → docs-RPOVFMP3.js} +7 -7
- package/dist/cli-bundle/chunks/{docs-2TIFR62T.js → docs-XJNYBJGE.js} +7 -7
- package/dist/cli-bundle/chunks/{eval-2F6EH4XN.js → eval-DM6JBZTS.js} +10 -10
- package/dist/cli-bundle/chunks/{eval-PFKXQR3B.js → eval-RFBI5FGS.js} +10 -10
- package/dist/cli-bundle/chunks/{extension-GMVOIP4O.js → extension-B3YY4WY5.js} +11 -10
- package/dist/cli-bundle/chunks/{extension-3LRYX7SW.js → extension-TTSEFQTS.js} +11 -10
- package/dist/cli-bundle/chunks/{files-DF3HO6XK.js → files-5D65CHGE.js} +7 -7
- package/dist/cli-bundle/chunks/{files-T5ODMETM.js → files-GPIG77EN.js} +7 -7
- package/dist/cli-bundle/chunks/{focus-MY5ARIEK.js → focus-C3PEJV2C.js} +6 -6
- package/dist/cli-bundle/chunks/{focus-DLXKK4AH.js → focus-ZHN7WIGX.js} +6 -6
- package/dist/cli-bundle/chunks/{gc-MDGRR2SU.js → gc-D4JQ6OWN.js} +3 -3
- package/dist/cli-bundle/chunks/{gc-FULIVYR4.js → gc-VZIXDL32.js} +3 -3
- package/dist/cli-bundle/chunks/{get-VYPIICPC.js → get-GIBRUUOP.js} +121 -81
- package/dist/cli-bundle/chunks/get-GIBRUUOP.js.map +1 -0
- package/dist/cli-bundle/chunks/{get-AWK324RS.js → get-IOVAN6RU.js} +120 -80
- package/dist/cli-bundle/chunks/get-IOVAN6RU.js.map +7 -0
- package/dist/cli-bundle/chunks/{health-Q66C43GN.js → health-L2U3AFKV.js} +437 -264
- package/dist/cli-bundle/chunks/health-L2U3AFKV.js.map +1 -0
- package/dist/cli-bundle/chunks/{health-FBCVZGSX.js → health-MM7AWXYF.js} +436 -263
- package/dist/cli-bundle/chunks/health-MM7AWXYF.js.map +7 -0
- package/dist/cli-bundle/chunks/history-DD7L7BNL.js +18 -0
- package/dist/cli-bundle/chunks/{history-X4OSES6K.js → history-IL7XCEX2.js} +8 -8
- package/dist/cli-bundle/chunks/{history-compact-2GHT32UX.js → history-compact-HALOTOU7.js} +214 -135
- package/dist/cli-bundle/chunks/history-compact-HALOTOU7.js.map +1 -0
- package/dist/cli-bundle/chunks/{history-compact-WLCQEKXS.js → history-compact-MV25P7DM.js} +213 -134
- package/dist/cli-bundle/chunks/history-compact-MV25P7DM.js.map +7 -0
- package/dist/cli-bundle/chunks/history-redact-IX4YEWMY.js +19 -0
- package/dist/cli-bundle/chunks/{history-redact-45YW65BK.js → history-redact-VYCWQFK7.js} +9 -9
- package/dist/cli-bundle/chunks/{history-repair-FY75IC26.js → history-repair-44MODPQF.js} +124 -84
- package/dist/cli-bundle/chunks/history-repair-44MODPQF.js.map +1 -0
- package/dist/cli-bundle/chunks/{history-repair-GABSDSVD.js → history-repair-CPNAOCNF.js} +123 -83
- package/dist/cli-bundle/chunks/history-repair-CPNAOCNF.js.map +7 -0
- package/dist/cli-bundle/chunks/{init-KO7CGIRQ.js → init-F27NHENZ.js} +12 -11
- package/dist/cli-bundle/chunks/init-HHVQQP6C.js +22 -0
- package/dist/cli-bundle/chunks/{learnings-LHZT5BHW.js → learnings-HJVDQIGY.js} +8 -8
- package/dist/cli-bundle/chunks/{learnings-3F7YLI45.js → learnings-XSFSUUWK.js} +8 -8
- package/dist/cli-bundle/chunks/{list-Y6AU5BJS.js → list-HPMEKCAA.js} +8 -8
- package/dist/cli-bundle/chunks/{list-ROT7JF62.js → list-VMPWTURB.js} +8 -8
- package/dist/cli-bundle/chunks/{next-66BJB4N2.js → next-ETXF2ZCN.js} +59 -37
- package/dist/cli-bundle/chunks/next-ETXF2ZCN.js.map +7 -0
- package/dist/cli-bundle/chunks/{next-N5MWJTBY.js → next-QM6YJIIS.js} +60 -38
- package/dist/cli-bundle/chunks/next-QM6YJIIS.js.map +1 -0
- package/dist/cli-bundle/chunks/{notes-FW6YFLND.js → notes-GDZIKGR6.js} +8 -8
- package/dist/cli-bundle/chunks/{notes-EVJZ3VAB.js → notes-WDDBPC4D.js} +8 -8
- package/dist/cli-bundle/chunks/{plan-ZHKZ7JVF.js → plan-BGDR73Z6.js} +373 -279
- package/dist/cli-bundle/chunks/plan-BGDR73Z6.js.map +1 -0
- package/dist/cli-bundle/chunks/{plan-DQ7G4EDC.js → plan-C5IMM335.js} +372 -278
- package/dist/cli-bundle/chunks/plan-C5IMM335.js.map +7 -0
- package/dist/cli-bundle/chunks/{profile-CHAW6SEA.js → profile-CCOKZ2IQ.js} +9 -9
- package/dist/cli-bundle/chunks/{profile-UPZGCDOG.js → profile-HUCENIEQ.js} +9 -9
- package/dist/cli-bundle/chunks/{register-list-query-Y2VRHPCL.js → register-list-query-ROSNIL52.js} +80 -83
- package/dist/cli-bundle/chunks/register-list-query-ROSNIL52.js.map +1 -0
- package/dist/cli-bundle/chunks/{register-list-query-KY6Z6WV7.js → register-list-query-XN4ZRHSV.js} +79 -82
- package/dist/cli-bundle/chunks/register-list-query-XN4ZRHSV.js.map +7 -0
- package/dist/cli-bundle/chunks/{register-mutation-PCARIGZS.js → register-mutation-CFSB2MS3.js} +406 -385
- package/dist/cli-bundle/chunks/register-mutation-CFSB2MS3.js.map +1 -0
- package/dist/cli-bundle/chunks/{register-mutation-N6AYSKPM.js → register-mutation-KRLAHEL2.js} +405 -384
- package/dist/cli-bundle/chunks/register-mutation-KRLAHEL2.js.map +7 -0
- package/dist/cli-bundle/chunks/{register-operations-L6CYTOIH.js → register-operations-4PASGJDB.js} +112 -93
- package/dist/cli-bundle/chunks/register-operations-4PASGJDB.js.map +7 -0
- package/dist/cli-bundle/chunks/{register-operations-YAT6FUUB.js → register-operations-MBN4KGUM.js} +113 -94
- package/dist/cli-bundle/chunks/register-operations-MBN4KGUM.js.map +1 -0
- package/dist/cli-bundle/chunks/{register-setup-N7UGXYJC.js → register-setup-VIAWYFP5.js} +129 -104
- package/dist/cli-bundle/chunks/register-setup-VIAWYFP5.js.map +1 -0
- package/dist/cli-bundle/chunks/{register-setup-MPANILQF.js → register-setup-ZCGKHDKL.js} +128 -103
- package/dist/cli-bundle/chunks/register-setup-ZCGKHDKL.js.map +7 -0
- package/dist/cli-bundle/chunks/{restore-DKMCLPI5.js → restore-4CBWUMCX.js} +9 -9
- package/dist/cli-bundle/chunks/restore-5UEAGG3W.js +17 -0
- package/dist/cli-bundle/chunks/{scheduling-shortcuts-3F4QUEDH.js → scheduling-shortcuts-6VFKNKCM.js} +12 -12
- package/dist/cli-bundle/chunks/{scheduling-shortcuts-BNZLQK36.js → scheduling-shortcuts-ERHCVTEM.js} +12 -12
- package/dist/cli-bundle/chunks/{schema-OLT6LVKH.js → schema-TDGK6N3I.js} +7 -7
- package/dist/cli-bundle/chunks/{schema-XJXKJQF5.js → schema-UE5KKAUX.js} +7 -7
- package/dist/cli-bundle/chunks/{search-KP6H7COV.js → search-FP7MEU4S.js} +10 -10
- package/dist/cli-bundle/chunks/{search-CX5UMV4H.js → search-K4CFLQ5S.js} +10 -10
- package/dist/cli-bundle/chunks/{stats-QZUG6MX5.js → stats-NJJCALEZ.js} +6 -6
- package/dist/cli-bundle/chunks/{stats-7XW4OEMK.js → stats-XT6QRKQY.js} +6 -6
- package/dist/cli-bundle/chunks/{telemetry-DIFPXCAT.js → telemetry-5SQ5UDXC.js} +84 -70
- package/dist/cli-bundle/chunks/telemetry-5SQ5UDXC.js.map +7 -0
- package/dist/cli-bundle/chunks/{telemetry-WTYFUPRL.js → telemetry-HVXFZA2U.js} +85 -71
- package/dist/cli-bundle/chunks/telemetry-HVXFZA2U.js.map +1 -0
- package/dist/cli-bundle/chunks/{test-QNDXZQCW.js → test-UFSJ5YIO.js} +15 -14
- package/dist/cli-bundle/chunks/{test-HU2BS7EY.js → test-YCDAUBWF.js} +15 -14
- package/dist/cli-bundle/chunks/test-all-2BWKY3GQ.js +427 -0
- package/dist/cli-bundle/chunks/test-all-2BWKY3GQ.js.map +1 -0
- package/dist/cli-bundle/chunks/test-all-PM7UYN42.js +430 -0
- package/dist/cli-bundle/chunks/test-all-PM7UYN42.js.map +7 -0
- package/dist/cli-bundle/chunks/{test-runs-CA6K32RD.js → test-runs-FK5E75AA.js} +185 -147
- package/dist/cli-bundle/chunks/test-runs-FK5E75AA.js.map +1 -0
- package/dist/cli-bundle/chunks/{test-runs-LANLLPVO.js → test-runs-H4TGWGRN.js} +184 -146
- package/dist/cli-bundle/chunks/test-runs-H4TGWGRN.js.map +7 -0
- package/dist/cli-bundle/chunks/update-MTCFES6X.js +24 -0
- package/dist/cli-bundle/chunks/{update-DJKWLBWJ.js → update-Y5WQVT5O.js} +15 -15
- package/dist/cli-bundle/chunks/{update-many-LU3SCNK5.js → update-many-6YAYYRLE.js} +83 -68
- package/dist/cli-bundle/chunks/{update-many-LU3SCNK5.js.map → update-many-6YAYYRLE.js.map} +2 -2
- package/dist/cli-bundle/chunks/{update-many-VW5DGF3S.js → update-many-JTKKSA7Y.js} +84 -69
- package/dist/cli-bundle/chunks/{update-many-VW5DGF3S.js.map → update-many-JTKKSA7Y.js.map} +1 -1
- package/dist/cli-bundle/chunks/{upgrade-ICXY244R.js → upgrade-DTAHZ236.js} +11 -10
- package/dist/cli-bundle/chunks/{upgrade-ICXY244R.js.map → upgrade-DTAHZ236.js.map} +1 -1
- package/dist/cli-bundle/chunks/{upgrade-77FRUAXN.js → upgrade-JUDU7YL4.js} +13 -12
- package/dist/cli-bundle/chunks/{upgrade-77FRUAXN.js.map → upgrade-JUDU7YL4.js.map} +1 -1
- package/dist/cli-bundle/chunks/{validate-2G566PKQ.js → validate-732RWS5W.js} +440 -319
- package/dist/cli-bundle/chunks/validate-732RWS5W.js.map +7 -0
- package/dist/cli-bundle/chunks/{validate-BDPVXHHH.js → validate-W7H5TEDC.js} +441 -320
- package/dist/cli-bundle/chunks/validate-W7H5TEDC.js.map +1 -0
- package/dist/cli-bundle/main.js +986 -1500
- package/dist/cli-bundle/main.js.map +4 -4
- package/dist/core/config/nested-settings.js +89 -67
- package/dist/core/config/nested-settings.js.map +1 -1
- package/dist/core/extensions/activation-summary-markdown.js +23 -12
- package/dist/core/extensions/activation-summary-markdown.js.map +1 -1
- package/dist/core/extensions/extension-policy.d.ts +18 -3
- package/dist/core/extensions/extension-policy.js +116 -106
- package/dist/core/extensions/extension-policy.js.map +1 -1
- package/dist/core/extensions/loader.js +310 -232
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/governance/metadata-coverage.js +20 -28
- package/dist/core/governance/metadata-coverage.js.map +1 -1
- package/dist/core/history/drift-scan.js +93 -81
- package/dist/core/history/drift-scan.js.map +1 -1
- package/dist/core/item/item-format.js +523 -410
- package/dist/core/item/item-format.js.map +1 -1
- package/dist/core/item/item-type-definition.js +14 -14
- package/dist/core/item/item-type-definition.js.map +1 -1
- package/dist/core/item/type-registry.js +87 -82
- package/dist/core/item/type-registry.js.map +1 -1
- package/dist/core/output/mutation-projection.js +42 -26
- package/dist/core/output/mutation-projection.js.map +1 -1
- package/dist/core/schema/runtime-schema.js +34 -28
- package/dist/core/schema/runtime-schema.js.map +1 -1
- package/dist/core/search/semantic-defaults.js +64 -37
- package/dist/core/search/semantic-defaults.js.map +1 -1
- package/dist/core/search/vector-stores.js +32 -17
- package/dist/core/search/vector-stores.js.map +1 -1
- package/dist/core/sentry/helpers.js +31 -28
- package/dist/core/sentry/helpers.js.map +1 -1
- package/dist/core/sentry/instrument.js +54 -43
- package/dist/core/sentry/instrument.js.map +1 -1
- package/dist/core/store/front-matter-cache.js +239 -153
- package/dist/core/store/front-matter-cache.js.map +1 -1
- package/dist/core/store/item-store.js +33 -26
- package/dist/core/store/item-store.js.map +1 -1
- package/dist/core/store/settings.js +247 -203
- package/dist/core/store/settings.js.map +1 -1
- package/dist/core/test/background-runs.js +189 -160
- package/dist/core/test/background-runs.js.map +1 -1
- package/dist/mcp/server.js +387 -367
- package/dist/mcp/server.js.map +1 -1
- package/dist/sdk/cli-contracts/flag-contracts.js +111 -180
- package/dist/sdk/cli-contracts/flag-contracts.js.map +1 -1
- package/dist/sdk/cli-contracts/tool-schema.js +76 -45
- package/dist/sdk/cli-contracts/tool-schema.js.map +1 -1
- package/dist/sdk/compose.d.ts +4 -1
- package/dist/sdk/compose.js +181 -115
- package/dist/sdk/compose.js.map +1 -1
- package/docs/RELEASING.md +2 -3
- package/package.json +2 -2
- package/packages/pm-beads/extensions/beads/runtime.ts +240 -167
- package/packages/pm-guide-shell/extensions/guide-shell/runtime.ts +65 -58
- package/packages/pm-todos/extensions/todos/runtime.ts +65 -42
- package/dist/cli-bundle/chunks/activity-EJBMXUBH.js +0 -16
- package/dist/cli-bundle/chunks/aggregate-MOC4TR2G.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-53ARXF2O.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-5IRVSKPS.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-5T6WPLRO.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-6T5ZIWBS.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-6YRAMXRS.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-7WDETKGP.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-A3UNLXNJ.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-AWN4PPH5.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-BOWQWXLI.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-C2KCIZKZ.js +0 -115
- package/dist/cli-bundle/chunks/chunk-C2KCIZKZ.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-CHRNYKNI.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-CY5IJMUM.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-D5LYZVGB.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-DJDXAU74.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-DORJSBGJ.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-DU66JUGT.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-F6VH3LFC.js +0 -118
- package/dist/cli-bundle/chunks/chunk-F6VH3LFC.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-FDEVKXC4.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-GF7EAR22.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-HIBK6H4S.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-IHXXUIXS.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-ISEKN64V.js +0 -35
- package/dist/cli-bundle/chunks/chunk-ISEKN64V.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-IZQOJR2B.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-JTRKME24.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-JZG5ADVE.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-K46GQ265.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-KGQ3W65B.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-KTMMTOIP.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-KYDYQMNW.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-NIBP3I7A.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-NO6Y6FB2.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-QE5UFCCO.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-RM6MHL6A.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-RPRW26NG.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-SNUK7H5J.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-T7ZMQI4J.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-UB3V5WUI.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-UFKNF23C.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-V3KLX7U7.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-VD3LKZFX.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-W2VMLL5S.js +0 -32
- package/dist/cli-bundle/chunks/chunk-W2VMLL5S.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-WTRUDJ3R.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-Z55WX4IQ.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-Z5BM2FKQ.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-ZEATCVAC.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-ZFIEEDTJ.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-ZIE6WXJ2.js.map +0 -1
- package/dist/cli-bundle/chunks/close-37KEHLYM.js +0 -14
- package/dist/cli-bundle/chunks/close-many-BFMP6HHK.js.map +0 -7
- package/dist/cli-bundle/chunks/close-many-CXJBOWWY.js.map +0 -1
- package/dist/cli-bundle/chunks/config-FIXJZEQK.js +0 -1541
- package/dist/cli-bundle/chunks/config-FIXJZEQK.js.map +0 -7
- package/dist/cli-bundle/chunks/config-X3ZVCUUG.js +0 -1531
- package/dist/cli-bundle/chunks/config-X3ZVCUUG.js.map +0 -1
- package/dist/cli-bundle/chunks/contracts-KP4QAGVW.js.map +0 -1
- package/dist/cli-bundle/chunks/contracts-SMOAN5NF.js.map +0 -7
- package/dist/cli-bundle/chunks/create-DFMNBKBS.js +0 -28
- package/dist/cli-bundle/chunks/get-AWK324RS.js.map +0 -7
- package/dist/cli-bundle/chunks/get-VYPIICPC.js.map +0 -1
- package/dist/cli-bundle/chunks/health-FBCVZGSX.js.map +0 -7
- package/dist/cli-bundle/chunks/health-Q66C43GN.js.map +0 -1
- package/dist/cli-bundle/chunks/history-5XUSLAJA.js +0 -18
- package/dist/cli-bundle/chunks/history-compact-2GHT32UX.js.map +0 -1
- package/dist/cli-bundle/chunks/history-compact-WLCQEKXS.js.map +0 -7
- package/dist/cli-bundle/chunks/history-redact-BVHWDXPR.js +0 -19
- package/dist/cli-bundle/chunks/history-repair-FY75IC26.js.map +0 -1
- package/dist/cli-bundle/chunks/history-repair-GABSDSVD.js.map +0 -7
- package/dist/cli-bundle/chunks/init-TRYJELH4.js +0 -21
- package/dist/cli-bundle/chunks/next-66BJB4N2.js.map +0 -7
- package/dist/cli-bundle/chunks/next-N5MWJTBY.js.map +0 -1
- package/dist/cli-bundle/chunks/plan-DQ7G4EDC.js.map +0 -7
- package/dist/cli-bundle/chunks/plan-ZHKZ7JVF.js.map +0 -1
- package/dist/cli-bundle/chunks/register-list-query-KY6Z6WV7.js.map +0 -7
- package/dist/cli-bundle/chunks/register-list-query-Y2VRHPCL.js.map +0 -1
- package/dist/cli-bundle/chunks/register-mutation-N6AYSKPM.js.map +0 -7
- package/dist/cli-bundle/chunks/register-mutation-PCARIGZS.js.map +0 -1
- package/dist/cli-bundle/chunks/register-operations-L6CYTOIH.js.map +0 -7
- package/dist/cli-bundle/chunks/register-operations-YAT6FUUB.js.map +0 -1
- package/dist/cli-bundle/chunks/register-setup-MPANILQF.js.map +0 -7
- package/dist/cli-bundle/chunks/register-setup-N7UGXYJC.js.map +0 -1
- package/dist/cli-bundle/chunks/restore-IRAKSWIW.js +0 -17
- package/dist/cli-bundle/chunks/telemetry-DIFPXCAT.js.map +0 -7
- package/dist/cli-bundle/chunks/telemetry-WTYFUPRL.js.map +0 -1
- package/dist/cli-bundle/chunks/test-all-PZTBLLQ6.js +0 -360
- package/dist/cli-bundle/chunks/test-all-PZTBLLQ6.js.map +0 -7
- package/dist/cli-bundle/chunks/test-all-XLPI4USF.js +0 -357
- package/dist/cli-bundle/chunks/test-all-XLPI4USF.js.map +0 -1
- package/dist/cli-bundle/chunks/test-runs-CA6K32RD.js.map +0 -1
- package/dist/cli-bundle/chunks/test-runs-LANLLPVO.js.map +0 -7
- package/dist/cli-bundle/chunks/update-UXDLTEOZ.js +0 -24
- package/dist/cli-bundle/chunks/validate-2G566PKQ.js.map +0 -7
- package/dist/cli-bundle/chunks/validate-BDPVXHHH.js.map +0 -1
- /package/dist/cli-bundle/chunks/{activity-MVSEND6D.js.map → activity-CUC4JY3U.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{activity-EJBMXUBH.js.map → activity-WEIEMM73.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{append-KDHT4GHI.js.map → append-H32VOR2Y.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{append-LEDBAM3K.js.map → append-UBM632FK.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-SJZTPVFT.js.map → chunk-2ASNV4DH.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-JVQ7UOYC.js.map → chunk-2CHRYUXL.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-DRPF274X.js.map → chunk-3LCUASYG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-JJ4SG243.js.map → chunk-3Q2HBMTI.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-TQ6E76BE.js.map → chunk-55XRYWEG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-IBU2LLWM.js.map → chunk-A6VOGKBA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-MLHX6DN5.js.map → chunk-AIAIXG7I.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-5ABGFWR4.js.map → chunk-BTX5MIQF.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-3JWQCLR5.js.map → chunk-CYBDUHNO.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-WFJZDUM7.js.map → chunk-CZPVDLD2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-HUYYMTGW.js.map → chunk-EUKTMRN3.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-EVWYAG46.js.map → chunk-FFOQHGNH.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-IF4ERU6A.js.map → chunk-GFMSLORL.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-IDYCAK35.js.map → chunk-H4GRLYJS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-VMY7MZEM.js.map → chunk-HQTPRV4D.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-7L6TXOOC.js.map → chunk-JMK5GCK2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-KRASIL6M.js.map → chunk-K2VYLVX4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-4YIMPANT.js.map → chunk-KCO2EAN5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-D6USKAMA.js.map → chunk-KLXF7NCC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-OB3RJV5F.js.map → chunk-LRKMWUUV.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-74PUWBGN.js.map → chunk-LTRAF2D7.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-4TXTVZL3.js.map → chunk-MRD4T5LF.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-E2Q2ULMR.js.map → chunk-N2JSWVWG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-7RIJGN4R.js.map → chunk-QH3FSKRJ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-OUQ5JEFM.js.map → chunk-S62UANU7.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-DLDCPF5X.js.map → chunk-U2BEEM2X.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-73PTKMAE.js.map → chunk-UT73HUPC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-F7G53BOA.js.map → chunk-UTSH5GWX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-JIP67N2K.js.map → chunk-Y4NRKBFW.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-FBZ5XAAF.js.map → chunk-YPKFV2JR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-BN3CWK6G.js.map → chunk-ZNHEYCDD.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-YEDFE4DC.js.map → chunk-ZNT7KEWE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{claim-HMCLSLUE.js.map → claim-SENTPZBN.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{claim-6NINZYB3.js.map → claim-Z7MEQCBT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-OP3LK7Z2.js.map → close-424MX4CU.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-37KEHLYM.js.map → close-YCWQQPDS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{comments-ETHABIY6.js.map → comments-4FGNTSNV.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{comments-MU2WMBUY.js.map → comments-7YS5MY5X.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{context-7ZEZV3BV.js.map → context-LHVKJSPJ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{context-XDI4DKKT.js.map → context-ZQY54JNS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{copy-JJ3KOQW2.js.map → copy-GYNQQPW2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{copy-CWM6SBY6.js.map → copy-TLW7JTQT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{create-J5Q2ELZT.js.map → create-VSKYSOCD.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{create-DFMNBKBS.js.map → create-XTMAPS7I.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{delete-2GZLQEUQ.js.map → delete-4W5JYCEG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{delete-OOQS4KVD.js.map → delete-ANTOTI2I.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{deps-IF4IGL4R.js.map → deps-HPPE6MJN.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{deps-ZVGGCRR6.js.map → deps-ZQZN54EZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{docs-NFTBCQQC.js.map → docs-RPOVFMP3.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{docs-2TIFR62T.js.map → docs-XJNYBJGE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{eval-2F6EH4XN.js.map → eval-DM6JBZTS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{eval-PFKXQR3B.js.map → eval-RFBI5FGS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{extension-GMVOIP4O.js.map → extension-B3YY4WY5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{extension-3LRYX7SW.js.map → extension-TTSEFQTS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{files-DF3HO6XK.js.map → files-5D65CHGE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{files-T5ODMETM.js.map → files-GPIG77EN.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{focus-MY5ARIEK.js.map → focus-C3PEJV2C.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{focus-DLXKK4AH.js.map → focus-ZHN7WIGX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{gc-MDGRR2SU.js.map → gc-D4JQ6OWN.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{gc-FULIVYR4.js.map → gc-VZIXDL32.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-5XUSLAJA.js.map → history-DD7L7BNL.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-X4OSES6K.js.map → history-IL7XCEX2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-redact-BVHWDXPR.js.map → history-redact-IX4YEWMY.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-redact-45YW65BK.js.map → history-redact-VYCWQFK7.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{init-KO7CGIRQ.js.map → init-F27NHENZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{init-TRYJELH4.js.map → init-HHVQQP6C.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{learnings-LHZT5BHW.js.map → learnings-HJVDQIGY.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{learnings-3F7YLI45.js.map → learnings-XSFSUUWK.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{list-Y6AU5BJS.js.map → list-HPMEKCAA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{list-ROT7JF62.js.map → list-VMPWTURB.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{notes-FW6YFLND.js.map → notes-GDZIKGR6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{notes-EVJZ3VAB.js.map → notes-WDDBPC4D.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{profile-CHAW6SEA.js.map → profile-CCOKZ2IQ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{profile-UPZGCDOG.js.map → profile-HUCENIEQ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{restore-DKMCLPI5.js.map → restore-4CBWUMCX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{restore-IRAKSWIW.js.map → restore-5UEAGG3W.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{scheduling-shortcuts-3F4QUEDH.js.map → scheduling-shortcuts-6VFKNKCM.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{scheduling-shortcuts-BNZLQK36.js.map → scheduling-shortcuts-ERHCVTEM.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{schema-OLT6LVKH.js.map → schema-TDGK6N3I.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{schema-XJXKJQF5.js.map → schema-UE5KKAUX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{search-KP6H7COV.js.map → search-FP7MEU4S.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{search-CX5UMV4H.js.map → search-K4CFLQ5S.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{stats-QZUG6MX5.js.map → stats-NJJCALEZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{stats-7XW4OEMK.js.map → stats-XT6QRKQY.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{test-QNDXZQCW.js.map → test-UFSJ5YIO.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{test-HU2BS7EY.js.map → test-YCDAUBWF.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-UXDLTEOZ.js.map → update-MTCFES6X.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-DJKWLBWJ.js.map → update-Y5WQVT5O.js.map} +0 -0
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Provides CLI runtime support for Migration Gates.
|
|
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]="e5659f1c-76e6-52e9-96f6-201091483918")}catch(e){}}();
|
|
8
8
|
import { pathExists } from "../core/fs/fs-utils.js";
|
|
9
9
|
import { getActiveExtensionRegistrations } from "../core/extensions/index.js";
|
|
10
10
|
import { resolveItemTypeRegistry } from "../core/item/type-registry.js";
|
|
@@ -72,55 +72,32 @@ export function collectMandatoryMigrationBlockers(migrations) {
|
|
|
72
72
|
function hasMutatingListValues(value) {
|
|
73
73
|
return Array.isArray(value) && value.length > 0;
|
|
74
74
|
}
|
|
75
|
+
const ALWAYS_MUTATING_COMMANDS = new Set(["create", "beads import", "todos import"]);
|
|
76
|
+
const FORCEABLE_MUTATING_COMMANDS = new Set(["restore", "update", "close", "delete", "append", "claim", "release"]);
|
|
77
|
+
const TEXT_APPEND_COMMANDS = new Set(["comments", "notes", "learnings"]);
|
|
78
|
+
const LIST_MUTATION_COMMANDS = new Set(["files", "docs", "test"]);
|
|
75
79
|
/**
|
|
76
80
|
* Implements decide write gate for the public runtime surface of this module.
|
|
77
81
|
*/
|
|
78
82
|
export function decideWriteGate(commandPath, options) {
|
|
79
83
|
const forceRequested = options.force === true;
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
case "beads import":
|
|
83
|
-
case "todos import":
|
|
84
|
-
return {
|
|
85
|
-
isMutation: true,
|
|
86
|
-
forceCapable: false,
|
|
87
|
-
forceRequested: false,
|
|
88
|
-
};
|
|
89
|
-
case "restore":
|
|
90
|
-
case "update":
|
|
91
|
-
case "close":
|
|
92
|
-
case "delete":
|
|
93
|
-
case "append":
|
|
94
|
-
case "claim":
|
|
95
|
-
case "release":
|
|
96
|
-
return {
|
|
97
|
-
isMutation: true,
|
|
98
|
-
forceCapable: true,
|
|
99
|
-
forceRequested,
|
|
100
|
-
};
|
|
101
|
-
case "comments":
|
|
102
|
-
case "notes":
|
|
103
|
-
case "learnings":
|
|
104
|
-
return {
|
|
105
|
-
isMutation: typeof options.add === "string",
|
|
106
|
-
forceCapable: true,
|
|
107
|
-
forceRequested,
|
|
108
|
-
};
|
|
109
|
-
case "files":
|
|
110
|
-
case "docs":
|
|
111
|
-
case "test":
|
|
112
|
-
return {
|
|
113
|
-
isMutation: hasMutatingListValues(options.add) || hasMutatingListValues(options.remove),
|
|
114
|
-
forceCapable: true,
|
|
115
|
-
forceRequested,
|
|
116
|
-
};
|
|
117
|
-
default:
|
|
118
|
-
return {
|
|
119
|
-
isMutation: false,
|
|
120
|
-
forceCapable: false,
|
|
121
|
-
forceRequested: false,
|
|
122
|
-
};
|
|
84
|
+
if (ALWAYS_MUTATING_COMMANDS.has(commandPath)) {
|
|
85
|
+
return { isMutation: true, forceCapable: false, forceRequested: false };
|
|
123
86
|
}
|
|
87
|
+
if (FORCEABLE_MUTATING_COMMANDS.has(commandPath)) {
|
|
88
|
+
return { isMutation: true, forceCapable: true, forceRequested };
|
|
89
|
+
}
|
|
90
|
+
if (TEXT_APPEND_COMMANDS.has(commandPath)) {
|
|
91
|
+
return { isMutation: typeof options.add === "string", forceCapable: true, forceRequested };
|
|
92
|
+
}
|
|
93
|
+
if (LIST_MUTATION_COMMANDS.has(commandPath)) {
|
|
94
|
+
return {
|
|
95
|
+
isMutation: hasMutatingListValues(options.add) || hasMutatingListValues(options.remove),
|
|
96
|
+
forceCapable: true,
|
|
97
|
+
forceRequested,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
return { isMutation: false, forceCapable: false, forceRequested: false };
|
|
124
101
|
}
|
|
125
102
|
/**
|
|
126
103
|
* Implements enforce mandatory migration write gate for the public runtime surface of this module.
|
|
@@ -169,4 +146,4 @@ export async function enforceItemFormatWriteGateAndPreflightMigration(commandPat
|
|
|
169
146
|
}
|
|
170
147
|
}
|
|
171
148
|
//# sourceMappingURL=migration-gates.js.map
|
|
172
|
-
//# debugId=
|
|
149
|
+
//# debugId=e5659f1c-76e6-52e9-96f6-201091483918
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migration-gates.js","sources":["cli/migration-gates.ts"],"sourceRoot":"/","sourcesContent":["/**\n * @module cli/migration-gates\n *\n * Provides CLI runtime support for Migration Gates.\n */\nimport { pathExists } from \"../core/fs/fs-utils.js\";\nimport { getActiveExtensionRegistrations, type PreflightRuntimeDecision } from \"../core/extensions/index.js\";\nimport { resolveItemTypeRegistry } from \"../core/item/type-registry.js\";\nimport { migrateItemFilesToFormat } from \"../core/store/item-format-migration.js\";\nimport { getSettingsPath } from \"../core/store/paths.js\";\nimport { readSettingsWithMetadata, writeSettings } from \"../core/store/settings.js\";\nimport { EXIT_CODE } from \"../core/shared/constants.js\";\nimport { PmCliError } from \"../core/shared/errors.js\";\nimport { toNonEmptyStringOrUndefined } from \"../core/shared/primitives.js\";\nimport { printError } from \"../core/output/output.js\";\n\n/**\n * Documents the mandatory migration blocker payload exchanged by command, SDK, and package integrations.\n */\nexport interface MandatoryMigrationBlocker {\n layer: \"global\" | \"project\";\n name: string;\n id: string;\n status: string;\n}\n\n/**\n * Documents the write gate decision payload exchanged by command, SDK, and package integrations.\n */\nexport interface WriteGateDecision {\n isMutation: boolean;\n forceCapable: boolean;\n forceRequested: boolean;\n}\n\n/**\n * Implements resolve migration id for the public runtime surface of this module.\n */\nexport function resolveMigrationId(definition: Record<string, unknown>, fallbackIndex: number): string {\n const explicit = toNonEmptyStringOrUndefined(definition.id);\n if (explicit) {\n return explicit;\n }\n return `migration-${String(fallbackIndex + 1).padStart(3, \"0\")}`;\n}\n\n/**\n * Implements resolve normalized migration status for the public runtime surface of this module.\n */\nexport function resolveNormalizedMigrationStatus(definition: Record<string, unknown>): string {\n const normalized = toNonEmptyStringOrUndefined(definition.status)?.toLowerCase();\n return normalized ?? \"pending\";\n}\n\nfunction isMandatoryMigrationDefinition(definition: Record<string, unknown>): boolean {\n return definition.mandatory === true;\n}\n\nfunction compareMandatoryMigrationBlockers(left: MandatoryMigrationBlocker, right: MandatoryMigrationBlocker): number {\n const byLayer = left.layer.localeCompare(right.layer);\n if (byLayer !== 0) {\n return byLayer;\n }\n const byName = left.name.localeCompare(right.name);\n if (byName !== 0) {\n return byName;\n }\n return left.id.localeCompare(right.id);\n}\n\n/**\n * Implements collect mandatory migration blockers for the public runtime surface of this module.\n */\nexport function collectMandatoryMigrationBlockers(\n migrations: Array<{\n layer: \"global\" | \"project\";\n name: string;\n definition: Record<string, unknown>;\n }>,\n): MandatoryMigrationBlocker[] {\n const blockers: MandatoryMigrationBlocker[] = [];\n migrations.forEach((entry, index) => {\n if (!isMandatoryMigrationDefinition(entry.definition)) {\n return;\n }\n const status = resolveNormalizedMigrationStatus(entry.definition);\n if (status === \"applied\") {\n return;\n }\n blockers.push({\n layer: entry.layer,\n name: entry.name,\n id: resolveMigrationId(entry.definition, index),\n status,\n });\n });\n blockers.sort(compareMandatoryMigrationBlockers);\n return blockers;\n}\n\nfunction hasMutatingListValues(value: unknown): boolean {\n return Array.isArray(value) && value.length > 0;\n}\n\n/**\n * Implements decide write gate for the public runtime surface of this module.\n */\nexport function decideWriteGate(commandPath: string, options: Record<string, unknown>): WriteGateDecision {\n const forceRequested = options.force === true;\n switch (commandPath) {\n case \"create\":\n case \"beads import\":\n case \"todos import\":\n return {\n isMutation: true,\n forceCapable: false,\n forceRequested: false,\n };\n case \"restore\":\n case \"update\":\n case \"close\":\n case \"delete\":\n case \"append\":\n case \"claim\":\n case \"release\":\n return {\n isMutation: true,\n forceCapable: true,\n forceRequested,\n };\n case \"comments\":\n case \"notes\":\n case \"learnings\":\n return {\n isMutation: typeof options.add === \"string\",\n forceCapable: true,\n forceRequested,\n };\n case \"files\":\n case \"docs\":\n case \"test\":\n return {\n isMutation: hasMutatingListValues(options.add) || hasMutatingListValues(options.remove),\n forceCapable: true,\n forceRequested,\n };\n default:\n return {\n isMutation: false,\n forceCapable: false,\n forceRequested: false,\n };\n }\n}\n\n/**\n * Implements enforce mandatory migration write gate for the public runtime surface of this module.\n */\nexport function enforceMandatoryMigrationWriteGate(\n commandPath: string,\n options: Record<string, unknown>,\n blockers: MandatoryMigrationBlocker[],\n): void {\n if (blockers.length === 0) {\n return;\n }\n const decision = decideWriteGate(commandPath, options);\n if (!decision.isMutation) {\n return;\n }\n if (decision.forceCapable && decision.forceRequested) {\n return;\n }\n const codes = blockers.map(\n (entry) => `extension_migration_blocking:${entry.layer}:${entry.name}:${entry.id}:${entry.status}`,\n );\n const forceGuidance = decision.forceCapable\n ? \"Re-run this command with --force to bypass.\"\n : \"This command path does not support --force bypass.\";\n throw new PmCliError(\n `Write command \"${commandPath}\" blocked by unresolved mandatory extension migrations (${codes.join(\",\")}). ${forceGuidance}`,\n EXIT_CODE.CONFLICT,\n );\n}\n\n/**\n * Implements enforce item format write gate and preflight migration for the public runtime surface of this module.\n */\nexport async function enforceItemFormatWriteGateAndPreflightMigration(\n commandPath: string,\n options: Record<string, unknown>,\n pmRoot: string,\n decision: PreflightRuntimeDecision,\n): Promise<void> {\n const writeGate = decideWriteGate(commandPath, options);\n if (!writeGate.isMutation) {\n return;\n }\n if (!decision.enforce_item_format_gate && !decision.run_preflight_item_format_sync) {\n return;\n }\n if (!(await pathExists(getSettingsPath(pmRoot)))) {\n return;\n }\n const { settings, metadata, warnings } = await readSettingsWithMetadata(pmRoot);\n for (const warning of warnings) {\n printError(`warning:${warning}`);\n }\n if (decision.enforce_item_format_gate && !metadata.has_explicit_item_format) {\n await writeSettings(pmRoot, settings, \"item_format:auto_select_default\");\n }\n if (decision.run_preflight_item_format_sync) {\n const typeRegistry = resolveItemTypeRegistry(settings, getActiveExtensionRegistrations());\n await migrateItemFilesToFormat(\n pmRoot,\n settings.item_format,\n \"item_format:pre_mutation_sync\",\n typeRegistry.type_to_folder,\n settings.schema,\n );\n }\n}\n"],"names":[],"mappings":"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","debugId":"3f652b37-a8f5-5d02-9199-d2982382b7a8"}
|
|
1
|
+
{"version":3,"file":"migration-gates.js","sources":["cli/migration-gates.ts"],"sourceRoot":"/","sourcesContent":["/**\n * @module cli/migration-gates\n *\n * Provides CLI runtime support for Migration Gates.\n */\nimport { pathExists } from \"../core/fs/fs-utils.js\";\nimport { getActiveExtensionRegistrations, type PreflightRuntimeDecision } from \"../core/extensions/index.js\";\nimport { resolveItemTypeRegistry } from \"../core/item/type-registry.js\";\nimport { migrateItemFilesToFormat } from \"../core/store/item-format-migration.js\";\nimport { getSettingsPath } from \"../core/store/paths.js\";\nimport { readSettingsWithMetadata, writeSettings } from \"../core/store/settings.js\";\nimport { EXIT_CODE } from \"../core/shared/constants.js\";\nimport { PmCliError } from \"../core/shared/errors.js\";\nimport { toNonEmptyStringOrUndefined } from \"../core/shared/primitives.js\";\nimport { printError } from \"../core/output/output.js\";\n\n/**\n * Documents the mandatory migration blocker payload exchanged by command, SDK, and package integrations.\n */\nexport interface MandatoryMigrationBlocker {\n layer: \"global\" | \"project\";\n name: string;\n id: string;\n status: string;\n}\n\n/**\n * Documents the write gate decision payload exchanged by command, SDK, and package integrations.\n */\nexport interface WriteGateDecision {\n isMutation: boolean;\n forceCapable: boolean;\n forceRequested: boolean;\n}\n\n/**\n * Implements resolve migration id for the public runtime surface of this module.\n */\nexport function resolveMigrationId(definition: Record<string, unknown>, fallbackIndex: number): string {\n const explicit = toNonEmptyStringOrUndefined(definition.id);\n if (explicit) {\n return explicit;\n }\n return `migration-${String(fallbackIndex + 1).padStart(3, \"0\")}`;\n}\n\n/**\n * Implements resolve normalized migration status for the public runtime surface of this module.\n */\nexport function resolveNormalizedMigrationStatus(definition: Record<string, unknown>): string {\n const normalized = toNonEmptyStringOrUndefined(definition.status)?.toLowerCase();\n return normalized ?? \"pending\";\n}\n\nfunction isMandatoryMigrationDefinition(definition: Record<string, unknown>): boolean {\n return definition.mandatory === true;\n}\n\nfunction compareMandatoryMigrationBlockers(left: MandatoryMigrationBlocker, right: MandatoryMigrationBlocker): number {\n const byLayer = left.layer.localeCompare(right.layer);\n if (byLayer !== 0) {\n return byLayer;\n }\n const byName = left.name.localeCompare(right.name);\n if (byName !== 0) {\n return byName;\n }\n return left.id.localeCompare(right.id);\n}\n\n/**\n * Implements collect mandatory migration blockers for the public runtime surface of this module.\n */\nexport function collectMandatoryMigrationBlockers(\n migrations: Array<{\n layer: \"global\" | \"project\";\n name: string;\n definition: Record<string, unknown>;\n }>,\n): MandatoryMigrationBlocker[] {\n const blockers: MandatoryMigrationBlocker[] = [];\n migrations.forEach((entry, index) => {\n if (!isMandatoryMigrationDefinition(entry.definition)) {\n return;\n }\n const status = resolveNormalizedMigrationStatus(entry.definition);\n if (status === \"applied\") {\n return;\n }\n blockers.push({\n layer: entry.layer,\n name: entry.name,\n id: resolveMigrationId(entry.definition, index),\n status,\n });\n });\n blockers.sort(compareMandatoryMigrationBlockers);\n return blockers;\n}\n\nfunction hasMutatingListValues(value: unknown): boolean {\n return Array.isArray(value) && value.length > 0;\n}\n\nconst ALWAYS_MUTATING_COMMANDS = new Set([\"create\", \"beads import\", \"todos import\"]);\nconst FORCEABLE_MUTATING_COMMANDS = new Set([\"restore\", \"update\", \"close\", \"delete\", \"append\", \"claim\", \"release\"]);\nconst TEXT_APPEND_COMMANDS = new Set([\"comments\", \"notes\", \"learnings\"]);\nconst LIST_MUTATION_COMMANDS = new Set([\"files\", \"docs\", \"test\"]);\n\n/**\n * Implements decide write gate for the public runtime surface of this module.\n */\nexport function decideWriteGate(commandPath: string, options: Record<string, unknown>): WriteGateDecision {\n const forceRequested = options.force === true;\n if (ALWAYS_MUTATING_COMMANDS.has(commandPath)) {\n return { isMutation: true, forceCapable: false, forceRequested: false };\n }\n if (FORCEABLE_MUTATING_COMMANDS.has(commandPath)) {\n return { isMutation: true, forceCapable: true, forceRequested };\n }\n if (TEXT_APPEND_COMMANDS.has(commandPath)) {\n return { isMutation: typeof options.add === \"string\", forceCapable: true, forceRequested };\n }\n if (LIST_MUTATION_COMMANDS.has(commandPath)) {\n return {\n isMutation: hasMutatingListValues(options.add) || hasMutatingListValues(options.remove),\n forceCapable: true,\n forceRequested,\n };\n }\n return { isMutation: false, forceCapable: false, forceRequested: false };\n}\n\n/**\n * Implements enforce mandatory migration write gate for the public runtime surface of this module.\n */\nexport function enforceMandatoryMigrationWriteGate(\n commandPath: string,\n options: Record<string, unknown>,\n blockers: MandatoryMigrationBlocker[],\n): void {\n if (blockers.length === 0) {\n return;\n }\n const decision = decideWriteGate(commandPath, options);\n if (!decision.isMutation) {\n return;\n }\n if (decision.forceCapable && decision.forceRequested) {\n return;\n }\n const codes = blockers.map(\n (entry) => `extension_migration_blocking:${entry.layer}:${entry.name}:${entry.id}:${entry.status}`,\n );\n const forceGuidance = decision.forceCapable\n ? \"Re-run this command with --force to bypass.\"\n : \"This command path does not support --force bypass.\";\n throw new PmCliError(\n `Write command \"${commandPath}\" blocked by unresolved mandatory extension migrations (${codes.join(\",\")}). ${forceGuidance}`,\n EXIT_CODE.CONFLICT,\n );\n}\n\n/**\n * Implements enforce item format write gate and preflight migration for the public runtime surface of this module.\n */\nexport async function enforceItemFormatWriteGateAndPreflightMigration(\n commandPath: string,\n options: Record<string, unknown>,\n pmRoot: string,\n decision: PreflightRuntimeDecision,\n): Promise<void> {\n const writeGate = decideWriteGate(commandPath, options);\n if (!writeGate.isMutation) {\n return;\n }\n if (!decision.enforce_item_format_gate && !decision.run_preflight_item_format_sync) {\n return;\n }\n if (!(await pathExists(getSettingsPath(pmRoot)))) {\n return;\n }\n const { settings, metadata, warnings } = await readSettingsWithMetadata(pmRoot);\n for (const warning of warnings) {\n printError(`warning:${warning}`);\n }\n if (decision.enforce_item_format_gate && !metadata.has_explicit_item_format) {\n await writeSettings(pmRoot, settings, \"item_format:auto_select_default\");\n }\n if (decision.run_preflight_item_format_sync) {\n const typeRegistry = resolveItemTypeRegistry(settings, getActiveExtensionRegistrations());\n await migrateItemFilesToFormat(\n pmRoot,\n settings.item_format,\n \"item_format:pre_mutation_sync\",\n typeRegistry.type_to_folder,\n settings.schema,\n );\n }\n}\n"],"names":[],"mappings":"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","debugId":"e5659f1c-76e6-52e9-96f6-201091483918"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Provides CLI runtime support for Register List Query.
|
|
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]="a3974412-2ea9-5d05-b064-54ae0f43978e")}catch(e){}}();
|
|
8
8
|
import { Option } from "commander";
|
|
9
9
|
import { EXIT_CODE } from "../core/shared/constants.js";
|
|
10
10
|
import { PmCliError } from "../core/shared/errors.js";
|
|
@@ -56,6 +56,83 @@ function resolveReadCommandOutputFormat(commandLabel, rawFormat, globalOptions)
|
|
|
56
56
|
json: normalized === "json",
|
|
57
57
|
};
|
|
58
58
|
}
|
|
59
|
+
function applyDefaultBriefListMode(listOptions, defaultBrief) {
|
|
60
|
+
if (defaultBrief === true &&
|
|
61
|
+
listOptions.includeBody !== true &&
|
|
62
|
+
listOptions.compact !== true &&
|
|
63
|
+
listOptions.brief !== true &&
|
|
64
|
+
listOptions.full !== true &&
|
|
65
|
+
listOptions.fields === undefined) {
|
|
66
|
+
listOptions.brief = true;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
function addHiddenOption(command, flags, description) {
|
|
70
|
+
command.addOption(new Option(flags, description).hideHelp());
|
|
71
|
+
}
|
|
72
|
+
function registerContentAndGovernanceFilters(command) {
|
|
73
|
+
command
|
|
74
|
+
.option("--has-notes", "Show only items that have notes")
|
|
75
|
+
.option("--has-learnings", "Show only items that have learnings")
|
|
76
|
+
.option("--has-files", "Show only items that have linked files")
|
|
77
|
+
.option("--has-docs", "Show only items that have linked docs")
|
|
78
|
+
.option("--has-tests", "Show only items that have linked tests")
|
|
79
|
+
.option("--has-comments", "Show only items that have comments")
|
|
80
|
+
.option("--has-deps", "Show only items that have dependencies")
|
|
81
|
+
.option("--has-body", "Show only items that have a non-empty body")
|
|
82
|
+
.option("--has-linked-command", "Show only items whose linked tests carry a runnable command")
|
|
83
|
+
.option("--no-notes", "Show only items that have no notes")
|
|
84
|
+
.option("--no-learnings", "Show only items that have no learnings")
|
|
85
|
+
.option("--no-files", "Show only items that have no linked files")
|
|
86
|
+
.option("--no-docs", "Show only items that have no linked docs")
|
|
87
|
+
.option("--no-tests", "Show only items that have no linked tests")
|
|
88
|
+
.option("--no-comments", "Show only items that have no comments")
|
|
89
|
+
.option("--no-deps", "Show only items that have no dependencies")
|
|
90
|
+
.option("--empty-body", "Show only items with an empty body")
|
|
91
|
+
.option("--no-linked-command", "Show only items whose linked tests carry no runnable command")
|
|
92
|
+
.option("--filter-reviewer-missing", "Show only items missing reviewer")
|
|
93
|
+
.option("--filter-risk-missing", "Show only items missing risk")
|
|
94
|
+
.option("--filter-confidence-missing", "Show only items missing confidence")
|
|
95
|
+
.option("--filter-sprint-missing", "Show only items missing sprint")
|
|
96
|
+
.option("--filter-release-missing", "Show only items missing release");
|
|
97
|
+
}
|
|
98
|
+
async function runRegisteredListCommand(params) {
|
|
99
|
+
const globalOptions = getGlobalOptions(params.actionCommand);
|
|
100
|
+
const startedAt = Date.now();
|
|
101
|
+
const listOptions = normalizeListOptions(params.options);
|
|
102
|
+
applyDefaultBriefListMode(listOptions, params.defaultBrief);
|
|
103
|
+
if (params.excludeTerminal)
|
|
104
|
+
listOptions.excludeTerminal = true;
|
|
105
|
+
const { runList } = await import("./commands/list.js");
|
|
106
|
+
const result = await runList(params.status, listOptions, globalOptions);
|
|
107
|
+
const streamMode = params.options.stream === true;
|
|
108
|
+
const listFormat = parseListFormat(params.options.format);
|
|
109
|
+
const tabular = listFormat === "csv" || listFormat === "table";
|
|
110
|
+
const effectiveGlobal = listFormat === "json" || listFormat === "toon"
|
|
111
|
+
? resolveReadCommandOutputFormat("List", params.options.format, globalOptions)
|
|
112
|
+
: globalOptions;
|
|
113
|
+
if (streamMode && !effectiveGlobal.json) {
|
|
114
|
+
throw new PmCliError("--stream requires --json output mode.", EXIT_CODE.USAGE);
|
|
115
|
+
}
|
|
116
|
+
if (tabular && streamMode) {
|
|
117
|
+
throw new PmCliError("--format csv|table cannot be combined with --stream (line-delimited JSON).", EXIT_CODE.USAGE);
|
|
118
|
+
}
|
|
119
|
+
if (tabular) {
|
|
120
|
+
const rows = result.items;
|
|
121
|
+
const rendered = listFormat === "csv" ? renderRowsAsCsv(rows) : renderRowsAsTable(rows);
|
|
122
|
+
if (!effectiveGlobal.quiet && rendered.length > 0) {
|
|
123
|
+
writeStdout(`${rendered}\n`);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
else if (streamMode) {
|
|
127
|
+
printListJsonStream(params.name, result, effectiveGlobal);
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
printResult(result, effectiveGlobal);
|
|
131
|
+
}
|
|
132
|
+
if (globalOptions.profile) {
|
|
133
|
+
printError(`profile:command=${params.name} took_ms=${Date.now() - startedAt}`);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
59
136
|
/**
|
|
60
137
|
* Implements register list query commands for the public runtime surface of this module.
|
|
61
138
|
*/
|
|
@@ -67,41 +144,6 @@ export function registerListQueryCommands(program, options) {
|
|
|
67
144
|
// (e.g. --assignee_filter for --assignee-filter) so they no longer bloat
|
|
68
145
|
// --help output. The option still appears in command.options, so JSON help
|
|
69
146
|
// and completion are unchanged.
|
|
70
|
-
function addHiddenOption(command, flags, description) {
|
|
71
|
-
command.addOption(new Option(flags, description).hideHelp());
|
|
72
|
-
}
|
|
73
|
-
// Register the content-field presence/absence filters (GH-242) and the
|
|
74
|
-
// governance-missing filters (GH-236) on a list-family or search command.
|
|
75
|
-
// Presence flags are plain booleans; absence flags use commander negation
|
|
76
|
-
// (`--no-notes` stores notes=false) except `--empty-body` which is its own
|
|
77
|
-
// dest so it composes with a future `--has-body`. linked_command tracks
|
|
78
|
-
// whether a linked test carries a runnable command.
|
|
79
|
-
function registerContentAndGovernanceFilters(command) {
|
|
80
|
-
command
|
|
81
|
-
.option("--has-notes", "Show only items that have notes")
|
|
82
|
-
.option("--has-learnings", "Show only items that have learnings")
|
|
83
|
-
.option("--has-files", "Show only items that have linked files")
|
|
84
|
-
.option("--has-docs", "Show only items that have linked docs")
|
|
85
|
-
.option("--has-tests", "Show only items that have linked tests")
|
|
86
|
-
.option("--has-comments", "Show only items that have comments")
|
|
87
|
-
.option("--has-deps", "Show only items that have dependencies")
|
|
88
|
-
.option("--has-body", "Show only items that have a non-empty body")
|
|
89
|
-
.option("--has-linked-command", "Show only items whose linked tests carry a runnable command")
|
|
90
|
-
.option("--no-notes", "Show only items that have no notes")
|
|
91
|
-
.option("--no-learnings", "Show only items that have no learnings")
|
|
92
|
-
.option("--no-files", "Show only items that have no linked files")
|
|
93
|
-
.option("--no-docs", "Show only items that have no linked docs")
|
|
94
|
-
.option("--no-tests", "Show only items that have no linked tests")
|
|
95
|
-
.option("--no-comments", "Show only items that have no comments")
|
|
96
|
-
.option("--no-deps", "Show only items that have no dependencies")
|
|
97
|
-
.option("--empty-body", "Show only items with an empty body")
|
|
98
|
-
.option("--no-linked-command", "Show only items whose linked tests carry no runnable command")
|
|
99
|
-
.option("--filter-reviewer-missing", "Show only items missing reviewer")
|
|
100
|
-
.option("--filter-risk-missing", "Show only items missing risk")
|
|
101
|
-
.option("--filter-confidence-missing", "Show only items missing confidence")
|
|
102
|
-
.option("--filter-sprint-missing", "Show only items missing sprint")
|
|
103
|
-
.option("--filter-release-missing", "Show only items missing release");
|
|
104
|
-
}
|
|
105
147
|
function registerListCommand(name, description, status, excludeTerminal, allowStatusFilter, defaultBrief) {
|
|
106
148
|
const command = program.command(name).description(description);
|
|
107
149
|
if (allowStatusFilter) {
|
|
@@ -144,51 +186,7 @@ export function registerListQueryCommands(program, options) {
|
|
|
144
186
|
registerContentAndGovernanceFilters(command);
|
|
145
187
|
command
|
|
146
188
|
.action(async (options, actionCommand) => {
|
|
147
|
-
|
|
148
|
-
const startedAt = Date.now();
|
|
149
|
-
const listOptions = normalizeListOptions(options);
|
|
150
|
-
if (defaultBrief === true &&
|
|
151
|
-
listOptions.includeBody !== true &&
|
|
152
|
-
listOptions.compact !== true &&
|
|
153
|
-
listOptions.brief !== true &&
|
|
154
|
-
listOptions.full !== true &&
|
|
155
|
-
listOptions.fields === undefined) {
|
|
156
|
-
listOptions.brief = true;
|
|
157
|
-
}
|
|
158
|
-
if (excludeTerminal)
|
|
159
|
-
listOptions.excludeTerminal = true;
|
|
160
|
-
const { runList } = await import("./commands/list.js");
|
|
161
|
-
const result = await runList(status, listOptions, globalOptions);
|
|
162
|
-
const streamMode = options.stream === true;
|
|
163
|
-
const listFormat = parseListFormat(options.format);
|
|
164
|
-
const tabular = listFormat === "csv" || listFormat === "table";
|
|
165
|
-
// json|toon reuse the shared read-command override (honours the
|
|
166
|
-
// --json + --format toon conflict); csv|table are human render modes.
|
|
167
|
-
const effectiveGlobal = listFormat === "json" || listFormat === "toon"
|
|
168
|
-
? resolveReadCommandOutputFormat("List", options.format, globalOptions)
|
|
169
|
-
: globalOptions;
|
|
170
|
-
if (streamMode && !effectiveGlobal.json) {
|
|
171
|
-
throw new PmCliError("--stream requires --json output mode.", EXIT_CODE.USAGE);
|
|
172
|
-
}
|
|
173
|
-
if (tabular && streamMode) {
|
|
174
|
-
throw new PmCliError("--format csv|table cannot be combined with --stream (line-delimited JSON).", EXIT_CODE.USAGE);
|
|
175
|
-
}
|
|
176
|
-
if (tabular) {
|
|
177
|
-
const rows = result.items;
|
|
178
|
-
const rendered = listFormat === "csv" ? renderRowsAsCsv(rows) : renderRowsAsTable(rows);
|
|
179
|
-
if (!effectiveGlobal.quiet && rendered.length > 0) {
|
|
180
|
-
writeStdout(`${rendered}\n`);
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
else if (streamMode) {
|
|
184
|
-
printListJsonStream(name, result, effectiveGlobal);
|
|
185
|
-
}
|
|
186
|
-
else {
|
|
187
|
-
printResult(result, effectiveGlobal);
|
|
188
|
-
}
|
|
189
|
-
if (globalOptions.profile) {
|
|
190
|
-
printError(`profile:command=${name} took_ms=${Date.now() - startedAt}`);
|
|
191
|
-
}
|
|
189
|
+
await runRegisteredListCommand({ name, status, excludeTerminal, defaultBrief, options, actionCommand });
|
|
192
190
|
});
|
|
193
191
|
// Positive alias for --no-truncate (Commander stores the negation as truncate=false).
|
|
194
192
|
addHiddenOption(command, "--all", "Alias for --no-truncate");
|
|
@@ -199,29 +197,20 @@ export function registerListQueryCommands(program, options) {
|
|
|
199
197
|
// Singular alias so `--filter-estimate-missing` works (matches update-many spelling).
|
|
200
198
|
addHiddenOption(command, "--filter-estimate-missing", "Alias for --filter-estimates-missing");
|
|
201
199
|
}
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
}
|
|
217
|
-
if (shouldRegister("list-blocked")) {
|
|
218
|
-
registerListCommand("list-blocked", "List blocked items with optional filters.", "blocked", false, false, true);
|
|
219
|
-
}
|
|
220
|
-
if (shouldRegister("list-closed")) {
|
|
221
|
-
registerListCommand("list-closed", "List closed items with optional filters.", "closed");
|
|
222
|
-
}
|
|
223
|
-
if (shouldRegister("list-canceled")) {
|
|
224
|
-
registerListCommand("list-canceled", "List canceled items with optional filters.", "canceled");
|
|
200
|
+
const listCommandDescriptors = [
|
|
201
|
+
{ name: "list", description: "List active items with optional filters.", excludeTerminal: true, allowStatusFilter: true, defaultBrief: true },
|
|
202
|
+
{ name: "list-all", description: "List all items with optional filters.", excludeTerminal: false, allowStatusFilter: true },
|
|
203
|
+
{ name: "list-draft", description: "List draft items with optional filters.", status: "draft" },
|
|
204
|
+
{ name: "list-open", description: "List open items with optional filters.", status: "open", excludeTerminal: false, allowStatusFilter: false, defaultBrief: true },
|
|
205
|
+
{ name: "list-in-progress", description: "List in-progress items with optional filters.", status: "in_progress", excludeTerminal: false, allowStatusFilter: false, defaultBrief: true },
|
|
206
|
+
{ name: "list-blocked", description: "List blocked items with optional filters.", status: "blocked", excludeTerminal: false, allowStatusFilter: false, defaultBrief: true },
|
|
207
|
+
{ name: "list-closed", description: "List closed items with optional filters.", status: "closed" },
|
|
208
|
+
{ name: "list-canceled", description: "List canceled items with optional filters.", status: "canceled" },
|
|
209
|
+
];
|
|
210
|
+
for (const descriptor of listCommandDescriptors) {
|
|
211
|
+
if (shouldRegister(descriptor.name)) {
|
|
212
|
+
registerListCommand(descriptor.name, descriptor.description, descriptor.status, descriptor.excludeTerminal, descriptor.allowStatusFilter, descriptor.defaultBrief);
|
|
213
|
+
}
|
|
225
214
|
}
|
|
226
215
|
if (shouldRegister("aggregate")) {
|
|
227
216
|
const aggregateCommand = program
|
|
@@ -543,4 +532,4 @@ export const _testOnlyRegisterListQuery = {
|
|
|
543
532
|
parseListFormat,
|
|
544
533
|
};
|
|
545
534
|
//# sourceMappingURL=register-list-query.js.map
|
|
546
|
-
//# debugId=
|
|
535
|
+
//# debugId=a3974412-2ea9-5d05-b064-54ae0f43978e
|