@unbrained/pm-cli 2026.6.20 → 2026.6.22
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/CHANGELOG.md +39 -0
- package/dist/cli/commands/completion.js +5 -3
- package/dist/cli/commands/completion.js.map +1 -1
- package/dist/cli/commands/extension/doctor.d.ts +11 -0
- package/dist/cli/commands/extension/doctor.js +31 -2
- package/dist/cli/commands/extension/doctor.js.map +1 -1
- package/dist/cli/commands/extension/scaffold.d.ts +16 -2
- package/dist/cli/commands/extension/scaffold.js +499 -20
- package/dist/cli/commands/extension/scaffold.js.map +1 -1
- package/dist/cli/commands/extension.d.ts +1 -0
- package/dist/cli/commands/extension.js +16 -4
- package/dist/cli/commands/extension.js.map +1 -1
- package/dist/cli/commands/health.js +15 -3
- package/dist/cli/commands/health.js.map +1 -1
- package/dist/cli/commands/validate.d.ts +1 -1
- package/dist/cli/commands/validate.js +44 -2
- package/dist/cli/commands/validate.js.map +1 -1
- package/dist/cli/help-content.js +16 -4
- package/dist/cli/help-content.js.map +1 -1
- package/dist/cli/register-setup.js +6 -2
- package/dist/cli/register-setup.js.map +1 -1
- package/dist/cli-bundle/chunks/{activity-KEEITOTB.js → activity-DXS2XMQU.js} +11 -11
- package/dist/cli-bundle/chunks/activity-NEOI45NX.js +18 -0
- package/dist/cli-bundle/chunks/{aggregate-5BTHOHW2.js → aggregate-IHM4KMQ3.js} +10 -10
- package/dist/cli-bundle/chunks/{aggregate-GB2LJNTZ.js → aggregate-NMYDVQF7.js} +10 -10
- package/dist/cli-bundle/chunks/{append-BBM4MNVD.js → append-3HY5G7ET.js} +8 -8
- package/dist/cli-bundle/chunks/{append-BFV5UYWS.js → append-K54MDQYC.js} +8 -8
- package/dist/cli-bundle/chunks/{chunk-DKWIPIJY.js → chunk-25XZN3JD.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-GF44HVZL.js → chunk-2LEYMXI6.js} +4 -4
- package/dist/cli-bundle/chunks/chunk-3GL6LTUL.js +643 -0
- package/dist/cli-bundle/chunks/chunk-3GL6LTUL.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-XNQ3YH6N.js → chunk-3VLPDG3J.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-W2ZESOQE.js → chunk-44O4JIN6.js} +13 -13
- package/dist/cli-bundle/chunks/{chunk-RADIHKJ3.js → chunk-47HTJ6BU.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-B3LROPTV.js → chunk-4JXWVHMN.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-HWHZ7EY7.js → chunk-4SDKF5BG.js} +3 -3
- package/dist/cli-bundle/chunks/chunk-4YJA4LGU.js +646 -0
- package/dist/cli-bundle/chunks/chunk-4YJA4LGU.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-RNKUCHUQ.js → chunk-5SESR24H.js} +8 -8
- package/dist/cli-bundle/chunks/{chunk-RICT5QYR.js → chunk-6FQHNHQQ.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-FA5O2DEG.js → chunk-6UPTNMVW.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-4KFL5OYK.js → chunk-75VEYQJS.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-2ZY5SLNR.js → chunk-77VKGH4L.js} +10 -10
- package/dist/cli-bundle/chunks/{chunk-H3ZTSYPA.js → chunk-7GCCDXXN.js} +57 -223
- package/dist/cli-bundle/chunks/chunk-7GCCDXXN.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-6Y7IQ6XN.js → chunk-7MALIV5H.js} +9 -9
- package/dist/cli-bundle/chunks/{chunk-MFCFHL27.js → chunk-7MPTFYT3.js} +20 -15
- package/dist/cli-bundle/chunks/chunk-7MPTFYT3.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-NMQNXH4U.js → chunk-7PBGTIN3.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-3KVCMB2M.js → chunk-A25LOPRG.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-6KSFULO6.js → chunk-A7E4ZXG2.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-ZHCSGIUX.js → chunk-AJXYOYJV.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-PF5GLFPU.js → chunk-B2KR24R4.js} +9 -9
- package/dist/cli-bundle/chunks/{chunk-ZYG4TR32.js → chunk-C5SWTISA.js} +12 -12
- package/dist/cli-bundle/chunks/{chunk-F4EYOSNC.js → chunk-CLLVBO3I.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-5MWA46UN.js → chunk-CR7KFPAQ.js} +61 -4
- package/dist/cli-bundle/chunks/chunk-CR7KFPAQ.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-4PW4C3ZB.js → chunk-CWPBGUC7.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-LTUB7ARL.js → chunk-D35LTIFR.js} +57 -216
- package/dist/cli-bundle/chunks/chunk-D35LTIFR.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-J7VSEFWB.js → chunk-DBQUQ3AS.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-2LUNPA3U.js → chunk-DHBPJ7VG.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-6FSPWUBI.js → chunk-DMT4ODVN.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-XXGAWTH5.js → chunk-DU64SZUQ.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-CNPWCUDR.js → chunk-EVPVCE4R.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-ACULWT7G.js → chunk-FK6MV5F5.js} +12 -12
- package/dist/cli-bundle/chunks/{chunk-XKJDCJEH.js → chunk-GGAXE22C.js} +6 -6
- package/dist/cli-bundle/chunks/{chunk-SL233DQD.js → chunk-GNDHOR64.js} +6 -6
- package/dist/cli-bundle/chunks/{chunk-U3WTMYBX.js → chunk-GU7YHKYP.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-26OQTCGH.js → chunk-GXBSFKSX.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-AOCYDQLT.js → chunk-H6FNDCDI.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-ICEWMJYH.js → chunk-HYQV75IB.js} +7 -7
- package/dist/cli-bundle/chunks/{chunk-5XK2RYJR.js → chunk-I367IDZP.js} +7 -7
- package/dist/cli-bundle/chunks/{chunk-E4E7UQBT.js → chunk-I6XE47J2.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-NKTUBA2C.js → chunk-J2TSPY5L.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-IWKD7B33.js → chunk-JINYH2DB.js} +23 -2
- package/dist/cli-bundle/chunks/chunk-JINYH2DB.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-DYOJJTCG.js → chunk-JLSC5NPC.js} +10 -10
- package/dist/cli-bundle/chunks/{chunk-FXKPUMIR.js → chunk-JY25IOEZ.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-NCGQ27PK.js → chunk-K25UDYJ4.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-3WAKNI2W.js → chunk-KBTREGVO.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-KCJZREBI.js → chunk-KK4TQ3ZP.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-AZ75OVK4.js → chunk-KL5ELX2X.js} +82 -3
- package/dist/cli-bundle/chunks/chunk-KL5ELX2X.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-7MMXBIRZ.js → chunk-KRJJPDUO.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-BYNJWB5F.js → chunk-MD7XKVWI.js} +7 -7
- package/dist/cli-bundle/chunks/{chunk-WFOITX4A.js → chunk-MNGAQB2E.js} +8 -8
- package/dist/cli-bundle/chunks/{chunk-II4BRHKM.js → chunk-NIWY4V4Z.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-YT4Z2OVB.js → chunk-NKZOJPXK.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-YBQF4CAW.js → chunk-NVUATMTC.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-FSOJCFDS.js → chunk-P7ZU73BO.js} +55 -5
- package/dist/cli-bundle/chunks/chunk-P7ZU73BO.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-MTQK5ZSB.js → chunk-PCH2JTEO.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-VE3BUO3R.js → chunk-PJS2J7Z4.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-2QJLN4KM.js → chunk-QQWEROGS.js} +7 -7
- package/dist/cli-bundle/chunks/{chunk-OLEP5TJH.js → chunk-R2EMWY7Q.js} +24 -3
- package/dist/cli-bundle/chunks/chunk-R2EMWY7Q.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-6DZO5NN7.js → chunk-RPRFBXND.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-QWAJPGEI.js → chunk-RZZMSY4P.js} +91 -5
- package/dist/cli-bundle/chunks/chunk-RZZMSY4P.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-BBSUVIIT.js → chunk-SFKQAVZA.js} +8 -8
- package/dist/cli-bundle/chunks/{chunk-X3CD2VUI.js → chunk-THKDPOS5.js} +8 -8
- package/dist/cli-bundle/chunks/{chunk-OVSFW4KD.js → chunk-TIKJAXQW.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-4YMX7XFI.js → chunk-TJABI6PR.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-VONJSFUW.js → chunk-TRUFOER3.js} +19 -14
- package/dist/cli-bundle/chunks/{chunk-VONJSFUW.js.map → chunk-TRUFOER3.js.map} +2 -2
- package/dist/cli-bundle/chunks/{chunk-AW4PYYNF.js → chunk-TZQKEBKF.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-QUTJOHGK.js → chunk-UKK2VTTH.js} +9 -9
- package/dist/cli-bundle/chunks/{chunk-ATRXPXAL.js → chunk-V4SM4UAL.js} +13 -13
- package/dist/cli-bundle/chunks/{chunk-6KARQMC6.js → chunk-VB54F347.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-6LTSLEHD.js → chunk-WBSYW3NT.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-4S4INK3B.js → chunk-WQDX7DVG.js} +7 -7
- package/dist/cli-bundle/chunks/{chunk-ETJKPURB.js → chunk-XKNF3VRJ.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-BZWIDTDE.js → chunk-Y335KFHD.js} +9 -9
- package/dist/cli-bundle/chunks/{chunk-K2LBDYDC.js → chunk-Y4BZEND6.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-EOFROIC5.js → chunk-YATDFWYK.js} +7 -7
- package/dist/cli-bundle/chunks/{chunk-EKMHDL6Z.js → chunk-YJICYNAV.js} +8 -8
- package/dist/cli-bundle/chunks/{chunk-WMQBNVZL.js → chunk-YQSWTVZF.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-FBBPCSJM.js → chunk-YRLLL5TY.js} +8 -8
- package/dist/cli-bundle/chunks/{claim-G57ZJLZ4.js → claim-MPXNVBZQ.js} +10 -10
- package/dist/cli-bundle/chunks/{claim-TRSDQO6L.js → claim-SKHJDLW6.js} +10 -10
- package/dist/cli-bundle/chunks/{close-4QMUQMON.js → close-4RKSL5L6.js} +8 -8
- package/dist/cli-bundle/chunks/close-Z6AI736U.js +15 -0
- package/dist/cli-bundle/chunks/{close-many-3UWKJRQK.js → close-many-AWTPXLHJ.js} +15 -15
- package/dist/cli-bundle/chunks/{close-many-A7U62CRI.js → close-many-SXODYBDP.js} +15 -15
- package/dist/cli-bundle/chunks/{comments-URWDZP2I.js → comments-OOH64LWW.js} +10 -10
- package/dist/cli-bundle/chunks/{comments-4EM7XR74.js → comments-YYW5P7AG.js} +10 -10
- package/dist/cli-bundle/chunks/{config-PSZ5GWAK.js → config-3445MCQQ.js} +8 -8
- package/dist/cli-bundle/chunks/{config-GRJYZ2O3.js → config-LCDMKRB2.js} +8 -8
- package/dist/cli-bundle/chunks/{context-BCR34RKM.js → context-DZMIBIVP.js} +13 -13
- package/dist/cli-bundle/chunks/{context-A46YAV2F.js → context-PJCURODY.js} +13 -13
- package/dist/cli-bundle/chunks/{contracts-JOPCQNDP.js → contracts-7YDFEJB3.js} +4 -4
- package/dist/cli-bundle/chunks/{contracts-HPT25X4D.js → contracts-MP2P3HL5.js} +4 -4
- package/dist/cli-bundle/chunks/{copy-KBTIUW7L.js → copy-63IQQRRS.js} +7 -7
- package/dist/cli-bundle/chunks/{copy-X7V6AEDB.js → copy-TASIH2AZ.js} +7 -7
- package/dist/cli-bundle/chunks/create-3BV2VA3Q.js +30 -0
- package/dist/cli-bundle/chunks/{create-ZPZKJDFQ.js → create-TGSB5GV4.js} +14 -14
- package/dist/cli-bundle/chunks/{delete-FGKVPUQZ.js → delete-ARILQQLB.js} +7 -7
- package/dist/cli-bundle/chunks/{delete-2ZI6CJZM.js → delete-ZQKBZYNK.js} +7 -7
- package/dist/cli-bundle/chunks/{deps-IUJOBF2H.js → deps-MSHQR2GY.js} +7 -7
- package/dist/cli-bundle/chunks/{deps-SJCEFU3C.js → deps-NJFJIMQ5.js} +7 -7
- package/dist/cli-bundle/chunks/{docs-UWJ75CKR.js → docs-SS4UKYYA.js} +9 -9
- package/dist/cli-bundle/chunks/{docs-2LXF5SVC.js → docs-XK2UVUXX.js} +9 -9
- package/dist/cli-bundle/chunks/{eval-ZTT3F3SL.js → eval-FVZGX5IZ.js} +12 -12
- package/dist/cli-bundle/chunks/{eval-FRIDCTM2.js → eval-JOTG2YHU.js} +12 -12
- package/dist/cli-bundle/chunks/{extension-VRYTNNSV.js → extension-NLMS47I4.js} +6 -5
- package/dist/cli-bundle/chunks/{extension-XFQG3BXL.js → extension-OQPS27B4.js} +6 -5
- package/dist/cli-bundle/chunks/{files-AJOGTTAN.js → files-3EVJQZ2N.js} +9 -9
- package/dist/cli-bundle/chunks/{files-B2RUCA32.js → files-Y2P6LN5A.js} +9 -9
- package/dist/cli-bundle/chunks/{focus-7N36RIMT.js → focus-D5ZUPTII.js} +8 -8
- package/dist/cli-bundle/chunks/{focus-CFE33IYC.js → focus-ZPIFTY4R.js} +8 -8
- package/dist/cli-bundle/chunks/{gc-SBF2FGHK.js → gc-LXXDY456.js} +3 -3
- package/dist/cli-bundle/chunks/{gc-OYJK4YBY.js → gc-RNOEQHSX.js} +3 -3
- package/dist/cli-bundle/chunks/{get-LLFWSPXW.js → get-Q3SZGQHD.js} +11 -11
- package/dist/cli-bundle/chunks/{get-577VLZZ7.js → get-W23G7MJX.js} +11 -11
- package/dist/cli-bundle/chunks/{health-PBJS7W2T.js → health-5LHSX365.js} +33 -19
- package/dist/cli-bundle/chunks/health-5LHSX365.js.map +7 -0
- package/dist/cli-bundle/chunks/{health-C2PUT6JZ.js → health-UDDGJLPP.js} +34 -20
- package/dist/cli-bundle/chunks/health-UDDGJLPP.js.map +1 -0
- package/dist/cli-bundle/chunks/{history-4FJK6Y3O.js → history-6CZVFIUJ.js} +10 -10
- package/dist/cli-bundle/chunks/history-YRQUD4YM.js +20 -0
- package/dist/cli-bundle/chunks/{history-compact-AXR6R6GU.js → history-compact-M35PDQ4G.js} +12 -12
- package/dist/cli-bundle/chunks/{history-compact-HXF3OT7G.js → history-compact-VWUSQH6Z.js} +12 -12
- package/dist/cli-bundle/chunks/history-redact-27OEOZRZ.js +21 -0
- package/dist/cli-bundle/chunks/{history-redact-UMPD4G3K.js → history-redact-AJGARHT3.js} +11 -11
- package/dist/cli-bundle/chunks/{history-repair-WHOK2ICG.js → history-repair-5RDMF7K4.js} +12 -12
- package/dist/cli-bundle/chunks/{history-repair-X57HE5EA.js → history-repair-YUAHIPIN.js} +12 -12
- package/dist/cli-bundle/chunks/init-DWAKYRXI.js +21 -0
- package/dist/cli-bundle/chunks/{init-N7MIIYCU.js → init-HASX3YNJ.js} +11 -10
- package/dist/cli-bundle/chunks/{learnings-GZRBIEAN.js → learnings-JNGUIJDK.js} +10 -10
- package/dist/cli-bundle/chunks/{learnings-FPG7WAVW.js → learnings-M4KA6MQE.js} +10 -10
- package/dist/cli-bundle/chunks/{list-ZDQ2OBSO.js → list-5UU2W24O.js} +10 -10
- package/dist/cli-bundle/chunks/{list-MZBCSKLU.js → list-6FMKTIH3.js} +10 -10
- package/dist/cli-bundle/chunks/{notes-LW53PFLH.js → notes-MODH5CBT.js} +10 -10
- package/dist/cli-bundle/chunks/{notes-WQAP67EC.js → notes-PYCPLA5Y.js} +10 -10
- package/dist/cli-bundle/chunks/{plan-VZKICKIJ.js → plan-DXRIRYRU.js} +14 -14
- package/dist/cli-bundle/chunks/{plan-AVJ4VJQO.js → plan-EHQALWSC.js} +14 -14
- package/dist/cli-bundle/chunks/{register-list-query-7BD6ZHU5.js → register-list-query-QAASVP2J.js} +19 -19
- package/dist/cli-bundle/chunks/{register-list-query-CM4SVAQA.js → register-list-query-WE54YJMH.js} +19 -19
- package/dist/cli-bundle/chunks/{register-mutation-ANZIWHUF.js → register-mutation-B6DZJTY2.js} +33 -33
- package/dist/cli-bundle/chunks/{register-mutation-PLFHAS4N.js → register-mutation-CPV4C2KR.js} +33 -33
- package/dist/cli-bundle/chunks/{register-operations-KQPQIFF2.js → register-operations-AT3BVVX2.js} +32 -32
- package/dist/cli-bundle/chunks/{register-operations-VLGCAWIW.js → register-operations-RC4C3423.js} +32 -32
- package/dist/cli-bundle/chunks/{register-setup-KPTZ36D4.js → register-setup-HXEHMDHE.js} +23 -18
- package/dist/cli-bundle/chunks/register-setup-HXEHMDHE.js.map +7 -0
- package/dist/cli-bundle/chunks/{register-setup-TMEF6V7O.js → register-setup-JSMJEFCJ.js} +24 -19
- package/dist/cli-bundle/chunks/register-setup-JSMJEFCJ.js.map +1 -0
- package/dist/cli-bundle/chunks/{restore-64JKQV7G.js → restore-FNBV4GWE.js} +11 -11
- package/dist/cli-bundle/chunks/restore-XY4YE2OV.js +19 -0
- package/dist/cli-bundle/chunks/{scheduling-shortcuts-X6D6VSZR.js → scheduling-shortcuts-ECL6GBMZ.js} +14 -14
- package/dist/cli-bundle/chunks/{scheduling-shortcuts-4ION7QAX.js → scheduling-shortcuts-JRIUREEU.js} +14 -14
- package/dist/cli-bundle/chunks/{schema-TA3NF3RG.js → schema-74YENAJL.js} +9 -9
- package/dist/cli-bundle/chunks/{schema-OA4RSVMI.js → schema-TCW3I7QR.js} +9 -9
- package/dist/cli-bundle/chunks/{search-UAIHEQZL.js → search-7USZ6XZA.js} +12 -12
- package/dist/cli-bundle/chunks/{search-INCM5I4J.js → search-GNAUE65M.js} +12 -12
- package/dist/cli-bundle/chunks/{stats-RHEMG4CE.js → stats-CVHASAEU.js} +8 -8
- package/dist/cli-bundle/chunks/{stats-WQWTIA5Y.js → stats-DQMKJMFT.js} +8 -8
- package/dist/cli-bundle/chunks/{telemetry-XA5D2QEO.js → telemetry-7P5EUWCS.js} +4 -4
- package/dist/cli-bundle/chunks/{telemetry-G6UKGKJU.js → telemetry-PQTL5YS2.js} +4 -4
- package/dist/cli-bundle/chunks/test-COWPCGBE.js +36 -0
- package/dist/cli-bundle/chunks/{test-ZMQF23P3.js → test-FDQZQNZ4.js} +16 -15
- package/dist/cli-bundle/chunks/{test-all-ZNQBMUOI.js → test-all-PIPPS4S5.js} +18 -17
- package/dist/cli-bundle/chunks/{test-all-ZNQBMUOI.js.map → test-all-PIPPS4S5.js.map} +1 -1
- package/dist/cli-bundle/chunks/{test-all-WUBBJCPU.js → test-all-WQIAZVA6.js} +16 -15
- package/dist/cli-bundle/chunks/{test-all-WUBBJCPU.js.map → test-all-WQIAZVA6.js.map} +1 -1
- package/dist/cli-bundle/chunks/{test-runs-N7LI7HLH.js → test-runs-JS6DNCCI.js} +5 -5
- package/dist/cli-bundle/chunks/{test-runs-RFA42EEX.js → test-runs-NZD2QGL5.js} +5 -5
- package/dist/cli-bundle/chunks/update-7IYQHX4Q.js +24 -0
- package/dist/cli-bundle/chunks/update-IJKDRBIX.js +28 -0
- package/dist/cli-bundle/chunks/{update-many-6XFR7TFG.js → update-many-6NTZ5J5D.js} +23 -23
- package/dist/cli-bundle/chunks/{update-many-NMRUQZL2.js → update-many-B3TH5TDS.js} +23 -23
- package/dist/cli-bundle/chunks/{upgrade-QMCSONWR.js → upgrade-4C7VE7MS.js} +8 -7
- package/dist/cli-bundle/chunks/{upgrade-QMCSONWR.js.map → upgrade-4C7VE7MS.js.map} +1 -1
- package/dist/cli-bundle/chunks/{upgrade-EJTME2YQ.js → upgrade-76IKZ6EZ.js} +6 -5
- package/dist/cli-bundle/chunks/{upgrade-EJTME2YQ.js.map → upgrade-76IKZ6EZ.js.map} +1 -1
- package/dist/cli-bundle/chunks/{validate-KIIJY5RC.js → validate-AQU7OCL3.js} +62 -23
- package/dist/cli-bundle/chunks/validate-AQU7OCL3.js.map +7 -0
- package/dist/cli-bundle/chunks/{validate-3SUCHXXX.js → validate-BPM6Z3OT.js} +63 -24
- package/dist/cli-bundle/chunks/validate-BPM6Z3OT.js.map +1 -0
- package/dist/cli-bundle/main.js +34 -22
- package/dist/cli-bundle/main.js.map +2 -2
- package/dist/cli.js +3 -3
- package/dist/cli.js.map +1 -1
- package/dist/core/diagnostics/remediation.js +23 -2
- package/dist/core/diagnostics/remediation.js.map +1 -1
- package/dist/core/extensions/capability-usage.d.ts +82 -0
- package/dist/core/extensions/capability-usage.js +133 -0
- package/dist/core/extensions/capability-usage.js.map +1 -0
- package/dist/core/extensions/extension-capability-aliases.d.ts +7 -0
- package/dist/core/extensions/extension-capability-aliases.js +12 -2
- package/dist/core/extensions/extension-capability-aliases.js.map +1 -1
- package/dist/core/extensions/index.d.ts +1 -0
- package/dist/core/extensions/index.js +3 -2
- package/dist/core/extensions/index.js.map +1 -1
- package/dist/core/item/item-format-version.d.ts +87 -0
- package/dist/core/item/item-format-version.js +85 -0
- package/dist/core/item/item-format-version.js.map +1 -0
- package/dist/core/item/item-format.js +8 -2
- package/dist/core/item/item-format.js.map +1 -1
- package/dist/core/shared/constants.js +3 -2
- package/dist/core/shared/constants.js.map +1 -1
- package/dist/sdk/cli-contracts.d.ts +1 -0
- package/dist/sdk/cli-contracts.js +18 -13
- package/dist/sdk/cli-contracts.js.map +1 -1
- package/dist/sdk/index.d.ts +7 -2
- package/dist/sdk/index.js +8 -3
- package/dist/sdk/index.js.map +1 -1
- package/dist/sdk/runtime.d.ts +1 -0
- package/dist/sdk/runtime.js +3 -2
- package/dist/sdk/runtime.js.map +1 -1
- package/dist/sdk/testing.d.ts +567 -1
- package/dist/sdk/testing.js +573 -18
- package/dist/sdk/testing.js.map +1 -1
- package/dist/types.d.ts +7 -0
- package/dist/types.js +2 -2
- package/dist/types.js.map +1 -1
- package/docs/ARCHITECTURE.md +2 -0
- package/docs/COMMANDS.md +2 -0
- package/docs/EXTENSIONS.md +4 -8
- package/docs/SDK.md +328 -0
- package/package.json +2 -2
- package/packages/pm-command-kit/README.md +4 -0
- package/packages/pm-todos/extensions/todos/runtime.js +191 -8
- package/packages/pm-todos/extensions/todos/runtime.ts +207 -7
- package/dist/cli-bundle/chunks/activity-7G7NNNZQ.js +0 -18
- package/dist/cli-bundle/chunks/chunk-5MWA46UN.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-AZ75OVK4.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-FSOJCFDS.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-H3ZTSYPA.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-IWKD7B33.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-LTUB7ARL.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-MFCFHL27.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-OLEP5TJH.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-QWAJPGEI.js.map +0 -7
- package/dist/cli-bundle/chunks/close-NNZZTZ5V.js +0 -15
- package/dist/cli-bundle/chunks/create-4KOAQ6ME.js +0 -30
- package/dist/cli-bundle/chunks/health-C2PUT6JZ.js.map +0 -1
- package/dist/cli-bundle/chunks/health-PBJS7W2T.js.map +0 -7
- package/dist/cli-bundle/chunks/history-ZXNWG6H4.js +0 -20
- package/dist/cli-bundle/chunks/history-redact-GV633Z4H.js +0 -21
- package/dist/cli-bundle/chunks/init-KQWZSNBX.js +0 -20
- package/dist/cli-bundle/chunks/register-setup-KPTZ36D4.js.map +0 -7
- package/dist/cli-bundle/chunks/register-setup-TMEF6V7O.js.map +0 -1
- package/dist/cli-bundle/chunks/restore-GKM26SAW.js +0 -19
- package/dist/cli-bundle/chunks/test-XF7BYLMZ.js +0 -35
- package/dist/cli-bundle/chunks/update-CPNOG73P.js +0 -24
- package/dist/cli-bundle/chunks/update-T5AYT6ZN.js +0 -28
- package/dist/cli-bundle/chunks/validate-3SUCHXXX.js.map +0 -1
- package/dist/cli-bundle/chunks/validate-KIIJY5RC.js.map +0 -7
- /package/dist/cli-bundle/chunks/{activity-KEEITOTB.js.map → activity-DXS2XMQU.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{activity-7G7NNNZQ.js.map → activity-NEOI45NX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{aggregate-5BTHOHW2.js.map → aggregate-IHM4KMQ3.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{aggregate-GB2LJNTZ.js.map → aggregate-NMYDVQF7.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{append-BBM4MNVD.js.map → append-3HY5G7ET.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{append-BFV5UYWS.js.map → append-K54MDQYC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-DKWIPIJY.js.map → chunk-25XZN3JD.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-GF44HVZL.js.map → chunk-2LEYMXI6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-XNQ3YH6N.js.map → chunk-3VLPDG3J.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-W2ZESOQE.js.map → chunk-44O4JIN6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-RADIHKJ3.js.map → chunk-47HTJ6BU.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-B3LROPTV.js.map → chunk-4JXWVHMN.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-HWHZ7EY7.js.map → chunk-4SDKF5BG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-RNKUCHUQ.js.map → chunk-5SESR24H.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-RICT5QYR.js.map → chunk-6FQHNHQQ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-FA5O2DEG.js.map → chunk-6UPTNMVW.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-4KFL5OYK.js.map → chunk-75VEYQJS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-2ZY5SLNR.js.map → chunk-77VKGH4L.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-6Y7IQ6XN.js.map → chunk-7MALIV5H.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-NMQNXH4U.js.map → chunk-7PBGTIN3.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-3KVCMB2M.js.map → chunk-A25LOPRG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-6KSFULO6.js.map → chunk-A7E4ZXG2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-ZHCSGIUX.js.map → chunk-AJXYOYJV.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-PF5GLFPU.js.map → chunk-B2KR24R4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-ZYG4TR32.js.map → chunk-C5SWTISA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-F4EYOSNC.js.map → chunk-CLLVBO3I.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-4PW4C3ZB.js.map → chunk-CWPBGUC7.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-J7VSEFWB.js.map → chunk-DBQUQ3AS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-2LUNPA3U.js.map → chunk-DHBPJ7VG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-6FSPWUBI.js.map → chunk-DMT4ODVN.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-XXGAWTH5.js.map → chunk-DU64SZUQ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-CNPWCUDR.js.map → chunk-EVPVCE4R.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-ACULWT7G.js.map → chunk-FK6MV5F5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-XKJDCJEH.js.map → chunk-GGAXE22C.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-SL233DQD.js.map → chunk-GNDHOR64.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-U3WTMYBX.js.map → chunk-GU7YHKYP.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-26OQTCGH.js.map → chunk-GXBSFKSX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-AOCYDQLT.js.map → chunk-H6FNDCDI.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-ICEWMJYH.js.map → chunk-HYQV75IB.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-5XK2RYJR.js.map → chunk-I367IDZP.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-E4E7UQBT.js.map → chunk-I6XE47J2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-NKTUBA2C.js.map → chunk-J2TSPY5L.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-DYOJJTCG.js.map → chunk-JLSC5NPC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-FXKPUMIR.js.map → chunk-JY25IOEZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-NCGQ27PK.js.map → chunk-K25UDYJ4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-3WAKNI2W.js.map → chunk-KBTREGVO.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-KCJZREBI.js.map → chunk-KK4TQ3ZP.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-7MMXBIRZ.js.map → chunk-KRJJPDUO.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-BYNJWB5F.js.map → chunk-MD7XKVWI.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-WFOITX4A.js.map → chunk-MNGAQB2E.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-II4BRHKM.js.map → chunk-NIWY4V4Z.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-YT4Z2OVB.js.map → chunk-NKZOJPXK.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-YBQF4CAW.js.map → chunk-NVUATMTC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-MTQK5ZSB.js.map → chunk-PCH2JTEO.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-VE3BUO3R.js.map → chunk-PJS2J7Z4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-2QJLN4KM.js.map → chunk-QQWEROGS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-6DZO5NN7.js.map → chunk-RPRFBXND.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-BBSUVIIT.js.map → chunk-SFKQAVZA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-X3CD2VUI.js.map → chunk-THKDPOS5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-OVSFW4KD.js.map → chunk-TIKJAXQW.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-4YMX7XFI.js.map → chunk-TJABI6PR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-AW4PYYNF.js.map → chunk-TZQKEBKF.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-QUTJOHGK.js.map → chunk-UKK2VTTH.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-ATRXPXAL.js.map → chunk-V4SM4UAL.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-6KARQMC6.js.map → chunk-VB54F347.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-6LTSLEHD.js.map → chunk-WBSYW3NT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-4S4INK3B.js.map → chunk-WQDX7DVG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-ETJKPURB.js.map → chunk-XKNF3VRJ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-BZWIDTDE.js.map → chunk-Y335KFHD.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-K2LBDYDC.js.map → chunk-Y4BZEND6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-EOFROIC5.js.map → chunk-YATDFWYK.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-EKMHDL6Z.js.map → chunk-YJICYNAV.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-WMQBNVZL.js.map → chunk-YQSWTVZF.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-FBBPCSJM.js.map → chunk-YRLLL5TY.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{claim-G57ZJLZ4.js.map → claim-MPXNVBZQ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{claim-TRSDQO6L.js.map → claim-SKHJDLW6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-4QMUQMON.js.map → close-4RKSL5L6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-NNZZTZ5V.js.map → close-Z6AI736U.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-many-3UWKJRQK.js.map → close-many-AWTPXLHJ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-many-A7U62CRI.js.map → close-many-SXODYBDP.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{comments-URWDZP2I.js.map → comments-OOH64LWW.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{comments-4EM7XR74.js.map → comments-YYW5P7AG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{config-PSZ5GWAK.js.map → config-3445MCQQ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{config-GRJYZ2O3.js.map → config-LCDMKRB2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{context-BCR34RKM.js.map → context-DZMIBIVP.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{context-A46YAV2F.js.map → context-PJCURODY.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{contracts-JOPCQNDP.js.map → contracts-7YDFEJB3.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{contracts-HPT25X4D.js.map → contracts-MP2P3HL5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{copy-KBTIUW7L.js.map → copy-63IQQRRS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{copy-X7V6AEDB.js.map → copy-TASIH2AZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{create-4KOAQ6ME.js.map → create-3BV2VA3Q.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{create-ZPZKJDFQ.js.map → create-TGSB5GV4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{delete-FGKVPUQZ.js.map → delete-ARILQQLB.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{delete-2ZI6CJZM.js.map → delete-ZQKBZYNK.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{deps-IUJOBF2H.js.map → deps-MSHQR2GY.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{deps-SJCEFU3C.js.map → deps-NJFJIMQ5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{docs-UWJ75CKR.js.map → docs-SS4UKYYA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{docs-2LXF5SVC.js.map → docs-XK2UVUXX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{eval-ZTT3F3SL.js.map → eval-FVZGX5IZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{eval-FRIDCTM2.js.map → eval-JOTG2YHU.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{extension-VRYTNNSV.js.map → extension-NLMS47I4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{extension-XFQG3BXL.js.map → extension-OQPS27B4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{files-AJOGTTAN.js.map → files-3EVJQZ2N.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{files-B2RUCA32.js.map → files-Y2P6LN5A.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{focus-7N36RIMT.js.map → focus-D5ZUPTII.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{focus-CFE33IYC.js.map → focus-ZPIFTY4R.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{gc-SBF2FGHK.js.map → gc-LXXDY456.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{gc-OYJK4YBY.js.map → gc-RNOEQHSX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{get-LLFWSPXW.js.map → get-Q3SZGQHD.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{get-577VLZZ7.js.map → get-W23G7MJX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-4FJK6Y3O.js.map → history-6CZVFIUJ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-ZXNWG6H4.js.map → history-YRQUD4YM.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-compact-AXR6R6GU.js.map → history-compact-M35PDQ4G.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-compact-HXF3OT7G.js.map → history-compact-VWUSQH6Z.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-redact-GV633Z4H.js.map → history-redact-27OEOZRZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-redact-UMPD4G3K.js.map → history-redact-AJGARHT3.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-repair-WHOK2ICG.js.map → history-repair-5RDMF7K4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-repair-X57HE5EA.js.map → history-repair-YUAHIPIN.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{init-KQWZSNBX.js.map → init-DWAKYRXI.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{init-N7MIIYCU.js.map → init-HASX3YNJ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{learnings-GZRBIEAN.js.map → learnings-JNGUIJDK.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{learnings-FPG7WAVW.js.map → learnings-M4KA6MQE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{list-ZDQ2OBSO.js.map → list-5UU2W24O.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{list-MZBCSKLU.js.map → list-6FMKTIH3.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{notes-LW53PFLH.js.map → notes-MODH5CBT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{notes-WQAP67EC.js.map → notes-PYCPLA5Y.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{plan-VZKICKIJ.js.map → plan-DXRIRYRU.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{plan-AVJ4VJQO.js.map → plan-EHQALWSC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{register-list-query-7BD6ZHU5.js.map → register-list-query-QAASVP2J.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{register-list-query-CM4SVAQA.js.map → register-list-query-WE54YJMH.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{register-mutation-ANZIWHUF.js.map → register-mutation-B6DZJTY2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{register-mutation-PLFHAS4N.js.map → register-mutation-CPV4C2KR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{register-operations-KQPQIFF2.js.map → register-operations-AT3BVVX2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{register-operations-VLGCAWIW.js.map → register-operations-RC4C3423.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{restore-64JKQV7G.js.map → restore-FNBV4GWE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{restore-GKM26SAW.js.map → restore-XY4YE2OV.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{scheduling-shortcuts-X6D6VSZR.js.map → scheduling-shortcuts-ECL6GBMZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{scheduling-shortcuts-4ION7QAX.js.map → scheduling-shortcuts-JRIUREEU.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{schema-TA3NF3RG.js.map → schema-74YENAJL.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{schema-OA4RSVMI.js.map → schema-TCW3I7QR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{search-UAIHEQZL.js.map → search-7USZ6XZA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{search-INCM5I4J.js.map → search-GNAUE65M.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{stats-RHEMG4CE.js.map → stats-CVHASAEU.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{stats-WQWTIA5Y.js.map → stats-DQMKJMFT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{telemetry-XA5D2QEO.js.map → telemetry-7P5EUWCS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{telemetry-G6UKGKJU.js.map → telemetry-PQTL5YS2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{test-XF7BYLMZ.js.map → test-COWPCGBE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{test-ZMQF23P3.js.map → test-FDQZQNZ4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{test-runs-N7LI7HLH.js.map → test-runs-JS6DNCCI.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{test-runs-RFA42EEX.js.map → test-runs-NZD2QGL5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-CPNOG73P.js.map → update-7IYQHX4Q.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-T5AYT6ZN.js.map → update-IJKDRBIX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-many-6XFR7TFG.js.map → update-many-6NTZ5J5D.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-many-NMRUQZL2.js.map → update-many-B3TH5TDS.js.map} +0 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../../../core/fs/fs-utils.ts", "../../../../../../../../core/fs/path-utils.ts", "../../../../../../../../core/packages/root.ts", "../../../../../../../../core/extensions/extension-types.ts", "../../../../../../../../core/shared/constants.ts", "../../../../../../../../core/store/paths.ts", "../../../../../../../../core/shared/primitives.ts", "../../../../../../../../core/extensions/extension-registries.ts", "../../../../../../../../core/extensions/extension-runtime-helpers.ts", "../../../../../../../../core/extensions/extension-hook-runtime.ts", "../../../../../../../../core/extensions/loader.ts", "../../../../../../../../core/extensions/flag-value-types.ts", "../../../../../../../../core/shared/levenshtein.ts", "../../../../../../../../core/extensions/item-field-types.ts", "../../../../../../../../core/extensions/extension-capability-aliases.ts", "../../../../../../../../core/extensions/extension-policy.ts", "../../../../../../../../core/extensions/capability-usage.ts", "../../../../../../../../core/extensions/index.ts", "../../../../../../../../types.ts", "../../../../../../../../core/schema/runtime-schema.ts", "../../../../../../../../core/shared/errors.ts", "../../../../../../../../core/shared/serialization.ts", "../../../../../../../../core/store/settings-validator.ts", "../../../../../../../../core/item/item-type-definition.ts", "../../../../../../../../core/validate/estimate-defaults.ts", "../../../../../../../../core/store/settings-read-cache.ts", "../../../../../../../../core/store/settings.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * @module core/fs/fs-utils\n *\n * Provides filesystem helpers for Fs Utils.\n */\nimport * as fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport crypto from \"node:crypto\";\n\n/**\n * Implements ensure dir for the public runtime surface of this module.\n */\nexport async function ensureDir(dirPath: string): Promise<void> {\n await fs.mkdir(dirPath, { recursive: true });\n}\n\n/**\n * Implements path exists for the public runtime surface of this module.\n */\nexport async function pathExists(targetPath: string): Promise<boolean> {\n try {\n await fs.access(targetPath);\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Implements read file if exists for the public runtime surface of this module.\n */\nexport async function readFileIfExists(targetPath: string): Promise<string | null> {\n try {\n return await fs.readFile(targetPath, \"utf8\");\n } catch (error: unknown) {\n if (isErrno(error, \"ENOENT\")) {\n return null;\n }\n throw error;\n }\n}\n\n/**\n * Implements write file atomic for the public runtime surface of this module.\n */\nexport async function writeFileAtomic(targetPath: string, contents: string): Promise<void> {\n const dirPath = path.dirname(targetPath);\n await ensureDir(dirPath);\n const tempPath = path.join(\n dirPath,\n `.${path.basename(targetPath)}.${process.pid}.${Date.now()}.${crypto.randomBytes(4).toString(\"hex\")}.tmp`,\n );\n await fs.writeFile(tempPath, contents, \"utf8\");\n try {\n await fs.rename(tempPath, targetPath);\n } catch (error: unknown) {\n if (isErrno(error, \"EXDEV\")) {\n try {\n await fs.copyFile(tempPath, targetPath);\n } finally {\n try {\n await fs.unlink(tempPath);\n } catch {\n // Best-effort cleanup only.\n }\n }\n return;\n }\n try {\n await fs.unlink(tempPath);\n } catch {\n // Best-effort cleanup only.\n }\n throw error;\n }\n}\n\n/**\n * Append a single newline-terminated line to a file, opened with `O_APPEND`.\n *\n * Concurrency contract: `O_APPEND` makes the seek-to-EOF that precedes each\n * `write(2)` atomic, so independent appenders never overwrite each other's\n * bytes. For the common case the whole `${line}\\n` buffer is handed to the\n * kernel in one `write(2)`, which mainstream filesystems (ext4/xfs/apfs) commit\n * atomically under the inode lock — concurrent multi-process appends of small\n * records (e.g. the telemetry and OTLP-span queues) therefore stay\n * line-coherent without an external lock.\n *\n * The guarantee weakens only for a single record large enough that the OS\n * splits it across multiple `write(2)` calls (multi-KiB lines), where another\n * process's append could interleave between fragments. History JSONL — the only\n * caller that can produce large lines — is always written while the per-item\n * store lock is held (see core/store/item-store.ts), so those appends are\n * serialized regardless. Callers writing large records concurrently from\n * multiple processes must hold an equivalent lock.\n */\nexport async function appendLineAtomic(targetPath: string, line: string): Promise<void> {\n const dirPath = path.dirname(targetPath);\n await ensureDir(dirPath);\n const handle = await fs.open(targetPath, \"a\");\n try {\n await handle.writeFile(`${line}\\n`, \"utf8\");\n } finally {\n await handle.close();\n }\n}\n\n/**\n * Implements remove file if exists for the public runtime surface of this module.\n */\nexport async function removeFileIfExists(targetPath: string): Promise<void> {\n try {\n await fs.unlink(targetPath);\n } catch (error: unknown) {\n if (!isErrno(error, \"ENOENT\")) {\n throw error;\n }\n }\n}\n\nfunction isErrno(error: unknown, code: string): boolean {\n return typeof error === \"object\" && error !== null && \"code\" in error && (error as { code?: string }).code === code;\n}\n", "/**\n * @module core/fs/path-utils\n *\n * Provides filesystem helpers for Path Utils.\n */\nimport path from \"path\";\n\n/**\n * Implements check whether path within directory for the public runtime surface of this module.\n */\nexport function isPathWithinDirectory(directory: string, targetPath: string): boolean {\n const relative = path.relative(directory, targetPath);\n if (relative.length === 0) {\n return true;\n }\n return !relative.startsWith(\"..\") && !path.isAbsolute(relative);\n}\n", "/**\n * @module core/packages/root\n *\n * Discovers and validates pm package manifests for Root.\n */\nimport fs from \"node:fs\";\nimport path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\n\nconst PM_CLI_PACKAGE_NAME = \"@unbrained/pm-cli\";\n\nfunction packageJsonNamesPmCli(packageJsonPath: string): boolean {\n try {\n const parsed = JSON.parse(fs.readFileSync(packageJsonPath, \"utf8\")) as { name?: unknown };\n return parsed.name === PM_CLI_PACKAGE_NAME;\n } catch {\n return false;\n }\n}\n\n/**\n * Implements find pm package root from path for the public runtime surface of this module.\n */\nexport function findPmPackageRootFromPath(startPath: string): string | undefined {\n let current = fs.existsSync(startPath) && fs.statSync(startPath).isDirectory()\n ? path.resolve(startPath)\n : path.dirname(path.resolve(startPath));\n\n while (true) {\n const packageJsonPath = path.join(current, \"package.json\");\n if (fs.existsSync(packageJsonPath) && packageJsonNamesPmCli(packageJsonPath)) {\n return current;\n }\n\n const parent = path.dirname(current);\n if (parent === current) {\n return undefined;\n }\n current = parent;\n }\n}\n\n/**\n * Implements resolve pm package root from module for the public runtime surface of this module.\n */\nexport function resolvePmPackageRootFromModule(metaUrl: string, fallbackRelativeSegments: string[] = []): string {\n const modulePath = fileURLToPath(metaUrl);\n const discovered = findPmPackageRootFromPath(modulePath);\n if (discovered) {\n return discovered;\n }\n return path.resolve(path.dirname(modulePath), ...fallbackRelativeSegments);\n}\n\n/**\n * Read the pm-cli package version from the resolved package root's `package.json`.\n *\n * Centralizes the read+parse+guard logic shared by the CLI banner, the Sentry\n * release tag, the MCP `serverInfo`, and the upgrade check so they never drift.\n * Returns `undefined` when the version cannot be resolved; callers supply their\n * own fallback (the CLI/MCP use `\"0.0.0\"`). Resolution must never throw, so the\n * hot startup path is safe.\n */\nexport function resolvePmCliVersion(metaUrl: string, fallbackRelativeSegments: string[] = []): string | undefined {\n try {\n const packageJsonPath = path.join(resolvePmPackageRootFromModule(metaUrl, fallbackRelativeSegments), \"package.json\");\n if (!fs.existsSync(packageJsonPath)) {\n return undefined;\n }\n const parsed = JSON.parse(fs.readFileSync(packageJsonPath, \"utf8\")) as { version?: unknown };\n return typeof parsed.version === \"string\" && parsed.version.trim().length > 0 ? parsed.version : undefined;\n } catch {\n return undefined;\n }\n}\n\n/**\n * Implements resolve configured pm package root for the public runtime surface of this module.\n */\nexport function resolveConfiguredPmPackageRoot(\n env: NodeJS.ProcessEnv = process.env,\n envName = \"PM_CLI_PACKAGE_ROOT\",\n metaUrl?: string,\n fallbackRelativeSegments: string[] = [],\n): string {\n const envRoot = env[envName];\n if (typeof envRoot === \"string\" && envRoot.trim().length > 0) {\n return path.resolve(envRoot.trim());\n }\n if (metaUrl) {\n return resolvePmPackageRootFromModule(metaUrl, fallbackRelativeSegments);\n }\n return process.cwd();\n}\n", "/**\n * @module core/extensions/extension-types\n *\n * Implements extension runtime contracts and governance for Extension Types.\n */\nimport type {\n ExtensionPolicyOverrideSettings,\n ExtensionPolicySettings,\n ItemDocument,\n ItemFrontMatter,\n ItemStatus,\n PmSettings,\n} from \"../../types/index.js\";\nimport type { GlobalOptions } from \"../shared/command-types.js\";\n\nexport const KNOWN_EXTENSION_CAPABILITIES = [\n \"commands\",\n \"renderers\",\n \"hooks\",\n \"schema\",\n \"importers\",\n \"search\",\n \"parser\",\n \"preflight\",\n \"services\",\n] as const;\n/**\n * Restricts extension capability values accepted by command, SDK, and storage contracts.\n */\nexport type ExtensionCapability = (typeof KNOWN_EXTENSION_CAPABILITIES)[number];\nexport const EXTENSION_CAPABILITY_CONTRACT_VERSION = 2;\nexport const EXTENSION_CAPABILITY_LEGACY_ALIASES: Readonly<Record<string, ExtensionCapability>> = Object.freeze({\n migration: \"schema\",\n validation: \"schema\",\n});\nexport const EXTENSION_CAPABILITY_CONTRACT = Object.freeze({\n version: EXTENSION_CAPABILITY_CONTRACT_VERSION,\n capabilities: [...KNOWN_EXTENSION_CAPABILITIES],\n legacy_aliases: { ...EXTENSION_CAPABILITY_LEGACY_ALIASES },\n});\n\nexport const KNOWN_EXTENSION_POLICY_MODES = [\"off\", \"warn\", \"enforce\"] as const;\n/**\n * Restricts extension policy mode values accepted by command, SDK, and storage contracts.\n */\nexport type ExtensionPolicyMode = (typeof KNOWN_EXTENSION_POLICY_MODES)[number];\nexport const KNOWN_EXTENSION_TRUST_MODES = [\"off\", \"warn\", \"enforce\"] as const;\n/**\n * Restricts extension trust mode values accepted by command, SDK, and storage contracts.\n */\nexport type ExtensionTrustMode = (typeof KNOWN_EXTENSION_TRUST_MODES)[number];\nexport const KNOWN_EXTENSION_SANDBOX_PROFILES = [\"none\", \"restricted\", \"strict\"] as const;\n/**\n * Restricts extension sandbox profile values accepted by command, SDK, and storage contracts.\n */\nexport type ExtensionSandboxProfile = (typeof KNOWN_EXTENSION_SANDBOX_PROFILES)[number];\n\nexport const KNOWN_PM_MAX_VERSION_EXCEEDED_MODES = [\"block\", \"warn\"] as const;\n/** How a `pm_max_version` violation is handled for an extension layer. */\nexport type PmMaxVersionExceededMode = (typeof KNOWN_PM_MAX_VERSION_EXCEEDED_MODES)[number];\n/** Optional per-layer override map for `extensions.policy.pm_max_version_exceeded_mode`. */\nexport interface PmMaxVersionExceededModeByLayer {\n global?: PmMaxVersionExceededMode;\n project?: PmMaxVersionExceededMode;\n}\n/**\n * Settings value for `extensions.policy.pm_max_version_exceeded_mode`: either a\n * single mode applied to both layers, or a per-layer override map. Unset (and\n * any unset layer key) defaults to `\"block\"`.\n */\nexport type PmMaxVersionExceededModeSetting = PmMaxVersionExceededMode | PmMaxVersionExceededModeByLayer;\n\nexport const KNOWN_EXTENSION_POLICY_SURFACES = [\n \"commands.override\",\n \"commands.handler\",\n \"hooks.beforecommand\",\n \"hooks.aftercommand\",\n \"hooks.onwrite\",\n \"hooks.onread\",\n \"hooks.onindex\",\n \"schema.flags\",\n \"schema.itemfields\",\n \"schema.itemtypes\",\n \"schema.migrations\",\n \"parser.override\",\n \"preflight.override\",\n \"services.override\",\n \"renderers.override\",\n \"importers.importer\",\n \"importers.exporter\",\n \"search.provider\",\n \"search.vectorstore\",\n] as const;\n/**\n * Restricts extension policy surface values accepted by command, SDK, and storage contracts.\n */\nexport type ExtensionPolicySurface = (typeof KNOWN_EXTENSION_POLICY_SURFACES)[number];\n\nexport const KNOWN_EXTENSION_SERVICE_NAMES = [\n \"output_format\",\n \"error_format\",\n \"help_format\",\n \"lock_acquire\",\n \"lock_release\",\n \"history_append\",\n \"item_store_write\",\n \"item_store_delete\",\n] as const;\n/**\n * Restricts extension service name values accepted by command, SDK, and storage contracts.\n */\nexport type ExtensionServiceName = (typeof KNOWN_EXTENSION_SERVICE_NAMES)[number];\n\n/**\n * Documents the extension provenance metadata payload exchanged by command, SDK, and package integrations.\n */\nexport interface ExtensionProvenanceMetadata {\n source?: string;\n signature?: string;\n attestation?: string;\n verified?: boolean;\n}\n\n/**\n * Documents the extension runtime permission declaration payload exchanged by command, SDK, and package integrations.\n */\nexport interface ExtensionRuntimePermissionDeclaration {\n fs_read?: boolean;\n fs_write?: boolean;\n network?: boolean;\n env_read?: boolean;\n env_write?: boolean;\n process_spawn?: boolean;\n}\n\n/**\n * Documents the extension activation metadata payload exchanged by command, SDK, and package integrations.\n */\nexport interface ExtensionActivationMetadata {\n commands?: string[];\n}\n\n/**\n * Restricts extension policy override values accepted by command, SDK, and storage contracts.\n */\nexport type ExtensionPolicyOverride = ExtensionPolicyOverrideSettings;\n/**\n * Extension governance policy as read from / serialized to settings. Extends the\n * stored settings shape with `pm_max_version_exceeded_mode` (pm-k5e8), which\n * relaxes the default-BLOCK on `pm_max_version` violations to warn-only —\n * globally or per extension layer.\n */\nexport type ExtensionGovernancePolicy = ExtensionPolicySettings & {\n pm_max_version_exceeded_mode?: PmMaxVersionExceededModeSetting;\n};\n\n/**\n * Documents the extension manifest engines payload exchanged by command, SDK, and package integrations.\n */\nexport interface ExtensionManifestEngines {\n pm?: string;\n node?: string;\n [engine: string]: string | undefined;\n}\n\n/**\n * Implements create default extension governance policy for the public runtime surface of this module.\n */\nexport function createDefaultExtensionGovernancePolicy(): ExtensionGovernancePolicy {\n return {\n mode: \"off\",\n trust_mode: \"off\",\n require_provenance: false,\n trusted_extensions: [],\n default_sandbox_profile: \"none\",\n allowed_extensions: [],\n blocked_extensions: [],\n allowed_capabilities: [],\n blocked_capabilities: [],\n allowed_surfaces: [],\n blocked_surfaces: [],\n allowed_commands: [],\n blocked_commands: [],\n allowed_actions: [],\n blocked_actions: [],\n allowed_services: [],\n blocked_services: [],\n extension_overrides: [],\n };\n}\n\n/**\n * Restricts extension layer values accepted by command, SDK, and storage contracts.\n */\nexport type ExtensionLayer = \"global\" | \"project\";\n/**\n * Restricts extension status values accepted by command, SDK, and storage contracts.\n */\nexport type ExtensionStatus = \"ok\" | \"warn\";\n\n/**\n * Documents the extension manifest payload exchanged by command, SDK, and package integrations.\n */\nexport interface ExtensionManifest {\n name: string;\n version: string;\n entry: string;\n priority: number;\n capabilities: string[];\n manifest_version?: number;\n pm_min_version?: string;\n pm_max_version?: string;\n engines?: ExtensionManifestEngines;\n trusted?: boolean;\n provenance?: ExtensionProvenanceMetadata;\n sandbox_profile?: ExtensionSandboxProfile;\n permissions?: ExtensionRuntimePermissionDeclaration;\n activation?: ExtensionActivationMetadata;\n legacy_capability_aliases?: LegacyExtensionCapabilityAliasMapping[];\n}\n\n/**\n * Documents the extension diagnostic payload exchanged by command, SDK, and package integrations.\n */\nexport interface ExtensionDiagnostic {\n layer: ExtensionLayer;\n directory: string;\n manifest_path: string;\n name: string | null;\n version: string | null;\n entry: string | null;\n priority: number | null;\n entry_path: string | null;\n enabled: boolean | null;\n status: ExtensionStatus;\n}\n\n/**\n * Documents the effective extension payload exchanged by command, SDK, and package integrations.\n */\nexport interface EffectiveExtension {\n layer: ExtensionLayer;\n directory: string;\n manifest_path: string;\n name: string;\n source_package?: string;\n version: string;\n entry: string;\n priority: number;\n entry_path: string;\n manifest_version?: number;\n pm_min_version?: string;\n pm_max_version?: string;\n engines?: ExtensionManifestEngines;\n trusted?: boolean;\n provenance?: ExtensionProvenanceMetadata;\n sandbox_profile?: ExtensionSandboxProfile;\n permissions?: ExtensionRuntimePermissionDeclaration;\n capabilities?: string[];\n activation?: ExtensionActivationMetadata;\n}\n\n/**\n * Documents the extension discovery result payload exchanged by command, SDK, and package integrations.\n */\nexport interface ExtensionDiscoveryResult {\n disabled_by_flag: boolean;\n roots: {\n global: string;\n project: string;\n };\n configured_enabled: string[];\n configured_disabled: string[];\n discovered: ExtensionDiagnostic[];\n effective: EffectiveExtension[];\n warnings: string[];\n policy: ExtensionGovernancePolicy;\n}\n\n/**\n * Documents the loaded extension payload exchanged by command, SDK, and package integrations.\n */\nexport interface LoadedExtension extends EffectiveExtension {\n module: unknown;\n}\n\n/**\n * Documents the failed extension load payload exchanged by command, SDK, and package integrations.\n */\nexport interface FailedExtensionLoad {\n layer: ExtensionLayer;\n name: string;\n entry_path: string;\n error: string;\n}\n\n/**\n * Documents the extension load result payload exchanged by command, SDK, and package integrations.\n */\nexport interface ExtensionLoadResult extends ExtensionDiscoveryResult {\n loaded: LoadedExtension[];\n failed: FailedExtensionLoad[];\n}\n\n/**\n * Documents the before command hook context payload exchanged by command, SDK, and package integrations.\n */\nexport interface BeforeCommandHookContext {\n command: string;\n args: string[];\n options?: Record<string, unknown>;\n global?: GlobalOptions;\n pm_root: string;\n}\n\n/**\n * Documents the after command hook context payload exchanged by command, SDK, and package integrations.\n */\nexport interface AfterCommandHookContext extends BeforeCommandHookContext {\n ok: boolean;\n error?: string;\n result?: unknown;\n affected?: AfterCommandAffectedItem[];\n}\n\n/**\n * Documents the after command affected item payload exchanged by command, SDK, and package integrations.\n */\nexport interface AfterCommandAffectedItem {\n id: string;\n op?: string;\n item_type?: string;\n previous_status?: ItemStatus;\n status?: ItemStatus;\n previous?: Partial<ItemFrontMatter>;\n current?: Partial<ItemFrontMatter>;\n changed_fields?: string[];\n}\n\n/**\n * Documents the on write hook context payload exchanged by command, SDK, and package integrations.\n */\nexport interface OnWriteHookContext {\n path: string;\n scope: \"project\" | \"global\";\n op: string;\n item_id?: string;\n item_type?: string;\n before?: ItemDocument;\n after?: ItemDocument;\n changed_fields?: string[];\n}\n\n/**\n * Documents the on read hook context payload exchanged by command, SDK, and package integrations.\n */\nexport interface OnReadHookContext {\n path: string;\n scope: \"project\" | \"global\";\n}\n\n/**\n * Documents the on index hook context payload exchanged by command, SDK, and package integrations.\n */\nexport interface OnIndexHookContext {\n mode: string;\n total_items?: number;\n}\n\n/**\n * Restricts before command hook values accepted by command, SDK, and storage contracts.\n */\nexport type BeforeCommandHook = (context: BeforeCommandHookContext) => Promise<void> | void;\n/**\n * Restricts after command hook values accepted by command, SDK, and storage contracts.\n */\nexport type AfterCommandHook = (context: AfterCommandHookContext) => Promise<void> | void;\n/**\n * Restricts on write hook values accepted by command, SDK, and storage contracts.\n */\nexport type OnWriteHook = (context: OnWriteHookContext) => Promise<void> | void;\n/**\n * Restricts on read hook values accepted by command, SDK, and storage contracts.\n */\nexport type OnReadHook = (context: OnReadHookContext) => Promise<void> | void;\n/**\n * Restricts on index hook values accepted by command, SDK, and storage contracts.\n */\nexport type OnIndexHook = (context: OnIndexHookContext) => Promise<void> | void;\n/**\n * Restricts output renderer format values accepted by command, SDK, and storage contracts.\n */\nexport type OutputRendererFormat = \"toon\" | \"json\";\n/**\n * Restricts command override values accepted by command, SDK, and storage contracts.\n */\nexport type CommandOverride = (context: CommandOverrideContext) => unknown;\n/**\n * Restricts renderer override values accepted by command, SDK, and storage contracts.\n */\nexport type RendererOverride = (context: RendererOverrideContext) => string | null | undefined;\n/**\n * Restricts command handler values accepted by command, SDK, and storage contracts.\n */\nexport type CommandHandler = (context: CommandHandlerContext) => unknown;\n/**\n * Restricts parser override values accepted by command, SDK, and storage contracts.\n */\nexport type ParserOverride = (context: ParserOverrideContext) => ParserOverrideDelta | Promise<ParserOverrideDelta>;\n/**\n * Restricts preflight override values accepted by command, SDK, and storage contracts.\n */\nexport type PreflightOverride = (context: PreflightOverrideContext) => PreflightOverrideDelta | Promise<PreflightOverrideDelta>;\n/**\n * Restricts service override values accepted by command, SDK, and storage contracts.\n */\nexport type ServiceOverride = (context: ServiceOverrideContext) => unknown;\n\n/**\n * Documents the registered extension hook payload exchanged by command, SDK, and package integrations.\n */\nexport interface RegisteredExtensionHook<THook> {\n layer: ExtensionLayer;\n name: string;\n run: THook;\n}\n\n/**\n * Documents the extension hook registry payload exchanged by command, SDK, and package integrations.\n */\nexport interface ExtensionHookRegistry {\n beforeCommand: Array<RegisteredExtensionHook<BeforeCommandHook>>;\n afterCommand: Array<RegisteredExtensionHook<AfterCommandHook>>;\n onWrite: Array<RegisteredExtensionHook<OnWriteHook>>;\n onRead: Array<RegisteredExtensionHook<OnReadHook>>;\n onIndex: Array<RegisteredExtensionHook<OnIndexHook>>;\n}\n\n/**\n * Documents the command override context payload exchanged by command, SDK, and package integrations.\n */\nexport interface CommandOverrideContext {\n command: string;\n args: string[];\n options?: Record<string, unknown>;\n global?: GlobalOptions;\n pm_root: string;\n result: unknown;\n}\n\n/**\n * Documents the renderer override context payload exchanged by command, SDK, and package integrations.\n */\nexport interface RendererOverrideContext {\n format: OutputRendererFormat;\n command?: string;\n args?: string[];\n options?: Record<string, unknown>;\n global?: GlobalOptions;\n pm_root?: string;\n result: unknown;\n}\n\n/**\n * Documents the command handler context payload exchanged by command, SDK, and package integrations.\n */\nexport interface CommandHandlerContext {\n command: string;\n args: string[];\n options: Record<string, unknown>;\n global: GlobalOptions;\n pm_root: string;\n}\n\n/**\n * Documents the parser override context payload exchanged by command, SDK, and package integrations.\n */\nexport interface ParserOverrideContext extends CommandHandlerContext {}\n\n/**\n * Documents the parser override delta payload exchanged by command, SDK, and package integrations.\n */\nexport interface ParserOverrideDelta {\n args?: string[];\n options?: Record<string, unknown>;\n global?: GlobalOptions;\n}\n\n/**\n * Documents the preflight override context payload exchanged by command, SDK, and package integrations.\n */\nexport interface PreflightOverrideContext extends CommandHandlerContext {\n decision: PreflightRuntimeDecision;\n}\n\n/**\n * Documents the preflight runtime decision payload exchanged by command, SDK, and package integrations.\n */\nexport interface PreflightRuntimeDecision {\n enforce_item_format_gate: boolean;\n run_preflight_item_format_sync: boolean;\n run_extension_migrations: boolean;\n enforce_mandatory_migration_gate: boolean;\n}\n\n/**\n * Documents the preflight override delta payload exchanged by command, SDK, and package integrations.\n */\nexport interface PreflightOverrideDelta extends ParserOverrideDelta {\n enforce_item_format_gate?: boolean;\n run_preflight_item_format_sync?: boolean;\n run_extension_migrations?: boolean;\n enforce_mandatory_migration_gate?: boolean;\n}\n\n/**\n * Documents the service override context payload exchanged by command, SDK, and package integrations.\n */\nexport interface ServiceOverrideContext {\n service: ExtensionServiceName;\n command?: string;\n args?: string[];\n options?: Record<string, unknown>;\n global?: GlobalOptions;\n pm_root?: string;\n payload: unknown;\n}\n\n/**\n * Documents the extension command argument definition payload exchanged by command, SDK, and package integrations.\n */\nexport interface ExtensionCommandArgumentDefinition {\n name: string;\n required?: boolean;\n variadic?: boolean;\n description?: string;\n}\n\n/**\n * Documents the command definition payload exchanged by command, SDK, and package integrations.\n */\nexport interface CommandDefinition {\n name: string;\n run?: CommandHandler;\n /**\n * @deprecated Use `run` instead. This alias remains for backward compatibility.\n */\n handler?: CommandHandler;\n action?: string;\n description?: string;\n intent?: string;\n examples?: string[];\n failure_hints?: string[];\n arguments?: ExtensionCommandArgumentDefinition[];\n flags?: FlagDefinition[];\n}\n\n/**\n * Optional command-definition metadata for first-class importer/exporter\n * registration.\n *\n * `registerImporter`/`registerExporter` always create a `<name> import` /\n * `<name> export` command path. By default that path only has a handler. When\n * these options are supplied, the auto-created command also gains a full command\n * definition (description, flags, intent, examples, failure hints, positional\n * arguments) — surfaced in help and runtime contracts exactly like\n * `registerCommand`. The registration `name` and `run` handler are implicit, so\n * they are not part of this options object.\n */\nexport interface ImportExportRegistrationOptions {\n action?: string;\n description?: string;\n intent?: string;\n examples?: string[];\n failure_hints?: string[];\n arguments?: ExtensionCommandArgumentDefinition[];\n flags?: FlagDefinition[];\n}\n\n/**\n * Restricts flag value type values accepted by command, SDK, and storage contracts.\n */\nexport type FlagValueType = \"string\" | \"number\" | \"boolean\";\n\n/**\n * Documents the flag definition payload exchanged by command, SDK, and package integrations.\n */\nexport interface FlagDefinition {\n long?: string;\n short?: string;\n value_name?: string;\n description?: string;\n required?: boolean;\n enabled?: boolean;\n visible?: boolean;\n /**\n * Canonical flag value type. Prefer this field; it is the one runtime\n * contracts and help output read first.\n */\n value_type?: FlagValueType;\n /**\n * @deprecated Use `value_type`. Retained for backward compatibility: when\n * both are present `value_type` wins, and `type` resolves only when\n * `value_type` is absent (`value_type ?? type`).\n */\n type?: FlagValueType;\n /**\n * When true, a repeated comma-list flag accumulates values across repeats\n * — parity with core list flags such as `--tags` — instead of the last\n * value winning. Mirrors the core `CliFlagContract.list` field so\n * extension-registered list flags coalesce through the same bootstrap path.\n */\n list?: boolean;\n /**\n * Default value applied when the flag is omitted. Surfaced to runtime\n * contracts and help output. A `list` flag may default to an array of scalars\n * (e.g. `[\"a\", \"b\"]`); the array is flattened/coerced like any list value.\n */\n default?: string | number | boolean | Array<string | number | boolean>;\n [key: string]: unknown;\n}\n\n/**\n * Documents the schema field definition payload exchanged by command, SDK, and package integrations.\n */\nexport interface SchemaFieldDefinition {\n name: string;\n type: string;\n optional?: boolean;\n [key: string]: unknown;\n}\n\n/**\n * Documents the schema item type command option policy definition payload exchanged by command, SDK, and package integrations.\n */\nexport interface SchemaItemTypeCommandOptionPolicyDefinition {\n command: string;\n option: string;\n enabled?: boolean;\n required?: boolean;\n visible?: boolean;\n [key: string]: unknown;\n}\n\n/**\n * Documents the schema item type option definition payload exchanged by command, SDK, and package integrations.\n */\nexport interface SchemaItemTypeOptionDefinition {\n key: string;\n values?: string[];\n required?: boolean;\n aliases?: string[];\n [key: string]: unknown;\n}\n\n/**\n * Documents the schema item type definition payload exchanged by command, SDK, and package integrations.\n */\nexport interface SchemaItemTypeDefinition {\n name: string;\n folder?: string;\n aliases?: string[];\n required_create_fields?: string[];\n required_create_repeatables?: string[];\n command_option_policies?: SchemaItemTypeCommandOptionPolicyDefinition[];\n options?: SchemaItemTypeOptionDefinition[];\n [key: string]: unknown;\n}\n\n/**\n * Documents the schema migration run context payload exchanged by command, SDK, and package integrations.\n */\nexport interface SchemaMigrationRunContext {\n id: string;\n command: \"migration\";\n layer: ExtensionLayer;\n extension: string;\n pm_root: string;\n status: string;\n}\n\n/**\n * Restricts schema migration runner values accepted by command, SDK, and storage contracts.\n */\nexport type SchemaMigrationRunner = (context: SchemaMigrationRunContext) => unknown | Promise<unknown>;\n\n/**\n * Documents the schema migration definition payload exchanged by command, SDK, and package integrations.\n */\nexport interface SchemaMigrationDefinition {\n id?: string;\n description?: string;\n status?: string;\n mandatory?: boolean;\n run?: SchemaMigrationRunner;\n [key: string]: unknown;\n}\n\n/**\n * Documents the import export context payload exchanged by command, SDK, and package integrations.\n */\nexport interface ImportExportContext {\n registration: string;\n action: \"import\" | \"export\";\n command: string;\n args: string[];\n options: Record<string, unknown>;\n global: GlobalOptions;\n pm_root: string;\n}\n\n/**\n * Restricts importer values accepted by command, SDK, and storage contracts.\n */\nexport type Importer = (context: ImportExportContext) => unknown | Promise<unknown>;\n/**\n * Restricts exporter values accepted by command, SDK, and storage contracts.\n */\nexport type Exporter = (context: ImportExportContext) => unknown | Promise<unknown>;\n\n/**\n * Restricts extension search mode values accepted by command, SDK, and storage contracts.\n */\nexport type ExtensionSearchMode = \"keyword\" | \"semantic\" | \"hybrid\";\n\n/**\n * Documents the search provider query context payload exchanged by command, SDK, and package integrations.\n */\nexport interface SearchProviderQueryContext {\n query: string;\n mode: ExtensionSearchMode;\n tokens: string[];\n options: Record<string, unknown>;\n settings: PmSettings;\n documents: ItemDocument[];\n [key: string]: unknown;\n}\n\n/**\n * Documents the search provider hit payload exchanged by command, SDK, and package integrations.\n */\nexport interface SearchProviderHit {\n id: string;\n score: number;\n matched_fields?: string[];\n [key: string]: unknown;\n}\n\n/**\n * Restricts search provider query result values accepted by command, SDK, and storage contracts.\n */\nexport type SearchProviderQueryResult = SearchProviderHit[] | { hits?: SearchProviderHit[] };\n\n/**\n * Documents the search provider query expansion context payload exchanged by command, SDK, and package integrations.\n */\nexport interface SearchProviderQueryExpansionContext {\n query: string;\n mode: Exclude<ExtensionSearchMode, \"keyword\">;\n settings: PmSettings;\n [key: string]: unknown;\n}\n\n/**\n * Restricts search provider query expansion result values accepted by command, SDK, and storage contracts.\n */\nexport type SearchProviderQueryExpansionResult = string[] | { queries?: string[] };\n\n/**\n * Documents the search provider rerank candidate payload exchanged by command, SDK, and package integrations.\n */\nexport interface SearchProviderRerankCandidate {\n id: string;\n text: string;\n score: number;\n}\n\n/**\n * Documents the search provider rerank hit payload exchanged by command, SDK, and package integrations.\n */\nexport interface SearchProviderRerankHit {\n id: string;\n score: number;\n}\n\n/**\n * Restricts search provider rerank result values accepted by command, SDK, and storage contracts.\n */\nexport type SearchProviderRerankResult = SearchProviderRerankHit[] | { hits?: SearchProviderRerankHit[] };\n\n/**\n * Documents the search provider rerank context payload exchanged by command, SDK, and package integrations.\n */\nexport interface SearchProviderRerankContext {\n query: string;\n mode: \"hybrid\";\n model: string;\n top_k: number;\n settings: PmSettings;\n candidates: SearchProviderRerankCandidate[];\n [key: string]: unknown;\n}\n\n/**\n * Documents the search provider embed batch context payload exchanged by command, SDK, and package integrations.\n */\nexport interface SearchProviderEmbedBatchContext {\n inputs: string[];\n settings: PmSettings;\n model: string;\n [key: string]: unknown;\n}\n\n/**\n * Documents the search provider embed context payload exchanged by command, SDK, and package integrations.\n */\nexport interface SearchProviderEmbedContext {\n input: string;\n settings: PmSettings;\n model: string;\n [key: string]: unknown;\n}\n\n/**\n * Documents the search provider definition payload exchanged by command, SDK, and package integrations.\n */\nexport interface SearchProviderDefinition {\n name: string;\n query?: (context: SearchProviderQueryContext) => SearchProviderQueryResult | Promise<SearchProviderQueryResult>;\n queryExpansion?: (\n context: SearchProviderQueryExpansionContext,\n ) => SearchProviderQueryExpansionResult | Promise<SearchProviderQueryExpansionResult>;\n query_expansion?: (\n context: SearchProviderQueryExpansionContext,\n ) => SearchProviderQueryExpansionResult | Promise<SearchProviderQueryExpansionResult>;\n rerank?: (context: SearchProviderRerankContext) => SearchProviderRerankResult | Promise<SearchProviderRerankResult>;\n embedBatch?: (context: SearchProviderEmbedBatchContext) => number[][] | Promise<number[][]>;\n embed_batch?: (context: SearchProviderEmbedBatchContext) => number[][] | Promise<number[][]>;\n embed?: (context: SearchProviderEmbedContext) => number[] | Promise<number[]>;\n [key: string]: unknown;\n}\n\n/**\n * Documents the vector store query hit payload exchanged by command, SDK, and package integrations.\n */\nexport interface VectorStoreQueryHit {\n id: string;\n score: number;\n payload?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\n/**\n * Documents the vector store query context payload exchanged by command, SDK, and package integrations.\n */\nexport interface VectorStoreQueryContext {\n vector: number[];\n limit: number;\n settings: PmSettings;\n [key: string]: unknown;\n}\n\n/**\n * Documents the vector store upsert point payload exchanged by command, SDK, and package integrations.\n */\nexport interface VectorStoreUpsertPoint {\n id: string;\n vector: number[];\n payload?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\n/**\n * Documents the vector store upsert context payload exchanged by command, SDK, and package integrations.\n */\nexport interface VectorStoreUpsertContext {\n points: VectorStoreUpsertPoint[];\n settings: PmSettings;\n [key: string]: unknown;\n}\n\n/**\n * Documents the vector store delete context payload exchanged by command, SDK, and package integrations.\n */\nexport interface VectorStoreDeleteContext {\n ids: string[];\n settings: PmSettings;\n [key: string]: unknown;\n}\n\n/**\n * Documents the vector store adapter definition payload exchanged by command, SDK, and package integrations.\n */\nexport interface VectorStoreAdapterDefinition {\n name: string;\n query?: (context: VectorStoreQueryContext) => VectorStoreQueryHit[] | Promise<VectorStoreQueryHit[]>;\n upsert?: (context: VectorStoreUpsertContext) => unknown | Promise<unknown>;\n delete?: (context: VectorStoreDeleteContext) => unknown | Promise<unknown>;\n [key: string]: unknown;\n}\n\n/**\n * Documents the registered extension command override payload exchanged by command, SDK, and package integrations.\n */\nexport interface RegisteredExtensionCommandOverride {\n layer: ExtensionLayer;\n name: string;\n command: string;\n run: CommandOverride;\n}\n\n/**\n * Documents the registered extension command handler payload exchanged by command, SDK, and package integrations.\n */\nexport interface RegisteredExtensionCommandHandler {\n layer: ExtensionLayer;\n name: string;\n command: string;\n run: CommandHandler;\n}\n\n/**\n * Documents the registered extension parser override payload exchanged by command, SDK, and package integrations.\n */\nexport interface RegisteredExtensionParserOverride {\n layer: ExtensionLayer;\n name: string;\n command: string;\n run: ParserOverride;\n}\n\n/**\n * Documents the registered extension preflight override payload exchanged by command, SDK, and package integrations.\n */\nexport interface RegisteredExtensionPreflightOverride {\n layer: ExtensionLayer;\n name: string;\n run: PreflightOverride;\n}\n\n/**\n * Documents the registered extension service override payload exchanged by command, SDK, and package integrations.\n */\nexport interface RegisteredExtensionServiceOverride {\n layer: ExtensionLayer;\n name: string;\n service: ExtensionServiceName;\n run: ServiceOverride;\n}\n\n/**\n * Documents the registered extension renderer override payload exchanged by command, SDK, and package integrations.\n */\nexport interface RegisteredExtensionRendererOverride {\n layer: ExtensionLayer;\n name: string;\n format: OutputRendererFormat;\n run: RendererOverride;\n}\n\n/**\n * Documents the extension command registry payload exchanged by command, SDK, and package integrations.\n */\nexport interface ExtensionCommandRegistry {\n overrides: RegisteredExtensionCommandOverride[];\n handlers: RegisteredExtensionCommandHandler[];\n}\n\n/**\n * Documents the extension parser registry payload exchanged by command, SDK, and package integrations.\n */\nexport interface ExtensionParserRegistry {\n overrides: RegisteredExtensionParserOverride[];\n}\n\n/**\n * Documents the extension preflight registry payload exchanged by command, SDK, and package integrations.\n */\nexport interface ExtensionPreflightRegistry {\n overrides: RegisteredExtensionPreflightOverride[];\n}\n\n/**\n * Documents the extension service registry payload exchanged by command, SDK, and package integrations.\n */\nexport interface ExtensionServiceRegistry {\n overrides: RegisteredExtensionServiceOverride[];\n}\n\n/**\n * Documents the extension renderer registry payload exchanged by command, SDK, and package integrations.\n */\nexport interface ExtensionRendererRegistry {\n overrides: RegisteredExtensionRendererOverride[];\n}\n\n/**\n * Documents the registered extension flag definitions payload exchanged by command, SDK, and package integrations.\n */\nexport interface RegisteredExtensionFlagDefinitions {\n layer: ExtensionLayer;\n name: string;\n target_command: string;\n flags: FlagDefinition[];\n}\n\n/**\n * Documents the registered extension command definition payload exchanged by command, SDK, and package integrations.\n */\nexport interface RegisteredExtensionCommandDefinition {\n layer: ExtensionLayer;\n name: string;\n source_package?: string;\n command: string;\n action: string;\n description?: string;\n intent?: string;\n examples: string[];\n failure_hints: string[];\n arguments: ExtensionCommandArgumentDefinition[];\n}\n\n/**\n * Documents the registered extension schema field definitions payload exchanged by command, SDK, and package integrations.\n */\nexport interface RegisteredExtensionSchemaFieldDefinitions {\n layer: ExtensionLayer;\n name: string;\n fields: SchemaFieldDefinition[];\n}\n\n/**\n * Documents the registered extension schema item type definitions payload exchanged by command, SDK, and package integrations.\n */\nexport interface RegisteredExtensionSchemaItemTypeDefinitions {\n layer: ExtensionLayer;\n name: string;\n types: SchemaItemTypeDefinition[];\n}\n\n/**\n * Documents the registered extension schema migration definition payload exchanged by command, SDK, and package integrations.\n */\nexport interface RegisteredExtensionSchemaMigrationDefinition {\n layer: ExtensionLayer;\n name: string;\n definition: SchemaMigrationDefinition;\n runtime_definition: SchemaMigrationDefinition;\n}\n\n/**\n * Documents the registered extension importer payload exchanged by command, SDK, and package integrations.\n */\nexport interface RegisteredExtensionImporter {\n layer: ExtensionLayer;\n name: string;\n importer: string;\n}\n\n/**\n * Documents the registered extension exporter payload exchanged by command, SDK, and package integrations.\n */\nexport interface RegisteredExtensionExporter {\n layer: ExtensionLayer;\n name: string;\n exporter: string;\n}\n\n/**\n * Documents the registered extension search provider payload exchanged by command, SDK, and package integrations.\n */\nexport interface RegisteredExtensionSearchProvider {\n layer: ExtensionLayer;\n name: string;\n definition: SearchProviderDefinition;\n runtime_definition: SearchProviderDefinition;\n}\n\n/**\n * Documents the registered extension vector store adapter payload exchanged by command, SDK, and package integrations.\n */\nexport interface RegisteredExtensionVectorStoreAdapter {\n layer: ExtensionLayer;\n name: string;\n definition: VectorStoreAdapterDefinition;\n runtime_definition: VectorStoreAdapterDefinition;\n}\n\n/**\n * Documents the extension registration registry payload exchanged by command, SDK, and package integrations.\n */\nexport interface ExtensionRegistrationRegistry {\n commands: RegisteredExtensionCommandDefinition[];\n flags: RegisteredExtensionFlagDefinitions[];\n item_fields: RegisteredExtensionSchemaFieldDefinitions[];\n item_types: RegisteredExtensionSchemaItemTypeDefinitions[];\n migrations: RegisteredExtensionSchemaMigrationDefinition[];\n importers: RegisteredExtensionImporter[];\n exporters: RegisteredExtensionExporter[];\n search_providers: RegisteredExtensionSearchProvider[];\n vector_store_adapters: RegisteredExtensionVectorStoreAdapter[];\n}\n\n/**\n * Documents the extension registration counts payload exchanged by command, SDK, and package integrations.\n */\nexport interface ExtensionRegistrationCounts {\n commands: number;\n flags: number;\n item_fields: number;\n item_types: number;\n migrations: number;\n importers: number;\n exporters: number;\n search_providers: number;\n vector_store_adapters: number;\n}\n\n/**\n * Read-only identity an extension's `activate(api)` receives about itself, so\n * authors can emit self-identifying logs, gate on their own version, and build\n * better error messages without re-reading the on-disk manifest or duplicating\n * metadata in-module. Exposed as `api.extension`.\n */\nexport interface ExtensionSelfIdentity {\n readonly name: string;\n readonly layer: ExtensionLayer;\n readonly version: string;\n readonly capabilities: readonly ExtensionCapability[];\n readonly pm_min_version?: string;\n readonly pm_max_version?: string;\n readonly source_package?: string;\n}\n\n/**\n * Documents the extension api payload exchanged by command, SDK, and package integrations.\n */\nexport interface ExtensionApi {\n /** Read-only identity of the extension this `api` was created for. */\n readonly extension: ExtensionSelfIdentity;\n registerCommand(command: string, override: CommandOverride): void;\n registerCommand(definition: CommandDefinition): void;\n registerParser(command: string, override: ParserOverride): void;\n registerPreflight(override: PreflightOverride): void;\n registerService(service: ExtensionServiceName, override: ServiceOverride): void;\n registerFlags(targetCommand: string, flags: FlagDefinition[]): void;\n registerItemFields(fields: SchemaFieldDefinition[]): void;\n registerItemTypes(types: SchemaItemTypeDefinition[]): void;\n registerMigration(definition: SchemaMigrationDefinition): void;\n registerRenderer(format: OutputRendererFormat, renderer: RendererOverride): void;\n registerImporter(name: string, importer: Importer, options?: ImportExportRegistrationOptions): void;\n registerExporter(name: string, exporter: Exporter, options?: ImportExportRegistrationOptions): void;\n registerSearchProvider(provider: SearchProviderDefinition): void;\n registerVectorStoreAdapter(adapter: VectorStoreAdapterDefinition): void;\n hooks: {\n beforeCommand(hook: BeforeCommandHook): void;\n afterCommand(hook: AfterCommandHook): void;\n onWrite(hook: OnWriteHook): void;\n onRead(hook: OnReadHook): void;\n onIndex(hook: OnIndexHook): void;\n };\n}\n\n/**\n * Documents the failed extension activation payload exchanged by command, SDK, and package integrations.\n */\nexport interface FailedExtensionActivation {\n layer: ExtensionLayer;\n name: string;\n entry_path: string;\n error: string;\n trace?: ExtensionActivationFailureTrace;\n}\n\n/**\n * Documents the extension activation failure trace payload exchanged by command, SDK, and package integrations.\n */\nexport interface ExtensionActivationFailureTrace {\n method: string;\n /** `-1` means the failure happened before a numbered registration was accepted. */\n registration_index: number;\n command?: string;\n capability?: ExtensionCapability;\n missing_capability?: ExtensionCapability;\n expected_schema: string;\n received?: unknown;\n hint?: string;\n}\n\n/**\n * Documents the extension activation result payload exchanged by command, SDK, and package integrations.\n */\nexport interface ExtensionActivationResult {\n hooks: ExtensionHookRegistry;\n commands: ExtensionCommandRegistry;\n parsers: ExtensionParserRegistry;\n preflight: ExtensionPreflightRegistry;\n services: ExtensionServiceRegistry;\n renderers: ExtensionRendererRegistry;\n registrations: ExtensionRegistrationRegistry;\n failed: FailedExtensionActivation[];\n warnings: string[];\n hook_counts: {\n before_command: number;\n after_command: number;\n on_write: number;\n on_read: number;\n on_index: number;\n };\n command_override_count: number;\n command_handler_count: number;\n parser_override_count: number;\n preflight_override_count: number;\n service_override_count: number;\n renderer_override_count: number;\n registration_counts: ExtensionRegistrationCounts;\n}\n\n/**\n * Documents the extension candidate payload exchanged by command, SDK, and package integrations.\n */\nexport interface ExtensionCandidate {\n layer: ExtensionLayer;\n directory: string;\n manifest_path: string;\n entry_path: string;\n manifest: ExtensionManifest;\n source_package?: string;\n}\n\n/**\n * Documents the extension layer scan result payload exchanged by command, SDK, and package integrations.\n */\nexport interface ExtensionLayerScanResult {\n diagnostics: ExtensionDiagnostic[];\n warnings: string[];\n candidates: ExtensionCandidate[];\n}\n\n/**\n * Documents the scanned extension directory payload exchanged by command, SDK, and package integrations.\n */\nexport interface ScannedExtensionDirectory {\n diagnostic: ExtensionDiagnostic;\n warnings: string[];\n candidate: ExtensionCandidate | null;\n}\n\n/**\n * Documents the legacy extension capability alias mapping payload exchanged by command, SDK, and package integrations.\n */\nexport interface LegacyExtensionCapabilityAliasMapping {\n alias: string;\n target: ExtensionCapability;\n}\n\n/**\n * Documents the discover extensions options payload exchanged by command, SDK, and package integrations.\n */\nexport interface DiscoverExtensionsOptions {\n pmRoot: string;\n settings: PmSettings;\n cwd?: string;\n noExtensions?: boolean;\n reload_token?: string;\n cache_bust?: boolean;\n}\n\n/**\n * Documents the activatable extension payload exchanged by command, SDK, and package integrations.\n */\nexport interface ActivatableExtension {\n activate: (api: ExtensionApi) => void | Promise<void>;\n /**\n * Optional teardown lifecycle hook, analogous to VS Code's `deactivate`\n * export. Invoked when the host tears the extension down — on long-running\n * MCP-server reload between requests, or via the `deactivateExtensions`\n * primitive — so an extension can close connections, clear timers, and\n * release buffers it opened during `activate`.\n */\n deactivate?: () => void | Promise<void>;\n}\n\n/**\n * Documents the extension deactivation failure payload exchanged by command, SDK, and package integrations.\n */\nexport interface ExtensionDeactivationFailure {\n layer: ExtensionLayer;\n name: string;\n error: string;\n}\n\n/**\n * Documents the extension deactivation options payload exchanged by command, SDK, and package integrations.\n */\nexport interface ExtensionDeactivationOptions {\n /**\n * Maximum time to wait for each extension's `deactivate` hook. Defaults to\n * 5000ms so a hanging teardown cannot block host shutdown or reload. Set to\n * 0 or Infinity only when the host intentionally wants to wait indefinitely.\n */\n deactivate_timeout_ms?: number;\n}\n\n/**\n * Documents the extension deactivation result payload exchanged by command, SDK, and package integrations.\n */\nexport interface ExtensionDeactivationResult {\n /** Count of loaded extensions whose `deactivate` hook ran without throwing. */\n deactivated: number;\n warnings: string[];\n failed: ExtensionDeactivationFailure[];\n}\n\n/**\n * Documents the service override result payload exchanged by command, SDK, and package integrations.\n */\nexport interface ServiceOverrideResult {\n handled: boolean;\n result: unknown;\n warnings: string[];\n}\n\n/**\n * Documents the command override result payload exchanged by command, SDK, and package integrations.\n */\nexport interface CommandOverrideResult {\n overridden: boolean;\n result: unknown;\n warnings: string[];\n}\n\n/**\n * Documents the command handler result payload exchanged by command, SDK, and package integrations.\n */\nexport interface CommandHandlerResult {\n handled: boolean;\n result: unknown;\n warnings: string[];\n /**\n * Human-readable, single-line, length-bounded message describing why an\n * extension command handler failed. Surfaced to the user/CI so the real cause\n * (e.g. \"Changelog is out of date: CHANGELOG.md\") is visible instead of only\n * the opaque `extension_command_handler_failed` warning code.\n */\n errorMessage?: string;\n}\n\n/**\n * Documents the parser override result payload exchanged by command, SDK, and package integrations.\n */\nexport interface ParserOverrideResult {\n overridden: boolean;\n context: CommandHandlerContext;\n warnings: string[];\n}\n\n/**\n * Documents the preflight override result payload exchanged by command, SDK, and package integrations.\n */\nexport interface PreflightOverrideResult {\n overridden: boolean;\n context: CommandHandlerContext;\n decision: PreflightRuntimeDecision;\n warnings: string[];\n}\n\n/**\n * Documents the renderer override result payload exchanged by command, SDK, and package integrations.\n */\nexport interface RendererOverrideResult {\n overridden: boolean;\n rendered: string | null;\n warnings: string[];\n}\n\n/**\n * Documents the unknown extension capability warning details payload exchanged by command, SDK, and package integrations.\n */\nexport interface UnknownExtensionCapabilityWarningDetails {\n layer: ExtensionLayer;\n name: string;\n capability: string;\n allowed_capabilities: string[];\n capability_contract_version: number;\n suggested_capability?: string;\n suggestion_source?: \"legacy_alias\" | \"nearest_match\";\n legacy_alias_target?: string;\n}\n", "/**\n * @module core/shared/constants\n *\n * Provides shared primitives and utilities for Constants.\n */\nimport type {\n BuiltinItemType,\n GovernancePreset,\n GovernanceSettings,\n ItemFrontMatter,\n PmSettings,\n RuntimeStatusDefinition,\n RuntimeWorkflowDefinition,\n} from \"../../types/index.js\";\nimport { createDefaultExtensionGovernancePolicy } from \"../extensions/extension-types.js\";\n\n/**\n * Canonical default lifecycle status model and workflow role mapping.\n *\n * Single source of truth: `SETTINGS_DEFAULTS.schema` references these, and\n * `src/core/schema/runtime-schema.ts` re-exports them as\n * `DEFAULT_RUNTIME_STATUS_DEFINITIONS` / `DEFAULT_RUNTIME_WORKFLOW`.\n */\nexport const DEFAULT_STATUS_DEFINITIONS: ReadonlyArray<RuntimeStatusDefinition> = Object.freeze([\n {\n id: \"draft\",\n roles: [\"draft\"],\n },\n {\n id: \"open\",\n roles: [\"active\", \"default_open\"],\n },\n {\n id: \"in_progress\",\n aliases: [\"in-progress\"],\n roles: [\"active\"],\n },\n {\n id: \"blocked\",\n roles: [\"blocked\"],\n },\n {\n id: \"closed\",\n roles: [\"terminal\", \"terminal_done\", \"default_close\"],\n },\n {\n id: \"canceled\",\n aliases: [\"cancelled\"],\n roles: [\"terminal\", \"terminal_canceled\", \"default_cancel\"],\n },\n]);\n\nexport const DEFAULT_WORKFLOW_DEFINITION: RuntimeWorkflowDefinition = Object.freeze({\n draft_status: \"draft\",\n open_status: \"open\",\n in_progress_status: \"in_progress\",\n blocked_status: \"blocked\",\n close_status: \"closed\",\n canceled_status: \"canceled\",\n});\n\nexport const PM_DIRNAME = \".agents/pm\";\nexport const SETTINGS_FILENAME = \"settings.json\";\n\n/**\n * GH-249: placeholder close reason recorded when `pm create --status closed`\n * lands an item directly in the close status under\n * `governance.require_close_reason` and no --message/--resolution text is\n * available. Mirrors `pm update --status closed`'s \"Closed via pm update\"\n * default so all three closure paths record a reason.\n */\nexport const CREATE_DIRECT_CLOSE_REASON_DEFAULT = \"Closed at creation via pm create\";\n\nexport const PM_CORE_REQUIRED_SUBDIRS = [\n \"\",\n \"epics\",\n \"features\",\n \"tasks\",\n \"chores\",\n \"issues\",\n \"schema\",\n \"history\",\n \"search\",\n \"extensions\",\n \"locks\",\n] as const;\n\nexport const PM_OPTIONAL_TYPE_SUBDIRS = [\n \"decisions\",\n \"events\",\n \"reminders\",\n \"milestones\",\n \"meetings\",\n \"plans\",\n] as const;\n\nexport const PM_REQUIRED_SUBDIRS = [...PM_CORE_REQUIRED_SUBDIRS, ...PM_OPTIONAL_TYPE_SUBDIRS] as const;\n\nexport const TYPE_TO_FOLDER: Record<BuiltinItemType, string> = {\n Epic: \"epics\",\n Feature: \"features\",\n Task: \"tasks\",\n Chore: \"chores\",\n Issue: \"issues\",\n Decision: \"decisions\",\n Event: \"events\",\n Reminder: \"reminders\",\n Milestone: \"milestones\",\n Meeting: \"meetings\",\n Plan: \"plans\",\n};\n\nexport const FRONT_MATTER_KEY_ORDER: ReadonlyArray<string> = [\n \"id\",\n \"title\",\n \"description\",\n \"type\",\n \"pm_format_version\",\n \"source_type\",\n \"type_options\",\n \"status\",\n \"priority\",\n \"tags\",\n \"created_at\",\n \"updated_at\",\n \"deadline\",\n \"reminders\",\n \"events\",\n \"closed_at\",\n \"assignee\",\n \"source_owner\",\n \"author\",\n \"estimated_minutes\",\n \"acceptance_criteria\",\n \"design\",\n \"external_ref\",\n \"definition_of_ready\",\n \"order\",\n \"goal\",\n \"objective\",\n \"value\",\n \"impact\",\n \"outcome\",\n \"why_now\",\n \"parent\",\n \"reviewer\",\n \"risk\",\n \"confidence\",\n \"sprint\",\n \"release\",\n \"blocked_by\",\n \"blocked_reason\",\n \"unblock_note\",\n \"reporter\",\n \"severity\",\n \"environment\",\n \"repro_steps\",\n \"resolution\",\n \"expected_result\",\n \"actual_result\",\n \"affected_version\",\n \"fixed_version\",\n \"component\",\n \"regression\",\n \"customer_impact\",\n \"dependencies\",\n \"comments\",\n \"notes\",\n \"learnings\",\n \"files\",\n \"tests\",\n \"test_runs\",\n \"docs\",\n \"close_reason\",\n \"duplicate_of\",\n \"plan_mode\",\n \"plan_scope\",\n \"plan_harness\",\n \"plan_resume_context\",\n \"plan_validation\",\n \"plan_decisions\",\n \"plan_discoveries\",\n \"plan_steps\",\n];\n\ntype BuiltinGovernancePreset = Exclude<GovernancePreset, \"custom\">;\n\nexport const GOVERNANCE_PRESET_DEFAULTS: Record<BuiltinGovernancePreset, Omit<GovernanceSettings, \"preset\">> = {\n minimal: {\n ownership_enforcement: \"none\",\n create_mode_default: \"progressive\",\n close_validation_default: \"off\",\n require_close_reason: true,\n parent_reference: \"strict_error\",\n metadata_profile: \"core\",\n force_required_for_stale_lock: false,\n },\n default: {\n ownership_enforcement: \"warn\",\n create_mode_default: \"progressive\",\n close_validation_default: \"warn\",\n require_close_reason: true,\n parent_reference: \"strict_error\",\n metadata_profile: \"core\",\n force_required_for_stale_lock: true,\n },\n strict: {\n ownership_enforcement: \"strict\",\n create_mode_default: \"strict\",\n close_validation_default: \"strict\",\n require_close_reason: true,\n parent_reference: \"strict_error\",\n metadata_profile: \"strict\",\n force_required_for_stale_lock: true,\n },\n};\n\nexport const DEFAULT_VALIDATE_STALE_BLOCKER_REASON_PATTERNS = [\n \"no active blocker\",\n \"ready for planned execution sequencing\",\n \"work completed\",\n \"work is closed\",\n] as const;\n\nexport const DEFAULT_VALIDATE_CLOSURE_LIKE_METADATA_FIELD_PATTERNS = {\n blocked_reason: [\"no active blocker because work is closed\", \"work is closed\"],\n resolution: [\"closed with implementation evidence\", \"closed with verification evidence\", \"work completed and recorded\", \"work is closed\"],\n actual_result: [\"closed and recorded\", \"work completed\", \"work completed and recorded\"],\n} as const;\n\nfunction cloneOptionalArray<T>(values: readonly T[] | undefined): T[] | undefined {\n return values ? [...values] : undefined;\n}\n\nexport const SETTINGS_DEFAULTS: PmSettings = {\n version: 1,\n id_prefix: \"pm-\",\n author_default: \"\",\n item_format: \"toon\",\n locks: {\n ttl_seconds: 1800,\n },\n checkpoints: {\n retention_days: 14,\n },\n output: {\n default_format: \"toon\",\n },\n history: {\n missing_stream: \"auto_create\",\n compact_policy: {\n enabled: false,\n max_entries: 500,\n trigger: \"health_warn\",\n },\n },\n validation: {\n sprint_release_format: \"warn\",\n parent_reference: \"warn\",\n metadata_profile: \"core\",\n metadata_required_fields: [],\n lifecycle_stale_blocker_reason_patterns: [...DEFAULT_VALIDATE_STALE_BLOCKER_REASON_PATTERNS],\n lifecycle_closure_like_blocked_reason_patterns: [\n ...DEFAULT_VALIDATE_CLOSURE_LIKE_METADATA_FIELD_PATTERNS.blocked_reason,\n ],\n lifecycle_closure_like_resolution_patterns: [...DEFAULT_VALIDATE_CLOSURE_LIKE_METADATA_FIELD_PATTERNS.resolution],\n lifecycle_closure_like_actual_result_patterns: [\n ...DEFAULT_VALIDATE_CLOSURE_LIKE_METADATA_FIELD_PATTERNS.actual_result,\n ],\n estimate_defaults_by_type: {},\n },\n governance: {\n preset: \"minimal\",\n ...GOVERNANCE_PRESET_DEFAULTS.minimal,\n },\n workflow: {\n definition_of_done: [],\n },\n testing: {\n record_results_to_items: false,\n },\n telemetry: {\n enabled: true,\n first_run_prompt_completed: false,\n capture_level: \"redacted\",\n endpoint: \"https://pm-cli.unbrained.dev/v1/events\",\n installation_id: \"\",\n retention_days: 365,\n },\n agent_guidance: {\n prompt_completed: false,\n declined: false,\n declined_at: \"\",\n template_version: 1,\n last_checked_files: [],\n },\n item_types: {\n definitions: [],\n },\n schema: {\n version: 1,\n files: {\n types: \"schema/types.json\",\n statuses: \"schema/statuses.json\",\n fields: \"schema/fields.json\",\n workflows: \"schema/workflows.json\",\n },\n statuses: DEFAULT_STATUS_DEFINITIONS.map((definition) => ({\n ...definition,\n aliases: cloneOptionalArray(definition.aliases),\n roles: cloneOptionalArray(definition.roles),\n })),\n fields: [],\n workflow: { ...DEFAULT_WORKFLOW_DEFINITION },\n unknown_field_policy: \"allow\",\n },\n extensions: {\n enabled: [],\n disabled: [],\n policy: createDefaultExtensionGovernancePolicy(),\n },\n search: {\n score_threshold: 0,\n hybrid_semantic_weight: 0.7,\n max_results: 50,\n embedding_model: \"\",\n embedding_batch_size: 32,\n embedding_timeout_ms: 30_000,\n scanner_max_batch_retries: 3,\n provider: \"\",\n mutation_refresh_policy: \"semantic_configured\",\n query_expansion: {\n enabled: false,\n provider: \"\",\n },\n rerank: {\n enabled: false,\n model: \"\",\n top_k: 20,\n },\n },\n providers: {\n openai: {\n base_url: \"\",\n api_key: \"\",\n model: \"\",\n },\n ollama: {\n base_url: \"\",\n model: \"\",\n },\n },\n context: {\n default_depth: \"brief\",\n activity_limit: 10,\n stale_threshold_days: 7,\n sections: {\n hierarchy: true,\n activity: true,\n progress: true,\n recently_created: true,\n unparented: true,\n blockers: true,\n files: true,\n workload: true,\n staleness: true,\n tests: true,\n },\n },\n vector_store: {\n adapter: \"\",\n collection_name: \"pm_items\",\n qdrant: {\n url: \"\",\n api_key: \"\",\n },\n lancedb: {\n path: \"\",\n },\n },\n};\n\nexport const EMPTY_CANONICAL_DOCUMENT = {\n metadata: {},\n body: \"\",\n};\n\nexport const EXIT_CODE = {\n SUCCESS: 0,\n GENERIC_FAILURE: 1,\n USAGE: 2,\n NOT_FOUND: 3,\n CONFLICT: 4,\n DEPENDENCY_FAILED: 5,\n} as const;\n\n/**\n * Restricts telemetry error category values accepted by command, SDK, and storage contracts.\n */\nexport type TelemetryErrorCategory = \"usage\" | \"validation\" | \"conflict\" | \"runtime\" | \"unknown\";\n\nexport const TELEMETRY_ERROR_CATEGORY_BY_CODE: Readonly<Record<string, TelemetryErrorCategory>> = Object.freeze({\n unknown_command: \"usage\",\n unknown_option: \"usage\",\n missing_required_option: \"usage\",\n missing_required_argument: \"usage\",\n invalid_command_usage: \"usage\",\n linked_test_value_not_quoted: \"usage\",\n invalid_argument_value: \"validation\",\n health_findings: \"validation\",\n validation_findings: \"validation\",\n close_through_update: \"validation\",\n no_update_fields: \"validation\",\n unsupported_update_option: \"validation\",\n tracker_not_initialized: \"validation\",\n item_not_found: \"validation\",\n ownership_conflict: \"conflict\",\n lock_conflict: \"conflict\",\n terminal_state_conflict: \"conflict\",\n dependency_failed: \"runtime\",\n command_failed: \"runtime\",\n unknown_error: \"runtime\",\n});\n\n/**\n * Implements resolve telemetry error category for the public runtime surface of this module.\n */\nexport function resolveTelemetryErrorCategory(errorCode: string | undefined): TelemetryErrorCategory {\n const normalized = (errorCode ?? \"\").trim().toLowerCase();\n if (normalized.length === 0) {\n return \"unknown\";\n }\n const explicit = TELEMETRY_ERROR_CATEGORY_BY_CODE[normalized];\n if (typeof explicit === \"string\") {\n return explicit;\n }\n if (normalized.includes(\"conflict\") || normalized.includes(\"locked\")) {\n return \"conflict\";\n }\n if (normalized.startsWith(\"unknown_\") || normalized.startsWith(\"missing_required_\")) {\n return \"usage\";\n }\n if (normalized.startsWith(\"invalid_\") || normalized.endsWith(\"_not_found\") || normalized.includes(\"validation\")) {\n return \"validation\";\n }\n if (normalized.endsWith(\"_error\") || normalized.endsWith(\"_failed\")) {\n return \"runtime\";\n }\n return \"unknown\";\n}\n", "/**\n * @module core/store/paths\n *\n * Reads and writes tracker storage with format-aware helpers for Paths.\n */\nimport { statSync } from \"node:fs\";\nimport os from \"node:os\";\nimport path from \"node:path\";\nimport { PM_DIRNAME, SETTINGS_FILENAME, TYPE_TO_FOLDER } from \"../shared/constants.js\";\nimport type { ItemFormat, ItemType } from \"../../types/index.js\";\n\nexport const ITEM_FILE_EXTENSION_BY_FORMAT: Record<ItemFormat, \".md\" | \".toon\"> = {\n json_markdown: \".md\",\n toon: \".toon\",\n};\n\nconst ITEM_FORMAT_BY_EXTENSION = {\n \".md\": \"json_markdown\",\n \".toon\": \"toon\",\n} as const satisfies Record<string, ItemFormat>;\n\nexport const ITEM_FILE_EXTENSIONS: Array<keyof typeof ITEM_FORMAT_BY_EXTENSION> = [\".md\", \".toon\"];\n\nfunction pathExists(pathValue: string): boolean {\n try {\n statSync(pathValue);\n return true;\n } catch {\n return false;\n }\n}\n\nfunction discoverPmRootFromAncestors(cwd: string): string | undefined {\n let current = path.resolve(cwd);\n while (true) {\n const candidateRoot = path.join(current, PM_DIRNAME);\n const candidateSettingsPath = path.join(candidateRoot, SETTINGS_FILENAME);\n if (pathExists(candidateSettingsPath)) {\n return candidateRoot;\n }\n const parent = path.dirname(current);\n if (parent === current) {\n return undefined;\n }\n current = parent;\n }\n}\n\n/**\n * Implements resolve pm root for the public runtime surface of this module.\n */\nexport function resolvePmRoot(cwd: string, cliPath?: string): string {\n const envPath = process.env.PM_PATH;\n const explicitPath = cliPath?.trim() || envPath?.trim();\n if (explicitPath) {\n const resolved = path.resolve(cwd, explicitPath);\n // When an explicit --path/PM_PATH points at a project root that contains an\n // initialized `.agents/pm`, resolve into it. Without this, an agent passing\n // the directory where it ran `pm init` (which creates `<dir>/.agents/pm`)\n // hits a hard \"tracker not initialized\" dead-end, while cwd discovery walks\n // up to find the same `.agents/pm`. We only redirect when the path itself is\n // not already a tracker root, so `pm init --path <dir>` (which writes\n // `<dir>/settings.json` directly) and existing tracker roots keep working.\n if (!pathExists(getSettingsPath(resolved))) {\n const nestedRoot = path.join(resolved, PM_DIRNAME);\n if (pathExists(getSettingsPath(nestedRoot))) {\n return nestedRoot;\n }\n }\n return resolved;\n }\n const discoveredRoot = discoverPmRootFromAncestors(cwd);\n if (discoveredRoot) {\n return discoveredRoot;\n }\n const selected = PM_DIRNAME;\n return path.resolve(cwd, selected);\n}\n\n/**\n * Implements resolve global pm root for the public runtime surface of this module.\n */\nexport function resolveGlobalPmRoot(cwd: string): string {\n const envPath = process.env.PM_GLOBAL_PATH?.trim();\n const selected = envPath && envPath.length > 0 ? envPath : path.join(os.homedir(), \".pm-cli\");\n return path.resolve(cwd, selected);\n}\n\n/**\n * Implements get settings path for the public runtime surface of this module.\n */\nexport function getSettingsPath(pmRoot: string): string {\n return path.join(pmRoot, SETTINGS_FILENAME);\n}\n\nfunction deriveDefaultTypeFolder(type: string): string {\n const normalized = toSlugToken(type);\n if (normalized.length === 0) {\n return \"items\";\n }\n return normalized.endsWith(\"s\") ? normalized : `${normalized}s`;\n}\n\nfunction toSlugToken(value: string): string {\n const trimmed = value.trim().toLowerCase();\n let slug = \"\";\n let pendingDash = false;\n for (const character of trimmed) {\n const code = character.charCodeAt(0);\n const isAlpha = code >= 97 && code <= 122;\n const isDigit = code >= 48 && code <= 57;\n if (isAlpha || isDigit) {\n if (pendingDash && slug.length > 0) {\n slug += \"-\";\n }\n slug += character;\n pendingDash = false;\n continue;\n }\n if (slug.length > 0) {\n pendingDash = true;\n }\n }\n return slug;\n}\n\n/**\n * Implements get type dir path for the public runtime surface of this module.\n */\nexport function getTypeDirPath(pmRoot: string, type: ItemType, typeToFolder: Record<string, string> = TYPE_TO_FOLDER): string {\n const folder = typeToFolder[type] ?? deriveDefaultTypeFolder(type);\n return path.join(pmRoot, folder);\n}\n\n/**\n * Implements get item path for the public runtime surface of this module.\n */\nexport function getItemPath(\n pmRoot: string,\n type: ItemType,\n id: string,\n itemFormat: ItemFormat = \"toon\",\n typeToFolder: Record<string, string> = TYPE_TO_FOLDER,\n): string {\n return path.join(getTypeDirPath(pmRoot, type, typeToFolder), `${id}${ITEM_FILE_EXTENSION_BY_FORMAT[itemFormat]}`);\n}\n\n/**\n * Implements get item format from path for the public runtime surface of this module.\n */\nexport function getItemFormatFromPath(itemPath: string): ItemFormat | null {\n const normalizedItemPath = itemPath.replaceAll(\"\\\\\", \"/\");\n const extension = path.posix.extname(normalizedItemPath).toLowerCase() as keyof typeof ITEM_FORMAT_BY_EXTENSION;\n return ITEM_FORMAT_BY_EXTENSION[extension] ?? null;\n}\n\n/**\n * Implements get history path for the public runtime surface of this module.\n */\nexport function getHistoryPath(pmRoot: string, id: string): string {\n return path.join(pmRoot, \"history\", `${id}.jsonl`);\n}\n\n/**\n * Implements get lock path for the public runtime surface of this module.\n */\nexport function getLockPath(pmRoot: string, id: string): string {\n return path.join(pmRoot, \"locks\", `${id}.lock`);\n}\n\n/**\n * Implements get runtime path for the public runtime surface of this module.\n */\nexport function getRuntimePath(pmRoot: string): string {\n return path.join(pmRoot, \"runtime\");\n}\n\n/**\n * Implements get test runs path for the public runtime surface of this module.\n */\nexport function getTestRunsPath(pmRoot: string): string {\n return path.join(getRuntimePath(pmRoot), \"test-runs\");\n}\n\n/**\n * Implements get test runs records path for the public runtime surface of this module.\n */\nexport function getTestRunsRecordsPath(pmRoot: string): string {\n return path.join(getTestRunsPath(pmRoot), \"runs\");\n}\n\n/**\n * Implements get test run record path for the public runtime surface of this module.\n */\nexport function getTestRunRecordPath(pmRoot: string, runId: string): string {\n return path.join(getTestRunsRecordsPath(pmRoot), `${runId}.json`);\n}\n\n/**\n * Implements get test runs stdout path for the public runtime surface of this module.\n */\nexport function getTestRunsStdoutPath(pmRoot: string): string {\n return path.join(getTestRunsPath(pmRoot), \"stdout\");\n}\n\n/**\n * Implements get test runs stderr path for the public runtime surface of this module.\n */\nexport function getTestRunsStderrPath(pmRoot: string): string {\n return path.join(getTestRunsPath(pmRoot), \"stderr\");\n}\n\n/**\n * Implements get test run stdout path for the public runtime surface of this module.\n */\nexport function getTestRunStdoutPath(pmRoot: string, runId: string): string {\n return path.join(getTestRunsStdoutPath(pmRoot), `${runId}.log`);\n}\n\n/**\n * Implements get test run stderr path for the public runtime surface of this module.\n */\nexport function getTestRunStderrPath(pmRoot: string, runId: string): string {\n return path.join(getTestRunsStderrPath(pmRoot), `${runId}.log`);\n}\n\n/**\n * Implements get test runs results path for the public runtime surface of this module.\n */\nexport function getTestRunsResultsPath(pmRoot: string): string {\n return path.join(getTestRunsPath(pmRoot), \"results\");\n}\n\n/**\n * Implements get test run result path for the public runtime surface of this module.\n */\nexport function getTestRunResultPath(pmRoot: string, runId: string): string {\n return path.join(getTestRunsResultsPath(pmRoot), `${runId}.json`);\n}\n", "/**\n * Common primitive utility functions shared across core modules.\n *\n * These reduce duplication of trivial helpers like string-presence checks,\n * error message extraction, and numeric array guards that were previously\n * duplicated in providers.ts, vector-stores.ts, lock.ts, cache.ts, and\n * several CLI command modules.\n */\n\n/** Return a trimmed non-empty string, or `null` for non-string/blank input. */\nexport function toNonEmptyString(value: unknown): string | null {\n if (typeof value !== \"string\") {\n return null;\n }\n const normalized = value.trim();\n return normalized.length > 0 ? normalized : null;\n}\n\n/**\n * Implements to non empty string or undefined for the public runtime surface of this module.\n */\nexport function toNonEmptyStringOrUndefined(value: unknown): string | undefined {\n const result = toNonEmptyString(value);\n return result ?? undefined;\n}\n\n/**\n * Implements trim trailing slashes for the public runtime surface of this module.\n */\nexport function trimTrailingSlashes(value: string): string {\n return value.replaceAll(/\\/+$/g, \"\");\n}\n\n/**\n * Implements check whether finite number array for the public runtime surface of this module.\n */\nexport function isFiniteNumberArray(value: unknown): value is number[] {\n return Array.isArray(value) && value.every((entry) => typeof entry === \"number\" && Number.isFinite(entry));\n}\n\n/**\n * Implements to error message for the public runtime surface of this module.\n */\nexport function toErrorMessage(error: unknown): string {\n if (error instanceof Error) {\n const message = error.message.trim();\n return message.length > 0 ? message : error.name;\n }\n return String(error);\n}\n\n/**\n * Parse either a finite numeric literal or a non-empty numeric string.\n * Returns `null` for unsupported input types, empty strings, and non-finite\n * numeric values.\n */\nexport function coerceFiniteNumber(value: unknown): number | null {\n const parsed =\n typeof value === \"number\"\n ? value\n : typeof value === \"string\" && value.trim().length > 0\n ? Number(value.trim())\n : Number.NaN;\n return Number.isFinite(parsed) ? parsed : null;\n}\n\n/**\n * Implements coerce positive integer for the public runtime surface of this module.\n */\nexport function coercePositiveInteger(value: unknown): number | null {\n const parsed = coerceFiniteNumber(value);\n if (parsed === null || parsed <= 0 || !Number.isInteger(parsed)) {\n return null;\n }\n return parsed;\n}\n\n/**\n * Implements coerce number in range for the public runtime surface of this module.\n */\nexport function coerceNumberInRange(value: unknown, min: number, max: number): number | null {\n const parsed = coerceFiniteNumber(value);\n if (parsed === null || parsed < min || parsed > max) {\n return null;\n }\n return parsed;\n}\n\n/**\n * Narrow a value to a plain object, returning `null` for non-objects,\n * `null`, and arrays. Returns the original reference (no clone).\n *\n * Matches the historical `asRecord` in src/cli/main.ts.\n */\nexport function asRecordOrNull(value: unknown): Record<string, unknown> | null {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n return null;\n }\n return value as Record<string, unknown>;\n}\n\n/**\n * Narrow a value to a plain object, returning `null` only for non-objects and\n * `null` while accepting arrays (arrays are objects). Returns the original\n * reference (no clone).\n *\n * Matches the historical `asRecord` in src/core/extensions/loader.ts, which\n * intentionally omits the array guard.\n */\nexport function asRecordLoose(value: unknown): Record<string, unknown> | null {\n if (typeof value !== \"object\" || value === null) {\n return null;\n }\n return value as Record<string, unknown>;\n}\n\n/**\n * Narrow a value to a plain object, returning an empty object for non-objects,\n * `null`, and arrays. Returns a shallow clone of the source object.\n *\n * Matches the historical `asRecord` in src/mcp/server.ts.\n */\nexport function asRecordClone(value: unknown): Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value)\n ? ({ ...value } as Record<string, unknown>)\n : {};\n}\n", "/**\n * @module core/extensions/extension-registries\n *\n * Implements extension runtime contracts and governance for Extension Registries.\n */\nimport type {\n ExtensionHookRegistry,\n ExtensionCommandRegistry,\n ExtensionParserRegistry,\n ExtensionPreflightRegistry,\n ExtensionServiceRegistry,\n ExtensionRendererRegistry,\n ExtensionRegistrationRegistry,\n} from \"./extension-types.js\";\n\n/**\n * Implements create empty extension hook registry for the public runtime surface of this module.\n */\nexport function createEmptyExtensionHookRegistry(): ExtensionHookRegistry {\n return {\n beforeCommand: [],\n afterCommand: [],\n onWrite: [],\n onRead: [],\n onIndex: [],\n };\n}\n\n/**\n * Implements create empty extension command registry for the public runtime surface of this module.\n */\nexport function createEmptyExtensionCommandRegistry(): ExtensionCommandRegistry {\n return {\n overrides: [],\n handlers: [],\n };\n}\n\n/**\n * Implements create empty extension parser registry for the public runtime surface of this module.\n */\nexport function createEmptyExtensionParserRegistry(): ExtensionParserRegistry {\n return {\n overrides: [],\n };\n}\n\n/**\n * Implements create empty extension preflight registry for the public runtime surface of this module.\n */\nexport function createEmptyExtensionPreflightRegistry(): ExtensionPreflightRegistry {\n return {\n overrides: [],\n };\n}\n\n/**\n * Implements create empty extension service registry for the public runtime surface of this module.\n */\nexport function createEmptyExtensionServiceRegistry(): ExtensionServiceRegistry {\n return {\n overrides: [],\n };\n}\n\n/**\n * Implements create empty extension renderer registry for the public runtime surface of this module.\n */\nexport function createEmptyExtensionRendererRegistry(): ExtensionRendererRegistry {\n return {\n overrides: [],\n };\n}\n\n/**\n * Implements create empty extension registration registry for the public runtime surface of this module.\n */\nexport function createEmptyExtensionRegistrationRegistry(): ExtensionRegistrationRegistry {\n return {\n commands: [],\n flags: [],\n item_fields: [],\n item_types: [],\n migrations: [],\n importers: [],\n exporters: [],\n search_providers: [],\n vector_store_adapters: [],\n };\n}\n", "/**\n * @module core/extensions/extension-runtime-helpers\n *\n * Implements extension runtime contracts and governance for Extension Runtime Helpers.\n */\nimport type { GlobalOptions } from \"../shared/command-types.js\";\n\n/**\n * Implements normalize command name for the public runtime surface of this module.\n */\nexport function normalizeCommandName(command: string): string {\n return command\n .trim()\n .toLowerCase()\n .split(/\\s+/)\n .filter((part) => part.length > 0)\n .join(\" \");\n}\n\n/**\n * Implements default global options for the public runtime surface of this module.\n */\nexport function defaultGlobalOptions(): GlobalOptions {\n return {\n json: false,\n quiet: false,\n noExtensions: false,\n profile: false,\n };\n}\n\n/**\n * Implements clone command options snapshot for the public runtime surface of this module.\n */\nexport function cloneCommandOptionsSnapshot(options: Record<string, unknown> | undefined): Record<string, unknown> {\n return options ? cloneContextSnapshot(options) : {};\n}\n\n/**\n * Implements clone global options snapshot for the public runtime surface of this module.\n */\nexport function cloneGlobalOptionsSnapshot(options: GlobalOptions | undefined): GlobalOptions {\n return options ? cloneContextSnapshot(options) : defaultGlobalOptions();\n}\n\n/**\n * Implements clone context snapshot for the public runtime surface of this module.\n */\nexport function cloneContextSnapshot<T>(value: T): T {\n return structuredClone(value);\n}\n", "/**\n * @module core/extensions/extension-hook-runtime\n *\n * Implements extension runtime contracts and governance for Extension Hook Runtime.\n */\nimport {\n cloneCommandOptionsSnapshot,\n cloneContextSnapshot,\n cloneGlobalOptionsSnapshot,\n normalizeCommandName,\n} from \"./extension-runtime-helpers.js\";\nimport type {\n RegisteredExtensionHook,\n ExtensionHookRegistry,\n BeforeCommandHookContext,\n AfterCommandHookContext,\n OnWriteHookContext,\n OnReadHookContext,\n OnIndexHookContext,\n ExtensionCommandRegistry,\n CommandHandlerContext,\n CommandHandlerResult,\n ExtensionParserRegistry,\n ParserOverrideContext,\n ParserOverrideResult,\n ExtensionPreflightRegistry,\n PreflightOverrideContext,\n PreflightOverrideResult,\n PreflightRuntimeDecision,\n ExtensionServiceRegistry,\n ServiceOverrideContext,\n ServiceOverrideResult,\n CommandOverrideContext,\n CommandOverrideResult,\n ExtensionRendererRegistry,\n RendererOverrideContext,\n RendererOverrideResult,\n} from \"./extension-types.js\";\n\ntype HookName = keyof ExtensionHookRegistry;\n\nasync function executeRegisteredHooks<TContext>(\n entries: Array<RegisteredExtensionHook<(context: TContext) => Promise<void> | void>>,\n hookName: HookName,\n context: TContext,\n): Promise<string[]> {\n const warnings: string[] = [];\n for (const entry of entries) {\n try {\n await entry.run(cloneContextSnapshot(context));\n } catch {\n warnings.push(`extension_hook_failed:${entry.layer}:${entry.name}:${hookName}`);\n }\n }\n return warnings;\n}\n\n/**\n * Implements run before command hooks for the public runtime surface of this module.\n */\nexport async function runBeforeCommandHooks(\n hooks: ExtensionHookRegistry,\n context: BeforeCommandHookContext,\n): Promise<string[]> {\n return executeRegisteredHooks(hooks.beforeCommand, \"beforeCommand\", context);\n}\n\n/**\n * Implements run after command hooks for the public runtime surface of this module.\n */\nexport async function runAfterCommandHooks(\n hooks: ExtensionHookRegistry,\n context: AfterCommandHookContext,\n): Promise<string[]> {\n return executeRegisteredHooks(hooks.afterCommand, \"afterCommand\", context);\n}\n\n/**\n * Implements run on write hooks for the public runtime surface of this module.\n */\nexport async function runOnWriteHooks(hooks: ExtensionHookRegistry, context: OnWriteHookContext): Promise<string[]> {\n return executeRegisteredHooks(hooks.onWrite, \"onWrite\", context);\n}\n\n/**\n * Implements run on read hooks for the public runtime surface of this module.\n */\nexport async function runOnReadHooks(hooks: ExtensionHookRegistry, context: OnReadHookContext): Promise<string[]> {\n return executeRegisteredHooks(hooks.onRead, \"onRead\", context);\n}\n\n/**\n * Implements run on index hooks for the public runtime surface of this module.\n */\nexport async function runOnIndexHooks(hooks: ExtensionHookRegistry, context: OnIndexHookContext): Promise<string[]> {\n return executeRegisteredHooks(hooks.onIndex, \"onIndex\", context);\n}\n\n\n\n/**\n * Normalize an extension handler failure into a single-line, length-bounded\n * message so the real cause can be surfaced to the user/CI without leaking\n * multi-line stack noise or unbounded payloads.\n */\nfunction describeHandlerError(error: unknown): string {\n let raw = \"\";\n if (error instanceof Error && typeof error.message === \"string\") {\n raw = error.message;\n } else if (typeof error === \"string\") {\n raw = error;\n } else if (\n typeof error === \"object\" &&\n error !== null &&\n typeof (error as { message?: unknown }).message === \"string\"\n ) {\n // Extensions may throw plain/serialized objects that carry a message but do\n // not inherit from the base Error class.\n raw = (error as { message: string }).message;\n }\n const normalized = raw.replace(/\\s+/gu, \" \").trim();\n if (normalized.length === 0) {\n return \"\";\n }\n const maxLength = 300;\n return normalized.length > maxLength ? `${normalized.slice(0, maxLength - 1)}…` : normalized;\n}\n\n/**\n * Implements run command handler for the public runtime surface of this module.\n */\nexport async function runCommandHandler(\n commands: ExtensionCommandRegistry,\n context: CommandHandlerContext,\n): Promise<CommandHandlerResult> {\n const command = normalizeCommandName(context.command);\n if (command.length === 0) {\n return {\n handled: false,\n result: null,\n warnings: [],\n };\n }\n\n const matched = [...commands.handlers].reverse().find((entry) => entry.command === command);\n if (!matched) {\n return {\n handled: false,\n result: null,\n warnings: [],\n };\n }\n\n try {\n const result = await matched.run({\n command,\n args: cloneContextSnapshot(context.args),\n options: cloneContextSnapshot(context.options),\n global: cloneContextSnapshot(context.global),\n pm_root: context.pm_root,\n });\n return {\n handled: true,\n result,\n warnings: [],\n };\n } catch (error: unknown) {\n const exitCode =\n typeof error === \"object\" && error !== null && \"exitCode\" in error\n ? (error as { exitCode?: unknown }).exitCode\n : undefined;\n if (typeof exitCode === \"number\" && Number.isFinite(exitCode)) {\n throw error;\n }\n return {\n handled: false,\n result: null,\n warnings: [`extension_command_handler_failed:${matched.layer}:${matched.name}:${matched.command}`],\n errorMessage: describeHandlerError(error),\n };\n }\n}\n\n\n/**\n * Implements run parser override for the public runtime surface of this module.\n */\nexport async function runParserOverride(\n parsers: ExtensionParserRegistry,\n context: ParserOverrideContext,\n): Promise<ParserOverrideResult> {\n const command = normalizeCommandName(context.command);\n if (command.length === 0) {\n return {\n overridden: false,\n context: {\n command,\n args: cloneContextSnapshot(context.args),\n options: cloneCommandOptionsSnapshot(context.options),\n global: cloneGlobalOptionsSnapshot(context.global),\n pm_root: context.pm_root,\n },\n warnings: [],\n };\n }\n\n const matched = [...parsers.overrides].reverse().find((entry) => entry.command === command);\n if (!matched) {\n return {\n overridden: false,\n context: {\n command,\n args: cloneContextSnapshot(context.args),\n options: cloneCommandOptionsSnapshot(context.options),\n global: cloneGlobalOptionsSnapshot(context.global),\n pm_root: context.pm_root,\n },\n warnings: [],\n };\n }\n\n try {\n const delta = (await Promise.resolve(\n matched.run({\n command,\n args: cloneContextSnapshot(context.args),\n options: cloneCommandOptionsSnapshot(context.options),\n global: cloneGlobalOptionsSnapshot(context.global),\n pm_root: context.pm_root,\n }),\n )) ?? {};\n const nextArgs = Array.isArray(delta.args) ? cloneContextSnapshot(delta.args) : cloneContextSnapshot(context.args);\n const nextOptions = delta.options ? cloneCommandOptionsSnapshot(delta.options) : cloneCommandOptionsSnapshot(context.options);\n const nextGlobal = delta.global ? cloneGlobalOptionsSnapshot(delta.global) : cloneGlobalOptionsSnapshot(context.global);\n return {\n overridden: true,\n context: {\n command,\n args: nextArgs,\n options: nextOptions,\n global: nextGlobal,\n pm_root: context.pm_root,\n },\n warnings: [],\n };\n } catch {\n return {\n overridden: false,\n context: {\n command,\n args: cloneContextSnapshot(context.args),\n options: cloneCommandOptionsSnapshot(context.options),\n global: cloneGlobalOptionsSnapshot(context.global),\n pm_root: context.pm_root,\n },\n warnings: [`extension_parser_override_failed:${matched.layer}:${matched.name}:${matched.command}`],\n };\n }\n}\n\n\n/**\n * Implements run preflight override for the public runtime surface of this module.\n */\nexport async function runPreflightOverride(\n preflight: ExtensionPreflightRegistry,\n context: PreflightOverrideContext,\n): Promise<PreflightOverrideResult> {\n const matched = [...preflight.overrides].reverse()[0];\n const baseContext: CommandHandlerContext = {\n command: normalizeCommandName(context.command),\n args: cloneContextSnapshot(context.args),\n options: cloneCommandOptionsSnapshot(context.options),\n global: cloneGlobalOptionsSnapshot(context.global),\n pm_root: context.pm_root,\n };\n const baseDecision: PreflightRuntimeDecision = cloneContextSnapshot(context.decision);\n if (!matched) {\n return {\n overridden: false,\n context: baseContext,\n decision: baseDecision,\n warnings: [],\n };\n }\n\n try {\n const delta = (await Promise.resolve(\n matched.run({\n command: baseContext.command,\n args: cloneContextSnapshot(baseContext.args),\n options: cloneCommandOptionsSnapshot(baseContext.options),\n global: cloneGlobalOptionsSnapshot(baseContext.global),\n pm_root: baseContext.pm_root,\n decision: cloneContextSnapshot(baseDecision),\n }),\n )) ?? {};\n const nextContext: CommandHandlerContext = {\n command: baseContext.command,\n args: Array.isArray(delta.args) ? cloneContextSnapshot(delta.args) : baseContext.args,\n options: delta.options ? cloneCommandOptionsSnapshot(delta.options) : baseContext.options,\n global: delta.global ? cloneGlobalOptionsSnapshot(delta.global) : baseContext.global,\n pm_root: baseContext.pm_root,\n };\n const nextDecision: PreflightRuntimeDecision = {\n enforce_item_format_gate:\n typeof delta.enforce_item_format_gate === \"boolean\"\n ? delta.enforce_item_format_gate\n : baseDecision.enforce_item_format_gate,\n run_preflight_item_format_sync:\n typeof delta.run_preflight_item_format_sync === \"boolean\"\n ? delta.run_preflight_item_format_sync\n : baseDecision.run_preflight_item_format_sync,\n run_extension_migrations:\n typeof delta.run_extension_migrations === \"boolean\"\n ? delta.run_extension_migrations\n : baseDecision.run_extension_migrations,\n enforce_mandatory_migration_gate:\n typeof delta.enforce_mandatory_migration_gate === \"boolean\"\n ? delta.enforce_mandatory_migration_gate\n : baseDecision.enforce_mandatory_migration_gate,\n };\n return {\n overridden: true,\n context: nextContext,\n decision: nextDecision,\n warnings: [],\n };\n } catch {\n return {\n overridden: false,\n context: baseContext,\n decision: baseDecision,\n warnings: [`extension_preflight_override_failed:${matched.layer}:${matched.name}`],\n };\n }\n}\n\n\nfunction resolveDefaultServiceResult(context: ServiceOverrideContext): ServiceOverrideResult {\n return {\n handled: false,\n result: context.payload,\n warnings: [],\n };\n}\n\n/**\n * Implements run service override sync for the public runtime surface of this module.\n */\nexport function runServiceOverrideSync(\n services: ExtensionServiceRegistry,\n context: ServiceOverrideContext,\n): ServiceOverrideResult {\n const matches = [...services.overrides].reverse().filter((entry) => entry.service === context.service);\n if (matches.length === 0) {\n return resolveDefaultServiceResult(context);\n }\n\n const warnings: string[] = [];\n for (const matched of matches) {\n try {\n const serviceContext = {\n service: context.service,\n command: context.command ? normalizeCommandName(context.command) : undefined,\n args: context.args ? cloneContextSnapshot(context.args) : undefined,\n options: context.options ? cloneCommandOptionsSnapshot(context.options) : undefined,\n global: context.global ? cloneGlobalOptionsSnapshot(context.global) : undefined,\n pm_root: context.pm_root,\n payload: cloneContextSnapshot(context.payload),\n };\n const result = matched.run(serviceContext);\n if (result instanceof Promise) {\n warnings.push(`extension_service_override_async_unsupported:${matched.layer}:${matched.name}:${matched.service}`);\n continue;\n }\n if (context.service === \"output_format\" && (result === null || result === undefined || result === serviceContext.payload)) {\n continue;\n }\n return {\n handled: true,\n result,\n warnings,\n };\n } catch {\n warnings.push(`extension_service_override_failed:${matched.layer}:${matched.name}:${matched.service}`);\n }\n }\n return {\n handled: false,\n result: context.payload,\n warnings,\n };\n}\n\n/**\n * Implements run service override for the public runtime surface of this module.\n */\nexport async function runServiceOverride(\n services: ExtensionServiceRegistry,\n context: ServiceOverrideContext,\n): Promise<ServiceOverrideResult> {\n const matches = [...services.overrides].reverse().filter((entry) => entry.service === context.service);\n if (matches.length === 0) {\n return resolveDefaultServiceResult(context);\n }\n\n const warnings: string[] = [];\n for (const matched of matches) {\n try {\n const serviceContext = {\n service: context.service,\n command: context.command ? normalizeCommandName(context.command) : undefined,\n args: context.args ? cloneContextSnapshot(context.args) : undefined,\n options: context.options ? cloneCommandOptionsSnapshot(context.options) : undefined,\n global: context.global ? cloneGlobalOptionsSnapshot(context.global) : undefined,\n pm_root: context.pm_root,\n payload: cloneContextSnapshot(context.payload),\n };\n const result = await Promise.resolve(matched.run(serviceContext));\n if (context.service === \"output_format\" && (result === null || result === undefined || result === serviceContext.payload)) {\n continue;\n }\n return {\n handled: true,\n result,\n warnings,\n };\n } catch {\n warnings.push(`extension_service_override_failed:${matched.layer}:${matched.name}:${matched.service}`);\n }\n }\n return {\n handled: false,\n result: context.payload,\n warnings,\n };\n}\n\n/**\n * Implements run command override for the public runtime surface of this module.\n */\nexport function runCommandOverride(\n commands: ExtensionCommandRegistry,\n context: CommandOverrideContext,\n): CommandOverrideResult {\n const command = normalizeCommandName(context.command);\n if (command.length === 0) {\n return {\n overridden: false,\n result: context.result,\n warnings: [],\n };\n }\n\n const matched = [...commands.overrides].reverse().find((entry) => entry.command === command);\n if (!matched) {\n return {\n overridden: false,\n result: context.result,\n warnings: [],\n };\n }\n\n try {\n const overrideOptions = cloneCommandOptionsSnapshot(context.options);\n const overrideGlobal = cloneGlobalOptionsSnapshot(context.global);\n const overrideResult = matched.run({\n command,\n args: cloneContextSnapshot(context.args),\n options: overrideOptions,\n global: overrideGlobal,\n pm_root: context.pm_root,\n result: cloneContextSnapshot(context.result),\n });\n if (overrideResult instanceof Promise) {\n return {\n overridden: false,\n result: context.result,\n warnings: [`extension_command_override_async_unsupported:${matched.layer}:${matched.name}:${matched.command}`],\n };\n }\n return {\n overridden: true,\n result: overrideResult,\n warnings: [],\n };\n } catch {\n return {\n overridden: false,\n result: context.result,\n warnings: [`extension_command_override_failed:${matched.layer}:${matched.name}:${matched.command}`],\n };\n }\n}\n\n\n/**\n * Implements run renderer override for the public runtime surface of this module.\n */\nexport function runRendererOverride(\n renderers: ExtensionRendererRegistry,\n context: RendererOverrideContext,\n): RendererOverrideResult {\n const matched = [...renderers.overrides].reverse().find((entry) => entry.format === context.format);\n if (!matched) {\n return {\n overridden: false,\n rendered: null,\n warnings: [],\n };\n }\n\n try {\n const rendererCommand = typeof context.command === \"string\" ? normalizeCommandName(context.command) : \"\";\n const rendererArgs = Array.isArray(context.args) ? cloneContextSnapshot(context.args) : [];\n const rendererOptions = cloneCommandOptionsSnapshot(context.options);\n const rendererGlobal = cloneGlobalOptionsSnapshot(context.global);\n const rendererPmRoot = typeof context.pm_root === \"string\" ? context.pm_root : \"\";\n const rendered = matched.run({\n format: context.format,\n command: rendererCommand,\n args: rendererArgs,\n options: rendererOptions,\n global: rendererGlobal,\n pm_root: rendererPmRoot,\n result: cloneContextSnapshot(context.result),\n });\n if (rendered === null || rendered === undefined) {\n return {\n overridden: false,\n rendered: null,\n warnings: [],\n };\n }\n if (typeof rendered !== \"string\") {\n return {\n overridden: false,\n rendered: null,\n warnings: [`extension_renderer_invalid_result:${matched.layer}:${matched.name}:${matched.format}`],\n };\n }\n return {\n overridden: true,\n rendered,\n warnings: [],\n };\n } catch {\n return {\n overridden: false,\n rendered: null,\n warnings: [`extension_renderer_failed:${matched.layer}:${matched.name}:${matched.format}`],\n };\n }\n}\n", "/**\n * @module core/extensions/loader\n *\n * Implements extension runtime contracts and governance for Loader.\n */\nimport fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport { pathExists } from \"../fs/fs-utils.js\";\nimport { isPathWithinDirectory } from \"../fs/path-utils.js\";\nimport { resolvePmPackageRootFromModule } from \"../packages/root.js\";\nimport { resolveGlobalPmRoot } from \"../store/paths.js\";\nimport type { GlobalOptions } from \"../shared/command-types.js\";\nimport { asRecordLoose } from \"../shared/primitives.js\";\nimport { flattenFlagListValue, isFlagDefaultValueCoercible, resolveFlagValueKind } from \"./flag-value-types.js\";\nimport { KNOWN_ITEM_FIELD_TYPES, normalizeItemFieldType, suggestKnownItemFieldType } from \"./item-field-types.js\";\nimport type { PmSettings } from \"../../types/index.js\";\n// Cohesive helper groups now live in sibling modules. They are imported for the\n// discovery/activation code that stays here and re-exported below so existing\n// import sites (sdk/index.ts, commands/extension.ts, health.ts, tests, …) keep\n// importing everything from \"./loader.js\" unchanged.\nimport {\n normalizeNames,\n isKnownExtensionCapability,\n collectUnknownExtensionCapabilities,\n resolveLegacyExtensionCapabilityAlias,\n normalizeManifestCapabilities,\n suggestKnownExtensionCapability,\n formatUnknownExtensionCapabilityWarning,\n formatLegacyExtensionCapabilityAliasWarning,\n} from \"./extension-capability-aliases.js\";\nimport {\n normalizeExtensionPolicy,\n serializeExtensionPolicy,\n hydrateExtensionPolicy,\n normalizePolicySandboxProfile,\n evaluateExtensionPolicyForExtension,\n evaluateExtensionPolicyForCapability,\n evaluateExtensionPolicyForRegistration,\n type NormalizedExtensionPolicy,\n type PolicyExtensionRef,\n} from \"./extension-policy.js\";\nimport {\n createEmptyExtensionHookRegistry,\n createEmptyExtensionCommandRegistry,\n createEmptyExtensionParserRegistry,\n createEmptyExtensionPreflightRegistry,\n createEmptyExtensionServiceRegistry,\n createEmptyExtensionRendererRegistry,\n createEmptyExtensionRegistrationRegistry,\n} from \"./extension-registries.js\";\nimport {\n normalizeCommandName,\n cloneContextSnapshot,\n cloneCommandOptionsSnapshot,\n cloneGlobalOptionsSnapshot,\n} from \"./extension-runtime-helpers.js\";\nexport {\n parseUnknownExtensionCapabilityWarning,\n parseLegacyExtensionCapabilityAliasWarning,\n} from \"./extension-capability-aliases.js\";\nexport {\n createEmptyExtensionHookRegistry,\n createEmptyExtensionCommandRegistry,\n createEmptyExtensionParserRegistry,\n createEmptyExtensionPreflightRegistry,\n createEmptyExtensionServiceRegistry,\n createEmptyExtensionRendererRegistry,\n createEmptyExtensionRegistrationRegistry,\n} from \"./extension-registries.js\";\nexport {\n runBeforeCommandHooks,\n runAfterCommandHooks,\n runOnWriteHooks,\n runOnReadHooks,\n runOnIndexHooks,\n runCommandHandler,\n runParserOverride,\n runPreflightOverride,\n runServiceOverrideSync,\n runServiceOverride,\n runCommandOverride,\n runRendererOverride,\n} from \"./extension-hook-runtime.js\";\nimport {\n KNOWN_EXTENSION_CAPABILITIES,\n KNOWN_EXTENSION_SERVICE_NAMES,\n createDefaultExtensionGovernancePolicy,\n type ExtensionDeactivationFailure,\n type ExtensionDeactivationOptions,\n type ExtensionDeactivationResult,\n type ExtensionSelfIdentity,\n type ExtensionCapability,\n type ExtensionPolicyMode,\n type ExtensionPolicySurface,\n type ExtensionSandboxProfile,\n type ExtensionGovernancePolicy,\n type ExtensionTrustMode,\n type PmMaxVersionExceededMode,\n type ExtensionLayer,\n type ExtensionStatus,\n type ExtensionManifest,\n type ExtensionManifestEngines,\n type ExtensionDiagnostic,\n type EffectiveExtension,\n type ExtensionDiscoveryResult,\n type LoadedExtension,\n type FailedExtensionLoad,\n type ExtensionLoadResult,\n type BeforeCommandHookContext,\n type AfterCommandHookContext,\n type OnWriteHookContext,\n type OnReadHookContext,\n type OnIndexHookContext,\n type BeforeCommandHook,\n type AfterCommandHook,\n type OnWriteHook,\n type OnReadHook,\n type OnIndexHook,\n type OutputRendererFormat,\n type CommandOverride,\n type RendererOverride,\n type CommandHandler,\n type ParserOverride,\n type PreflightOverride,\n type ServiceOverride,\n type ExtensionHookRegistry,\n type CommandOverrideContext,\n type RendererOverrideContext,\n type CommandHandlerContext,\n type ParserOverrideContext,\n type ParserOverrideDelta,\n type PreflightOverrideContext,\n type PreflightRuntimeDecision,\n type PreflightOverrideDelta,\n type ExtensionServiceName,\n type ServiceOverrideContext,\n type ExtensionCommandArgumentDefinition,\n type CommandDefinition,\n type FlagValueType,\n type FlagDefinition,\n type SchemaFieldDefinition,\n type SchemaItemTypeCommandOptionPolicyDefinition,\n type SchemaItemTypeOptionDefinition,\n type SchemaItemTypeDefinition,\n type SchemaMigrationRunContext,\n type SchemaMigrationRunner,\n type SchemaMigrationDefinition,\n type ImportExportContext,\n type ImportExportRegistrationOptions,\n type Importer,\n type Exporter,\n type ExtensionSearchMode,\n type SearchProviderQueryContext,\n type SearchProviderHit,\n type SearchProviderQueryResult,\n type SearchProviderEmbedBatchContext,\n type SearchProviderEmbedContext,\n type SearchProviderDefinition,\n type VectorStoreQueryHit,\n type VectorStoreQueryContext,\n type VectorStoreUpsertPoint,\n type VectorStoreUpsertContext,\n type VectorStoreDeleteContext,\n type VectorStoreAdapterDefinition,\n type RegisteredExtensionCommandOverride,\n type RegisteredExtensionCommandHandler,\n type RegisteredExtensionParserOverride,\n type RegisteredExtensionPreflightOverride,\n type RegisteredExtensionServiceOverride,\n type RegisteredExtensionRendererOverride,\n type ExtensionCommandRegistry,\n type ExtensionParserRegistry,\n type ExtensionPreflightRegistry,\n type ExtensionServiceRegistry,\n type ExtensionRendererRegistry,\n type RegisteredExtensionFlagDefinitions,\n type RegisteredExtensionCommandDefinition,\n type RegisteredExtensionSchemaFieldDefinitions,\n type RegisteredExtensionSchemaItemTypeDefinitions,\n type RegisteredExtensionSchemaMigrationDefinition,\n type RegisteredExtensionImporter,\n type RegisteredExtensionExporter,\n type RegisteredExtensionSearchProvider,\n type RegisteredExtensionVectorStoreAdapter,\n type ExtensionRegistrationRegistry,\n type ExtensionRegistrationCounts,\n type ExtensionApi,\n type FailedExtensionActivation,\n type ExtensionActivationFailureTrace,\n type ExtensionActivationResult,\n type ExtensionCandidate,\n type ExtensionLayerScanResult,\n type ScannedExtensionDirectory,\n type LegacyExtensionCapabilityAliasMapping,\n type DiscoverExtensionsOptions,\n type ActivatableExtension,\n type ServiceOverrideResult,\n type CommandOverrideResult,\n type CommandHandlerResult,\n type ParserOverrideResult,\n type PreflightOverrideResult,\n type RendererOverrideResult,\n type UnknownExtensionCapabilityWarningDetails,\n type RegisteredExtensionHook,\n} from \"./extension-types.js\";\nexport * from \"./extension-types.js\";\n\nconst DEFAULT_EXTENSION_PRIORITY = 100;\nlet currentPmCliVersionPromise: Promise<string | null> | null = null;\n\n/* Types now in extension-types.ts - re-exported via `export * from \"./extension-types.js\"` above */\n\nconst DEFAULT_EXTENSION_POLICY: ExtensionGovernancePolicy = Object.freeze(createDefaultExtensionGovernancePolicy());\n\nlet extensionReloadEpoch = 0;\n\n/**\n * Implements next extension reload token for the public runtime surface of this module.\n */\nexport function nextExtensionReloadToken(seed = Date.now()): string {\n extensionReloadEpoch += 1;\n return `${extensionReloadEpoch}-${seed}`;\n}\n\nfunction parseOptionalManifestString(candidate: Record<string, unknown>, field: string): string | null | undefined {\n const value = candidate[field];\n if (value === undefined || value === null) {\n return undefined;\n }\n if (typeof value !== \"string\" || value.trim().length === 0) {\n return null;\n }\n return value.trim();\n}\n\nfunction parseManifestEngines(value: unknown): ExtensionManifestEngines | null | undefined {\n if (value === undefined || value === null) {\n return undefined;\n }\n const enginesRecord = asRecordLoose(value);\n if (!enginesRecord) {\n return null;\n }\n const engines: ExtensionManifestEngines = {};\n for (const key of Object.keys(enginesRecord).sort((left, right) => left.localeCompare(right))) {\n if (key.trim().length === 0) {\n return null;\n }\n const engineValue = enginesRecord[key];\n if (typeof engineValue !== \"string\" || engineValue.trim().length === 0) {\n return null;\n }\n engines[key.trim()] = engineValue.trim();\n }\n return Object.keys(engines).length > 0 ? engines : undefined;\n}\n\nfunction parseManifest(raw: unknown): ExtensionManifest | null {\n if (typeof raw !== \"object\" || raw === null) {\n return null;\n }\n\n const candidate = raw as Record<string, unknown>;\n if (typeof candidate.name !== \"string\" || candidate.name.trim().length === 0) {\n return null;\n }\n if (typeof candidate.version !== \"string\" || candidate.version.trim().length === 0) {\n return null;\n }\n if (typeof candidate.entry !== \"string\" || candidate.entry.trim().length === 0) {\n return null;\n }\n\n let priority = DEFAULT_EXTENSION_PRIORITY;\n if (\"priority\" in candidate && candidate.priority !== undefined && candidate.priority !== null) {\n if (typeof candidate.priority !== \"number\" || !Number.isInteger(candidate.priority)) {\n return null;\n }\n priority = candidate.priority;\n }\n\n let manifestVersion: number | undefined;\n if (\"manifest_version\" in candidate && candidate.manifest_version !== undefined && candidate.manifest_version !== null) {\n if (typeof candidate.manifest_version !== \"number\" || !Number.isInteger(candidate.manifest_version)) {\n return null;\n }\n manifestVersion = candidate.manifest_version;\n }\n\n const pmMinVersion = parseOptionalManifestString(candidate, \"pm_min_version\");\n if (pmMinVersion === null) {\n return null;\n }\n\n const pmMaxVersion = parseOptionalManifestString(candidate, \"pm_max_version\");\n if (pmMaxVersion === null) {\n return null;\n }\n\n const engines = parseManifestEngines(candidate.engines);\n if (engines === null) {\n return null;\n }\n\n let trusted: boolean | undefined;\n if (\"trusted\" in candidate && candidate.trusted !== undefined && candidate.trusted !== null) {\n if (typeof candidate.trusted !== \"boolean\") {\n return null;\n }\n trusted = candidate.trusted;\n }\n\n let sandboxProfile: ExtensionSandboxProfile | undefined;\n if (\"sandbox_profile\" in candidate && candidate.sandbox_profile !== undefined && candidate.sandbox_profile !== null) {\n if (typeof candidate.sandbox_profile !== \"string\") {\n return null;\n }\n const normalizedProfile = normalizePolicySandboxProfile(candidate.sandbox_profile);\n if (normalizedProfile !== candidate.sandbox_profile.trim().toLowerCase()) {\n return null;\n }\n sandboxProfile = normalizedProfile;\n }\n\n let provenance: ExtensionManifest[\"provenance\"] | undefined;\n if (\"provenance\" in candidate && candidate.provenance !== undefined && candidate.provenance !== null) {\n const provenanceRecord = asRecordLoose(candidate.provenance);\n if (!provenanceRecord) {\n return null;\n }\n const source =\n typeof provenanceRecord.source === \"string\" && provenanceRecord.source.trim().length > 0\n ? provenanceRecord.source.trim()\n : undefined;\n const signature =\n typeof provenanceRecord.signature === \"string\" && provenanceRecord.signature.trim().length > 0\n ? provenanceRecord.signature.trim()\n : undefined;\n const attestation =\n typeof provenanceRecord.attestation === \"string\" && provenanceRecord.attestation.trim().length > 0\n ? provenanceRecord.attestation.trim()\n : undefined;\n const verified =\n provenanceRecord.verified === undefined || provenanceRecord.verified === null\n ? undefined\n : typeof provenanceRecord.verified === \"boolean\"\n ? provenanceRecord.verified\n : null;\n if (verified === null) {\n return null;\n }\n provenance = {\n ...(source ? { source } : {}),\n ...(signature ? { signature } : {}),\n ...(attestation ? { attestation } : {}),\n ...(typeof verified === \"boolean\" ? { verified } : {}),\n };\n }\n\n let permissions: ExtensionManifest[\"permissions\"] | undefined;\n if (\"permissions\" in candidate && candidate.permissions !== undefined && candidate.permissions !== null) {\n const permissionsRecord = asRecordLoose(candidate.permissions);\n if (!permissionsRecord) {\n return null;\n }\n const parseOptionalBoolean = (value: unknown): boolean | undefined | null => {\n if (value === undefined || value === null) {\n return undefined;\n }\n if (typeof value !== \"boolean\") {\n return null;\n }\n return value;\n };\n const fsRead = parseOptionalBoolean(permissionsRecord.fs_read);\n const fsWrite = parseOptionalBoolean(permissionsRecord.fs_write);\n const network = parseOptionalBoolean(permissionsRecord.network);\n const envRead = parseOptionalBoolean(permissionsRecord.env_read);\n const envWrite = parseOptionalBoolean(permissionsRecord.env_write);\n const processSpawn = parseOptionalBoolean(permissionsRecord.process_spawn);\n if ([fsRead, fsWrite, network, envRead, envWrite, processSpawn].includes(null)) {\n return null;\n }\n permissions = {\n ...(typeof fsRead === \"boolean\" ? { fs_read: fsRead } : {}),\n ...(typeof fsWrite === \"boolean\" ? { fs_write: fsWrite } : {}),\n ...(typeof network === \"boolean\" ? { network } : {}),\n ...(typeof envRead === \"boolean\" ? { env_read: envRead } : {}),\n ...(typeof envWrite === \"boolean\" ? { env_write: envWrite } : {}),\n ...(typeof processSpawn === \"boolean\" ? { process_spawn: processSpawn } : {}),\n };\n }\n\n let capabilities: string[] = [];\n let legacyCapabilityAliases: LegacyExtensionCapabilityAliasMapping[] = [];\n if (\"capabilities\" in candidate && candidate.capabilities !== undefined && candidate.capabilities !== null) {\n if (!Array.isArray(candidate.capabilities) || candidate.capabilities.some((value) => typeof value !== \"string\")) {\n return null;\n }\n const normalizedCapabilities = normalizeManifestCapabilities(candidate.capabilities as string[]);\n capabilities = normalizedCapabilities.capabilities;\n legacyCapabilityAliases = normalizedCapabilities.legacy_aliases;\n }\n\n let activation: ExtensionManifest[\"activation\"] | undefined;\n if (\"activation\" in candidate && candidate.activation !== undefined && candidate.activation !== null) {\n const activationRecord = asRecordLoose(candidate.activation);\n if (!activationRecord) {\n return null;\n }\n const rawCommands = activationRecord.commands;\n if (rawCommands !== undefined && rawCommands !== null) {\n if (!Array.isArray(rawCommands) || rawCommands.some((value) => typeof value !== \"string\")) {\n return null;\n }\n const commands = [\n ...new Set(\n rawCommands\n .map((value) => normalizeCommandName(value))\n .filter((value) => value.length > 0),\n ),\n ].sort((left, right) => left.localeCompare(right));\n if (commands.length > 0) {\n activation = {\n commands,\n };\n }\n }\n }\n\n return {\n name: candidate.name.trim(),\n version: candidate.version.trim(),\n entry: candidate.entry.trim(),\n priority,\n manifest_version: manifestVersion,\n pm_min_version: pmMinVersion,\n pm_max_version: pmMaxVersion,\n engines,\n trusted,\n provenance,\n sandbox_profile: sandboxProfile,\n permissions,\n activation,\n capabilities,\n legacy_capability_aliases: legacyCapabilityAliases.length > 0 ? legacyCapabilityAliases : undefined,\n };\n}\n\nfunction shouldEnable(name: string, enabled: Set<string>, disabled: Set<string>): boolean {\n if (disabled.has(name)) {\n return false;\n }\n if (enabled.size === 0) {\n return true;\n }\n return enabled.has(name);\n}\n\nasync function isCanonicalPathWithinDirectory(directory: string, targetPath: string): Promise<boolean> {\n const [resolvedDirectory, resolvedTargetPath] = await Promise.all([fs.realpath(directory), fs.realpath(targetPath)]);\n return isPathWithinDirectory(resolvedDirectory, resolvedTargetPath);\n}\n\n/**\n * Implements resolve extension roots for the public runtime surface of this module.\n */\nexport function resolveExtensionRoots(pmRoot: string, cwd = process.cwd()): { global: string; project: string } {\n return {\n global: path.join(resolveGlobalPmRoot(cwd), \"extensions\"),\n project: path.join(pmRoot, \"extensions\"),\n };\n}\n\nasync function listExtensionDirectories(extensionsRoot: string): Promise<string[]> {\n try {\n const entries = await fs.readdir(extensionsRoot, { withFileTypes: true });\n return entries\n .filter((entry) => entry.isDirectory())\n .map((entry) => entry.name)\n .sort((a, b) => a.localeCompare(b));\n } catch {\n return [];\n }\n}\n\nfunction summarizeCandidate(candidate: ExtensionCandidate): EffectiveExtension {\n const summary: EffectiveExtension = {\n layer: candidate.layer,\n directory: candidate.directory,\n manifest_path: candidate.manifest_path,\n name: candidate.manifest.name,\n version: candidate.manifest.version,\n entry: candidate.manifest.entry,\n priority: candidate.manifest.priority,\n entry_path: candidate.entry_path,\n manifest_version: candidate.manifest.manifest_version,\n pm_min_version: candidate.manifest.pm_min_version,\n pm_max_version: candidate.manifest.pm_max_version,\n engines: candidate.manifest.engines,\n trusted: candidate.manifest.trusted,\n provenance: candidate.manifest.provenance,\n sandbox_profile: candidate.manifest.sandbox_profile,\n permissions: candidate.manifest.permissions,\n capabilities: [...candidate.manifest.capabilities],\n activation: candidate.manifest.activation\n ? {\n commands: [...(candidate.manifest.activation.commands as string[])],\n }\n : undefined,\n };\n if (candidate.source_package) {\n summary.source_package = candidate.source_package;\n }\n return summary;\n}\n\nfunction normalizeManagedSourcePackage(value: unknown): string | undefined {\n return typeof value === \"string\" && value.trim().length > 0 ? value.trim() : undefined;\n}\n\nasync function readManagedExtensionSourcePackages(extensionsRoot: string): Promise<Map<string, string>> {\n const packages = new Map<string, string>();\n try {\n const parsed = JSON.parse(await fs.readFile(path.join(extensionsRoot, \".managed-extensions.json\"), \"utf8\")) as unknown;\n if (typeof parsed !== \"object\" || parsed === null || !Array.isArray((parsed as { entries?: unknown }).entries)) {\n return packages;\n }\n for (const entry of (parsed as { entries: unknown[] }).entries) {\n if (typeof entry !== \"object\" || entry === null) {\n continue;\n }\n const record = entry as { directory?: unknown; name?: unknown; source?: { package?: unknown } };\n const sourcePackage = normalizeManagedSourcePackage(record.source?.package);\n if (!sourcePackage) {\n continue;\n }\n if (typeof record.directory === \"string\" && record.directory.trim().length > 0) {\n packages.set(`directory:${record.directory.trim()}`, sourcePackage);\n }\n if (typeof record.name === \"string\" && record.name.trim().length > 0) {\n packages.set(`name:${record.name.trim()}`, sourcePackage);\n }\n }\n } catch {\n return packages;\n }\n return packages;\n}\n\nfunction sortCandidates(candidates: ExtensionCandidate[]): ExtensionCandidate[] {\n return [...candidates].sort((left, right) => {\n if (left.manifest.priority !== right.manifest.priority) {\n return left.manifest.priority - right.manifest.priority;\n }\n const byName = left.manifest.name.localeCompare(right.manifest.name);\n if (byName !== 0) {\n return byName;\n }\n return left.directory.localeCompare(right.directory);\n });\n}\n\nfunction buildEffectiveExtensions(\n globalCandidates: ExtensionCandidate[],\n projectCandidates: ExtensionCandidate[],\n): ExtensionCandidate[] {\n const ordered = [...sortCandidates(globalCandidates), ...sortCandidates(projectCandidates)];\n const effective: ExtensionCandidate[] = [];\n for (const candidate of ordered) {\n const existingIndex = effective.findIndex((entry) => entry.manifest.name === candidate.manifest.name);\n if (existingIndex >= 0) {\n effective.splice(existingIndex, 1);\n }\n effective.push(candidate);\n }\n return effective;\n}\n\nasync function scanExtensionLayer(\n layer: ExtensionLayer,\n extensionsRoot: string,\n enabled: Set<string>,\n disabled: Set<string>,\n pmMaxVersionExceededMode: PmMaxVersionExceededMode,\n): Promise<ExtensionLayerScanResult> {\n const diagnostics: ExtensionDiagnostic[] = [];\n const warnings: string[] = [];\n const candidates: ExtensionCandidate[] = [];\n const directories = await listExtensionDirectories(extensionsRoot);\n const managedSourcePackages = await readManagedExtensionSourcePackages(extensionsRoot);\n\n for (const directory of directories) {\n const scanned = await scanExtensionDirectory(\n layer,\n extensionsRoot,\n directory,\n enabled,\n disabled,\n managedSourcePackages,\n pmMaxVersionExceededMode,\n );\n diagnostics.push(scanned.diagnostic);\n warnings.push(...scanned.warnings);\n if (scanned.candidate) {\n candidates.push(scanned.candidate);\n }\n }\n\n return { diagnostics, warnings, candidates };\n}\n\nasync function scanExtensionDirectory(\n layer: ExtensionLayer,\n extensionsRoot: string,\n directory: string,\n enabled: Set<string>,\n disabled: Set<string>,\n managedSourcePackages: ReadonlyMap<string, string>,\n pmMaxVersionExceededMode: PmMaxVersionExceededMode,\n): Promise<ScannedExtensionDirectory> {\n const extensionDir = path.join(extensionsRoot, directory);\n const manifestPath = path.join(extensionDir, \"manifest.json\");\n if (!(await pathExists(manifestPath))) {\n return {\n diagnostic: {\n layer,\n directory,\n manifest_path: manifestPath,\n name: null,\n version: null,\n entry: null,\n priority: null,\n entry_path: null,\n enabled: null,\n status: \"warn\",\n },\n warnings: [`extension_manifest_missing:${layer}:${directory}`],\n candidate: null,\n };\n }\n\n let manifest: ExtensionManifest | null = null;\n try {\n const parsed = JSON.parse(await fs.readFile(manifestPath, \"utf8\")) as unknown;\n manifest = parseManifest(parsed);\n } catch {\n manifest = null;\n }\n\n if (!manifest) {\n return {\n diagnostic: {\n layer,\n directory,\n manifest_path: manifestPath,\n name: null,\n version: null,\n entry: null,\n priority: null,\n entry_path: null,\n enabled: null,\n status: \"warn\",\n },\n warnings: [`extension_manifest_invalid:${layer}:${directory}`],\n candidate: null,\n };\n }\n\n const entryPath = path.resolve(extensionDir, manifest.entry);\n const entryWithinDirectoryByPath = isPathWithinDirectory(extensionDir, entryPath);\n const entryExists = entryWithinDirectoryByPath ? await pathExists(entryPath) : false;\n const entryWithinDirectory =\n entryWithinDirectoryByPath && entryExists\n ? await isCanonicalPathWithinDirectory(extensionDir, entryPath)\n : entryWithinDirectoryByPath;\n const enabledForLoad = shouldEnable(manifest.name, enabled, disabled);\n const extensionWarnings: string[] = [];\n if (Array.isArray(manifest.legacy_capability_aliases) && manifest.legacy_capability_aliases.length > 0) {\n extensionWarnings.push(\n formatLegacyExtensionCapabilityAliasWarning(layer, manifest.name, manifest.legacy_capability_aliases),\n );\n }\n for (const capability of collectUnknownExtensionCapabilities(manifest.capabilities)) {\n extensionWarnings.push(formatUnknownExtensionCapabilityWarning(layer, manifest.name, capability));\n }\n if (!entryWithinDirectory) {\n extensionWarnings.push(`extension_entry_outside_extension:${layer}:${manifest.name}`);\n } else if (!entryExists) {\n extensionWarnings.push(`extension_entry_missing:${layer}:${manifest.name}`);\n }\n const pmVersionCompatibility = await evaluatePmMinVersionCompatibility(layer, manifest);\n if (pmVersionCompatibility.warning) {\n extensionWarnings.push(pmVersionCompatibility.warning);\n }\n const pmMaxVersionCompatibility = await evaluatePmMaxVersionCompatibility(layer, manifest, pmMaxVersionExceededMode);\n if (pmMaxVersionCompatibility.warning) {\n extensionWarnings.push(pmMaxVersionCompatibility.warning);\n }\n const extensionReady =\n entryWithinDirectory &&\n entryExists &&\n pmVersionCompatibility.allowed &&\n pmMaxVersionCompatibility.allowed;\n const sourcePackage =\n managedSourcePackages.get(`directory:${directory}`) ?? managedSourcePackages.get(`name:${manifest.name}`);\n\n return {\n diagnostic: {\n layer,\n directory,\n manifest_path: manifestPath,\n name: manifest.name,\n version: manifest.version,\n entry: manifest.entry,\n priority: manifest.priority,\n entry_path: entryPath,\n enabled: enabledForLoad,\n status: extensionReady ? \"ok\" : \"warn\",\n },\n warnings: extensionWarnings,\n candidate:\n extensionReady && enabledForLoad\n ? {\n layer,\n directory,\n manifest_path: manifestPath,\n entry_path: entryPath,\n manifest,\n source_package: sourcePackage,\n }\n : null,\n };\n}\n\n\n/**\n * Implements discover extensions for the public runtime surface of this module.\n */\nexport async function discoverExtensions(options: DiscoverExtensionsOptions): Promise<ExtensionDiscoveryResult> {\n const roots = resolveExtensionRoots(options.pmRoot, options.cwd ?? process.cwd());\n const configured_enabled = normalizeNames(options.settings.extensions.enabled);\n const configured_disabled = normalizeNames(options.settings.extensions.disabled);\n const policy = normalizeExtensionPolicy(options.settings);\n const serializedPolicy = serializeExtensionPolicy(policy);\n\n if (options.noExtensions) {\n return {\n disabled_by_flag: true,\n roots,\n configured_enabled,\n configured_disabled,\n discovered: [],\n effective: [],\n warnings: [...policy.warnings],\n policy: serializedPolicy,\n };\n }\n\n const enabled = new Set(configured_enabled);\n const disabled = new Set(configured_disabled);\n const globalScan = await scanExtensionLayer(\"global\", roots.global, enabled, disabled, policy.pmMaxVersionExceededMode.global);\n const projectScan = await scanExtensionLayer(\"project\", roots.project, enabled, disabled, policy.pmMaxVersionExceededMode.project);\n const policyWarnings: string[] = [...policy.warnings];\n const effectiveCandidates = buildEffectiveExtensions(globalScan.candidates, projectScan.candidates);\n const effective: EffectiveExtension[] = [];\n for (const candidate of effectiveCandidates) {\n const extensionRef = {\n layer: candidate.layer,\n name: candidate.manifest.name,\n trusted: candidate.manifest.trusted === true,\n provenanceVerified: candidate.manifest.provenance?.verified === true,\n sandboxProfile: candidate.manifest.sandbox_profile,\n permissions:\n candidate.manifest.permissions && typeof candidate.manifest.permissions === \"object\"\n ? {\n fs_read: candidate.manifest.permissions.fs_read,\n fs_write: candidate.manifest.permissions.fs_write,\n network: candidate.manifest.permissions.network,\n env_read: candidate.manifest.permissions.env_read,\n env_write: candidate.manifest.permissions.env_write,\n process_spawn: candidate.manifest.permissions.process_spawn,\n }\n : undefined,\n };\n const extensionDecision = evaluateExtensionPolicyForExtension(policy, extensionRef);\n if (extensionDecision.warning) {\n policyWarnings.push(extensionDecision.warning);\n }\n if (!extensionDecision.allowed) {\n continue;\n }\n for (const capability of candidate.manifest.capabilities) {\n const capabilityDecision = evaluateExtensionPolicyForCapability(policy, extensionRef, capability);\n if (capabilityDecision.warning) {\n policyWarnings.push(capabilityDecision.warning);\n }\n }\n effective.push(summarizeCandidate(candidate));\n }\n\n return {\n disabled_by_flag: false,\n roots,\n configured_enabled,\n configured_disabled,\n discovered: [...globalScan.diagnostics, ...projectScan.diagnostics],\n effective,\n warnings: [...new Set([...globalScan.warnings, ...projectScan.warnings, ...policyWarnings])],\n policy: serializedPolicy,\n };\n}\n\nfunction formatUnknownError(error: unknown): string {\n if (error instanceof Error && error.message.trim().length > 0) {\n return error.message;\n }\n return String(error);\n}\n\nfunction parseComparableVersion(value: string): number[] | null {\n const normalized = value.trim().replace(/^>=\\s*/, \"\").replace(/^v/i, \"\");\n const release = normalized.split(/[+-]/, 1)[0];\n if (!/^\\d+(?:[.-]\\d+)*$/.test(release)) {\n return null;\n }\n return release.split(/[.-]/).map((part) => Number(part));\n}\n\nfunction compareComparableVersions(currentVersion: string, minimumVersion: string): number | null {\n const currentParts = parseComparableVersion(currentVersion);\n const minimumParts = parseComparableVersion(minimumVersion);\n if (!currentParts || !minimumParts) {\n return null;\n }\n const width = Math.max(currentParts.length, minimumParts.length);\n for (let index = 0; index < width; index += 1) {\n const current = currentParts[index] ?? 0;\n const minimum = minimumParts[index] ?? 0;\n if (current > minimum) {\n return 1;\n }\n if (current < minimum) {\n return -1;\n }\n }\n return 0;\n}\n\nasync function readCurrentPmCliVersion(): Promise<string | null> {\n try {\n const packageRoot = resolvePmPackageRootFromModule(import.meta.url, [\"../../..\"]);\n const raw = await fs.readFile(path.join(packageRoot, \"package.json\"), \"utf8\");\n const parsed = JSON.parse(raw) as { version?: unknown };\n return typeof parsed.version === \"string\" && parsed.version.trim().length > 0 ? parsed.version.trim() : null;\n } catch {\n return null;\n }\n}\n\nfunction resolveCurrentPmCliVersion(): Promise<string | null> {\n currentPmCliVersionPromise ??= readCurrentPmCliVersion();\n return currentPmCliVersionPromise;\n}\n\nasync function evaluatePmMinVersionCompatibility(\n layer: ExtensionLayer,\n manifest: ExtensionManifest,\n): Promise<{ allowed: boolean; warning?: string }> {\n if (typeof manifest.pm_min_version !== \"string\" || manifest.pm_min_version.trim().length === 0) {\n return { allowed: true };\n }\n if (!parseComparableVersion(manifest.pm_min_version)) {\n return {\n allowed: false,\n warning: `extension_pm_min_version_invalid:${layer}:${manifest.name}:required=${manifest.pm_min_version}`,\n };\n }\n const currentVersion = await resolveCurrentPmCliVersion();\n if (!currentVersion) {\n return {\n allowed: true,\n warning: `extension_pm_min_version_unchecked:${layer}:${manifest.name}:required=${manifest.pm_min_version}:current=unknown`,\n };\n }\n const comparison = compareComparableVersions(currentVersion, manifest.pm_min_version);\n if (comparison === null) {\n return {\n allowed: true,\n warning: `extension_pm_min_version_unchecked:${layer}:${manifest.name}:required=${manifest.pm_min_version}:current=${currentVersion}`,\n };\n }\n if (comparison < 0) {\n return {\n allowed: false,\n warning: `extension_pm_min_version_unmet:${layer}:${manifest.name}:required=${manifest.pm_min_version}:current=${currentVersion}`,\n };\n }\n return { allowed: true };\n}\n\nasync function evaluatePmMaxVersionCompatibility(\n layer: ExtensionLayer,\n manifest: ExtensionManifest,\n exceededMode: PmMaxVersionExceededMode,\n): Promise<{ allowed: boolean; warning?: string }> {\n if (typeof manifest.pm_max_version !== \"string\" || manifest.pm_max_version.trim().length === 0) {\n return { allowed: true };\n }\n // An upper bound must be an exact version. parseComparableVersion leniently strips a\n // leading \">=\" (for engines.pm min-version compat), which would turn a range-like\n // \">=2026.6.1\" into an inclusive max and wrongly block newer CLIs — reject range prefixes.\n if (/^[<>=~^]/.test(manifest.pm_max_version.trim())) {\n return {\n allowed: false,\n warning: `extension_pm_max_version_invalid:${layer}:${manifest.name}:allowed=${manifest.pm_max_version}`,\n };\n }\n if (!parseComparableVersion(manifest.pm_max_version)) {\n return {\n allowed: false,\n warning: `extension_pm_max_version_invalid:${layer}:${manifest.name}:allowed=${manifest.pm_max_version}`,\n };\n }\n const currentVersion = await resolveCurrentPmCliVersion();\n if (!currentVersion) {\n return {\n allowed: true,\n warning: `extension_pm_max_version_unchecked:${layer}:${manifest.name}:allowed=${manifest.pm_max_version}:current=unknown`,\n };\n }\n const comparison = compareComparableVersions(currentVersion, manifest.pm_max_version);\n if (comparison === null) {\n return {\n allowed: true,\n warning: `extension_pm_max_version_unchecked:${layer}:${manifest.name}:allowed=${manifest.pm_max_version}:current=${currentVersion}`,\n };\n }\n if (comparison > 0) {\n // pm-k5e8: `extensions.policy.pm_max_version_exceeded_mode` (default \"block\",\n // per-layer overridable) relaxes this to warn-only so operators can keep\n // pinned extensions loading during a CLI upgrade window.\n if (exceededMode === \"warn\") {\n return {\n allowed: true,\n warning: `extension_pm_max_version_exceeded_warn:${layer}:${manifest.name}:allowed=${manifest.pm_max_version}:current=${currentVersion}`,\n };\n }\n return {\n allowed: false,\n warning: `extension_pm_max_version_exceeded:${layer}:${manifest.name}:allowed=${manifest.pm_max_version}:current=${currentVersion}`,\n };\n }\n return { allowed: true };\n}\n\nasync function fingerprintPath(pathToInspect: string): Promise<string> {\n try {\n const stats = await fs.stat(pathToInspect);\n return `${Math.trunc(stats.mtimeMs)}-${stats.size}`;\n } catch {\n return \"missing\";\n }\n}\n\nasync function resolveExtensionImportHref(\n extension: EffectiveExtension,\n options: DiscoverExtensionsOptions,\n): Promise<string> {\n const baseUrl = new URL(pathToFileURL(extension.entry_path).href);\n const shouldCacheBust = options.cache_bust === true || typeof options.reload_token === \"string\";\n if (!shouldCacheBust) {\n return baseUrl.href;\n }\n const [entryFingerprint, manifestFingerprint] = await Promise.all([\n fingerprintPath(extension.entry_path),\n fingerprintPath(extension.manifest_path),\n ]);\n const reloadToken = options.reload_token ?? nextExtensionReloadToken();\n baseUrl.searchParams.set(\"pm_ext_reload\", reloadToken);\n baseUrl.searchParams.set(\"pm_ext_entry\", entryFingerprint);\n baseUrl.searchParams.set(\"pm_ext_manifest\", manifestFingerprint);\n return baseUrl.href;\n}\n\n/**\n * Implements load extensions for the public runtime surface of this module.\n */\nexport async function loadExtensions(options: DiscoverExtensionsOptions): Promise<ExtensionLoadResult> {\n const discovery = await discoverExtensions(options);\n const loaded: LoadedExtension[] = [];\n const failed: FailedExtensionLoad[] = [];\n const warnings = [...discovery.warnings];\n\n if (discovery.disabled_by_flag) {\n return {\n ...discovery,\n warnings,\n loaded,\n failed,\n };\n }\n\n for (const extension of discovery.effective) {\n try {\n const importHref = await resolveExtensionImportHref(extension, options);\n const module = await import(importHref);\n loaded.push({\n ...extension,\n module,\n });\n } catch (error: unknown) {\n warnings.push(`extension_load_failed:${extension.layer}:${extension.name}`);\n failed.push({\n layer: extension.layer,\n name: extension.name,\n entry_path: extension.entry_path,\n error: formatUnknownError(error),\n });\n }\n }\n\n return {\n ...discovery,\n warnings,\n loaded,\n failed,\n };\n}\n\ntype HookName = keyof ExtensionHookRegistry;\nconst DEFAULT_EXTENSION_DEACTIVATE_TIMEOUT_MS = 5_000;\nconst MAX_EXTENSION_DEACTIVATE_TIMEOUT_MS = 2_147_483_647;\n\nfunction toActivatableExtension(source: Record<string, unknown>): ActivatableExtension {\n // Bind to `source` so a module/default-export authored with methods (or a class\n // instance) keeps its `this` across both lifecycle calls — `activate` is a\n // method call on a fresh object and `deactivate` is invoked bare, so without\n // binding the two would see different (or undefined) `this`.\n const activate = source.activate as ActivatableExtension[\"activate\"];\n const activatable: ActivatableExtension = {\n activate: activate.bind(source),\n };\n if (typeof source.deactivate === \"function\") {\n const deactivate = source.deactivate as NonNullable<ActivatableExtension[\"deactivate\"]>;\n activatable.deactivate = deactivate.bind(source);\n }\n return activatable;\n}\n\nfunction resolveActivatableExtension(module: unknown): ActivatableExtension | null {\n const moduleRecord = asRecordLoose(module);\n if (!moduleRecord) {\n return null;\n }\n\n if (typeof moduleRecord.activate === \"function\") {\n return toActivatableExtension(moduleRecord);\n }\n\n const defaultExport = asRecordLoose(moduleRecord.default);\n if (defaultExport && typeof defaultExport.activate === \"function\") {\n return toActivatableExtension(defaultExport);\n }\n\n return null;\n}\n\n/**\n * Run the optional `deactivate` teardown hook for every loaded extension that\n * exports one. Best-effort: a throwing teardown is captured as a warning and a\n * failure entry rather than propagated, so one extension cannot block another's\n * cleanup. Hosts call this on shutdown/reload (e.g. the MCP server between\n * native-action requests) to release resources opened during `activate`.\n *\n * Pass the `activationResult` to skip extensions whose `activate` failed — they\n * never fully initialized, so (VS Code-style) their `deactivate` must not run.\n * Teardowns run concurrently and each hook has a bounded timeout by default, so\n * one slow or hanging hook cannot serialize the rest or block the host\n * indefinitely unless the host explicitly disables the timeout; the returned\n * warnings/failures preserve loaded order.\n */\nexport async function deactivateExtensions(\n loadResult: ExtensionLoadResult,\n activationResult?: Pick<ExtensionActivationResult, \"failed\">,\n options: ExtensionDeactivationOptions = {},\n): Promise<ExtensionDeactivationResult> {\n const timeoutMs = normalizeExtensionDeactivateTimeout(options?.deactivate_timeout_ms);\n const failedActivationKeys = new Set(\n (activationResult?.failed ?? []).map((entry) => `${entry.layer}:${entry.name}`),\n );\n const targets: Array<{ extension: LoadedExtension; deactivate: () => void | Promise<void> }> = [];\n for (const extension of loadResult.loaded) {\n if (failedActivationKeys.has(`${extension.layer}:${extension.name}`)) {\n continue;\n }\n const activatable = resolveActivatableExtension(extension.module);\n if (!activatable || typeof activatable.deactivate !== \"function\") {\n continue;\n }\n targets.push({ extension, deactivate: activatable.deactivate });\n }\n const outcomes = await Promise.all(\n targets.map(async ({ extension, deactivate }) => {\n try {\n await runExtensionDeactivateWithTimeout(deactivate, timeoutMs);\n return { ok: true as const };\n } catch (error: unknown) {\n return { ok: false as const, layer: extension.layer, name: extension.name, error: formatUnknownError(error) };\n }\n }),\n );\n const warnings: string[] = [];\n const failed: ExtensionDeactivationFailure[] = [];\n let deactivated = 0;\n for (const outcome of outcomes) {\n if (outcome.ok) {\n deactivated += 1;\n continue;\n }\n warnings.push(`extension_deactivate_failed:${outcome.layer}:${outcome.name}`);\n failed.push({ layer: outcome.layer, name: outcome.name, error: outcome.error });\n }\n return { deactivated, warnings, failed };\n}\n\nfunction normalizeExtensionDeactivateTimeout(rawTimeout: unknown): number {\n if (typeof rawTimeout !== \"number\" || rawTimeout < 0) {\n return DEFAULT_EXTENSION_DEACTIVATE_TIMEOUT_MS;\n }\n if (rawTimeout === 0 || rawTimeout === Infinity) {\n return 0;\n }\n if (!Number.isFinite(rawTimeout)) {\n return DEFAULT_EXTENSION_DEACTIVATE_TIMEOUT_MS;\n }\n return Math.min(MAX_EXTENSION_DEACTIVATE_TIMEOUT_MS, Math.max(1, Math.floor(rawTimeout)));\n}\n\nasync function runExtensionDeactivateWithTimeout(\n deactivate: () => void | Promise<void>,\n timeoutMs: number,\n): Promise<void> {\n if (timeoutMs === 0) {\n await deactivate();\n return;\n }\n let timeoutHandle: ReturnType<typeof setTimeout> | undefined;\n try {\n // A timed-out deactivate promise may still finish later; JavaScript promises\n // are not cancellable, so the host only stops waiting and consumes any late\n // rejection from the hook.\n const deactivatePromise = Promise.resolve().then(() => deactivate());\n deactivatePromise.catch(() => {});\n await Promise.race([\n deactivatePromise,\n new Promise<never>((_, reject) => {\n timeoutHandle = setTimeout(() => {\n reject(new Error(`extension deactivate timed out after ${timeoutMs}ms`));\n }, timeoutMs);\n timeoutHandle.unref?.();\n }),\n ]);\n } finally {\n clearTimeout(timeoutHandle as ReturnType<typeof setTimeout>);\n }\n}\n\nfunction isOutputRendererFormat(value: string): value is OutputRendererFormat {\n return value === \"toon\" || value === \"json\";\n}\n\nfunction isExtensionServiceName(value: string): value is ExtensionServiceName {\n return KNOWN_EXTENSION_SERVICE_NAMES.includes(value as ExtensionServiceName);\n}\n\nfunction assertHookHandler(hookName: string, hook: unknown): void {\n if (typeof hook !== \"function\") {\n throw new TypeError(`api.hooks.${hookName} requires a function handler`);\n }\n}\n\nfunction assertNonEmptyString(name: string, value: unknown): string {\n if (typeof value !== \"string\" || value.trim().length === 0) {\n throw new TypeError(`${name} requires a non-empty string`);\n }\n return value.trim();\n}\n\nfunction assertFunctionHandler(name: string, value: unknown): void {\n if (typeof value !== \"function\") {\n throw new TypeError(`${name} requires a function handler`);\n }\n}\n\nfunction normalizeRegistrationName(name: string): string {\n return name\n .trim()\n .toLowerCase()\n .split(/\\s+/)\n .filter((part) => part.length > 0)\n .join(\" \");\n}\n\nfunction toRegistrationCommandPath(name: string, action: \"import\" | \"export\"): string {\n return normalizeCommandName(`${name} ${action}`);\n}\n\nfunction sanitizeRegistrationValue(value: unknown): unknown {\n if (value === null) {\n return null;\n }\n if (Array.isArray(value)) {\n return value.map((entry) => sanitizeRegistrationValue(entry));\n }\n if (typeof value === \"function\") {\n return \"[Function]\";\n }\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n if (typeof value === \"symbol\") {\n return value.toString();\n }\n if (typeof value === \"object\") {\n const record = value as Record<string, unknown>;\n const normalized: Record<string, unknown> = {};\n const keys = Object.keys(record).sort((left, right) => left.localeCompare(right));\n for (const key of keys) {\n normalized[key] = sanitizeRegistrationValue(record[key]);\n }\n return normalized;\n }\n return value;\n}\n\nfunction cloneRuntimeRegistrationValue(value: unknown): unknown {\n if (Array.isArray(value)) {\n return value.map((entry) => cloneRuntimeRegistrationValue(entry));\n }\n if (typeof value === \"object\" && value !== null) {\n const record = value as Record<string, unknown>;\n const cloned: Record<string, unknown> = {};\n for (const key of Object.keys(record).sort((left, right) => left.localeCompare(right))) {\n cloned[key] = cloneRuntimeRegistrationValue(record[key]);\n }\n return cloned;\n }\n return value;\n}\n\nconst EXTENSION_REGISTRATION_TRACE_SYMBOL = Symbol(\"extension_registration_trace\");\n\ntype RegistrationTraceCarrier = Error & {\n [EXTENSION_REGISTRATION_TRACE_SYMBOL]?: ExtensionActivationFailureTrace;\n};\n\nfunction createRegistrationValidationError(message: string, trace: ExtensionActivationFailureTrace): TypeError {\n const error = new TypeError(message) as RegistrationTraceCarrier;\n Object.defineProperty(error, EXTENSION_REGISTRATION_TRACE_SYMBOL, {\n value: trace,\n enumerable: false,\n configurable: false,\n writable: false,\n });\n return error;\n}\n\nfunction extractRegistrationValidationTrace(error: unknown): ExtensionActivationFailureTrace | undefined {\n if (!(error instanceof Error)) {\n return undefined;\n }\n return (error as RegistrationTraceCarrier)[EXTENSION_REGISTRATION_TRACE_SYMBOL];\n}\n\nfunction normalizeRegistrationRecord(name: string, value: unknown): Record<string, unknown> {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n throw new TypeError(`${name} requires an object definition`);\n }\n return sanitizeRegistrationValue(value) as Record<string, unknown>;\n}\n\nfunction normalizeRuntimeRegistrationRecord(name: string, value: unknown): Record<string, unknown> {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n throw new TypeError(`${name} requires an object definition`);\n }\n return cloneRuntimeRegistrationValue(value) as Record<string, unknown>;\n}\n\nfunction normalizeRegistrationRecordList(name: string, value: unknown): Array<Record<string, unknown>> {\n if (!Array.isArray(value)) {\n throw new TypeError(`${name} requires an array of object definitions`);\n }\n return value.map((entry) => normalizeRegistrationRecord(name, entry));\n}\n\nfunction asRegistrationRecord(name: string, value: unknown): Record<string, unknown> {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n throw new TypeError(`${name} requires an object definition`);\n }\n return value as Record<string, unknown>;\n}\n\nfunction assertOptionalBooleanField(name: string, value: unknown): void {\n if (value !== undefined && typeof value !== \"boolean\") {\n throw new TypeError(`${name} must be a boolean when provided`);\n }\n}\n\nfunction assertOptionalStringField(name: string, value: unknown): void {\n if (value === undefined) {\n return;\n }\n if (typeof value !== \"string\" || value.trim().length === 0) {\n throw new TypeError(`${name} must be a non-empty string when provided`);\n }\n}\n\nfunction isFlagDefaultScalar(value: unknown): boolean {\n return typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\";\n}\n\nfunction assertOptionalFlagDefaultField(name: string, value: unknown): void {\n if (value === undefined) {\n return;\n }\n if (Array.isArray(value)) {\n for (const [index, item] of value.entries()) {\n if (!isFlagDefaultScalar(item)) {\n throw new TypeError(`${name}[${index}] must be a string, number, or boolean`);\n }\n }\n return;\n }\n if (!isFlagDefaultScalar(value)) {\n throw new TypeError(`${name} must be a string, number, or boolean, or an array of these when provided`);\n }\n}\n\nfunction assertOptionalStringArrayField(name: string, value: unknown): void {\n if (value === undefined) {\n return;\n }\n if (!Array.isArray(value)) {\n throw new TypeError(`${name} must be an array of non-empty strings when provided`);\n }\n for (const [index, entry] of value.entries()) {\n if (typeof entry !== \"string\" || entry.trim().length === 0) {\n throw new TypeError(`${name}[${index}] must be a non-empty string`);\n }\n }\n}\n\nfunction normalizeOptionalStringArrayField(name: string, value: unknown): string[] {\n assertOptionalStringArrayField(name, value);\n if (!Array.isArray(value)) {\n return [];\n }\n const normalized: string[] = [];\n const seen = new Set<string>();\n for (const entry of value) {\n const trimmed = entry.trim();\n if (trimmed.length === 0 || seen.has(trimmed)) {\n continue;\n }\n seen.add(trimmed);\n normalized.push(trimmed);\n }\n return normalized;\n}\n\nfunction normalizeCommandActionName(value: string): string {\n return value\n .trim()\n .toLowerCase()\n .replace(/[\\s_]+/g, \"-\")\n .replace(/[^a-z0-9-]/g, \"-\")\n .replace(/-+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n}\n\nfunction resolveCommandDefinitionAction(commandPath: string, action: unknown): string {\n if (action === undefined) {\n return commandPath.replace(/\\s+/g, \"-\");\n }\n if (typeof action !== \"string\" || action.trim().length === 0) {\n throw new TypeError(\"registerCommand definition.action must be a non-empty string when provided\");\n }\n const normalized = normalizeCommandActionName(action);\n if (normalized.length === 0) {\n throw new TypeError(\"registerCommand definition.action must contain alphanumeric characters\");\n }\n return normalized;\n}\n\nfunction normalizeCommandDefinitionArguments(value: unknown): ExtensionCommandArgumentDefinition[] {\n if (value === undefined) {\n return [];\n }\n if (!Array.isArray(value)) {\n throw new TypeError(\"registerCommand definition.arguments must be an array when provided\");\n }\n const normalized: ExtensionCommandArgumentDefinition[] = [];\n for (const [index, entry] of value.entries()) {\n const record = asRegistrationRecord(`registerCommand definition.arguments[${index}]`, entry);\n const name = assertNonEmptyString(`registerCommand definition.arguments[${index}].name`, record.name);\n assertOptionalBooleanField(`registerCommand definition.arguments[${index}].required`, record.required);\n assertOptionalBooleanField(`registerCommand definition.arguments[${index}].variadic`, record.variadic);\n assertOptionalStringField(`registerCommand definition.arguments[${index}].description`, record.description);\n if (name.includes(\" \")) {\n throw new TypeError(`registerCommand definition.arguments[${index}].name must not contain spaces`);\n }\n const definition: ExtensionCommandArgumentDefinition = {\n name,\n };\n if (record.required === true) {\n definition.required = true;\n }\n if (record.variadic === true) {\n definition.variadic = true;\n }\n if (typeof record.description === \"string\") {\n definition.description = record.description.trim();\n }\n normalized.push(definition);\n }\n\n const variadicIndexes = normalized\n .map((argument, index) => (argument.variadic ? index : -1))\n .filter((index) => index >= 0);\n if (variadicIndexes.length > 1) {\n throw new TypeError(\"registerCommand definition.arguments supports at most one variadic argument\");\n }\n if (variadicIndexes.length === 1 && variadicIndexes[0] !== normalized.length - 1) {\n throw new TypeError(\"registerCommand definition.arguments variadic argument must be the final argument\");\n }\n\n return normalized;\n}\n\nfunction validateFlagDefinitions(flags: unknown): void {\n if (!Array.isArray(flags)) {\n throw new TypeError(\"registerFlags flags requires an array of object definitions\");\n }\n for (const [index, raw] of flags.entries()) {\n const record = asRegistrationRecord(`registerFlags flags[${index}]`, raw);\n const long = record.long;\n const short = record.short;\n if (long === undefined && short === undefined) {\n throw new TypeError(`registerFlags flags[${index}] requires at least one of long or short`);\n }\n assertOptionalStringField(`registerFlags flags[${index}].long`, long);\n assertOptionalStringField(`registerFlags flags[${index}].short`, short);\n assertOptionalStringField(`registerFlags flags[${index}].value_name`, record.value_name);\n assertOptionalStringField(`registerFlags flags[${index}].description`, record.description);\n assertOptionalBooleanField(`registerFlags flags[${index}].required`, record.required);\n assertOptionalBooleanField(`registerFlags flags[${index}].enabled`, record.enabled);\n assertOptionalBooleanField(`registerFlags flags[${index}].visible`, record.visible);\n assertOptionalBooleanField(`registerFlags flags[${index}].list`, record.list);\n assertOptionalFlagDefaultField(`registerFlags flags[${index}].default`, record.default);\n if (Array.isArray(record.default) && record.list !== true) {\n throw new TypeError(`registerFlags flags[${index}].default cannot be an array unless list is true.`);\n }\n assertFlagValueTypeAndDefault(`registerFlags flags[${index}]`, record);\n }\n}\n\n/**\n * Reject a declared `value_type`/`type` that is not a known flag value kind, and\n * a `default` whose value(s) would not cleanly coerce under that kind — so the\n * typed-flag contract is enforced at registration instead of silently leaving\n * an untyped value to surface at use time.\n */\nfunction assertFlagValueTypeAndDefault(label: string, record: Record<string, unknown>): void {\n const declaredType =\n (typeof record.value_type === \"string\" ? record.value_type : undefined) ??\n (typeof record.type === \"string\" ? record.type : undefined);\n if (declaredType === undefined) {\n return;\n }\n const kind = resolveFlagValueKind(declaredType);\n if (kind === null) {\n throw new TypeError(\n `${label} value_type \"${declaredType}\" is not a known flag value type (expected one of: string, number, boolean).`,\n );\n }\n if (record.default === undefined) {\n return;\n }\n // For list flags, validate the default exactly as the runtime will see it —\n // comma-joined strings and nested arrays are flattened first — so a valid\n // default like `value_type: \"number\", default: \"10,20\"` is not wrongly rejected.\n const defaults = record.list === true ? flattenFlagListValue(record.default) : [record.default];\n for (const [defaultIndex, defaultValue] of defaults.entries()) {\n if (!isFlagDefaultValueCoercible(defaultValue as string | number | boolean, kind)) {\n const suffix = defaults.length > 1 ? `default[${defaultIndex}]` : \"default\";\n throw new TypeError(`${label}.${suffix} (${JSON.stringify(defaultValue)}) is not coercible to ${kind}.`);\n }\n }\n}\n\nfunction validateItemFieldDefinitions(fields: unknown): void {\n if (!Array.isArray(fields)) {\n throw new TypeError(\"registerItemFields fields requires an array of object definitions\");\n }\n for (const [index, raw] of fields.entries()) {\n const record = asRegistrationRecord(`registerItemFields fields[${index}]`, raw);\n assertNonEmptyString(`registerItemFields fields[${index}].name`, record.name);\n const fieldType = assertNonEmptyString(`registerItemFields fields[${index}].type`, record.type);\n if (normalizeItemFieldType(fieldType) === null) {\n const suggestion = suggestKnownItemFieldType(fieldType);\n const hint = suggestion ? ` Did you mean \"${suggestion}\"?` : \"\";\n throw new TypeError(\n `registerItemFields fields[${index}].type \"${fieldType}\" is not a known field type ` +\n `(expected one of: ${KNOWN_ITEM_FIELD_TYPES.join(\", \")}).${hint}`,\n );\n }\n assertOptionalBooleanField(`registerItemFields fields[${index}].optional`, record.optional);\n }\n}\n\nfunction validateItemTypeDefinitions(types: unknown): void {\n if (!Array.isArray(types)) {\n throw new TypeError(\"registerItemTypes types requires an array of object definitions\");\n }\n for (const [typeIndex, raw] of types.entries()) {\n const record = asRegistrationRecord(`registerItemTypes types[${typeIndex}]`, raw);\n assertNonEmptyString(`registerItemTypes types[${typeIndex}].name`, record.name);\n assertOptionalStringField(`registerItemTypes types[${typeIndex}].folder`, record.folder);\n assertOptionalStringArrayField(`registerItemTypes types[${typeIndex}].aliases`, record.aliases);\n assertOptionalStringArrayField(\n `registerItemTypes types[${typeIndex}].required_create_fields`,\n record.required_create_fields,\n );\n assertOptionalStringArrayField(\n `registerItemTypes types[${typeIndex}].required_create_repeatables`,\n record.required_create_repeatables,\n );\n\n if (record.command_option_policies !== undefined) {\n if (!Array.isArray(record.command_option_policies)) {\n throw new TypeError(\n `registerItemTypes types[${typeIndex}].command_option_policies must be an array when provided`,\n );\n }\n for (const [policyIndex, rawPolicy] of record.command_option_policies.entries()) {\n const policy = asRegistrationRecord(\n `registerItemTypes types[${typeIndex}].command_option_policies[${policyIndex}]`,\n rawPolicy,\n );\n assertNonEmptyString(\n `registerItemTypes types[${typeIndex}].command_option_policies[${policyIndex}].command`,\n policy.command,\n );\n assertNonEmptyString(\n `registerItemTypes types[${typeIndex}].command_option_policies[${policyIndex}].option`,\n policy.option,\n );\n assertOptionalBooleanField(\n `registerItemTypes types[${typeIndex}].command_option_policies[${policyIndex}].enabled`,\n policy.enabled,\n );\n assertOptionalBooleanField(\n `registerItemTypes types[${typeIndex}].command_option_policies[${policyIndex}].required`,\n policy.required,\n );\n assertOptionalBooleanField(\n `registerItemTypes types[${typeIndex}].command_option_policies[${policyIndex}].visible`,\n policy.visible,\n );\n }\n }\n\n if (record.options !== undefined) {\n if (!Array.isArray(record.options)) {\n throw new TypeError(`registerItemTypes types[${typeIndex}].options must be an array when provided`);\n }\n for (const [optionIndex, rawOption] of record.options.entries()) {\n const option = asRegistrationRecord(`registerItemTypes types[${typeIndex}].options[${optionIndex}]`, rawOption);\n assertNonEmptyString(`registerItemTypes types[${typeIndex}].options[${optionIndex}].key`, option.key);\n assertOptionalStringArrayField(`registerItemTypes types[${typeIndex}].options[${optionIndex}].values`, option.values);\n assertOptionalBooleanField(`registerItemTypes types[${typeIndex}].options[${optionIndex}].required`, option.required);\n assertOptionalStringArrayField(\n `registerItemTypes types[${typeIndex}].options[${optionIndex}].aliases`,\n option.aliases,\n );\n }\n }\n }\n}\n\nfunction validateMigrationDefinition(definition: unknown): void {\n const record = asRegistrationRecord(\"registerMigration definition\", definition);\n if (record.id !== undefined && typeof record.id !== \"string\") {\n throw new TypeError(\"registerMigration definition.id must be a string when provided\");\n }\n if (record.description !== undefined && typeof record.description !== \"string\") {\n throw new TypeError(\"registerMigration definition.description must be a string when provided\");\n }\n if (record.status !== undefined && typeof record.status !== \"string\") {\n throw new TypeError(\"registerMigration definition.status must be a string when provided\");\n }\n assertOptionalBooleanField(\"registerMigration definition.mandatory\", record.mandatory);\n if (record.run !== undefined && typeof record.run !== \"function\") {\n throw new TypeError(\"registerMigration definition.run must be a function when provided\");\n }\n}\n\nfunction attachRuntimeDefinition<TEntry extends { definition: Record<string, unknown> }>(\n entry: TEntry,\n runtimeDefinition: Record<string, unknown>,\n): TEntry {\n Object.defineProperty(entry, \"runtime_definition\", {\n value: runtimeDefinition,\n enumerable: false,\n writable: false,\n configurable: false,\n });\n return entry;\n}\n\nfunction getDeclaredExtensionCapabilities(extension: LoadedExtension): Set<ExtensionCapability> | null {\n if (!Array.isArray(extension.capabilities)) {\n return null;\n }\n const declared = new Set<ExtensionCapability>();\n for (const capability of extension.capabilities) {\n const normalized = capability.trim().toLowerCase();\n if (isKnownExtensionCapability(normalized)) {\n declared.add(normalized);\n }\n }\n return declared;\n}\n\nfunction assertExtensionCapability(extension: LoadedExtension, capability: ExtensionCapability, method: string): void {\n const declared = getDeclaredExtensionCapabilities(extension);\n // Keep direct unit tests that construct LoadedExtension fixtures without\n // capability metadata backwards-compatible while enforcing manifest-declared\n // capabilities for runtime-loaded extensions.\n if (declared === null) {\n return;\n }\n if (!declared.has(capability)) {\n throw createRegistrationValidationError(\n `${method} requires capability '${capability}' in extension manifest capabilities`,\n {\n method,\n registration_index: -1,\n capability,\n missing_capability: capability,\n expected_schema: `\"capabilities\": [..., \"${capability}\"]`,\n received: extension.capabilities,\n hint: `Add \"${capability}\" to ${extension.name} manifest capabilities, or remove the ${method} registration call.`,\n },\n );\n }\n}\n\nfunction createExtensionApi(\n extension: LoadedExtension,\n hooks: ExtensionHookRegistry,\n commands: ExtensionCommandRegistry,\n parsers: ExtensionParserRegistry,\n preflight: ExtensionPreflightRegistry,\n services: ExtensionServiceRegistry,\n renderers: ExtensionRendererRegistry,\n registrations: ExtensionRegistrationRegistry,\n activationWarnings: string[],\n policy: NormalizedExtensionPolicy,\n): ExtensionApi {\n const selfIdentity: ExtensionSelfIdentity = Object.freeze({\n name: extension.name,\n layer: extension.layer,\n version: extension.version,\n capabilities: Object.freeze(\n (extension.capabilities ?? []).filter((capability): capability is ExtensionCapability =>\n (KNOWN_EXTENSION_CAPABILITIES as readonly string[]).includes(capability),\n ),\n ) as readonly ExtensionCapability[],\n pm_min_version: extension.pm_min_version,\n pm_max_version: extension.pm_max_version,\n source_package: extension.source_package,\n });\n const extensionRef: PolicyExtensionRef = {\n layer: extension.layer,\n name: extension.name,\n trusted: extension.trusted === true,\n provenanceVerified: extension.provenance?.verified === true,\n sandboxProfile: extension.sandbox_profile,\n permissions:\n extension.permissions && typeof extension.permissions === \"object\"\n ? {\n fs_read: extension.permissions.fs_read,\n fs_write: extension.permissions.fs_write,\n network: extension.permissions.network,\n env_read: extension.permissions.env_read,\n env_write: extension.permissions.env_write,\n process_spawn: extension.permissions.process_spawn,\n }\n : undefined,\n };\n const pushPolicyWarning = (warning: string | null): void => {\n if (warning) {\n activationWarnings.push(warning);\n }\n };\n const allowRegistration = (\n surface: ExtensionPolicySurface,\n method: string,\n capability?: ExtensionCapability,\n details?: {\n command?: string;\n action?: string;\n service?: string;\n },\n ): boolean => {\n const decision = evaluateExtensionPolicyForRegistration(policy, extensionRef, surface, method, capability, details);\n pushPolicyWarning(decision.warning);\n return decision.allowed;\n };\n const registerCommandTrace = (\n mode: \"override\" | \"definition\",\n command: string | undefined,\n expectedSchema: string,\n received: unknown,\n hint?: string,\n ): ExtensionActivationFailureTrace => ({\n method: \"registerCommand\",\n registration_index: mode === \"override\" ? commands.overrides.length : commands.handlers.length,\n command,\n expected_schema: expectedSchema,\n received: sanitizeRegistrationValue(received),\n hint,\n });\n\n const registerCommand = (commandOrDefinition: string | CommandDefinition, override?: CommandOverride): void => {\n assertExtensionCapability(extension, \"commands\", \"registerCommand\");\n if (typeof commandOrDefinition === \"string\") {\n const normalizedCommand = normalizeCommandName(commandOrDefinition);\n if (normalizedCommand.length === 0) {\n throw createRegistrationValidationError(\n \"registerCommand requires a non-empty command name\",\n registerCommandTrace(\n \"override\",\n commandOrDefinition,\n 'registerCommand(\"<command>\", (context) => unknown)',\n commandOrDefinition,\n \"Provide a non-empty command path as the first argument.\",\n ),\n );\n }\n if (typeof override !== \"function\") {\n const trace = registerCommandTrace(\n \"override\",\n normalizedCommand,\n 'registerCommand(\"<command>\", (context) => unknown)',\n { command: commandOrDefinition, override },\n \"Provide a function as the second registerCommand argument.\",\n );\n throw createRegistrationValidationError(\n `registerCommand requires an override function when command name is provided (command=\"${normalizedCommand}\", registration_index=${trace.registration_index})`,\n trace,\n );\n }\n if (!allowRegistration(\"commands.override\", \"registerCommand\", \"commands\", { command: normalizedCommand })) {\n return;\n }\n commands.overrides.push({\n layer: extension.layer,\n name: extension.name,\n command: normalizedCommand,\n run: override,\n });\n return;\n }\n if (typeof commandOrDefinition !== \"object\" || commandOrDefinition === null) {\n throw createRegistrationValidationError(\n \"registerCommand requires a command definition object\",\n registerCommandTrace(\n \"definition\",\n undefined,\n \"{ name: string; run: (context) => unknown; }\",\n commandOrDefinition,\n \"Use registerCommand({ name: \\\"command path\\\", run: (context) => ... }).\",\n ),\n );\n }\n if (typeof commandOrDefinition.name !== \"string\") {\n throw createRegistrationValidationError(\n \"registerCommand requires a command definition name\",\n registerCommandTrace(\n \"definition\",\n undefined,\n \"{ name: string; run: (context) => unknown; }\",\n commandOrDefinition,\n \"Set command definition.name to a non-empty string command path.\",\n ),\n );\n }\n\n const normalizedCommand = normalizeCommandName(commandOrDefinition.name);\n if (normalizedCommand.length === 0) {\n throw createRegistrationValidationError(\n \"registerCommand requires a non-empty command definition name\",\n registerCommandTrace(\n \"definition\",\n commandOrDefinition.name,\n \"{ name: string; run: (context) => unknown; }\",\n commandOrDefinition,\n \"Ensure command definition.name contains a non-empty command path.\",\n ),\n );\n }\n const runHandler = typeof commandOrDefinition.run === \"function\" ? commandOrDefinition.run : undefined;\n const legacyHandler = typeof commandOrDefinition.handler === \"function\" ? commandOrDefinition.handler : undefined;\n if (!runHandler && legacyHandler) {\n activationWarnings.push(\n `extension_command_definition_legacy_handler_alias:${extension.layer}:${extension.name}:${normalizedCommand}`,\n );\n }\n const resolvedHandler = runHandler ?? legacyHandler;\n if (typeof resolvedHandler !== \"function\") {\n const trace = registerCommandTrace(\n \"definition\",\n normalizedCommand,\n \"{ name: string; run: (context) => unknown; }\",\n commandOrDefinition,\n \"Define command definition.run as a function.\",\n );\n throw createRegistrationValidationError(\n `registerCommand requires a command definition run handler (command=\"${normalizedCommand}\", registration_index=${trace.registration_index})`,\n trace,\n );\n }\n try {\n assertOptionalStringField(\"registerCommand definition.action\", commandOrDefinition.action);\n assertOptionalStringField(\"registerCommand definition.description\", commandOrDefinition.description);\n assertOptionalStringField(\"registerCommand definition.intent\", commandOrDefinition.intent);\n const action = resolveCommandDefinitionAction(normalizedCommand, commandOrDefinition.action);\n if (!allowRegistration(\"commands.handler\", \"registerCommand\", \"commands\", { command: normalizedCommand, action })) {\n return;\n }\n const description = commandOrDefinition.description?.trim();\n const intent = commandOrDefinition.intent?.trim();\n const examples = normalizeOptionalStringArrayField(\"registerCommand definition.examples\", commandOrDefinition.examples);\n const failureHints = normalizeOptionalStringArrayField(\n \"registerCommand definition.failure_hints\",\n commandOrDefinition.failure_hints,\n );\n const argumentsDefinition = normalizeCommandDefinitionArguments(commandOrDefinition.arguments);\n\n if (commandOrDefinition.flags !== undefined) {\n assertExtensionCapability(extension, \"schema\", \"registerCommand flags\");\n validateFlagDefinitions(commandOrDefinition.flags);\n registrations.flags.push({\n layer: extension.layer,\n name: extension.name,\n target_command: normalizedCommand,\n flags: normalizeRegistrationRecordList(\"registerCommand definition.flags\", commandOrDefinition.flags),\n });\n }\n\n const registration: RegisteredExtensionCommandDefinition = {\n layer: extension.layer,\n name: extension.name,\n source_package: extension.source_package,\n command: normalizedCommand,\n action,\n examples,\n failure_hints: failureHints,\n arguments: argumentsDefinition,\n };\n if (description) {\n registration.description = description;\n }\n if (intent) {\n registration.intent = intent;\n }\n registrations.commands.push(registration);\n } catch (error: unknown) {\n const reason = formatUnknownError(error);\n const trace = registerCommandTrace(\n \"definition\",\n normalizedCommand,\n \"{ name: string; run: (context) => unknown; action?: string; arguments?: object[]; flags?: object[]; }\",\n commandOrDefinition,\n \"Use schema-style metadata (action/arguments/flags/examples/intent) with valid values.\",\n );\n throw createRegistrationValidationError(\n `registerCommand definition metadata invalid (command=\"${normalizedCommand}\", registration_index=${trace.registration_index}): ${reason}`,\n trace,\n );\n }\n commands.handlers.push({\n layer: extension.layer,\n name: extension.name,\n command: normalizedCommand,\n run: resolvedHandler,\n });\n };\n const registerParser = (command: string, override: ParserOverride): void => {\n assertExtensionCapability(extension, \"parser\", \"registerParser\");\n if (!allowRegistration(\"parser.override\", \"registerParser\", \"parser\")) {\n return;\n }\n const normalizedCommand = normalizeCommandName(assertNonEmptyString(\"registerParser command\", command));\n assertFunctionHandler(\"registerParser override\", override);\n parsers.overrides.push({\n layer: extension.layer,\n name: extension.name,\n command: normalizedCommand,\n run: override,\n });\n };\n const registerPreflight = (override: PreflightOverride): void => {\n assertExtensionCapability(extension, \"preflight\", \"registerPreflight\");\n if (!allowRegistration(\"preflight.override\", \"registerPreflight\", \"preflight\")) {\n return;\n }\n assertFunctionHandler(\"registerPreflight override\", override);\n preflight.overrides.push({\n layer: extension.layer,\n name: extension.name,\n run: override,\n });\n };\n const registerService = (service: ExtensionServiceName, override: ServiceOverride): void => {\n assertExtensionCapability(extension, \"services\", \"registerService\");\n const normalizedService = String(service).trim().toLowerCase();\n if (!isExtensionServiceName(normalizedService)) {\n throw new TypeError(`registerService service must be one of: ${KNOWN_EXTENSION_SERVICE_NAMES.join(\", \")}`);\n }\n if (!allowRegistration(\"services.override\", \"registerService\", \"services\", { service: normalizedService })) {\n return;\n }\n assertFunctionHandler(\"registerService override\", override);\n services.overrides.push({\n layer: extension.layer,\n name: extension.name,\n service: normalizedService as ExtensionServiceName,\n run: override,\n });\n };\n const registerRenderer = (format: OutputRendererFormat, renderer: RendererOverride): void => {\n assertExtensionCapability(extension, \"renderers\", \"registerRenderer\");\n if (!allowRegistration(\"renderers.override\", \"registerRenderer\", \"renderers\")) {\n return;\n }\n if (typeof renderer !== \"function\") {\n throw new TypeError(\"registerRenderer requires a renderer function\");\n }\n const normalizedFormat = String(format).trim().toLowerCase();\n if (!isOutputRendererFormat(normalizedFormat)) {\n throw new Error(`registerRenderer format must be toon|json, received: ${String(format)}`);\n }\n renderers.overrides.push({\n layer: extension.layer,\n name: extension.name,\n format: normalizedFormat,\n run: renderer,\n });\n };\n const registerFlags = (targetCommand: string, flags: FlagDefinition[]): void => {\n assertExtensionCapability(extension, \"schema\", \"registerFlags\");\n if (!allowRegistration(\"schema.flags\", \"registerFlags\", \"schema\")) {\n return;\n }\n const normalizedTargetCommand = normalizeCommandName(assertNonEmptyString(\"registerFlags targetCommand\", targetCommand));\n validateFlagDefinitions(flags);\n const normalizedFlags = normalizeRegistrationRecordList(\"registerFlags flags\", flags);\n if (normalizedFlags.length === 0) {\n throw new TypeError(\"registerFlags requires at least one flag definition\");\n }\n registrations.flags.push({\n layer: extension.layer,\n name: extension.name,\n target_command: normalizedTargetCommand,\n flags: normalizedFlags,\n });\n };\n const registerItemFields = (fields: SchemaFieldDefinition[]): void => {\n assertExtensionCapability(extension, \"schema\", \"registerItemFields\");\n if (!allowRegistration(\"schema.itemfields\", \"registerItemFields\", \"schema\")) {\n return;\n }\n validateItemFieldDefinitions(fields);\n const normalizedFields = normalizeRegistrationRecordList(\n \"registerItemFields fields\",\n fields,\n ) as SchemaFieldDefinition[];\n if (normalizedFields.length === 0) {\n throw new TypeError(\"registerItemFields requires at least one field definition\");\n }\n registrations.item_fields.push({\n layer: extension.layer,\n name: extension.name,\n fields: normalizedFields,\n });\n };\n const registerItemTypes = (types: SchemaItemTypeDefinition[]): void => {\n assertExtensionCapability(extension, \"schema\", \"registerItemTypes\");\n if (!allowRegistration(\"schema.itemtypes\", \"registerItemTypes\", \"schema\")) {\n return;\n }\n validateItemTypeDefinitions(types);\n const normalizedTypes = normalizeRegistrationRecordList(\n \"registerItemTypes types\",\n types,\n ) as SchemaItemTypeDefinition[];\n if (normalizedTypes.length === 0) {\n throw new TypeError(\"registerItemTypes requires at least one type definition\");\n }\n registrations.item_types.push({\n layer: extension.layer,\n name: extension.name,\n types: normalizedTypes,\n });\n };\n const registerMigration = (definition: SchemaMigrationDefinition): void => {\n assertExtensionCapability(extension, \"schema\", \"registerMigration\");\n if (!allowRegistration(\"schema.migrations\", \"registerMigration\", \"schema\")) {\n return;\n }\n validateMigrationDefinition(definition);\n const runtimeDefinition = normalizeRuntimeRegistrationRecord(\"registerMigration definition\", definition);\n registrations.migrations.push(\n attachRuntimeDefinition(\n {\n layer: extension.layer,\n name: extension.name,\n definition: normalizeRegistrationRecord(\"registerMigration definition\", definition),\n },\n runtimeDefinition,\n ) as RegisteredExtensionSchemaMigrationDefinition,\n );\n };\n const applyImportExportCommandMetadata = (\n method: \"registerImporter\" | \"registerExporter\",\n commandPath: string,\n options: ImportExportRegistrationOptions | undefined,\n ): void => {\n if (options === undefined) {\n return;\n }\n if (typeof options !== \"object\" || options === null || Array.isArray(options)) {\n throw new TypeError(`${method} options must be an object when provided`);\n }\n assertOptionalStringField(`${method} options.action`, options.action);\n assertOptionalStringField(`${method} options.description`, options.description);\n assertOptionalStringField(`${method} options.intent`, options.intent);\n const action = resolveCommandDefinitionAction(commandPath, options.action);\n const examples = normalizeOptionalStringArrayField(`${method} options.examples`, options.examples);\n const failureHints = normalizeOptionalStringArrayField(`${method} options.failure_hints`, options.failure_hints);\n const argumentsDefinition = normalizeCommandDefinitionArguments(options.arguments);\n\n if (options.flags !== undefined) {\n assertExtensionCapability(extension, \"schema\", `${method} options.flags`);\n // Route metadata flags through the same surface-policy gate as registerFlags so\n // enforce-mode policies blocking schema.flags are honored even when importers are allowed.\n if (allowRegistration(\"schema.flags\", `${method} options.flags`, \"schema\")) {\n validateFlagDefinitions(options.flags);\n registrations.flags.push({\n layer: extension.layer,\n name: extension.name,\n target_command: commandPath,\n flags: normalizeRegistrationRecordList(`${method} options.flags`, options.flags),\n });\n }\n }\n\n const registration: RegisteredExtensionCommandDefinition = {\n layer: extension.layer,\n name: extension.name,\n source_package: extension.source_package,\n command: commandPath,\n action,\n examples,\n failure_hints: failureHints,\n arguments: argumentsDefinition,\n };\n const description = options.description?.trim();\n if (description) {\n registration.description = description;\n }\n const intent = options.intent?.trim();\n if (intent) {\n registration.intent = intent;\n }\n registrations.commands.push(registration);\n };\n const registerImporter = (name: string, importer: Importer, options?: ImportExportRegistrationOptions): void => {\n assertExtensionCapability(extension, \"importers\", \"registerImporter\");\n if (!allowRegistration(\"importers.importer\", \"registerImporter\", \"importers\")) {\n return;\n }\n const normalizedName = normalizeRegistrationName(assertNonEmptyString(\"registerImporter name\", name));\n assertFunctionHandler(\"registerImporter importer\", importer);\n const commandPath = toRegistrationCommandPath(normalizedName, \"import\");\n // Validate and register optional command metadata before mutating the registry\n // so an invalid options object leaves no partial importer registration.\n applyImportExportCommandMetadata(\"registerImporter\", commandPath, options);\n registrations.importers.push({\n layer: extension.layer,\n name: extension.name,\n importer: normalizedName,\n });\n commands.handlers.push({\n layer: extension.layer,\n name: extension.name,\n command: commandPath,\n run: async (context) =>\n importer({\n registration: normalizedName,\n action: \"import\",\n command: context.command,\n args: cloneContextSnapshot(context.args),\n options: cloneContextSnapshot(context.options),\n global: cloneContextSnapshot(context.global),\n pm_root: context.pm_root,\n }),\n });\n };\n const registerExporter = (name: string, exporter: Exporter, options?: ImportExportRegistrationOptions): void => {\n assertExtensionCapability(extension, \"importers\", \"registerExporter\");\n if (!allowRegistration(\"importers.exporter\", \"registerExporter\", \"importers\")) {\n return;\n }\n const normalizedName = normalizeRegistrationName(assertNonEmptyString(\"registerExporter name\", name));\n assertFunctionHandler(\"registerExporter exporter\", exporter);\n const commandPath = toRegistrationCommandPath(normalizedName, \"export\");\n // Validate and register optional command metadata before mutating the registry\n // so an invalid options object leaves no partial exporter registration.\n applyImportExportCommandMetadata(\"registerExporter\", commandPath, options);\n registrations.exporters.push({\n layer: extension.layer,\n name: extension.name,\n exporter: normalizedName,\n });\n commands.handlers.push({\n layer: extension.layer,\n name: extension.name,\n command: commandPath,\n run: async (context) =>\n exporter({\n registration: normalizedName,\n action: \"export\",\n command: context.command,\n args: cloneContextSnapshot(context.args),\n options: cloneContextSnapshot(context.options),\n global: cloneContextSnapshot(context.global),\n pm_root: context.pm_root,\n }),\n });\n };\n const registerSearchProvider = (provider: SearchProviderDefinition): void => {\n assertExtensionCapability(extension, \"search\", \"registerSearchProvider\");\n if (!allowRegistration(\"search.provider\", \"registerSearchProvider\", \"search\")) {\n return;\n }\n const runtimeDefinition = normalizeRuntimeRegistrationRecord(\"registerSearchProvider provider\", provider);\n registrations.search_providers.push(\n attachRuntimeDefinition(\n {\n layer: extension.layer,\n name: extension.name,\n definition: normalizeRegistrationRecord(\"registerSearchProvider provider\", provider),\n },\n runtimeDefinition,\n ) as RegisteredExtensionSearchProvider,\n );\n };\n const registerVectorStoreAdapter = (adapter: VectorStoreAdapterDefinition): void => {\n assertExtensionCapability(extension, \"search\", \"registerVectorStoreAdapter\");\n if (!allowRegistration(\"search.vectorstore\", \"registerVectorStoreAdapter\", \"search\")) {\n return;\n }\n const runtimeDefinition = normalizeRuntimeRegistrationRecord(\"registerVectorStoreAdapter adapter\", adapter);\n registrations.vector_store_adapters.push(\n attachRuntimeDefinition(\n {\n layer: extension.layer,\n name: extension.name,\n definition: normalizeRegistrationRecord(\"registerVectorStoreAdapter adapter\", adapter),\n },\n runtimeDefinition,\n ) as RegisteredExtensionVectorStoreAdapter,\n );\n };\n const registerBeforeCommand = (hook: BeforeCommandHook): void => {\n assertExtensionCapability(extension, \"hooks\", \"api.hooks.beforeCommand\");\n if (!allowRegistration(\"hooks.beforecommand\", \"api.hooks.beforeCommand\", \"hooks\")) {\n return;\n }\n assertHookHandler(\"beforeCommand\", hook);\n hooks.beforeCommand.push({\n layer: extension.layer,\n name: extension.name,\n run: hook,\n });\n };\n const registerAfterCommand = (hook: AfterCommandHook): void => {\n assertExtensionCapability(extension, \"hooks\", \"api.hooks.afterCommand\");\n if (!allowRegistration(\"hooks.aftercommand\", \"api.hooks.afterCommand\", \"hooks\")) {\n return;\n }\n assertHookHandler(\"afterCommand\", hook);\n hooks.afterCommand.push({\n layer: extension.layer,\n name: extension.name,\n run: hook,\n });\n };\n const registerOnWrite = (hook: OnWriteHook): void => {\n assertExtensionCapability(extension, \"hooks\", \"api.hooks.onWrite\");\n if (!allowRegistration(\"hooks.onwrite\", \"api.hooks.onWrite\", \"hooks\")) {\n return;\n }\n assertHookHandler(\"onWrite\", hook);\n hooks.onWrite.push({\n layer: extension.layer,\n name: extension.name,\n run: hook,\n });\n };\n const registerOnRead = (hook: OnReadHook): void => {\n assertExtensionCapability(extension, \"hooks\", \"api.hooks.onRead\");\n if (!allowRegistration(\"hooks.onread\", \"api.hooks.onRead\", \"hooks\")) {\n return;\n }\n assertHookHandler(\"onRead\", hook);\n hooks.onRead.push({\n layer: extension.layer,\n name: extension.name,\n run: hook,\n });\n };\n const registerOnIndex = (hook: OnIndexHook): void => {\n assertExtensionCapability(extension, \"hooks\", \"api.hooks.onIndex\");\n if (!allowRegistration(\"hooks.onindex\", \"api.hooks.onIndex\", \"hooks\")) {\n return;\n }\n assertHookHandler(\"onIndex\", hook);\n hooks.onIndex.push({\n layer: extension.layer,\n name: extension.name,\n run: hook,\n });\n };\n\n return {\n extension: selfIdentity,\n registerCommand,\n registerParser,\n registerPreflight,\n registerService,\n registerFlags,\n registerItemFields,\n registerItemTypes,\n registerMigration,\n registerRenderer,\n registerImporter,\n registerExporter,\n registerSearchProvider,\n registerVectorStoreAdapter,\n hooks: {\n beforeCommand: registerBeforeCommand,\n afterCommand: registerAfterCommand,\n onWrite: registerOnWrite,\n onRead: registerOnRead,\n onIndex: registerOnIndex,\n },\n };\n}\n\nfunction getRegistrationCounts(registrations: ExtensionRegistrationRegistry): ExtensionRegistrationCounts {\n const commandCount = registrations.commands.length;\n const flagCount = registrations.flags.reduce((total, entry) => total + entry.flags.length, 0);\n const itemFieldCount = registrations.item_fields.reduce((total, entry) => total + entry.fields.length, 0);\n const itemTypeCount = registrations.item_types.reduce((total, entry) => total + entry.types.length, 0);\n return {\n commands: commandCount,\n flags: flagCount,\n item_fields: itemFieldCount,\n item_types: itemTypeCount,\n migrations: registrations.migrations.length,\n importers: registrations.importers.length,\n exporters: registrations.exporters.length,\n search_providers: registrations.search_providers.length,\n vector_store_adapters: registrations.vector_store_adapters.length,\n };\n}\n\nfunction collectCommandCollisionWarnings(commands: ExtensionCommandRegistry): string[] {\n const warnings: string[] = [];\n const collectByCommand = <TEntry extends { layer: ExtensionLayer; name: string; command: string }>(\n entries: TEntry[],\n codePrefix: string,\n ): void => {\n const grouped = new Map<string, TEntry[]>();\n for (const entry of entries) {\n const bucket = grouped.get(entry.command) ?? [];\n bucket.push(entry);\n grouped.set(entry.command, bucket);\n }\n for (const command of [...grouped.keys()].sort((left, right) => left.localeCompare(right))) {\n const bucket = grouped.get(command)!;\n if (bucket.length <= 1) {\n continue;\n }\n const winner = bucket[bucket.length - 1];\n for (const displaced of bucket.slice(0, -1)) {\n warnings.push(\n `${codePrefix}:${command}:${winner.layer}:${winner.name}:${displaced.layer}:${displaced.name}`,\n );\n }\n }\n };\n\n collectByCommand(commands.handlers, \"extension_command_handler_collision\");\n collectByCommand(commands.overrides, \"extension_command_override_collision\");\n\n const handlerCommands = new Set(commands.handlers.map((entry) => entry.command));\n const overlapCommands = [...new Set(commands.overrides.map((entry) => entry.command))].filter((command) =>\n handlerCommands.has(command),\n );\n overlapCommands.sort((left, right) => left.localeCompare(right));\n for (const command of overlapCommands) {\n const handlers = commands.handlers.filter((entry) => entry.command === command);\n const overrides = commands.overrides.filter((entry) => entry.command === command);\n for (const override of overrides) {\n for (const handler of handlers) {\n warnings.push(\n `extension_command_override_handler_overlap:${command}:${override.layer}:${override.name}:${handler.layer}:${handler.name}`,\n );\n }\n }\n }\n\n return warnings;\n}\n\nfunction collectRendererCollisionWarnings(renderers: ExtensionRendererRegistry): string[] {\n const grouped = new Map<OutputRendererFormat, RegisteredExtensionRendererOverride[]>();\n for (const entry of renderers.overrides) {\n const bucket = grouped.get(entry.format) ?? [];\n bucket.push(entry);\n grouped.set(entry.format, bucket);\n }\n const warnings: string[] = [];\n for (const format of [...grouped.keys()].sort((left, right) => left.localeCompare(right))) {\n const bucket = grouped.get(format)!;\n if (bucket.length <= 1) {\n continue;\n }\n const winner = bucket[bucket.length - 1];\n for (const displaced of bucket.slice(0, -1)) {\n warnings.push(\n `extension_renderer_collision:${format}:${winner.layer}:${winner.name}:${displaced.layer}:${displaced.name}`,\n );\n }\n }\n return warnings;\n}\n\nfunction collectParserCollisionWarnings(parsers: ExtensionParserRegistry): string[] {\n const warnings: string[] = [];\n const grouped = new Map<string, RegisteredExtensionParserOverride[]>();\n for (const entry of parsers.overrides) {\n const bucket = grouped.get(entry.command) ?? [];\n bucket.push(entry);\n grouped.set(entry.command, bucket);\n }\n for (const command of [...grouped.keys()].sort((left, right) => left.localeCompare(right))) {\n const bucket = grouped.get(command)!;\n if (bucket.length <= 1) {\n continue;\n }\n const winner = bucket[bucket.length - 1];\n for (const displaced of bucket.slice(0, -1)) {\n warnings.push(\n `extension_parser_override_collision:${command}:${winner.layer}:${winner.name}:${displaced.layer}:${displaced.name}`,\n );\n }\n }\n return warnings;\n}\n\nfunction collectPreflightCollisionWarnings(preflight: ExtensionPreflightRegistry): string[] {\n if (preflight.overrides.length <= 1) {\n return [];\n }\n const winner = preflight.overrides[preflight.overrides.length - 1];\n return preflight.overrides.slice(0, -1).map(\n (displaced) =>\n `extension_preflight_override_collision:${winner.layer}:${winner.name}:${displaced.layer}:${displaced.name}`,\n );\n}\n\n// Services whose runtime semantics are chain/fall-through (each override gets a chance);\n// for those, registering multiple overrides is by design, not a collision.\nconst CHAINED_SERVICE_NAMES: ReadonlySet<ExtensionServiceName> = new Set<ExtensionServiceName>([\n \"output_format\",\n]);\n\nfunction collectServiceCollisionWarnings(services: ExtensionServiceRegistry): string[] {\n const warnings: string[] = [];\n const grouped = new Map<ExtensionServiceName, RegisteredExtensionServiceOverride[]>();\n for (const entry of services.overrides) {\n const bucket = grouped.get(entry.service) ?? [];\n bucket.push(entry);\n grouped.set(entry.service, bucket);\n }\n for (const service of [...grouped.keys()].sort((left, right) => left.localeCompare(right))) {\n const bucket = grouped.get(service)!;\n if (bucket.length <= 1) {\n continue;\n }\n if (CHAINED_SERVICE_NAMES.has(service)) {\n continue;\n }\n const winner = bucket[bucket.length - 1];\n for (const displaced of bucket.slice(0, -1)) {\n warnings.push(\n `extension_service_override_collision:${service}:${winner.layer}:${winner.name}:${displaced.layer}:${displaced.name}`,\n );\n }\n }\n return warnings;\n}\n\n/**\n * Implements activate extensions for the public runtime surface of this module.\n */\nexport async function activateExtensions(loadResult: ExtensionLoadResult): Promise<ExtensionActivationResult> {\n const policy = hydrateExtensionPolicy(loadResult.policy ?? DEFAULT_EXTENSION_POLICY);\n const hooks = createEmptyExtensionHookRegistry();\n const commands = createEmptyExtensionCommandRegistry();\n const parsers = createEmptyExtensionParserRegistry();\n const preflight = createEmptyExtensionPreflightRegistry();\n const services = createEmptyExtensionServiceRegistry();\n const renderers = createEmptyExtensionRendererRegistry();\n const registrations = createEmptyExtensionRegistrationRegistry();\n const failed: FailedExtensionActivation[] = [];\n const warnings: string[] = [];\n\n for (const extension of loadResult.loaded) {\n const activatable = resolveActivatableExtension(extension.module);\n if (!activatable) {\n continue;\n }\n\n try {\n await activatable.activate(\n createExtensionApi(\n extension,\n hooks,\n commands,\n parsers,\n preflight,\n services,\n renderers,\n registrations,\n warnings,\n policy,\n ),\n );\n } catch (error: unknown) {\n warnings.push(`extension_activate_failed:${extension.layer}:${extension.name}`);\n const trace = extractRegistrationValidationTrace(error);\n failed.push({\n layer: extension.layer,\n name: extension.name,\n entry_path: extension.entry_path,\n error: formatUnknownError(error),\n trace,\n });\n }\n }\n\n const collisionWarnings = [\n ...collectCommandCollisionWarnings(commands),\n ...collectParserCollisionWarnings(parsers),\n ...collectPreflightCollisionWarnings(preflight),\n ...collectServiceCollisionWarnings(services),\n ...collectRendererCollisionWarnings(renderers),\n ];\n const mergedWarnings = [...new Set([...warnings, ...collisionWarnings])];\n\n return {\n hooks,\n commands,\n parsers,\n preflight,\n services,\n renderers,\n registrations,\n failed,\n warnings: mergedWarnings,\n hook_counts: {\n before_command: hooks.beforeCommand.length,\n after_command: hooks.afterCommand.length,\n on_write: hooks.onWrite.length,\n on_read: hooks.onRead.length,\n on_index: hooks.onIndex.length,\n },\n command_override_count: commands.overrides.length,\n command_handler_count: commands.handlers.length,\n parser_override_count: parsers.overrides.length,\n preflight_override_count: preflight.overrides.length,\n service_override_count: services.overrides.length,\n renderer_override_count: renderers.overrides.length,\n registration_counts: getRegistrationCounts(registrations),\n };\n}\n\nexport const _testOnlyLoader = {\n assertFlagValueTypeAndDefault,\n assertOptionalStringField,\n compareComparableVersions,\n collectCommandCollisionWarnings,\n collectParserCollisionWarnings,\n collectRendererCollisionWarnings,\n collectServiceCollisionWarnings,\n createExtensionApi,\n createRegistrationValidationError,\n evaluatePmMaxVersionCompatibility,\n evaluatePmMinVersionCompatibility,\n extractRegistrationValidationTrace,\n fingerprintPath,\n getRegistrationCounts,\n normalizeCommandDefinitionArguments,\n normalizeExtensionDeactivateTimeout,\n normalizeOptionalStringArrayField,\n normalizeRegistrationRecord,\n normalizeRegistrationRecordList,\n normalizeRuntimeRegistrationRecord,\n parseComparableVersion,\n parseManifest,\n readCurrentPmCliVersion,\n readManagedExtensionSourcePackages,\n resolveExtensionImportHref,\n resolveCurrentPmCliVersion,\n resolveCommandDefinitionAction,\n sanitizeRegistrationValue,\n validateItemFieldDefinitions,\n resetCurrentPmCliVersionCacheForTest: () => {\n currentPmCliVersionPromise = null;\n },\n};\n", "/**\n * Canonical coercion kinds an extension flag can declare via `value_type`\n * (or the deprecated `type` alias). The runtime also accepts a few common\n * aliases (`int`/`integer`/`float` -> number, `bool` -> boolean) so author\n * intent is honored without surprises.\n */\n/** Canonical scalar value kinds accepted by extension command flag definitions. */\nexport type FlagValueKind = \"string\" | \"number\" | \"boolean\";\n\nconst FLAG_VALUE_KIND_BY_ALIAS: Readonly<Record<string, FlagValueKind>> = Object.freeze({\n string: \"string\",\n number: \"number\",\n int: \"number\",\n integer: \"number\",\n float: \"number\",\n boolean: \"boolean\",\n bool: \"boolean\",\n});\n\n/**\n * Resolve a declared flag value type (string) to its canonical kind, or `null`\n * when it is not a recognized type/alias. Matching is trim- and\n * case-insensitive.\n */\nexport function resolveFlagValueKind(raw: unknown): FlagValueKind | null {\n if (typeof raw !== \"string\") {\n return null;\n }\n return FLAG_VALUE_KIND_BY_ALIAS[raw.trim().toLowerCase()] ?? null;\n}\n\n/**\n * Flatten a `list` flag value (or default) into its individual entries the same\n * way the runtime does: nested arrays are flattened and comma-joined strings are\n * split, with surrounding whitespace trimmed and empty segments dropped. No\n * type coercion is applied. Shared by the CLI coercion path and the\n * registration-time default validator so the two never disagree.\n */\nexport function flattenFlagListValue(value: unknown): unknown[] {\n const entries: unknown[] = [];\n const collect = (input: unknown): void => {\n if (Array.isArray(input)) {\n for (const item of input) {\n collect(item);\n }\n return;\n }\n if (typeof input === \"string\") {\n for (const part of input.split(\",\")) {\n const trimmed = part.trim();\n if (trimmed.length > 0) {\n entries.push(trimmed);\n }\n }\n return;\n }\n if (input !== undefined && input !== null) {\n entries.push(input);\n }\n };\n collect(value);\n return entries;\n}\n\n/**\n * Whether a scalar flag default would cleanly coerce under the declared kind,\n * mirroring the runtime coercion rules in `coerceLooseCommandOptionsWithFlagDefinitions`.\n * Used to reject contradictory definitions (e.g. `value_type: \"number\"` with\n * `default: \"abc\"`) at registration instead of letting an untyped value pass\n * through to activation.\n */\nexport function isFlagDefaultValueCoercible(value: string | number | boolean, kind: FlagValueKind): boolean {\n if (kind === \"string\") {\n return true;\n }\n if (kind === \"number\") {\n if (typeof value === \"number\") {\n return Number.isFinite(value);\n }\n return typeof value === \"string\" && value.trim().length > 0 && Number.isFinite(Number(value));\n }\n if (typeof value === \"boolean\") {\n return true;\n }\n return typeof value === \"string\" && [\"true\", \"false\", \"1\", \"0\"].includes(value.trim().toLowerCase());\n}\n", "/**\n * @module core/shared/levenshtein\n *\n * Provides shared primitives and utilities for Levenshtein.\n */\n// Optimal String Alignment (OSA) Damerau–Levenshtein: counts a single adjacent\n// transposition as one edit (e.g. \"titel\" vs \"title\", \"lst\" vs \"lts\" -> \"list\")\n// so flag/command typo suggestions catch transpositions at the same maxDistance\n// budget plain Levenshtein uses for substitutions. pm-fl0c #6 (2026-05-28):\n// fixed because plain Levenshtein scored \"titel\"->\"title\" at 2, defeating the\n// length-5 maxDistance=1 ceiling in suggestNearestLongFlags.\n/**\n * Computes bounded Levenshtein distance for typo suggestions without scanning unnecessary suffixes.\n */\nexport function levenshteinDistanceWithinLimit(left: string, right: string, limit: number): number | null {\n if (left === right) {\n return 0;\n }\n if (Math.abs(left.length - right.length) > limit) {\n return null;\n }\n const width = right.length + 1;\n const beforePrevious = new Array<number>(width);\n const previous = new Array<number>(width);\n const current = new Array<number>(width);\n for (let column = 0; column < width; column += 1) {\n beforePrevious[column] = 0;\n previous[column] = column;\n }\n for (let row = 1; row <= left.length; row += 1) {\n current[0] = row;\n let rowMin = current[0];\n for (let column = 1; column <= right.length; column += 1) {\n const cost = left[row - 1] === right[column - 1] ? 0 : 1;\n const substitution = previous[column - 1] + cost;\n const insertion = current[column - 1] + 1;\n const deletion = previous[column] + 1;\n let candidate = Math.min(substitution, insertion, deletion);\n if (\n row > 1 &&\n column > 1 &&\n left[row - 1] === right[column - 2] &&\n left[row - 2] === right[column - 1]\n ) {\n candidate = Math.min(candidate, beforePrevious[column - 2] + 1);\n }\n current[column] = candidate;\n if (candidate < rowMin) {\n rowMin = candidate;\n }\n }\n if (rowMin > limit) {\n return null;\n }\n for (let column = 0; column < width; column += 1) {\n beforePrevious[column] = previous[column];\n previous[column] = current[column];\n }\n }\n const result = previous[right.length];\n return result <= limit ? result : null;\n}\n", "/**\n * @module core/extensions/item-field-types\n *\n * Implements extension runtime contracts and governance for Item Field Types.\n */\nimport { levenshteinDistanceWithinLimit } from \"../shared/levenshtein.js\";\n\n/**\n * Canonical coercion kinds accepted for extension-registered custom item fields.\n *\n * A `registerItemFields` definition declares one of these as its `type`; the\n * value is later coerced by that kind (see `coerceRegisteredFieldValue`). Keep\n * this list in lock-step with the coercion switch in `item-fields.ts`.\n */\nexport const KNOWN_ITEM_FIELD_TYPES = [\"string\", \"number\", \"boolean\", \"array\", \"object\"] as const;\n/**\n * Restricts known item field type values accepted by command, SDK, and storage contracts.\n */\nexport type KnownItemFieldType = (typeof KNOWN_ITEM_FIELD_TYPES)[number];\n\n/**\n * Normalize a declared field type to its canonical kind, or `null` when the\n * value is not a known type. Matching is trim- and case-insensitive.\n */\nexport function normalizeItemFieldType(value: string): KnownItemFieldType | null {\n const normalized = value.trim().toLowerCase();\n return (KNOWN_ITEM_FIELD_TYPES as readonly string[]).includes(normalized)\n ? (normalized as KnownItemFieldType)\n : null;\n}\n\n/**\n * Suggest a known field type for a typo'd declaration (e.g. `\"strnig\"` ->\n * `\"string\"`), using the shared OSA Damerau–Levenshtein helper so adjacent\n * transpositions count as a single edit. Returns the first canonical type within\n * the proportional edit budget (in declaration order — the kinds are distinct\n * enough that at most one matches), or `null` when nothing is close enough.\n */\nexport function suggestKnownItemFieldType(value: string): KnownItemFieldType | null {\n const normalized = value.trim().toLowerCase();\n if (normalized.length === 0) {\n return null;\n }\n const limit = Math.max(1, Math.floor(normalized.length * 0.34));\n for (const candidate of KNOWN_ITEM_FIELD_TYPES) {\n if (levenshteinDistanceWithinLimit(normalized, candidate, limit) !== null) {\n return candidate;\n }\n }\n return null;\n}\n", "/**\n * @module core/extensions/extension-capability-aliases\n *\n * Implements extension runtime contracts and governance for Extension Capability Aliases.\n */\nimport {\n KNOWN_EXTENSION_CAPABILITIES,\n EXTENSION_CAPABILITY_CONTRACT_VERSION,\n EXTENSION_CAPABILITY_LEGACY_ALIASES,\n type ExtensionCapability,\n type ExtensionLayer,\n type LegacyExtensionCapabilityAliasMapping,\n type UnknownExtensionCapabilityWarningDetails,\n} from \"./extension-types.js\";\nimport { levenshteinDistanceWithinLimit } from \"../shared/levenshtein.js\";\n\n/**\n * Implements normalize names for the public runtime surface of this module.\n */\nexport function normalizeNames(values: string[]): string[] {\n return [...new Set(values.map((value) => value.trim()).filter((value) => value.length > 0))].sort((a, b) =>\n a.localeCompare(b),\n );\n}\n\n/**\n * Implements check whether known extension capability for the public runtime surface of this module.\n */\nexport function isKnownExtensionCapability(value: string): value is ExtensionCapability {\n return (KNOWN_EXTENSION_CAPABILITIES as readonly string[]).includes(value);\n}\n\n/**\n * Trim and lower-case a capability token, returning it only when it is a known\n * canonical capability (otherwise `null`). Shared so capability normalization\n * and known-capability filtering stay identical across the doctor and the SDK\n * least-privilege helpers.\n */\nexport function normalizeKnownExtensionCapability(value: string): ExtensionCapability | null {\n const normalized = value.trim().toLowerCase();\n return isKnownExtensionCapability(normalized) ? normalized : null;\n}\n\n/**\n * Implements collect unknown extension capabilities for the public runtime surface of this module.\n */\nexport function collectUnknownExtensionCapabilities(capabilities: readonly string[]): string[] {\n return capabilities.filter((capability) => !isKnownExtensionCapability(capability));\n}\n\n/**\n * Implements resolve legacy extension capability alias for the public runtime surface of this module.\n */\nexport function resolveLegacyExtensionCapabilityAlias(capability: string): ExtensionCapability | null {\n const normalized = capability.trim().toLowerCase();\n if (normalized.length === 0) {\n return null;\n }\n return EXTENSION_CAPABILITY_LEGACY_ALIASES[normalized] ?? null;\n}\n\n/**\n * Implements normalize manifest capabilities for the public runtime surface of this module.\n */\nexport function normalizeManifestCapabilities(rawCapabilities: readonly string[]): {\n capabilities: string[];\n legacy_aliases: LegacyExtensionCapabilityAliasMapping[];\n} {\n const normalizedCapabilities = normalizeNames([...rawCapabilities].map((value) => value.toLowerCase()));\n const remappedCapabilities: string[] = [];\n const legacyAliases: LegacyExtensionCapabilityAliasMapping[] = [];\n for (const capability of normalizedCapabilities) {\n const legacyAliasTarget = resolveLegacyExtensionCapabilityAlias(capability);\n if (legacyAliasTarget) {\n remappedCapabilities.push(legacyAliasTarget);\n legacyAliases.push({\n alias: capability,\n target: legacyAliasTarget,\n });\n continue;\n }\n remappedCapabilities.push(capability);\n }\n const dedupedLegacyAliases = [...new Map(legacyAliases.map((entry) => [`${entry.alias}>${entry.target}`, entry])).values()].sort(\n (left, right) => left.alias.localeCompare(right.alias),\n );\n return {\n capabilities: normalizeNames(remappedCapabilities),\n legacy_aliases: dedupedLegacyAliases,\n };\n}\n\n/**\n * Implements suggest known extension capability for the public runtime surface of this module.\n */\nexport function suggestKnownExtensionCapability(capability: string): string | null {\n const normalized = capability.trim().toLowerCase();\n if (normalized.length === 0) {\n return null;\n }\n const legacyAlias = resolveLegacyExtensionCapabilityAlias(normalized);\n if (legacyAlias) {\n return legacyAlias;\n }\n const maxDistance = Math.max(1, Math.floor(normalized.length * 0.34));\n let bestMatch: string | null = null;\n let bestDistance = Number.POSITIVE_INFINITY;\n for (const candidate of KNOWN_EXTENSION_CAPABILITIES) {\n const distance = levenshteinDistanceWithinLimit(normalized, candidate, maxDistance);\n if (distance !== null && distance < bestDistance) {\n bestDistance = distance;\n bestMatch = candidate;\n }\n }\n return bestMatch;\n}\n\n/**\n * Implements format unknown extension capability warning for the public runtime surface of this module.\n */\nexport function formatUnknownExtensionCapabilityWarning(layer: ExtensionLayer, name: string, capability: string): string {\n const allowed = KNOWN_EXTENSION_CAPABILITIES.join(\",\");\n const suggested = suggestKnownExtensionCapability(capability) ?? \"none\";\n return `extension_capability_unknown:${layer}:${name}:${capability}:allowed=${allowed}:suggested=${suggested}`;\n}\n\n/**\n * Implements format legacy extension capability alias warning for the public runtime surface of this module.\n */\nexport function formatLegacyExtensionCapabilityAliasWarning(\n layer: ExtensionLayer,\n name: string,\n aliases: readonly LegacyExtensionCapabilityAliasMapping[],\n): string {\n const aliasesToken = aliases.map((entry) => `${entry.alias}>${entry.target}`).join(\",\");\n return `extension_capability_legacy_alias:${layer}:${name}:aliases=${aliasesToken}`;\n}\n\n\n/**\n * Implements parse unknown extension capability warning for the public runtime surface of this module.\n */\nexport function parseUnknownExtensionCapabilityWarning(\n warning: string,\n): UnknownExtensionCapabilityWarningDetails | null {\n const match = /^extension_capability_unknown:(global|project):([^:]+):([^:]+):allowed=([^:]+):suggested=([^:]+)$/.exec(\n warning.trim(),\n );\n if (!match) {\n return null;\n }\n const [, layerRaw, name, capability, allowedRaw, suggestedRaw] = match;\n const layer = layerRaw as ExtensionLayer;\n const allowed_capabilities = allowedRaw\n .split(\",\")\n .map((value) => value.trim())\n .filter((value) => value.length > 0);\n const legacyAlias = resolveLegacyExtensionCapabilityAlias(capability);\n const suggestedFromWarning = suggestedRaw === \"none\" ? undefined : suggestedRaw;\n const suggested_capability = suggestedFromWarning ?? legacyAlias ?? undefined;\n const suggestion_source = suggested_capability\n ? legacyAlias === suggested_capability\n ? \"legacy_alias\"\n : \"nearest_match\"\n : undefined;\n return {\n layer,\n name,\n capability,\n allowed_capabilities,\n capability_contract_version: EXTENSION_CAPABILITY_CONTRACT_VERSION,\n suggested_capability,\n suggestion_source,\n legacy_alias_target: legacyAlias ?? undefined,\n };\n}\n\n/**\n * Implements parse legacy extension capability alias warning for the public runtime surface of this module.\n */\nexport function parseLegacyExtensionCapabilityAliasWarning(warning: string): UnknownExtensionCapabilityWarningDetails[] {\n const match = /^extension_capability_legacy_alias:(global|project):([^:]+):aliases=(.+)$/.exec(warning.trim());\n if (!match) {\n return [];\n }\n const [, layerRaw, name, aliasesRaw] = match;\n const layer = layerRaw as ExtensionLayer;\n const allowedCapabilities = [...KNOWN_EXTENSION_CAPABILITIES];\n const parsed: UnknownExtensionCapabilityWarningDetails[] = [];\n for (const token of aliasesRaw.split(\",\")) {\n const [rawAlias, rawTarget] = token.split(\">\");\n const alias = rawAlias?.trim();\n const target = rawTarget?.trim().toLowerCase();\n if (!alias || !target || !isKnownExtensionCapability(target)) {\n continue;\n }\n parsed.push({\n layer,\n name,\n capability: alias,\n allowed_capabilities: allowedCapabilities,\n capability_contract_version: EXTENSION_CAPABILITY_CONTRACT_VERSION,\n suggested_capability: target,\n suggestion_source: \"legacy_alias\",\n legacy_alias_target: target,\n });\n }\n return parsed;\n}\n", "/**\n * @module core/extensions/extension-policy\n *\n * Implements extension runtime contracts and governance for Extension Policy.\n */\nimport {\n KNOWN_EXTENSION_POLICY_MODES,\n KNOWN_EXTENSION_POLICY_SURFACES,\n KNOWN_EXTENSION_SANDBOX_PROFILES,\n KNOWN_EXTENSION_TRUST_MODES,\n KNOWN_PM_MAX_VERSION_EXCEEDED_MODES,\n type ExtensionCapability,\n type ExtensionGovernancePolicy,\n type ExtensionLayer,\n type ExtensionPolicyMode,\n type ExtensionPolicyOverride,\n type ExtensionPolicySurface,\n type ExtensionSandboxProfile,\n type ExtensionTrustMode,\n type PmMaxVersionExceededMode,\n type PmMaxVersionExceededModeSetting,\n} from \"./extension-types.js\";\nimport { isKnownExtensionCapability } from \"./extension-capability-aliases.js\";\nimport { normalizeCommandName } from \"./extension-runtime-helpers.js\";\nimport type { PmSettings } from \"../../types/index.js\";\n\ninterface NormalizedExtensionPolicyOverride {\n name: string;\n disabled: boolean;\n requireTrusted: boolean;\n requireProvenance: boolean;\n sandboxProfile?: ExtensionSandboxProfile;\n allowedCapabilities: Set<string>;\n blockedCapabilities: Set<string>;\n allowedSurfaces: Set<string>;\n blockedSurfaces: Set<string>;\n allowedCommands: Set<string>;\n blockedCommands: Set<string>;\n allowedActions: Set<string>;\n blockedActions: Set<string>;\n allowedServices: Set<string>;\n blockedServices: Set<string>;\n}\n\n/** Concrete per-layer resolution of `pm_max_version_exceeded_mode` (default: block). */\nexport interface NormalizedPmMaxVersionExceededMode {\n global: PmMaxVersionExceededMode;\n project: PmMaxVersionExceededMode;\n}\n\n/**\n * Documents the normalized extension policy payload exchanged by command, SDK, and package integrations.\n */\nexport interface NormalizedExtensionPolicy {\n mode: ExtensionPolicyMode;\n trustMode: ExtensionTrustMode;\n pmMaxVersionExceededMode: NormalizedPmMaxVersionExceededMode;\n requireProvenance: boolean;\n trustedExtensions: Set<string>;\n defaultSandboxProfile: ExtensionSandboxProfile;\n allowedExtensions: Set<string>;\n blockedExtensions: Set<string>;\n allowedCapabilities: Set<string>;\n blockedCapabilities: Set<string>;\n allowedSurfaces: Set<string>;\n blockedSurfaces: Set<string>;\n allowedCommands: Set<string>;\n blockedCommands: Set<string>;\n allowedActions: Set<string>;\n blockedActions: Set<string>;\n allowedServices: Set<string>;\n blockedServices: Set<string>;\n overridesByName: Map<string, NormalizedExtensionPolicyOverride>;\n warnings: string[];\n}\n\n/**\n * Documents the policy extension ref payload exchanged by command, SDK, and package integrations.\n */\nexport interface PolicyExtensionRef {\n layer: ExtensionLayer;\n name: string;\n trusted?: boolean;\n provenanceVerified?: boolean;\n sandboxProfile?: ExtensionSandboxProfile;\n permissions?: Record<string, boolean | undefined>;\n}\n\nfunction normalizePolicyName(value: string | undefined): string {\n if (typeof value !== \"string\") {\n return \"\";\n }\n return value.trim().toLowerCase();\n}\n\nfunction normalizePolicyStringSet(values: readonly string[] | undefined): Set<string> {\n return new Set(\n (values ?? [])\n .map((value) => value.trim().toLowerCase())\n .filter((value) => value.length > 0),\n );\n}\n\nfunction normalizePolicySurfaceToken(value: string): string {\n const normalized = value.trim().toLowerCase();\n if (normalized.length === 0) {\n return \"\";\n }\n const segments = normalized\n .split(/[.:/]/)\n .map((segment) => segment.replace(/[\\s_-]+/g, \"\"))\n .filter((segment) => segment.length > 0);\n if (segments.length === 0) {\n return \"\";\n }\n if (segments.length === 1) {\n return segments[0];\n }\n return `${segments[0]}.${segments.slice(1).join(\"\")}`;\n}\n\nfunction normalizePolicySurfaceSet(values: readonly string[] | undefined): Set<string> {\n return new Set(\n (values ?? [])\n .map((value) => normalizePolicySurfaceToken(value))\n .filter((value) => value.length > 0),\n );\n}\n\nfunction normalizePolicyMode(value: string | undefined): ExtensionPolicyMode {\n const normalized = normalizePolicyName(value);\n if ((KNOWN_EXTENSION_POLICY_MODES as readonly string[]).includes(normalized)) {\n return normalized as ExtensionPolicyMode;\n }\n return \"off\";\n}\n\nfunction normalizePolicyTrustMode(value: string | undefined): ExtensionTrustMode {\n const normalized = normalizePolicyName(value);\n if ((KNOWN_EXTENSION_TRUST_MODES as readonly string[]).includes(normalized)) {\n return normalized as ExtensionTrustMode;\n }\n return \"off\";\n}\n\n/**\n * Implements normalize policy sandbox profile for the public runtime surface of this module.\n */\nexport function normalizePolicySandboxProfile(value: string | undefined): ExtensionSandboxProfile {\n const normalized = normalizePolicyName(value);\n if ((KNOWN_EXTENSION_SANDBOX_PROFILES as readonly string[]).includes(normalized)) {\n return normalized as ExtensionSandboxProfile;\n }\n return \"none\";\n}\n\nfunction normalizePmMaxVersionExceededModeValue(value: unknown): PmMaxVersionExceededMode | undefined {\n if (typeof value !== \"string\") {\n return undefined;\n }\n const normalized = value.trim().toLowerCase();\n return (KNOWN_PM_MAX_VERSION_EXCEEDED_MODES as readonly string[]).includes(normalized)\n ? (normalized as PmMaxVersionExceededMode)\n : undefined;\n}\n\n/**\n * Resolve `extensions.policy.pm_max_version_exceeded_mode` to a concrete\n * per-layer mode map. Accepts a single mode string (applied to both layers) or\n * a `{ global?, project? }` override map; anything unset or unknown defaults to\n * the safe `\"block\"`.\n */\nexport function normalizePmMaxVersionExceededMode(\n value: PmMaxVersionExceededModeSetting | undefined,\n): NormalizedPmMaxVersionExceededMode {\n if (typeof value === \"string\") {\n const mode = normalizePmMaxVersionExceededModeValue(value) ?? \"block\";\n return { global: mode, project: mode };\n }\n if (typeof value === \"object\" && value !== null && !Array.isArray(value)) {\n return {\n global: normalizePmMaxVersionExceededModeValue(value.global) ?? \"block\",\n project: normalizePmMaxVersionExceededModeValue(value.project) ?? \"block\",\n };\n }\n return { global: \"block\", project: \"block\" };\n}\n\nfunction serializePmMaxVersionExceededMode(\n mode: NormalizedPmMaxVersionExceededMode,\n): PmMaxVersionExceededModeSetting {\n return mode.global === mode.project ? mode.global : { global: mode.global, project: mode.project };\n}\n\nfunction toSortedList(values: Iterable<string>): string[] {\n return [...new Set(values)].sort((left, right) => left.localeCompare(right));\n}\n\nfunction buildExtensionPolicyOverride(\n rawOverride: ExtensionPolicyOverride,\n): { name: string; normalized: NormalizedExtensionPolicyOverride } | null {\n const name = normalizePolicyName(rawOverride.name);\n if (name.length === 0) {\n return null;\n }\n return {\n name,\n normalized: {\n name,\n disabled: rawOverride.disabled === true,\n requireTrusted: rawOverride.require_trusted === true,\n requireProvenance: rawOverride.require_provenance === true,\n sandboxProfile:\n rawOverride.sandbox_profile !== undefined\n ? normalizePolicySandboxProfile(rawOverride.sandbox_profile)\n : undefined,\n allowedCapabilities: normalizePolicyStringSet(rawOverride.allowed_capabilities),\n blockedCapabilities: normalizePolicyStringSet(rawOverride.blocked_capabilities),\n allowedSurfaces: normalizePolicySurfaceSet(rawOverride.allowed_surfaces),\n blockedSurfaces: normalizePolicySurfaceSet(rawOverride.blocked_surfaces),\n allowedCommands: normalizePolicyStringSet(rawOverride.allowed_commands),\n blockedCommands: normalizePolicyStringSet(rawOverride.blocked_commands),\n allowedActions: normalizePolicyStringSet(rawOverride.allowed_actions),\n blockedActions: normalizePolicyStringSet(rawOverride.blocked_actions),\n allowedServices: normalizePolicyStringSet(rawOverride.allowed_services),\n blockedServices: normalizePolicyStringSet(rawOverride.blocked_services),\n },\n };\n}\n\nfunction collectExtensionPolicyOverrides(\n rawOverrides: readonly ExtensionPolicyOverride[] | undefined,\n): Map<string, NormalizedExtensionPolicyOverride> {\n const overridesByName = new Map<string, NormalizedExtensionPolicyOverride>();\n for (const rawOverride of rawOverrides ?? []) {\n const built = buildExtensionPolicyOverride(rawOverride);\n if (built) {\n overridesByName.set(built.name, built.normalized);\n }\n }\n return overridesByName;\n}\n\n/**\n * Implements normalize extension policy for the public runtime surface of this module.\n */\nexport function normalizeExtensionPolicy(settings: PmSettings): NormalizedExtensionPolicy {\n const policy = settings.extensions.policy as ExtensionGovernancePolicy | undefined;\n const mode = normalizePolicyMode(policy?.mode);\n const trustMode = normalizePolicyTrustMode(policy?.trust_mode);\n const pmMaxVersionExceededMode = normalizePmMaxVersionExceededMode(policy?.pm_max_version_exceeded_mode);\n const requireProvenance = policy?.require_provenance === true;\n const trustedExtensions = normalizePolicyStringSet(policy?.trusted_extensions);\n const defaultSandboxProfile = normalizePolicySandboxProfile(policy?.default_sandbox_profile);\n const allowedExtensions = normalizePolicyStringSet(policy?.allowed_extensions);\n const blockedExtensions = normalizePolicyStringSet(policy?.blocked_extensions);\n const allowedCapabilities = normalizePolicyStringSet(policy?.allowed_capabilities);\n const blockedCapabilities = normalizePolicyStringSet(policy?.blocked_capabilities);\n const allowedSurfaces = normalizePolicySurfaceSet(policy?.allowed_surfaces);\n const blockedSurfaces = normalizePolicySurfaceSet(policy?.blocked_surfaces);\n const allowedCommands = normalizePolicyStringSet(policy?.allowed_commands);\n const blockedCommands = normalizePolicyStringSet(policy?.blocked_commands);\n const allowedActions = normalizePolicyStringSet(policy?.allowed_actions);\n const blockedActions = normalizePolicyStringSet(policy?.blocked_actions);\n const allowedServices = normalizePolicyStringSet(policy?.allowed_services);\n const blockedServices = normalizePolicyStringSet(policy?.blocked_services);\n const overridesByName = collectExtensionPolicyOverrides(policy?.extension_overrides);\n\n const warnings: string[] = [];\n for (const capability of toSortedList([...allowedCapabilities, ...blockedCapabilities])) {\n if (!isKnownExtensionCapability(capability)) {\n warnings.push(`extension_policy_unknown_capability:${capability}`);\n }\n }\n for (const override of [...overridesByName.values()].sort((left, right) => left.name.localeCompare(right.name))) {\n for (const capability of toSortedList([...override.allowedCapabilities, ...override.blockedCapabilities])) {\n if (!isKnownExtensionCapability(capability)) {\n warnings.push(`extension_policy_unknown_capability:${override.name}:${capability}`);\n }\n }\n }\n const knownSurfaces = new Set<string>(KNOWN_EXTENSION_POLICY_SURFACES);\n for (const surface of toSortedList([...allowedSurfaces, ...blockedSurfaces])) {\n if (!knownSurfaces.has(surface)) {\n warnings.push(`extension_policy_unknown_surface:${surface}`);\n }\n }\n for (const override of [...overridesByName.values()].sort((left, right) => left.name.localeCompare(right.name))) {\n for (const surface of toSortedList([...override.allowedSurfaces, ...override.blockedSurfaces])) {\n if (!knownSurfaces.has(surface)) {\n warnings.push(`extension_policy_unknown_surface:${override.name}:${surface}`);\n }\n }\n }\n\n return {\n mode,\n trustMode,\n pmMaxVersionExceededMode,\n requireProvenance,\n trustedExtensions,\n defaultSandboxProfile,\n allowedExtensions,\n blockedExtensions,\n allowedCapabilities,\n blockedCapabilities,\n allowedSurfaces,\n blockedSurfaces,\n allowedCommands,\n blockedCommands,\n allowedActions,\n blockedActions,\n allowedServices,\n blockedServices,\n overridesByName,\n warnings: [...new Set(warnings)].sort((left, right) => left.localeCompare(right)),\n };\n}\n\n/**\n * Implements serialize extension policy for the public runtime surface of this module.\n */\nexport function serializeExtensionPolicy(policy: NormalizedExtensionPolicy): ExtensionGovernancePolicy {\n const overrides = [...policy.overridesByName.values()]\n .sort((left, right) => left.name.localeCompare(right.name))\n .map((override) => ({\n name: override.name,\n ...(override.disabled ? { disabled: true } : {}),\n ...(override.requireTrusted ? { require_trusted: true } : {}),\n ...(override.requireProvenance ? { require_provenance: true } : {}),\n ...(override.sandboxProfile ? { sandbox_profile: override.sandboxProfile } : {}),\n ...(override.allowedCapabilities.size > 0 ? { allowed_capabilities: toSortedList(override.allowedCapabilities) } : {}),\n ...(override.blockedCapabilities.size > 0 ? { blocked_capabilities: toSortedList(override.blockedCapabilities) } : {}),\n ...(override.allowedSurfaces.size > 0 ? { allowed_surfaces: toSortedList(override.allowedSurfaces) } : {}),\n ...(override.blockedSurfaces.size > 0 ? { blocked_surfaces: toSortedList(override.blockedSurfaces) } : {}),\n ...(override.allowedCommands.size > 0 ? { allowed_commands: toSortedList(override.allowedCommands) } : {}),\n ...(override.blockedCommands.size > 0 ? { blocked_commands: toSortedList(override.blockedCommands) } : {}),\n ...(override.allowedActions.size > 0 ? { allowed_actions: toSortedList(override.allowedActions) } : {}),\n ...(override.blockedActions.size > 0 ? { blocked_actions: toSortedList(override.blockedActions) } : {}),\n ...(override.allowedServices.size > 0 ? { allowed_services: toSortedList(override.allowedServices) } : {}),\n ...(override.blockedServices.size > 0 ? { blocked_services: toSortedList(override.blockedServices) } : {}),\n }));\n return {\n mode: policy.mode,\n trust_mode: policy.trustMode,\n pm_max_version_exceeded_mode: serializePmMaxVersionExceededMode(policy.pmMaxVersionExceededMode),\n require_provenance: policy.requireProvenance,\n trusted_extensions: toSortedList(policy.trustedExtensions),\n default_sandbox_profile: policy.defaultSandboxProfile,\n allowed_extensions: toSortedList(policy.allowedExtensions),\n blocked_extensions: toSortedList(policy.blockedExtensions),\n allowed_capabilities: toSortedList(policy.allowedCapabilities),\n blocked_capabilities: toSortedList(policy.blockedCapabilities),\n allowed_surfaces: toSortedList(policy.allowedSurfaces),\n blocked_surfaces: toSortedList(policy.blockedSurfaces),\n allowed_commands: toSortedList(policy.allowedCommands),\n blocked_commands: toSortedList(policy.blockedCommands),\n allowed_actions: toSortedList(policy.allowedActions),\n blocked_actions: toSortedList(policy.blockedActions),\n allowed_services: toSortedList(policy.allowedServices),\n blocked_services: toSortedList(policy.blockedServices),\n extension_overrides: overrides,\n };\n}\n\n/**\n * Implements hydrate extension policy for the public runtime surface of this module.\n */\nexport function hydrateExtensionPolicy(policy: ExtensionGovernancePolicy): NormalizedExtensionPolicy {\n const overridesByName = collectExtensionPolicyOverrides(policy.extension_overrides);\n return {\n mode: normalizePolicyMode(policy.mode),\n trustMode: normalizePolicyTrustMode(policy.trust_mode),\n pmMaxVersionExceededMode: normalizePmMaxVersionExceededMode(policy.pm_max_version_exceeded_mode),\n requireProvenance: policy.require_provenance === true,\n trustedExtensions: normalizePolicyStringSet(policy.trusted_extensions),\n defaultSandboxProfile: normalizePolicySandboxProfile(policy.default_sandbox_profile),\n allowedExtensions: normalizePolicyStringSet(policy.allowed_extensions),\n blockedExtensions: normalizePolicyStringSet(policy.blocked_extensions),\n allowedCapabilities: normalizePolicyStringSet(policy.allowed_capabilities),\n blockedCapabilities: normalizePolicyStringSet(policy.blocked_capabilities),\n allowedSurfaces: normalizePolicySurfaceSet(policy.allowed_surfaces),\n blockedSurfaces: normalizePolicySurfaceSet(policy.blocked_surfaces),\n allowedCommands: normalizePolicyStringSet(policy.allowed_commands),\n blockedCommands: normalizePolicyStringSet(policy.blocked_commands),\n allowedActions: normalizePolicyStringSet(policy.allowed_actions),\n blockedActions: normalizePolicyStringSet(policy.blocked_actions),\n allowedServices: normalizePolicyStringSet(policy.allowed_services),\n blockedServices: normalizePolicyStringSet(policy.blocked_services),\n overridesByName,\n warnings: [],\n };\n}\n\nfunction resolvePolicyOverride(\n policy: NormalizedExtensionPolicy,\n extensionName: string,\n): NormalizedExtensionPolicyOverride | null {\n return policy.overridesByName.get(normalizePolicyName(extensionName)) ?? null;\n}\n\nfunction evaluatePolicySet(\n allowed: Set<string>,\n blocked: Set<string>,\n value: string,\n notAllowlistedReason: string,\n blockedReason: string,\n): string | null {\n if (blocked.has(value)) {\n return blockedReason;\n }\n if (allowed.size > 0 && !allowed.has(value)) {\n return notAllowlistedReason;\n }\n return null;\n}\n\nfunction resolvePolicyCapabilityReason(\n policy: NormalizedExtensionPolicy,\n extension: PolicyExtensionRef,\n capability: string,\n): string | null {\n const normalizedCapability = capability.trim().toLowerCase();\n const override = resolvePolicyOverride(policy, extension.name);\n const allowed = override && override.allowedCapabilities.size > 0 ? override.allowedCapabilities : policy.allowedCapabilities;\n const blocked = new Set<string>([\n ...policy.blockedCapabilities,\n ...(override ? override.blockedCapabilities : []),\n ]);\n return evaluatePolicySet(\n allowed,\n blocked,\n normalizedCapability,\n \"capability_not_allowlisted\",\n \"capability_blocked\",\n );\n}\n\nfunction resolvePolicySurfaceReason(\n policy: NormalizedExtensionPolicy,\n extension: PolicyExtensionRef,\n surface: ExtensionPolicySurface,\n): string | null {\n const override = resolvePolicyOverride(policy, extension.name);\n const allowed = override && override.allowedSurfaces.size > 0 ? override.allowedSurfaces : policy.allowedSurfaces;\n const blocked = new Set<string>([\n ...policy.blockedSurfaces,\n ...(override ? override.blockedSurfaces : []),\n ]);\n return evaluatePolicySet(allowed, blocked, surface, \"surface_not_allowlisted\", \"surface_blocked\");\n}\n\nfunction resolvePolicyCommandReason(\n policy: NormalizedExtensionPolicy,\n extension: PolicyExtensionRef,\n command: string,\n): string | null {\n const normalizedCommand = normalizeCommandName(command);\n if (normalizedCommand.length === 0) {\n return null;\n }\n const override = resolvePolicyOverride(policy, extension.name);\n const allowed = override && override.allowedCommands.size > 0 ? override.allowedCommands : policy.allowedCommands;\n const blocked = new Set<string>([\n ...policy.blockedCommands,\n ...(override ? override.blockedCommands : []),\n ]);\n return evaluatePolicySet(allowed, blocked, normalizedCommand, \"command_not_allowlisted\", \"command_blocked\");\n}\n\nfunction resolvePolicyActionReason(\n policy: NormalizedExtensionPolicy,\n extension: PolicyExtensionRef,\n action: string,\n): string | null {\n const normalizedAction = normalizePolicyName(action).replace(/\\s+/g, \"-\");\n if (normalizedAction.length === 0) {\n return null;\n }\n const override = resolvePolicyOverride(policy, extension.name);\n const allowed = override && override.allowedActions.size > 0 ? override.allowedActions : policy.allowedActions;\n const blocked = new Set<string>([\n ...policy.blockedActions,\n ...(override ? override.blockedActions : []),\n ]);\n return evaluatePolicySet(allowed, blocked, normalizedAction, \"action_not_allowlisted\", \"action_blocked\");\n}\n\nfunction resolvePolicyServiceReason(\n policy: NormalizedExtensionPolicy,\n extension: PolicyExtensionRef,\n service: string,\n): string | null {\n const normalizedService = normalizePolicyName(service);\n if (normalizedService.length === 0) {\n return null;\n }\n const override = resolvePolicyOverride(policy, extension.name);\n const allowed = override && override.allowedServices.size > 0 ? override.allowedServices : policy.allowedServices;\n const blocked = new Set<string>([\n ...policy.blockedServices,\n ...(override ? override.blockedServices : []),\n ]);\n return evaluatePolicySet(allowed, blocked, normalizedService, \"service_not_allowlisted\", \"service_blocked\");\n}\n\nfunction resolvePolicyExtensionReason(policy: NormalizedExtensionPolicy, extension: PolicyExtensionRef): string | null {\n const name = normalizePolicyName(extension.name);\n const override = resolvePolicyOverride(policy, extension.name);\n if (override?.disabled === true) {\n return \"extension_override_disabled\";\n }\n return evaluatePolicySet(\n policy.allowedExtensions,\n policy.blockedExtensions,\n name,\n \"extension_not_allowlisted\",\n \"extension_blocked\",\n );\n}\n\nfunction resolvePolicyTrustReason(policy: NormalizedExtensionPolicy, extension: PolicyExtensionRef): string | null {\n if (policy.trustMode === \"off\") {\n return null;\n }\n const override = resolvePolicyOverride(policy, extension.name);\n const name = normalizePolicyName(extension.name);\n const trusted = extension.trusted === true;\n const provenanceVerified = extension.provenanceVerified === true;\n\n if (policy.trustedExtensions.size > 0 && !policy.trustedExtensions.has(name)) {\n return \"extension_not_trusted\";\n }\n if ((override?.requireTrusted === true || policy.trustMode === \"warn\" || policy.trustMode === \"enforce\") && !trusted) {\n return \"extension_untrusted\";\n }\n if ((policy.requireProvenance || override?.requireProvenance === true) && !provenanceVerified) {\n return \"provenance_missing_or_unverified\";\n }\n return null;\n}\n\nfunction resolvePolicySandboxReason(policy: NormalizedExtensionPolicy, extension: PolicyExtensionRef): string | null {\n if (policy.mode === \"off\") {\n return null;\n }\n const override = resolvePolicyOverride(policy, extension.name);\n const profile = override?.sandboxProfile ?? extension.sandboxProfile ?? policy.defaultSandboxProfile;\n if (profile === \"none\") {\n return null;\n }\n const permissions = extension.permissions;\n if (!permissions) {\n return \"sandbox_permissions_missing\";\n }\n\n const hasPermission = (name: keyof typeof permissions): boolean => permissions[name] === true;\n if (profile === \"restricted\") {\n if (hasPermission(\"process_spawn\")) {\n return \"sandbox_restricted_disallows_process_spawn\";\n }\n if (hasPermission(\"env_write\")) {\n return \"sandbox_restricted_disallows_env_write\";\n }\n return null;\n }\n\n // Remaining profile branch is strict (none/restricted returned above).\n if (hasPermission(\"process_spawn\")) {\n return \"sandbox_strict_disallows_process_spawn\";\n }\n if (hasPermission(\"network\")) {\n return \"sandbox_strict_disallows_network\";\n }\n if (hasPermission(\"fs_write\")) {\n return \"sandbox_strict_disallows_fs_write\";\n }\n if (hasPermission(\"env_write\")) {\n return \"sandbox_strict_disallows_env_write\";\n }\n return null;\n}\n\nfunction buildPolicyWarning(\n mode: \"blocked\" | \"violation\",\n scope: \"extension\" | \"capability\" | \"registration\" | \"trust\",\n extension: PolicyExtensionRef,\n reason: string,\n details: Record<string, string> = {},\n): string {\n const tokens = Object.entries(details)\n .sort((left, right) => left[0].localeCompare(right[0]))\n .map(([key, value]) => `${key}=${value}`)\n .join(\":\");\n const suffix = tokens.length > 0 ? `:${tokens}` : \"\";\n return `extension_policy_${mode}_${scope}:${extension.layer}:${extension.name}:reason=${reason}${suffix}`;\n}\n\n/**\n * Implements evaluate extension policy for extension for the public runtime surface of this module.\n */\nexport function evaluateExtensionPolicyForExtension(\n policy: NormalizedExtensionPolicy,\n extension: PolicyExtensionRef,\n): { allowed: boolean; warning: string | null } {\n if (policy.mode === \"off\" && policy.trustMode === \"off\") {\n return { allowed: true, warning: null };\n }\n const reason = resolvePolicyExtensionReason(policy, extension);\n const trustReason = resolvePolicyTrustReason(policy, extension);\n const sandboxReason = resolvePolicySandboxReason(policy, extension);\n const extensionEnforced = reason && policy.mode === \"enforce\";\n const trustEnforced = trustReason && policy.trustMode === \"enforce\";\n const sandboxEnforced = sandboxReason && policy.mode === \"enforce\";\n if (!reason && !trustReason && !sandboxReason) {\n return { allowed: true, warning: null };\n }\n if (extensionEnforced) {\n return {\n allowed: false,\n warning: buildPolicyWarning(\"blocked\", \"extension\", extension, reason),\n };\n }\n if (trustEnforced) {\n return {\n allowed: false,\n warning: buildPolicyWarning(\"blocked\", \"trust\", extension, trustReason),\n };\n }\n if (sandboxEnforced) {\n return {\n allowed: false,\n warning: buildPolicyWarning(\"blocked\", \"extension\", extension, sandboxReason),\n };\n }\n if (reason && policy.mode === \"warn\") {\n return {\n allowed: true,\n warning: buildPolicyWarning(\"violation\", \"extension\", extension, reason),\n };\n }\n if (trustReason && policy.trustMode === \"warn\") {\n return {\n allowed: true,\n warning: buildPolicyWarning(\"violation\", \"trust\", extension, trustReason),\n };\n }\n if (sandboxReason && policy.mode === \"warn\") {\n return {\n allowed: true,\n warning: buildPolicyWarning(\"violation\", \"extension\", extension, sandboxReason),\n };\n }\n return {\n allowed: true,\n warning: null,\n };\n}\n\n/**\n * Implements evaluate extension policy for capability for the public runtime surface of this module.\n */\nexport function evaluateExtensionPolicyForCapability(\n policy: NormalizedExtensionPolicy,\n extension: PolicyExtensionRef,\n capability: string,\n): { allowed: boolean; warning: string | null } {\n if (policy.mode === \"off\") {\n return { allowed: true, warning: null };\n }\n const reason = resolvePolicyCapabilityReason(policy, extension, capability);\n if (!reason) {\n return { allowed: true, warning: null };\n }\n return {\n allowed: policy.mode === \"warn\",\n warning: buildPolicyWarning(\n policy.mode === \"warn\" ? \"violation\" : \"blocked\",\n \"capability\",\n extension,\n reason,\n { capability: capability.trim().toLowerCase() },\n ),\n };\n}\n\n/**\n * Implements evaluate extension policy for registration for the public runtime surface of this module.\n */\nexport function evaluateExtensionPolicyForRegistration(\n policy: NormalizedExtensionPolicy,\n extension: PolicyExtensionRef,\n surface: ExtensionPolicySurface,\n method: string,\n capability?: ExtensionCapability,\n details?: {\n command?: string;\n action?: string;\n service?: string;\n },\n): { allowed: boolean; warning: string | null } {\n if (policy.mode === \"off\") {\n return { allowed: true, warning: null };\n }\n const capabilityReason =\n typeof capability === \"string\" ? resolvePolicyCapabilityReason(policy, extension, capability) : null;\n const surfaceReason = resolvePolicySurfaceReason(policy, extension, surface);\n const commandReason = details?.command ? resolvePolicyCommandReason(policy, extension, details.command) : null;\n const actionReason = details?.action ? resolvePolicyActionReason(policy, extension, details.action) : null;\n const serviceReason = details?.service ? resolvePolicyServiceReason(policy, extension, details.service) : null;\n const reason = capabilityReason ?? surfaceReason ?? commandReason ?? actionReason ?? serviceReason;\n if (!reason) {\n return { allowed: true, warning: null };\n }\n const warningDetails: Record<string, string> = {\n method: normalizePolicyName(method).replace(/\\s+/g, \"_\"),\n surface,\n };\n if (capability) {\n warningDetails.capability = capability;\n }\n if (details?.command) {\n warningDetails.command = normalizeCommandName(details.command);\n }\n if (details?.action) {\n warningDetails.action = normalizePolicyName(details.action).replace(/\\s+/g, \"-\");\n }\n if (details?.service) {\n warningDetails.service = normalizePolicyName(details.service);\n }\n const warning = buildPolicyWarning(\n policy.mode === \"warn\" ? \"violation\" : \"blocked\",\n \"registration\",\n extension,\n reason,\n warningDetails,\n );\n return {\n allowed: policy.mode === \"warn\",\n warning,\n };\n}\n", "/**\n * @module core/extensions/capability-usage\n *\n * Reconciles the capabilities an extension manifest *declares* against the\n * capabilities it actually *exercises* during activation.\n *\n * The loader already enforces the opposite direction — registering a surface\n * whose capability is absent from `manifest.capabilities` throws an\n * `extension_capability_missing` activation failure. This module closes the\n * least-privilege loop by detecting capabilities a manifest declares but never\n * registers against, so package authors can trim manifests to the minimum\n * grant. Every declared-but-unused capability is an over-broad permission a\n * reviewer would otherwise have to catch by hand.\n */\nimport type { ExtensionActivationResult, ExtensionCapability, ExtensionLayer } from \"./extension-types.js\";\nimport { normalizeKnownExtensionCapability } from \"./extension-capability-aliases.js\";\n\n/**\n * Canonical map from each known extension capability to the human-readable\n * registration surfaces that exercise it.\n *\n * The `satisfies Record<ExtensionCapability, ...>` guard makes this exhaustive\n * at compile time: adding a capability to `KNOWN_EXTENSION_CAPABILITIES`\n * without giving it a registration surface here fails the build, which prevents\n * a capability that has *no* surface from being perpetually flagged as unused.\n */\nexport const EXTENSION_CAPABILITY_REGISTRATION_SURFACES = {\n commands: [\"registerCommand\", \"command override\", \"command handler\"],\n renderers: [\"registerRenderer\"],\n hooks: [\"hooks.beforeCommand\", \"hooks.afterCommand\", \"hooks.onWrite\", \"hooks.onRead\", \"hooks.onIndex\"],\n schema: [\"registerFlags\", \"registerItemFields\", \"registerItemTypes\", \"registerMigration\"],\n importers: [\"registerImporter\", \"registerExporter\"],\n search: [\"registerSearchProvider\", \"registerVectorStoreAdapter\"],\n parser: [\"registerParser\"],\n preflight: [\"registerPreflight\"],\n services: [\"registerService\"],\n} as const satisfies Record<ExtensionCapability, readonly string[]>;\n\n/**\n * Per-extension reconciliation of declared versus exercised capabilities.\n */\nexport interface ExtensionCapabilityUsageReconciliation {\n /** Layer the extension was loaded from (`global` or `project`). */\n layer: ExtensionLayer;\n /** Extension name as it appears in the manifest. */\n name: string;\n /** Known capabilities declared in the manifest, sorted and de-duplicated. */\n declared: ExtensionCapability[];\n /** Known capabilities the extension actually registered against, sorted. */\n used: ExtensionCapability[];\n /** Declared capabilities with no matching registration (least-privilege gap). */\n unused: ExtensionCapability[];\n}\n\n/**\n * Options for {@link collectUsedExtensionCapabilities}.\n */\nexport interface CollectUsedExtensionCapabilitiesOptions {\n /**\n * Restrict the result to a single extension by name. Names are matched\n * case-insensitively after trimming. Omit to union across every extension in\n * the activation result.\n */\n extensionName?: string;\n}\n\n// `layer` is a closed enum (`\"global\" | \"project\"`) that never contains a\n// colon, so the first colon always separates the layer from the (possibly\n// colon-bearing) name — making the key collision-proof without serialization.\nconst USAGE_KEY_SEPARATOR = \":\";\n\nfunction usageKey(layer: ExtensionLayer, name: string): string {\n return `${layer}${USAGE_KEY_SEPARATOR}${normalizeExtensionName(name)}`;\n}\n\nfunction usageKeyName(key: string): string {\n return key.slice(key.indexOf(USAGE_KEY_SEPARATOR) + 1);\n}\n\nfunction normalizeExtensionName(name: string): string {\n return name.trim().toLowerCase();\n}\n\nfunction normalizeDeclaredCapabilities(capabilities: readonly string[] | undefined): ExtensionCapability[] {\n if (!Array.isArray(capabilities)) {\n return [];\n }\n const known = new Set<ExtensionCapability>();\n for (const capability of capabilities) {\n // Unknown capabilities are reported by the separate unknown-capability\n // diagnostic; reconciling them here would double-report a typo as \"unused\".\n const normalized = normalizeKnownExtensionCapability(capability);\n if (normalized !== null) {\n known.add(normalized);\n }\n }\n return [...known].sort((left, right) => left.localeCompare(right));\n}\n\nfunction attributeCapabilityUsage(activation: ExtensionActivationResult): Map<string, Set<ExtensionCapability>> {\n const usage = new Map<string, Set<ExtensionCapability>>();\n const record = (\n entries: ReadonlyArray<{ layer: ExtensionLayer; name: string }>,\n capability: ExtensionCapability,\n ): void => {\n for (const entry of entries) {\n const key = usageKey(entry.layer, entry.name);\n let exercised = usage.get(key);\n if (exercised === undefined) {\n exercised = new Set<ExtensionCapability>();\n usage.set(key, exercised);\n }\n exercised.add(capability);\n }\n };\n const { registrations, commands, parsers, preflight, services, renderers, hooks } = activation;\n record(registrations.commands, \"commands\");\n record(commands.overrides, \"commands\");\n record(commands.handlers, \"commands\");\n record(registrations.flags, \"schema\");\n record(registrations.item_fields, \"schema\");\n record(registrations.item_types, \"schema\");\n record(registrations.migrations, \"schema\");\n record(registrations.importers, \"importers\");\n record(registrations.exporters, \"importers\");\n record(registrations.search_providers, \"search\");\n record(registrations.vector_store_adapters, \"search\");\n record(parsers.overrides, \"parser\");\n record(preflight.overrides, \"preflight\");\n record(services.overrides, \"services\");\n record(renderers.overrides, \"renderers\");\n record(hooks.beforeCommand, \"hooks\");\n record(hooks.afterCommand, \"hooks\");\n record(hooks.onWrite, \"hooks\");\n record(hooks.onRead, \"hooks\");\n record(hooks.onIndex, \"hooks\");\n return usage;\n}\n\n/**\n * Collect the known capabilities exercised across an activation result.\n *\n * Without {@link CollectUsedExtensionCapabilitiesOptions.extensionName} the\n * result unions every extension in the activation; with it, only the matching\n * extension's registrations contribute (across both layers).\n */\nexport function collectUsedExtensionCapabilities(\n activation: ExtensionActivationResult,\n options: CollectUsedExtensionCapabilitiesOptions = {},\n): ExtensionCapability[] {\n const usage = attributeCapabilityUsage(activation);\n const filter = options.extensionName !== undefined ? normalizeExtensionName(options.extensionName) : null;\n const used = new Set<ExtensionCapability>();\n for (const [key, capabilities] of usage) {\n if (filter !== null && usageKeyName(key) !== filter) {\n continue;\n }\n for (const capability of capabilities) {\n used.add(capability);\n }\n }\n return [...used].sort((left, right) => left.localeCompare(right));\n}\n\n/**\n * Reconcile each loaded extension's declared capabilities against what it\n * exercised during activation.\n *\n * Extensions with no known declared capabilities are skipped — there is nothing\n * to reconcile. The returned entries preserve every reconcilable extension even\n * when `unused` is empty so callers can report fully-minimal manifests too.\n */\nexport function reconcileExtensionCapabilityUsage(\n loaded: ReadonlyArray<{ layer: ExtensionLayer; name: string; capabilities?: readonly string[] }>,\n activation: ExtensionActivationResult,\n): ExtensionCapabilityUsageReconciliation[] {\n const usage = attributeCapabilityUsage(activation);\n const reconciliations: ExtensionCapabilityUsageReconciliation[] = [];\n for (const extension of loaded) {\n const declared = normalizeDeclaredCapabilities(extension.capabilities);\n if (declared.length === 0) {\n continue;\n }\n const exercised = usage.get(usageKey(extension.layer, extension.name)) ?? new Set<ExtensionCapability>();\n const used = [...exercised].sort((left, right) => left.localeCompare(right));\n const unused = declared.filter((capability) => !exercised.has(capability));\n reconciliations.push({ layer: extension.layer, name: extension.name, declared, used, unused });\n }\n return reconciliations;\n}\n", "/**\n * @module core/extensions/index\n *\n * Implements extension runtime contracts and governance for Index.\n */\nimport {\n runCommandHandler,\n runCommandOverride,\n runOnIndexHooks,\n runParserOverride,\n runPreflightOverride,\n runOnReadHooks,\n runRendererOverride,\n runServiceOverride,\n runServiceOverrideSync,\n runOnWriteHooks,\n type CommandHandlerContext,\n type CommandHandlerResult,\n type CommandOverrideContext,\n type CommandOverrideResult,\n type ExtensionCommandRegistry,\n type ExtensionHookRegistry,\n type ExtensionParserRegistry,\n type ExtensionPreflightRegistry,\n type ExtensionRegistrationRegistry,\n type ExtensionRendererRegistry,\n type ExtensionServiceName,\n type ExtensionServiceRegistry,\n type AfterCommandAffectedItem,\n type OnIndexHookContext,\n type OnReadHookContext,\n type OnWriteHookContext,\n type OutputRendererFormat,\n type ParserOverrideContext,\n type ParserOverrideResult,\n type PreflightOverrideContext,\n type PreflightOverrideResult,\n type RendererOverrideResult,\n type ServiceOverrideResult,\n} from \"./loader.js\";\nimport type { ItemFrontMatter } from \"../../types/index.js\";\n\nlet activeExtensionHooks: ExtensionHookRegistry | null = null;\nlet activeExtensionCommands: ExtensionCommandRegistry | null = null;\nlet activeExtensionParsers: ExtensionParserRegistry | null = null;\nlet activeExtensionPreflight: ExtensionPreflightRegistry | null = null;\nlet activeExtensionServices: ExtensionServiceRegistry | null = null;\nlet activeExtensionRenderers: ExtensionRendererRegistry | null = null;\nlet activeExtensionRegistrations: ExtensionRegistrationRegistry | null = null;\nlet activeCommandContext: Omit<CommandOverrideContext, \"result\"> | null = null;\nlet activeCommandResult: unknown = undefined;\nlet activeAfterCommandAffectedItems: AfterCommandAffectedItem[] = [];\nconst AFTER_COMMAND_SNAPSHOT_OMITTED_FIELDS = new Set([\n \"body\",\n \"comments\",\n \"dependencies\",\n \"docs\",\n \"events\",\n \"files\",\n \"learnings\",\n \"notes\",\n \"reminders\",\n \"test_runs\",\n \"tests\",\n]);\n\n/**\n * Implements set active extension hooks for the public runtime surface of this module.\n */\nexport function setActiveExtensionHooks(hooks: ExtensionHookRegistry | null): void {\n activeExtensionHooks = hooks;\n}\n\n/**\n * Implements set active extension commands for the public runtime surface of this module.\n */\nexport function setActiveExtensionCommands(commands: ExtensionCommandRegistry | null): void {\n activeExtensionCommands = commands;\n}\n\n/**\n * Implements set active extension parsers for the public runtime surface of this module.\n */\nexport function setActiveExtensionParsers(parsers: ExtensionParserRegistry | null): void {\n activeExtensionParsers = parsers;\n}\n\n/**\n * Implements set active extension preflight for the public runtime surface of this module.\n */\nexport function setActiveExtensionPreflight(preflight: ExtensionPreflightRegistry | null): void {\n activeExtensionPreflight = preflight;\n}\n\n/**\n * Implements set active extension services for the public runtime surface of this module.\n */\nexport function setActiveExtensionServices(services: ExtensionServiceRegistry | null): void {\n activeExtensionServices = services;\n}\n\n/**\n * Implements set active extension renderers for the public runtime surface of this module.\n */\nexport function setActiveExtensionRenderers(renderers: ExtensionRendererRegistry | null): void {\n activeExtensionRenderers = renderers;\n}\n\n/**\n * Implements set active extension registrations for the public runtime surface of this module.\n */\nexport function setActiveExtensionRegistrations(registrations: ExtensionRegistrationRegistry | null): void {\n activeExtensionRegistrations = registrations;\n}\n\n/**\n * Implements get active extension registrations for the public runtime surface of this module.\n */\nexport function getActiveExtensionRegistrations(): ExtensionRegistrationRegistry | null {\n return activeExtensionRegistrations;\n}\n\n/**\n * Implements set active command context for the public runtime surface of this module.\n */\nexport function setActiveCommandContext(context: Omit<CommandOverrideContext, \"result\"> | null): void {\n activeCommandContext = context;\n}\n\n/**\n * Implements set active command result for the public runtime surface of this module.\n */\nexport function setActiveCommandResult(result: unknown): void {\n activeCommandResult = result;\n}\n\n/**\n * Implements get active command result for the public runtime surface of this module.\n */\nexport function getActiveCommandResult(): unknown {\n return activeCommandResult;\n}\n\n/**\n * Implements record after command affected item for the public runtime surface of this module.\n */\nexport function recordAfterCommandAffectedItem(item: AfterCommandAffectedItem): void {\n if (!item || (activeExtensionHooks?.afterCommand?.length ?? 0) === 0) {\n return;\n }\n activeAfterCommandAffectedItems.push(item);\n}\n\n/**\n * Implements project after command item snapshot for the public runtime surface of this module.\n */\nexport function projectAfterCommandItemSnapshot(\n metadata: ItemFrontMatter,\n changedFields: readonly string[],\n): Partial<ItemFrontMatter> {\n if (!metadata || !metadata.id) {\n return {};\n }\n const snapshot: Record<string, unknown> = {\n id: metadata.id,\n type: metadata.type,\n status: metadata.status,\n };\n if (!Array.isArray(changedFields)) {\n return snapshot as Partial<ItemFrontMatter>;\n }\n const source = metadata as unknown as Record<string, unknown>;\n for (const field of changedFields) {\n if (typeof field !== \"string\") {\n continue;\n }\n const actualField = field.startsWith(\"unset:\") ? field.slice(\"unset:\".length) : field;\n if (\n actualField === \"id\" ||\n actualField === \"type\" ||\n actualField === \"status\" ||\n AFTER_COMMAND_SNAPSHOT_OMITTED_FIELDS.has(actualField)\n ) {\n continue;\n }\n if (Object.hasOwn(source, actualField) && source[actualField] !== undefined) {\n snapshot[actualField] = source[actualField];\n }\n }\n return snapshot as Partial<ItemFrontMatter>;\n}\n\n/**\n * Implements consume after command affected items for the public runtime surface of this module.\n */\nexport function consumeAfterCommandAffectedItems(): AfterCommandAffectedItem[] | undefined {\n if (activeAfterCommandAffectedItems.length === 0) {\n return undefined;\n }\n const affected = activeAfterCommandAffectedItems;\n activeAfterCommandAffectedItems = [];\n return affected;\n}\n\n/**\n * Implements clear active extension hooks for the public runtime surface of this module.\n */\nexport function clearActiveExtensionHooks(): void {\n activeExtensionHooks = null;\n activeExtensionCommands = null;\n activeExtensionParsers = null;\n activeExtensionPreflight = null;\n activeExtensionServices = null;\n activeExtensionRenderers = null;\n activeExtensionRegistrations = null;\n activeCommandContext = null;\n activeCommandResult = undefined;\n activeAfterCommandAffectedItems = [];\n}\n\n/**\n * Implements run active on write hooks for the public runtime surface of this module.\n */\nexport async function runActiveOnWriteHooks(context: OnWriteHookContext): Promise<string[]> {\n if (!activeExtensionHooks) {\n return [];\n }\n return runOnWriteHooks(activeExtensionHooks, context);\n}\n\n/**\n * Implements run active on read hooks for the public runtime surface of this module.\n */\nexport async function runActiveOnReadHooks(context: OnReadHookContext): Promise<string[]> {\n if (!activeExtensionHooks) {\n return [];\n }\n return runOnReadHooks(activeExtensionHooks, context);\n}\n\n/**\n * Synchronous fast-path predicate: true only when at least one onRead hook is\n * registered. Bulk readers (e.g. the metadata cache scanning hundreds of files)\n * use this to skip per-file `await runActiveOnReadHooks(...)` calls entirely when\n * no extension observes reads, avoiding hundreds of needless microtasks.\n */\nexport function hasActiveOnReadHooks(): boolean {\n return (activeExtensionHooks?.onRead?.length ?? 0) > 0;\n}\n\n/**\n * Implements run active on index hooks for the public runtime surface of this module.\n */\nexport async function runActiveOnIndexHooks(context: OnIndexHookContext): Promise<string[]> {\n if (!activeExtensionHooks) {\n return [];\n }\n return runOnIndexHooks(activeExtensionHooks, context);\n}\n\n/**\n * Implements run active command override for the public runtime surface of this module.\n */\nexport function runActiveCommandOverride(result: unknown): CommandOverrideResult {\n if (!activeExtensionCommands || !activeCommandContext) {\n return {\n overridden: false,\n result,\n warnings: [],\n };\n }\n return runCommandOverride(activeExtensionCommands, {\n command: activeCommandContext.command,\n args: [...activeCommandContext.args],\n options: activeCommandContext.options ? { ...activeCommandContext.options } : {},\n global: activeCommandContext.global ? { ...activeCommandContext.global } : undefined,\n pm_root: activeCommandContext.pm_root,\n result,\n });\n}\n\n/**\n * Implements run active command handler for the public runtime surface of this module.\n */\nexport async function runActiveCommandHandler(context: CommandHandlerContext): Promise<CommandHandlerResult> {\n if (!activeExtensionCommands) {\n return {\n handled: false,\n result: null,\n warnings: [],\n };\n }\n return runCommandHandler(activeExtensionCommands, context);\n}\n\n/**\n * Implements run active parser override for the public runtime surface of this module.\n */\nexport async function runActiveParserOverride(context: ParserOverrideContext): Promise<ParserOverrideResult> {\n if (!activeExtensionParsers) {\n return {\n overridden: false,\n context: {\n command: context.command,\n args: [...context.args],\n options: { ...context.options },\n global: { ...context.global },\n pm_root: context.pm_root,\n },\n warnings: [],\n };\n }\n return runParserOverride(activeExtensionParsers, context);\n}\n\n/**\n * Implements run active preflight override for the public runtime surface of this module.\n */\nexport async function runActivePreflightOverride(context: PreflightOverrideContext): Promise<PreflightOverrideResult> {\n if (!activeExtensionPreflight) {\n return {\n overridden: false,\n context: {\n command: context.command,\n args: [...context.args],\n options: { ...context.options },\n global: { ...context.global },\n pm_root: context.pm_root,\n },\n decision: { ...context.decision },\n warnings: [],\n };\n }\n return runPreflightOverride(activeExtensionPreflight, context);\n}\n\n/**\n * Implements run active renderer override for the public runtime surface of this module.\n */\nexport function runActiveRendererOverride(format: OutputRendererFormat, result: unknown): RendererOverrideResult {\n if (!activeExtensionRenderers) {\n return {\n overridden: false,\n rendered: null,\n warnings: [],\n };\n }\n return runRendererOverride(activeExtensionRenderers, {\n format,\n command: activeCommandContext?.command,\n args: activeCommandContext ? [...activeCommandContext.args] : [],\n options: activeCommandContext?.options ? { ...activeCommandContext.options } : {},\n global: activeCommandContext?.global ? { ...activeCommandContext.global } : undefined,\n pm_root: activeCommandContext?.pm_root,\n result,\n });\n}\n\nfunction buildServiceContext(service: ExtensionServiceName, payload: unknown) {\n return {\n service,\n command: activeCommandContext?.command,\n args: activeCommandContext ? [...activeCommandContext.args] : [],\n options: activeCommandContext?.options ? { ...activeCommandContext.options } : {},\n global: activeCommandContext?.global ? { ...activeCommandContext.global } : undefined,\n pm_root: activeCommandContext?.pm_root,\n payload,\n };\n}\n\n/**\n * Implements run active service override for the public runtime surface of this module.\n */\nexport async function runActiveServiceOverride(\n service: ExtensionServiceName,\n payload: unknown,\n): Promise<ServiceOverrideResult> {\n if (!activeExtensionServices) {\n return {\n handled: false,\n result: payload,\n warnings: [],\n };\n }\n return runServiceOverride(activeExtensionServices, buildServiceContext(service, payload));\n}\n\n/**\n * Implements run active service override sync for the public runtime surface of this module.\n */\nexport function runActiveServiceOverrideSync(service: ExtensionServiceName, payload: unknown): ServiceOverrideResult {\n if (!activeExtensionServices) {\n return {\n handled: false,\n result: payload,\n warnings: [],\n };\n }\n return runServiceOverrideSync(activeExtensionServices, buildServiceContext(service, payload));\n}\n\nexport * from \"./loader.js\";\nexport {\n EXTENSION_CAPABILITY_REGISTRATION_SURFACES,\n collectUsedExtensionCapabilities,\n reconcileExtensionCapabilityUsage,\n type CollectUsedExtensionCapabilitiesOptions,\n type ExtensionCapabilityUsageReconciliation,\n} from \"./capability-usage.js\";\n", "/**\n * @module types\n *\n * Defines the shared project-management data model used by CLI, SDK, MCP, and packages.\n */\nexport const BUILTIN_ITEM_TYPE_VALUES = [\n \"Epic\",\n \"Feature\",\n \"Task\",\n \"Chore\",\n \"Issue\",\n \"Decision\",\n \"Event\",\n \"Reminder\",\n \"Milestone\",\n \"Meeting\",\n \"Plan\",\n] as const;\nexport const ITEM_TYPE_VALUES = BUILTIN_ITEM_TYPE_VALUES;\n/**\n * Restricts builtin item type values accepted by command, SDK, and storage contracts.\n */\nexport type BuiltinItemType = (typeof BUILTIN_ITEM_TYPE_VALUES)[number];\n/**\n * Restricts item type values accepted by command, SDK, and storage contracts.\n */\nexport type ItemType = string;\n\nexport const STATUS_VALUES = [\n \"draft\",\n \"open\",\n \"in_progress\",\n \"blocked\",\n \"closed\",\n \"canceled\",\n] as const;\n/**\n * Restricts item status values accepted by command, SDK, and storage contracts.\n */\nexport type ItemStatus = string;\n\nexport const RUNTIME_STATUS_ROLE_VALUES = [\n \"draft\",\n \"active\",\n \"blocked\",\n \"terminal\",\n \"terminal_done\",\n \"terminal_canceled\",\n \"default_open\",\n \"default_close\",\n \"default_cancel\",\n] as const;\n/**\n * Restricts runtime status role values accepted by command, SDK, and storage contracts.\n */\nexport type RuntimeStatusRole = (typeof RUNTIME_STATUS_ROLE_VALUES)[number];\n\nexport const RUNTIME_FIELD_TYPE_VALUES = [\"string\", \"number\", \"boolean\", \"string_array\"] as const;\n/**\n * Restricts runtime field type values accepted by command, SDK, and storage contracts.\n */\nexport type RuntimeFieldType = (typeof RUNTIME_FIELD_TYPE_VALUES)[number];\n\nexport const RUNTIME_FIELD_COMMAND_VALUES = [\"create\", \"update\", \"update_many\", \"list\", \"search\", \"calendar\", \"context\"] as const;\n/**\n * Restricts runtime field command values accepted by command, SDK, and storage contracts.\n */\nexport type RuntimeFieldCommand = (typeof RUNTIME_FIELD_COMMAND_VALUES)[number];\n\nexport const RUNTIME_UNKNOWN_FIELD_POLICY_VALUES = [\"allow\", \"warn\", \"reject\"] as const;\n/**\n * Restricts runtime unknown field policy values accepted by command, SDK, and storage contracts.\n */\nexport type RuntimeUnknownFieldPolicy = (typeof RUNTIME_UNKNOWN_FIELD_POLICY_VALUES)[number];\n\nexport const DEPENDENCY_KIND_VALUES = [\n \"blocks\",\n \"parent\",\n \"child\",\n \"parent_child\",\n \"child_of\",\n \"related\",\n \"related_to\",\n \"discovered_from\",\n \"blocked_by\",\n \"incident_from\",\n \"epic\",\n \"supersedes\",\n \"task\",\n] as const;\n/**\n * Restricts dependency kind values accepted by command, SDK, and storage contracts.\n */\nexport type DependencyKind = (typeof DEPENDENCY_KIND_VALUES)[number];\n\nexport const SCOPE_VALUES = [\"project\", \"global\"] as const;\n/**\n * Restricts link scope values accepted by command, SDK, and storage contracts.\n */\nexport type LinkScope = (typeof SCOPE_VALUES)[number];\n\nexport const RISK_VALUES = [\"low\", \"medium\", \"high\", \"critical\"] as const;\n/**\n * Restricts risk level values accepted by command, SDK, and storage contracts.\n */\nexport type RiskLevel = (typeof RISK_VALUES)[number];\n\nexport const ISSUE_SEVERITY_VALUES = [\"low\", \"medium\", \"high\", \"critical\"] as const;\n/**\n * Restricts issue severity values accepted by command, SDK, and storage contracts.\n */\nexport type IssueSeverity = (typeof ISSUE_SEVERITY_VALUES)[number];\n\nexport const CONFIDENCE_TEXT_VALUES = [\"low\", \"medium\", \"high\"] as const;\n/**\n * Restricts confidence text level values accepted by command, SDK, and storage contracts.\n */\nexport type ConfidenceTextLevel = (typeof CONFIDENCE_TEXT_VALUES)[number];\n/**\n * Restricts confidence value values accepted by command, SDK, and storage contracts.\n */\nexport type ConfidenceValue = number | ConfidenceTextLevel;\n\nexport const ITEM_FORMAT_VALUES = [\"toon\", \"json_markdown\"] as const;\n/**\n * Restricts item format values accepted by command, SDK, and storage contracts.\n */\nexport type ItemFormat = (typeof ITEM_FORMAT_VALUES)[number];\n\nexport const SPRINT_RELEASE_FORMAT_POLICY_VALUES = [\"warn\", \"strict_error\"] as const;\n/**\n * Restricts sprint release format policy values accepted by command, SDK, and storage contracts.\n */\nexport type SprintReleaseFormatPolicy = (typeof SPRINT_RELEASE_FORMAT_POLICY_VALUES)[number];\nexport const PARENT_REFERENCE_POLICY_VALUES = [\"warn\", \"strict_error\"] as const;\n/**\n * Restricts parent reference policy values accepted by command, SDK, and storage contracts.\n */\nexport type ParentReferencePolicy = (typeof PARENT_REFERENCE_POLICY_VALUES)[number];\nexport const VALIDATE_METADATA_PROFILE_VALUES = [\"core\", \"strict\", \"custom\"] as const;\n/**\n * Restricts validate metadata profile values accepted by command, SDK, and storage contracts.\n */\nexport type ValidateMetadataProfile = (typeof VALIDATE_METADATA_PROFILE_VALUES)[number];\nexport const GOVERNANCE_PRESET_VALUES = [\"minimal\", \"default\", \"strict\", \"custom\"] as const;\n/**\n * Restricts governance preset values accepted by command, SDK, and storage contracts.\n */\nexport type GovernancePreset = (typeof GOVERNANCE_PRESET_VALUES)[number];\nexport const GOVERNANCE_OWNERSHIP_ENFORCEMENT_VALUES = [\"none\", \"warn\", \"strict\"] as const;\n/**\n * Restricts governance ownership enforcement values accepted by command, SDK, and storage contracts.\n */\nexport type GovernanceOwnershipEnforcement = (typeof GOVERNANCE_OWNERSHIP_ENFORCEMENT_VALUES)[number];\nexport const GOVERNANCE_CREATE_MODE_DEFAULT_VALUES = [\"progressive\", \"strict\"] as const;\n/**\n * Restricts governance create mode default values accepted by command, SDK, and storage contracts.\n */\nexport type GovernanceCreateModeDefault = (typeof GOVERNANCE_CREATE_MODE_DEFAULT_VALUES)[number];\nexport const GOVERNANCE_CLOSE_VALIDATION_DEFAULT_VALUES = [\"off\", \"warn\", \"strict\"] as const;\n/**\n * Restricts governance close validation default values accepted by command, SDK, and storage contracts.\n */\nexport type GovernanceCloseValidationDefault = (typeof GOVERNANCE_CLOSE_VALIDATION_DEFAULT_VALUES)[number];\nexport const GOVERNANCE_WORKFLOW_ENFORCEMENT_VALUES = [\"off\", \"warn\", \"strict\"] as const;\n/**\n * Restricts governance workflow enforcement values accepted by command, SDK, and storage contracts.\n */\nexport type GovernanceWorkflowEnforcement = (typeof GOVERNANCE_WORKFLOW_ENFORCEMENT_VALUES)[number];\nexport const VALIDATE_METADATA_REQUIRED_FIELD_VALUES = [\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/**\n * Restricts validate metadata required field values accepted by command, SDK, and storage contracts.\n */\nexport type ValidateMetadataRequiredField = (typeof VALIDATE_METADATA_REQUIRED_FIELD_VALUES)[number];\n\nexport const RECURRENCE_FREQUENCY_VALUES = [\"daily\", \"weekly\", \"monthly\", \"yearly\"] as const;\n/**\n * Restricts recurrence frequency values accepted by command, SDK, and storage contracts.\n */\nexport type RecurrenceFrequency = (typeof RECURRENCE_FREQUENCY_VALUES)[number];\n\nexport const RECURRENCE_WEEKDAY_VALUES = [\"mon\", \"tue\", \"wed\", \"thu\", \"fri\", \"sat\", \"sun\"] as const;\n/**\n * Restricts recurrence weekday values accepted by command, SDK, and storage contracts.\n */\nexport type RecurrenceWeekday = (typeof RECURRENCE_WEEKDAY_VALUES)[number];\n\n/**\n * Canonical week-order index for a recurrence weekday (mon=0 .. sun=6).\n * Shared by item serialization, create/update parsing, and calendar expansion\n * so weekday ordering cannot drift between those modules.\n */\nexport function weekdayOrderIndex(value: RecurrenceWeekday): number {\n return RECURRENCE_WEEKDAY_VALUES.indexOf(value);\n}\n\n/**\n * Documents the dependency payload exchanged by command, SDK, and package integrations.\n */\nexport interface Dependency {\n id: string;\n kind: DependencyKind;\n created_at: string;\n author?: string;\n source_kind?: string;\n}\n\n/**\n * Documents the comment payload exchanged by command, SDK, and package integrations.\n */\nexport interface Comment {\n created_at: string;\n author: string;\n text: string;\n}\n\n/**\n * Documents the log note payload exchanged by command, SDK, and package integrations.\n */\nexport interface LogNote {\n created_at: string;\n author: string;\n text: string;\n}\n\n/**\n * Documents the linked file payload exchanged by command, SDK, and package integrations.\n */\nexport interface LinkedFile {\n path: string;\n scope: LinkScope;\n note?: string;\n}\n\n/**\n * Documents the linked test payload exchanged by command, SDK, and package integrations.\n */\nexport interface LinkedTest {\n command?: string;\n path?: string;\n scope: LinkScope;\n timeout_seconds?: number;\n pm_context_mode?: \"schema\" | \"tracker\" | \"auto\";\n env_set?: Record<string, string>;\n env_clear?: string[];\n shared_host_safe?: boolean;\n assert_stdout_contains?: string[];\n assert_stdout_regex?: string[];\n assert_stderr_contains?: string[];\n assert_stderr_regex?: string[];\n assert_stdout_min_lines?: number;\n assert_json_field_equals?: Record<string, string>;\n assert_json_field_gte?: Record<string, number>;\n note?: string;\n}\n\n/**\n * Documents the linked doc payload exchanged by command, SDK, and package integrations.\n */\nexport interface LinkedDoc {\n path: string;\n scope: LinkScope;\n note?: string;\n}\n\n/**\n * Documents the reminder payload exchanged by command, SDK, and package integrations.\n */\nexport interface Reminder {\n at: string;\n text: string;\n}\n\n/**\n * Documents the recurrence rule payload exchanged by command, SDK, and package integrations.\n */\nexport interface RecurrenceRule {\n freq: RecurrenceFrequency;\n interval?: number;\n count?: number;\n until?: string;\n by_weekday?: RecurrenceWeekday[];\n by_month_day?: number[];\n exdates?: string[];\n}\n\n/**\n * Documents the calendar event payload exchanged by command, SDK, and package integrations.\n */\nexport interface CalendarEvent {\n start_at: string;\n end_at?: string;\n title?: string;\n description?: string;\n location?: string;\n all_day?: boolean;\n timezone?: string;\n recurrence?: RecurrenceRule;\n}\n\nexport const PLAN_MODE_VALUES = [\n \"draft\",\n \"research\",\n \"review\",\n \"approved\",\n \"executing\",\n \"paused\",\n \"completed\",\n \"superseded\",\n] as const;\n/**\n * Restricts plan mode values accepted by command, SDK, and storage contracts.\n */\nexport type PlanMode = (typeof PLAN_MODE_VALUES)[number];\n\nexport const PLAN_STEP_STATUS_VALUES = [\n \"pending\",\n \"in_progress\",\n \"completed\",\n \"blocked\",\n \"skipped\",\n \"superseded\",\n] as const;\n/**\n * Restricts plan step status values accepted by command, SDK, and storage contracts.\n */\nexport type PlanStepStatus = (typeof PLAN_STEP_STATUS_VALUES)[number];\n\nexport const PLAN_HARNESS_VALUES = [\"codex\", \"claude-code\", \"cursor\", \"generic\"] as const;\n/**\n * Restricts plan harness values accepted by command, SDK, and storage contracts.\n */\nexport type PlanHarness = (typeof PLAN_HARNESS_VALUES)[number];\n\nexport const PLAN_STEP_LINK_KIND_VALUES = [\n \"related\",\n \"blocks\",\n \"blocked_by\",\n \"depends_on\",\n \"discovered_from\",\n \"implements\",\n \"verifies\",\n \"supersedes\",\n] as const;\n/**\n * Restricts plan step link kind values accepted by command, SDK, and storage contracts.\n */\nexport type PlanStepLinkKind = (typeof PLAN_STEP_LINK_KIND_VALUES)[number];\n\n/**\n * Documents the plan step link payload exchanged by command, SDK, and package integrations.\n */\nexport interface PlanStepLink {\n id: string;\n kind: PlanStepLinkKind;\n note?: string;\n required_before_step?: boolean;\n}\n\n/**\n * Documents the plan step file payload exchanged by command, SDK, and package integrations.\n */\nexport interface PlanStepFile {\n path: string;\n scope?: LinkScope;\n note?: string;\n}\n\n/**\n * Documents the plan step test payload exchanged by command, SDK, and package integrations.\n */\nexport interface PlanStepTest {\n command?: string;\n path?: string;\n note?: string;\n}\n\n/**\n * Documents the plan step doc payload exchanged by command, SDK, and package integrations.\n */\nexport interface PlanStepDoc {\n path: string;\n scope?: LinkScope;\n note?: string;\n}\n\n/**\n * Documents the plan step payload exchanged by command, SDK, and package integrations.\n */\nexport interface PlanStep {\n id: string;\n order: number;\n title: string;\n body?: string;\n status: PlanStepStatus;\n owner?: string;\n evidence?: string;\n blocked_reason?: string;\n superseded_by?: string;\n linked_items?: PlanStepLink[];\n files?: PlanStepFile[];\n tests?: PlanStepTest[];\n docs?: PlanStepDoc[];\n created_at: string;\n updated_at: string;\n completed_at?: string;\n}\n\n/**\n * Documents the plan decision payload exchanged by command, SDK, and package integrations.\n */\nexport interface PlanDecision {\n ts: string;\n author: string;\n decision: string;\n rationale?: string;\n evidence?: string;\n step_id?: string;\n}\n\n/**\n * Documents the plan discovery payload exchanged by command, SDK, and package integrations.\n */\nexport interface PlanDiscovery {\n ts: string;\n author: string;\n text: string;\n step_id?: string;\n}\n\n/**\n * Documents the plan validation check payload exchanged by command, SDK, and package integrations.\n */\nexport interface PlanValidationCheck {\n text: string;\n command?: string;\n expected?: string;\n}\n\n/**\n * Documents the item type option definition payload exchanged by command, SDK, and package integrations.\n */\nexport interface ItemTypeOptionDefinition {\n key: string;\n values: string[];\n required?: boolean;\n aliases?: string[];\n description?: string;\n}\n\n/**\n * Documents the item type command option policy payload exchanged by command, SDK, and package integrations.\n */\nexport interface ItemTypeCommandOptionPolicy {\n command: \"create\" | \"update\";\n option: string;\n required?: boolean;\n visible?: boolean;\n enabled?: boolean;\n}\n\n/**\n * Documents the item type definition payload exchanged by command, SDK, and package integrations.\n */\nexport interface ItemTypeDefinition {\n name: string;\n description?: string;\n /**\n * Status assigned to newly created items of this type when `--status` is not\n * provided. Falls back to the workflow's open status when unset or invalid.\n */\n default_status?: string;\n folder?: string;\n aliases?: string[];\n required_create_fields?: string[];\n required_create_repeatables?: string[];\n options?: ItemTypeOptionDefinition[];\n command_option_policies?: ItemTypeCommandOptionPolicy[];\n}\n\n/**\n * Documents the runtime status definition payload exchanged by command, SDK, and package integrations.\n */\nexport interface RuntimeStatusDefinition {\n id: string;\n aliases?: string[];\n roles?: RuntimeStatusRole[];\n description?: string;\n order?: number;\n}\n\n/**\n * Documents the runtime field definition payload exchanged by command, SDK, and package integrations.\n */\nexport interface RuntimeFieldDefinition {\n key: string;\n metadata_key?: string;\n /**\n * @deprecated Use metadata_key.\n */\n front_matter_key?: string;\n cli_flag?: string;\n cli_aliases?: string[];\n description?: string;\n type?: RuntimeFieldType;\n commands?: RuntimeFieldCommand[];\n repeatable?: boolean;\n required?: boolean;\n required_on_create?: boolean;\n required_types?: string[];\n allow_unset?: boolean;\n}\n\n/**\n * Documents the runtime workflow definition payload exchanged by command, SDK, and package integrations.\n */\nexport interface RuntimeWorkflowDefinition {\n draft_status?: string;\n open_status?: string;\n in_progress_status?: string;\n blocked_status?: string;\n close_status?: string;\n canceled_status?: string;\n}\n\n/**\n * Documents the runtime schema file config payload exchanged by command, SDK, and package integrations.\n */\nexport interface RuntimeSchemaFileConfig {\n types?: string;\n statuses?: string;\n fields?: string;\n workflows?: string;\n}\n\n/**\n * Per-type allowed-transition rule. A type with no matching entry is\n * unrestricted; a type with an entry allows only the listed [from, to]\n * status pairs (status tokens are resolved case-insensitively through the\n * status registry alias map; a same-status no-op is always allowed).\n */\nexport interface TypeWorkflowDefinition {\n type: string;\n allowed_transitions: [string, string][];\n}\n\n/**\n * Documents the runtime schema settings payload exchanged by command, SDK, and package integrations.\n */\nexport interface RuntimeSchemaSettings {\n version: number;\n files: RuntimeSchemaFileConfig;\n statuses: RuntimeStatusDefinition[];\n fields: RuntimeFieldDefinition[];\n workflow: RuntimeWorkflowDefinition;\n type_workflows?: TypeWorkflowDefinition[];\n unknown_field_policy: RuntimeUnknownFieldPolicy;\n}\n\n/**\n * Documents the item test run summary payload exchanged by command, SDK, and package integrations.\n */\nexport interface ItemTestRunSummary {\n run_id: string;\n kind: \"test\" | \"test-all\";\n status: \"passed\" | \"failed\" | \"stopped\" | \"canceled\";\n started_at: string;\n finished_at: string;\n recorded_at: string;\n attempt?: number;\n resumed_from?: string;\n passed: number;\n failed: number;\n skipped: number;\n items?: number;\n linked_tests?: number;\n fail_on_skipped_triggered?: boolean;\n}\n\n/**\n * Documents the item metadata payload exchanged by command, SDK, and package integrations.\n */\nexport interface ItemMetadata {\n id: string;\n title: string;\n description: string;\n type: ItemType;\n /**\n * On-disk front-matter format version. Absent means the implicit baseline\n * (version 1) and is never serialized; populated only once an item advances\n * past the baseline via a future storage migration. See\n * core/item/item-format-version.\n */\n pm_format_version?: number;\n source_type?: string;\n type_options?: Record<string, string>;\n status: ItemStatus;\n priority: 0 | 1 | 2 | 3 | 4;\n tags: string[];\n created_at: string;\n updated_at: string;\n deadline?: string;\n reminders?: Reminder[];\n events?: CalendarEvent[];\n closed_at?: string;\n assignee?: string;\n source_owner?: string;\n author?: string;\n estimated_minutes?: number;\n acceptance_criteria?: string;\n design?: string;\n external_ref?: string;\n definition_of_ready?: string;\n order?: number;\n goal?: string;\n objective?: string;\n value?: string;\n impact?: string;\n outcome?: string;\n why_now?: string;\n parent?: string;\n reviewer?: string;\n risk?: RiskLevel;\n confidence?: ConfidenceValue;\n sprint?: string;\n release?: string;\n blocked_by?: string;\n blocked_reason?: string;\n unblock_note?: string;\n reporter?: string;\n severity?: IssueSeverity;\n environment?: string;\n repro_steps?: string;\n resolution?: string;\n expected_result?: string;\n actual_result?: string;\n affected_version?: string;\n fixed_version?: string;\n component?: string;\n regression?: boolean;\n customer_impact?: string;\n dependencies?: Dependency[];\n comments?: Comment[];\n notes?: LogNote[];\n learnings?: LogNote[];\n files?: LinkedFile[];\n tests?: LinkedTest[];\n test_runs?: ItemTestRunSummary[];\n docs?: LinkedDoc[];\n close_reason?: string;\n duplicate_of?: string;\n plan_mode?: PlanMode;\n plan_scope?: string;\n plan_harness?: PlanHarness;\n plan_steps?: PlanStep[];\n plan_decisions?: PlanDecision[];\n plan_discoveries?: PlanDiscovery[];\n plan_validation?: PlanValidationCheck[];\n plan_resume_context?: string;\n [key: string]: unknown;\n}\n\n/**\n * @deprecated Use ItemMetadata.\n */\nexport type ItemFrontMatter = ItemMetadata;\n\n/**\n * Documents the item document payload exchanged by command, SDK, and package integrations.\n */\nexport interface ItemDocument {\n metadata: ItemMetadata;\n body: string;\n}\n\n/**\n * Documents the history patch op payload exchanged by command, SDK, and package integrations.\n */\nexport interface HistoryPatchOp {\n op: \"add\" | \"remove\" | \"replace\" | \"move\" | \"copy\" | \"test\";\n path: string;\n from?: string;\n value?: unknown;\n}\n\n/**\n * Documents the history entry payload exchanged by command, SDK, and package integrations.\n */\nexport interface HistoryEntry {\n ts: string;\n author: string;\n op: string;\n patch: HistoryPatchOp[];\n before_hash: string;\n after_hash: string;\n message?: string;\n}\n\nexport const CONTEXT_DEPTH_VALUES = [\"brief\", \"standard\", \"deep\", \"full\"] as const;\n/**\n * Restricts context depth values accepted by command, SDK, and storage contracts.\n */\nexport type ContextDepth = (typeof CONTEXT_DEPTH_VALUES)[number];\n\nexport const CONTEXT_SECTION_VALUES = [\n \"hierarchy\",\n \"activity\",\n \"progress\",\n \"recently_created\",\n \"unparented\",\n \"blockers\",\n \"files\",\n \"workload\",\n \"staleness\",\n \"tests\",\n] as const;\n/**\n * Restricts context section name values accepted by command, SDK, and storage contracts.\n */\nexport type ContextSectionName = (typeof CONTEXT_SECTION_VALUES)[number];\n\n/**\n * Documents the context section settings payload exchanged by command, SDK, and package integrations.\n */\nexport interface ContextSectionSettings {\n hierarchy: boolean;\n activity: boolean;\n progress: boolean;\n recently_created: boolean;\n unparented: boolean;\n blockers: boolean;\n files: boolean;\n workload: boolean;\n staleness: boolean;\n tests: boolean;\n}\n\n/**\n * Documents the context settings payload exchanged by command, SDK, and package integrations.\n */\nexport interface ContextSettings {\n default_depth: ContextDepth;\n activity_limit: number;\n stale_threshold_days: number;\n sections: ContextSectionSettings;\n}\n\n/**\n * Documents the governance settings payload exchanged by command, SDK, and package integrations.\n */\nexport interface GovernanceSettings {\n preset: GovernancePreset;\n ownership_enforcement: GovernanceOwnershipEnforcement;\n create_mode_default: GovernanceCreateModeDefault;\n close_validation_default: GovernanceCloseValidationDefault;\n require_close_reason: boolean;\n parent_reference: ParentReferencePolicy;\n metadata_profile: ValidateMetadataProfile;\n force_required_for_stale_lock: boolean;\n create_default_type?: string;\n /**\n * Per-type allowed-transition enforcement mode for `pm update --status`.\n * Read raw from settings (not preset-derived) so existing projects are\n * unaffected when unset; defaults to \"off\".\n */\n workflow_enforcement?: GovernanceWorkflowEnforcement;\n}\n\n/**\n * Restricts extension policy mode values accepted by command, SDK, and storage contracts.\n */\nexport type ExtensionPolicyMode = \"off\" | \"warn\" | \"enforce\";\n/**\n * Restricts extension trust mode values accepted by command, SDK, and storage contracts.\n */\nexport type ExtensionTrustMode = \"off\" | \"warn\" | \"enforce\";\n/**\n * Restricts extension sandbox profile values accepted by command, SDK, and storage contracts.\n */\nexport type ExtensionSandboxProfile = \"none\" | \"restricted\" | \"strict\";\n\n/**\n * Documents the extension policy override settings payload exchanged by command, SDK, and package integrations.\n */\nexport interface ExtensionPolicyOverrideSettings {\n name: string;\n disabled?: boolean;\n require_trusted?: boolean;\n require_provenance?: boolean;\n sandbox_profile?: ExtensionSandboxProfile;\n allowed_capabilities?: string[];\n blocked_capabilities?: string[];\n allowed_surfaces?: string[];\n blocked_surfaces?: string[];\n allowed_commands?: string[];\n blocked_commands?: string[];\n allowed_actions?: string[];\n blocked_actions?: string[];\n allowed_services?: string[];\n blocked_services?: string[];\n}\n\n/**\n * Documents the extension policy settings payload exchanged by command, SDK, and package integrations.\n */\nexport interface ExtensionPolicySettings {\n mode: ExtensionPolicyMode;\n trust_mode: ExtensionTrustMode;\n require_provenance: boolean;\n trusted_extensions: string[];\n default_sandbox_profile: ExtensionSandboxProfile;\n allowed_extensions: string[];\n blocked_extensions: string[];\n allowed_capabilities: string[];\n blocked_capabilities: string[];\n allowed_surfaces: string[];\n blocked_surfaces: string[];\n allowed_commands: string[];\n blocked_commands: string[];\n allowed_actions: string[];\n blocked_actions: string[];\n allowed_services: string[];\n blocked_services: string[];\n extension_overrides: ExtensionPolicyOverrideSettings[];\n}\n\n/**\n * Documents the agent guidance settings payload exchanged by command, SDK, and package integrations.\n */\nexport interface AgentGuidanceSettings {\n prompt_completed: boolean;\n declined: boolean;\n declined_at: string;\n template_version: number;\n last_checked_files: string[];\n}\n\n/**\n * Restricts search mutation refresh policy values accepted by command, SDK, and storage contracts.\n */\nexport type SearchMutationRefreshPolicy = \"cache_only\" | \"semantic_configured\" | \"semantic_auto\";\n\n/**\n * Documents the search query expansion settings payload exchanged by command, SDK, and package integrations.\n */\nexport interface SearchQueryExpansionSettings {\n enabled: boolean;\n provider: string;\n}\n\n/**\n * Documents the search rerank settings payload exchanged by command, SDK, and package integrations.\n */\nexport interface SearchRerankSettings {\n enabled: boolean;\n model: string;\n top_k: number;\n}\n\n/**\n * Config-driven policy for automatic history-stream compaction triage.\n *\n * When `enabled`, `pm health` surfaces an advisory warning for any history\n * stream whose non-empty entry count exceeds `max_entries`, and `pm\n * history-compact` bulk mode uses `max_entries` as its default `--all-over`\n * threshold so the configured policy drives corpus-wide sweeps. `trigger`\n * records operator intent — both values raise the health advisory; `auto`\n * additionally signals that scheduled/automatic sweeps are expected.\n */\nexport interface HistoryCompactPolicy {\n enabled: boolean;\n max_entries: number;\n trigger: \"health_warn\" | \"auto\";\n}\n\n/**\n * Documents the pm settings payload exchanged by command, SDK, and package integrations.\n */\nexport interface PmSettings {\n version: number;\n id_prefix: string;\n author_default: string;\n item_format: ItemFormat;\n locks: {\n ttl_seconds: number;\n };\n /**\n * Retention policy for bulk-mutation rollback checkpoints written by\n * `update-many`/`close-many`. `pm gc --scope checkpoints` prunes checkpoint\n * files older than `retention_days`; checkpoints with an unparseable\n * `created_at` are retained (safety-first, mirroring the stale-lock sweep).\n */\n checkpoints: {\n retention_days: number;\n };\n output: {\n default_format: \"toon\" | \"json\";\n };\n history: {\n missing_stream: \"auto_create\" | \"strict_error\";\n compact_policy: HistoryCompactPolicy;\n };\n validation: {\n sprint_release_format: SprintReleaseFormatPolicy;\n parent_reference: ParentReferencePolicy;\n metadata_profile: ValidateMetadataProfile;\n metadata_required_fields: ValidateMetadataRequiredField[];\n lifecycle_stale_blocker_reason_patterns: string[];\n lifecycle_closure_like_blocked_reason_patterns: string[];\n lifecycle_closure_like_resolution_patterns: string[];\n lifecycle_closure_like_actual_result_patterns: string[];\n /**\n * Per-type default estimates (minutes) used by `pm validate --auto-fix\n * --fix-scope estimates` to backfill missing `estimated_minutes` (GH-212).\n * Keys are item type names (case-insensitive); values are positive minutes\n * that override the built-in defaults. Empty by default.\n */\n estimate_defaults_by_type: Record<string, number>;\n };\n governance: GovernanceSettings;\n workflow: {\n definition_of_done: string[];\n };\n testing: {\n record_results_to_items: boolean;\n };\n telemetry: {\n enabled: boolean;\n first_run_prompt_completed: boolean;\n capture_level: \"minimal\" | \"redacted\" | \"max\";\n endpoint: string;\n installation_id: string;\n retention_days: number;\n };\n agent_guidance: AgentGuidanceSettings;\n item_types: {\n definitions: ItemTypeDefinition[];\n };\n schema: RuntimeSchemaSettings;\n extensions: {\n enabled: string[];\n disabled: string[];\n policy: ExtensionPolicySettings;\n };\n search: {\n score_threshold: number;\n hybrid_semantic_weight: number;\n max_results: number;\n embedding_model: string;\n embedding_corpus_max_characters?: number;\n embedding_batch_size: number;\n embedding_timeout_ms: number;\n scanner_max_batch_retries: number;\n provider?: string;\n /**\n * Optional allow-list of corpus field names embedded for semantic search\n * (see DEFAULT_SEARCH_CORPUS_FIELDS in core/search/corpus.ts). When unset or\n * empty, the full default field set is used (backward compatible). When set,\n * only the named fields are embedded — letting teams opt structured signals\n * (priority, assignee, risk, acceptance_criteria, etc.) in/out for token\n * efficiency. Changing this re-flags items stale on the next refresh.\n */\n corpus_fields?: string[];\n mutation_refresh_policy: SearchMutationRefreshPolicy;\n query_expansion: SearchQueryExpansionSettings;\n rerank: SearchRerankSettings;\n /**\n * Offline BM25 lexical-ranking parameters (pm-75k9), applied when\n * `search.provider` is `bm25` (or auto-selected as the offline fallback) for\n * semantic/hybrid queries. `k1` controls term-frequency saturation, `b`\n * controls document-length normalization. Unset → Lucene defaults (1.2/0.75).\n */\n bm25?: {\n k1?: number;\n b?: number;\n };\n tuning?: {\n title_exact_bonus?: number;\n title_weight?: number;\n description_weight?: number;\n tags_weight?: number;\n status_weight?: number;\n body_weight?: number;\n comments_weight?: number;\n notes_weight?: number;\n learnings_weight?: number;\n dependencies_weight?: number;\n linked_content_weight?: number;\n };\n };\n providers: {\n openai: {\n base_url: string;\n api_key: string;\n model: string;\n };\n ollama: {\n base_url: string;\n model: string;\n };\n };\n context: ContextSettings;\n vector_store: {\n adapter?: string;\n collection_name: string;\n qdrant: {\n url: string;\n api_key: string;\n };\n lancedb: {\n path: string;\n };\n };\n}\n", "/**\n * @module core/schema/runtime-schema\n *\n * Resolves configurable schema, fields, statuses, and workflows for Runtime Schema.\n */\nimport path from \"node:path\";\nimport { pathExists, readFileIfExists, writeFileAtomic } from \"../fs/fs-utils.js\";\nimport { DEFAULT_STATUS_DEFINITIONS, DEFAULT_WORKFLOW_DEFINITION } from \"../shared/constants.js\";\nimport {\n RUNTIME_FIELD_COMMAND_VALUES,\n RUNTIME_FIELD_TYPE_VALUES,\n RUNTIME_STATUS_ROLE_VALUES,\n RUNTIME_UNKNOWN_FIELD_POLICY_VALUES,\n STATUS_VALUES,\n} from \"../../types/index.js\";\nimport type {\n ItemTypeDefinition,\n RuntimeFieldCommand,\n RuntimeFieldDefinition,\n RuntimeFieldType,\n RuntimeSchemaSettings,\n RuntimeStatusDefinition,\n RuntimeStatusRole,\n RuntimeWorkflowDefinition,\n TypeWorkflowDefinition,\n} from \"../../types/index.js\";\n\nexport type { RuntimeFieldCommand } from \"../../types/index.js\";\n\nexport const DEFAULT_RUNTIME_SCHEMA_FILE_PATHS = Object.freeze({\n types: \"schema/types.json\",\n statuses: \"schema/statuses.json\",\n fields: \"schema/fields.json\",\n workflows: \"schema/workflows.json\",\n});\n\n// Default lifecycle status model and workflow role mapping live in\n// src/core/shared/constants.ts as the single source of truth (also referenced\n// by SETTINGS_DEFAULTS). Re-exported here under the historical names.\nexport const DEFAULT_RUNTIME_WORKFLOW: RuntimeWorkflowDefinition = DEFAULT_WORKFLOW_DEFINITION;\n\nexport const DEFAULT_RUNTIME_STATUS_DEFINITIONS: ReadonlyArray<RuntimeStatusDefinition> = DEFAULT_STATUS_DEFINITIONS;\n\nconst DEFAULT_RUNTIME_FIELD_COMMANDS: RuntimeFieldCommand[] = [\"create\", \"update\"];\n\n/**\n * Documents the runtime status definition resolved payload exchanged by command, SDK, and package integrations.\n */\nexport interface RuntimeStatusDefinitionResolved {\n id: string;\n aliases: string[];\n roles: RuntimeStatusRole[];\n description?: string;\n order: number;\n}\n\n/**\n * Documents the runtime field definition resolved payload exchanged by command, SDK, and package integrations.\n */\nexport interface RuntimeFieldDefinitionResolved {\n key: string;\n metadata_key: string;\n cli_flag: string;\n cli_aliases: string[];\n description?: string;\n type: RuntimeFieldType;\n commands: RuntimeFieldCommand[];\n repeatable: boolean;\n required: boolean;\n required_on_create: boolean;\n required_types: string[];\n allow_unset: boolean;\n}\n\n/**\n * Documents the runtime status registry payload exchanged by command, SDK, and package integrations.\n */\nexport interface RuntimeStatusRegistry {\n definitions: RuntimeStatusDefinitionResolved[];\n by_id: Map<string, RuntimeStatusDefinitionResolved>;\n alias_to_id: Map<string, string>;\n terminal_statuses: Set<string>;\n terminal_done_statuses: Set<string>;\n terminal_canceled_statuses: Set<string>;\n active_statuses: Set<string>;\n blocked_statuses: Set<string>;\n draft_statuses: Set<string>;\n open_status: string;\n close_status: string;\n canceled_status: string;\n}\n\n/**\n * Documents the runtime field registry payload exchanged by command, SDK, and package integrations.\n */\nexport interface RuntimeFieldRegistry {\n definitions: RuntimeFieldDefinitionResolved[];\n by_key: Map<string, RuntimeFieldDefinitionResolved>;\n by_cli_token: Map<string, RuntimeFieldDefinitionResolved>;\n command_to_fields: Map<RuntimeFieldCommand, RuntimeFieldDefinitionResolved[]>;\n}\n\n/**\n * Documents the runtime schema file bootstrap result payload exchanged by command, SDK, and package integrations.\n */\nexport interface RuntimeSchemaFileBootstrapResult {\n created_paths: string[];\n}\n\n/**\n * Documents the loaded runtime schema sections payload exchanged by command, SDK, and package integrations.\n */\nexport interface LoadedRuntimeSchemaSections {\n schema: RuntimeSchemaSettings;\n type_definitions_from_file: ItemTypeDefinition[] | undefined;\n warnings: string[];\n created_paths: string[];\n}\n\nconst RUNTIME_STATUS_ROLE_SET = new Set<string>(RUNTIME_STATUS_ROLE_VALUES);\nconst RUNTIME_FIELD_TYPE_SET = new Set<string>(RUNTIME_FIELD_TYPE_VALUES);\nconst RUNTIME_FIELD_COMMAND_SET = new Set<string>(RUNTIME_FIELD_COMMAND_VALUES);\nconst RUNTIME_UNKNOWN_FIELD_POLICY_SET = new Set<string>(RUNTIME_UNKNOWN_FIELD_POLICY_VALUES);\n\nfunction normalizeStringList(values: string[] | undefined): string[] {\n const candidates = Array.isArray(values) ? values : [];\n return [...new Set(candidates.map((value) => (typeof value === \"string\" ? value.trim() : \"\")).filter((value) => value.length > 0))]\n .sort((left, right) => left.localeCompare(right));\n}\n\nfunction normalizeStatusToken(value: unknown): string {\n return typeof value === \"string\" ? value.trim().toLowerCase().replaceAll(/[\\s-]+/g, \"_\") : \"\";\n}\n\nfunction normalizeStatusId(value: unknown): string | undefined {\n if (typeof value !== \"string\" || value.length === 0) {\n return undefined;\n }\n const normalized = normalizeStatusToken(value);\n return normalized.length > 0 ? normalized : undefined;\n}\n\nfunction stripFlagPrefix(value: string): string {\n return value.startsWith(\"--\") ? value.slice(2) : value;\n}\n\nfunction normalizeCliToken(value: unknown): string {\n return typeof value === \"string\" ? stripFlagPrefix(value.trim().toLowerCase().replaceAll(/[\\s_]+/g, \"-\")) : \"\";\n}\n\nfunction keyToDefaultCliFlag(value: string): string {\n return value.replaceAll(\"_\", \"-\");\n}\n\nfunction toCamelCase(input: string): string {\n const segments = input\n .replaceAll(/[^A-Za-z0-9]+/g, \" \")\n .trim()\n .split(/\\s+/)\n .filter((segment) => segment.length > 0)\n .map((segment) => segment.toLowerCase());\n if (segments.length === 0) {\n return input;\n }\n const [first, ...rest] = segments;\n return `${first}${rest.map((segment) => `${segment.slice(0, 1).toUpperCase()}${segment.slice(1)}`).join(\"\")}`;\n}\n\nfunction normalizeRuntimeStatusDefinition(\n definition: RuntimeStatusDefinition,\n fallbackOrder: number,\n): RuntimeStatusDefinitionResolved | null {\n const id = normalizeStatusId(definition.id);\n if (!id) {\n return null;\n }\n const aliases = normalizeStringList(definition.aliases).map((value) => normalizeStatusToken(value)).filter((value) => value !== id);\n const roles = normalizeStringList(definition.roles).filter((value): value is RuntimeStatusRole => RUNTIME_STATUS_ROLE_SET.has(value));\n const description = definition.description?.trim();\n const order = typeof definition.order === \"number\" && Number.isFinite(definition.order) ? definition.order : fallbackOrder;\n return {\n id,\n aliases,\n roles,\n description: description && description.length > 0 ? description : undefined,\n order,\n };\n}\n\nfunction normalizeRuntimeWorkflow(workflow: RuntimeWorkflowDefinition | undefined): RuntimeWorkflowDefinition {\n return {\n draft_status: normalizeStatusId(workflow?.draft_status),\n open_status: normalizeStatusId(workflow?.open_status),\n in_progress_status: normalizeStatusId(workflow?.in_progress_status),\n blocked_status: normalizeStatusId(workflow?.blocked_status),\n close_status: normalizeStatusId(workflow?.close_status),\n canceled_status: normalizeStatusId(workflow?.canceled_status),\n };\n}\n\nfunction normalizeTypeWorkflowDefinitions(\n workflows: TypeWorkflowDefinition[] | undefined,\n): TypeWorkflowDefinition[] | undefined {\n if (!Array.isArray(workflows) || workflows.length === 0) {\n return undefined;\n }\n // Keep the raw (trimmed) type name so it round-trips verbatim; comparison is\n // case-insensitive downstream (resolveTypeWorkflows lower-cases). from/to\n // status tokens use the same normalization rules as runtime statuses.\n //\n // An EXPLICIT empty `allowed_transitions: []` is a deliberate DENY-ALL rule and\n // MUST survive normalization (it must NOT collapse to \"no entry\", which would\n // leave the type unrestricted). But a NON-empty array whose every pair is\n // malformed (e.g. a 3-element tuple typo) must be DROPPED like other malformed\n // schema-file content, NOT silently turned into a deny-all rule — otherwise a\n // typo would start failing every update for that type under strict enforcement.\n const byTypeKey = new Map<string, { type: string; pairs: [string, string][]; denyAll: boolean }>();\n for (const entry of workflows) {\n const rawType = typeof entry?.type === \"string\" ? entry.type.trim() : \"\";\n if (rawType.length === 0) {\n continue;\n }\n if (!Array.isArray(entry?.allowed_transitions)) {\n continue;\n }\n const typeKey = rawType.toLowerCase();\n const pairs = entry.allowed_transitions;\n const record = byTypeKey.get(typeKey) ?? { type: rawType, pairs: [], denyAll: false };\n // Only an explicitly empty array signals an intentional deny-all.\n if (pairs.length === 0) {\n record.denyAll = true;\n }\n for (const pair of pairs) {\n if (!Array.isArray(pair) || pair.length !== 2) {\n continue;\n }\n const from = normalizeStatusToken(pair[0]);\n const to = normalizeStatusToken(pair[1]);\n if (from.length === 0 || to.length === 0) {\n continue;\n }\n if (record.pairs.some((candidate) => candidate[0] === from && candidate[1] === to)) {\n continue;\n }\n record.pairs.push([from, to]);\n }\n byTypeKey.set(typeKey, record);\n }\n const normalized: TypeWorkflowDefinition[] = [];\n for (const record of byTypeKey.values()) {\n // Keep when there is at least one valid transition OR an explicit deny-all was\n // declared; drop nonempty-but-all-malformed entries (treated as typos).\n if (record.pairs.length > 0 || record.denyAll) {\n normalized.push({ type: record.type, allowed_transitions: record.pairs });\n }\n }\n normalized.sort((left, right) => left.type.localeCompare(right.type));\n return normalized.length > 0 ? normalized : undefined;\n}\n\nfunction normalizeRuntimeFieldDefinition(definition: RuntimeFieldDefinition): RuntimeFieldDefinitionResolved | null {\n const key = normalizeStatusToken(definition.key ?? \"\");\n if (!key) {\n return null;\n }\n const metadataKey = normalizeStatusToken(definition.metadata_key ?? definition.front_matter_key ?? key);\n const cliFlag = normalizeCliToken(definition.cli_flag ?? keyToDefaultCliFlag(key));\n if (!cliFlag) {\n return null;\n }\n const cliAliases = normalizeStringList(definition.cli_aliases)\n .map((value) => normalizeCliToken(value))\n .filter((value) => value.length > 0 && value !== cliFlag);\n const typeCandidate = typeof definition.type === \"string\" ? definition.type.trim().toLowerCase() : \"string\";\n const type = RUNTIME_FIELD_TYPE_SET.has(typeCandidate) ? (typeCandidate as RuntimeFieldType) : \"string\";\n const commands = (() => {\n const normalized = normalizeStringList(definition.commands).filter((value): value is RuntimeFieldCommand =>\n RUNTIME_FIELD_COMMAND_SET.has(value),\n );\n if (normalized.length > 0) {\n return normalized;\n }\n return [...DEFAULT_RUNTIME_FIELD_COMMANDS];\n })();\n const description = definition.description?.trim();\n const requiredTypes = normalizeStringList(definition.required_types);\n return {\n key,\n metadata_key: metadataKey,\n cli_flag: cliFlag,\n cli_aliases: cliAliases,\n description: description && description.length > 0 ? description : undefined,\n type,\n commands,\n repeatable: definition.repeatable === true || type === \"string_array\",\n required: definition.required === true,\n required_on_create: definition.required_on_create === true,\n required_types: requiredTypes,\n allow_unset: definition.allow_unset !== false,\n };\n}\n\n/**\n * Implements normalize runtime schema settings for the public runtime surface of this module.\n */\nexport function normalizeRuntimeSchemaSettings(schema: Partial<RuntimeSchemaSettings> | undefined): RuntimeSchemaSettings {\n const files = {\n ...DEFAULT_RUNTIME_SCHEMA_FILE_PATHS,\n ...(schema?.files ?? {}),\n };\n const statusesSource = schema?.statuses && schema.statuses.length > 0 ? schema.statuses : DEFAULT_RUNTIME_STATUS_DEFINITIONS;\n const normalizedStatuses = (() => {\n const dedupedById = new Map<string, RuntimeStatusDefinitionResolved>();\n for (const [index, definition] of statusesSource.entries()) {\n const normalized = normalizeRuntimeStatusDefinition(definition, index);\n if (!normalized) {\n continue;\n }\n dedupedById.set(normalized.id, normalized);\n }\n const values = [...dedupedById.values()].sort((left, right) =>\n left.order === right.order ? left.id.localeCompare(right.id) : left.order - right.order,\n );\n if (values.length > 0) {\n return values;\n }\n return DEFAULT_RUNTIME_STATUS_DEFINITIONS.map((definition, index) =>\n normalizeRuntimeStatusDefinition(definition, index),\n ).filter((definition): definition is RuntimeStatusDefinitionResolved => definition !== null);\n })();\n const normalizedFields = (() => {\n const dedupedByKey = new Map<string, RuntimeFieldDefinitionResolved>();\n for (const definition of schema?.fields ?? []) {\n const normalized = normalizeRuntimeFieldDefinition(definition);\n if (!normalized) {\n continue;\n }\n dedupedByKey.set(normalized.key, normalized);\n }\n return [...dedupedByKey.values()].sort((left, right) => left.key.localeCompare(right.key));\n })();\n const unknownFieldPolicyCandidate =\n typeof schema?.unknown_field_policy === \"string\" ? schema.unknown_field_policy.trim().toLowerCase() : \"allow\";\n const unknownFieldPolicy = RUNTIME_UNKNOWN_FIELD_POLICY_SET.has(unknownFieldPolicyCandidate)\n ? unknownFieldPolicyCandidate\n : \"allow\";\n return {\n version: typeof schema?.version === \"number\" && Number.isFinite(schema.version) ? Math.floor(schema.version) : 1,\n files,\n statuses: normalizedStatuses.map((definition) => ({\n id: definition.id,\n aliases: definition.aliases.length > 0 ? [...definition.aliases] : undefined,\n roles: definition.roles.length > 0 ? [...definition.roles] : undefined,\n description: definition.description,\n order: definition.order,\n })),\n fields: normalizedFields.map((definition) => ({\n key: definition.key,\n metadata_key: definition.metadata_key !== definition.key ? definition.metadata_key : undefined,\n cli_flag: definition.cli_flag !== keyToDefaultCliFlag(definition.key) ? definition.cli_flag : undefined,\n cli_aliases: definition.cli_aliases.length > 0 ? [...definition.cli_aliases] : undefined,\n description: definition.description,\n type: definition.type,\n commands: [...definition.commands],\n repeatable: definition.repeatable === true ? true : undefined,\n required: definition.required === true ? true : undefined,\n required_on_create: definition.required_on_create === true ? true : undefined,\n required_types: definition.required_types.length > 0 ? [...definition.required_types] : undefined,\n allow_unset: definition.allow_unset === false ? false : undefined,\n })),\n workflow: {\n ...DEFAULT_RUNTIME_WORKFLOW,\n ...normalizeRuntimeWorkflow(schema?.workflow),\n },\n type_workflows: normalizeTypeWorkflowDefinitions(schema?.type_workflows),\n unknown_field_policy: unknownFieldPolicy as RuntimeSchemaSettings[\"unknown_field_policy\"],\n };\n}\n\nfunction serializeJson(value: unknown): string {\n return `${JSON.stringify(value, null, 2)}\\n`;\n}\n\nfunction buildTypesFileSeed(): unknown {\n return {\n definitions: [],\n };\n}\n\nfunction buildStatusesFileSeed(): unknown {\n return {\n statuses: DEFAULT_RUNTIME_STATUS_DEFINITIONS,\n };\n}\n\nfunction buildFieldsFileSeed(): unknown {\n return {\n fields: [],\n };\n}\n\nfunction buildWorkflowsFileSeed(): unknown {\n return {\n workflow: DEFAULT_RUNTIME_WORKFLOW,\n };\n}\n\nfunction parseOptionalJson(raw: string, warningKey: string, warnings: string[]): unknown | undefined {\n try {\n return JSON.parse(raw) as unknown;\n } catch {\n warnings.push(warningKey);\n return undefined;\n }\n}\n\nfunction readTypeDefinitionsFromSchemaFile(parsed: unknown): ItemTypeDefinition[] | undefined {\n if (Array.isArray(parsed)) {\n return parsed as ItemTypeDefinition[];\n }\n if (typeof parsed !== \"object\" || parsed === null) {\n return undefined;\n }\n const record = parsed as Record<string, unknown>;\n if (Array.isArray(record.definitions)) {\n return record.definitions as ItemTypeDefinition[];\n }\n if (typeof record.item_types === \"object\" && record.item_types !== null) {\n const itemTypesRecord = record.item_types as Record<string, unknown>;\n if (Array.isArray(itemTypesRecord.definitions)) {\n return itemTypesRecord.definitions as ItemTypeDefinition[];\n }\n }\n return undefined;\n}\n\nfunction readStatusesFromSchemaFile(parsed: unknown): RuntimeStatusDefinition[] | undefined {\n if (Array.isArray(parsed)) {\n return parsed as RuntimeStatusDefinition[];\n }\n if (typeof parsed !== \"object\" || parsed === null) {\n return undefined;\n }\n const record = parsed as Record<string, unknown>;\n if (Array.isArray(record.statuses)) {\n return record.statuses as RuntimeStatusDefinition[];\n }\n if (Array.isArray(record.definitions)) {\n return record.definitions as RuntimeStatusDefinition[];\n }\n return undefined;\n}\n\nfunction readFieldsFromSchemaFile(parsed: unknown): RuntimeFieldDefinition[] | undefined {\n if (Array.isArray(parsed)) {\n return parsed as RuntimeFieldDefinition[];\n }\n if (typeof parsed !== \"object\" || parsed === null) {\n return undefined;\n }\n const record = parsed as Record<string, unknown>;\n if (Array.isArray(record.fields)) {\n return record.fields as RuntimeFieldDefinition[];\n }\n if (Array.isArray(record.definitions)) {\n return record.definitions as RuntimeFieldDefinition[];\n }\n return undefined;\n}\n\nfunction readWorkflowFromSchemaFile(parsed: unknown): RuntimeWorkflowDefinition | undefined {\n if (typeof parsed !== \"object\" || parsed === null || Array.isArray(parsed)) {\n return undefined;\n }\n const record = parsed as Record<string, unknown>;\n if (typeof record.workflow === \"object\" && record.workflow !== null && !Array.isArray(record.workflow)) {\n return record.workflow as RuntimeWorkflowDefinition;\n }\n if (typeof record.workflows === \"object\" && record.workflows !== null && !Array.isArray(record.workflows)) {\n return record.workflows as RuntimeWorkflowDefinition;\n }\n return record as RuntimeWorkflowDefinition;\n}\n\nfunction readTypeWorkflowsFromSchemaFile(parsed: unknown): TypeWorkflowDefinition[] | undefined {\n if (typeof parsed !== \"object\" || parsed === null || Array.isArray(parsed)) {\n return undefined;\n }\n const record = parsed as Record<string, unknown>;\n if (Array.isArray(record.type_workflows)) {\n return record.type_workflows as TypeWorkflowDefinition[];\n }\n return undefined;\n}\n\n/**\n * Implements file path for schema section for the public runtime surface of this module.\n */\nexport function filePathForSchemaSection(pmRoot: string, configuredPath: string | undefined, fallbackPath: string): string {\n const normalized = configuredPath?.trim() || fallbackPath;\n if (path.isAbsolute(normalized)) {\n return normalized;\n }\n return path.join(pmRoot, normalized);\n}\n\n/**\n * Resolves the active tracker's `schema/types.json` path so user-facing hints\n * (e.g. the invalid-type error) point at the real `--pm-path` location instead\n * of the hardcoded `.agents/pm` default. Mirrors how `pm schema add/remove-type`\n * report their target path.\n */\nexport function resolveItemTypesFilePath(pmRoot: string, schema: RuntimeSchemaSettings): string {\n return filePathForSchemaSection(pmRoot, schema.files.types, DEFAULT_RUNTIME_SCHEMA_FILE_PATHS.types);\n}\n\n/**\n * Implements ensure runtime schema file scaffold for the public runtime surface of this module.\n */\nexport async function ensureRuntimeSchemaFileScaffold(\n pmRoot: string,\n schema: RuntimeSchemaSettings,\n): Promise<RuntimeSchemaFileBootstrapResult> {\n const normalizedSchema = normalizeRuntimeSchemaSettings(schema);\n const specs: Array<{ path: string; seed: unknown }> = [\n {\n path: filePathForSchemaSection(pmRoot, normalizedSchema.files.types, DEFAULT_RUNTIME_SCHEMA_FILE_PATHS.types),\n seed: buildTypesFileSeed(),\n },\n {\n path: filePathForSchemaSection(pmRoot, normalizedSchema.files.statuses, DEFAULT_RUNTIME_SCHEMA_FILE_PATHS.statuses),\n seed: buildStatusesFileSeed(),\n },\n {\n path: filePathForSchemaSection(pmRoot, normalizedSchema.files.fields, DEFAULT_RUNTIME_SCHEMA_FILE_PATHS.fields),\n seed: buildFieldsFileSeed(),\n },\n {\n path: filePathForSchemaSection(pmRoot, normalizedSchema.files.workflows, DEFAULT_RUNTIME_SCHEMA_FILE_PATHS.workflows),\n seed: buildWorkflowsFileSeed(),\n },\n ];\n const createdPaths: string[] = [];\n for (const spec of specs) {\n if (await pathExists(spec.path)) {\n continue;\n }\n await writeFileAtomic(spec.path, serializeJson(spec.seed));\n createdPaths.push(spec.path);\n }\n return {\n created_paths: createdPaths,\n };\n}\n\n/**\n * Implements load runtime schema from optional files for the public runtime surface of this module.\n */\nexport async function loadRuntimeSchemaFromOptionalFiles(\n pmRoot: string,\n schema: RuntimeSchemaSettings,\n): Promise<LoadedRuntimeSchemaSections> {\n const normalizedSchema = normalizeRuntimeSchemaSettings(schema);\n const warnings: string[] = [];\n const typeFilePath = filePathForSchemaSection(pmRoot, normalizedSchema.files.types, DEFAULT_RUNTIME_SCHEMA_FILE_PATHS.types);\n const statusFilePath = filePathForSchemaSection(\n pmRoot,\n normalizedSchema.files.statuses,\n DEFAULT_RUNTIME_SCHEMA_FILE_PATHS.statuses,\n );\n const fieldsFilePath = filePathForSchemaSection(pmRoot, normalizedSchema.files.fields, DEFAULT_RUNTIME_SCHEMA_FILE_PATHS.fields);\n const workflowsFilePath = filePathForSchemaSection(\n pmRoot,\n normalizedSchema.files.workflows,\n DEFAULT_RUNTIME_SCHEMA_FILE_PATHS.workflows,\n );\n\n let loadedTypeDefinitions: ItemTypeDefinition[] | undefined;\n let loadedStatuses: RuntimeStatusDefinition[] | undefined;\n let loadedFields: RuntimeFieldDefinition[] | undefined;\n let loadedWorkflow: RuntimeWorkflowDefinition | undefined;\n let loadedTypeWorkflows: TypeWorkflowDefinition[] | undefined;\n\n const readAndParse = async (targetPath: string, warningKey: string): Promise<unknown | undefined> => {\n const raw = await readFileIfExists(targetPath);\n if (raw === null) {\n return undefined;\n }\n return parseOptionalJson(raw, warningKey, warnings);\n };\n\n const parsedTypes = await readAndParse(typeFilePath, \"runtime_schema_types_invalid_json\");\n if (parsedTypes !== undefined) {\n loadedTypeDefinitions = readTypeDefinitionsFromSchemaFile(parsedTypes);\n if (loadedTypeDefinitions === undefined) {\n warnings.push(\"runtime_schema_types_invalid_shape\");\n }\n }\n\n const parsedStatuses = await readAndParse(statusFilePath, \"runtime_schema_statuses_invalid_json\");\n if (parsedStatuses !== undefined) {\n loadedStatuses = readStatusesFromSchemaFile(parsedStatuses);\n if (loadedStatuses === undefined) {\n warnings.push(\"runtime_schema_statuses_invalid_shape\");\n }\n }\n\n const parsedFields = await readAndParse(fieldsFilePath, \"runtime_schema_fields_invalid_json\");\n if (parsedFields !== undefined) {\n loadedFields = readFieldsFromSchemaFile(parsedFields);\n if (loadedFields === undefined) {\n warnings.push(\"runtime_schema_fields_invalid_shape\");\n }\n }\n\n const parsedWorkflow = await readAndParse(workflowsFilePath, \"runtime_schema_workflows_invalid_json\");\n if (parsedWorkflow !== undefined) {\n loadedWorkflow = readWorkflowFromSchemaFile(parsedWorkflow);\n if (loadedWorkflow === undefined) {\n warnings.push(\"runtime_schema_workflows_invalid_shape\");\n }\n // type_workflows live alongside `workflow` in the same file; their absence\n // is not an error (the file may carry only the lifecycle workflow block).\n loadedTypeWorkflows = readTypeWorkflowsFromSchemaFile(parsedWorkflow);\n }\n\n const mergedSchema = normalizeRuntimeSchemaSettings({\n ...normalizedSchema,\n statuses: [...normalizedSchema.statuses, ...(loadedStatuses ?? [])],\n fields: [...normalizedSchema.fields, ...(loadedFields ?? [])],\n workflow: {\n ...normalizedSchema.workflow,\n ...(loadedWorkflow ?? {}),\n },\n type_workflows: [...(normalizedSchema.type_workflows ?? []), ...(loadedTypeWorkflows ?? [])],\n });\n\n return {\n schema: mergedSchema,\n type_definitions_from_file: loadedTypeDefinitions,\n warnings,\n created_paths: [],\n };\n}\n\nfunction preferredStatusForRole(\n definitions: RuntimeStatusDefinitionResolved[],\n role: RuntimeStatusRole,\n fallbackValues: string[],\n): string | undefined {\n const withRole = definitions.filter((definition) => definition.roles.includes(role));\n if (withRole.length > 0) {\n return withRole[0].id;\n }\n const normalizedFallbacks = fallbackValues\n .map((value) => normalizeStatusId(value))\n .filter((value): value is string => typeof value === \"string\");\n for (const normalized of normalizedFallbacks) {\n if (definitions.some((definition) => definition.id === normalized)) {\n return normalized;\n }\n }\n return definitions[0]?.id;\n}\n\n/**\n * Implements resolve runtime status registry for the public runtime surface of this module.\n */\nexport function resolveRuntimeStatusRegistry(schema: RuntimeSchemaSettings): RuntimeStatusRegistry {\n const normalizedSchema = normalizeRuntimeSchemaSettings(schema);\n const definitions = normalizedSchema.statuses.map((definition, index) =>\n normalizeRuntimeStatusDefinition(definition, index),\n ).filter((definition): definition is RuntimeStatusDefinitionResolved => definition !== null);\n const aliasToId = new Map<string, string>();\n const byId = new Map<string, RuntimeStatusDefinitionResolved>();\n for (const definition of definitions) {\n byId.set(definition.id, definition);\n aliasToId.set(definition.id, definition.id);\n aliasToId.set(definition.id.replaceAll(\"_\", \"-\"), definition.id);\n aliasToId.set(definition.id.replaceAll(\"_\", \" \"), definition.id);\n for (const alias of definition.aliases) {\n aliasToId.set(alias, definition.id);\n aliasToId.set(alias.replaceAll(\"_\", \"-\"), definition.id);\n aliasToId.set(alias.replaceAll(\"_\", \" \"), definition.id);\n }\n }\n const terminalStatuses = new Set<string>();\n const terminalDoneStatuses = new Set<string>();\n const terminalCanceledStatuses = new Set<string>();\n const activeStatuses = new Set<string>();\n const blockedStatuses = new Set<string>();\n const draftStatuses = new Set<string>();\n for (const definition of definitions) {\n const roles = new Set(definition.roles);\n if (roles.has(\"terminal\") || roles.has(\"terminal_done\") || roles.has(\"terminal_canceled\")) {\n terminalStatuses.add(definition.id);\n }\n if (roles.has(\"terminal_done\")) {\n terminalDoneStatuses.add(definition.id);\n }\n if (roles.has(\"terminal_canceled\")) {\n terminalCanceledStatuses.add(definition.id);\n }\n if (roles.has(\"active\")) {\n activeStatuses.add(definition.id);\n }\n if (roles.has(\"blocked\")) {\n blockedStatuses.add(definition.id);\n }\n if (roles.has(\"draft\")) {\n draftStatuses.add(definition.id);\n }\n }\n const workflow = normalizedSchema.workflow;\n const openStatus =\n normalizeStatusId(workflow.open_status) ??\n preferredStatusForRole(definitions, \"default_open\", [\"open\", \"in_progress\", STATUS_VALUES[0]]);\n const closeStatus =\n normalizeStatusId(workflow.close_status) ??\n preferredStatusForRole(definitions, \"default_close\", [\"closed\", \"done\", \"complete\"]);\n const canceledStatus =\n normalizeStatusId(workflow.canceled_status) ??\n preferredStatusForRole(definitions, \"default_cancel\", [\"canceled\", \"cancelled\"]);\n\n return {\n definitions,\n by_id: byId,\n alias_to_id: aliasToId,\n terminal_statuses: terminalStatuses,\n terminal_done_statuses: terminalDoneStatuses,\n terminal_canceled_statuses: terminalCanceledStatuses,\n active_statuses: activeStatuses,\n blocked_statuses: blockedStatuses,\n draft_statuses: draftStatuses,\n open_status: openStatus as string,\n close_status: closeStatus as string,\n canceled_status: canceledStatus as string,\n };\n}\n\n/**\n * Implements normalize status input with registry for the public runtime surface of this module.\n */\nexport function normalizeStatusInputWithRegistry(value: unknown, registry: RuntimeStatusRegistry): string | undefined {\n const normalized = normalizeStatusToken(value);\n if (!normalized) {\n return undefined;\n }\n return registry.alias_to_id.get(normalized);\n}\n\n/**\n * Implements resolve runtime field registry for the public runtime surface of this module.\n */\nexport function resolveRuntimeFieldRegistry(schema: RuntimeSchemaSettings): RuntimeFieldRegistry {\n const normalizedSchema = normalizeRuntimeSchemaSettings(schema);\n const dedupedByKey = new Map<string, RuntimeFieldDefinitionResolved>();\n const normalizedFields = normalizedSchema.fields\n .map((definition) => normalizeRuntimeFieldDefinition(definition))\n .filter((definition): definition is RuntimeFieldDefinitionResolved => definition !== null);\n for (const normalized of normalizedFields) {\n dedupedByKey.set(normalized.key, normalized);\n }\n const definitions = [...dedupedByKey.values()].sort((left, right) => left.key.localeCompare(right.key));\n const byKey = new Map<string, RuntimeFieldDefinitionResolved>();\n const byCliToken = new Map<string, RuntimeFieldDefinitionResolved>();\n const commandToFields = new Map<RuntimeFieldCommand, RuntimeFieldDefinitionResolved[]>();\n for (const definition of definitions) {\n byKey.set(definition.key, definition);\n byCliToken.set(definition.cli_flag, definition);\n for (const alias of definition.cli_aliases) {\n byCliToken.set(alias, definition);\n }\n for (const command of definition.commands) {\n const existing = commandToFields.get(command) ?? [];\n existing.push(definition);\n commandToFields.set(command, existing);\n }\n }\n for (const [command, fieldDefinitions] of commandToFields.entries()) {\n fieldDefinitions.sort((left, right) => left.key.localeCompare(right.key));\n commandToFields.set(command, fieldDefinitions);\n }\n return {\n definitions,\n by_key: byKey,\n by_cli_token: byCliToken,\n command_to_fields: commandToFields,\n };\n}\n\n/**\n * Implements runtime field option target for the public runtime surface of this module.\n */\nexport function runtimeFieldOptionTarget(field: RuntimeFieldDefinitionResolved): string {\n return toCamelCase(field.key);\n}\n\n/**\n * Implements status is terminal for the public runtime surface of this module.\n */\nexport function statusIsTerminal(status: string, registry: RuntimeStatusRegistry): boolean {\n const normalized = normalizeStatusInputWithRegistry(status, registry);\n if (!normalized) {\n return false;\n }\n return registry.terminal_statuses.has(normalized);\n}\n", "/**\n * @module core/shared/errors\n *\n * Provides shared primitives and utilities for Errors.\n */\n/**\n * Carries structured recovery guidance attached to expected pm CLI errors.\n */\nexport interface PmCliErrorRecoveryPayload {\n recovery_mode?: \"compact\";\n attempted_command?: string;\n normalized_args?: string[];\n provided_fields?: string[];\n missing?: string[];\n missing_required_fields?: string[];\n suggested_flags?: string[];\n suggested_retry?: string;\n fallback_candidates?: Array<{\n source: string;\n command: string;\n reason: string;\n }>;\n next_best_command?: string;\n}\n\n/**\n * Documents the pm cli error context payload exchanged by command, SDK, and package integrations.\n */\nexport interface PmCliErrorContext {\n code?: string;\n type?: string;\n required?: string;\n why?: string;\n examples?: string[];\n nextSteps?: string[];\n recovery?: PmCliErrorRecoveryPayload;\n}\n\n/**\n * Implements the exported pm cli error runtime abstraction for core/shared/errors.ts.\n */\nexport class PmCliError extends Error {\n public readonly exitCode: number;\n public readonly context: PmCliErrorContext;\n\n constructor(message: string, exitCode: number, context: PmCliErrorContext = {}) {\n super(message);\n this.name = \"PmCliError\";\n this.exitCode = exitCode;\n this.context = context;\n }\n}\n", "/**\n * @module core/shared/serialization\n *\n * Provides shared primitives and utilities for Serialization.\n */\nimport crypto from \"node:crypto\";\n\ntype JsonValue = null | boolean | number | string | JsonValue[] | { [key: string]: JsonValue };\n\nfunction sortObjectKeys(value: unknown): JsonValue {\n if (value === null) return null;\n if (typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\") {\n return value;\n }\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n if (value === undefined) {\n return \"undefined\";\n }\n if (typeof value === \"symbol\") {\n return value.toString();\n }\n if (typeof value === \"function\") {\n return `[function:${value.name || \"anonymous\"}]`;\n }\n if (Array.isArray(value)) {\n return value.map((entry) => sortObjectKeys(entry));\n }\n if (value instanceof Date) {\n return value.toISOString();\n }\n const maybeJson = value as { toJSON?: () => unknown };\n if (typeof maybeJson.toJSON === \"function\") {\n const normalized = maybeJson.toJSON();\n if (normalized !== value) {\n return sortObjectKeys(normalized);\n }\n }\n const obj = value as Record<string, unknown>;\n const sortedKeys = Object.keys(obj).sort((a, b) => a.localeCompare(b));\n const result: Record<string, JsonValue> = {};\n for (const key of sortedKeys) {\n const nested = obj[key];\n if (nested === undefined) {\n continue;\n }\n result[key] = sortObjectKeys(nested);\n }\n return result;\n}\n\n/**\n * Implements stable stringify for the public runtime surface of this module.\n */\nexport function stableStringify(value: unknown): string {\n return JSON.stringify(sortObjectKeys(value));\n}\n\n/**\n * Implements stable value equals for the public runtime surface of this module.\n */\nexport function stableValueEquals(left: unknown, right: unknown): boolean {\n if (Object.is(left, right)) {\n return true;\n }\n if (left === null || right === null || typeof left !== \"object\" || typeof right !== \"object\") {\n return false;\n }\n if (left instanceof RegExp || right instanceof RegExp) {\n return left instanceof RegExp && right instanceof RegExp && left.toString() === right.toString();\n }\n if (left instanceof Date || right instanceof Date) {\n return left instanceof Date && right instanceof Date && left.getTime() === right.getTime();\n }\n if (left instanceof Set || right instanceof Set) {\n if (!(left instanceof Set && right instanceof Set) || left.size !== right.size) {\n return false;\n }\n const rightValues = [...right];\n const matched = new Set<number>();\n for (const leftValue of left) {\n let found = false;\n for (let index = 0; index < rightValues.length; index += 1) {\n if (matched.has(index)) {\n continue;\n }\n if (stableValueEquals(leftValue, rightValues[index])) {\n matched.add(index);\n found = true;\n break;\n }\n }\n if (!found) {\n return false;\n }\n }\n return true;\n }\n if (left instanceof Map || right instanceof Map) {\n if (!(left instanceof Map && right instanceof Map) || left.size !== right.size) {\n return false;\n }\n const rightEntries = [...right.entries()];\n const matched = new Set<number>();\n for (const [leftKey, leftValue] of left.entries()) {\n let found = false;\n for (let index = 0; index < rightEntries.length; index += 1) {\n if (matched.has(index)) {\n continue;\n }\n const [rightKey, rightValue] = rightEntries[index]!;\n if (stableValueEquals(leftKey, rightKey) && stableValueEquals(leftValue, rightValue)) {\n matched.add(index);\n found = true;\n break;\n }\n }\n if (!found) {\n return false;\n }\n }\n return true;\n }\n if (Array.isArray(left) || Array.isArray(right)) {\n if (!Array.isArray(left) || !Array.isArray(right) || left.length !== right.length) {\n return false;\n }\n return left.every((value, index) => stableValueEquals(value, right[index]));\n }\n const leftKeys = Object.keys(left).sort((a, b) => a.localeCompare(b));\n const rightKeys = Object.keys(right).sort((a, b) => a.localeCompare(b));\n if (leftKeys.length !== rightKeys.length) {\n return false;\n }\n for (let index = 0; index < leftKeys.length; index += 1) {\n const leftKey = leftKeys[index]!;\n if (leftKey !== rightKeys[index]) {\n return false;\n }\n if (!stableValueEquals((left as Record<string, unknown>)[leftKey], (right as Record<string, unknown>)[leftKey])) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * Implements sha256 hex for the public runtime surface of this module.\n */\nexport function sha256Hex(value: string): string {\n return crypto.createHash(\"sha256\").update(value, \"utf8\").digest(\"hex\");\n}\n\n/**\n * Implements order object for the public runtime surface of this module.\n */\nexport function orderObject<T extends Record<string, unknown>>(\n value: T,\n keyOrder: ReadonlyArray<string>,\n): Record<string, unknown> {\n const ordered: Record<string, unknown> = {};\n\n for (const key of keyOrder) {\n const entry = value[key];\n if (entry !== undefined) {\n ordered[key] = entry;\n }\n }\n\n const unknownKeys = Object.keys(value)\n .filter((key) => !keyOrder.includes(key))\n .sort((a, b) => a.localeCompare(b));\n\n for (const key of unknownKeys) {\n const entry = value[key];\n if (entry !== undefined) {\n ordered[key] = entry;\n }\n }\n\n return ordered;\n}\n", "/**\n * Dependency-free settings validator.\n *\n * Mirrors the previous `zod` schema for `settings.json` exactly (type checks,\n * required-vs-optional fields, integer/positive constraints, literal unions, and\n * unknown-key stripping with all-or-nothing failure semantics) without paying\n * the ~85ms cost of importing `zod` on every command's hot read path.\n *\n * The validator intentionally reproduces the zod schema's shape — including\n * fields that `PmSettings` carries but the schema does not (e.g. `search.tuning`)\n * are stripped here just as zod stripped them — so settings behavior is\n * byte-identical to the previous implementation.\n */\nimport {\n GOVERNANCE_PRESET_VALUES,\n RUNTIME_FIELD_COMMAND_VALUES,\n RUNTIME_FIELD_TYPE_VALUES,\n RUNTIME_STATUS_ROLE_VALUES,\n RUNTIME_UNKNOWN_FIELD_POLICY_VALUES,\n} from \"../../types.js\";\nimport type {\n AgentGuidanceSettings,\n ExtensionPolicySettings,\n GovernanceSettings,\n ItemTypeDefinition,\n RuntimeSchemaSettings,\n} from \"../../types.js\";\nimport type { PmMaxVersionExceededModeSetting } from \"../extensions/extension-types.js\";\n\n/** Validated, unknown-key-stripped settings input (pre-merge), matching the legacy zod inference. */\nexport interface ParsedSettings {\n version: number;\n id_prefix: string;\n author_default: string;\n item_format?: \"toon\" | \"json_markdown\";\n locks: { ttl_seconds: number };\n checkpoints?: { retention_days?: number };\n output: { default_format: \"toon\" | \"json\" };\n history?: {\n missing_stream: \"auto_create\" | \"strict_error\";\n compact_policy?: {\n enabled?: boolean;\n max_entries?: number;\n trigger?: \"health_warn\" | \"auto\";\n };\n };\n validation?: {\n sprint_release_format: \"warn\" | \"strict_error\";\n parent_reference?: \"warn\" | \"strict_error\";\n metadata_profile?: \"core\" | \"strict\" | \"custom\";\n metadata_required_fields?: string[];\n lifecycle_stale_blocker_reason_patterns?: string[];\n lifecycle_closure_like_blocked_reason_patterns?: string[];\n lifecycle_closure_like_resolution_patterns?: string[];\n lifecycle_closure_like_actual_result_patterns?: string[];\n estimate_defaults_by_type?: Record<string, number>;\n };\n governance?: Partial<GovernanceSettings>;\n workflow?: { definition_of_done: string[] };\n testing?: { record_results_to_items: boolean };\n telemetry?: {\n enabled: boolean;\n first_run_prompt_completed?: boolean;\n capture_level?: \"minimal\" | \"redacted\" | \"max\";\n endpoint?: string;\n installation_id?: string;\n retention_days?: number;\n };\n agent_guidance?: Partial<AgentGuidanceSettings>;\n item_types?: { definitions: ItemTypeDefinition[] };\n schema?: Partial<RuntimeSchemaSettings>;\n context?: {\n default_depth?: \"brief\" | \"standard\" | \"deep\";\n activity_limit?: number;\n stale_threshold_days?: number;\n sections?: {\n hierarchy?: boolean;\n activity?: boolean;\n progress?: boolean;\n blockers?: boolean;\n files?: boolean;\n workload?: boolean;\n staleness?: boolean;\n tests?: boolean;\n };\n };\n extensions: {\n enabled: string[];\n disabled: string[];\n policy?: Partial<ExtensionPolicySettings> & {\n pm_max_version_exceeded_mode?: PmMaxVersionExceededModeSetting;\n };\n };\n search: {\n score_threshold: number;\n hybrid_semantic_weight?: number;\n max_results: number;\n embedding_model: string;\n embedding_corpus_max_characters?: number;\n embedding_batch_size: number;\n embedding_timeout_ms?: number;\n scanner_max_batch_retries: number;\n provider?: string;\n corpus_fields?: string[];\n mutation_refresh_policy?: \"cache_only\" | \"semantic_configured\" | \"semantic_auto\";\n query_expansion?: {\n enabled?: boolean;\n provider?: string;\n };\n rerank?: {\n enabled?: boolean;\n model?: string;\n top_k?: number;\n };\n bm25?: {\n k1?: number;\n b?: number;\n };\n };\n providers: {\n openai: { base_url: string; api_key: string; model: string };\n ollama: { base_url: string; model: string };\n };\n vector_store: {\n adapter?: string;\n collection_name?: string;\n qdrant: { url: string; api_key: string };\n lancedb: { path: string };\n };\n}\n\n/**\n * Restricts settings validation result values accepted by command, SDK, and storage contracts.\n */\nexport type SettingsValidationResult = { success: true; data: ParsedSettings } | { success: false };\n\ntype Outcome<T> = { ok: true; value: T } | { ok: false };\ntype Check<T> = (input: unknown) => Outcome<T>;\n\n// Generic over `never` so it is assignable to every `Outcome<T>`.\nconst FAIL: Outcome<never> = { ok: false };\n\nconst vString: Check<string> = (input) => (typeof input === \"string\" ? { ok: true, value: input } : FAIL);\nconst vBoolean: Check<boolean> = (input) => (typeof input === \"boolean\" ? { ok: true, value: input } : FAIL);\n\nfunction vNumber(options: { int?: boolean; positive?: boolean } = {}): Check<number> {\n return (input) => {\n // `Number.isFinite` rejects non-numbers, NaN, and ±Infinity in one check.\n if (typeof input !== \"number\" || !Number.isFinite(input)) {\n return FAIL;\n }\n if (options.int && (!Number.isInteger(input) || !Number.isSafeInteger(input))) {\n return FAIL;\n }\n if (options.positive && input <= 0) {\n return FAIL;\n }\n return { ok: true, value: input };\n };\n}\n\nfunction vLiteral<const T extends string>(...allowed: readonly T[]): Check<T> {\n return (input) =>\n typeof input === \"string\" && (allowed as readonly string[]).includes(input)\n ? { ok: true, value: input as T }\n : FAIL;\n}\n\nfunction vArray<T>(item: Check<T>): Check<T[]> {\n return (input) => {\n if (!Array.isArray(input)) {\n return FAIL;\n }\n const value: T[] = [];\n for (const element of input) {\n const result = item(element);\n if (!result.ok) {\n return FAIL;\n }\n value.push(result.value);\n }\n return { ok: true, value };\n };\n}\n\nfunction vOptional<T>(inner: Check<T>): Check<T | undefined> {\n return (input) => (input === undefined ? { ok: true, value: undefined } : inner(input));\n}\n\n/**\n * A plain object with arbitrary string keys whose values each pass `valueCheck`.\n * Rejects arrays and null. Used for free-form maps like\n * `validation.estimate_defaults_by_type` (item-type -> default minutes).\n */\nfunction vRecordOf<T>(valueCheck: Check<T>): Check<Record<string, T>> {\n return (input) => {\n if (typeof input !== \"object\" || input === null || Array.isArray(input)) {\n return FAIL;\n }\n const value: Record<string, T> = {};\n for (const [key, raw] of Object.entries(input as Record<string, unknown>)) {\n const result = valueCheck(raw);\n if (!result.ok) {\n return FAIL;\n }\n value[key] = result.value;\n }\n return { ok: true, value };\n };\n}\n\nfunction vObject(shape: Record<string, Check<unknown>>): Check<Record<string, unknown>> {\n return (input) => {\n if (typeof input !== \"object\" || input === null || Array.isArray(input)) {\n return FAIL;\n }\n const record = input as Record<string, unknown>;\n const value: Record<string, unknown> = {};\n for (const [key, check] of Object.entries(shape)) {\n const result = check(record[key]);\n if (!result.ok) {\n return FAIL;\n }\n // Mirror zod: absent optional keys are omitted; unknown keys are dropped.\n if (result.value !== undefined) {\n value[key] = result.value;\n }\n }\n return { ok: true, value };\n };\n}\n\nconst itemTypeOption = vObject({\n key: vString,\n values: vArray(vString),\n required: vOptional(vBoolean),\n aliases: vOptional(vArray(vString)),\n description: vOptional(vString),\n});\n\nconst itemTypeCommandOptionPolicy = vObject({\n command: vLiteral(\"create\", \"update\"),\n option: vString,\n required: vOptional(vBoolean),\n visible: vOptional(vBoolean),\n enabled: vOptional(vBoolean),\n});\n\nconst itemTypeDefinition = vObject({\n name: vString,\n description: vOptional(vString),\n // Per-type create-time default status (config-driven); preserved so inline\n // settings.item_types.definitions behave identically to schema/types.json.\n default_status: vOptional(vString),\n folder: vOptional(vString),\n aliases: vOptional(vArray(vString)),\n required_create_fields: vOptional(vArray(vString)),\n required_create_repeatables: vOptional(vArray(vString)),\n options: vOptional(vArray(itemTypeOption)),\n command_option_policies: vOptional(vArray(itemTypeCommandOptionPolicy)),\n});\n\nconst runtimeStatusDefinition = vObject({\n id: vString,\n aliases: vOptional(vArray(vString)),\n roles: vOptional(vArray(vLiteral(...RUNTIME_STATUS_ROLE_VALUES))),\n description: vOptional(vString),\n order: vOptional(vNumber()),\n});\n\nconst runtimeFieldDefinition = vObject({\n key: vString,\n metadata_key: vOptional(vString),\n front_matter_key: vOptional(vString),\n cli_flag: vOptional(vString),\n cli_aliases: vOptional(vArray(vString)),\n description: vOptional(vString),\n type: vOptional(vLiteral(...RUNTIME_FIELD_TYPE_VALUES)),\n commands: vOptional(vArray(vLiteral(...RUNTIME_FIELD_COMMAND_VALUES))),\n repeatable: vOptional(vBoolean),\n required: vOptional(vBoolean),\n required_on_create: vOptional(vBoolean),\n required_types: vOptional(vArray(vString)),\n allow_unset: vOptional(vBoolean),\n});\n\nconst statusTransitionPair: Check<[string, string]> = (input) => {\n if (!Array.isArray(input) || input.length !== 2) {\n return FAIL;\n }\n const [from, to] = input;\n if (typeof from !== \"string\" || typeof to !== \"string\") {\n return FAIL;\n }\n return { ok: true, value: [from, to] };\n};\n\nconst typeWorkflowDefinition = vObject({\n type: vString,\n allowed_transitions: vArray(statusTransitionPair),\n});\n\nconst runtimeSchemaSettings = vOptional(\n vObject({\n version: vOptional(vNumber({ int: true })),\n files: vOptional(\n vObject({\n types: vOptional(vString),\n statuses: vOptional(vString),\n fields: vOptional(vString),\n workflows: vOptional(vString),\n }),\n ),\n statuses: vOptional(vArray(runtimeStatusDefinition)),\n fields: vOptional(vArray(runtimeFieldDefinition)),\n workflow: vOptional(\n vObject({\n draft_status: vOptional(vString),\n open_status: vOptional(vString),\n in_progress_status: vOptional(vString),\n blocked_status: vOptional(vString),\n close_status: vOptional(vString),\n canceled_status: vOptional(vString),\n }),\n ),\n type_workflows: vOptional(vArray(typeWorkflowDefinition)),\n unknown_field_policy: vOptional(vLiteral(...RUNTIME_UNKNOWN_FIELD_POLICY_VALUES)),\n }),\n);\n\nconst governanceSettings = vOptional(\n vObject({\n preset: vOptional(vLiteral(...GOVERNANCE_PRESET_VALUES)),\n ownership_enforcement: vOptional(vLiteral(\"none\", \"warn\", \"strict\")),\n create_mode_default: vOptional(vLiteral(\"progressive\", \"strict\")),\n close_validation_default: vOptional(vLiteral(\"off\", \"warn\", \"strict\")),\n require_close_reason: vOptional(vBoolean),\n parent_reference: vOptional(vLiteral(\"warn\", \"strict_error\")),\n metadata_profile: vOptional(vLiteral(\"core\", \"strict\", \"custom\")),\n force_required_for_stale_lock: vOptional(vBoolean),\n create_default_type: vOptional(vString),\n workflow_enforcement: vOptional(vLiteral(\"off\", \"warn\", \"strict\")),\n }),\n);\n\nconst extensionPolicyOverride = vObject({\n name: vString,\n disabled: vOptional(vBoolean),\n require_trusted: vOptional(vBoolean),\n require_provenance: vOptional(vBoolean),\n sandbox_profile: vOptional(vLiteral(\"none\", \"restricted\", \"strict\")),\n allowed_capabilities: vOptional(vArray(vString)),\n blocked_capabilities: vOptional(vArray(vString)),\n allowed_surfaces: vOptional(vArray(vString)),\n blocked_surfaces: vOptional(vArray(vString)),\n allowed_commands: vOptional(vArray(vString)),\n blocked_commands: vOptional(vArray(vString)),\n allowed_actions: vOptional(vArray(vString)),\n blocked_actions: vOptional(vArray(vString)),\n allowed_services: vOptional(vArray(vString)),\n blocked_services: vOptional(vArray(vString)),\n});\n\n// `pm_max_version_exceeded_mode` accepts either a single mode literal or a\n// per-layer override object (pm-k5e8); any other shape fails validation.\nconst pmMaxVersionExceededModeLiteral = vLiteral(\"block\", \"warn\");\nconst pmMaxVersionExceededMode: Check<unknown> = (input) =>\n typeof input === \"string\"\n ? pmMaxVersionExceededModeLiteral(input)\n : vObject({\n global: vOptional(pmMaxVersionExceededModeLiteral),\n project: vOptional(pmMaxVersionExceededModeLiteral),\n })(input);\n\nconst extensionPolicy = vOptional(\n vObject({\n mode: vOptional(vLiteral(\"off\", \"warn\", \"enforce\")),\n trust_mode: vOptional(vLiteral(\"off\", \"warn\", \"enforce\")),\n pm_max_version_exceeded_mode: vOptional(pmMaxVersionExceededMode),\n require_provenance: vOptional(vBoolean),\n trusted_extensions: vOptional(vArray(vString)),\n default_sandbox_profile: vOptional(vLiteral(\"none\", \"restricted\", \"strict\")),\n allowed_extensions: vOptional(vArray(vString)),\n blocked_extensions: vOptional(vArray(vString)),\n allowed_capabilities: vOptional(vArray(vString)),\n blocked_capabilities: vOptional(vArray(vString)),\n allowed_surfaces: vOptional(vArray(vString)),\n blocked_surfaces: vOptional(vArray(vString)),\n allowed_commands: vOptional(vArray(vString)),\n blocked_commands: vOptional(vArray(vString)),\n allowed_actions: vOptional(vArray(vString)),\n blocked_actions: vOptional(vArray(vString)),\n allowed_services: vOptional(vArray(vString)),\n blocked_services: vOptional(vArray(vString)),\n extension_overrides: vOptional(vArray(extensionPolicyOverride)),\n }),\n);\n\nconst settingsCheck = vObject({\n version: vNumber({ int: true }),\n id_prefix: vString,\n author_default: vString,\n item_format: vOptional(vLiteral(\"toon\", \"json_markdown\")),\n locks: vObject({ ttl_seconds: vNumber({ int: true }) }),\n checkpoints: vOptional(vObject({ retention_days: vOptional(vNumber({ int: true, positive: true })) })),\n output: vObject({ default_format: vLiteral(\"toon\", \"json\") }),\n history: vOptional(\n vObject({\n missing_stream: vLiteral(\"auto_create\", \"strict_error\"),\n compact_policy: vOptional(\n vObject({\n enabled: vOptional(vBoolean),\n max_entries: vOptional(vNumber({ int: true, positive: true })),\n trigger: vOptional(vLiteral(\"health_warn\", \"auto\")),\n }),\n ),\n }),\n ),\n validation: vOptional(\n vObject({\n sprint_release_format: vLiteral(\"warn\", \"strict_error\"),\n parent_reference: vOptional(vLiteral(\"warn\", \"strict_error\")),\n metadata_profile: vOptional(vLiteral(\"core\", \"strict\", \"custom\")),\n metadata_required_fields: vOptional(vArray(vString)),\n lifecycle_stale_blocker_reason_patterns: vOptional(vArray(vString)),\n lifecycle_closure_like_blocked_reason_patterns: vOptional(vArray(vString)),\n lifecycle_closure_like_resolution_patterns: vOptional(vArray(vString)),\n lifecycle_closure_like_actual_result_patterns: vOptional(vArray(vString)),\n estimate_defaults_by_type: vOptional(vRecordOf(vNumber({ int: true, positive: true }))),\n }),\n ),\n governance: governanceSettings,\n workflow: vOptional(vObject({ definition_of_done: vArray(vString) })),\n testing: vOptional(vObject({ record_results_to_items: vBoolean })),\n telemetry: vOptional(\n vObject({\n enabled: vBoolean,\n first_run_prompt_completed: vOptional(vBoolean),\n capture_level: vOptional(vLiteral(\"minimal\", \"redacted\", \"max\")),\n endpoint: vOptional(vString),\n installation_id: vOptional(vString),\n retention_days: vOptional(vNumber({ int: true, positive: true })),\n }),\n ),\n agent_guidance: vOptional(\n vObject({\n prompt_completed: vOptional(vBoolean),\n declined: vOptional(vBoolean),\n declined_at: vOptional(vString),\n template_version: vOptional(vNumber({ int: true, positive: true })),\n last_checked_files: vOptional(vArray(vString)),\n }),\n ),\n item_types: vOptional(vObject({ definitions: vArray(itemTypeDefinition) })),\n schema: runtimeSchemaSettings,\n context: vOptional(\n vObject({\n default_depth: vOptional(vLiteral(\"brief\", \"standard\", \"deep\")),\n activity_limit: vOptional(vNumber({ int: true, positive: true })),\n stale_threshold_days: vOptional(vNumber({ int: true, positive: true })),\n sections: vOptional(\n vObject({\n hierarchy: vOptional(vBoolean),\n activity: vOptional(vBoolean),\n progress: vOptional(vBoolean),\n recently_created: vOptional(vBoolean),\n unparented: vOptional(vBoolean),\n blockers: vOptional(vBoolean),\n files: vOptional(vBoolean),\n workload: vOptional(vBoolean),\n staleness: vOptional(vBoolean),\n tests: vOptional(vBoolean),\n }),\n ),\n }),\n ),\n extensions: vObject({\n enabled: vArray(vString),\n disabled: vArray(vString),\n policy: extensionPolicy,\n }),\n search: vObject({\n score_threshold: vNumber(),\n hybrid_semantic_weight: vOptional(vNumber()),\n max_results: vNumber({ int: true }),\n embedding_model: vString,\n embedding_corpus_max_characters: vOptional(vNumber()),\n embedding_batch_size: vNumber({ int: true }),\n embedding_timeout_ms: vOptional(vNumber({ int: true })),\n scanner_max_batch_retries: vNumber({ int: true }),\n provider: vOptional(vString),\n corpus_fields: vOptional(vArray(vString)),\n mutation_refresh_policy: vOptional(vLiteral(\"cache_only\", \"semantic_configured\", \"semantic_auto\")),\n query_expansion: vOptional(\n vObject({\n enabled: vOptional(vBoolean),\n provider: vOptional(vString),\n }),\n ),\n rerank: vOptional(\n vObject({\n enabled: vOptional(vBoolean),\n model: vOptional(vString),\n top_k: vOptional(vNumber({ int: true, positive: true })),\n }),\n ),\n // pm-75k9: offline BM25 tuning. Unlike `search.tuning` (intentionally\n // stripped for legacy zod parity), bm25 is validated so it persists across\n // writeSettings round-trips — these knobs must survive to take effect.\n bm25: vOptional(\n vObject({\n k1: vOptional(vNumber()),\n b: vOptional(vNumber()),\n }),\n ),\n }),\n providers: vObject({\n openai: vObject({ base_url: vString, api_key: vString, model: vString }),\n ollama: vObject({ base_url: vString, model: vString }),\n }),\n vector_store: vObject({\n adapter: vOptional(vString),\n collection_name: vOptional(vString),\n qdrant: vObject({ url: vString, api_key: vString }),\n lancedb: vObject({ path: vString }),\n }),\n});\n\n/** Validate raw settings, returning stripped, type-checked data or failure (matching the legacy zod safeParse). */\nexport function validateSettings(raw: unknown): SettingsValidationResult {\n const result = settingsCheck(raw);\n if (!result.ok) {\n return { success: false };\n }\n return { success: true, data: result.value as unknown as ParsedSettings };\n}\n", "/**\n * @module core/item/item-type-definition\n *\n * Defines item parsing, formatting, and lifecycle helpers for Item Type Definition.\n */\nimport type {\n ItemTypeCommandOptionPolicy,\n ItemTypeDefinition,\n ItemTypeOptionDefinition,\n} from \"../../types/index.js\";\n\n/**\n * Shared, pure normalization for {@link ItemTypeDefinition} objects, single-sourced\n * across the runtime item-type registry and settings persistence (pm-v798).\n *\n * The only genuine difference between the two callers is how a command-option\n * policy's `command` field is resolved:\n * - the runtime registry consumes untrusted extension/file definitions, so it\n * must trim+lowercase and reject anything that is not \"create\"/\"update\";\n * - settings persistence operates on already-validated definitions, so it keeps\n * the typed `command` value verbatim.\n *\n * That single difference is injected via {@link NormalizeItemTypeDefinitionOptions.resolvePolicyCommand};\n * everything else (name trim, optional folder, aliases, required_create_* fields,\n * options normalization, policy dedupe key + stable sort) is shared.\n */\n\n/** Dedupe + sort a string list: trim, drop blanks, unique, locale-sorted. */\nexport function normalizeItemTypeStringList(values: string[] | undefined): string[] {\n return [...new Set((values ?? []).map((value) => value.trim()).filter((value) => value.length > 0))].sort(\n (left, right) => left.localeCompare(right),\n );\n}\n\n/** Normalize one type-option definition, or null when its key is blank. */\nexport function normalizeItemTypeOption(option: ItemTypeOptionDefinition): ItemTypeOptionDefinition | null {\n const key = option.key.trim();\n if (key.length === 0) {\n return null;\n }\n const aliases = normalizeItemTypeStringList(option.aliases);\n const description = option.description?.trim();\n return {\n key,\n values: normalizeItemTypeStringList(option.values),\n required: option.required === true ? true : undefined,\n aliases: aliases.length > 0 ? aliases : undefined,\n description: description && description.length > 0 ? description : undefined,\n };\n}\n\n/**\n * Resolves a raw policy `command` value to the canonical \"create\"/\"update\" type,\n * or null to drop the policy. Lets each layer plug in its own strictness.\n */\nexport type ResolvePolicyCommand = (command: string) => ItemTypeCommandOptionPolicy[\"command\"] | null;\n\n/**\n * Pass-through resolver used by settings persistence: the value is already typed\n * \"create\" | \"update\" by the settings validator, so it is kept verbatim.\n */\nexport const keepPolicyCommand: ResolvePolicyCommand = (command) =>\n command as ItemTypeCommandOptionPolicy[\"command\"];\n\n/**\n * Strict resolver used by the runtime registry: trims + lowercases and rejects\n * anything other than \"create\"/\"update\".\n */\nexport const strictPolicyCommand: ResolvePolicyCommand = (command) => {\n const normalized = command.trim().toLowerCase();\n return normalized === \"create\" || normalized === \"update\" ? normalized : null;\n};\n\n/** Normalize one command-option policy, or null when invalid (blank option / rejected command). */\nexport function normalizeItemTypeCommandOptionPolicy(\n policy: ItemTypeCommandOptionPolicy,\n resolvePolicyCommand: ResolvePolicyCommand,\n): ItemTypeCommandOptionPolicy | null {\n const command = resolvePolicyCommand(policy.command);\n if (command === null) {\n return null;\n }\n const option = policy.option.trim();\n if (option.length === 0) {\n return null;\n }\n return {\n command,\n option,\n required: policy.required,\n visible: policy.visible,\n enabled: policy.enabled,\n };\n}\n\n/** Dedupe by `${command}:${option-lowercased}` and stable-sort by command then option. */\nexport function normalizeItemTypeCommandOptionPolicies(\n policies: ItemTypeCommandOptionPolicy[] | undefined,\n resolvePolicyCommand: ResolvePolicyCommand,\n): ItemTypeCommandOptionPolicy[] {\n const dedupedByKey = new Map<string, ItemTypeCommandOptionPolicy>();\n for (const policy of policies ?? []) {\n const normalized = normalizeItemTypeCommandOptionPolicy(policy, resolvePolicyCommand);\n if (!normalized) {\n continue;\n }\n dedupedByKey.set(`${normalized.command}:${normalized.option.toLowerCase()}`, normalized);\n }\n return [...dedupedByKey.values()].sort((left, right) =>\n left.command === right.command\n ? left.option.localeCompare(right.option)\n : left.command.localeCompare(right.command),\n );\n}\n\n/**\n * Documents the normalize item type definition options payload exchanged by command, SDK, and package integrations.\n */\nexport interface NormalizeItemTypeDefinitionOptions {\n /** How to resolve a raw policy `command` value (defaults to {@link keepPolicyCommand}). */\n resolvePolicyCommand?: ResolvePolicyCommand;\n}\n\n/**\n * Normalize a full {@link ItemTypeDefinition}, returning null when the name is blank.\n *\n * Optional collection fields (`folder`, `aliases`, `required_create_fields`,\n * `required_create_repeatables`, `options`, `command_option_policies`) are only\n * emitted when present on the input (presence-preserving) so the distinction\n * between \"unset\" and \"set-but-empty\" survives the round-trip.\n */\nexport function normalizeItemTypeDefinition(\n definition: ItemTypeDefinition,\n options: NormalizeItemTypeDefinitionOptions = {},\n): ItemTypeDefinition | null {\n const resolvePolicyCommand = options.resolvePolicyCommand ?? keepPolicyCommand;\n const name = definition.name.trim();\n if (name.length === 0) {\n return null;\n }\n\n const hasRequiredCreateFields = definition.required_create_fields !== undefined;\n const hasRequiredCreateRepeatables = definition.required_create_repeatables !== undefined;\n const hasOptions = definition.options !== undefined;\n const hasCommandOptionPolicies = definition.command_option_policies !== undefined;\n\n const folder = definition.folder?.trim();\n const description = definition.description?.trim();\n const defaultStatus = definition.default_status?.trim();\n const aliases = normalizeItemTypeStringList(definition.aliases);\n const normalizedOptions = (definition.options ?? [])\n .map((option) => normalizeItemTypeOption(option))\n .filter((option): option is ItemTypeOptionDefinition => option !== null)\n .sort((left, right) => left.key.localeCompare(right.key));\n const commandOptionPolicies = normalizeItemTypeCommandOptionPolicies(\n definition.command_option_policies,\n resolvePolicyCommand,\n );\n\n return {\n name,\n description: description && description.length > 0 ? description : undefined,\n default_status: defaultStatus && defaultStatus.length > 0 ? defaultStatus : undefined,\n folder: folder && folder.length > 0 ? folder : undefined,\n aliases: aliases.length > 0 ? aliases : undefined,\n required_create_fields: hasRequiredCreateFields\n ? normalizeItemTypeStringList(definition.required_create_fields)\n : undefined,\n required_create_repeatables: hasRequiredCreateRepeatables\n ? normalizeItemTypeStringList(definition.required_create_repeatables)\n : undefined,\n options: hasOptions ? normalizedOptions : undefined,\n command_option_policies: hasCommandOptionPolicies ? commandOptionPolicies : undefined,\n };\n}\n", "/**\n * Per-type default estimate resolution for `pm validate --auto-fix` (GH-212).\n *\n * When an item is missing `estimated_minutes`, the auto-fix path backfills a\n * config-driven default based on the item's type. This module is the pure\n * resolution layer: given an item type and an optional settings-derived override\n * map, it returns the default estimate in minutes. The planning + apply path is\n * wired separately by the validate command.\n *\n * Pure module: no filesystem access, no heavy imports. Bad input is never\n * thrown on — invalid override entries are dropped, not errored (mirrors the\n * deterministic, non-throwing style of stale-file-classification.ts).\n */\n\n/**\n * Built-in per-type default estimates in MINUTES used by `pm validate --auto-fix`\n * (GH-212) to backfill missing `estimated_minutes`. Keys are canonical built-in\n * type names. Lookups are case-insensitive (see resolveEstimateDefaultMinutes).\n */\nexport const DEFAULT_ESTIMATE_MINUTES_BY_TYPE: Readonly<Record<string, number>> = {\n Epic: 2880,\n Feature: 480,\n Story: 480,\n Milestone: 2880,\n Task: 120,\n Issue: 60,\n Bug: 60,\n Chore: 30,\n Decision: 15,\n Plan: 120,\n};\n\n/** Fallback when neither overrides nor the built-in map have the type. */\nexport const FALLBACK_ESTIMATE_MINUTES = 120;\n\n/** A value is honored only when it is a finite number strictly greater than zero. */\nfunction isHonoredMinutes(value: unknown): value is number {\n return typeof value === \"number\" && Number.isFinite(value) && value > 0;\n}\n\n/**\n * Build a case-insensitive lookup keyed by lowercased type name. When two source\n * keys collide case-insensitively, last-wins (later entries overwrite earlier\n * ones); callers normalize overrides up front so collisions are rare.\n */\nfunction toLowercasedLookup(source: Readonly<Record<string, number>>): Map<string, number> {\n const lookup = new Map<string, number>();\n for (const [key, value] of Object.entries(source)) {\n lookup.set(key.toLowerCase(), value);\n }\n return lookup;\n}\n\n/** Built-in lookup is type-static, so build the lowercased index once. */\nconst BUILTIN_LOWERCASED_LOOKUP = toLowercasedLookup(DEFAULT_ESTIMATE_MINUTES_BY_TYPE);\n\n/**\n * Cache lowercased override lookups keyed on the override object reference so a\n * backfill that resolves once per item does not rebuild the same Map each call.\n * A WeakMap keeps this allocation-free for callers that reuse one normalized\n * settings map across the whole run.\n */\nconst OVERRIDE_LOOKUP_CACHE = new WeakMap<Readonly<Record<string, number>>, Map<string, number>>();\n\nfunction lowercasedOverrideLookup(overrides: Readonly<Record<string, number>>): Map<string, number> {\n const cached = OVERRIDE_LOOKUP_CACHE.get(overrides);\n if (cached) {\n return cached;\n }\n const lookup = toLowercasedLookup(overrides);\n OVERRIDE_LOOKUP_CACHE.set(overrides, lookup);\n return lookup;\n}\n\n/**\n * Resolve the default estimated-minutes for an item type.\n * Precedence: overrides (case-insensitive key match) > DEFAULT_ESTIMATE_MINUTES_BY_TYPE\n * (case-insensitive) > FALLBACK_ESTIMATE_MINUTES.\n * - `type` undefined/empty -> FALLBACK.\n * - Only finite values > 0 are honored from overrides/defaults; a non-positive or\n * non-finite override value is ignored and resolution continues to the next tier.\n * - Returned value is a positive integer (floor of the resolved value).\n */\nexport function resolveEstimateDefaultMinutes(\n type: string | undefined,\n overrides?: Readonly<Record<string, number>>,\n): number {\n const key = (type ?? \"\").trim().toLowerCase();\n if (key.length === 0) {\n return FALLBACK_ESTIMATE_MINUTES;\n }\n\n if (overrides) {\n const overrideValue = lowercasedOverrideLookup(overrides).get(key);\n if (isHonoredMinutes(overrideValue)) {\n return Math.floor(overrideValue);\n }\n }\n\n const builtinValue = BUILTIN_LOWERCASED_LOOKUP.get(key);\n if (isHonoredMinutes(builtinValue)) {\n return Math.floor(builtinValue);\n }\n\n return FALLBACK_ESTIMATE_MINUTES;\n}\n\n/**\n * Validate + normalize a raw `validation.estimate_defaults_by_type` settings object\n * into a clean Record<string, number> of positive integers, dropping invalid entries.\n * Used so the pure resolver always receives a sane override map. Returns {} for\n * undefined/null/non-object input. Trims keys; ignores empty keys and non-positive /\n * non-finite / non-number values. Floors values to integers.\n */\nexport function normalizeEstimateDefaultOverrides(raw: unknown): Record<string, number> {\n const normalized: Record<string, number> = {};\n if (raw === null || typeof raw !== \"object\" || Array.isArray(raw)) {\n return normalized;\n }\n\n for (const [rawKey, rawValue] of Object.entries(raw as Record<string, unknown>)) {\n const key = rawKey.trim();\n if (key.length === 0 || !isHonoredMinutes(rawValue)) {\n continue;\n }\n normalized[key] = Math.floor(rawValue);\n }\n\n return normalized;\n}\n", "/**\n * @module core/store/settings-read-cache\n *\n * Reads and writes tracker storage with format-aware helpers for Settings Read Cache.\n */\nimport { stat } from \"node:fs/promises\";\n\n/**\n * Documents the settings read cache path signature payload exchanged by command, SDK, and package integrations.\n */\nexport interface SettingsReadCachePathSignature {\n path: string;\n mtime_ms: number | null;\n size: number | null;\n}\n\n/**\n * Documents the settings read cache entry payload exchanged by command, SDK, and package integrations.\n */\nexport interface SettingsReadCacheEntry<T> {\n tracked_paths: string[];\n signatures: SettingsReadCachePathSignature[];\n value: T;\n}\n\nconst settingsReadCacheByRoot = new Map<string, SettingsReadCacheEntry<unknown>>();\n\nfunction normalizeTrackedPaths(paths: string[]): string[] {\n return [...new Set(paths.map((pathValue) => pathValue.trim()).filter((pathValue) => pathValue.length > 0))].sort((left, right) =>\n left.localeCompare(right),\n );\n}\n\nasync function readPathSignature(targetPath: string): Promise<SettingsReadCachePathSignature> {\n try {\n const targetStats = await stat(targetPath);\n return {\n path: targetPath,\n mtime_ms: targetStats.mtimeMs,\n size: targetStats.size,\n };\n } catch {\n return {\n path: targetPath,\n mtime_ms: null,\n size: null,\n };\n }\n}\n\n/**\n * Implements collect settings read cache signatures for the public runtime surface of this module.\n */\nexport async function collectSettingsReadCacheSignatures(paths: string[]): Promise<SettingsReadCachePathSignature[]> {\n const normalizedPaths = normalizeTrackedPaths(paths);\n const signatures = await Promise.all(normalizedPaths.map((targetPath) => readPathSignature(targetPath)));\n signatures.sort((left, right) => left.path.localeCompare(right.path));\n return signatures;\n}\n\n/**\n * Implements settings read cache signatures equal for the public runtime surface of this module.\n */\nexport function settingsReadCacheSignaturesEqual(\n left: SettingsReadCachePathSignature[],\n right: SettingsReadCachePathSignature[],\n): boolean {\n if (left.length !== right.length) {\n return false;\n }\n for (let index = 0; index < left.length; index += 1) {\n const leftEntry = left[index];\n const rightEntry = right[index];\n if (\n leftEntry.path !== rightEntry.path ||\n leftEntry.mtime_ms !== rightEntry.mtime_ms ||\n leftEntry.size !== rightEntry.size\n ) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * Implements get settings read cache entry for the public runtime surface of this module.\n */\nexport function getSettingsReadCacheEntry<T>(pmRoot: string): SettingsReadCacheEntry<T> | undefined {\n return settingsReadCacheByRoot.get(pmRoot) as SettingsReadCacheEntry<T> | undefined;\n}\n\n/**\n * Implements set settings read cache entry for the public runtime surface of this module.\n */\nexport function setSettingsReadCacheEntry<T>(pmRoot: string, entry: SettingsReadCacheEntry<T>): void {\n const normalizedTrackedPaths = normalizeTrackedPaths(entry.tracked_paths);\n const normalizedSignatures = [...entry.signatures]\n .map((signature) => ({\n path: signature.path,\n mtime_ms: signature.mtime_ms,\n size: signature.size,\n }))\n .sort((left, right) => left.path.localeCompare(right.path));\n settingsReadCacheByRoot.set(pmRoot, {\n tracked_paths: normalizedTrackedPaths,\n signatures: normalizedSignatures,\n value: entry.value,\n });\n}\n\n/**\n * Implements clear settings read cache for the public runtime surface of this module.\n */\nexport function clearSettingsReadCache(pmRoot?: string): void {\n if (pmRoot) {\n settingsReadCacheByRoot.delete(pmRoot);\n return;\n }\n settingsReadCacheByRoot.clear();\n}\n", "/**\n * @module core/store/settings\n *\n * Reads and writes tracker storage with format-aware helpers for Settings.\n */\nimport { validateSettings, type ParsedSettings } from \"./settings-validator.js\";\nimport { runActiveOnReadHooks, runActiveOnWriteHooks } from \"../extensions/index.js\";\nimport { GOVERNANCE_PRESET_DEFAULTS, SETTINGS_DEFAULTS } from \"../shared/constants.js\";\nimport { readFileIfExists, writeFileAtomic } from \"../fs/fs-utils.js\";\nimport {\n DEFAULT_RUNTIME_SCHEMA_FILE_PATHS,\n ensureRuntimeSchemaFileScaffold,\n filePathForSchemaSection,\n loadRuntimeSchemaFromOptionalFiles,\n normalizeRuntimeSchemaSettings,\n} from \"../schema/runtime-schema.js\";\nimport { getSettingsPath } from \"./paths.js\";\nimport { orderObject, stableValueEquals } from \"../shared/serialization.js\";\nimport { normalizeItemTypeDefinition } from \"../item/item-type-definition.js\";\nimport { normalizeEstimateDefaultOverrides } from \"../validate/estimate-defaults.js\";\nimport {\n clearSettingsReadCache,\n collectSettingsReadCacheSignatures,\n getSettingsReadCacheEntry,\n setSettingsReadCacheEntry,\n settingsReadCacheSignaturesEqual,\n} from \"./settings-read-cache.js\";\nimport type {\n ExtensionGovernancePolicy,\n PmMaxVersionExceededMode,\n PmMaxVersionExceededModeSetting,\n} from \"../extensions/extension-types.js\";\nimport type {\n ExtensionSandboxProfile,\n ExtensionPolicyMode,\n ExtensionPolicyOverrideSettings,\n ExtensionPolicySettings,\n ExtensionTrustMode,\n GovernanceSettings,\n ItemTypeDefinition,\n PmSettings,\n GovernancePreset,\n SearchMutationRefreshPolicy,\n ValidateMetadataRequiredField,\n} from \"../../types/index.js\";\n\nconst SETTINGS_WRITE_OP = \"settings:write\";\nconst SETTINGS_PERSIST_SOURCE_SYMBOL = Symbol(\"pm.settings.persist_source\");\nconst MAX_VECTOR_STORE_COLLECTION_NAME_LENGTH = 128;\n\ninterface SettingsPersistSourceSnapshot {\n has_source_item_type_definitions: boolean;\n source_item_type_definitions: ItemTypeDefinition[];\n has_source_schema_statuses: boolean;\n source_schema_statuses: PmSettings[\"schema\"][\"statuses\"];\n has_source_schema_fields: boolean;\n source_schema_fields: PmSettings[\"schema\"][\"fields\"];\n has_source_schema_type_workflows: boolean;\n source_schema_type_workflows: NonNullable<PmSettings[\"schema\"][\"type_workflows\"]>;\n runtime_item_type_definitions: ItemTypeDefinition[];\n runtime_schema_statuses: PmSettings[\"schema\"][\"statuses\"];\n runtime_schema_fields: PmSettings[\"schema\"][\"fields\"];\n runtime_schema_type_workflows: NonNullable<PmSettings[\"schema\"][\"type_workflows\"]>;\n}\n\ninterface SerializeSettingsOptions {\n persist_source?: SettingsPersistSourceSnapshot;\n}\n\n/**\n * Documents the settings read metadata payload exchanged by command, SDK, and package integrations.\n */\nexport interface SettingsReadMetadata {\n has_explicit_item_format: boolean;\n}\n\n/**\n * Documents the settings read result payload exchanged by command, SDK, and package integrations.\n */\nexport interface SettingsReadResult {\n settings: PmSettings;\n metadata: SettingsReadMetadata;\n warnings: string[];\n}\n\nfunction resolveGovernanceKnobsFromPreset(preset: Exclude<GovernancePreset, \"custom\">): Omit<GovernanceSettings, \"preset\"> {\n return structuredClone(GOVERNANCE_PRESET_DEFAULTS[preset]);\n}\n\nfunction normalizeGovernancePreset(value: GovernancePreset | undefined): GovernancePreset {\n if (value === \"minimal\" || value === \"default\" || value === \"strict\" || value === \"custom\") {\n return value;\n }\n return SETTINGS_DEFAULTS.governance.preset;\n}\n\n// `create_default_type` and `workflow_enforcement` are orthogonal to the\n// governance preset (they tune create/update behavior, not the preset knobs),\n// so they must survive a write regardless of preset — otherwise a project on a\n// non-custom preset would silently drop them on every settings write.\nfunction withGovernanceExtras(\n base: Partial<GovernanceSettings> & { preset: GovernancePreset },\n governance: GovernanceSettings,\n): Partial<GovernanceSettings> & { preset: GovernancePreset } {\n const createDefaultType =\n typeof governance.create_default_type === \"string\" ? governance.create_default_type.trim() : undefined;\n if (createDefaultType && createDefaultType.length > 0) {\n base.create_default_type = createDefaultType;\n }\n if (\n governance.workflow_enforcement === \"off\" ||\n governance.workflow_enforcement === \"warn\" ||\n governance.workflow_enforcement === \"strict\"\n ) {\n base.workflow_enforcement = governance.workflow_enforcement;\n }\n if (governance.require_close_reason === false) {\n base.require_close_reason = false;\n }\n return base;\n}\n\nfunction normalizeGovernanceForPersist(governance: GovernanceSettings): Partial<GovernanceSettings> & { preset: GovernancePreset } {\n if (governance.preset === \"custom\") {\n return withGovernanceExtras(\n {\n preset: \"custom\",\n ownership_enforcement: governance.ownership_enforcement,\n create_mode_default: governance.create_mode_default,\n close_validation_default: governance.close_validation_default,\n parent_reference: governance.parent_reference,\n metadata_profile: governance.metadata_profile,\n force_required_for_stale_lock: governance.force_required_for_stale_lock,\n },\n governance,\n );\n }\n return withGovernanceExtras(\n {\n preset: governance.preset,\n },\n governance,\n );\n}\n\n// Preset-orthogonal knobs that must be carried through resolve from the raw\n// governance regardless of preset (see normalizeGovernanceForPersist).\nfunction resolveGovernanceExtras(\n rawGovernance: Partial<GovernanceSettings>,\n): Partial<Pick<GovernanceSettings, \"create_default_type\" | \"workflow_enforcement\" | \"require_close_reason\">> {\n const createDefaultType =\n typeof rawGovernance.create_default_type === \"string\" ? rawGovernance.create_default_type.trim() : undefined;\n const extras: Partial<Pick<GovernanceSettings, \"create_default_type\" | \"workflow_enforcement\" | \"require_close_reason\">> =\n {};\n if (createDefaultType && createDefaultType.length > 0) {\n extras.create_default_type = createDefaultType;\n }\n if (\n rawGovernance.workflow_enforcement === \"off\" ||\n rawGovernance.workflow_enforcement === \"warn\" ||\n rawGovernance.workflow_enforcement === \"strict\"\n ) {\n extras.workflow_enforcement = rawGovernance.workflow_enforcement;\n }\n if (typeof rawGovernance.require_close_reason === \"boolean\") {\n extras.require_close_reason = rawGovernance.require_close_reason;\n }\n return extras;\n}\n\n/**\n * Implements resolve governance knobs for the public runtime surface of this module.\n */\nexport function resolveGovernanceKnobs(\n settings: Pick<PmSettings, \"governance\"> | { governance?: Partial<GovernanceSettings> },\n): GovernanceSettings {\n const rawGovernance = settings.governance ?? {};\n const preset = normalizeGovernancePreset(rawGovernance.preset);\n const extras = resolveGovernanceExtras(rawGovernance);\n if (preset === \"custom\") {\n const baseline = resolveGovernanceKnobsFromPreset(\"default\");\n const requireCloseReason = extras.require_close_reason ?? baseline.require_close_reason;\n return {\n preset,\n ownership_enforcement: rawGovernance.ownership_enforcement ?? baseline.ownership_enforcement,\n create_mode_default: rawGovernance.create_mode_default ?? baseline.create_mode_default,\n close_validation_default: rawGovernance.close_validation_default ?? baseline.close_validation_default,\n parent_reference: rawGovernance.parent_reference ?? baseline.parent_reference,\n metadata_profile: rawGovernance.metadata_profile ?? baseline.metadata_profile,\n force_required_for_stale_lock: rawGovernance.force_required_for_stale_lock ?? baseline.force_required_for_stale_lock,\n ...extras,\n require_close_reason: requireCloseReason,\n };\n }\n const baseline = resolveGovernanceKnobsFromPreset(preset);\n const requireCloseReason = extras.require_close_reason ?? baseline.require_close_reason;\n return {\n preset,\n ...baseline,\n ...extras,\n require_close_reason: requireCloseReason,\n };\n}\n\nfunction cloneDefaults(): PmSettings {\n return structuredClone(SETTINGS_DEFAULTS);\n}\n\nfunction normalizeSearchMutationRefreshPolicy(value: unknown): SearchMutationRefreshPolicy {\n if (value === \"cache_only\" || value === \"semantic_configured\" || value === \"semantic_auto\") {\n return value;\n }\n return SETTINGS_DEFAULTS.search.mutation_refresh_policy;\n}\n\nfunction normalizeSearchQueryExpansionEnabled(value: unknown): boolean {\n if (typeof value === \"boolean\") {\n return value;\n }\n return SETTINGS_DEFAULTS.search.query_expansion.enabled;\n}\n\nfunction normalizeSearchQueryExpansionProvider(value: unknown): string {\n if (typeof value !== \"string\") {\n return SETTINGS_DEFAULTS.search.query_expansion.provider;\n }\n return value.trim();\n}\n\nfunction normalizeSearchRerankEnabled(value: unknown): boolean {\n if (typeof value === \"boolean\") {\n return value;\n }\n return SETTINGS_DEFAULTS.search.rerank.enabled;\n}\n\nfunction normalizeSearchRerankModel(value: unknown): string {\n if (typeof value !== \"string\") {\n return SETTINGS_DEFAULTS.search.rerank.model;\n }\n return value.trim();\n}\n\nfunction normalizeSearchRerankTopK(value: unknown): number {\n if (typeof value === \"number\" && Number.isFinite(value) && Number.isInteger(value) && value > 0) {\n return value;\n }\n return SETTINGS_DEFAULTS.search.rerank.top_k;\n}\n\nfunction normalizeVectorStoreCollectionName(value: unknown): string {\n if (typeof value !== \"string\") {\n return SETTINGS_DEFAULTS.vector_store.collection_name;\n }\n const sanitized = value.trim().replaceAll(/[^a-zA-Z0-9_-]/g, \"_\");\n const truncated = sanitized.slice(0, MAX_VECTOR_STORE_COLLECTION_NAME_LENGTH);\n return truncated.length > 0 ? truncated : SETTINGS_DEFAULTS.vector_store.collection_name;\n}\n\nfunction buildSettingsPersistSourceSnapshot(\n parsedSettings: ParsedSettings,\n runtimeSettings: PmSettings,\n): SettingsPersistSourceSnapshot {\n const sourceSchema = parsedSettings.schema;\n const sourceStatuses = Array.isArray(sourceSchema?.statuses) ? sourceSchema?.statuses : undefined;\n const sourceFields = Array.isArray(sourceSchema?.fields) ? sourceSchema?.fields : undefined;\n const sourceTypeWorkflows = Array.isArray(sourceSchema?.type_workflows) ? sourceSchema?.type_workflows : undefined;\n return {\n has_source_item_type_definitions: Array.isArray(parsedSettings.item_types?.definitions),\n source_item_type_definitions: normalizeItemTypeDefinitions(parsedSettings.item_types?.definitions),\n has_source_schema_statuses: sourceStatuses !== undefined,\n source_schema_statuses: sourceStatuses ? structuredClone(sourceStatuses) : [],\n has_source_schema_fields: sourceFields !== undefined,\n source_schema_fields: sourceFields ? structuredClone(sourceFields) : [],\n has_source_schema_type_workflows: sourceTypeWorkflows !== undefined,\n source_schema_type_workflows: sourceTypeWorkflows ? structuredClone(sourceTypeWorkflows) : [],\n runtime_item_type_definitions: normalizeItemTypeDefinitions(runtimeSettings.item_types?.definitions),\n runtime_schema_statuses: structuredClone(runtimeSettings.schema.statuses),\n runtime_schema_fields: structuredClone(runtimeSettings.schema.fields),\n runtime_schema_type_workflows: structuredClone(runtimeSettings.schema.type_workflows ?? []),\n };\n}\n\nfunction attachSettingsPersistSourceSnapshot(settings: PmSettings, source: SettingsPersistSourceSnapshot): void {\n Object.defineProperty(settings as unknown as Record<PropertyKey, unknown>, SETTINGS_PERSIST_SOURCE_SYMBOL, {\n value: source,\n writable: true,\n configurable: true,\n enumerable: false,\n });\n}\n\nfunction getSettingsPersistSourceSnapshot(settings: PmSettings): SettingsPersistSourceSnapshot | undefined {\n const candidate = (settings as unknown as Record<PropertyKey, unknown>)[SETTINGS_PERSIST_SOURCE_SYMBOL];\n if (!candidate || typeof candidate !== \"object\") {\n return undefined;\n }\n return candidate as SettingsPersistSourceSnapshot;\n}\n\nfunction cloneSettingsReadResult(result: SettingsReadResult): SettingsReadResult {\n const clonedSettings = structuredClone(result.settings);\n const persistSource = getSettingsPersistSourceSnapshot(result.settings);\n if (persistSource) {\n attachSettingsPersistSourceSnapshot(clonedSettings, structuredClone(persistSource));\n }\n return {\n settings: clonedSettings,\n metadata: {\n has_explicit_item_format: result.metadata.has_explicit_item_format,\n },\n warnings: [...result.warnings],\n };\n}\n\nfunction resolveSettingsReadTrackedPaths(pmRoot: string, schema: PmSettings[\"schema\"], settingsPath: string): string[] {\n const normalizedSchema = normalizeRuntimeSchemaSettings(schema);\n return [\n settingsPath,\n filePathForSchemaSection(pmRoot, normalizedSchema.files.types, DEFAULT_RUNTIME_SCHEMA_FILE_PATHS.types),\n filePathForSchemaSection(pmRoot, normalizedSchema.files.statuses, DEFAULT_RUNTIME_SCHEMA_FILE_PATHS.statuses),\n filePathForSchemaSection(pmRoot, normalizedSchema.files.fields, DEFAULT_RUNTIME_SCHEMA_FILE_PATHS.fields),\n filePathForSchemaSection(pmRoot, normalizedSchema.files.workflows, DEFAULT_RUNTIME_SCHEMA_FILE_PATHS.workflows),\n ];\n}\n\nasync function cacheSettingsReadResult(pmRoot: string, trackedPaths: string[], result: SettingsReadResult): Promise<void> {\n const signatures = await collectSettingsReadCacheSignatures(trackedPaths);\n setSettingsReadCacheEntry(pmRoot, {\n tracked_paths: trackedPaths,\n signatures,\n value: cloneSettingsReadResult(result),\n });\n}\n\nasync function cacheSettingsReadResultSafe(pmRoot: string, trackedPaths: string[], result: SettingsReadResult): Promise<void> {\n try {\n await cacheSettingsReadResult(pmRoot, trackedPaths, result);\n } catch {\n clearSettingsReadCache(pmRoot);\n }\n}\n\ntype SettingsReadCacheSignatures = Awaited<ReturnType<typeof collectSettingsReadCacheSignatures>>;\n\nfunction findSettingsReadCacheSignature(signatures: SettingsReadCacheSignatures, targetPath: string) {\n return signatures.find((signature) => signature.path === targetPath);\n}\n\nfunction selectedSettingsReadCacheSignaturesEqual(\n before: SettingsReadCacheSignatures,\n after: SettingsReadCacheSignatures,\n targetPaths: string[],\n): boolean {\n for (const targetPath of targetPaths) {\n const beforeSignature = findSettingsReadCacheSignature(before, targetPath);\n const afterSignature = findSettingsReadCacheSignature(after, targetPath);\n if (\n !beforeSignature ||\n !afterSignature ||\n !settingsReadCacheSignaturesEqual([beforeSignature], [afterSignature])\n ) {\n return false;\n }\n }\n return true;\n}\n\nasync function cacheSettingsReadResultIfStable(\n pmRoot: string,\n trackedPaths: string[],\n result: SettingsReadResult,\n stableSignatures: SettingsReadCacheSignatures,\n stablePaths: string[],\n): Promise<void> {\n try {\n const currentSignatures = await collectSettingsReadCacheSignatures(trackedPaths);\n if (!selectedSettingsReadCacheSignaturesEqual(stableSignatures, currentSignatures, stablePaths)) {\n clearSettingsReadCache(pmRoot);\n return;\n }\n setSettingsReadCacheEntry(pmRoot, {\n tracked_paths: trackedPaths,\n signatures: currentSignatures,\n value: cloneSettingsReadResult(result),\n });\n } catch {\n clearSettingsReadCache(pmRoot);\n }\n}\n\nfunction resolvePersistedFileBackedSchemaSections(\n settings: PmSettings,\n source: SettingsPersistSourceSnapshot | undefined,\n): {\n item_type_definitions: ItemTypeDefinition[];\n schema_statuses: PmSettings[\"schema\"][\"statuses\"];\n schema_fields: PmSettings[\"schema\"][\"fields\"];\n schema_type_workflows: PmSettings[\"schema\"][\"type_workflows\"];\n} {\n const normalizedSchema = normalizeRuntimeSchemaSettings(settings.schema);\n const currentItemTypeDefinitions = normalizeItemTypeDefinitions(settings.item_types?.definitions);\n if (!source) {\n return {\n item_type_definitions: currentItemTypeDefinitions,\n schema_statuses: normalizedSchema.statuses,\n schema_fields: normalizedSchema.fields,\n schema_type_workflows: normalizedSchema.type_workflows,\n };\n }\n\n const currentTypeWorkflows = normalizedSchema.type_workflows ?? [];\n const itemTypeDefinitionsUnchanged = stableValueEquals(currentItemTypeDefinitions, source.runtime_item_type_definitions);\n const schemaStatusesUnchanged = stableValueEquals(normalizedSchema.statuses, source.runtime_schema_statuses);\n const schemaFieldsUnchanged = stableValueEquals(normalizedSchema.fields, source.runtime_schema_fields);\n const schemaTypeWorkflowsUnchanged = stableValueEquals(currentTypeWorkflows, source.runtime_schema_type_workflows);\n\n return {\n item_type_definitions: itemTypeDefinitionsUnchanged\n ? source.has_source_item_type_definitions\n ? normalizeItemTypeDefinitions(source.source_item_type_definitions)\n : []\n : currentItemTypeDefinitions,\n schema_statuses: schemaStatusesUnchanged\n ? source.has_source_schema_statuses\n ? structuredClone(source.source_schema_statuses)\n : []\n : normalizedSchema.statuses,\n schema_fields: schemaFieldsUnchanged\n ? source.has_source_schema_fields\n ? structuredClone(source.source_schema_fields)\n : []\n : normalizedSchema.fields,\n schema_type_workflows: schemaTypeWorkflowsUnchanged\n ? source.has_source_schema_type_workflows\n ? structuredClone(source.source_schema_type_workflows)\n : undefined\n : normalizedSchema.type_workflows,\n };\n}\n\nfunction buildFallbackSettingsReadResult(warning?: string): SettingsReadResult {\n return {\n settings: cloneDefaults(),\n metadata: {\n has_explicit_item_format: false,\n },\n warnings: warning ? [warning] : [],\n };\n}\n\nfunction hasExplicitItemFormat(raw: unknown): boolean {\n if (typeof raw !== \"object\" || raw === null || Array.isArray(raw)) {\n return false;\n }\n const itemFormat = (raw as Record<string, unknown>).item_format;\n return itemFormat === \"toon\" || itemFormat === \"json_markdown\";\n}\n\nfunction normalizeStringList(values: string[] | undefined): string[] {\n return [...new Set((values ?? []).map((value) => value.trim()).filter((value) => value.length > 0))].sort((left, right) =>\n left.localeCompare(right),\n );\n}\n\nfunction normalizeAgentGuidanceSettings(\n value: Partial<PmSettings[\"agent_guidance\"]> | undefined,\n): PmSettings[\"agent_guidance\"] {\n const defaults = SETTINGS_DEFAULTS.agent_guidance;\n const templateVersion = value?.template_version;\n return {\n prompt_completed: value?.prompt_completed === true,\n declined: value?.declined === true,\n declined_at: typeof value?.declined_at === \"string\" ? value.declined_at : defaults.declined_at,\n template_version:\n typeof templateVersion === \"number\" && Number.isInteger(templateVersion) && templateVersion > 0\n ? templateVersion\n : defaults.template_version,\n last_checked_files: normalizeStringList(value?.last_checked_files ?? defaults.last_checked_files),\n };\n}\n\nfunction normalizeLowerStringList(values: string[] | undefined): string[] {\n return [...new Set((values ?? []).map((value) => value.trim().toLowerCase()).filter((value) => value.length > 0))].sort(\n (left, right) => left.localeCompare(right),\n );\n}\n\nfunction normalizeExtensionPolicyMode(value: ExtensionPolicyMode | undefined): ExtensionPolicyMode {\n if (value === \"off\" || value === \"warn\" || value === \"enforce\") {\n return value;\n }\n return SETTINGS_DEFAULTS.extensions.policy.mode;\n}\n\nfunction normalizeExtensionTrustMode(value: ExtensionTrustMode | undefined): ExtensionTrustMode {\n if (value === \"off\" || value === \"warn\" || value === \"enforce\") {\n return value;\n }\n return SETTINGS_DEFAULTS.extensions.policy.trust_mode;\n}\n\nfunction normalizeExtensionSandboxProfile(value: ExtensionSandboxProfile | undefined): ExtensionSandboxProfile {\n if (value === \"none\" || value === \"restricted\" || value === \"strict\") {\n return value;\n }\n return SETTINGS_DEFAULTS.extensions.policy.default_sandbox_profile;\n}\n\nfunction normalizeExtensionPolicyOverride(\n override: ExtensionPolicyOverrideSettings,\n): ExtensionPolicyOverrideSettings | null {\n const name = override.name.trim().toLowerCase();\n if (name.length === 0) {\n return null;\n }\n const normalized: ExtensionPolicyOverrideSettings = {\n name,\n };\n if (override.disabled === true) {\n normalized.disabled = true;\n }\n if (override.require_trusted === true) {\n normalized.require_trusted = true;\n }\n if (override.require_provenance === true) {\n normalized.require_provenance = true;\n }\n if (override.sandbox_profile !== undefined) {\n normalized.sandbox_profile = normalizeExtensionSandboxProfile(override.sandbox_profile);\n }\n const allowedCapabilities = normalizeLowerStringList(override.allowed_capabilities);\n const blockedCapabilities = normalizeLowerStringList(override.blocked_capabilities);\n const allowedSurfaces = normalizeLowerStringList(override.allowed_surfaces);\n const blockedSurfaces = normalizeLowerStringList(override.blocked_surfaces);\n const allowedCommands = normalizeLowerStringList(override.allowed_commands);\n const blockedCommands = normalizeLowerStringList(override.blocked_commands);\n const allowedActions = normalizeLowerStringList(override.allowed_actions);\n const blockedActions = normalizeLowerStringList(override.blocked_actions);\n const allowedServices = normalizeLowerStringList(override.allowed_services);\n const blockedServices = normalizeLowerStringList(override.blocked_services);\n if (allowedCapabilities.length > 0) {\n normalized.allowed_capabilities = allowedCapabilities;\n }\n if (blockedCapabilities.length > 0) {\n normalized.blocked_capabilities = blockedCapabilities;\n }\n if (allowedSurfaces.length > 0) {\n normalized.allowed_surfaces = allowedSurfaces;\n }\n if (blockedSurfaces.length > 0) {\n normalized.blocked_surfaces = blockedSurfaces;\n }\n if (allowedCommands.length > 0) {\n normalized.allowed_commands = allowedCommands;\n }\n if (blockedCommands.length > 0) {\n normalized.blocked_commands = blockedCommands;\n }\n if (allowedActions.length > 0) {\n normalized.allowed_actions = allowedActions;\n }\n if (blockedActions.length > 0) {\n normalized.blocked_actions = blockedActions;\n }\n if (allowedServices.length > 0) {\n normalized.allowed_services = allowedServices;\n }\n if (blockedServices.length > 0) {\n normalized.blocked_services = blockedServices;\n }\n return normalized;\n}\n\nfunction normalizeExtensionPolicyOverrides(\n overrides: ExtensionPolicyOverrideSettings[] | undefined,\n): ExtensionPolicyOverrideSettings[] {\n const dedupedByName = new Map<string, ExtensionPolicyOverrideSettings>();\n for (const override of overrides ?? []) {\n const normalized = normalizeExtensionPolicyOverride(override);\n if (!normalized) {\n continue;\n }\n dedupedByName.set(normalized.name, normalized);\n }\n return [...dedupedByName.values()].sort((left, right) => left.name.localeCompare(right.name));\n}\n\nfunction normalizePmMaxVersionExceededModeValue(value: unknown): PmMaxVersionExceededMode | undefined {\n return value === \"block\" || value === \"warn\" ? value : undefined;\n}\n\n/**\n * Preserve a configured `pm_max_version_exceeded_mode` (string mode or per-layer\n * override object) through settings normalization. Unset/invalid values are\n * omitted so existing settings.json files round-trip byte-identically and the\n * loader applies its safe default (\"block\").\n */\nfunction normalizePmMaxVersionExceededModeSetting(\n value: PmMaxVersionExceededModeSetting | undefined,\n): PmMaxVersionExceededModeSetting | undefined {\n if (typeof value === \"string\") {\n return normalizePmMaxVersionExceededModeValue(value);\n }\n if (typeof value === \"object\" && value !== null && !Array.isArray(value)) {\n const global = normalizePmMaxVersionExceededModeValue(value.global);\n const project = normalizePmMaxVersionExceededModeValue(value.project);\n if (global === undefined && project === undefined) {\n return undefined;\n }\n return {\n ...(global !== undefined ? { global } : {}),\n ...(project !== undefined ? { project } : {}),\n };\n }\n return undefined;\n}\n\nfunction normalizeExtensionPolicySettings(\n policy: Partial<ExtensionGovernancePolicy> | undefined,\n): ExtensionGovernancePolicy {\n const defaults = SETTINGS_DEFAULTS.extensions.policy;\n const pmMaxVersionExceededMode = normalizePmMaxVersionExceededModeSetting(policy?.pm_max_version_exceeded_mode);\n return {\n mode: normalizeExtensionPolicyMode(policy?.mode),\n trust_mode: normalizeExtensionTrustMode(policy?.trust_mode),\n ...(pmMaxVersionExceededMode !== undefined ? { pm_max_version_exceeded_mode: pmMaxVersionExceededMode } : {}),\n require_provenance: policy?.require_provenance === true,\n trusted_extensions: normalizeLowerStringList(policy?.trusted_extensions ?? defaults.trusted_extensions),\n default_sandbox_profile: normalizeExtensionSandboxProfile(policy?.default_sandbox_profile),\n allowed_extensions: normalizeLowerStringList(policy?.allowed_extensions ?? defaults.allowed_extensions),\n blocked_extensions: normalizeLowerStringList(policy?.blocked_extensions ?? defaults.blocked_extensions),\n allowed_capabilities: normalizeLowerStringList(policy?.allowed_capabilities ?? defaults.allowed_capabilities),\n blocked_capabilities: normalizeLowerStringList(policy?.blocked_capabilities ?? defaults.blocked_capabilities),\n allowed_surfaces: normalizeLowerStringList(policy?.allowed_surfaces ?? defaults.allowed_surfaces),\n blocked_surfaces: normalizeLowerStringList(policy?.blocked_surfaces ?? defaults.blocked_surfaces),\n allowed_commands: normalizeLowerStringList(policy?.allowed_commands ?? defaults.allowed_commands),\n blocked_commands: normalizeLowerStringList(policy?.blocked_commands ?? defaults.blocked_commands),\n allowed_actions: normalizeLowerStringList(policy?.allowed_actions ?? defaults.allowed_actions),\n blocked_actions: normalizeLowerStringList(policy?.blocked_actions ?? defaults.blocked_actions),\n allowed_services: normalizeLowerStringList(policy?.allowed_services ?? defaults.allowed_services),\n blocked_services: normalizeLowerStringList(policy?.blocked_services ?? defaults.blocked_services),\n extension_overrides: normalizeExtensionPolicyOverrides(policy?.extension_overrides ?? defaults.extension_overrides),\n };\n}\n\nfunction normalizeValidationMetadataRequiredFields(values: string[] | undefined): ValidateMetadataRequiredField[] {\n const normalized = [...new Set((values ?? []).map((value) => value.trim().toLowerCase().replaceAll(\"-\", \"_\")))]\n .filter((value) => value.length > 0)\n .sort((left, right) => left.localeCompare(right));\n return normalized.filter((value): value is ValidateMetadataRequiredField =>\n [\n \"author\",\n \"acceptance_criteria\",\n \"estimated_minutes\",\n \"close_reason\",\n \"reviewer\",\n \"risk\",\n \"confidence\",\n \"sprint\",\n \"release\",\n ].includes(value),\n );\n}\n\nfunction normalizeValidationPatternList(values: string[] | undefined): string[] {\n return [...new Set((values ?? []).map((value) => value.trim().toLowerCase()).filter((value) => value.length > 0))].sort(\n (left, right) => left.localeCompare(right),\n );\n}\n\nfunction valueOrDefault<T>(value: T | undefined, fallback: T): T {\n return value === undefined ? fallback : value;\n}\n\nfunction recordOrEmpty(value: unknown): Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value) ? (value as Record<string, unknown>) : {};\n}\n\nfunction arrayOrEmpty<T>(value: unknown): T[] {\n return Array.isArray(value) ? (value as T[]) : [];\n}\n\n/**\n * Implements normalize item type definitions for the public runtime surface of this module.\n */\nexport function normalizeItemTypeDefinitions(definitions: ItemTypeDefinition[] | undefined): ItemTypeDefinition[] {\n const normalized = (definitions ?? [])\n .map((definition) => normalizeItemTypeDefinition(definition))\n .filter((definition): definition is ItemTypeDefinition => definition !== null);\n const dedupedByName = new Map<string, ItemTypeDefinition>();\n for (const definition of normalized) {\n dedupedByName.set(definition.name.toLowerCase(), definition);\n }\n return [...dedupedByName.values()].sort((left, right) => left.name.localeCompare(right.name));\n}\n\nfunction mergeSettings(settings: ParsedSettings): PmSettings {\n const defaults = cloneDefaults();\n const governance = resolveGovernanceKnobs({\n governance: settings.governance ?? { preset: \"default\" },\n });\n return {\n ...defaults,\n ...settings,\n item_format: settings.item_format === \"json_markdown\" ? \"toon\" : (settings.item_format ?? defaults.item_format),\n locks: { ...defaults.locks, ...settings.locks },\n checkpoints: { ...defaults.checkpoints, ...(settings.checkpoints ?? {}) },\n output: { ...defaults.output, ...settings.output },\n history: {\n ...defaults.history,\n ...(settings.history ?? {}),\n compact_policy: {\n ...defaults.history.compact_policy,\n ...(settings.history?.compact_policy ?? {}),\n },\n },\n validation: {\n ...defaults.validation,\n ...(settings.validation ?? {}),\n parent_reference: governance.parent_reference,\n metadata_profile: governance.metadata_profile,\n metadata_required_fields: normalizeValidationMetadataRequiredFields(settings.validation?.metadata_required_fields),\n lifecycle_stale_blocker_reason_patterns: normalizeValidationPatternList(\n settings.validation?.lifecycle_stale_blocker_reason_patterns ??\n defaults.validation.lifecycle_stale_blocker_reason_patterns,\n ),\n lifecycle_closure_like_blocked_reason_patterns: normalizeValidationPatternList(\n settings.validation?.lifecycle_closure_like_blocked_reason_patterns ??\n defaults.validation.lifecycle_closure_like_blocked_reason_patterns,\n ),\n lifecycle_closure_like_resolution_patterns: normalizeValidationPatternList(\n settings.validation?.lifecycle_closure_like_resolution_patterns ??\n defaults.validation.lifecycle_closure_like_resolution_patterns,\n ),\n lifecycle_closure_like_actual_result_patterns: normalizeValidationPatternList(\n settings.validation?.lifecycle_closure_like_actual_result_patterns ??\n defaults.validation.lifecycle_closure_like_actual_result_patterns,\n ),\n estimate_defaults_by_type: normalizeEstimateDefaultOverrides(settings.validation?.estimate_defaults_by_type),\n },\n governance,\n workflow: {\n definition_of_done: [...(settings.workflow?.definition_of_done ?? defaults.workflow.definition_of_done)],\n },\n testing: {\n record_results_to_items: settings.testing?.record_results_to_items ?? defaults.testing.record_results_to_items,\n },\n telemetry: {\n enabled: settings.telemetry?.enabled ?? defaults.telemetry.enabled,\n first_run_prompt_completed:\n settings.telemetry?.first_run_prompt_completed ?? defaults.telemetry.first_run_prompt_completed,\n capture_level: settings.telemetry?.capture_level ?? defaults.telemetry.capture_level,\n endpoint: settings.telemetry?.endpoint ?? defaults.telemetry.endpoint,\n installation_id: settings.telemetry?.installation_id ?? defaults.telemetry.installation_id,\n retention_days: settings.telemetry?.retention_days ?? defaults.telemetry.retention_days,\n },\n agent_guidance: normalizeAgentGuidanceSettings(settings.agent_guidance ?? defaults.agent_guidance),\n item_types: {\n definitions: normalizeItemTypeDefinitions(settings.item_types?.definitions),\n },\n schema: normalizeRuntimeSchemaSettings(settings.schema ?? defaults.schema),\n context: {\n default_depth: settings.context?.default_depth ?? defaults.context.default_depth,\n activity_limit: settings.context?.activity_limit ?? defaults.context.activity_limit,\n stale_threshold_days: settings.context?.stale_threshold_days ?? defaults.context.stale_threshold_days,\n sections: {\n ...defaults.context.sections,\n ...(settings.context?.sections ?? {}),\n },\n },\n extensions: {\n enabled: [...settings.extensions.enabled],\n disabled: [...settings.extensions.disabled],\n policy: normalizeExtensionPolicySettings(settings.extensions.policy ?? defaults.extensions.policy),\n },\n search: {\n ...defaults.search,\n ...settings.search,\n mutation_refresh_policy: normalizeSearchMutationRefreshPolicy(settings.search?.mutation_refresh_policy),\n query_expansion: {\n ...defaults.search.query_expansion,\n ...(settings.search?.query_expansion ?? {}),\n enabled: normalizeSearchQueryExpansionEnabled(settings.search?.query_expansion?.enabled),\n provider: normalizeSearchQueryExpansionProvider(settings.search?.query_expansion?.provider),\n },\n rerank: {\n ...defaults.search.rerank,\n ...(settings.search?.rerank ?? {}),\n enabled: normalizeSearchRerankEnabled(settings.search?.rerank?.enabled),\n model: normalizeSearchRerankModel(settings.search?.rerank?.model),\n top_k: normalizeSearchRerankTopK(settings.search?.rerank?.top_k),\n },\n },\n providers: {\n openai: { ...defaults.providers.openai, ...settings.providers.openai },\n ollama: { ...defaults.providers.ollama, ...settings.providers.ollama },\n },\n vector_store: {\n adapter: settings.vector_store.adapter ?? defaults.vector_store.adapter,\n collection_name: normalizeVectorStoreCollectionName(settings.vector_store.collection_name),\n qdrant: { ...defaults.vector_store.qdrant, ...settings.vector_store.qdrant },\n lancedb: { ...defaults.vector_store.lancedb, ...settings.vector_store.lancedb },\n },\n };\n}\n\n/**\n * Implements serialize settings for the public runtime surface of this module.\n */\nexport function serializeSettings(settings: PmSettings, options: SerializeSettingsOptions = {}): string {\n const baseSettings = {\n ...settings,\n locks: valueOrDefault(settings.locks, SETTINGS_DEFAULTS.locks),\n checkpoints: valueOrDefault(settings.checkpoints, SETTINGS_DEFAULTS.checkpoints),\n output: valueOrDefault(settings.output, SETTINGS_DEFAULTS.output),\n history: valueOrDefault(settings.history, SETTINGS_DEFAULTS.history),\n validation: valueOrDefault(settings.validation, SETTINGS_DEFAULTS.validation),\n workflow: valueOrDefault(settings.workflow, SETTINGS_DEFAULTS.workflow),\n testing: valueOrDefault(settings.testing, SETTINGS_DEFAULTS.testing),\n telemetry: valueOrDefault(settings.telemetry, SETTINGS_DEFAULTS.telemetry),\n agent_guidance: valueOrDefault(settings.agent_guidance, SETTINGS_DEFAULTS.agent_guidance),\n item_types: valueOrDefault(settings.item_types, SETTINGS_DEFAULTS.item_types),\n schema: valueOrDefault(settings.schema, SETTINGS_DEFAULTS.schema),\n context: valueOrDefault(settings.context, SETTINGS_DEFAULTS.context),\n extensions: valueOrDefault(settings.extensions, SETTINGS_DEFAULTS.extensions),\n search: valueOrDefault(settings.search, SETTINGS_DEFAULTS.search),\n providers: valueOrDefault(settings.providers, SETTINGS_DEFAULTS.providers),\n vector_store: valueOrDefault(settings.vector_store, SETTINGS_DEFAULTS.vector_store),\n } as PmSettings;\n const governance = resolveGovernanceKnobs(baseSettings);\n const normalizedSchema = normalizeRuntimeSchemaSettings(baseSettings.schema);\n const persistedFileBackedSections = resolvePersistedFileBackedSchemaSections(baseSettings, options.persist_source);\n const normalizedSettings: PmSettings = {\n ...baseSettings,\n item_format: \"toon\",\n validation: {\n ...baseSettings.validation,\n parent_reference: governance.parent_reference,\n metadata_profile: governance.metadata_profile,\n metadata_required_fields: normalizeValidationMetadataRequiredFields(baseSettings.validation?.metadata_required_fields),\n lifecycle_stale_blocker_reason_patterns: normalizeValidationPatternList(\n baseSettings.validation?.lifecycle_stale_blocker_reason_patterns ??\n SETTINGS_DEFAULTS.validation.lifecycle_stale_blocker_reason_patterns,\n ),\n lifecycle_closure_like_blocked_reason_patterns: normalizeValidationPatternList(\n baseSettings.validation?.lifecycle_closure_like_blocked_reason_patterns ??\n SETTINGS_DEFAULTS.validation.lifecycle_closure_like_blocked_reason_patterns,\n ),\n lifecycle_closure_like_resolution_patterns: normalizeValidationPatternList(\n baseSettings.validation?.lifecycle_closure_like_resolution_patterns ??\n SETTINGS_DEFAULTS.validation.lifecycle_closure_like_resolution_patterns,\n ),\n lifecycle_closure_like_actual_result_patterns: normalizeValidationPatternList(\n baseSettings.validation?.lifecycle_closure_like_actual_result_patterns ??\n SETTINGS_DEFAULTS.validation.lifecycle_closure_like_actual_result_patterns,\n ),\n estimate_defaults_by_type: normalizeEstimateDefaultOverrides(baseSettings.validation?.estimate_defaults_by_type),\n },\n governance,\n agent_guidance: normalizeAgentGuidanceSettings(baseSettings.agent_guidance),\n item_types: {\n definitions: persistedFileBackedSections.item_type_definitions,\n },\n schema: {\n ...normalizedSchema,\n statuses: persistedFileBackedSections.schema_statuses,\n fields: persistedFileBackedSections.schema_fields,\n type_workflows: persistedFileBackedSections.schema_type_workflows,\n },\n search: {\n ...SETTINGS_DEFAULTS.search,\n ...baseSettings.search,\n mutation_refresh_policy: normalizeSearchMutationRefreshPolicy(baseSettings.search?.mutation_refresh_policy),\n query_expansion: {\n ...SETTINGS_DEFAULTS.search.query_expansion,\n ...(baseSettings.search?.query_expansion ?? {}),\n enabled: normalizeSearchQueryExpansionEnabled(baseSettings.search?.query_expansion?.enabled),\n provider: normalizeSearchQueryExpansionProvider(baseSettings.search?.query_expansion?.provider),\n },\n rerank: {\n ...SETTINGS_DEFAULTS.search.rerank,\n ...(baseSettings.search?.rerank ?? {}),\n enabled: normalizeSearchRerankEnabled(baseSettings.search?.rerank?.enabled),\n model: normalizeSearchRerankModel(baseSettings.search?.rerank?.model),\n top_k: normalizeSearchRerankTopK(baseSettings.search?.rerank?.top_k),\n },\n },\n context: {\n default_depth: baseSettings.context?.default_depth ?? SETTINGS_DEFAULTS.context.default_depth,\n activity_limit: baseSettings.context?.activity_limit ?? SETTINGS_DEFAULTS.context.activity_limit,\n stale_threshold_days: baseSettings.context?.stale_threshold_days ?? SETTINGS_DEFAULTS.context.stale_threshold_days,\n sections: {\n ...SETTINGS_DEFAULTS.context.sections,\n ...(baseSettings.context?.sections ?? {}),\n },\n },\n extensions: {\n enabled: normalizeStringList(baseSettings.extensions?.enabled),\n disabled: normalizeStringList(baseSettings.extensions?.disabled),\n policy: normalizeExtensionPolicySettings(baseSettings.extensions?.policy),\n },\n vector_store: {\n ...baseSettings.vector_store,\n adapter: baseSettings.vector_store?.adapter ?? SETTINGS_DEFAULTS.vector_store.adapter,\n collection_name: normalizeVectorStoreCollectionName(baseSettings.vector_store?.collection_name),\n qdrant: { ...(baseSettings.vector_store?.qdrant ?? {}) },\n lancedb: { ...(baseSettings.vector_store?.lancedb ?? {}) },\n },\n };\n const ordered = orderObject(\n {\n ...(normalizedSettings as unknown as Record<string, unknown>),\n governance: normalizeGovernanceForPersist(governance) as unknown,\n },\n [\n \"version\",\n \"id_prefix\",\n \"author_default\",\n \"item_format\",\n \"locks\",\n \"checkpoints\",\n \"output\",\n \"history\",\n \"validation\",\n \"governance\",\n \"workflow\",\n \"testing\",\n \"telemetry\",\n \"agent_guidance\",\n \"item_types\",\n \"schema\",\n \"context\",\n \"extensions\",\n \"search\",\n \"providers\",\n \"vector_store\",\n ],\n );\n\n ordered.locks = orderObject(ordered.locks as Record<string, unknown>, [\"ttl_seconds\"]);\n ordered.checkpoints = orderObject(ordered.checkpoints as Record<string, unknown>, [\"retention_days\"]);\n ordered.output = orderObject(ordered.output as Record<string, unknown>, [\"default_format\"]);\n // compact_policy's own keys are emitted in deterministic order by mergeSettings\n // (it rebuilds the object as {enabled, max_entries, trigger}); only the top-level\n // history keys need explicit ordering here.\n ordered.history = orderObject(ordered.history as Record<string, unknown>, [\"missing_stream\", \"compact_policy\"]);\n ordered.validation = orderObject(ordered.validation as Record<string, unknown>, [\n \"sprint_release_format\",\n \"parent_reference\",\n \"metadata_profile\",\n \"metadata_required_fields\",\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 \"estimate_defaults_by_type\",\n ]);\n ordered.governance = orderObject(ordered.governance as Record<string, unknown>, [\n \"preset\",\n \"ownership_enforcement\",\n \"create_mode_default\",\n \"close_validation_default\",\n \"require_close_reason\",\n \"parent_reference\",\n \"metadata_profile\",\n \"force_required_for_stale_lock\",\n \"create_default_type\",\n \"workflow_enforcement\",\n ]);\n ordered.workflow = orderObject(ordered.workflow as Record<string, unknown>, [\"definition_of_done\"]);\n ordered.testing = orderObject(ordered.testing as Record<string, unknown>, [\"record_results_to_items\"]);\n ordered.telemetry = orderObject(ordered.telemetry as Record<string, unknown>, [\n \"enabled\",\n \"first_run_prompt_completed\",\n \"capture_level\",\n \"endpoint\",\n \"installation_id\",\n \"retention_days\",\n ]);\n ordered.agent_guidance = orderObject(ordered.agent_guidance as Record<string, unknown>, [\n \"prompt_completed\",\n \"declined\",\n \"declined_at\",\n \"template_version\",\n \"last_checked_files\",\n ]);\n ordered.item_types = orderObject(ordered.item_types as Record<string, unknown>, [\"definitions\"]);\n ordered.schema = orderObject(ordered.schema as Record<string, unknown>, [\n \"version\",\n \"files\",\n \"statuses\",\n \"fields\",\n \"workflow\",\n \"type_workflows\",\n \"unknown_field_policy\",\n ]);\n (ordered.schema as Record<string, unknown>).files = orderObject(\n recordOrEmpty((ordered.schema as Record<string, unknown>).files),\n [\"types\", \"statuses\", \"fields\", \"workflows\"],\n );\n (ordered.schema as Record<string, unknown>).workflow = orderObject(\n recordOrEmpty((ordered.schema as Record<string, unknown>).workflow),\n [\"draft_status\", \"open_status\", \"in_progress_status\", \"blocked_status\", \"close_status\", \"canceled_status\"],\n );\n ordered.context = orderObject(ordered.context as Record<string, unknown>, [\n \"default_depth\",\n \"activity_limit\",\n \"stale_threshold_days\",\n \"sections\",\n ]);\n (ordered.context as Record<string, unknown>).sections = orderObject(\n recordOrEmpty((ordered.context as Record<string, unknown>).sections),\n [\"hierarchy\", \"activity\", \"progress\", \"blockers\", \"files\", \"workload\", \"staleness\", \"tests\"],\n );\n ordered.extensions = orderObject(ordered.extensions as Record<string, unknown>, [\"enabled\", \"disabled\", \"policy\"]);\n (ordered.extensions as Record<string, unknown>).policy = orderObject(\n recordOrEmpty((ordered.extensions as Record<string, unknown>).policy),\n [\n \"mode\",\n \"trust_mode\",\n \"pm_max_version_exceeded_mode\",\n \"require_provenance\",\n \"trusted_extensions\",\n \"default_sandbox_profile\",\n \"allowed_extensions\",\n \"blocked_extensions\",\n \"allowed_capabilities\",\n \"blocked_capabilities\",\n \"allowed_surfaces\",\n \"blocked_surfaces\",\n \"allowed_commands\",\n \"blocked_commands\",\n \"allowed_actions\",\n \"blocked_actions\",\n \"allowed_services\",\n \"blocked_services\",\n \"extension_overrides\",\n ],\n );\n ((ordered.extensions as Record<string, unknown>).policy as Record<string, unknown>).extension_overrides = (\n arrayOrEmpty(((ordered.extensions as Record<string, unknown>).policy as Record<string, unknown>).extension_overrides)\n ).map((entry) =>\n orderObject(recordOrEmpty(entry), [\n \"name\",\n \"disabled\",\n \"require_trusted\",\n \"require_provenance\",\n \"sandbox_profile\",\n \"allowed_capabilities\",\n \"blocked_capabilities\",\n \"allowed_surfaces\",\n \"blocked_surfaces\",\n \"allowed_commands\",\n \"blocked_commands\",\n \"allowed_actions\",\n \"blocked_actions\",\n \"allowed_services\",\n \"blocked_services\",\n ]),\n );\n ordered.search = orderObject(ordered.search as Record<string, unknown>, [\n \"score_threshold\",\n \"hybrid_semantic_weight\",\n \"max_results\",\n \"embedding_model\",\n \"embedding_corpus_max_characters\",\n \"embedding_batch_size\",\n \"embedding_timeout_ms\",\n \"scanner_max_batch_retries\",\n \"provider\",\n \"mutation_refresh_policy\",\n \"query_expansion\",\n \"rerank\",\n ]);\n (ordered.search as Record<string, unknown>).query_expansion = orderObject(\n recordOrEmpty((ordered.search as Record<string, unknown>).query_expansion),\n [\"enabled\", \"provider\"],\n );\n (ordered.search as Record<string, unknown>).rerank = orderObject(\n recordOrEmpty((ordered.search as Record<string, unknown>).rerank),\n [\"enabled\", \"model\", \"top_k\"],\n );\n ordered.providers = orderObject(ordered.providers as Record<string, unknown>, [\"openai\", \"ollama\"]);\n (ordered.providers as Record<string, unknown>).openai = orderObject(\n recordOrEmpty((ordered.providers as Record<string, unknown>).openai),\n [\"base_url\", \"api_key\", \"model\"],\n );\n (ordered.providers as Record<string, unknown>).ollama = orderObject(\n recordOrEmpty((ordered.providers as Record<string, unknown>).ollama),\n [\"base_url\", \"model\"],\n );\n ordered.vector_store = orderObject(ordered.vector_store as Record<string, unknown>, [\n \"adapter\",\n \"collection_name\",\n \"qdrant\",\n \"lancedb\",\n ]);\n (ordered.vector_store as Record<string, unknown>).qdrant = orderObject(\n recordOrEmpty((ordered.vector_store as Record<string, unknown>).qdrant),\n [\"url\", \"api_key\"],\n );\n (ordered.vector_store as Record<string, unknown>).lancedb = orderObject(\n recordOrEmpty((ordered.vector_store as Record<string, unknown>).lancedb),\n [\"path\"],\n );\n\n return `${JSON.stringify(ordered, null, 2)}\\n`;\n}\n\n/**\n * Implements read settings with metadata for the public runtime surface of this module.\n */\nexport async function readSettingsWithMetadata(pmRoot: string): Promise<SettingsReadResult> {\n const settingsPath = getSettingsPath(pmRoot);\n let trackedPathsForFailure: string[] = [settingsPath];\n await runActiveOnReadHooks({\n path: settingsPath,\n scope: \"project\",\n });\n\n const cachedResult = getSettingsReadCacheEntry<SettingsReadResult>(pmRoot);\n if (cachedResult) {\n const currentSignatures = await collectSettingsReadCacheSignatures(cachedResult.tracked_paths);\n if (settingsReadCacheSignaturesEqual(currentSignatures, cachedResult.signatures)) {\n return cloneSettingsReadResult(cachedResult.value);\n }\n }\n\n const settingsOnlySignatures = await collectSettingsReadCacheSignatures([settingsPath]);\n const raw = await readFileIfExists(settingsPath);\n if (raw === null) {\n const fallback = buildFallbackSettingsReadResult();\n await cacheSettingsReadResultIfStable(pmRoot, [settingsPath], fallback, settingsOnlySignatures, [settingsPath]);\n return fallback;\n }\n\n const settingsSignaturesAfterRead = await collectSettingsReadCacheSignatures([settingsPath]);\n if (!settingsReadCacheSignaturesEqual(settingsOnlySignatures, settingsSignaturesAfterRead)) {\n clearSettingsReadCache(pmRoot);\n return readSettingsWithMetadata(pmRoot);\n }\n\n let parsed: unknown;\n try {\n parsed = JSON.parse(raw) as unknown;\n } catch {\n const fallback = buildFallbackSettingsReadResult(\"settings_read_invalid_json\");\n await cacheSettingsReadResultIfStable(pmRoot, [settingsPath], fallback, settingsSignaturesAfterRead, [settingsPath]);\n return fallback;\n }\n\n const validated = validateSettings(parsed);\n if (!validated.success) {\n const fallback = buildFallbackSettingsReadResult(\"settings_read_invalid_schema\");\n await cacheSettingsReadResultIfStable(pmRoot, [settingsPath], fallback, settingsSignaturesAfterRead, [settingsPath]);\n return fallback;\n }\n\n try {\n const mergedSettings = mergeSettings(validated.data);\n const trackedPaths = resolveSettingsReadTrackedPaths(pmRoot, mergedSettings.schema, settingsPath);\n trackedPathsForFailure = trackedPaths;\n const signaturesBeforeSchemaLoad = await collectSettingsReadCacheSignatures(trackedPaths);\n const schemaScaffold = await ensureRuntimeSchemaFileScaffold(pmRoot, mergedSettings.schema);\n const loadedSchemaSections = await loadRuntimeSchemaFromOptionalFiles(pmRoot, mergedSettings.schema);\n const signaturesAfterSchemaLoad = await collectSettingsReadCacheSignatures(trackedPaths);\n const settings: PmSettings = {\n ...mergedSettings,\n item_types: {\n definitions: normalizeItemTypeDefinitions([\n ...mergedSettings.item_types.definitions,\n ...arrayOrEmpty<ItemTypeDefinition>(loadedSchemaSections.type_definitions_from_file),\n ]),\n },\n schema: loadedSchemaSections.schema,\n };\n attachSettingsPersistSourceSnapshot(settings, buildSettingsPersistSourceSnapshot(validated.data, settings));\n const result: SettingsReadResult = {\n settings,\n metadata: {\n has_explicit_item_format: hasExplicitItemFormat(parsed),\n },\n warnings: [\n ...(validated.data.item_format === \"json_markdown\"\n ? [\"settings_item_format_legacy_json_markdown_coerced_to_toon\"]\n : []),\n ...schemaScaffold.created_paths.map((createdPath) => `runtime_schema_bootstrap_created:${createdPath}`),\n ...loadedSchemaSections.warnings,\n ],\n };\n if (schemaScaffold.created_paths.length === 0) {\n if (!settingsReadCacheSignaturesEqual(signaturesBeforeSchemaLoad, signaturesAfterSchemaLoad)) {\n clearSettingsReadCache(pmRoot);\n } else {\n setSettingsReadCacheEntry(pmRoot, {\n tracked_paths: trackedPaths,\n signatures: signaturesAfterSchemaLoad,\n value: cloneSettingsReadResult(result),\n });\n }\n } else {\n // Bootstrap warnings are intentionally one-shot and should not be replayed from cache.\n clearSettingsReadCache(pmRoot);\n }\n return result;\n } catch {\n const fallback = buildFallbackSettingsReadResult(\"settings_read_merge_failed\");\n await cacheSettingsReadResultSafe(pmRoot, trackedPathsForFailure, fallback);\n return fallback;\n }\n}\n\n/**\n * Implements read settings for the public runtime surface of this module.\n */\nexport async function readSettings(pmRoot: string): Promise<PmSettings> {\n return (await readSettingsWithMetadata(pmRoot)).settings;\n}\n\n/**\n * Implements write settings for the public runtime surface of this module.\n */\nexport async function writeSettings(pmRoot: string, settings: PmSettings, op = SETTINGS_WRITE_OP): Promise<void> {\n const settingsPath = getSettingsPath(pmRoot);\n await writeFileAtomic(\n settingsPath,\n serializeSettings(settings, {\n persist_source: getSettingsPersistSourceSnapshot(settings),\n }),\n );\n try {\n await runActiveOnWriteHooks({\n path: settingsPath,\n scope: \"project\",\n op,\n });\n } finally {\n clearSettingsReadCache(pmRoot);\n }\n}\n\nexport const settingsStoreTestOnly = {\n hasExplicitItemFormat,\n buildSettingsPersistSourceSnapshot,\n cacheSettingsReadResultIfStable,\n cacheSettingsReadResultSafe,\n mergeSettings,\n normalizeExtensionPolicySettings,\n normalizeExtensionPolicyOverride,\n normalizeExtensionPolicyOverrides,\n normalizeExtensionPolicyMode,\n normalizePmMaxVersionExceededModeSetting,\n normalizeExtensionSandboxProfile,\n normalizeExtensionTrustMode,\n normalizeLowerStringList,\n normalizeStringList,\n valueOrDefault,\n arrayOrEmpty,\n normalizeValidationPatternList,\n normalizeValidationMetadataRequiredFields,\n resolveSettingsReadTrackedPaths,\n resolvePersistedFileBackedSchemaSections,\n selectedSettingsReadCacheSignaturesEqual,\n};\n"],
|
|
5
|
+
"mappings": "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ACJ,SAAS,CAAC,aAAa;IACvB,OAAO,CAAC,QAAQ;;EAElB;IACE,IAAI;IACJ,OAAO,CAAC,SAAS;;EAEnB;IACE,IAAI;IACJ,OAAO,CAAC,YAAY,iBAAiB,eAAe;;EAEtD;IACE,IAAI;IACJ,SAAS,CAAC,WAAW;IACrB,OAAO,CAAC,YAAY,qBAAqB,gBAAgB;;CAE5D;AAEM,IAAM,8BAAyD,OAAO,OAAO;EAClF,cAAc;EACd,aAAa;EACb,oBAAoB;EACpB,gBAAgB;EAChB,cAAc;EACd,iBAAiB;CAClB;AAEM,IAAM,aAAa;AACnB,IAAM,oBAAoB;AAS1B,IAAM,qCAAqC;AAE3C,IAAM,2BAA2B;EACtC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGK,IAAM,2BAA2B;EACtC;EACA;EACA;EACA;EACA;EACA;;AAGK,IAAM,sBAAsB,CAAC,GAAG,0BAA0B,GAAG,wBAAwB;AAErF,IAAM,iBAAkD;EAC7D,MAAM;EACN,SAAS;EACT,MAAM;EACN,OAAO;EACP,OAAO;EACP,UAAU;EACV,OAAO;EACP,UAAU;EACV,WAAW;EACX,SAAS;EACT,MAAM;;AAGD,IAAM,yBAAgD;EAC3D;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAKK,IAAM,6BAAkG;EAC7G,SAAS;IACP,uBAAuB;IACvB,qBAAqB;IACrB,0BAA0B;IAC1B,sBAAsB;IACtB,kBAAkB;IAClB,kBAAkB;IAClB,+BAA+B;;EAEjC,SAAS;IACP,uBAAuB;IACvB,qBAAqB;IACrB,0BAA0B;IAC1B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",
|
|
6
|
+
"names": ["path", "fs", "path", "path", "pathExists", "path", "fs", "path", "pmMaxVersionExceededMode", "fs", "path", "pmMaxVersionExceededMode", "normalizedCommand", "path", "path", "crypto", "baseline", "requireCloseReason", "normalizeStringList", "normalizePmMaxVersionExceededModeValue", "global", "pmMaxVersionExceededMode"]
|
|
7
|
+
}
|