@unbrained/pm-cli 2026.7.14 → 2026.7.15
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 +48 -0
- package/README.md +14 -11
- package/dist/cli/argv-utils.d.ts +1 -4
- package/dist/cli/argv-utils.js +3 -13
- package/dist/cli/argv-utils.js.map +1 -1
- package/dist/cli/bootstrap-args.d.ts +6 -4
- package/dist/cli/bootstrap-args.js +51 -16
- package/dist/cli/bootstrap-args.js.map +1 -1
- package/dist/cli/bundle-integrity.d.ts +49 -0
- package/dist/cli/bundle-integrity.js +111 -0
- package/dist/cli/bundle-integrity.js.map +1 -0
- package/dist/cli/commands/completion.js +7 -2
- package/dist/cli/commands/completion.js.map +1 -1
- package/dist/cli/commands/config.d.ts +6 -163
- package/dist/cli/commands/config.js +4 -1133
- package/dist/cli/commands/config.js.map +1 -1
- package/dist/cli/commands/context.d.ts +2 -4
- package/dist/cli/commands/context.js +10 -85
- package/dist/cli/commands/context.js.map +1 -1
- package/dist/cli/commands/create.d.ts +1 -0
- package/dist/cli/commands/create.js +3 -2
- package/dist/cli/commands/create.js.map +1 -1
- package/dist/cli/commands/extension/describe.d.ts +2 -91
- package/dist/cli/commands/extension/describe.js +4 -142
- package/dist/cli/commands/extension/describe.js.map +1 -1
- package/dist/cli/commands/extension/scaffold.d.ts +2 -36
- package/dist/cli/commands/extension/scaffold.js +4 -2435
- package/dist/cli/commands/extension/scaffold.js.map +1 -1
- package/dist/cli/commands/extension/shared.d.ts +2 -28
- package/dist/cli/commands/extension/shared.js +4 -130
- package/dist/cli/commands/extension/shared.js.map +1 -1
- package/dist/cli/commands/extension.d.ts +3 -400
- package/dist/cli/commands/extension.js +4 -2183
- package/dist/cli/commands/extension.js.map +1 -1
- package/dist/cli/commands/gc.d.ts +6 -56
- package/dist/cli/commands/gc.js +4 -270
- package/dist/cli/commands/gc.js.map +1 -1
- package/dist/cli/commands/get.d.ts +18 -5
- package/dist/cli/commands/get.js +117 -58
- package/dist/cli/commands/get.js.map +1 -1
- package/dist/cli/commands/health.d.ts +6 -184
- package/dist/cli/commands/health.js +4 -1747
- package/dist/cli/commands/health.js.map +1 -1
- package/dist/cli/commands/history-compact.d.ts +4 -139
- package/dist/cli/commands/history-compact.js +5 -510
- package/dist/cli/commands/history-compact.js.map +1 -1
- package/dist/cli/commands/history-redact.d.ts +8 -120
- package/dist/cli/commands/history-redact.js +6 -581
- package/dist/cli/commands/history-redact.js.map +1 -1
- package/dist/cli/commands/history-repair.d.ts +7 -89
- package/dist/cli/commands/history-repair.js +5 -257
- package/dist/cli/commands/history-repair.js.map +1 -1
- package/dist/cli/commands/history.d.ts +1 -2
- package/dist/cli/commands/history.js +6 -48
- package/dist/cli/commands/history.js.map +1 -1
- package/dist/cli/commands/index.d.ts +1 -0
- package/dist/cli/commands/index.js +3 -2
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/init-agent-guidance.d.ts +6 -113
- package/dist/cli/commands/init-agent-guidance.js +4 -431
- package/dist/cli/commands/init-agent-guidance.js.map +1 -1
- package/dist/cli/commands/init.d.ts +6 -181
- package/dist/cli/commands/init.js +4 -690
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/next.js +3 -3
- package/dist/cli/commands/next.js.map +1 -1
- package/dist/cli/commands/profile.d.ts +4 -174
- package/dist/cli/commands/profile.js +4 -425
- package/dist/cli/commands/profile.js.map +1 -1
- package/dist/cli/commands/restore.d.ts +4 -19
- package/dist/cli/commands/restore.js +9 -158
- package/dist/cli/commands/restore.js.map +1 -1
- package/dist/cli/commands/schema.d.ts +7 -507
- package/dist/cli/commands/schema.js +5 -1254
- package/dist/cli/commands/schema.js.map +1 -1
- package/dist/cli/commands/test.d.ts +2 -4
- package/dist/cli/commands/test.js +7 -97
- package/dist/cli/commands/test.js.map +1 -1
- package/dist/cli/commands/validate.d.ts +9 -249
- package/dist/cli/commands/validate.js +9 -2150
- package/dist/cli/commands/validate.js.map +1 -1
- package/dist/cli/extension-command-help.js +18 -4
- package/dist/cli/extension-command-help.js.map +1 -1
- package/dist/cli/extension-command-options.js +3 -3
- package/dist/cli/extension-command-options.js.map +1 -1
- package/dist/cli/help-content.js +7 -3
- package/dist/cli/help-content.js.map +1 -1
- package/dist/cli/main.js +20 -30
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/register-list-query.js +4 -2
- package/dist/cli/register-list-query.js.map +1 -1
- package/dist/cli/register-mutation.js +11 -3
- package/dist/cli/register-mutation.js.map +1 -1
- package/dist/cli/register-setup.js +4 -2
- package/dist/cli/register-setup.js.map +1 -1
- package/dist/cli/registration-helpers.js +3 -2
- package/dist/cli/registration-helpers.js.map +1 -1
- package/dist/cli-bundle/bundle-manifest.json +782 -0
- package/dist/cli-bundle/chunks/{append-PVZJDM6J.js → append-OJQFUQ4T.js} +5 -5
- package/dist/cli-bundle/chunks/append-UZVHUO74.js +11 -0
- package/dist/cli-bundle/chunks/{chunk-MQZ3PLCF.js → chunk-2IFFUZLC.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-P6MYFH6K.js → chunk-2JKGO6QX.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-X3GYR4P2.js → chunk-2NCIPMQP.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-Q7E6OYZK.js → chunk-2VPAVL7O.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-DRNJPEPQ.js → chunk-2WSE6PO2.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-FDSBDNYE.js → chunk-34L5OT3Y.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-TH7U4KLY.js → chunk-3AUGG2DP.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-NKW36AMT.js → chunk-3CLU2XZO.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-N3CMP4NI.js → chunk-3S5QVM5H.js} +43 -7
- package/dist/cli-bundle/chunks/chunk-3S5QVM5H.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-3U7ZR6M4.js +64 -0
- package/dist/cli-bundle/chunks/chunk-3U7ZR6M4.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-ABRCOSDC.js → chunk-3WM75PWC.js} +3 -3
- package/dist/cli-bundle/chunks/chunk-4223PVZT.js +121 -0
- package/dist/cli-bundle/chunks/chunk-4223PVZT.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-5URI7TPJ.js → chunk-4XQ3BDV4.js} +281 -164
- package/dist/cli-bundle/chunks/chunk-4XQ3BDV4.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-X6BVXQ52.js → chunk-5JLUII3O.js} +13 -13
- package/dist/cli-bundle/chunks/{chunk-MKL4CP2I.js → chunk-5ZSLZLDN.js} +631 -246
- package/dist/cli-bundle/chunks/chunk-5ZSLZLDN.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-Q37E63AM.js → chunk-6CFNAVTF.js} +21 -141
- package/dist/cli-bundle/chunks/chunk-6CFNAVTF.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-3TL7WOEF.js → chunk-6N2VXVTQ.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-ERL2YFJ2.js → chunk-6S3YSUYG.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-ZUKSZVBW.js → chunk-7B67ZL4N.js} +8 -7
- package/dist/cli-bundle/chunks/chunk-7B67ZL4N.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-IA3YFTXT.js → chunk-7PIWCHTW.js} +11 -13
- package/dist/cli-bundle/chunks/chunk-7PIWCHTW.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-BPD26E3P.js → chunk-7Z4LKRS4.js} +291 -81
- package/dist/cli-bundle/chunks/chunk-7Z4LKRS4.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-IFZA4VB5.js → chunk-AHVTB5I5.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-DO5RGJXT.js → chunk-APRVSW2O.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-NAQYVWSQ.js → chunk-B7PE22W6.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-MD6ULIPJ.js → chunk-BCOFWYW4.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-KADLSPIU.js → chunk-BEP7WJA2.js} +4 -4
- package/dist/cli-bundle/chunks/chunk-BKVG6XOA.js +1114 -0
- package/dist/cli-bundle/chunks/chunk-BKVG6XOA.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-AFWZRL7M.js → chunk-BSEQUTQP.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-AFWZRL7M.js.map → chunk-BSEQUTQP.js.map} +2 -2
- package/dist/cli-bundle/chunks/{chunk-OBDLEQG5.js → chunk-CRVF2JDM.js} +10 -10
- package/dist/cli-bundle/chunks/{chunk-FJZDA6MS.js → chunk-DM4H7FP4.js} +3 -3
- package/dist/cli-bundle/chunks/chunk-DUT67M43.js +5 -0
- package/dist/cli-bundle/chunks/{chunk-44LNIULG.js → chunk-DYH63FX7.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-LWTIRS3Y.js → chunk-E2OJMKML.js} +306 -82
- package/dist/cli-bundle/chunks/chunk-E2OJMKML.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-HAMLIWAF.js → chunk-EAB64KLB.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-CIOZ376P.js → chunk-EACOH7AU.js} +10 -10
- package/dist/cli-bundle/chunks/{chunk-HL7V2PHX.js → chunk-EH2OPHBI.js} +10 -10
- package/dist/cli-bundle/chunks/{chunk-HL7V2PHX.js.map → chunk-EH2OPHBI.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-QK2ZN6UL.js → chunk-EJEXHTY5.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-WQUEHPZB.js → chunk-EYLCSJAI.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-655STMGA.js → chunk-FMBNM2EN.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-RMF3IOYQ.js → chunk-FNSPG7MU.js} +12 -12
- package/dist/cli-bundle/chunks/{chunk-5CT5BW6E.js → chunk-GM5QHQU6.js} +46 -40
- package/dist/cli-bundle/chunks/chunk-GM5QHQU6.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-FTQLW4JD.js → chunk-GOSLKLFE.js} +418 -24
- package/dist/cli-bundle/chunks/chunk-GOSLKLFE.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-KB726FMH.js → chunk-H2Z3FYXQ.js} +4 -4
- package/dist/cli-bundle/chunks/chunk-H3EIEWGR.js +162 -0
- package/dist/cli-bundle/chunks/chunk-H3EIEWGR.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-2QIQGYPW.js → chunk-H5APFTHZ.js} +53 -10
- package/dist/cli-bundle/chunks/chunk-H5APFTHZ.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-HDH3JUGG.js +118 -0
- package/dist/cli-bundle/chunks/chunk-HDH3JUGG.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-ZAYYDNB3.js → chunk-HO4KXD6I.js} +22 -142
- package/dist/cli-bundle/chunks/chunk-HO4KXD6I.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-ILLUE5DI.js → chunk-HYB5AZ63.js} +203 -62
- package/dist/cli-bundle/chunks/{chunk-ILLUE5DI.js.map → chunk-HYB5AZ63.js.map} +3 -3
- package/dist/cli-bundle/chunks/{chunk-BN62TO2S.js → chunk-IA5FKNII.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-JL7WZ4O2.js → chunk-IG3SWA4A.js} +33 -9
- package/dist/cli-bundle/chunks/chunk-IG3SWA4A.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-W6HZ55JO.js → chunk-IJIICKVW.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-IGED7NH2.js → chunk-ILX33QXL.js} +668 -251
- package/dist/cli-bundle/chunks/chunk-ILX33QXL.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-UGTVWL3E.js → chunk-INU6DKT5.js} +47 -41
- package/dist/cli-bundle/chunks/chunk-INU6DKT5.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-UB2QYSTO.js → chunk-J5AOEGDC.js} +26 -18
- package/dist/cli-bundle/chunks/chunk-J5AOEGDC.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-4DY4KPQI.js → chunk-J6364LFM.js} +1330 -937
- package/dist/cli-bundle/chunks/chunk-J6364LFM.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-DVOLZJ3C.js → chunk-J6EY5V4N.js} +1295 -939
- package/dist/cli-bundle/chunks/chunk-J6EY5V4N.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-JFTKLTEF.js +1097 -0
- package/dist/cli-bundle/chunks/chunk-JFTKLTEF.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-M7EWN4TF.js → chunk-JOUQZENX.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-J4NZOP3I.js → chunk-JXQUXVMI.js} +9 -8
- package/dist/cli-bundle/chunks/chunk-JXQUXVMI.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-2FNWQXZ2.js → chunk-JYFOV7FC.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-HLHSQ5CA.js → chunk-K2X6U4UA.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-6OTZMORS.js → chunk-K3WII2ME.js} +27 -27
- package/dist/cli-bundle/chunks/chunk-K3WII2ME.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-M6ASXYCU.js → chunk-KG44YSKD.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-YVKE5ZDM.js → chunk-KPMKHGEA.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-QASRVKUQ.js → chunk-LPYWLWDS.js} +257 -163
- package/dist/cli-bundle/chunks/chunk-LPYWLWDS.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-RGXD5JJR.js → chunk-LSG2U345.js} +19 -12
- package/dist/cli-bundle/chunks/chunk-LSG2U345.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-MIQDDLB5.js +5 -0
- package/dist/cli-bundle/chunks/{chunk-UJ4HJYWL.js → chunk-NLDFBC6J.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-WRKB56FC.js → chunk-NP22ERDF.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-YQYG2V23.js → chunk-NU3IMIEA.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-3I3LRT2G.js → chunk-NVPZIJVR.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-JAF4TUQ7.js → chunk-ODALILG3.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-CDJYP7OQ.js → chunk-ONG5V5CI.js} +190 -63
- package/dist/cli-bundle/chunks/chunk-ONG5V5CI.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-QZ7LT3XE.js → chunk-ONREO4ST.js} +3 -3
- package/dist/cli-bundle/chunks/chunk-OW4JWD5M.js +61 -0
- package/dist/cli-bundle/chunks/chunk-OW4JWD5M.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-3CMRNVTO.js → chunk-P74IZQ7A.js} +12 -12
- package/dist/cli-bundle/chunks/chunk-PENXZX3U.js +172 -0
- package/dist/cli-bundle/chunks/chunk-PENXZX3U.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-ZTRBSABY.js → chunk-PGY23YTC.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-H2QBAKLQ.js → chunk-PMOSXADO.js} +3 -3
- package/dist/cli-bundle/chunks/chunk-PNTULOGU.js +9 -0
- package/dist/cli-bundle/chunks/{chunk-GSEADLRH.js → chunk-Q7A43DS4.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-QSPARJWF.js → chunk-QEHQ2GVG.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-VJTAEIPC.js → chunk-QIPLHNP7.js} +7 -7
- package/dist/cli-bundle/chunks/{chunk-GXXC7QSK.js → chunk-QKECXBBG.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-GXXC7QSK.js.map → chunk-QKECXBBG.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-K7WNZ7KD.js → chunk-QKJGPFAF.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-F7PSHRNO.js → chunk-QKXHFPYM.js} +27 -10
- package/dist/cli-bundle/chunks/chunk-QKXHFPYM.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-ZNP64HOW.js → chunk-RLCHOOHC.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-IAPHYPRL.js → chunk-RMLWNPH2.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-UVBA6F5A.js → chunk-RRM5JYJC.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-6IIVBC56.js → chunk-S6MQESFR.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-QABYZYLU.js → chunk-SDQLJWBO.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-ANSJHDOZ.js → chunk-SELVXEZK.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-DYEX6NFH.js → chunk-TD3LVC7D.js} +438 -23
- package/dist/cli-bundle/chunks/chunk-TD3LVC7D.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-WD6MSYMP.js → chunk-TKOVBP6C.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-TZ2PSLLT.js → chunk-TQSZFPIS.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-WPAWZW7S.js → chunk-TSMHDIW4.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-TZRTLMWM.js → chunk-UFXU44HV.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-TWLDBKQU.js → chunk-ULTHRDBP.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-OI4S4KCI.js → chunk-UMOPHQSU.js} +9 -9
- package/dist/cli-bundle/chunks/{chunk-OI4S4KCI.js.map → chunk-UMOPHQSU.js.map} +2 -2
- package/dist/cli-bundle/chunks/{chunk-RA5AIAMP.js → chunk-UOHFKBUV.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-PHKP3AGR.js → chunk-UWQHLMEB.js} +35 -18
- package/dist/cli-bundle/chunks/chunk-UWQHLMEB.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-6TTOHMTB.js → chunk-UXONS674.js} +45 -112
- package/dist/cli-bundle/chunks/chunk-UXONS674.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-4RXTMU57.js → chunk-UY2ACEMF.js} +7 -7
- package/dist/cli-bundle/chunks/{chunk-6PKA3SJQ.js → chunk-WQPUU7XD.js} +19 -28
- package/dist/cli-bundle/chunks/chunk-WQPUU7XD.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-7TQMR6LK.js → chunk-WT3ZEOGH.js} +70 -20
- package/dist/cli-bundle/chunks/chunk-WT3ZEOGH.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-FIGXOCEQ.js → chunk-WUJQK4YV.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-T4BRCB6Z.js → chunk-XSJUSQAE.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-6MHSBDGD.js → chunk-XXXF6PAQ.js} +50 -117
- package/dist/cli-bundle/chunks/chunk-XXXF6PAQ.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-UKUIIBDW.js → chunk-YAQEBNY7.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-7QDSYUMF.js → chunk-YAROI3PD.js} +44 -21
- package/dist/cli-bundle/chunks/chunk-YAROI3PD.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-E2WC6S4P.js → chunk-YBLZ2VE7.js} +13 -13
- package/dist/cli-bundle/chunks/{chunk-Y72FV7RM.js → chunk-YCQET3OT.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-YUSOJDWM.js +9 -0
- package/dist/cli-bundle/chunks/chunk-YXSHIAUJ.js +58 -0
- package/dist/cli-bundle/chunks/chunk-YXSHIAUJ.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-FS6UM5WH.js → chunk-ZI6VQWQ7.js} +4 -4
- package/dist/cli-bundle/chunks/chunk-ZKRZY773.js +68 -0
- package/dist/cli-bundle/chunks/chunk-ZKRZY773.js.map +7 -0
- package/dist/cli-bundle/chunks/{close-LZECOMHO.js → close-CWODTPKG.js} +5 -5
- package/dist/cli-bundle/chunks/close-W6LI2PKM.js +12 -0
- package/dist/cli-bundle/chunks/{close-many-ZHI6A5TN.js → close-many-CQFUY7MR.js} +15 -13
- package/dist/cli-bundle/chunks/close-many-DLDDVSH5.js +23 -0
- package/dist/cli-bundle/chunks/comments-E3TNTK24.js +13 -0
- package/dist/cli-bundle/chunks/{comments-AJWRTFZ5.js → comments-WGLHR7LB.js} +7 -7
- package/dist/cli-bundle/chunks/{copy-GMXYKBXT.js → copy-LXVDXH7B.js} +4 -4
- package/dist/cli-bundle/chunks/copy-Q5ZJPUKR.js +9 -0
- package/dist/cli-bundle/chunks/{create-F53OBTOU.js → create-J5U6ND4K.js} +9 -9
- package/dist/cli-bundle/chunks/{create-HU4Q7RJX.js → create-LBVCYMEG.js} +9 -9
- package/dist/cli-bundle/chunks/{delete-GSDZLTRC.js → delete-PMJBNY5G.js} +4 -4
- package/dist/cli-bundle/chunks/delete-WNHB3LYW.js +10 -0
- package/dist/cli-bundle/chunks/{deps-WWB7P2GT.js → deps-JZ7TMVCB.js} +7 -4
- package/dist/cli-bundle/chunks/{deps-U57I7EAK.js → deps-OA26IS25.js} +7 -4
- package/dist/cli-bundle/chunks/{docs-MQIY2ZQS.js → docs-FEWB2DQB.js} +6 -6
- package/dist/cli-bundle/chunks/docs-HA2AIDBB.js +14 -0
- package/dist/cli-bundle/chunks/{files-TBZD7V6H.js → files-6YFBJRBG.js} +6 -6
- package/dist/cli-bundle/chunks/{files-TTY6N2AV.js → files-EFIWKFTM.js} +6 -6
- package/dist/cli-bundle/chunks/{focus-XT6YVFFX.js → focus-4QJR7FOQ.js} +5 -5
- package/dist/cli-bundle/chunks/focus-POIW5LTJ.js +10 -0
- package/dist/cli-bundle/chunks/{history-compact-KKVUWB4V.js → history-compact-CKRPDTJN.js} +6 -10
- package/dist/cli-bundle/chunks/history-compact-FWG2C7FZ.js +16 -0
- package/dist/cli-bundle/chunks/history-redact-BB3TGDAE.js +15 -0
- package/dist/cli-bundle/chunks/{history-redact-3DVZOILD.js → history-redact-D225BHOZ.js} +5 -6
- package/dist/cli-bundle/chunks/history-repair-6GEAM7HE.js +16 -0
- package/dist/cli-bundle/chunks/{history-repair-ITDUMK4N.js → history-repair-RQXKQHL4.js} +6 -8
- package/dist/cli-bundle/chunks/{learnings-FGO3NSFW.js → learnings-JLNLCOL5.js} +7 -7
- package/dist/cli-bundle/chunks/learnings-RSNLSWDC.js +13 -0
- package/dist/cli-bundle/chunks/notes-2WDH6DXU.js +13 -0
- package/dist/cli-bundle/chunks/{notes-NQ6RXVW6.js → notes-GB47XXQQ.js} +7 -7
- package/dist/cli-bundle/chunks/plan-DOVI2VMW.js +24 -0
- package/dist/cli-bundle/chunks/{plan-2NNEO46V.js → plan-VDCJ2PCN.js} +10 -10
- package/dist/cli-bundle/chunks/{profile-AAQUU6T3.js → profile-FAU7NZML.js} +10 -10
- package/dist/cli-bundle/chunks/{profile-U725ATWZ.js → profile-IVXQEL3D.js} +10 -10
- package/dist/cli-bundle/chunks/{register-list-query-BUWCYHBT.js → register-list-query-DKA3EH5D.js} +22 -19
- package/dist/cli-bundle/chunks/register-list-query-DKA3EH5D.js.map +7 -0
- package/dist/cli-bundle/chunks/{register-list-query-KTZ6AGE7.js → register-list-query-UL4UKBBN.js} +23 -20
- package/dist/cli-bundle/chunks/register-list-query-UL4UKBBN.js.map +1 -0
- package/dist/cli-bundle/chunks/{register-mutation-UELYYOR7.js → register-mutation-ARFHRW55.js} +36 -32
- package/dist/cli-bundle/chunks/{register-mutation-UELYYOR7.js.map → register-mutation-ARFHRW55.js.map} +2 -2
- package/dist/cli-bundle/chunks/{register-mutation-4FMGJJF7.js → register-mutation-RBBJ52DK.js} +37 -33
- package/dist/cli-bundle/chunks/register-mutation-RBBJ52DK.js.map +1 -0
- package/dist/cli-bundle/chunks/{register-operations-JVW24J2Y.js → register-operations-ZIBBRSED.js} +41 -39
- package/dist/cli-bundle/chunks/{register-operations-JVW24J2Y.js.map → register-operations-ZIBBRSED.js.map} +1 -1
- package/dist/cli-bundle/chunks/{register-operations-ISUX6LY5.js → register-operations-ZUJ5JWPE.js} +39 -37
- package/dist/cli-bundle/chunks/{register-operations-ISUX6LY5.js.map → register-operations-ZUJ5JWPE.js.map} +1 -1
- package/dist/cli-bundle/chunks/{register-setup-5XNGKJ22.js → register-setup-BCVLFEYS.js} +29 -17
- package/dist/cli-bundle/chunks/{register-setup-5XNGKJ22.js.map → register-setup-BCVLFEYS.js.map} +2 -2
- package/dist/cli-bundle/chunks/{register-setup-ZTNY6S7R.js → register-setup-TDCGWIOS.js} +19 -18
- package/dist/cli-bundle/chunks/{register-setup-ZTNY6S7R.js.map → register-setup-TDCGWIOS.js.map} +1 -1
- package/dist/cli-bundle/chunks/{restore-B3BAB6X2.js → restore-25DLT2Q2.js} +6 -6
- package/dist/cli-bundle/chunks/restore-YPMVUUEX.js +14 -0
- package/dist/cli-bundle/chunks/{schema-U7IM2DXV.js → schema-FNU3WE4O.js} +7 -6
- package/dist/cli-bundle/chunks/{schema-LZNUYHDB.js → schema-NBCM3RAD.js} +7 -6
- package/dist/cli-bundle/chunks/update-WWBYOPXO.js +21 -0
- package/dist/cli-bundle/chunks/update-WWBYOPXO.js.map +7 -0
- package/dist/cli-bundle/chunks/{update-Q3UCILNR.js → update-XHSIAIXE.js} +12 -12
- package/dist/cli-bundle/chunks/update-XHSIAIXE.js.map +1 -0
- package/dist/cli-bundle/chunks/update-many-OUGIU5SF.js +32 -0
- package/dist/cli-bundle/chunks/update-many-OUGIU5SF.js.map +7 -0
- package/dist/cli-bundle/chunks/update-many-TA7NGQBO.js +36 -0
- package/dist/cli-bundle/chunks/update-many-TA7NGQBO.js.map +1 -0
- package/dist/cli-bundle/main.js +826 -43
- package/dist/cli-bundle/main.js.map +4 -4
- package/dist/cli-bundle/sdk-runtime.js +70 -57
- package/dist/cli-bundle/sdk-testing.js +6 -6
- package/dist/cli-bundle/sdk.js +876 -74
- package/dist/cli-bundle/sdk.js.map +4 -4
- package/dist/cli.js +5 -4
- package/dist/cli.js.map +1 -1
- package/dist/core/diagnostics/remediation.js +12 -2
- package/dist/core/diagnostics/remediation.js.map +1 -1
- package/dist/core/history/projection.d.ts +39 -0
- package/dist/core/history/projection.js +164 -0
- package/dist/core/history/projection.js.map +1 -0
- package/dist/core/history/read.d.ts +3 -0
- package/dist/core/history/read.js +55 -0
- package/dist/core/history/read.js.map +1 -0
- package/dist/core/output/output-control.d.ts +18 -0
- package/dist/core/output/output-control.js +26 -0
- package/dist/core/output/output-control.js.map +1 -0
- package/dist/core/output/output.js +20 -8
- package/dist/core/output/output.js.map +1 -1
- package/dist/core/sentry/helpers.js +10 -2
- package/dist/core/sentry/helpers.js.map +1 -1
- package/dist/core/shared/command-types.d.ts +2 -0
- package/dist/core/shared/command-types.js +2 -2
- package/dist/core/shared/command-types.js.map +1 -1
- package/dist/core/shared/errors.d.ts +11 -0
- package/dist/core/shared/errors.js +2 -2
- package/dist/core/shared/errors.js.map +1 -1
- package/dist/mcp/server.d.ts +2 -2
- package/dist/mcp/tool-definitions.js +5 -5
- package/dist/mcp/tool-definitions.js.map +1 -1
- package/dist/sdk/author-attribution.d.ts +35 -0
- package/dist/sdk/author-attribution.js +118 -0
- package/dist/sdk/author-attribution.js.map +1 -0
- package/dist/sdk/cli-contracts/command-aliases.d.ts +7 -0
- package/dist/sdk/cli-contracts/command-aliases.js +17 -0
- package/dist/sdk/cli-contracts/command-aliases.js.map +1 -0
- package/dist/sdk/cli-contracts/flag-contracts.js +5 -2
- package/dist/sdk/cli-contracts/flag-contracts.js.map +1 -1
- package/dist/sdk/cli-contracts/tool-option-contracts.js +6 -2
- package/dist/sdk/cli-contracts/tool-option-contracts.js.map +1 -1
- package/dist/sdk/cli-contracts/tool-parameter-tables.js +21 -2
- package/dist/sdk/cli-contracts/tool-parameter-tables.js.map +1 -1
- package/dist/sdk/cli-contracts/tool-schema.js +3 -3
- package/dist/sdk/cli-contracts/tool-schema.js.map +1 -1
- package/dist/sdk/cli-contracts.d.ts +1 -0
- package/dist/sdk/cli-contracts.js +3 -2
- package/dist/sdk/cli-contracts.js.map +1 -1
- package/dist/sdk/cli-program.d.ts +8 -0
- package/dist/sdk/cli-program.js +39 -0
- package/dist/sdk/cli-program.js.map +1 -0
- package/dist/sdk/command-line.d.ts +11 -0
- package/dist/sdk/command-line.js +40 -0
- package/dist/sdk/command-line.js.map +1 -0
- package/dist/sdk/config.d.ts +163 -0
- package/dist/sdk/config.js +1087 -0
- package/dist/sdk/config.js.map +1 -0
- package/dist/sdk/context-relevance.d.ts +21 -0
- package/dist/sdk/context-relevance.js +70 -2
- package/dist/sdk/context-relevance.js.map +1 -1
- package/dist/sdk/dependencies.d.ts +15 -2
- package/dist/sdk/dependencies.js +97 -8
- package/dist/sdk/dependencies.js.map +1 -1
- package/dist/{cli/commands → sdk}/extension/bundled-catalog.d.ts +1 -1
- package/dist/{cli/commands → sdk}/extension/bundled-catalog.js +12 -12
- package/dist/sdk/extension/bundled-catalog.js.map +1 -0
- package/dist/sdk/extension/concurrency.d.ts +7 -0
- package/dist/sdk/extension/concurrency.js +26 -0
- package/dist/sdk/extension/concurrency.js.map +1 -0
- package/dist/sdk/extension/describe.d.ts +91 -0
- package/dist/sdk/extension/describe.js +144 -0
- package/dist/sdk/extension/describe.js.map +1 -0
- package/dist/{cli/commands → sdk}/extension/doctor.d.ts +3 -3
- package/dist/{cli/commands → sdk}/extension/doctor.js +7 -7
- package/dist/sdk/extension/doctor.js.map +1 -0
- package/dist/sdk/extension/install-runtime.d.ts +26 -0
- package/dist/sdk/extension/install-runtime.js +269 -0
- package/dist/sdk/extension/install-runtime.js.map +1 -0
- package/dist/sdk/extension/install-snapshot.d.ts +23 -0
- package/dist/sdk/extension/install-snapshot.js +66 -0
- package/dist/sdk/extension/install-snapshot.js.map +1 -0
- package/dist/{cli/commands → sdk}/extension/install-sources.d.ts +3 -3
- package/dist/{cli/commands → sdk}/extension/install-sources.js +15 -12
- package/dist/sdk/extension/install-sources.js.map +1 -0
- package/dist/{cli/commands → sdk}/extension/managed-state.js +6 -6
- package/dist/sdk/extension/managed-state.js.map +1 -0
- package/dist/sdk/extension/scaffold.d.ts +36 -0
- package/dist/sdk/extension/scaffold.js +2436 -0
- package/dist/sdk/extension/scaffold.js.map +1 -0
- package/dist/sdk/extension/shared.d.ts +28 -0
- package/dist/sdk/extension/shared.js +140 -0
- package/dist/sdk/extension/shared.js.map +1 -0
- package/dist/sdk/extension/update-check.d.ts +15 -0
- package/dist/sdk/extension/update-check.js +68 -0
- package/dist/sdk/extension/update-check.js.map +1 -0
- package/dist/sdk/extension.d.ts +367 -0
- package/dist/sdk/extension.js +2174 -0
- package/dist/sdk/extension.js.map +1 -0
- package/dist/sdk/governance/gc.d.ts +56 -0
- package/dist/sdk/governance/gc.js +276 -0
- package/dist/sdk/governance/gc.js.map +1 -0
- package/dist/sdk/governance/health.d.ts +187 -0
- package/dist/sdk/governance/health.js +1796 -0
- package/dist/sdk/governance/health.js.map +1 -0
- package/dist/sdk/governance/validate.d.ts +255 -0
- package/dist/sdk/governance/validate.js +2175 -0
- package/dist/sdk/governance/validate.js.map +1 -0
- package/dist/sdk/history-compact.d.ts +142 -0
- package/dist/sdk/history-compact.js +508 -0
- package/dist/sdk/history-compact.js.map +1 -0
- package/dist/sdk/history-mcp.d.ts +17 -0
- package/dist/sdk/history-mcp.js +68 -0
- package/dist/sdk/history-mcp.js.map +1 -0
- package/dist/sdk/history-read.d.ts +31 -0
- package/dist/sdk/history-read.js +58 -0
- package/dist/sdk/history-read.js.map +1 -0
- package/dist/sdk/history-redact.d.ts +120 -0
- package/dist/sdk/history-redact.js +577 -0
- package/dist/sdk/history-redact.js.map +1 -0
- package/dist/sdk/history-repair.d.ts +89 -0
- package/dist/sdk/history-repair.js +263 -0
- package/dist/sdk/history-repair.js.map +1 -0
- package/dist/sdk/index.d.ts +25 -1
- package/dist/sdk/index.js +27 -3
- package/dist/sdk/index.js.map +1 -1
- package/dist/sdk/init-agent-guidance.d.ts +113 -0
- package/dist/sdk/init-agent-guidance.js +437 -0
- package/dist/sdk/init-agent-guidance.js.map +1 -0
- package/dist/sdk/init.d.ts +186 -0
- package/dist/sdk/init.js +733 -0
- package/dist/sdk/init.js.map +1 -0
- package/dist/sdk/invocation-author.d.ts +2 -0
- package/dist/sdk/invocation-author.js +39 -0
- package/dist/sdk/invocation-author.js.map +1 -0
- package/dist/sdk/item-children.d.ts +45 -0
- package/dist/sdk/item-children.js +75 -0
- package/dist/sdk/item-children.js.map +1 -0
- package/dist/sdk/item-schedule.d.ts +26 -0
- package/dist/sdk/item-schedule.js +28 -0
- package/dist/sdk/item-schedule.js.map +1 -0
- package/dist/sdk/output.d.ts +7 -0
- package/dist/sdk/output.js +11 -0
- package/dist/sdk/output.js.map +1 -0
- package/dist/sdk/pagination.d.ts +4 -1
- package/dist/sdk/pagination.js +13 -5
- package/dist/sdk/pagination.js.map +1 -1
- package/dist/sdk/profile.d.ts +176 -0
- package/dist/sdk/profile.js +431 -0
- package/dist/sdk/profile.js.map +1 -0
- package/dist/sdk/relationship-analytics.d.ts +108 -0
- package/dist/sdk/relationship-analytics.js +292 -0
- package/dist/sdk/relationship-analytics.js.map +1 -0
- package/dist/sdk/relationship-context.d.ts +67 -0
- package/dist/sdk/relationship-context.js +207 -0
- package/dist/sdk/relationship-context.js.map +1 -0
- package/dist/sdk/relationship-history.d.ts +109 -0
- package/dist/sdk/relationship-history.js +401 -0
- package/dist/sdk/relationship-history.js.map +1 -0
- package/dist/sdk/relationships.d.ts +145 -0
- package/dist/sdk/relationships.js +551 -0
- package/dist/sdk/relationships.js.map +1 -0
- package/dist/sdk/runtime-input.d.ts +10 -0
- package/dist/sdk/runtime-input.js +60 -0
- package/dist/sdk/runtime-input.js.map +1 -0
- package/dist/sdk/runtime.d.ts +31 -8
- package/dist/sdk/runtime.js +61 -57
- package/dist/sdk/runtime.js.map +1 -1
- package/dist/sdk/schema.d.ts +507 -0
- package/dist/sdk/schema.js +1269 -0
- package/dist/sdk/schema.js.map +1 -0
- package/dist/{cli/commands → sdk}/templates.d.ts +1 -1
- package/dist/{cli/commands → sdk}/templates.js +9 -9
- package/dist/sdk/templates.js.map +1 -0
- package/dist/{cli/commands → sdk}/test/linked-command-detection.d.ts +10 -2
- package/dist/sdk/test/linked-command-detection.js +525 -0
- package/dist/sdk/test/linked-command-detection.js.map +1 -0
- package/docs/COMMANDS.md +58 -40
- package/docs/EXTENSIONS.md +10 -1
- package/docs/RELATIONSHIP_GRAPH.md +113 -0
- package/docs/RELEASING.md +2 -0
- package/docs/SDK.md +156 -9
- package/docs/SDK_CUSTOMIZATION_PRIMITIVES.md +79 -0
- package/marketplace.json +2 -2
- package/package.json +3 -2
- 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/extensions/governance-audit/runtime-utils.ts +76 -16
- package/packages/pm-governance-audit/extensions/governance-audit/sdk.ts +8 -0
- 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/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/scripts/bundle-cli.mjs +66 -23
- package/dist/cli/commands/extension/bundled-catalog.js.map +0 -1
- package/dist/cli/commands/extension/doctor.js.map +0 -1
- package/dist/cli/commands/extension/install-sources.js.map +0 -1
- package/dist/cli/commands/extension/managed-state.js.map +0 -1
- package/dist/cli/commands/templates.js.map +0 -1
- package/dist/cli/commands/test/linked-command-detection.js +0 -248
- package/dist/cli/commands/test/linked-command-detection.js.map +0 -1
- package/dist/cli-bundle/chunks/append-DYQWQK2J.js +0 -11
- package/dist/cli-bundle/chunks/chunk-2GA3NK35.js +0 -530
- package/dist/cli-bundle/chunks/chunk-2GA3NK35.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-2QIQGYPW.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-4DY4KPQI.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-4WREH7RT.js +0 -554
- package/dist/cli-bundle/chunks/chunk-4WREH7RT.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-5CT5BW6E.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-5URI7TPJ.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-6MHSBDGD.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-6OTZMORS.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-6PKA3SJQ.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-6TTOHMTB.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-7QDSYUMF.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-7TQMR6LK.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-B5DZYTT3.js +0 -312
- package/dist/cli-bundle/chunks/chunk-B5DZYTT3.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-BPD26E3P.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-CDJYP7OQ.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-DBZVUJTK.js +0 -858
- package/dist/cli-bundle/chunks/chunk-DBZVUJTK.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-DVOLZJ3C.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-DYEX6NFH.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-F7PSHRNO.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-FO7GMJKG.js +0 -875
- package/dist/cli-bundle/chunks/chunk-FO7GMJKG.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-FTQLW4JD.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-IA3YFTXT.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-IGED7NH2.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-J4NZOP3I.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-JL7WZ4O2.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-L24HCJFC.js +0 -309
- package/dist/cli-bundle/chunks/chunk-L24HCJFC.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-LWTIRS3Y.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-MKL4CP2I.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-N3CMP4NI.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-PHKP3AGR.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-Q37E63AM.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-QASRVKUQ.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-RGXD5JJR.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-UB2QYSTO.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-UGTVWL3E.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-ZAYYDNB3.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-ZUKSZVBW.js.map +0 -7
- package/dist/cli-bundle/chunks/close-RI4JQQHU.js +0 -12
- package/dist/cli-bundle/chunks/close-many-LY2XJ52M.js +0 -21
- package/dist/cli-bundle/chunks/comments-35M273DN.js +0 -13
- package/dist/cli-bundle/chunks/copy-NPYM7M7U.js +0 -9
- package/dist/cli-bundle/chunks/delete-ODRWJWAM.js +0 -10
- package/dist/cli-bundle/chunks/docs-G7N4E2JO.js +0 -14
- package/dist/cli-bundle/chunks/focus-U5TRVCRS.js +0 -10
- package/dist/cli-bundle/chunks/history-compact-M7GHYVFN.js +0 -20
- package/dist/cli-bundle/chunks/history-redact-JIHZLHDP.js +0 -16
- package/dist/cli-bundle/chunks/history-repair-NAFCHLH7.js +0 -18
- package/dist/cli-bundle/chunks/learnings-SONGPSHI.js +0 -13
- package/dist/cli-bundle/chunks/notes-BSD53H2W.js +0 -13
- package/dist/cli-bundle/chunks/plan-AWLYGBNV.js +0 -24
- package/dist/cli-bundle/chunks/register-list-query-BUWCYHBT.js.map +0 -7
- package/dist/cli-bundle/chunks/register-list-query-KTZ6AGE7.js.map +0 -1
- package/dist/cli-bundle/chunks/register-mutation-4FMGJJF7.js.map +0 -1
- package/dist/cli-bundle/chunks/restore-66GLMHIX.js +0 -14
- package/dist/cli-bundle/chunks/update-2XGHIVQ2.js +0 -21
- package/dist/cli-bundle/chunks/update-many-75K57FS3.js +0 -34
- package/dist/cli-bundle/chunks/update-many-U42YA445.js +0 -30
- /package/dist/cli-bundle/chunks/{append-PVZJDM6J.js.map → append-OJQFUQ4T.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{append-DYQWQK2J.js.map → append-UZVHUO74.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-MQZ3PLCF.js.map → chunk-2IFFUZLC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-P6MYFH6K.js.map → chunk-2JKGO6QX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-X3GYR4P2.js.map → chunk-2NCIPMQP.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-Q7E6OYZK.js.map → chunk-2VPAVL7O.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-DRNJPEPQ.js.map → chunk-2WSE6PO2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-FDSBDNYE.js.map → chunk-34L5OT3Y.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-TH7U4KLY.js.map → chunk-3AUGG2DP.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-NKW36AMT.js.map → chunk-3CLU2XZO.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-ABRCOSDC.js.map → chunk-3WM75PWC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-X6BVXQ52.js.map → chunk-5JLUII3O.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-3TL7WOEF.js.map → chunk-6N2VXVTQ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-ERL2YFJ2.js.map → chunk-6S3YSUYG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-IFZA4VB5.js.map → chunk-AHVTB5I5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-DO5RGJXT.js.map → chunk-APRVSW2O.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-NAQYVWSQ.js.map → chunk-B7PE22W6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-MD6ULIPJ.js.map → chunk-BCOFWYW4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-KADLSPIU.js.map → chunk-BEP7WJA2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-OBDLEQG5.js.map → chunk-CRVF2JDM.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-FJZDA6MS.js.map → chunk-DM4H7FP4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-LZECOMHO.js.map → chunk-DUT67M43.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-44LNIULG.js.map → chunk-DYH63FX7.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-HAMLIWAF.js.map → chunk-EAB64KLB.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-CIOZ376P.js.map → chunk-EACOH7AU.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-QK2ZN6UL.js.map → chunk-EJEXHTY5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-WQUEHPZB.js.map → chunk-EYLCSJAI.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-655STMGA.js.map → chunk-FMBNM2EN.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-RMF3IOYQ.js.map → chunk-FNSPG7MU.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-KB726FMH.js.map → chunk-H2Z3FYXQ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-BN62TO2S.js.map → chunk-IA5FKNII.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-W6HZ55JO.js.map → chunk-IJIICKVW.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-M7EWN4TF.js.map → chunk-JOUQZENX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-2FNWQXZ2.js.map → chunk-JYFOV7FC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-HLHSQ5CA.js.map → chunk-K2X6U4UA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-M6ASXYCU.js.map → chunk-KG44YSKD.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-YVKE5ZDM.js.map → chunk-KPMKHGEA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-many-ZHI6A5TN.js.map → chunk-MIQDDLB5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-UJ4HJYWL.js.map → chunk-NLDFBC6J.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-WRKB56FC.js.map → chunk-NP22ERDF.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-YQYG2V23.js.map → chunk-NU3IMIEA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-3I3LRT2G.js.map → chunk-NVPZIJVR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-JAF4TUQ7.js.map → chunk-ODALILG3.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-QZ7LT3XE.js.map → chunk-ONREO4ST.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-3CMRNVTO.js.map → chunk-P74IZQ7A.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-ZTRBSABY.js.map → chunk-PGY23YTC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-H2QBAKLQ.js.map → chunk-PMOSXADO.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-RI4JQQHU.js.map → chunk-PNTULOGU.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-GSEADLRH.js.map → chunk-Q7A43DS4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-QSPARJWF.js.map → chunk-QEHQ2GVG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-VJTAEIPC.js.map → chunk-QIPLHNP7.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-K7WNZ7KD.js.map → chunk-QKJGPFAF.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-ZNP64HOW.js.map → chunk-RLCHOOHC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-IAPHYPRL.js.map → chunk-RMLWNPH2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-UVBA6F5A.js.map → chunk-RRM5JYJC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-6IIVBC56.js.map → chunk-S6MQESFR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-QABYZYLU.js.map → chunk-SDQLJWBO.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-ANSJHDOZ.js.map → chunk-SELVXEZK.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-WD6MSYMP.js.map → chunk-TKOVBP6C.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-TZ2PSLLT.js.map → chunk-TQSZFPIS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-WPAWZW7S.js.map → chunk-TSMHDIW4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-TZRTLMWM.js.map → chunk-UFXU44HV.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-TWLDBKQU.js.map → chunk-ULTHRDBP.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-RA5AIAMP.js.map → chunk-UOHFKBUV.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-4RXTMU57.js.map → chunk-UY2ACEMF.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-FIGXOCEQ.js.map → chunk-WUJQK4YV.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-T4BRCB6Z.js.map → chunk-XSJUSQAE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-UKUIIBDW.js.map → chunk-YAQEBNY7.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-E2WC6S4P.js.map → chunk-YBLZ2VE7.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-Y72FV7RM.js.map → chunk-YCQET3OT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-many-LY2XJ52M.js.map → chunk-YUSOJDWM.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-FS6UM5WH.js.map → chunk-ZI6VQWQ7.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{comments-AJWRTFZ5.js.map → close-CWODTPKG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{comments-35M273DN.js.map → close-W6LI2PKM.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{copy-GMXYKBXT.js.map → close-many-CQFUY7MR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{copy-NPYM7M7U.js.map → close-many-DLDDVSH5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{create-F53OBTOU.js.map → comments-E3TNTK24.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{create-HU4Q7RJX.js.map → comments-WGLHR7LB.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{delete-GSDZLTRC.js.map → copy-LXVDXH7B.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{delete-ODRWJWAM.js.map → copy-Q5ZJPUKR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{deps-U57I7EAK.js.map → create-J5U6ND4K.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{deps-WWB7P2GT.js.map → create-LBVCYMEG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{docs-MQIY2ZQS.js.map → delete-PMJBNY5G.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{docs-G7N4E2JO.js.map → delete-WNHB3LYW.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{files-TTY6N2AV.js.map → deps-JZ7TMVCB.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{files-TBZD7V6H.js.map → deps-OA26IS25.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{focus-XT6YVFFX.js.map → docs-FEWB2DQB.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{focus-U5TRVCRS.js.map → docs-HA2AIDBB.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-compact-M7GHYVFN.js.map → files-6YFBJRBG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-compact-KKVUWB4V.js.map → files-EFIWKFTM.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-redact-3DVZOILD.js.map → focus-4QJR7FOQ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-redact-JIHZLHDP.js.map → focus-POIW5LTJ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-repair-ITDUMK4N.js.map → history-compact-CKRPDTJN.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-repair-NAFCHLH7.js.map → history-compact-FWG2C7FZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{learnings-SONGPSHI.js.map → history-redact-BB3TGDAE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{learnings-FGO3NSFW.js.map → history-redact-D225BHOZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{notes-BSD53H2W.js.map → history-repair-6GEAM7HE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{notes-NQ6RXVW6.js.map → history-repair-RQXKQHL4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{plan-2NNEO46V.js.map → learnings-JLNLCOL5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{plan-AWLYGBNV.js.map → learnings-RSNLSWDC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{profile-U725ATWZ.js.map → notes-2WDH6DXU.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{profile-AAQUU6T3.js.map → notes-GB47XXQQ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{restore-66GLMHIX.js.map → plan-DOVI2VMW.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{restore-B3BAB6X2.js.map → plan-VDCJ2PCN.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{schema-U7IM2DXV.js.map → profile-FAU7NZML.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{schema-LZNUYHDB.js.map → profile-IVXQEL3D.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-Q3UCILNR.js.map → restore-25DLT2Q2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-2XGHIVQ2.js.map → restore-YPMVUUEX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-many-75K57FS3.js.map → schema-FNU3WE4O.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-many-U42YA445.js.map → schema-NBCM3RAD.js.map} +0 -0
- /package/dist/{cli/commands → sdk}/extension/managed-state.d.ts +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sources":["sdk/config.ts"],"sourceRoot":"/","sourcesContent":["/**\n * @module sdk/config\n *\n * Implements the pm config command surface and its agent-facing runtime behavior.\n */\nimport { pathExists } from \"../core/fs/fs-utils.js\";\nimport {\n resolveConfigPositionalValue,\n type ConfigKey,\n} from \"../core/config/positional-value.js\";\nimport {\n NESTED_SETTING_DESCRIPTORS,\n parseNestedSettingValue,\n readNestedSettingValue,\n resolveNestedSettingDescriptor,\n writeNestedSettingValue,\n type NestedSettingDescriptor,\n} from \"../core/config/nested-settings.js\";\nimport { getActiveExtensionRegistrations } from \"../core/extensions/index.js\";\nimport { normalizeParentReferencePolicy } from \"../core/item/parent-reference-policy.js\";\nimport { normalizeSprintReleaseFormatPolicy } from \"../core/item/sprint-release-format.js\";\nimport {\n resolveItemTypeRegistry,\n resolveTypeName,\n} from \"../core/item/type-registry.js\";\nimport { buildInvalidTypeError } from \"../core/schema/item-types-file.js\";\nimport { resolveItemTypesFilePath } 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 { migrateItemFilesToFormat } from \"../core/store/item-format-migration.js\";\nimport {\n getSettingsPath,\n resolveGlobalPmRoot,\n resolvePmRoot,\n} from \"../core/store/paths.js\";\nimport {\n readSettingsWithMetadata,\n writeSettings,\n} from \"../core/store/settings.js\";\nimport type {\n ContextDepth,\n GovernanceCloseValidationDefault,\n GovernanceCreateModeDefault,\n GovernanceOwnershipEnforcement,\n GovernancePreset,\n GovernanceWorkflowEnforcement,\n ItemFormat,\n ParentReferencePolicy,\n PmSettings,\n SprintReleaseFormatPolicy,\n ValidateMetadataProfile,\n ValidateMetadataRequiredField,\n} from \"../types/index.js\";\nimport { CONTEXT_DEPTH_VALUES } from \"../types/index.js\";\n\nconst CONFIG_SCOPE_VALUES = [\"project\", \"global\"] as const;\ntype ConfigScope = (typeof CONFIG_SCOPE_VALUES)[number];\n\ntype ConfigAction = \"get\" | \"set\" | \"list\" | \"export\";\ntype HistoryMissingStreamPolicy = \"auto_create\" | \"strict_error\";\ntype TestResultTrackingPolicy = \"enabled\" | \"disabled\";\ntype TelemetryTrackingPolicy = \"enabled\" | \"disabled\";\ntype GovernanceForceRequiredForStaleLockPolicy = \"enabled\" | \"disabled\";\ntype GovernanceRequireCloseReasonPolicy = \"enabled\" | \"disabled\";\ntype ConfigValue =\n | string\n | string[]\n | ItemFormat\n | HistoryMissingStreamPolicy\n | SprintReleaseFormatPolicy\n | ParentReferencePolicy\n | ValidateMetadataProfile\n | GovernancePreset\n | GovernanceOwnershipEnforcement\n | GovernanceCreateModeDefault\n | GovernanceCloseValidationDefault\n | GovernanceRequireCloseReasonPolicy\n | GovernanceWorkflowEnforcement\n | GovernanceForceRequiredForStaleLockPolicy\n | TestResultTrackingPolicy\n | TelemetryTrackingPolicy\n | ContextConfigValue;\n\ninterface ContextConfigValue {\n default_depth: string;\n activity_limit: number;\n stale_threshold_days: number;\n sections: Record<string, boolean>;\n}\n\ninterface ConfigKeyDescriptor {\n key: ConfigKey;\n aliases: string[];\n value_kind: \"string_array\" | \"enum\" | \"object\";\n set_flags: string[];\n summary: string;\n value: ConfigValue;\n}\n\n/** Documents the config command options payload exchanged by command, SDK, and package integrations. */\nexport interface ConfigCommandOptions {\n /** Value that configures or reports criterion for this contract. */\n criterion?: string[];\n /** Value that configures or reports format for this contract. */\n format?: string;\n /** Value that configures or reports policy for this contract. */\n policy?: string;\n /** Value that configures or reports value for this contract. */\n value?: string;\n /** Value that configures or reports clear criteria for this contract. */\n clearCriteria?: boolean;\n /** Fallback depth used when callers do not provide an override. */\n defaultDepth?: string;\n /** Value that configures or reports activity limit for this contract. */\n activityLimit?: string;\n /** Value that configures or reports stale threshold days for this contract. */\n staleThresholdDays?: string;\n /** Value that configures or reports section hierarchy for this contract. */\n sectionHierarchy?: string;\n /** Value that configures or reports section activity for this contract. */\n sectionActivity?: string;\n /** Value that configures or reports section progress for this contract. */\n sectionProgress?: string;\n /** Value that configures or reports section blockers for this contract. */\n sectionBlockers?: string;\n /** Value that configures or reports section files for this contract. */\n sectionFiles?: string;\n /** Value that configures or reports section workload for this contract. */\n sectionWorkload?: string;\n /** Value that configures or reports section staleness for this contract. */\n sectionStaleness?: string;\n /** Value that configures or reports section tests for this contract. */\n sectionTests?: string;\n}\n\n/** Documents the nested setting result value payload exchanged by command, SDK, and package integrations. */\nexport interface NestedSettingResultValue {\n /** Value that configures or reports key for this contract. */\n key: string;\n /** Filesystem path used for path resolution. */\n path: string;\n /** Value that configures or reports kind for this contract. */\n kind: NestedSettingDescriptor[\"kind\"];\n /** Value that configures or reports value for this contract. */\n value: string | number | boolean | null;\n}\n\n/** Documents the config result payload exchanged by command, SDK, and package integrations. */\nexport interface ConfigResult {\n /** Value that configures or reports scope for this contract. */\n scope: ConfigScope;\n /** Value that configures or reports key for this contract. */\n key?: ConfigKey | string;\n /** Value that configures or reports criteria for this contract. */\n criteria?: string[];\n /** Value that configures or reports format for this contract. */\n format?: ItemFormat;\n /** Value that configures or reports policy for this contract. */\n policy?:\n | HistoryMissingStreamPolicy\n | SprintReleaseFormatPolicy\n | ParentReferencePolicy\n | ValidateMetadataProfile\n | GovernancePreset\n | GovernanceOwnershipEnforcement\n | GovernanceCreateModeDefault\n | GovernanceCloseValidationDefault\n | GovernanceRequireCloseReasonPolicy\n | GovernanceWorkflowEnforcement\n | GovernanceForceRequiredForStaleLockPolicy\n | TestResultTrackingPolicy\n | TelemetryTrackingPolicy\n | string;\n /** Value that configures or reports nested setting for this contract. */\n nested_setting?: NestedSettingResultValue;\n /** Configuration controlling nested behavior. */\n nested_settings?: NestedSettingResultValue[];\n /** Value that configures or reports keys for this contract. */\n keys?: ConfigKeyDescriptor[];\n /** Value that configures or reports values for this contract. */\n values?: Record<ConfigKey, ConfigValue>;\n /** Value that configures or reports count for this contract. */\n count?: number;\n /** Configuration controlling context behavior. */\n context_settings?: ContextConfigValue;\n /** Whether explicit item format applies to this operation. */\n has_explicit_item_format?: boolean;\n /** Value that configures or reports migration for this contract. */\n migration?: {\n target_format: ItemFormat;\n scanned: number;\n migrated: string[];\n removed: string[];\n warnings: string[];\n };\n /** Filesystem path used for settings resolution. */\n settings_path: string;\n /** Value that configures or reports changed for this contract. */\n changed: boolean;\n /** Value that configures or reports warnings for this contract. */\n warnings?: string[];\n}\n\nconst CONFIG_KEY_ALIASES: Record<ConfigKey, string[]> = {\n definition_of_done: [\"definition-of-done\", \"definition_of_done\"],\n item_format: [\"item-format\", \"item_format\"],\n history_missing_stream_policy: [\n \"history-missing-stream-policy\",\n \"history_missing_stream_policy\",\n ],\n sprint_release_format_policy: [\n \"sprint-release-format-policy\",\n \"sprint_release_format_policy\",\n ],\n parent_reference_policy: [\n \"parent-reference-policy\",\n \"parent_reference_policy\",\n ],\n metadata_validation_profile: [\n \"metadata-validation-profile\",\n \"metadata_validation_profile\",\n ],\n metadata_required_fields: [\n \"metadata-required-fields\",\n \"metadata_required_fields\",\n ],\n lifecycle_stale_blocker_reason_patterns: [\n \"lifecycle-stale-blocker-reason-patterns\",\n \"lifecycle_stale_blocker_reason_patterns\",\n ],\n lifecycle_closure_like_blocked_reason_patterns: [\n \"lifecycle-closure-like-blocked-reason-patterns\",\n \"lifecycle_closure_like_blocked_reason_patterns\",\n ],\n lifecycle_closure_like_resolution_patterns: [\n \"lifecycle-closure-like-resolution-patterns\",\n \"lifecycle_closure_like_resolution_patterns\",\n ],\n lifecycle_closure_like_actual_result_patterns: [\n \"lifecycle-closure-like-actual-result-patterns\",\n \"lifecycle_closure_like_actual_result_patterns\",\n ],\n governance_preset: [\"governance-preset\", \"governance_preset\"],\n governance_ownership_enforcement: [\n \"governance-ownership-enforcement\",\n \"governance_ownership_enforcement\",\n ],\n governance_create_mode_default: [\n \"governance-create-mode-default\",\n \"governance_create_mode_default\",\n ],\n governance_close_validation_default: [\n \"governance-close-validation-default\",\n \"governance_close_validation_default\",\n ],\n governance_require_close_reason: [\n \"governance-require-close-reason\",\n \"governance_require_close_reason\",\n ],\n governance_create_default_type: [\n \"governance-create-default-type\",\n \"governance_create_default_type\",\n ],\n governance_workflow_enforcement: [\n \"governance-workflow-enforcement\",\n \"governance_workflow_enforcement\",\n ],\n governance_parent_reference_policy: [\n \"governance-parent-reference-policy\",\n \"governance_parent_reference_policy\",\n ],\n governance_metadata_validation_profile: [\n \"governance-metadata-validation-profile\",\n \"governance_metadata_validation_profile\",\n ],\n governance_force_required_for_stale_lock: [\n \"governance-force-required-for-stale-lock\",\n \"governance_force_required_for_stale_lock\",\n ],\n test_result_tracking: [\"test-result-tracking\", \"test_result_tracking\"],\n telemetry_tracking: [\"telemetry-tracking\", \"telemetry_tracking\"],\n context: [\"context\"],\n};\n\n// Canonical kebab-case forms (first alias entry per key). Used for the invalid-key\n// hint so agents see ~21 keys instead of all ~45 kebab+snake variants; snake_case\n// forms stay fully accepted as input via CONFIG_KEY_ALIASES/normalizeKey.\nconst CANONICAL_CONFIG_KEYS: readonly string[] = (\n Object.keys(CONFIG_KEY_ALIASES) as ConfigKey[]\n).map((candidate) => CONFIG_KEY_ALIASES[candidate][0]);\nconst CONFIG_KEY_BY_ALIAS: Readonly<Record<string, ConfigKey>> =\n Object.fromEntries(\n (Object.keys(CONFIG_KEY_ALIASES) as ConfigKey[]).flatMap((key) =>\n CONFIG_KEY_ALIASES[key].map((alias) => [alias, key] as const),\n ),\n ) as Readonly<Record<string, ConfigKey>>;\n\nconst CONFIG_KEY_SUMMARIES: Record<ConfigKey, string> = {\n definition_of_done: \"Definition of Done criteria list.\",\n item_format: \"Default item file format.\",\n history_missing_stream_policy: \"Missing history stream handling policy.\",\n sprint_release_format_policy: \"Sprint/release format validation policy.\",\n parent_reference_policy: \"Parent reference validation policy.\",\n metadata_validation_profile:\n \"Validate metadata profile policy (core|strict|custom).\",\n metadata_required_fields: \"Validate custom metadata required-fields list.\",\n lifecycle_stale_blocker_reason_patterns:\n \"Validate lifecycle stale-blocker reason substring patterns (criteria list).\",\n lifecycle_closure_like_blocked_reason_patterns:\n \"Validate lifecycle closure-like blocked_reason substring patterns (criteria list).\",\n lifecycle_closure_like_resolution_patterns:\n \"Validate lifecycle closure-like resolution substring patterns (criteria list).\",\n lifecycle_closure_like_actual_result_patterns:\n \"Validate lifecycle closure-like actual_result substring patterns (criteria list).\",\n governance_preset:\n \"Governance preset policy (minimal|default|strict|custom).\",\n governance_ownership_enforcement:\n \"Governance ownership enforcement policy (none|warn|strict).\",\n governance_create_mode_default:\n \"Governance default create mode (progressive|strict).\",\n governance_close_validation_default:\n \"Governance default close validation mode (off|warn|strict).\",\n governance_require_close_reason:\n \"Governance close-reason requirement policy (enabled|disabled).\",\n governance_create_default_type:\n \"Governance default item type for `pm create` when --type is omitted.\",\n governance_workflow_enforcement:\n \"Governance per-type transition enforcement mode (off|warn|strict).\",\n governance_parent_reference_policy:\n \"Governance parent reference policy (warn|strict_error).\",\n governance_metadata_validation_profile:\n \"Governance metadata validation profile (core|strict|custom).\",\n governance_force_required_for_stale_lock:\n \"Governance stale-lock force policy (enabled|disabled).\",\n test_result_tracking: \"Item-level linked test result persistence policy.\",\n telemetry_tracking: \"Telemetry usage reporting policy.\",\n context: \"Context command settings (depth, section toggles, limits).\",\n};\n\nconst LIFECYCLE_PATTERN_CONFIG_KEYS = [\n \"lifecycle_stale_blocker_reason_patterns\",\n \"lifecycle_closure_like_blocked_reason_patterns\",\n \"lifecycle_closure_like_resolution_patterns\",\n \"lifecycle_closure_like_actual_result_patterns\",\n] as const satisfies readonly ConfigKey[];\ntype LifecyclePatternConfigKey = (typeof LIFECYCLE_PATTERN_CONFIG_KEYS)[number];\ntype CriteriaConfigKey = \"metadata_required_fields\" | LifecyclePatternConfigKey;\ntype ValidationConfigKey =\n | \"history_missing_stream_policy\"\n | \"sprint_release_format_policy\"\n | \"parent_reference_policy\"\n | \"metadata_validation_profile\";\ntype GovernancePolicyConfigKey =\n | \"governance_ownership_enforcement\"\n | \"governance_create_mode_default\"\n | \"governance_close_validation_default\";\ntype GovernanceValidationConfigKey =\n | \"governance_parent_reference_policy\"\n | \"governance_metadata_validation_profile\"\n | \"governance_workflow_enforcement\";\ntype GovernancePresetOrTypeConfigKey =\n | \"governance_preset\"\n | \"governance_create_default_type\";\n\nconst CRITERIA_CONFIG_KEYS: ReadonlySet<ConfigKey> = new Set<ConfigKey>([\n \"metadata_required_fields\",\n ...LIFECYCLE_PATTERN_CONFIG_KEYS,\n]);\nconst TRACKING_CONFIG_KEYS: ReadonlySet<ConfigKey> = new Set<ConfigKey>([\n \"test_result_tracking\",\n \"telemetry_tracking\",\n]);\nconst GOVERNANCE_BOOLEAN_CONFIG_KEYS: ReadonlySet<ConfigKey> =\n new Set<ConfigKey>([\n \"governance_require_close_reason\",\n \"governance_force_required_for_stale_lock\",\n ]);\nconst GOVERNANCE_POLICY_CONFIG_KEYS: ReadonlySet<ConfigKey> =\n new Set<ConfigKey>([\n \"governance_ownership_enforcement\",\n \"governance_create_mode_default\",\n \"governance_close_validation_default\",\n ]);\nconst GOVERNANCE_VALIDATION_CONFIG_KEYS: ReadonlySet<ConfigKey> =\n new Set<ConfigKey>([\n \"governance_parent_reference_policy\",\n \"governance_metadata_validation_profile\",\n \"governance_workflow_enforcement\",\n ]);\nconst GOVERNANCE_PRESET_OR_TYPE_CONFIG_KEYS: ReadonlySet<ConfigKey> =\n new Set<ConfigKey>([\"governance_preset\", \"governance_create_default_type\"]);\n\nconst isCriteriaValueConfigKey = (key: ConfigKey): key is CriteriaConfigKey =>\n CRITERIA_CONFIG_KEYS.has(key);\nconst isGovernancePolicyConfigKey = (\n key: ConfigKey,\n): key is GovernancePolicyConfigKey => GOVERNANCE_POLICY_CONFIG_KEYS.has(key);\nconst isGovernanceValidationConfigKey = (\n key: ConfigKey,\n): key is GovernanceValidationConfigKey =>\n GOVERNANCE_VALIDATION_CONFIG_KEYS.has(key);\nconst isGovernancePresetOrTypeConfigKey = (\n key: ConfigKey,\n): key is GovernancePresetOrTypeConfigKey =>\n GOVERNANCE_PRESET_OR_TYPE_CONFIG_KEYS.has(key);\n\nfunction isCriteriaConfigKey(key: ConfigKey): boolean {\n return key === \"definition_of_done\" || isCriteriaValueConfigKey(key);\n}\n\nfunction normalizeScope(value: string): ConfigScope {\n if ((CONFIG_SCOPE_VALUES as readonly string[]).includes(value)) {\n return value as ConfigScope;\n }\n throw new PmCliError(\n `Invalid config scope \"${value}\". Allowed: ${CONFIG_SCOPE_VALUES.join(\", \")}`,\n EXIT_CODE.USAGE,\n );\n}\n\nfunction normalizeAction(value: string): ConfigAction {\n if (\n value === \"get\" ||\n value === \"set\" ||\n value === \"list\" ||\n value === \"export\"\n ) {\n return value;\n }\n throw new PmCliError(\n `Invalid config action \"${value}\". Allowed: get, set, list, export`,\n EXIT_CODE.USAGE,\n );\n}\n\nfunction normalizeKey(value: string): ConfigKey {\n const key = CONFIG_KEY_BY_ALIAS[value];\n if (key) {\n return key;\n }\n const nestedKeys = NESTED_SETTING_DESCRIPTORS.map(\n (descriptor) => descriptor.key,\n ).join(\", \");\n throw new PmCliError(\n `Invalid config key \"${value}\". Supported: ${CANONICAL_CONFIG_KEYS.join(\", \")} (underscore variants also accepted). Nested leaf settings: ${nestedKeys}.`,\n EXIT_CODE.USAGE,\n );\n}\n\nfunction normalizeCriteria(\n values: string[] | undefined,\n clearCriteria: boolean | undefined,\n): string[] {\n const normalized = [\n ...new Set(\n (values ?? [])\n .map((value) => value.trim())\n .filter((value) => value.length > 0),\n ),\n ].sort((left, right) => left.localeCompare(right));\n if (clearCriteria) {\n if (normalized.length > 0) {\n throw new PmCliError(\n \"Config set definition-of-done cannot combine --clear-criteria with --criterion values\",\n EXIT_CODE.USAGE,\n );\n }\n return [];\n }\n if (normalized.length === 0) {\n throw new PmCliError(\n \"Config set definition-of-done requires at least one non-empty --criterion value (or --clear-criteria to clear)\",\n EXIT_CODE.USAGE,\n );\n }\n return normalized;\n}\n\nfunction normalizeItemFormat(value: string | undefined): ItemFormat {\n const normalized = value?.trim().toLowerCase();\n if (normalized === \"toon\") {\n return \"toon\";\n }\n if (normalized === \"json_markdown\") {\n throw new PmCliError(\n \"Config set item-format no longer accepts json_markdown. Markdown item files are legacy read/migration input only.\",\n EXIT_CODE.USAGE,\n );\n }\n throw new PmCliError(\n \"Config set item-format requires --format toon\",\n EXIT_CODE.USAGE,\n );\n}\n\nfunction normalizeHistoryMissingStreamPolicy(\n value: string | undefined,\n): HistoryMissingStreamPolicy {\n const normalized = value?.trim().toLowerCase().replaceAll(\"-\", \"_\");\n if (normalized === \"auto_create\" || normalized === \"strict_error\") {\n return normalized;\n }\n throw new PmCliError(\n \"Config set history-missing-stream-policy requires --policy with one of: auto_create, strict_error\",\n EXIT_CODE.USAGE,\n );\n}\n\nfunction normalizeTestResultTrackingPolicy(\n value: string | undefined,\n): TestResultTrackingPolicy {\n const normalized = value?.trim().toLowerCase().replaceAll(\"-\", \"_\");\n if (normalized === \"enabled\" || normalized === \"disabled\") {\n return normalized;\n }\n throw new PmCliError(\n \"Config set test-result-tracking requires --policy with one of: enabled, disabled\",\n EXIT_CODE.USAGE,\n );\n}\n\nfunction normalizeTelemetryTrackingPolicy(\n value: string | undefined,\n): TelemetryTrackingPolicy {\n const normalized = value?.trim().toLowerCase().replaceAll(\"-\", \"_\");\n if (normalized === \"enabled\" || normalized === \"disabled\") {\n return normalized;\n }\n throw new PmCliError(\n \"Config set telemetry-tracking requires --policy with one of: enabled, disabled\",\n EXIT_CODE.USAGE,\n );\n}\n\nfunction normalizeValidateMetadataProfile(\n value: string | undefined,\n): ValidateMetadataProfile {\n const normalized = value?.trim().toLowerCase().replaceAll(\"-\", \"_\");\n if (\n normalized === \"core\" ||\n normalized === \"strict\" ||\n normalized === \"custom\"\n ) {\n return normalized;\n }\n throw new PmCliError(\n \"Config set metadata-validation-profile requires --policy with one of: core, strict, custom\",\n EXIT_CODE.USAGE,\n );\n}\n\nfunction normalizeGovernancePreset(\n value: string | undefined,\n): GovernancePreset {\n const normalized = value?.trim().toLowerCase().replaceAll(\"-\", \"_\");\n if (\n normalized === \"minimal\" ||\n normalized === \"default\" ||\n normalized === \"strict\" ||\n normalized === \"custom\"\n ) {\n return normalized;\n }\n throw new PmCliError(\n \"Config set governance-preset requires --policy with one of: minimal, default, strict, custom\",\n EXIT_CODE.USAGE,\n );\n}\n\nfunction normalizeGovernanceOwnershipEnforcement(\n value: string | undefined,\n): GovernanceOwnershipEnforcement {\n const normalized = value?.trim().toLowerCase().replaceAll(\"-\", \"_\");\n if (\n normalized === \"none\" ||\n normalized === \"warn\" ||\n normalized === \"strict\"\n ) {\n return normalized;\n }\n throw new PmCliError(\n \"Config set governance-ownership-enforcement requires --policy with one of: none, warn, strict\",\n EXIT_CODE.USAGE,\n );\n}\n\nfunction normalizeGovernanceCreateModeDefault(\n value: string | undefined,\n): GovernanceCreateModeDefault {\n const normalized = value?.trim().toLowerCase().replaceAll(\"-\", \"_\");\n if (normalized === \"progressive\" || normalized === \"strict\") {\n return normalized;\n }\n throw new PmCliError(\n \"Config set governance-create-mode-default requires --policy with one of: progressive, strict\",\n EXIT_CODE.USAGE,\n );\n}\n\nfunction normalizeGovernanceCloseValidationDefault(\n value: string | undefined,\n): GovernanceCloseValidationDefault {\n const normalized = value?.trim().toLowerCase().replaceAll(\"-\", \"_\");\n if (\n normalized === \"off\" ||\n normalized === \"warn\" ||\n normalized === \"strict\"\n ) {\n return normalized;\n }\n if (normalized === \"none\" || normalized === \"disabled\") {\n return \"off\";\n }\n throw new PmCliError(\n \"Config set governance-close-validation-default requires --policy with one of: off, warn, strict\",\n EXIT_CODE.USAGE,\n );\n}\n\nfunction normalizeGovernanceWorkflowEnforcement(\n value: unknown,\n): GovernanceWorkflowEnforcement {\n const normalized =\n typeof value === \"string\"\n ? value.trim().toLowerCase().replaceAll(\"-\", \"_\")\n : undefined;\n if (\n normalized === \"off\" ||\n normalized === \"warn\" ||\n normalized === \"strict\"\n ) {\n return normalized;\n }\n if (normalized === \"none\" || normalized === \"disabled\") {\n return \"off\";\n }\n throw new PmCliError(\n \"Config set governance-workflow-enforcement requires one of: off, warn, strict\",\n EXIT_CODE.USAGE,\n );\n}\n\nfunction normalizeGovernanceForceRequiredForStaleLockPolicy(\n value: string | undefined,\n): GovernanceForceRequiredForStaleLockPolicy {\n const normalized = value?.trim().toLowerCase().replaceAll(\"-\", \"_\");\n if (normalized === \"enabled\" || normalized === \"disabled\") {\n return normalized;\n }\n throw new PmCliError(\n \"Config set governance-force-required-for-stale-lock requires --policy with one of: enabled, disabled\",\n EXIT_CODE.USAGE,\n );\n}\n\nfunction normalizeGovernanceRequireCloseReasonPolicy(\n value: string | undefined,\n): GovernanceRequireCloseReasonPolicy {\n const normalized = value?.trim().toLowerCase().replaceAll(\"-\", \"_\");\n if (normalized === \"enabled\" || normalized === \"disabled\") {\n return normalized;\n }\n throw new PmCliError(\n \"Config set governance-require-close-reason requires --policy with one of: enabled, disabled\",\n EXIT_CODE.USAGE,\n );\n}\n\nfunction normalizePolicyForConflict(\n key: ConfigKey | undefined,\n value: string,\n): string {\n switch (key) {\n case \"history_missing_stream_policy\":\n return normalizeHistoryMissingStreamPolicy(value);\n case \"sprint_release_format_policy\":\n return normalizeSprintReleaseFormatPolicy(value);\n case \"parent_reference_policy\":\n case \"governance_parent_reference_policy\":\n return normalizeParentReferencePolicy(value);\n case \"metadata_validation_profile\":\n case \"governance_metadata_validation_profile\":\n return normalizeValidateMetadataProfile(value);\n case \"governance_preset\":\n return normalizeGovernancePreset(value);\n case \"governance_ownership_enforcement\":\n return normalizeGovernanceOwnershipEnforcement(value);\n case \"governance_create_mode_default\":\n return normalizeGovernanceCreateModeDefault(value);\n case \"governance_close_validation_default\":\n return normalizeGovernanceCloseValidationDefault(value);\n case \"governance_require_close_reason\":\n return normalizeGovernanceRequireCloseReasonPolicy(value);\n case \"governance_workflow_enforcement\":\n return normalizeGovernanceWorkflowEnforcement(value);\n case \"governance_force_required_for_stale_lock\":\n return normalizeGovernanceForceRequiredForStaleLockPolicy(value);\n case \"test_result_tracking\":\n return normalizeTestResultTrackingPolicy(value);\n case \"telemetry_tracking\":\n return normalizeTelemetryTrackingPolicy(value);\n default:\n return value.trim().toLowerCase().replaceAll(\"-\", \"_\");\n }\n}\n\nconst METADATA_REQUIRED_FIELD_ALIAS_MAP: Record<\n string,\n ValidateMetadataRequiredField\n> = {\n author: \"author\",\n acceptance_criteria: \"acceptance_criteria\",\n \"acceptance-criteria\": \"acceptance_criteria\",\n estimated_minutes: \"estimated_minutes\",\n \"estimated-minutes\": \"estimated_minutes\",\n estimate: \"estimated_minutes\",\n close_reason: \"close_reason\",\n \"close-reason\": \"close_reason\",\n reviewer: \"reviewer\",\n risk: \"risk\",\n confidence: \"confidence\",\n sprint: \"sprint\",\n release: \"release\",\n};\nconst METADATA_REQUIRED_FIELD_OPTIONS = [\n \"author\",\n \"acceptance_criteria\",\n \"estimated_minutes\",\n \"close_reason\",\n \"reviewer\",\n \"risk\",\n \"confidence\",\n \"sprint\",\n \"release\",\n] as const;\n\nfunction normalizeMetadataRequiredFields(\n values: string[] | undefined,\n clearCriteria: boolean | undefined,\n): ValidateMetadataRequiredField[] {\n const normalized = [\n ...new Set(\n (values ?? [])\n .map((value) => value.trim())\n .filter((value) => value.length > 0),\n ),\n ];\n if (clearCriteria) {\n if (normalized.length > 0) {\n throw new PmCliError(\n \"Config set metadata-required-fields cannot combine --clear-criteria with --criterion values\",\n EXIT_CODE.USAGE,\n );\n }\n return [];\n }\n if (normalized.length === 0) {\n throw new PmCliError(\n \"Config set metadata-required-fields requires at least one --criterion value (or --clear-criteria to clear)\",\n EXIT_CODE.USAGE,\n );\n }\n const lowered = normalized.map((value) =>\n value.toLowerCase().replaceAll(\"-\", \"_\"),\n );\n const unsupported = lowered.filter(\n (value) => METADATA_REQUIRED_FIELD_ALIAS_MAP[value] === undefined,\n );\n if (unsupported.length > 0) {\n throw new PmCliError(\n `Config set metadata-required-fields received unsupported values: ${unsupported.join(\", \")}. ` +\n `Supported values: ${METADATA_REQUIRED_FIELD_OPTIONS.join(\", \")}`,\n EXIT_CODE.USAGE,\n );\n }\n return [\n ...new Set(\n lowered.map(\n (value) =>\n METADATA_REQUIRED_FIELD_ALIAS_MAP[\n value\n ] as ValidateMetadataRequiredField,\n ),\n ),\n ].sort((left, right) => left.localeCompare(right));\n}\n\nfunction normalizeLifecyclePatternCriteria(\n key: ConfigKey,\n values: string[] | undefined,\n clearCriteria: boolean | undefined,\n): string[] {\n const normalized = [\n ...new Set(\n (values ?? [])\n .map((value) => value.trim().toLowerCase())\n .filter((value) => value.length > 0),\n ),\n ].sort((left, right) => left.localeCompare(right));\n if (clearCriteria) {\n if (normalized.length > 0) {\n throw new PmCliError(\n `Config set ${CONFIG_KEY_ALIASES[key][0]} cannot combine --clear-criteria with --criterion values`,\n EXIT_CODE.USAGE,\n );\n }\n return [];\n }\n if (normalized.length === 0) {\n throw new PmCliError(\n `Config set ${CONFIG_KEY_ALIASES[key][0]} requires at least one --criterion value (or --clear-criteria to clear)`,\n EXIT_CODE.USAGE,\n );\n }\n return normalized;\n}\n\nfunction normalizeWarnings(values: string[]): string[] {\n return [...new Set(values)].sort((left, right) => left.localeCompare(right));\n}\n\nfunction normalizeKeyForAction(\n action: ConfigAction,\n value: string | undefined,\n): ConfigKey | undefined {\n if (action === \"list\" || action === \"export\") {\n if (typeof value === \"string\" && value.trim().length > 0) {\n throw new PmCliError(\n `Config action \"${action}\" does not accept <key>`,\n EXIT_CODE.USAGE,\n );\n }\n return undefined;\n }\n if (typeof value !== \"string\" || value.trim().length === 0) {\n throw new PmCliError(\n `Config action \"${action}\" requires <key>`,\n EXIT_CODE.USAGE,\n );\n }\n return normalizeKey(value);\n}\n\n/** Narrows the `ConfigKey | undefined` carried into the get/set branches back to a concrete `ConfigKey`. By the time those branches run, `normalizeKeyForAction` has already thrown on a missing key and nested settings have returned earlier, so the `undefined` case is unreachable at runtime — the throw is a defensive type-narrowing guard only. */\nfunction assertConfigKeyDefined(\n key: ConfigKey | undefined,\n): asserts key is ConfigKey {\n /* c8 ignore next 3 -- defensive: get/set always carry a key (see normalizeKeyForAction). */\n if (!key) {\n throw new PmCliError(\"Config action requires <key>\", EXIT_CODE.USAGE);\n }\n}\n\nconst CONFIG_VALUE_READERS: Readonly<\n Record<ConfigKey, (settings: PmSettings) => ConfigValue>\n> = {\n definition_of_done: (settings) => [...settings.workflow.definition_of_done],\n item_format: (settings) => settings.item_format,\n history_missing_stream_policy: (settings) => settings.history.missing_stream,\n sprint_release_format_policy: (settings) =>\n settings.validation.sprint_release_format,\n parent_reference_policy: (settings) => settings.validation.parent_reference,\n metadata_validation_profile: (settings) =>\n settings.validation.metadata_profile,\n metadata_required_fields: (settings) => [\n ...settings.validation.metadata_required_fields,\n ],\n lifecycle_stale_blocker_reason_patterns: (settings) => [\n ...settings.validation.lifecycle_stale_blocker_reason_patterns,\n ],\n lifecycle_closure_like_blocked_reason_patterns: (settings) => [\n ...settings.validation.lifecycle_closure_like_blocked_reason_patterns,\n ],\n lifecycle_closure_like_resolution_patterns: (settings) => [\n ...settings.validation.lifecycle_closure_like_resolution_patterns,\n ],\n lifecycle_closure_like_actual_result_patterns: (settings) => [\n ...settings.validation.lifecycle_closure_like_actual_result_patterns,\n ],\n governance_preset: (settings) => settings.governance.preset,\n governance_ownership_enforcement: (settings) =>\n settings.governance.ownership_enforcement,\n governance_create_mode_default: (settings) =>\n settings.governance.create_mode_default,\n governance_close_validation_default: (settings) =>\n settings.governance.close_validation_default,\n governance_require_close_reason: (settings) =>\n settings.governance.require_close_reason ? \"enabled\" : \"disabled\",\n governance_create_default_type: (settings) =>\n settings.governance.create_default_type ?? \"\",\n governance_workflow_enforcement: (settings) =>\n settings.governance.workflow_enforcement ?? \"off\",\n governance_parent_reference_policy: (settings) =>\n settings.governance.parent_reference,\n governance_metadata_validation_profile: (settings) =>\n settings.governance.metadata_profile,\n governance_force_required_for_stale_lock: (settings) =>\n settings.governance.force_required_for_stale_lock ? \"enabled\" : \"disabled\",\n test_result_tracking: (settings) =>\n settings.testing.record_results_to_items ? \"enabled\" : \"disabled\",\n telemetry_tracking: (settings) =>\n settings.telemetry.enabled ? \"enabled\" : \"disabled\",\n context: (settings) => ({\n default_depth: settings.context.default_depth,\n activity_limit: settings.context.activity_limit,\n stale_threshold_days: settings.context.stale_threshold_days,\n sections: { ...settings.context.sections },\n }),\n};\n\nfunction readConfigValue(settings: PmSettings, key: ConfigKey): ConfigValue {\n return CONFIG_VALUE_READERS[key](settings);\n}\n\nfunction withWarnings(result: ConfigResult, warnings: string[]): ConfigResult {\n if (warnings.length === 0) {\n return result;\n }\n return {\n ...result,\n warnings,\n };\n}\n\nasync function resolveSettingsTarget(\n scope: ConfigScope,\n global: GlobalOptions,\n): Promise<{ pmRoot: string; settingsPath: string }> {\n const cwd = process.cwd();\n const pmRoot =\n scope === \"project\"\n ? resolvePmRoot(cwd, global.path)\n : resolveGlobalPmRoot(cwd);\n const settingsPath = getSettingsPath(pmRoot);\n if (scope === \"project\" && !(await pathExists(settingsPath))) {\n throw new PmCliError(\n `Tracker is not initialized at ${pmRoot}. Run pm init first.`,\n EXIT_CODE.NOT_FOUND,\n );\n }\n return { pmRoot, settingsPath };\n}\n\nfunction parseSectionToggle(raw: string | undefined): boolean | undefined {\n if (raw === undefined) return undefined;\n const normalized = raw.trim().toLowerCase();\n if (\n normalized === \"true\" ||\n normalized === \"enabled\" ||\n normalized === \"on\" ||\n normalized === \"1\"\n )\n return true;\n if (\n normalized === \"false\" ||\n normalized === \"disabled\" ||\n normalized === \"off\" ||\n normalized === \"0\"\n )\n return false;\n throw new PmCliError(\n `Context section toggle must be true|false|enabled|disabled, got \"${raw}\"`,\n EXIT_CODE.USAGE,\n );\n}\n\n/** Parse a complete positive integer used by context configuration options. */\nfunction parsePositiveContextInteger(rawValue: string, option: string): number {\n const raw = rawValue.trim();\n const parsed = Number(raw);\n if (/^\\d+$/u.test(raw) && Number.isSafeInteger(parsed) && parsed > 0) {\n return parsed;\n }\n throw new PmCliError(\n `Context ${option} must be a positive integer`,\n EXIT_CODE.USAGE,\n );\n}\n\nasync function applyContextConfig(\n settings: PmSettings,\n options: ConfigCommandOptions,\n target: { pmRoot: string; settingsPath: string },\n scope: ConfigScope,\n warnings: string[],\n): Promise<ConfigResult> {\n let changed = false;\n const ctx = settings.context;\n\n if (options.defaultDepth !== undefined) {\n const normalized = options.defaultDepth.trim().toLowerCase();\n if (!CONTEXT_DEPTH_VALUES.includes(normalized as ContextDepth)) {\n throw new PmCliError(\n `Context --default-depth must be one of ${CONTEXT_DEPTH_VALUES.join(\"|\")}`,\n EXIT_CODE.USAGE,\n );\n }\n if (ctx.default_depth !== normalized) {\n ctx.default_depth = normalized as ContextDepth;\n changed = true;\n }\n }\n\n if (options.activityLimit !== undefined) {\n const parsed = parsePositiveContextInteger(\n options.activityLimit,\n \"--activity-limit\",\n );\n if (ctx.activity_limit !== parsed) {\n ctx.activity_limit = parsed;\n changed = true;\n }\n }\n\n if (options.staleThresholdDays !== undefined) {\n const parsed = parsePositiveContextInteger(\n options.staleThresholdDays,\n \"--stale-threshold-days\",\n );\n if (ctx.stale_threshold_days !== parsed) {\n ctx.stale_threshold_days = parsed;\n changed = true;\n }\n }\n\n const sectionToggles: [string, string | undefined][] = [\n [\"hierarchy\", options.sectionHierarchy],\n [\"activity\", options.sectionActivity],\n [\"progress\", options.sectionProgress],\n [\"blockers\", options.sectionBlockers],\n [\"files\", options.sectionFiles],\n [\"workload\", options.sectionWorkload],\n [\"staleness\", options.sectionStaleness],\n [\"tests\", options.sectionTests],\n ];\n\n for (const [sectionName, rawValue] of sectionToggles) {\n const toggle = parseSectionToggle(rawValue);\n if (toggle !== undefined) {\n const key = sectionName as keyof typeof ctx.sections;\n if (ctx.sections[key] !== toggle) {\n ctx.sections[key] = toggle;\n changed = true;\n }\n }\n }\n\n if (changed) {\n await writeSettings(target.pmRoot, settings, \"config:set:context\");\n }\n\n return withWarnings(\n {\n scope,\n key: \"context\",\n context_settings: {\n default_depth: ctx.default_depth,\n activity_limit: ctx.activity_limit,\n stale_threshold_days: ctx.stale_threshold_days,\n sections: { ...ctx.sections },\n },\n settings_path: target.settingsPath,\n changed,\n },\n warnings,\n );\n}\n\nfunction applyNestedSettingPositionalValue(\n keyValue: string,\n valueValue: string,\n options: ConfigCommandOptions,\n): ConfigCommandOptions {\n if (options.value !== undefined && options.value !== valueValue) {\n throw new PmCliError(\n `Config set ${keyValue} received both positional value \"${valueValue}\" and --value \"${options.value}\". Pass only one.`,\n EXIT_CODE.USAGE,\n );\n }\n return { ...options, value: valueValue };\n}\n\n/** Route an intuitive `pm config set <key> <value>` positional value onto the typed flag it belongs to (--format/--policy/--criterion), applying enabled/disabled synonyms. Returns the (possibly augmented) options. The typed-flag forms keep working exactly as before: a positional value is only injected when its flag was not already supplied, and a conflicting explicit flag is a clear error. */\nfunction applyPositionalValue(\n action: ConfigAction,\n keyValue: string | undefined,\n normalizedKey: ConfigKey | undefined,\n nestedSetting: NestedSettingDescriptor | undefined,\n valueValue: string | undefined,\n options: ConfigCommandOptions,\n): ConfigCommandOptions {\n if (valueValue === undefined) {\n return options;\n }\n if (action !== \"set\") {\n throw new PmCliError(\n `Config action \"${action}\" does not accept a positional value. Only \"set\" takes <value>.`,\n EXIT_CODE.USAGE,\n );\n }\n if (typeof keyValue !== \"string\" || keyValue.trim().length === 0) {\n throw new PmCliError(\n 'Config action \"set\" requires <key> before a positional <value>.',\n EXIT_CODE.USAGE,\n );\n }\n\n if (nestedSetting) {\n return applyNestedSettingPositionalValue(keyValue, valueValue, options);\n }\n\n assertConfigKeyDefined(normalizedKey);\n const routed = resolveConfigPositionalValue(normalizedKey, valueValue);\n if (!routed.routable) {\n throw new PmCliError(routed.reason, EXIT_CODE.USAGE);\n }\n\n if (routed.flag === \"criterion\") {\n if (options.criterion !== undefined && options.criterion.length > 0) {\n throw new PmCliError(\n `Config set ${keyValue} received both positional value \"${valueValue}\" and --criterion. Pass criteria via --criterion only when supplying more than one value.`,\n EXIT_CODE.USAGE,\n );\n }\n return { ...options, criterion: routed.values };\n }\n\n if (routed.flag === \"format\") {\n return { ...options, format: routed.value };\n }\n\n // policy flag (--policy)\n if (\n options.policy !== undefined &&\n normalizePolicyForConflict(normalizedKey, options.policy) !==\n normalizePolicyForConflict(normalizedKey, routed.value)\n ) {\n throw new PmCliError(\n `Config set ${keyValue} received both positional value \"${valueValue}\" and --policy \"${options.policy}\". Pass only one.`,\n EXIT_CODE.USAGE,\n );\n }\n return { ...options, policy: routed.value };\n}\n\ninterface ConfigExecutionContext {\n scope: ConfigScope;\n target: { pmRoot: string; settingsPath: string };\n settings: PmSettings;\n metadata: { has_explicit_item_format: boolean };\n warnings: string[];\n}\n\nfunction buildConfigListResult(context: ConfigExecutionContext): ConfigResult {\n const keys = (Object.keys(CONFIG_KEY_ALIASES) as ConfigKey[]).map(\n (candidate) => ({\n key: candidate,\n aliases: CONFIG_KEY_ALIASES[candidate],\n value_kind:\n candidate === \"context\"\n ? (\"object\" as const)\n : isCriteriaConfigKey(candidate)\n ? (\"string_array\" as const)\n : (\"enum\" as const),\n set_flags:\n candidate === \"context\"\n ? [\n \"--default-depth\",\n \"--activity-limit\",\n \"--stale-threshold-days\",\n \"--section-<name>\",\n ]\n : isCriteriaConfigKey(candidate)\n ? [\"--criterion\", \"--clear-criteria\"]\n : candidate === \"item_format\"\n ? [\"--format\"]\n : [\"--policy\"],\n summary: CONFIG_KEY_SUMMARIES[candidate],\n value: readConfigValue(context.settings, candidate),\n }),\n );\n const nestedSettings: NestedSettingResultValue[] =\n NESTED_SETTING_DESCRIPTORS.map((descriptor) => ({\n key: descriptor.key,\n path: descriptor.path,\n kind: descriptor.kind,\n value: readNestedSettingValue(context.settings, descriptor),\n }));\n return withWarnings(\n {\n scope: context.scope,\n keys,\n nested_settings: nestedSettings,\n count: keys.length,\n settings_path: context.target.settingsPath,\n changed: false,\n },\n context.warnings,\n );\n}\n\nfunction buildConfigExportResult(\n context: ConfigExecutionContext,\n): ConfigResult {\n const values = Object.fromEntries(\n (Object.keys(CONFIG_KEY_ALIASES) as ConfigKey[]).map((key) => [\n key,\n readConfigValue(context.settings, key),\n ]),\n ) as Record<ConfigKey, ConfigValue>;\n return withWarnings(\n {\n scope: context.scope,\n values,\n settings_path: context.target.settingsPath,\n changed: false,\n },\n context.warnings,\n );\n}\n\nfunction buildConfigGetResult(\n context: ConfigExecutionContext,\n key: ConfigKey,\n): ConfigResult {\n const value = readConfigValue(context.settings, key);\n const base = {\n scope: context.scope,\n key,\n settings_path: context.target.settingsPath,\n changed: false,\n };\n if (key === \"item_format\") {\n return withWarnings(\n {\n ...base,\n format: context.settings.item_format,\n has_explicit_item_format: context.metadata.has_explicit_item_format,\n },\n context.warnings,\n );\n }\n if (key === \"context\") {\n return withWarnings(\n { ...base, context_settings: value as ContextConfigValue },\n context.warnings,\n );\n }\n if (Array.isArray(value)) {\n return withWarnings({ ...base, criteria: value }, context.warnings);\n }\n return withWarnings(\n { ...base, policy: value as ConfigResult[\"policy\"] },\n context.warnings,\n );\n}\n\nasync function buildNestedSettingResult(\n context: ConfigExecutionContext,\n action: ConfigAction,\n nestedSetting: NestedSettingDescriptor,\n options: ConfigCommandOptions,\n): Promise<ConfigResult> {\n if (action === \"get\") {\n const currentValue = readNestedSettingValue(\n context.settings,\n nestedSetting,\n );\n return withWarnings(\n {\n scope: context.scope,\n key: nestedSetting.key,\n nested_setting: {\n key: nestedSetting.key,\n path: nestedSetting.path,\n kind: nestedSetting.kind,\n value: currentValue,\n },\n settings_path: context.target.settingsPath,\n changed: false,\n },\n context.warnings,\n );\n }\n\n const rawValue = options.value;\n if (typeof rawValue !== \"string\") {\n throw new PmCliError(\n `Config set ${nestedSetting.key} requires a value. Pass it positionally (\\`pm config ${context.scope} set ${nestedSetting.key} <value>\\`) or via --value.`,\n EXIT_CODE.USAGE,\n );\n }\n const parsed = parseNestedSettingValue(nestedSetting, rawValue);\n if (!parsed.ok) {\n throw new PmCliError(parsed.error.message, EXIT_CODE.USAGE);\n }\n const changed = writeNestedSettingValue(\n context.settings as unknown as Record<string, unknown>,\n nestedSetting,\n parsed.parsed.value,\n );\n if (changed) {\n await writeSettings(\n context.target.pmRoot,\n context.settings,\n `config:set:${nestedSetting.path}`,\n );\n }\n return withWarnings(\n {\n scope: context.scope,\n key: nestedSetting.key,\n nested_setting: {\n key: nestedSetting.key,\n path: nestedSetting.path,\n kind: nestedSetting.kind,\n value: parsed.parsed.value,\n },\n settings_path: context.target.settingsPath,\n changed,\n },\n context.warnings,\n );\n}\n\nasync function writeConfigSettingsIfChanged(\n context: ConfigExecutionContext,\n changed: boolean,\n reason: string,\n): Promise<void> {\n if (changed) {\n await writeSettings(context.target.pmRoot, context.settings, reason);\n }\n}\n\nfunction hasGovernanceValidationMirrorChange<\n T extends ParentReferencePolicy | ValidateMetadataProfile,\n>(governanceValue: T, validationValue: T, nextPolicy: T): boolean {\n return governanceValue !== nextPolicy || validationValue !== nextPolicy;\n}\n\nfunction buildPolicyResult(\n context: ConfigExecutionContext,\n key: ConfigKey,\n policy: ConfigResult[\"policy\"],\n changed: boolean,\n): ConfigResult {\n return withWarnings(\n {\n scope: context.scope,\n key,\n policy,\n settings_path: context.target.settingsPath,\n changed,\n },\n context.warnings,\n );\n}\n\nfunction buildCriteriaResult(\n context: ConfigExecutionContext,\n key: ConfigKey,\n criteria: string[],\n changed: boolean,\n): ConfigResult {\n return withWarnings(\n {\n scope: context.scope,\n key,\n criteria,\n settings_path: context.target.settingsPath,\n changed,\n },\n context.warnings,\n );\n}\n\nasync function setItemFormatConfig(\n context: ConfigExecutionContext,\n options: ConfigCommandOptions,\n): Promise<ConfigResult> {\n const nextFormat = normalizeItemFormat(options.format);\n const changed =\n context.settings.item_format !== nextFormat ||\n !context.metadata.has_explicit_item_format;\n let migration: ConfigResult[\"migration\"] = undefined;\n if (changed) {\n const typeRegistry = resolveItemTypeRegistry(\n context.settings,\n getActiveExtensionRegistrations(),\n );\n const migrated = await migrateItemFilesToFormat(\n context.target.pmRoot,\n nextFormat,\n \"config:set:item_format:migrate\",\n typeRegistry.type_to_folder,\n context.settings.schema,\n );\n migration = {\n target_format: migrated.target_format,\n scanned: migrated.scanned,\n migrated: migrated.migrated,\n removed: migrated.removed,\n warnings: migrated.warnings,\n };\n context.settings.item_format = nextFormat;\n await writeSettings(\n context.target.pmRoot,\n context.settings,\n \"config:set:item_format\",\n );\n }\n return withWarnings(\n {\n scope: context.scope,\n key: \"item_format\",\n format: context.settings.item_format,\n has_explicit_item_format: true,\n migration,\n settings_path: context.target.settingsPath,\n changed,\n },\n context.warnings,\n );\n}\n\nasync function setValidationConfig(\n context: ConfigExecutionContext,\n key: ValidationConfigKey,\n options: ConfigCommandOptions,\n): Promise<ConfigResult> {\n if (key === \"history_missing_stream_policy\") {\n const nextPolicy = normalizeHistoryMissingStreamPolicy(options.policy);\n const changed = context.settings.history.missing_stream !== nextPolicy;\n context.settings.history.missing_stream = nextPolicy;\n await writeConfigSettingsIfChanged(\n context,\n changed,\n \"config:set:history_missing_stream_policy\",\n );\n return buildPolicyResult(\n context,\n key,\n context.settings.history.missing_stream,\n changed,\n );\n }\n if (key === \"sprint_release_format_policy\") {\n const nextPolicy = normalizeSprintReleaseFormatPolicy(options.policy);\n const changed =\n context.settings.validation.sprint_release_format !== nextPolicy;\n context.settings.validation.sprint_release_format = nextPolicy;\n await writeConfigSettingsIfChanged(\n context,\n changed,\n \"config:set:sprint_release_format_policy\",\n );\n return buildPolicyResult(\n context,\n key,\n context.settings.validation.sprint_release_format,\n changed,\n );\n }\n if (key === \"parent_reference_policy\") {\n const nextPolicy = normalizeParentReferencePolicy(options.policy);\n const changed =\n context.settings.validation.parent_reference !== nextPolicy ||\n context.settings.governance.preset !== \"custom\" ||\n context.settings.governance.parent_reference !== nextPolicy;\n context.settings.validation.parent_reference = nextPolicy;\n context.settings.governance.preset = \"custom\";\n context.settings.governance.parent_reference = nextPolicy;\n await writeConfigSettingsIfChanged(\n context,\n changed,\n \"config:set:parent_reference_policy\",\n );\n return buildPolicyResult(\n context,\n key,\n context.settings.validation.parent_reference,\n changed,\n );\n }\n const nextPolicy = normalizeValidateMetadataProfile(options.policy);\n const changed =\n context.settings.validation.metadata_profile !== nextPolicy ||\n context.settings.governance.preset !== \"custom\" ||\n context.settings.governance.metadata_profile !== nextPolicy;\n context.settings.validation.metadata_profile = nextPolicy;\n context.settings.governance.preset = \"custom\";\n context.settings.governance.metadata_profile = nextPolicy;\n await writeConfigSettingsIfChanged(\n context,\n changed,\n \"config:set:metadata_validation_profile\",\n );\n return buildPolicyResult(\n context,\n key,\n context.settings.validation.metadata_profile,\n changed,\n );\n}\n\nasync function setCriteriaConfig(\n context: ConfigExecutionContext,\n key: CriteriaConfigKey,\n options: ConfigCommandOptions,\n): Promise<ConfigResult> {\n if (key === \"metadata_required_fields\") {\n const nextCriteria = normalizeMetadataRequiredFields(\n options.criterion,\n options.clearCriteria,\n );\n const changed =\n nextCriteria.length !==\n context.settings.validation.metadata_required_fields.length ||\n nextCriteria.some(\n (value, index) =>\n value !== context.settings.validation.metadata_required_fields[index],\n );\n context.settings.validation.metadata_required_fields = nextCriteria;\n await writeConfigSettingsIfChanged(\n context,\n changed,\n \"config:set:metadata_required_fields\",\n );\n return buildCriteriaResult(\n context,\n key,\n [...context.settings.validation.metadata_required_fields],\n changed,\n );\n }\n\n const lifecycleTargets: Record<LifecyclePatternConfigKey, string[]> = {\n lifecycle_stale_blocker_reason_patterns:\n context.settings.validation.lifecycle_stale_blocker_reason_patterns,\n lifecycle_closure_like_blocked_reason_patterns:\n context.settings.validation\n .lifecycle_closure_like_blocked_reason_patterns,\n lifecycle_closure_like_resolution_patterns:\n context.settings.validation.lifecycle_closure_like_resolution_patterns,\n lifecycle_closure_like_actual_result_patterns:\n context.settings.validation.lifecycle_closure_like_actual_result_patterns,\n };\n const currentCriteria = lifecycleTargets[key];\n\n const nextCriteria = normalizeLifecyclePatternCriteria(\n key,\n options.criterion,\n options.clearCriteria,\n );\n const changed =\n nextCriteria.length !== currentCriteria.length ||\n nextCriteria.some((value, index) => value !== currentCriteria[index]);\n currentCriteria.splice(0, currentCriteria.length, ...nextCriteria);\n await writeConfigSettingsIfChanged(context, changed, `config:set:${key}`);\n return buildCriteriaResult(context, key, [...currentCriteria], changed);\n}\n\nasync function setGovernancePresetOrTypeConfig(\n context: ConfigExecutionContext,\n key: GovernancePresetOrTypeConfigKey,\n options: ConfigCommandOptions,\n): Promise<ConfigResult> {\n if (key === \"governance_preset\") {\n const nextPolicy = normalizeGovernancePreset(options.policy);\n const changed = context.settings.governance.preset !== nextPolicy;\n context.settings.governance.preset = nextPolicy;\n await writeConfigSettingsIfChanged(\n context,\n changed,\n \"config:set:governance_preset\",\n );\n return buildPolicyResult(\n context,\n key,\n context.settings.governance.preset,\n changed,\n );\n }\n\n const policyProvided = typeof options.policy === \"string\";\n const rawType = policyProvided ? options.policy!.trim() : \"\";\n if (policyProvided && rawType.length === 0) {\n const changed =\n context.settings.governance.create_default_type !== undefined;\n delete context.settings.governance.create_default_type;\n await writeConfigSettingsIfChanged(\n context,\n changed,\n \"config:set:governance_create_default_type\",\n );\n return buildPolicyResult(\n context,\n key,\n context.settings.governance.create_default_type ?? \"\",\n changed,\n );\n }\n if (rawType.length === 0) {\n throw new PmCliError(\n 'Config set governance-create-default-type requires an item type value (or an empty value \"\" to clear it)',\n EXIT_CODE.USAGE,\n );\n }\n const typeRegistry = resolveItemTypeRegistry(\n context.settings,\n getActiveExtensionRegistrations(),\n );\n const resolvedType = resolveTypeName(rawType, typeRegistry);\n if (!resolvedType) {\n throw new PmCliError(\n buildInvalidTypeError(\n rawType,\n typeRegistry.types,\n resolveItemTypesFilePath(\n context.target.pmRoot,\n context.settings.schema,\n ),\n ),\n EXIT_CODE.USAGE,\n );\n }\n const changed =\n context.settings.governance.create_default_type !== resolvedType;\n context.settings.governance.create_default_type = resolvedType;\n await writeConfigSettingsIfChanged(\n context,\n changed,\n \"config:set:governance_create_default_type\",\n );\n return buildPolicyResult(\n context,\n key,\n context.settings.governance.create_default_type,\n changed,\n );\n}\n\nasync function setGovernancePolicyConfig(\n context: ConfigExecutionContext,\n key: GovernancePolicyConfigKey,\n options: ConfigCommandOptions,\n): Promise<ConfigResult> {\n if (key === \"governance_ownership_enforcement\") {\n const nextPolicy = normalizeGovernanceOwnershipEnforcement(options.policy);\n const changed =\n context.settings.governance.preset !== \"custom\" ||\n context.settings.governance.ownership_enforcement !== nextPolicy;\n context.settings.governance.preset = \"custom\";\n context.settings.governance.ownership_enforcement = nextPolicy;\n await writeConfigSettingsIfChanged(\n context,\n changed,\n \"config:set:governance_ownership_enforcement\",\n );\n return buildPolicyResult(\n context,\n key,\n context.settings.governance.ownership_enforcement,\n changed,\n );\n }\n if (key === \"governance_create_mode_default\") {\n const nextPolicy = normalizeGovernanceCreateModeDefault(options.policy);\n const changed =\n context.settings.governance.preset !== \"custom\" ||\n context.settings.governance.create_mode_default !== nextPolicy;\n context.settings.governance.preset = \"custom\";\n context.settings.governance.create_mode_default = nextPolicy;\n await writeConfigSettingsIfChanged(\n context,\n changed,\n \"config:set:governance_create_mode_default\",\n );\n return buildPolicyResult(\n context,\n key,\n context.settings.governance.create_mode_default,\n changed,\n );\n }\n const nextPolicy = normalizeGovernanceCloseValidationDefault(options.policy);\n const changed =\n context.settings.governance.preset !== \"custom\" ||\n context.settings.governance.close_validation_default !== nextPolicy;\n context.settings.governance.preset = \"custom\";\n context.settings.governance.close_validation_default = nextPolicy;\n await writeConfigSettingsIfChanged(\n context,\n changed,\n \"config:set:governance_close_validation_default\",\n );\n return buildPolicyResult(\n context,\n key,\n context.settings.governance.close_validation_default,\n changed,\n );\n}\n\nasync function setGovernanceValidationConfig(\n context: ConfigExecutionContext,\n key: GovernanceValidationConfigKey,\n options: ConfigCommandOptions,\n): Promise<ConfigResult> {\n if (key === \"governance_parent_reference_policy\") {\n const nextPolicy = normalizeParentReferencePolicy(options.policy);\n const changed =\n context.settings.governance.preset !== \"custom\" ||\n hasGovernanceValidationMirrorChange(\n context.settings.governance.parent_reference,\n context.settings.validation.parent_reference,\n nextPolicy,\n );\n context.settings.governance.preset = \"custom\";\n context.settings.governance.parent_reference = nextPolicy;\n context.settings.validation.parent_reference = nextPolicy;\n await writeConfigSettingsIfChanged(\n context,\n changed,\n \"config:set:governance_parent_reference_policy\",\n );\n return buildPolicyResult(\n context,\n key,\n context.settings.governance.parent_reference,\n changed,\n );\n }\n if (key === \"governance_metadata_validation_profile\") {\n const nextPolicy = normalizeValidateMetadataProfile(options.policy);\n const changed =\n context.settings.governance.preset !== \"custom\" ||\n hasGovernanceValidationMirrorChange(\n context.settings.governance.metadata_profile,\n context.settings.validation.metadata_profile,\n nextPolicy,\n );\n context.settings.governance.preset = \"custom\";\n context.settings.governance.metadata_profile = nextPolicy;\n context.settings.validation.metadata_profile = nextPolicy;\n await writeConfigSettingsIfChanged(\n context,\n changed,\n \"config:set:governance_metadata_validation_profile\",\n );\n return buildPolicyResult(\n context,\n key,\n context.settings.governance.metadata_profile,\n changed,\n );\n }\n const nextPolicy = normalizeGovernanceWorkflowEnforcement(options.policy);\n const changed =\n (context.settings.governance.workflow_enforcement ?? \"off\") !== nextPolicy;\n context.settings.governance.workflow_enforcement = nextPolicy;\n await writeConfigSettingsIfChanged(\n context,\n changed,\n \"config:set:governance_workflow_enforcement\",\n );\n return buildPolicyResult(\n context,\n key,\n context.settings.governance.workflow_enforcement,\n changed,\n );\n}\n\nasync function setGovernanceBooleanConfig(\n context: ConfigExecutionContext,\n key: ConfigKey,\n options: ConfigCommandOptions,\n): Promise<ConfigResult> {\n if (key === \"governance_require_close_reason\") {\n const nextPolicy = normalizeGovernanceRequireCloseReasonPolicy(\n options.policy,\n );\n const nextEnabled = nextPolicy === \"enabled\";\n const changed =\n context.settings.governance.require_close_reason !== nextEnabled;\n context.settings.governance.require_close_reason = nextEnabled;\n await writeConfigSettingsIfChanged(\n context,\n changed,\n \"config:set:governance_require_close_reason\",\n );\n return buildPolicyResult(\n context,\n key,\n context.settings.governance.require_close_reason ? \"enabled\" : \"disabled\",\n changed,\n );\n }\n const nextPolicy = normalizeGovernanceForceRequiredForStaleLockPolicy(\n options.policy,\n );\n const nextEnabled = nextPolicy === \"enabled\";\n const changed =\n context.settings.governance.preset !== \"custom\" ||\n context.settings.governance.force_required_for_stale_lock !== nextEnabled;\n context.settings.governance.preset = \"custom\";\n context.settings.governance.force_required_for_stale_lock = nextEnabled;\n await writeConfigSettingsIfChanged(\n context,\n changed,\n \"config:set:governance_force_required_for_stale_lock\",\n );\n return buildPolicyResult(\n context,\n key,\n context.settings.governance.force_required_for_stale_lock\n ? \"enabled\"\n : \"disabled\",\n changed,\n );\n}\n\nasync function setTrackingConfig(\n context: ConfigExecutionContext,\n key: ConfigKey,\n options: ConfigCommandOptions,\n): Promise<ConfigResult> {\n if (key === \"test_result_tracking\") {\n const nextPolicy = normalizeTestResultTrackingPolicy(options.policy);\n const nextEnabled = nextPolicy === \"enabled\";\n const changed =\n context.settings.testing.record_results_to_items !== nextEnabled;\n context.settings.testing.record_results_to_items = nextEnabled;\n await writeConfigSettingsIfChanged(\n context,\n changed,\n \"config:set:test_result_tracking\",\n );\n return buildPolicyResult(\n context,\n key,\n context.settings.testing.record_results_to_items ? \"enabled\" : \"disabled\",\n changed,\n );\n }\n const nextPolicy = normalizeTelemetryTrackingPolicy(options.policy);\n const nextEnabled = nextPolicy === \"enabled\";\n const changed =\n context.settings.telemetry.enabled !== nextEnabled ||\n !context.settings.telemetry.first_run_prompt_completed;\n context.settings.telemetry.enabled = nextEnabled;\n context.settings.telemetry.first_run_prompt_completed = true;\n await writeConfigSettingsIfChanged(\n context,\n changed,\n \"config:set:telemetry_tracking\",\n );\n return buildPolicyResult(\n context,\n key,\n context.settings.telemetry.enabled ? \"enabled\" : \"disabled\",\n changed,\n );\n}\n\nasync function setDefinitionOfDoneConfig(\n context: ConfigExecutionContext,\n key: ConfigKey,\n options: ConfigCommandOptions,\n): Promise<ConfigResult> {\n const nextCriteria = normalizeCriteria(\n options.criterion,\n options.clearCriteria,\n );\n const changed =\n nextCriteria.length !==\n context.settings.workflow.definition_of_done.length ||\n nextCriteria.some(\n (value, index) =>\n value !== context.settings.workflow.definition_of_done[index],\n );\n context.settings.workflow.definition_of_done = nextCriteria;\n await writeConfigSettingsIfChanged(\n context,\n changed,\n \"config:set:definition_of_done\",\n );\n return buildCriteriaResult(\n context,\n key,\n [...context.settings.workflow.definition_of_done],\n changed,\n );\n}\n\nasync function setConfigValue(\n context: ConfigExecutionContext,\n key: ConfigKey,\n options: ConfigCommandOptions,\n): Promise<ConfigResult> {\n if (options.clearCriteria === true && !isCriteriaConfigKey(key)) {\n throw new PmCliError(\n \"--clear-criteria is only supported with config set criteria-list keys\",\n EXIT_CODE.USAGE,\n );\n }\n if (key === \"item_format\") {\n return setItemFormatConfig(context, options);\n }\n if (key === \"context\") {\n return applyContextConfig(\n context.settings,\n options,\n context.target,\n context.scope,\n context.warnings,\n );\n }\n if (key === \"definition_of_done\") {\n return setDefinitionOfDoneConfig(context, key, options);\n }\n if (isCriteriaValueConfigKey(key)) {\n return setCriteriaConfig(context, key, options);\n }\n if (TRACKING_CONFIG_KEYS.has(key)) {\n return setTrackingConfig(context, key, options);\n }\n if (GOVERNANCE_BOOLEAN_CONFIG_KEYS.has(key)) {\n return setGovernanceBooleanConfig(context, key, options);\n }\n if (isGovernancePolicyConfigKey(key)) {\n return setGovernancePolicyConfig(context, key, options);\n }\n if (isGovernanceValidationConfigKey(key)) {\n return setGovernanceValidationConfig(context, key, options);\n }\n if (isGovernancePresetOrTypeConfigKey(key)) {\n return setGovernancePresetOrTypeConfig(context, key, options);\n }\n return setValidationConfig(context, key as ValidationConfigKey, options);\n}\n\n/** Implements run config for the public runtime surface of this module. */\nexport async function runConfig(\n scopeValue: string,\n actionValue: string,\n keyValue: string | undefined,\n options: ConfigCommandOptions,\n global: GlobalOptions,\n valueValue?: string,\n): Promise<ConfigResult> {\n const scope = normalizeScope(scopeValue);\n const action = normalizeAction(actionValue);\n const nestedSetting =\n action === \"get\" || action === \"set\"\n ? resolveNestedSettingDescriptor(keyValue)\n : undefined;\n const key = nestedSetting\n ? undefined\n : normalizeKeyForAction(action, keyValue);\n const routedOptions = applyPositionalValue(\n action,\n keyValue,\n key,\n nestedSetting,\n valueValue,\n options,\n );\n const target = await resolveSettingsTarget(scope, global);\n const {\n settings,\n metadata,\n warnings: settingsReadWarnings,\n } = await readSettingsWithMetadata(target.pmRoot);\n const context: ConfigExecutionContext = {\n scope,\n target,\n settings,\n metadata,\n warnings: normalizeWarnings(settingsReadWarnings),\n };\n\n if (nestedSetting) {\n return buildNestedSettingResult(\n context,\n action,\n nestedSetting,\n routedOptions,\n );\n }\n if (action === \"list\") {\n return buildConfigListResult(context);\n }\n if (action === \"export\") {\n return buildConfigExportResult(context);\n }\n\n assertConfigKeyDefined(key);\n return action === \"get\"\n ? buildConfigGetResult(context, key)\n : setConfigValue(context, key, routedOptions);\n}\n\n/** Public contract for test only config command, shared by SDK and presentation-layer consumers. */\nexport const _testOnlyConfigCommand = {\n hasGovernanceValidationMirrorChange,\n applyPositionalValue,\n normalizeAction,\n normalizeCriteria,\n normalizeGovernanceCloseValidationDefault,\n normalizeGovernanceCreateModeDefault,\n normalizeGovernanceForceRequiredForStaleLockPolicy,\n normalizeGovernanceOwnershipEnforcement,\n normalizeGovernancePreset,\n normalizeGovernanceRequireCloseReasonPolicy,\n normalizeGovernanceWorkflowEnforcement,\n normalizeHistoryMissingStreamPolicy,\n normalizeItemFormat,\n normalizeKey,\n normalizeMetadataRequiredFields,\n normalizePolicyForConflict,\n normalizeScope,\n normalizeTelemetryTrackingPolicy,\n normalizeTestResultTrackingPolicy,\n normalizeValidateMetadataProfile,\n normalizeWarnings,\n};\n"],"names":[],"mappings":"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","debugId":"34d6966d-892f-5d42-989f-d091e5e93398"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { RuntimeStatusRegistry } from "../core/schema/runtime-schema.js";
|
|
2
|
+
import type { ItemMetadata } from "../types/index.js";
|
|
1
3
|
/** Canonical signal keys understood by the built-in relevance model. */
|
|
2
4
|
export declare const CONTEXT_RELEVANCE_SIGNAL_NAMES: readonly ["structural", "recency", "activity_density", "graph_proximity", "claim_focus", "priority_pressure", "risk_pressure", "deadline_pressure", "knowledge_density", "author_affinity", "usage_affinity", "semantic_similarity"];
|
|
3
5
|
/** A normalized signal consumed by the built-in context relevance scorer. */
|
|
@@ -13,6 +15,25 @@ export interface ContextRelevanceCandidate<TItem> {
|
|
|
13
15
|
/** Value that configures or reports signals for this contract. */
|
|
14
16
|
signals?: ContextRelevanceSignals;
|
|
15
17
|
}
|
|
18
|
+
/** Inputs that make item-signal derivation deterministic and host-configurable. */
|
|
19
|
+
export interface BuildItemContextRelevanceCandidatesOptions {
|
|
20
|
+
/** Workspace lifecycle registry, including custom in-progress aliases. */
|
|
21
|
+
statusRegistry: RuntimeStatusRegistry;
|
|
22
|
+
/** Stable clock used for deadline pressure. */
|
|
23
|
+
now: string;
|
|
24
|
+
/** Optional caller identity used for assignment affinity. */
|
|
25
|
+
author?: string;
|
|
26
|
+
/** Optional derived served-then-used affinity by item id. */
|
|
27
|
+
usageAffinity?: Readonly<Record<string, number>>;
|
|
28
|
+
/** Optional caller-derived semantic similarity by item id. */
|
|
29
|
+
semanticSimilarity?: Readonly<Record<string, number>>;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Derive the canonical metadata signals consumed by `pm context` and `pm next`.
|
|
33
|
+
* Extensions can pair this with {@link scoreContextCandidatesWithActiveExtensions}
|
|
34
|
+
* to reproduce built-in ranking without private imports or subprocesses.
|
|
35
|
+
*/
|
|
36
|
+
export declare function buildItemContextRelevanceCandidates(items: readonly ItemMetadata[], options: BuildItemContextRelevanceCandidatesOptions): ContextRelevanceCandidate<ItemMetadata>[];
|
|
16
37
|
/** Per-signal weighted contributions used to explain a ranked result. */
|
|
17
38
|
export type ContextRelevanceContributions = Record<string, number>;
|
|
18
39
|
/** One ranked candidate with deterministic score and explanation metadata. */
|
|
@@ -6,8 +6,10 @@
|
|
|
6
6
|
* with core, extension, or project-specific feature stores.
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
-
!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]="
|
|
9
|
+
!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]="833cf230-b0c8-51f0-822e-1f27f0574971")}catch(e){}}();
|
|
10
10
|
import { runActiveServiceOverride } from "../core/extensions/index.js";
|
|
11
|
+
import { normalizeStatusForRegistry, normalizeStatusInput, } from "../core/item/status.js";
|
|
12
|
+
import { compareTimestampStrings, resolveIsoOrRelative } from "../core/shared/time.js";
|
|
11
13
|
/** Canonical signal keys understood by the built-in relevance model. */
|
|
12
14
|
export const CONTEXT_RELEVANCE_SIGNAL_NAMES = [
|
|
13
15
|
"structural",
|
|
@@ -23,6 +25,72 @@ export const CONTEXT_RELEVANCE_SIGNAL_NAMES = [
|
|
|
23
25
|
"usage_affinity",
|
|
24
26
|
"semantic_similarity",
|
|
25
27
|
];
|
|
28
|
+
function normalizedPressure(value, maximum) {
|
|
29
|
+
const parsed = typeof value === "number" ? value : typeof value === "string" ? Number.parseFloat(value) : Number.NaN;
|
|
30
|
+
return Number.isFinite(parsed) ? 1 - Math.min(Math.max(parsed, 0), maximum) / maximum : 0;
|
|
31
|
+
}
|
|
32
|
+
function deadlinePressure(deadline, nowMs) {
|
|
33
|
+
const deadlineMs = typeof deadline === "string" ? Date.parse(deadline) : deadline instanceof Date ? deadline.getTime() : typeof deadline === "number" ? deadline : Number.NaN;
|
|
34
|
+
if (!Number.isFinite(deadlineMs) || !Number.isFinite(nowMs))
|
|
35
|
+
return 0;
|
|
36
|
+
const days = (deadlineMs - nowMs) / 86_400_000;
|
|
37
|
+
return days <= 0 ? 1 : 1 / (1 + days / 30);
|
|
38
|
+
}
|
|
39
|
+
function riskPressure(risk) {
|
|
40
|
+
const normalized = typeof risk === "string" ? risk.trim().toLowerCase() : undefined;
|
|
41
|
+
if (normalized === "critical" || normalized === "high")
|
|
42
|
+
return 1;
|
|
43
|
+
if (normalized === "medium")
|
|
44
|
+
return 0.5;
|
|
45
|
+
return normalized === "low" ? 0.1 : 0;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Derive the canonical metadata signals consumed by `pm context` and `pm next`.
|
|
49
|
+
* Extensions can pair this with {@link scoreContextCandidatesWithActiveExtensions}
|
|
50
|
+
* to reproduce built-in ranking without private imports or subprocesses.
|
|
51
|
+
*/
|
|
52
|
+
export function buildItemContextRelevanceCandidates(items, options) {
|
|
53
|
+
const sortableTimestamp = (value) => {
|
|
54
|
+
if (typeof value !== "string")
|
|
55
|
+
return "";
|
|
56
|
+
try {
|
|
57
|
+
return resolveIsoOrRelative(value, new Date(Number.NaN), "updated_at");
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
return "";
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
const recencyOrder = [...items].sort((left, right) => {
|
|
64
|
+
const leftTime = sortableTimestamp(left.updated_at);
|
|
65
|
+
const rightTime = sortableTimestamp(right.updated_at);
|
|
66
|
+
return compareTimestampStrings(rightTime, leftTime) || left.id.localeCompare(right.id);
|
|
67
|
+
});
|
|
68
|
+
const recencyRank = new Map(recencyOrder.map((item, index) => [item.id, index]));
|
|
69
|
+
const denominator = Math.max(items.length - 1, 1);
|
|
70
|
+
const normalizedAuthor = options.author?.trim().toLowerCase();
|
|
71
|
+
const inProgressStatus = normalizeStatusInput("in_progress", options.statusRegistry);
|
|
72
|
+
const nowMs = Date.parse(options.now);
|
|
73
|
+
return items.map((item) => {
|
|
74
|
+
const assigned = normalizedAuthor !== undefined && typeof item.assignee === "string" && item.assignee.trim().toLowerCase() === normalizedAuthor;
|
|
75
|
+
const knowledgeEntries = (item.comments?.length ?? 0) + (item.notes?.length ?? 0) + (item.learnings?.length ?? 0);
|
|
76
|
+
return {
|
|
77
|
+
id: item.id,
|
|
78
|
+
item,
|
|
79
|
+
signals: {
|
|
80
|
+
recency: items.length === 1 ? 1 : 1 - recencyRank.get(item.id) / denominator,
|
|
81
|
+
graph_proximity: item.parent ? 0.3 : 0,
|
|
82
|
+
claim_focus: normalizeStatusForRegistry(item.status, options.statusRegistry) === inProgressStatus ? 1 : assigned ? 0.75 : 0,
|
|
83
|
+
priority_pressure: normalizedPressure(item.priority, 4),
|
|
84
|
+
risk_pressure: riskPressure(item.risk),
|
|
85
|
+
deadline_pressure: deadlinePressure(item.deadline, nowMs),
|
|
86
|
+
knowledge_density: Math.min(knowledgeEntries / 5, 1),
|
|
87
|
+
author_affinity: assigned ? 1 : 0,
|
|
88
|
+
usage_affinity: options.usageAffinity?.[item.id],
|
|
89
|
+
semantic_similarity: options.semanticSimilarity?.[item.id],
|
|
90
|
+
},
|
|
91
|
+
};
|
|
92
|
+
});
|
|
93
|
+
}
|
|
26
94
|
/** Governed extension service used to replace or wrap context ranking. */
|
|
27
95
|
export const CONTEXT_RELEVANCE_SERVICE = "context_relevance";
|
|
28
96
|
const DEFAULT_CONTEXT_RELEVANCE_WEIGHTS = {
|
|
@@ -342,4 +410,4 @@ export async function runContextEvaluationCorpus(scenarios, reader, thresholds)
|
|
|
342
410
|
return summarizeContextEvaluationReports(reports, thresholds);
|
|
343
411
|
}
|
|
344
412
|
//# sourceMappingURL=context-relevance.js.map
|
|
345
|
-
//# debugId=
|
|
413
|
+
//# debugId=833cf230-b0c8-51f0-822e-1f27f0574971
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-relevance.js","sources":["sdk/context-relevance.ts"],"sourceRoot":"/","sourcesContent":["/**\n * @module sdk/context-relevance\n *\n * Public, deterministic context-ranking and evaluation primitives. The scorer\n * accepts already-derived signals so package authors can reuse the same model\n * with core, extension, or project-specific feature stores.\n */\nimport { runActiveServiceOverride } from \"../core/extensions/index.js\";\n\n/** Canonical signal keys understood by the built-in relevance model. */\nexport const CONTEXT_RELEVANCE_SIGNAL_NAMES = [\n \"structural\",\n \"recency\",\n \"activity_density\",\n \"graph_proximity\",\n \"claim_focus\",\n \"priority_pressure\",\n \"risk_pressure\",\n \"deadline_pressure\",\n \"knowledge_density\",\n \"author_affinity\",\n \"usage_affinity\",\n \"semantic_similarity\",\n] as const;\n\n/** A normalized signal consumed by the built-in context relevance scorer. */\nexport type ContextRelevanceSignalName =\n (typeof CONTEXT_RELEVANCE_SIGNAL_NAMES)[number];\n\n/** Normalized candidate features; omitted signals are excluded from weighting. */\nexport type ContextRelevanceSignals = Partial<\n Record<Exclude<ContextRelevanceSignalName, \"structural\">, number>\n>;\n\n/** A project-management object and its derived relevance signals. */\nexport interface ContextRelevanceCandidate<TItem> {\n /** Stable identifier used to reference this record across commands and storage. */\n id: string;\n /** Value that configures or reports item for this contract. */\n item: TItem;\n /** Value that configures or reports signals for this contract. */\n signals?: ContextRelevanceSignals;\n}\n\n/** Per-signal weighted contributions used to explain a ranked result. */\nexport type ContextRelevanceContributions = Record<string, number>;\n\n/** One ranked candidate with deterministic score and explanation metadata. */\nexport interface RankedContextCandidate<\n TItem,\n> extends ContextRelevanceCandidate<TItem> {\n /** Value that configures or reports baseline rank for this contract. */\n baseline_rank: number;\n /** Value that configures or reports rank for this contract. */\n rank: number;\n /** Value that configures or reports score for this contract. */\n score: number;\n /** Value that configures or reports contributions for this contract. */\n contributions: ContextRelevanceContributions;\n}\n\n/** Complete output from a context relevance scorer. */\nexport interface ContextRelevanceReport<TItem> {\n /** Value that configures or reports model for this contract. */\n model: string;\n /** Value that configures or reports available signals for this contract. */\n available_signals: ContextRelevanceSignalName[];\n /** Value that configures or reports ranked for this contract. */\n ranked: RankedContextCandidate<TItem>[];\n /** Value that configures or reports warnings for this contract. */\n warnings?: string[];\n}\n\n/** Minimal custom score returned by a replacement or wrapper scorer. */\nexport interface ContextRelevanceCustomScore {\n /** Stable identifier used to reference this record across commands and storage. */\n id: string;\n /** Value that configures or reports score for this contract. */\n score: number;\n}\n\n/** Input provided to a custom scorer, including the deterministic default. */\nexport interface ContextRelevanceScorerInput<TItem> {\n /** Value that configures or reports candidates for this contract. */\n candidates: readonly ContextRelevanceCandidate<TItem>[];\n /** Fallback report used when callers do not provide an override. */\n default_report: ContextRelevanceReport<TItem>;\n}\n\n/** Replaceable package/extension scorer contract. */\nexport type ContextRelevanceScorer<TItem> = (\n input: ContextRelevanceScorerInput<TItem>,\n) =>\n | readonly ContextRelevanceCustomScore[]\n | Promise<readonly ContextRelevanceCustomScore[]>;\n\n/** Options for the built-in or replaceable context relevance scorer. */\nexport interface ScoreContextCandidatesOptions<TItem> {\n /** Value that configures or reports weights for this contract. */\n weights?: Partial<Record<ContextRelevanceSignalName, number>>;\n /** Value that configures or reports scorer for this contract. */\n scorer?: ContextRelevanceScorer<TItem>;\n}\n\n/** Governed extension service used to replace or wrap context ranking. */\nexport const CONTEXT_RELEVANCE_SERVICE = \"context_relevance\" as const;\n\n/** Command surface requesting an active extension relevance override. */\nexport type ContextRelevanceSurface = \"context\" | \"next\";\n\nconst DEFAULT_CONTEXT_RELEVANCE_WEIGHTS: Record<\n ContextRelevanceSignalName,\n number\n> = {\n structural: 0.4,\n recency: 0.35,\n activity_density: 0.25,\n graph_proximity: 0.15,\n claim_focus: 0.6,\n priority_pressure: 0.35,\n risk_pressure: 0.2,\n deadline_pressure: 0.45,\n knowledge_density: 0.25,\n author_affinity: 0.2,\n usage_affinity: 0.3,\n semantic_similarity: 0.5,\n};\nconst JSON_TOKEN_ENCODER = new TextEncoder();\n\nfunction assertCandidates<TItem>(\n candidates: readonly ContextRelevanceCandidate<TItem>[],\n): void {\n const ids = new Set<string>();\n for (const candidate of candidates) {\n if (\n typeof candidate.id !== \"string\" ||\n candidate.id.trim().length === 0 ||\n ids.has(candidate.id)\n ) {\n throw new TypeError(\n \"Context relevance candidates require unique non-empty ids\",\n );\n }\n ids.add(candidate.id);\n for (const [signal, value] of Object.entries(candidate.signals ?? {})) {\n if (\n signal === \"structural\" ||\n !CONTEXT_RELEVANCE_SIGNAL_NAMES.includes(\n signal as ContextRelevanceSignalName,\n )\n ) {\n throw new TypeError(`Unknown context relevance signal: ${signal}`);\n }\n if (value === undefined) continue;\n if (!Number.isFinite(value) || value < 0 || value > 1) {\n throw new TypeError(\n `Context relevance signal ${signal} must be a finite number from 0 to 1`,\n );\n }\n }\n }\n}\n\nfunction resolveWeights(\n overrides: Partial<Record<ContextRelevanceSignalName, number>> | undefined,\n): Record<ContextRelevanceSignalName, number> {\n const weights = { ...DEFAULT_CONTEXT_RELEVANCE_WEIGHTS };\n for (const [signal, weight] of Object.entries(overrides ?? {})) {\n if (\n weight !== undefined &&\n CONTEXT_RELEVANCE_SIGNAL_NAMES.includes(\n signal as ContextRelevanceSignalName,\n )\n ) {\n weights[signal as ContextRelevanceSignalName] = weight;\n }\n }\n for (const [signal, weight] of Object.entries(weights)) {\n if (!Number.isFinite(weight) || weight < 0) {\n throw new TypeError(\n `Context relevance weight ${signal} must be a finite non-negative number`,\n );\n }\n }\n return weights;\n}\n\n/** Score candidates with pm's deterministic weighted model. Candidate order is the structural baseline and remains unchanged when no advanced signals exist. */\nexport function defaultScoreContextCandidates<TItem>(\n candidates: readonly ContextRelevanceCandidate<TItem>[],\n options: Pick<ScoreContextCandidatesOptions<TItem>, \"weights\"> = {},\n): ContextRelevanceReport<TItem> {\n assertCandidates(candidates);\n const weights = resolveWeights(options.weights);\n const denominator = Math.max(candidates.length - 1, 1);\n const available = new Set<ContextRelevanceSignalName>([\"structural\"]);\n for (const candidate of candidates) {\n for (const [signal, value] of Object.entries(candidate.signals ?? {})) {\n if (value !== undefined)\n available.add(signal as ContextRelevanceSignalName);\n }\n }\n const availableSignals = CONTEXT_RELEVANCE_SIGNAL_NAMES.filter((signal) =>\n available.has(signal),\n );\n const scored = candidates.map(\n (candidate, index): RankedContextCandidate<TItem> => {\n const signalValues: Partial<Record<ContextRelevanceSignalName, number>> =\n {\n structural: candidates.length === 1 ? 1 : 1 - index / denominator,\n ...candidate.signals,\n };\n const contributions: ContextRelevanceContributions = {};\n let weightedScore = 0;\n let totalWeight = 0;\n for (const signal of availableSignals) {\n const value = signalValues[signal];\n if (value === undefined) continue;\n const contribution = value * weights[signal];\n contributions[signal] = contribution;\n weightedScore += contribution;\n totalWeight += weights[signal];\n }\n return {\n ...candidate,\n baseline_rank: index + 1,\n rank: 0,\n score: totalWeight === 0 ? 0 : weightedScore / totalWeight,\n contributions,\n };\n },\n );\n scored.sort(\n (left, right) =>\n right.score - left.score || left.baseline_rank - right.baseline_rank,\n );\n scored.forEach((entry, index) => {\n entry.rank = index + 1;\n });\n return {\n model: \"default-weighted-v1\",\n available_signals: availableSignals,\n ranked: scored,\n };\n}\n\n/** Score candidates with the default model or a validated replacement/wrapper. */\nexport async function scoreContextCandidates<TItem>(\n candidates: readonly ContextRelevanceCandidate<TItem>[],\n options: ScoreContextCandidatesOptions<TItem> = {},\n): Promise<ContextRelevanceReport<TItem>> {\n const defaultReport = defaultScoreContextCandidates(candidates, options);\n if (!options.scorer) return defaultReport;\n const customScores = await options.scorer({\n candidates,\n default_report: defaultReport,\n });\n const scoreById = new Map<string, number>();\n for (const entry of customScores) {\n if (scoreById.has(entry.id) || !Number.isFinite(entry.score)) {\n throw new TypeError(\n \"Context relevance scorer must return one finite score for every candidate\",\n );\n }\n scoreById.set(entry.id, entry.score);\n }\n if (\n scoreById.size !== candidates.length ||\n candidates.some((candidate) => !scoreById.has(candidate.id))\n ) {\n throw new TypeError(\n \"Context relevance scorer must return one finite score for every candidate\",\n );\n }\n const ranked = defaultReport.ranked.map((entry) => {\n const score = scoreById.get(entry.id) as number;\n return { ...entry, score, contributions: { custom: score } };\n });\n ranked.sort(\n (left, right) =>\n right.score - left.score || left.baseline_rank - right.baseline_rank,\n );\n ranked.forEach((entry, index) => {\n entry.rank = index + 1;\n });\n return {\n model: \"custom\",\n available_signals: defaultReport.available_signals,\n ranked,\n };\n}\n\n/** Score command candidates through the public default model and then the active governed `context_relevance` service override, when one is registered. */\nexport async function scoreContextCandidatesWithActiveExtensions<TItem>(\n surface: ContextRelevanceSurface,\n candidates: readonly ContextRelevanceCandidate<TItem>[],\n options: Pick<ScoreContextCandidatesOptions<TItem>, \"weights\"> = {},\n): Promise<ContextRelevanceReport<TItem>> {\n const defaultReport = defaultScoreContextCandidates(candidates, options);\n const override = await runActiveServiceOverride(CONTEXT_RELEVANCE_SERVICE, {\n surface,\n candidates,\n default_report: defaultReport,\n });\n if (!override.handled) {\n return override.warnings.length > 0\n ? { ...defaultReport, warnings: override.warnings }\n : defaultReport;\n }\n if (\n !Array.isArray(override.result) ||\n !override.result.every(\n (entry) =>\n typeof entry === \"object\" &&\n entry !== null &&\n typeof (entry as { id?: unknown }).id === \"string\" &&\n typeof (entry as { score?: unknown }).score === \"number\" &&\n Number.isFinite((entry as { score: number }).score),\n )\n ) {\n return {\n ...defaultReport,\n warnings: [\n ...override.warnings,\n \"extension_context_relevance_invalid_result\",\n ],\n };\n }\n try {\n const report = await scoreContextCandidates(candidates, {\n ...options,\n scorer: () => override.result as ContextRelevanceCustomScore[],\n });\n return override.warnings.length > 0\n ? { ...report, warnings: override.warnings }\n : report;\n } catch {\n return {\n ...defaultReport,\n warnings: [\n ...override.warnings,\n \"extension_context_relevance_invalid_result\",\n ],\n };\n }\n}\n\n/** Input for rank-aware context/next quality evaluation. */\nexport interface ContextRankingEvaluationInput {\n /** Value that configures or reports ranked ids for this contract. */\n ranked_ids: string[];\n /** Value that configures or reports judgments for this contract. */\n judgments: Record<string, number>;\n /** Value that configures or reports required ids for this contract. */\n required_ids?: string[];\n /** Value that configures or reports continuity ids for this contract. */\n continuity_ids?: string[];\n /** Value that configures or reports actual tokens for this contract. */\n actual_tokens: number;\n /** Value that configures or reports token budget for this contract. */\n token_budget: number;\n}\n\n/** Rank-quality, continuity, recall, and token-budget metrics for one scenario. */\nexport interface ContextRankingEvaluation {\n /** Value that configures or reports ndcg for this contract. */\n ndcg: number;\n /** Value that configures or reports reciprocal rank for this contract. */\n reciprocal_rank: number;\n /** Value that configures or reports required recall for this contract. */\n required_recall: number;\n /** Value that configures or reports continuity coverage for this contract. */\n continuity_coverage: number;\n /** Value that configures or reports token budget adherence for this contract. */\n token_budget_adherence: number;\n /** Value that configures or reports within token budget for this contract. */\n within_token_budget: boolean;\n}\n\n/** Flexible read options accepted by context evaluation scenarios. */\nexport interface ContextEvaluationReadOptions {\n /** Value that configures or reports explain ranking for this contract. */\n explainRanking?: boolean;\n [key: string]: unknown;\n}\n\n/** Minimal item identity consumed by the context evaluation runner. */\nexport interface ContextEvaluationResultItem {\n /** Stable identifier used to reference this record across commands and storage. */\n id: string;\n}\n\n/** Optional scorer attribution returned by an evaluated read primitive. */\nexport interface ContextEvaluationResultRanking {\n /** Value that configures or reports items for this contract. */\n items?: Array<{ id: string; contributions: ContextRelevanceContributions }>;\n}\n\n/** Structural context result consumed by the evaluation runner. */\nexport interface ContextEvaluationContextResult {\n /** Value that configures or reports high level for this contract. */\n high_level?: ContextEvaluationResultItem[];\n /** Value that configures or reports low level for this contract. */\n low_level?: ContextEvaluationResultItem[];\n /** Value that configures or reports blocked fallback for this contract. */\n blocked_fallback?: ContextEvaluationResultItem[];\n /** Value that configures or reports ranking for this contract. */\n ranking?: ContextEvaluationResultRanking;\n [key: string]: unknown;\n}\n\n/** Structural next result consumed by the evaluation runner. */\nexport interface ContextEvaluationNextResult {\n /** Value that configures or reports recommended for this contract. */\n recommended?: ContextEvaluationResultItem | null;\n /** Value that configures or reports ready for this contract. */\n ready?: ContextEvaluationResultItem[];\n /** Value that configures or reports ranking for this contract. */\n ranking?: ContextEvaluationResultRanking;\n [key: string]: unknown;\n}\n\n/** Read-only SDK surface required by the context evaluation runner. */\nexport interface ContextEvaluationReader {\n /** Value that configures or reports context for this contract. */\n context(\n options?: ContextEvaluationReadOptions,\n ): Promise<ContextEvaluationContextResult>;\n /** Value that configures or reports next for this contract. */\n next(\n options?: ContextEvaluationReadOptions,\n ): Promise<ContextEvaluationNextResult>;\n}\n\n/** One graded context or next scenario evaluated against a real SDK reader. */\nexport interface ContextEvaluationScenario {\n /** Stable identifier used to reference this record across commands and storage. */\n id: string;\n /** Value that configures or reports surface for this contract. */\n surface: ContextRelevanceSurface;\n /** Value that configures or reports options for this contract. */\n options?: ContextEvaluationReadOptions;\n /** Value that configures or reports judgments for this contract. */\n judgments: Record<string, number>;\n /** Value that configures or reports required ids for this contract. */\n required_ids?: string[];\n /** Value that configures or reports continuity ids for this contract. */\n continuity_ids?: string[];\n /** Value that configures or reports token budget for this contract. */\n token_budget: number;\n /** Value that configures or reports rationale for this contract. */\n rationale: string;\n}\n\n/** Per-item signal attribution retained by a context evaluation report. */\nexport interface ContextEvaluationAttribution {\n /** Stable identifier used to reference this record across commands and storage. */\n id: string;\n /** Value that configures or reports contributions for this contract. */\n contributions: ContextRelevanceContributions;\n}\n\n/** Result of executing and grading one context evaluation scenario. */\nexport interface ContextEvaluationScenarioReport {\n /** Stable identifier used to reference this record across commands and storage. */\n id: string;\n /** Value that configures or reports surface for this contract. */\n surface: ContextRelevanceSurface;\n /** Value that configures or reports rationale for this contract. */\n rationale: string;\n /** Value that configures or reports ranked ids for this contract. */\n ranked_ids: string[];\n /** Value that configures or reports actual tokens for this contract. */\n actual_tokens: number;\n /** Value that configures or reports metrics for this contract. */\n metrics: ContextRankingEvaluation;\n /** Value that configures or reports attribution for this contract. */\n attribution: ContextEvaluationAttribution[];\n}\n\n/** Minimum acceptable aggregate metrics for a context evaluation corpus. */\nexport interface ContextEvaluationThresholds {\n /** Value that configures or reports ndcg for this contract. */\n ndcg: number;\n /** Value that configures or reports reciprocal rank for this contract. */\n reciprocal_rank: number;\n /** Value that configures or reports required recall for this contract. */\n required_recall: number;\n /** Value that configures or reports continuity coverage for this contract. */\n continuity_coverage: number;\n /** Value that configures or reports token budget adherence for this contract. */\n token_budget_adherence: number;\n}\n\n/** Canonical aggregate metrics required by every context evaluation corpus. */\nexport const CONTEXT_EVALUATION_METRIC_NAMES = [\n \"ndcg\",\n \"reciprocal_rank\",\n \"required_recall\",\n \"continuity_coverage\",\n \"token_budget_adherence\",\n] as const satisfies readonly (keyof ContextEvaluationThresholds)[];\n\n/** Aggregate context evaluation report suitable for a CI quality gate. */\nexport interface ContextEvaluationCorpusReport {\n /** Number of scenario entries represented by this result. */\n scenario_count: number;\n /** Value that configures or reports aggregate for this contract. */\n aggregate: ContextEvaluationThresholds;\n /** Value that configures or reports scenarios for this contract. */\n scenarios: ContextEvaluationScenarioReport[];\n /** Value that configures or reports passed for this contract. */\n passed: boolean;\n /** Value that configures or reports failures for this contract. */\n failures: string[];\n}\n\nfunction ratioOfPresent(\n expected: readonly string[],\n actual: ReadonlySet<string>,\n): number {\n if (expected.length === 0) return 1;\n return expected.filter((id) => actual.has(id)).length / expected.length;\n}\n\n/** Evaluate one ranked context packet against graded human judgments. */\nexport function evaluateContextRanking(\n input: ContextRankingEvaluationInput,\n): ContextRankingEvaluation {\n if (\n !Number.isFinite(input.actual_tokens) ||\n input.actual_tokens < 0 ||\n !Number.isFinite(input.token_budget) ||\n input.token_budget <= 0\n ) {\n throw new TypeError(\n \"Context ranking token counts require actual_tokens >= 0 and token_budget > 0\",\n );\n }\n const judgments = input.judgments ?? {};\n const gains = input.ranked_ids.map((id) => Math.max(0, judgments[id] ?? 0));\n const idealGains = Object.values(judgments)\n .map((grade) => Math.max(0, grade))\n .sort((left, right) => right - left)\n .slice(0, gains.length || 1);\n const discountedGain = (values: readonly number[]) =>\n values.reduce(\n (total, grade, index) => total + (2 ** grade - 1) / Math.log2(index + 2),\n 0,\n );\n const ideal = discountedGain(idealGains);\n const firstRelevant = gains.findIndex((grade) => grade > 0);\n const actualIds = new Set(input.ranked_ids);\n const withinBudget = input.actual_tokens <= input.token_budget;\n return {\n ndcg: ideal === 0 ? 1 : discountedGain(gains) / ideal,\n reciprocal_rank: firstRelevant < 0 ? 0 : 1 / (firstRelevant + 1),\n required_recall: ratioOfPresent(input.required_ids ?? [], actualIds),\n continuity_coverage: ratioOfPresent(input.continuity_ids ?? [], actualIds),\n token_budget_adherence: withinBudget\n ? 1\n : input.token_budget / input.actual_tokens,\n within_token_budget: withinBudget,\n };\n}\n\nfunction estimateJsonTokens(value: unknown): number {\n return Math.ceil(\n JSON_TOKEN_ENCODER.encode(JSON.stringify(value)).byteLength / 4,\n );\n}\n\nfunction roundEvaluationMetric(value: number): number {\n return Math.round(value * 10_000) / 10_000;\n}\n\nfunction rankingPayloadForScenario(\n result: ContextEvaluationContextResult | ContextEvaluationNextResult,\n surface: ContextRelevanceSurface,\n): { rankedIds: string[]; attribution: ContextEvaluationAttribution[] } {\n const rankedIds =\n surface === \"context\"\n ? [\n ...((result as ContextEvaluationContextResult).high_level ?? []),\n ...((result as ContextEvaluationContextResult).low_level ?? []),\n ...((result as ContextEvaluationContextResult).blocked_fallback ??\n []),\n ].map((item) => item.id)\n : [\n ...((result as ContextEvaluationNextResult).recommended\n ? [\n (result as ContextEvaluationNextResult)\n .recommended as ContextEvaluationResultItem,\n ]\n : []),\n ...((result as ContextEvaluationNextResult).ready ?? []),\n ].map((item) => item.id);\n const servedIds = new Set(rankedIds);\n const attribution = (result.ranking?.items ?? [])\n .filter((item) => servedIds.has(item.id))\n .map((item) => ({ id: item.id, contributions: item.contributions }));\n return { rankedIds, attribution };\n}\n\n/** Execute one graded scenario through public SDK context/next read primitives. */\nexport async function runContextEvaluationScenario(\n scenario: ContextEvaluationScenario,\n reader: ContextEvaluationReader,\n): Promise<ContextEvaluationScenarioReport> {\n if (\n scenario.id.trim().length === 0 ||\n scenario.rationale.trim().length === 0\n ) {\n throw new TypeError(\n \"Context evaluation scenarios require non-empty id and rationale values\",\n );\n }\n const result =\n scenario.surface === \"context\"\n ? await reader.context({ ...scenario.options, explainRanking: true })\n : await reader.next({ ...scenario.options, explainRanking: true });\n const { rankedIds, attribution } = rankingPayloadForScenario(\n result,\n scenario.surface,\n );\n const packet = { ...result, ranking: undefined };\n const actualTokens = estimateJsonTokens(packet);\n return {\n id: scenario.id,\n surface: scenario.surface,\n rationale: scenario.rationale,\n ranked_ids: rankedIds,\n actual_tokens: actualTokens,\n metrics: evaluateContextRanking({\n ranked_ids: rankedIds,\n judgments: scenario.judgments,\n required_ids: scenario.required_ids,\n continuity_ids: scenario.continuity_ids,\n actual_tokens: actualTokens,\n token_budget: scenario.token_budget,\n }),\n attribution,\n };\n}\n\n/** Aggregate scenario reports and evaluate every metric against explicit thresholds. */\nexport function summarizeContextEvaluationReports(\n reports: readonly ContextEvaluationScenarioReport[],\n thresholds: ContextEvaluationThresholds,\n): ContextEvaluationCorpusReport {\n if (reports.length === 0) {\n throw new TypeError(\n \"Context evaluation requires at least one scenario report\",\n );\n }\n const metrics = CONTEXT_EVALUATION_METRIC_NAMES;\n for (const metric of metrics) {\n if (!Number.isFinite(thresholds[metric])) {\n throw new TypeError(\n `Context evaluation threshold ${metric} must be a finite number`,\n );\n }\n }\n const aggregate = Object.fromEntries(\n metrics.map((metric) => [\n metric,\n roundEvaluationMetric(\n reports.reduce((total, report) => total + report.metrics[metric], 0) /\n reports.length,\n ),\n ]),\n ) as unknown as ContextEvaluationThresholds;\n const failures = metrics\n .filter((metric) => aggregate[metric] < thresholds[metric])\n .map((metric) => `${metric}:${aggregate[metric]}<${thresholds[metric]}`);\n return {\n scenario_count: reports.length,\n aggregate,\n scenarios: [...reports],\n passed: failures.length === 0,\n failures,\n };\n}\n\n/** Execute a same-workspace scenario corpus through public SDK read primitives. */\nexport async function runContextEvaluationCorpus(\n scenarios: readonly ContextEvaluationScenario[],\n reader: ContextEvaluationReader,\n thresholds: ContextEvaluationThresholds,\n): Promise<ContextEvaluationCorpusReport> {\n const reports: ContextEvaluationScenarioReport[] = [];\n for (const scenario of scenarios) {\n reports.push(await runContextEvaluationScenario(scenario, reader));\n }\n return summarizeContextEvaluationReports(reports, thresholds);\n}\n"],"names":[],"mappings":"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","debugId":"305d815a-a180-56bf-9a09-b7830e0c3970"}
|
|
1
|
+
{"version":3,"file":"context-relevance.js","sources":["sdk/context-relevance.ts"],"sourceRoot":"/","sourcesContent":["/**\n * @module sdk/context-relevance\n *\n * Public, deterministic context-ranking and evaluation primitives. The scorer\n * accepts already-derived signals so package authors can reuse the same model\n * with core, extension, or project-specific feature stores.\n */\nimport { runActiveServiceOverride } from \"../core/extensions/index.js\";\nimport {\n normalizeStatusForRegistry,\n normalizeStatusInput,\n} from \"../core/item/status.js\";\nimport type { RuntimeStatusRegistry } from \"../core/schema/runtime-schema.js\";\nimport { compareTimestampStrings, resolveIsoOrRelative } from \"../core/shared/time.js\";\nimport type { ItemMetadata } from \"../types/index.js\";\n\n/** Canonical signal keys understood by the built-in relevance model. */\nexport const CONTEXT_RELEVANCE_SIGNAL_NAMES = [\n \"structural\",\n \"recency\",\n \"activity_density\",\n \"graph_proximity\",\n \"claim_focus\",\n \"priority_pressure\",\n \"risk_pressure\",\n \"deadline_pressure\",\n \"knowledge_density\",\n \"author_affinity\",\n \"usage_affinity\",\n \"semantic_similarity\",\n] as const;\n\n/** A normalized signal consumed by the built-in context relevance scorer. */\nexport type ContextRelevanceSignalName =\n (typeof CONTEXT_RELEVANCE_SIGNAL_NAMES)[number];\n\n/** Normalized candidate features; omitted signals are excluded from weighting. */\nexport type ContextRelevanceSignals = Partial<\n Record<Exclude<ContextRelevanceSignalName, \"structural\">, number>\n>;\n\n/** A project-management object and its derived relevance signals. */\nexport interface ContextRelevanceCandidate<TItem> {\n /** Stable identifier used to reference this record across commands and storage. */\n id: string;\n /** Value that configures or reports item for this contract. */\n item: TItem;\n /** Value that configures or reports signals for this contract. */\n signals?: ContextRelevanceSignals;\n}\n\n/** Inputs that make item-signal derivation deterministic and host-configurable. */\nexport interface BuildItemContextRelevanceCandidatesOptions {\n /** Workspace lifecycle registry, including custom in-progress aliases. */\n statusRegistry: RuntimeStatusRegistry;\n /** Stable clock used for deadline pressure. */\n now: string;\n /** Optional caller identity used for assignment affinity. */\n author?: string;\n /** Optional derived served-then-used affinity by item id. */\n usageAffinity?: Readonly<Record<string, number>>;\n /** Optional caller-derived semantic similarity by item id. */\n semanticSimilarity?: Readonly<Record<string, number>>;\n}\n\nfunction normalizedPressure(value: unknown, maximum: number): number {\n const parsed = typeof value === \"number\" ? value : typeof value === \"string\" ? Number.parseFloat(value) : Number.NaN;\n return Number.isFinite(parsed) ? 1 - Math.min(Math.max(parsed, 0), maximum) / maximum : 0;\n}\n\nfunction deadlinePressure(deadline: unknown, nowMs: number): number {\n const deadlineMs = typeof deadline === \"string\" ? Date.parse(deadline) : deadline instanceof Date ? deadline.getTime() : typeof deadline === \"number\" ? deadline : Number.NaN;\n if (!Number.isFinite(deadlineMs) || !Number.isFinite(nowMs)) return 0;\n const days = (deadlineMs - nowMs) / 86_400_000;\n return days <= 0 ? 1 : 1 / (1 + days / 30);\n}\n\nfunction riskPressure(risk: ItemMetadata[\"risk\"]): number {\n const normalized = typeof risk === \"string\" ? risk.trim().toLowerCase() : undefined;\n if (normalized === \"critical\" || normalized === \"high\") return 1;\n if (normalized === \"medium\") return 0.5;\n return normalized === \"low\" ? 0.1 : 0;\n}\n\n/**\n * Derive the canonical metadata signals consumed by `pm context` and `pm next`.\n * Extensions can pair this with {@link scoreContextCandidatesWithActiveExtensions}\n * to reproduce built-in ranking without private imports or subprocesses.\n */\nexport function buildItemContextRelevanceCandidates(\n items: readonly ItemMetadata[],\n options: BuildItemContextRelevanceCandidatesOptions,\n): ContextRelevanceCandidate<ItemMetadata>[] {\n const sortableTimestamp = (value: unknown): string => {\n if (typeof value !== \"string\") return \"\";\n try {\n return resolveIsoOrRelative(value, new Date(Number.NaN), \"updated_at\");\n } catch {\n return \"\";\n }\n };\n const recencyOrder = [...items].sort((left, right) => {\n const leftTime = sortableTimestamp(left.updated_at);\n const rightTime = sortableTimestamp(right.updated_at);\n return compareTimestampStrings(rightTime, leftTime) || left.id.localeCompare(right.id);\n });\n const recencyRank = new Map(recencyOrder.map((item, index) => [item.id, index]));\n const denominator = Math.max(items.length - 1, 1);\n const normalizedAuthor = options.author?.trim().toLowerCase();\n const inProgressStatus = normalizeStatusInput(\"in_progress\", options.statusRegistry);\n const nowMs = Date.parse(options.now);\n return items.map((item) => {\n const assigned = normalizedAuthor !== undefined && typeof item.assignee === \"string\" && item.assignee.trim().toLowerCase() === normalizedAuthor;\n const knowledgeEntries = (item.comments?.length ?? 0) + (item.notes?.length ?? 0) + (item.learnings?.length ?? 0);\n return {\n id: item.id,\n item,\n signals: {\n recency: items.length === 1 ? 1 : 1 - (recencyRank.get(item.id) as number) / denominator,\n graph_proximity: item.parent ? 0.3 : 0,\n claim_focus: normalizeStatusForRegistry(item.status, options.statusRegistry) === inProgressStatus ? 1 : assigned ? 0.75 : 0,\n priority_pressure: normalizedPressure(item.priority, 4),\n risk_pressure: riskPressure(item.risk),\n deadline_pressure: deadlinePressure(item.deadline, nowMs),\n knowledge_density: Math.min(knowledgeEntries / 5, 1),\n author_affinity: assigned ? 1 : 0,\n usage_affinity: options.usageAffinity?.[item.id],\n semantic_similarity: options.semanticSimilarity?.[item.id],\n },\n };\n });\n}\n\n/** Per-signal weighted contributions used to explain a ranked result. */\nexport type ContextRelevanceContributions = Record<string, number>;\n\n/** One ranked candidate with deterministic score and explanation metadata. */\nexport interface RankedContextCandidate<\n TItem,\n> extends ContextRelevanceCandidate<TItem> {\n /** Value that configures or reports baseline rank for this contract. */\n baseline_rank: number;\n /** Value that configures or reports rank for this contract. */\n rank: number;\n /** Value that configures or reports score for this contract. */\n score: number;\n /** Value that configures or reports contributions for this contract. */\n contributions: ContextRelevanceContributions;\n}\n\n/** Complete output from a context relevance scorer. */\nexport interface ContextRelevanceReport<TItem> {\n /** Value that configures or reports model for this contract. */\n model: string;\n /** Value that configures or reports available signals for this contract. */\n available_signals: ContextRelevanceSignalName[];\n /** Value that configures or reports ranked for this contract. */\n ranked: RankedContextCandidate<TItem>[];\n /** Value that configures or reports warnings for this contract. */\n warnings?: string[];\n}\n\n/** Minimal custom score returned by a replacement or wrapper scorer. */\nexport interface ContextRelevanceCustomScore {\n /** Stable identifier used to reference this record across commands and storage. */\n id: string;\n /** Value that configures or reports score for this contract. */\n score: number;\n}\n\n/** Input provided to a custom scorer, including the deterministic default. */\nexport interface ContextRelevanceScorerInput<TItem> {\n /** Value that configures or reports candidates for this contract. */\n candidates: readonly ContextRelevanceCandidate<TItem>[];\n /** Fallback report used when callers do not provide an override. */\n default_report: ContextRelevanceReport<TItem>;\n}\n\n/** Replaceable package/extension scorer contract. */\nexport type ContextRelevanceScorer<TItem> = (\n input: ContextRelevanceScorerInput<TItem>,\n) =>\n | readonly ContextRelevanceCustomScore[]\n | Promise<readonly ContextRelevanceCustomScore[]>;\n\n/** Options for the built-in or replaceable context relevance scorer. */\nexport interface ScoreContextCandidatesOptions<TItem> {\n /** Value that configures or reports weights for this contract. */\n weights?: Partial<Record<ContextRelevanceSignalName, number>>;\n /** Value that configures or reports scorer for this contract. */\n scorer?: ContextRelevanceScorer<TItem>;\n}\n\n/** Governed extension service used to replace or wrap context ranking. */\nexport const CONTEXT_RELEVANCE_SERVICE = \"context_relevance\" as const;\n\n/** Command surface requesting an active extension relevance override. */\nexport type ContextRelevanceSurface = \"context\" | \"next\";\n\nconst DEFAULT_CONTEXT_RELEVANCE_WEIGHTS: Record<\n ContextRelevanceSignalName,\n number\n> = {\n structural: 0.4,\n recency: 0.35,\n activity_density: 0.25,\n graph_proximity: 0.15,\n claim_focus: 0.6,\n priority_pressure: 0.35,\n risk_pressure: 0.2,\n deadline_pressure: 0.45,\n knowledge_density: 0.25,\n author_affinity: 0.2,\n usage_affinity: 0.3,\n semantic_similarity: 0.5,\n};\nconst JSON_TOKEN_ENCODER = new TextEncoder();\n\nfunction assertCandidates<TItem>(\n candidates: readonly ContextRelevanceCandidate<TItem>[],\n): void {\n const ids = new Set<string>();\n for (const candidate of candidates) {\n if (\n typeof candidate.id !== \"string\" ||\n candidate.id.trim().length === 0 ||\n ids.has(candidate.id)\n ) {\n throw new TypeError(\n \"Context relevance candidates require unique non-empty ids\",\n );\n }\n ids.add(candidate.id);\n for (const [signal, value] of Object.entries(candidate.signals ?? {})) {\n if (\n signal === \"structural\" ||\n !CONTEXT_RELEVANCE_SIGNAL_NAMES.includes(\n signal as ContextRelevanceSignalName,\n )\n ) {\n throw new TypeError(`Unknown context relevance signal: ${signal}`);\n }\n if (value === undefined) continue;\n if (!Number.isFinite(value) || value < 0 || value > 1) {\n throw new TypeError(\n `Context relevance signal ${signal} must be a finite number from 0 to 1`,\n );\n }\n }\n }\n}\n\nfunction resolveWeights(\n overrides: Partial<Record<ContextRelevanceSignalName, number>> | undefined,\n): Record<ContextRelevanceSignalName, number> {\n const weights = { ...DEFAULT_CONTEXT_RELEVANCE_WEIGHTS };\n for (const [signal, weight] of Object.entries(overrides ?? {})) {\n if (\n weight !== undefined &&\n CONTEXT_RELEVANCE_SIGNAL_NAMES.includes(\n signal as ContextRelevanceSignalName,\n )\n ) {\n weights[signal as ContextRelevanceSignalName] = weight;\n }\n }\n for (const [signal, weight] of Object.entries(weights)) {\n if (!Number.isFinite(weight) || weight < 0) {\n throw new TypeError(\n `Context relevance weight ${signal} must be a finite non-negative number`,\n );\n }\n }\n return weights;\n}\n\n/** Score candidates with pm's deterministic weighted model. Candidate order is the structural baseline and remains unchanged when no advanced signals exist. */\nexport function defaultScoreContextCandidates<TItem>(\n candidates: readonly ContextRelevanceCandidate<TItem>[],\n options: Pick<ScoreContextCandidatesOptions<TItem>, \"weights\"> = {},\n): ContextRelevanceReport<TItem> {\n assertCandidates(candidates);\n const weights = resolveWeights(options.weights);\n const denominator = Math.max(candidates.length - 1, 1);\n const available = new Set<ContextRelevanceSignalName>([\"structural\"]);\n for (const candidate of candidates) {\n for (const [signal, value] of Object.entries(candidate.signals ?? {})) {\n if (value !== undefined)\n available.add(signal as ContextRelevanceSignalName);\n }\n }\n const availableSignals = CONTEXT_RELEVANCE_SIGNAL_NAMES.filter((signal) =>\n available.has(signal),\n );\n const scored = candidates.map(\n (candidate, index): RankedContextCandidate<TItem> => {\n const signalValues: Partial<Record<ContextRelevanceSignalName, number>> =\n {\n structural: candidates.length === 1 ? 1 : 1 - index / denominator,\n ...candidate.signals,\n };\n const contributions: ContextRelevanceContributions = {};\n let weightedScore = 0;\n let totalWeight = 0;\n for (const signal of availableSignals) {\n const value = signalValues[signal];\n if (value === undefined) continue;\n const contribution = value * weights[signal];\n contributions[signal] = contribution;\n weightedScore += contribution;\n totalWeight += weights[signal];\n }\n return {\n ...candidate,\n baseline_rank: index + 1,\n rank: 0,\n score: totalWeight === 0 ? 0 : weightedScore / totalWeight,\n contributions,\n };\n },\n );\n scored.sort(\n (left, right) =>\n right.score - left.score || left.baseline_rank - right.baseline_rank,\n );\n scored.forEach((entry, index) => {\n entry.rank = index + 1;\n });\n return {\n model: \"default-weighted-v1\",\n available_signals: availableSignals,\n ranked: scored,\n };\n}\n\n/** Score candidates with the default model or a validated replacement/wrapper. */\nexport async function scoreContextCandidates<TItem>(\n candidates: readonly ContextRelevanceCandidate<TItem>[],\n options: ScoreContextCandidatesOptions<TItem> = {},\n): Promise<ContextRelevanceReport<TItem>> {\n const defaultReport = defaultScoreContextCandidates(candidates, options);\n if (!options.scorer) return defaultReport;\n const customScores = await options.scorer({\n candidates,\n default_report: defaultReport,\n });\n const scoreById = new Map<string, number>();\n for (const entry of customScores) {\n if (scoreById.has(entry.id) || !Number.isFinite(entry.score)) {\n throw new TypeError(\n \"Context relevance scorer must return one finite score for every candidate\",\n );\n }\n scoreById.set(entry.id, entry.score);\n }\n if (\n scoreById.size !== candidates.length ||\n candidates.some((candidate) => !scoreById.has(candidate.id))\n ) {\n throw new TypeError(\n \"Context relevance scorer must return one finite score for every candidate\",\n );\n }\n const ranked = defaultReport.ranked.map((entry) => {\n const score = scoreById.get(entry.id) as number;\n return { ...entry, score, contributions: { custom: score } };\n });\n ranked.sort(\n (left, right) =>\n right.score - left.score || left.baseline_rank - right.baseline_rank,\n );\n ranked.forEach((entry, index) => {\n entry.rank = index + 1;\n });\n return {\n model: \"custom\",\n available_signals: defaultReport.available_signals,\n ranked,\n };\n}\n\n/** Score command candidates through the public default model and then the active governed `context_relevance` service override, when one is registered. */\nexport async function scoreContextCandidatesWithActiveExtensions<TItem>(\n surface: ContextRelevanceSurface,\n candidates: readonly ContextRelevanceCandidate<TItem>[],\n options: Pick<ScoreContextCandidatesOptions<TItem>, \"weights\"> = {},\n): Promise<ContextRelevanceReport<TItem>> {\n const defaultReport = defaultScoreContextCandidates(candidates, options);\n const override = await runActiveServiceOverride(CONTEXT_RELEVANCE_SERVICE, {\n surface,\n candidates,\n default_report: defaultReport,\n });\n if (!override.handled) {\n return override.warnings.length > 0\n ? { ...defaultReport, warnings: override.warnings }\n : defaultReport;\n }\n if (\n !Array.isArray(override.result) ||\n !override.result.every(\n (entry) =>\n typeof entry === \"object\" &&\n entry !== null &&\n typeof (entry as { id?: unknown }).id === \"string\" &&\n typeof (entry as { score?: unknown }).score === \"number\" &&\n Number.isFinite((entry as { score: number }).score),\n )\n ) {\n return {\n ...defaultReport,\n warnings: [\n ...override.warnings,\n \"extension_context_relevance_invalid_result\",\n ],\n };\n }\n try {\n const report = await scoreContextCandidates(candidates, {\n ...options,\n scorer: () => override.result as ContextRelevanceCustomScore[],\n });\n return override.warnings.length > 0\n ? { ...report, warnings: override.warnings }\n : report;\n } catch {\n return {\n ...defaultReport,\n warnings: [\n ...override.warnings,\n \"extension_context_relevance_invalid_result\",\n ],\n };\n }\n}\n\n/** Input for rank-aware context/next quality evaluation. */\nexport interface ContextRankingEvaluationInput {\n /** Value that configures or reports ranked ids for this contract. */\n ranked_ids: string[];\n /** Value that configures or reports judgments for this contract. */\n judgments: Record<string, number>;\n /** Value that configures or reports required ids for this contract. */\n required_ids?: string[];\n /** Value that configures or reports continuity ids for this contract. */\n continuity_ids?: string[];\n /** Value that configures or reports actual tokens for this contract. */\n actual_tokens: number;\n /** Value that configures or reports token budget for this contract. */\n token_budget: number;\n}\n\n/** Rank-quality, continuity, recall, and token-budget metrics for one scenario. */\nexport interface ContextRankingEvaluation {\n /** Value that configures or reports ndcg for this contract. */\n ndcg: number;\n /** Value that configures or reports reciprocal rank for this contract. */\n reciprocal_rank: number;\n /** Value that configures or reports required recall for this contract. */\n required_recall: number;\n /** Value that configures or reports continuity coverage for this contract. */\n continuity_coverage: number;\n /** Value that configures or reports token budget adherence for this contract. */\n token_budget_adherence: number;\n /** Value that configures or reports within token budget for this contract. */\n within_token_budget: boolean;\n}\n\n/** Flexible read options accepted by context evaluation scenarios. */\nexport interface ContextEvaluationReadOptions {\n /** Value that configures or reports explain ranking for this contract. */\n explainRanking?: boolean;\n [key: string]: unknown;\n}\n\n/** Minimal item identity consumed by the context evaluation runner. */\nexport interface ContextEvaluationResultItem {\n /** Stable identifier used to reference this record across commands and storage. */\n id: string;\n}\n\n/** Optional scorer attribution returned by an evaluated read primitive. */\nexport interface ContextEvaluationResultRanking {\n /** Value that configures or reports items for this contract. */\n items?: Array<{ id: string; contributions: ContextRelevanceContributions }>;\n}\n\n/** Structural context result consumed by the evaluation runner. */\nexport interface ContextEvaluationContextResult {\n /** Value that configures or reports high level for this contract. */\n high_level?: ContextEvaluationResultItem[];\n /** Value that configures or reports low level for this contract. */\n low_level?: ContextEvaluationResultItem[];\n /** Value that configures or reports blocked fallback for this contract. */\n blocked_fallback?: ContextEvaluationResultItem[];\n /** Value that configures or reports ranking for this contract. */\n ranking?: ContextEvaluationResultRanking;\n [key: string]: unknown;\n}\n\n/** Structural next result consumed by the evaluation runner. */\nexport interface ContextEvaluationNextResult {\n /** Value that configures or reports recommended for this contract. */\n recommended?: ContextEvaluationResultItem | null;\n /** Value that configures or reports ready for this contract. */\n ready?: ContextEvaluationResultItem[];\n /** Value that configures or reports ranking for this contract. */\n ranking?: ContextEvaluationResultRanking;\n [key: string]: unknown;\n}\n\n/** Read-only SDK surface required by the context evaluation runner. */\nexport interface ContextEvaluationReader {\n /** Value that configures or reports context for this contract. */\n context(\n options?: ContextEvaluationReadOptions,\n ): Promise<ContextEvaluationContextResult>;\n /** Value that configures or reports next for this contract. */\n next(\n options?: ContextEvaluationReadOptions,\n ): Promise<ContextEvaluationNextResult>;\n}\n\n/** One graded context or next scenario evaluated against a real SDK reader. */\nexport interface ContextEvaluationScenario {\n /** Stable identifier used to reference this record across commands and storage. */\n id: string;\n /** Value that configures or reports surface for this contract. */\n surface: ContextRelevanceSurface;\n /** Value that configures or reports options for this contract. */\n options?: ContextEvaluationReadOptions;\n /** Value that configures or reports judgments for this contract. */\n judgments: Record<string, number>;\n /** Value that configures or reports required ids for this contract. */\n required_ids?: string[];\n /** Value that configures or reports continuity ids for this contract. */\n continuity_ids?: string[];\n /** Value that configures or reports token budget for this contract. */\n token_budget: number;\n /** Value that configures or reports rationale for this contract. */\n rationale: string;\n}\n\n/** Per-item signal attribution retained by a context evaluation report. */\nexport interface ContextEvaluationAttribution {\n /** Stable identifier used to reference this record across commands and storage. */\n id: string;\n /** Value that configures or reports contributions for this contract. */\n contributions: ContextRelevanceContributions;\n}\n\n/** Result of executing and grading one context evaluation scenario. */\nexport interface ContextEvaluationScenarioReport {\n /** Stable identifier used to reference this record across commands and storage. */\n id: string;\n /** Value that configures or reports surface for this contract. */\n surface: ContextRelevanceSurface;\n /** Value that configures or reports rationale for this contract. */\n rationale: string;\n /** Value that configures or reports ranked ids for this contract. */\n ranked_ids: string[];\n /** Value that configures or reports actual tokens for this contract. */\n actual_tokens: number;\n /** Value that configures or reports metrics for this contract. */\n metrics: ContextRankingEvaluation;\n /** Value that configures or reports attribution for this contract. */\n attribution: ContextEvaluationAttribution[];\n}\n\n/** Minimum acceptable aggregate metrics for a context evaluation corpus. */\nexport interface ContextEvaluationThresholds {\n /** Value that configures or reports ndcg for this contract. */\n ndcg: number;\n /** Value that configures or reports reciprocal rank for this contract. */\n reciprocal_rank: number;\n /** Value that configures or reports required recall for this contract. */\n required_recall: number;\n /** Value that configures or reports continuity coverage for this contract. */\n continuity_coverage: number;\n /** Value that configures or reports token budget adherence for this contract. */\n token_budget_adherence: number;\n}\n\n/** Canonical aggregate metrics required by every context evaluation corpus. */\nexport const CONTEXT_EVALUATION_METRIC_NAMES = [\n \"ndcg\",\n \"reciprocal_rank\",\n \"required_recall\",\n \"continuity_coverage\",\n \"token_budget_adherence\",\n] as const satisfies readonly (keyof ContextEvaluationThresholds)[];\n\n/** Aggregate context evaluation report suitable for a CI quality gate. */\nexport interface ContextEvaluationCorpusReport {\n /** Number of scenario entries represented by this result. */\n scenario_count: number;\n /** Value that configures or reports aggregate for this contract. */\n aggregate: ContextEvaluationThresholds;\n /** Value that configures or reports scenarios for this contract. */\n scenarios: ContextEvaluationScenarioReport[];\n /** Value that configures or reports passed for this contract. */\n passed: boolean;\n /** Value that configures or reports failures for this contract. */\n failures: string[];\n}\n\nfunction ratioOfPresent(\n expected: readonly string[],\n actual: ReadonlySet<string>,\n): number {\n if (expected.length === 0) return 1;\n return expected.filter((id) => actual.has(id)).length / expected.length;\n}\n\n/** Evaluate one ranked context packet against graded human judgments. */\nexport function evaluateContextRanking(\n input: ContextRankingEvaluationInput,\n): ContextRankingEvaluation {\n if (\n !Number.isFinite(input.actual_tokens) ||\n input.actual_tokens < 0 ||\n !Number.isFinite(input.token_budget) ||\n input.token_budget <= 0\n ) {\n throw new TypeError(\n \"Context ranking token counts require actual_tokens >= 0 and token_budget > 0\",\n );\n }\n const judgments = input.judgments ?? {};\n const gains = input.ranked_ids.map((id) => Math.max(0, judgments[id] ?? 0));\n const idealGains = Object.values(judgments)\n .map((grade) => Math.max(0, grade))\n .sort((left, right) => right - left)\n .slice(0, gains.length || 1);\n const discountedGain = (values: readonly number[]) =>\n values.reduce(\n (total, grade, index) => total + (2 ** grade - 1) / Math.log2(index + 2),\n 0,\n );\n const ideal = discountedGain(idealGains);\n const firstRelevant = gains.findIndex((grade) => grade > 0);\n const actualIds = new Set(input.ranked_ids);\n const withinBudget = input.actual_tokens <= input.token_budget;\n return {\n ndcg: ideal === 0 ? 1 : discountedGain(gains) / ideal,\n reciprocal_rank: firstRelevant < 0 ? 0 : 1 / (firstRelevant + 1),\n required_recall: ratioOfPresent(input.required_ids ?? [], actualIds),\n continuity_coverage: ratioOfPresent(input.continuity_ids ?? [], actualIds),\n token_budget_adherence: withinBudget\n ? 1\n : input.token_budget / input.actual_tokens,\n within_token_budget: withinBudget,\n };\n}\n\nfunction estimateJsonTokens(value: unknown): number {\n return Math.ceil(\n JSON_TOKEN_ENCODER.encode(JSON.stringify(value)).byteLength / 4,\n );\n}\n\nfunction roundEvaluationMetric(value: number): number {\n return Math.round(value * 10_000) / 10_000;\n}\n\nfunction rankingPayloadForScenario(\n result: ContextEvaluationContextResult | ContextEvaluationNextResult,\n surface: ContextRelevanceSurface,\n): { rankedIds: string[]; attribution: ContextEvaluationAttribution[] } {\n const rankedIds =\n surface === \"context\"\n ? [\n ...((result as ContextEvaluationContextResult).high_level ?? []),\n ...((result as ContextEvaluationContextResult).low_level ?? []),\n ...((result as ContextEvaluationContextResult).blocked_fallback ??\n []),\n ].map((item) => item.id)\n : [\n ...((result as ContextEvaluationNextResult).recommended\n ? [\n (result as ContextEvaluationNextResult)\n .recommended as ContextEvaluationResultItem,\n ]\n : []),\n ...((result as ContextEvaluationNextResult).ready ?? []),\n ].map((item) => item.id);\n const servedIds = new Set(rankedIds);\n const attribution = (result.ranking?.items ?? [])\n .filter((item) => servedIds.has(item.id))\n .map((item) => ({ id: item.id, contributions: item.contributions }));\n return { rankedIds, attribution };\n}\n\n/** Execute one graded scenario through public SDK context/next read primitives. */\nexport async function runContextEvaluationScenario(\n scenario: ContextEvaluationScenario,\n reader: ContextEvaluationReader,\n): Promise<ContextEvaluationScenarioReport> {\n if (\n scenario.id.trim().length === 0 ||\n scenario.rationale.trim().length === 0\n ) {\n throw new TypeError(\n \"Context evaluation scenarios require non-empty id and rationale values\",\n );\n }\n const result =\n scenario.surface === \"context\"\n ? await reader.context({ ...scenario.options, explainRanking: true })\n : await reader.next({ ...scenario.options, explainRanking: true });\n const { rankedIds, attribution } = rankingPayloadForScenario(\n result,\n scenario.surface,\n );\n const packet = { ...result, ranking: undefined };\n const actualTokens = estimateJsonTokens(packet);\n return {\n id: scenario.id,\n surface: scenario.surface,\n rationale: scenario.rationale,\n ranked_ids: rankedIds,\n actual_tokens: actualTokens,\n metrics: evaluateContextRanking({\n ranked_ids: rankedIds,\n judgments: scenario.judgments,\n required_ids: scenario.required_ids,\n continuity_ids: scenario.continuity_ids,\n actual_tokens: actualTokens,\n token_budget: scenario.token_budget,\n }),\n attribution,\n };\n}\n\n/** Aggregate scenario reports and evaluate every metric against explicit thresholds. */\nexport function summarizeContextEvaluationReports(\n reports: readonly ContextEvaluationScenarioReport[],\n thresholds: ContextEvaluationThresholds,\n): ContextEvaluationCorpusReport {\n if (reports.length === 0) {\n throw new TypeError(\n \"Context evaluation requires at least one scenario report\",\n );\n }\n const metrics = CONTEXT_EVALUATION_METRIC_NAMES;\n for (const metric of metrics) {\n if (!Number.isFinite(thresholds[metric])) {\n throw new TypeError(\n `Context evaluation threshold ${metric} must be a finite number`,\n );\n }\n }\n const aggregate = Object.fromEntries(\n metrics.map((metric) => [\n metric,\n roundEvaluationMetric(\n reports.reduce((total, report) => total + report.metrics[metric], 0) /\n reports.length,\n ),\n ]),\n ) as unknown as ContextEvaluationThresholds;\n const failures = metrics\n .filter((metric) => aggregate[metric] < thresholds[metric])\n .map((metric) => `${metric}:${aggregate[metric]}<${thresholds[metric]}`);\n return {\n scenario_count: reports.length,\n aggregate,\n scenarios: [...reports],\n passed: failures.length === 0,\n failures,\n };\n}\n\n/** Execute a same-workspace scenario corpus through public SDK read primitives. */\nexport async function runContextEvaluationCorpus(\n scenarios: readonly ContextEvaluationScenario[],\n reader: ContextEvaluationReader,\n thresholds: ContextEvaluationThresholds,\n): Promise<ContextEvaluationCorpusReport> {\n const reports: ContextEvaluationScenarioReport[] = [];\n for (const scenario of scenarios) {\n reports.push(await runContextEvaluationScenario(scenario, reader));\n }\n return summarizeContextEvaluationReports(reports, thresholds);\n}\n"],"names":[],"mappings":"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","debugId":"833cf230-b0c8-51f0-822e-1f27f0574971"}
|