@unbrained/pm-cli 2026.7.6 → 2026.7.8
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 +50 -0
- package/dist/cli/commands/annotation-command.d.ts +1 -0
- package/dist/cli/commands/annotation-command.js +29 -2
- package/dist/cli/commands/annotation-command.js.map +1 -1
- package/dist/cli/commands/comments.js +3 -4
- package/dist/cli/commands/comments.js.map +1 -1
- package/dist/cli/commands/completion.js +10 -2
- package/dist/cli/commands/completion.js.map +1 -1
- package/dist/cli/commands/context.d.ts +1 -0
- package/dist/cli/commands/context.js +4 -4
- package/dist/cli/commands/context.js.map +1 -1
- package/dist/cli/commands/extension/bundled-catalog.d.ts +3 -0
- package/dist/cli/commands/extension/bundled-catalog.js +38 -28
- package/dist/cli/commands/extension/bundled-catalog.js.map +1 -1
- package/dist/cli/commands/extension/install-sources.js +81 -18
- package/dist/cli/commands/extension/install-sources.js.map +1 -1
- package/dist/cli/commands/extension.d.ts +23 -19
- package/dist/cli/commands/extension.js +167 -57
- package/dist/cli/commands/extension.js.map +1 -1
- package/dist/cli/commands/health.js +9 -5
- package/dist/cli/commands/health.js.map +1 -1
- package/dist/cli/commands/learnings.js +5 -3
- package/dist/cli/commands/learnings.js.map +1 -1
- package/dist/cli/commands/notes.js +5 -3
- package/dist/cli/commands/notes.js.map +1 -1
- package/dist/cli/commands/reindex.js +4 -3
- package/dist/cli/commands/reindex.js.map +1 -1
- package/dist/cli/commands/search.js +4 -4
- package/dist/cli/commands/search.js.map +1 -1
- package/dist/cli/commands/test.d.ts +9 -0
- package/dist/cli/commands/test.js +144 -105
- package/dist/cli/commands/test.js.map +1 -1
- package/dist/cli/extension-command-help.js +10 -2
- package/dist/cli/extension-command-help.js.map +1 -1
- package/dist/cli/help-content.js +28 -2
- package/dist/cli/help-content.js.map +1 -1
- package/dist/cli/register-list-query.d.ts +1 -1
- package/dist/cli/register-list-query.js +19 -27
- package/dist/cli/register-list-query.js.map +1 -1
- package/dist/cli/register-operations.d.ts +0 -8
- package/dist/cli/register-operations.js +41 -46
- package/dist/cli/register-operations.js.map +1 -1
- package/dist/cli/register-setup.js +119 -13
- package/dist/cli/register-setup.js.map +1 -1
- package/dist/cli/registration-helpers.d.ts +5 -1
- package/dist/cli/registration-helpers.js +14 -2
- package/dist/cli/registration-helpers.js.map +1 -1
- package/dist/cli-bundle/chunks/append-CDPAYYSB.js +11 -0
- package/dist/cli-bundle/chunks/{gc-2DNMPXMC.js → append-RSPHC423.js} +8 -9
- package/dist/cli-bundle/chunks/{chunk-LK6XLOGP.js → chunk-2BVD4ZD2.js} +288 -233
- package/dist/cli-bundle/chunks/chunk-2BVD4ZD2.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-TKD5VCTD.js → chunk-2RADY7IB.js} +517 -195
- package/dist/cli-bundle/chunks/chunk-2RADY7IB.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-COSPOP7H.js → chunk-3FRNNVWY.js} +518 -196
- package/dist/cli-bundle/chunks/chunk-3FRNNVWY.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-24YG75HI.js → chunk-3FUXM574.js} +8 -8
- package/dist/cli-bundle/chunks/{chunk-IWVU4C2F.js → chunk-3SHDAKMF.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-O6AWCQRQ.js → chunk-3UXIMY62.js} +4 -6
- package/dist/cli-bundle/chunks/{chunk-O6AWCQRQ.js.map → chunk-3UXIMY62.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-MUH7A3FD.js → chunk-3V5C7PUH.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-ALFPSEWO.js → chunk-3YJDIJIE.js} +4 -6
- package/dist/cli-bundle/chunks/{chunk-ALFPSEWO.js.map → chunk-3YJDIJIE.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-EGY6JBQ3.js → chunk-4I7KS5ES.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-CRVYGJUI.js → chunk-4OCWJ2AP.js} +13 -17
- package/dist/cli-bundle/chunks/{chunk-CRVYGJUI.js.map → chunk-4OCWJ2AP.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-GJ7QC5DJ.js → chunk-5STY7NVM.js} +8 -8
- package/dist/cli-bundle/chunks/{chunk-JJP45OEI.js → chunk-5VAZHYVQ.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-CFB33L7W.js → chunk-6FU5BVRB.js} +12 -14
- package/dist/cli-bundle/chunks/{chunk-CFB33L7W.js.map → chunk-6FU5BVRB.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-22KBU3MW.js → chunk-6RR4XM5H.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-K46RF36U.js → chunk-6TD5QGIB.js} +7 -7
- package/dist/cli-bundle/chunks/chunk-6TD5QGIB.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-IX5BXEMX.js → chunk-6WCXSC5V.js} +12 -16
- package/dist/cli-bundle/chunks/{chunk-IX5BXEMX.js.map → chunk-6WCXSC5V.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-ZWBEPGD7.js → chunk-6ZKDMEVT.js} +7 -9
- package/dist/cli-bundle/chunks/{chunk-ZWBEPGD7.js.map → chunk-6ZKDMEVT.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-KUOOJR35.js → chunk-7QKSLAHB.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-MVSP7WGJ.js → chunk-7TBUV7XS.js} +8 -12
- package/dist/cli-bundle/chunks/{chunk-MVSP7WGJ.js.map → chunk-7TBUV7XS.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-NGXQ3PFT.js → chunk-7UCBLJDF.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-F3K4JGFD.js → chunk-AEOFBBWO.js} +6 -8
- package/dist/cli-bundle/chunks/{chunk-F3K4JGFD.js.map → chunk-AEOFBBWO.js.map} +1 -1
- package/dist/cli-bundle/chunks/chunk-ASMRSIDX.js +10498 -0
- package/dist/cli-bundle/chunks/chunk-ASMRSIDX.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-7DT4WSH2.js → chunk-BFNFTHWQ.js} +3 -3
- package/dist/cli-bundle/chunks/chunk-BPJ5NYSJ.js +5509 -0
- package/dist/cli-bundle/chunks/chunk-BPJ5NYSJ.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-Y46GD4IX.js → chunk-C3YU3TXX.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-VPIM42PC.js → chunk-C6XSTACC.js} +11 -7
- package/dist/cli-bundle/chunks/chunk-C6XSTACC.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-AZYGZGGI.js → chunk-CGDUIPJL.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-FT3QTERD.js → chunk-CXH7EMSB.js} +5 -7
- package/dist/cli-bundle/chunks/{chunk-FT3QTERD.js.map → chunk-CXH7EMSB.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-DMRNBQOI.js → chunk-D63PEJTB.js} +256 -36
- package/dist/cli-bundle/chunks/chunk-D63PEJTB.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-RCQZK2GO.js → chunk-D6J5673C.js} +7 -9
- package/dist/cli-bundle/chunks/{chunk-RCQZK2GO.js.map → chunk-D6J5673C.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-3UJRFJ5R.js → chunk-DUBC6TI3.js} +28 -34
- package/dist/cli-bundle/chunks/{chunk-3UJRFJ5R.js.map → chunk-DUBC6TI3.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-NC33K5ZS.js → chunk-EEJKHF7M.js} +7 -6
- package/dist/cli-bundle/chunks/{chunk-NC33K5ZS.js.map → chunk-EEJKHF7M.js.map} +2 -2
- package/dist/cli-bundle/chunks/{chunk-XG625QP4.js → chunk-EP2CKDS7.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-NZEHECMW.js → chunk-EYPIUFWJ.js} +24 -32
- package/dist/cli-bundle/chunks/{chunk-NZEHECMW.js.map → chunk-EYPIUFWJ.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-45FYNUFJ.js → chunk-F5DDGY6R.js} +6 -6
- package/dist/cli-bundle/chunks/{chunk-45FYNUFJ.js.map → chunk-F5DDGY6R.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-4ZBE5GUN.js → chunk-FFB3WITE.js} +10 -16
- package/dist/cli-bundle/chunks/{chunk-4ZBE5GUN.js.map → chunk-FFB3WITE.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-7D7OOEYG.js → chunk-FJR2S7S4.js} +10 -14
- package/dist/cli-bundle/chunks/{chunk-7D7OOEYG.js.map → chunk-FJR2S7S4.js.map} +1 -1
- package/dist/cli-bundle/chunks/chunk-FL625JJM.js +6792 -0
- package/dist/cli-bundle/chunks/chunk-FL625JJM.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-LPSSSDJR.js → chunk-FOJEBRDD.js} +16 -20
- package/dist/cli-bundle/chunks/{chunk-LPSSSDJR.js.map → chunk-FOJEBRDD.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-EOKXK3R3.js → chunk-G4FKP4ID.js} +1220 -398
- package/dist/cli-bundle/chunks/chunk-G4FKP4ID.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-GE44TQMC.js +6726 -0
- package/dist/cli-bundle/chunks/chunk-GE44TQMC.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-XUC7PI2H.js → chunk-GLMJLBLR.js} +6 -10
- package/dist/cli-bundle/chunks/{chunk-XUC7PI2H.js.map → chunk-GLMJLBLR.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-GANUTS7W.js → chunk-GO2X6ZRB.js} +4 -6
- package/dist/cli-bundle/chunks/{chunk-GANUTS7W.js.map → chunk-GO2X6ZRB.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-CFNGIXZP.js → chunk-GQOKFX2G.js} +22 -26
- package/dist/cli-bundle/chunks/{chunk-CFNGIXZP.js.map → chunk-GQOKFX2G.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-XHET7YUZ.js → chunk-GSQVQINP.js} +8 -10
- package/dist/cli-bundle/chunks/{chunk-XHET7YUZ.js.map → chunk-GSQVQINP.js.map} +1 -1
- package/dist/cli-bundle/chunks/chunk-HI27UADG.js +5434 -0
- package/dist/cli-bundle/chunks/chunk-HI27UADG.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-I36Y7PCE.js → chunk-HZZ3AC27.js} +6 -6
- package/dist/cli-bundle/chunks/{chunk-I36Y7PCE.js.map → chunk-HZZ3AC27.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-OGWQ2IEP.js → chunk-IINCZYM3.js} +8 -12
- package/dist/cli-bundle/chunks/{chunk-OGWQ2IEP.js.map → chunk-IINCZYM3.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-EKFNL33R.js → chunk-INOWVPUD.js} +37 -16
- package/dist/cli-bundle/chunks/chunk-INOWVPUD.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-4LELACOL.js → chunk-IYRG5AEC.js} +15 -23
- package/dist/cli-bundle/chunks/{chunk-4LELACOL.js.map → chunk-IYRG5AEC.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-MVYWGY2A.js → chunk-J6AD3GWC.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-D2XRLB55.js → chunk-JH5XDDYS.js} +14 -20
- package/dist/cli-bundle/chunks/{chunk-D2XRLB55.js.map → chunk-JH5XDDYS.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-HOVCGJSD.js → chunk-JYVPLGOW.js} +9 -11
- package/dist/cli-bundle/chunks/{chunk-HOVCGJSD.js.map → chunk-JYVPLGOW.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-MA4SM3QZ.js → chunk-K52C6YPA.js} +12 -18
- package/dist/cli-bundle/chunks/{chunk-MA4SM3QZ.js.map → chunk-K52C6YPA.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-R5BMJX33.js → chunk-KFL3XHMA.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-KMXVZ2P7.js +10320 -0
- package/dist/cli-bundle/chunks/chunk-KMXVZ2P7.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-4CJFCTLM.js → chunk-LD2NBQ5T.js} +6 -8
- package/dist/cli-bundle/chunks/{chunk-4CJFCTLM.js.map → chunk-LD2NBQ5T.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-6QBJLYBP.js → chunk-LG4N6YOK.js} +8 -7
- package/dist/cli-bundle/chunks/{chunk-6QBJLYBP.js.map → chunk-LG4N6YOK.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-L5PSPMZ4.js → chunk-LHDHS4Z6.js} +10 -14
- package/dist/cli-bundle/chunks/{chunk-L5PSPMZ4.js.map → chunk-LHDHS4Z6.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-M7JNBQAD.js → chunk-MCH6IKK7.js} +4 -6
- package/dist/cli-bundle/chunks/{chunk-M7JNBQAD.js.map → chunk-MCH6IKK7.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-57NWPFF2.js → chunk-MFLLULHU.js} +281 -233
- package/dist/cli-bundle/chunks/chunk-MFLLULHU.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-EGAP5OWD.js → chunk-ML27MHNM.js} +35 -17
- package/dist/cli-bundle/chunks/chunk-ML27MHNM.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-3N6RRO2Q.js → chunk-MYHFZNBO.js} +20 -24
- package/dist/cli-bundle/chunks/{chunk-3N6RRO2Q.js.map → chunk-MYHFZNBO.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-6LLVNJXT.js → chunk-NGBWEYNY.js} +12 -18
- package/dist/cli-bundle/chunks/{chunk-6LLVNJXT.js.map → chunk-NGBWEYNY.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-GDDAGPWJ.js → chunk-NRMDT4OV.js} +10 -14
- package/dist/cli-bundle/chunks/{chunk-GDDAGPWJ.js.map → chunk-NRMDT4OV.js.map} +1 -1
- package/dist/cli-bundle/chunks/chunk-NTOOEVJ4.js +5359 -0
- package/dist/cli-bundle/chunks/chunk-NTOOEVJ4.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-W6DYWXPQ.js → chunk-P2WE5KCU.js} +261 -34
- package/dist/cli-bundle/chunks/{chunk-W6DYWXPQ.js.map → chunk-P2WE5KCU.js.map} +4 -4
- package/dist/cli-bundle/chunks/{chunk-YN7Y6DQZ.js → chunk-PAWPLIWW.js} +14 -20
- package/dist/cli-bundle/chunks/{chunk-YN7Y6DQZ.js.map → chunk-PAWPLIWW.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-MWMVPCIE.js → chunk-PCBZ2VJD.js} +7 -7
- package/dist/cli-bundle/chunks/{chunk-ZSUS2OD3.js → chunk-PJPZTE7P.js} +1216 -387
- package/dist/cli-bundle/chunks/chunk-PJPZTE7P.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-B6DUFX6H.js → chunk-Q3CFSOQZ.js} +7 -7
- package/dist/cli-bundle/chunks/{chunk-NO442GWJ.js → chunk-QJZM5WO5.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-NO442GWJ.js.map → chunk-QJZM5WO5.js.map} +2 -2
- package/dist/cli-bundle/chunks/{chunk-QLMX7SRD.js → chunk-QLEH6FTQ.js} +6 -6
- package/dist/cli-bundle/chunks/chunk-QLEH6FTQ.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-GBAX2ZAQ.js → chunk-QYZMZD4L.js} +10 -12
- package/dist/cli-bundle/chunks/{chunk-GBAX2ZAQ.js.map → chunk-QYZMZD4L.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-W3DSJQIO.js → chunk-RDJXIAJB.js} +7 -11
- package/dist/cli-bundle/chunks/{chunk-W3DSJQIO.js.map → chunk-RDJXIAJB.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-7WBAJSS6.js → chunk-RFHLRMLQ.js} +6 -8
- package/dist/cli-bundle/chunks/{chunk-7WBAJSS6.js.map → chunk-RFHLRMLQ.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-SGMFPXKR.js → chunk-RL24NAUX.js} +10 -12
- package/dist/cli-bundle/chunks/{chunk-SGMFPXKR.js.map → chunk-RL24NAUX.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-46CUF5L6.js → chunk-RLHQ3G4M.js} +99 -51
- package/dist/cli-bundle/chunks/chunk-RLHQ3G4M.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-UH7T2DAX.js → chunk-SCJPFQQT.js} +12 -18
- package/dist/cli-bundle/chunks/{chunk-UH7T2DAX.js.map → chunk-SCJPFQQT.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-B6XS3R3O.js → chunk-SIQGG335.js} +12 -16
- package/dist/cli-bundle/chunks/{chunk-B6XS3R3O.js.map → chunk-SIQGG335.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-E42XTBSP.js → chunk-SN5X5GTU.js} +8 -12
- package/dist/cli-bundle/chunks/{chunk-E42XTBSP.js.map → chunk-SN5X5GTU.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-CL36D4PC.js → chunk-TKWTJGD6.js} +36 -15
- package/dist/cli-bundle/chunks/chunk-TKWTJGD6.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-VIIUS6N6.js → chunk-TR2C6V5T.js} +37 -19
- package/dist/cli-bundle/chunks/chunk-TR2C6V5T.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-TTCJCKUJ.js +5514 -0
- package/dist/cli-bundle/chunks/chunk-TTCJCKUJ.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-KGFUY7WN.js → chunk-TU5P744I.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-TULGS6X6.js → chunk-TUDAYIO7.js} +529 -46
- package/dist/cli-bundle/chunks/chunk-TUDAYIO7.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-MLIYFOE7.js → chunk-U72GF3I2.js} +12 -8
- package/dist/cli-bundle/chunks/chunk-U72GF3I2.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-ZZD4J5XY.js → chunk-UCRYCT5M.js} +30 -36
- package/dist/cli-bundle/chunks/{chunk-ZZD4J5XY.js.map → chunk-UCRYCT5M.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-JDDLOQAE.js → chunk-UEATYUZW.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-JVH7QBVV.js → chunk-UFNFHCAC.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-NB7RLQFW.js → chunk-UH6VFRV6.js} +5 -7
- package/dist/cli-bundle/chunks/{chunk-NB7RLQFW.js.map → chunk-UH6VFRV6.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-SQOIV3OQ.js → chunk-UIHDZS6X.js} +11 -15
- package/dist/cli-bundle/chunks/{chunk-SQOIV3OQ.js.map → chunk-UIHDZS6X.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-W572BIEB.js → chunk-UURYLDDC.js} +14 -18
- package/dist/cli-bundle/chunks/{chunk-W572BIEB.js.map → chunk-UURYLDDC.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-G64OCSKU.js → chunk-UVFJSKTF.js} +9 -13
- package/dist/cli-bundle/chunks/{chunk-G64OCSKU.js.map → chunk-UVFJSKTF.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-SMB7RV23.js → chunk-W2VFNVSJ.js} +6 -8
- package/dist/cli-bundle/chunks/{chunk-SMB7RV23.js.map → chunk-W2VFNVSJ.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-HIHMT6WS.js → chunk-WVEMZZCR.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-HIHMT6WS.js.map → chunk-WVEMZZCR.js.map} +2 -2
- package/dist/cli-bundle/chunks/{chunk-3VHSI5FL.js → chunk-XN5BEN2B.js} +94 -53
- package/dist/cli-bundle/chunks/chunk-XN5BEN2B.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-SCUR7K7N.js → chunk-XPSGJ4IV.js} +541 -44
- package/dist/cli-bundle/chunks/chunk-XPSGJ4IV.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-ZJ262CED.js → chunk-YQEKE4FO.js} +13 -21
- package/dist/cli-bundle/chunks/{chunk-ZJ262CED.js.map → chunk-YQEKE4FO.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-EBRZZ54H.js → chunk-YR5R4FMQ.js} +26 -34
- package/dist/cli-bundle/chunks/{chunk-EBRZZ54H.js.map → chunk-YR5R4FMQ.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-XB7KFVFI.js → chunk-YSRXFGNV.js} +7 -9
- package/dist/cli-bundle/chunks/{chunk-XB7KFVFI.js.map → chunk-YSRXFGNV.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-HFDADVJZ.js → chunk-YUCKM3MD.js} +10 -14
- package/dist/cli-bundle/chunks/{chunk-HFDADVJZ.js.map → chunk-YUCKM3MD.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-SQYJ4HF2.js → chunk-YUMNZS3X.js} +6 -8
- package/dist/cli-bundle/chunks/{chunk-SQYJ4HF2.js.map → chunk-YUMNZS3X.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-AGHMOTGM.js → chunk-Z2JQH2MG.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-ZGK4L4JM.js → chunk-Z6RLSNUX.js} +4 -6
- package/dist/cli-bundle/chunks/{chunk-ZGK4L4JM.js.map → chunk-Z6RLSNUX.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-Y4M7CPQP.js → chunk-ZMOPZFVT.js} +4 -4
- package/dist/cli-bundle/chunks/close-E3RLZSP2.js +12 -0
- package/dist/cli-bundle/chunks/{close-2SSSHHUZ.js → close-K6BFI3OX.js} +5 -9
- package/dist/cli-bundle/chunks/close-many-6NBL3PM4.js +26 -0
- package/dist/cli-bundle/chunks/close-many-X4YKS3RO.js +22 -0
- package/dist/cli-bundle/chunks/comments-PLFK5ZKK.js +17 -0
- package/dist/cli-bundle/chunks/comments-ZNOD5PTV.js +13 -0
- package/dist/cli-bundle/chunks/copy-F7BUFY4J.js +9 -0
- package/dist/cli-bundle/chunks/{copy-32ROBIDL.js → copy-VH3L4MN2.js} +4 -8
- package/dist/cli-bundle/chunks/create-AMBMYP6F.js +25 -0
- package/dist/cli-bundle/chunks/{create-E77SDCUP.js → create-TRIBYORN.js} +9 -14
- package/dist/cli-bundle/chunks/delete-6KQHZYIP.js +10 -0
- package/dist/cli-bundle/chunks/{delete-RA5KTCLB.js → delete-ZNXUNCZR.js} +4 -8
- package/dist/cli-bundle/chunks/deps-CVDY7FFK.js +13 -0
- package/dist/cli-bundle/chunks/{deps-32SU7HO5.js → deps-SZXQHV73.js} +4 -8
- package/dist/cli-bundle/chunks/{docs-RRUPT7O2.js → docs-DR74ITCD.js} +6 -10
- package/dist/cli-bundle/chunks/docs-WCVYY6I7.js +14 -0
- package/dist/cli-bundle/chunks/files-H5YCA74Z.js +18 -0
- package/dist/cli-bundle/chunks/{files-PYKR2UUG.js → files-QEFQ2M3H.js} +6 -10
- package/dist/cli-bundle/chunks/{contracts-NYPEW2G4.js → focus-55TRYSNA.js} +7 -9
- package/dist/cli-bundle/chunks/focus-N2QGNS5D.js +10 -0
- package/dist/cli-bundle/chunks/history-compact-GWQ4UOEI.js +21 -0
- package/dist/cli-bundle/chunks/{history-compact-3MNXLKAT.js → history-compact-JJZ4EFL3.js} +9 -13
- package/dist/cli-bundle/chunks/history-redact-4GJOLXCM.js +17 -0
- package/dist/cli-bundle/chunks/{history-redact-P6DYF55G.js → history-redact-TPPUT3A5.js} +7 -11
- package/dist/cli-bundle/chunks/history-repair-HVCVCGUF.js +19 -0
- package/dist/cli-bundle/chunks/{history-repair-ZJQFMWPD.js → history-repair-J7PIZ6ZP.js} +9 -13
- package/dist/cli-bundle/chunks/{append-BGML6VLD.js → learnings-KB6BT4NR.js} +9 -11
- package/dist/cli-bundle/chunks/learnings-YYY3U2Y7.js +13 -0
- package/dist/cli-bundle/chunks/notes-BGG7VL72.js +13 -0
- package/dist/cli-bundle/chunks/notes-ZTHXVOKM.js +17 -0
- package/dist/cli-bundle/chunks/{plan-CHVE7PBR.js → plan-CJPKFRBK.js} +10 -15
- package/dist/cli-bundle/chunks/plan-MK2QY3GA.js +24 -0
- package/dist/cli-bundle/chunks/{profile-ZXGSKBJD.js → profile-AQNHXOYA.js} +9 -13
- package/dist/cli-bundle/chunks/{profile-LD23PSI6.js → profile-HTBFINKQ.js} +9 -13
- package/dist/cli-bundle/chunks/{register-list-query-B42JCCOI.js → register-list-query-EEF33SUJ.js} +43 -34
- package/dist/cli-bundle/chunks/register-list-query-EEF33SUJ.js.map +1 -0
- package/dist/cli-bundle/chunks/{register-list-query-OEYQHFXO.js → register-list-query-S4FBWIWN.js} +42 -33
- package/dist/cli-bundle/chunks/register-list-query-S4FBWIWN.js.map +7 -0
- package/dist/cli-bundle/chunks/{register-mutation-3QXIHCQG.js → register-mutation-L5Q7AUDN.js} +34 -39
- package/dist/cli-bundle/chunks/{register-mutation-3QXIHCQG.js.map → register-mutation-L5Q7AUDN.js.map} +1 -1
- package/dist/cli-bundle/chunks/{register-mutation-IAEST26S.js → register-mutation-QFLRBCI7.js} +36 -41
- package/dist/cli-bundle/chunks/{register-mutation-IAEST26S.js.map → register-mutation-QFLRBCI7.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-5BMM6XQY.js → register-operations-HDE4FVW4.js} +79 -46
- package/dist/cli-bundle/chunks/register-operations-HDE4FVW4.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-Z3U3U5KD.js → register-operations-QDU43FCG.js} +78 -45
- package/dist/cli-bundle/chunks/register-operations-QDU43FCG.js.map +7 -0
- package/dist/cli-bundle/chunks/{register-setup-Q6KFNIOZ.js → register-setup-EGMTAXDC.js} +134 -32
- package/dist/cli-bundle/chunks/register-setup-EGMTAXDC.js.map +1 -0
- package/dist/cli-bundle/chunks/{register-setup-3ZVVX2VN.js → register-setup-PNIO3L2P.js} +133 -31
- package/dist/cli-bundle/chunks/register-setup-PNIO3L2P.js.map +7 -0
- package/dist/cli-bundle/chunks/{restore-5RQHAPMA.js → restore-BTBEZ5CK.js} +7 -11
- package/dist/cli-bundle/chunks/restore-EX4UUZL6.js +15 -0
- package/dist/cli-bundle/chunks/{schema-HBORFC6B.js → schema-DGSTYYQB.js} +6 -10
- package/dist/cli-bundle/chunks/{schema-245WW4G2.js → schema-HAIBEE24.js} +6 -10
- package/dist/cli-bundle/chunks/update-MP4XLU56.js +25 -0
- package/dist/cli-bundle/chunks/update-SDIRJGSY.js +21 -0
- package/dist/cli-bundle/chunks/update-many-34AIU6W7.js +31 -0
- package/dist/cli-bundle/chunks/update-many-JUPCNOKV.js +35 -0
- package/dist/cli-bundle/main.js +56 -32
- package/dist/cli-bundle/main.js.map +2 -2
- package/dist/cli-bundle/sdk-runtime.js +161 -107
- package/dist/cli-bundle/sdk-testing.js +7 -8
- package/dist/cli-bundle/sdk.js +154 -117
- package/dist/cli-bundle/sdk.js.map +2 -2
- package/dist/core/extensions/extension-types.d.ts +1 -0
- package/dist/core/extensions/extension-types.js +2 -2
- package/dist/core/extensions/extension-types.js.map +1 -1
- package/dist/core/extensions/loader.js +268 -231
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/history/drift-scan.js +3 -8
- package/dist/core/history/drift-scan.js.map +1 -1
- package/dist/core/output/mutation-projection.js +11 -5
- package/dist/core/output/mutation-projection.js.map +1 -1
- package/dist/core/search/cache.js +3 -3
- package/dist/core/search/cache.js.map +1 -1
- package/dist/core/search/semantic-defaults.d.ts +2 -0
- package/dist/core/search/semantic-defaults.js +11 -4
- package/dist/core/search/semantic-defaults.js.map +1 -1
- package/dist/core/search/vector-stores.d.ts +1 -1
- package/dist/core/search/vector-stores.js +33 -7
- package/dist/core/search/vector-stores.js.map +1 -1
- package/dist/mcp/server.d.ts +1 -1
- package/dist/sdk/cli-contracts/commander-types.js +3 -3
- package/dist/sdk/cli-contracts/commander-types.js.map +1 -1
- package/dist/sdk/cli-contracts/flag-contracts.js +12 -8
- package/dist/sdk/cli-contracts/flag-contracts.js.map +1 -1
- package/dist/sdk/cli-contracts/tool-parameter-tables.js +10 -2
- package/dist/sdk/cli-contracts/tool-parameter-tables.js.map +1 -1
- package/dist/sdk/cli-contracts/tool-schema.js +14 -8
- package/dist/sdk/cli-contracts/tool-schema.js.map +1 -1
- package/dist/sdk/index.d.ts +1 -1
- package/dist/sdk/index.js +3 -3
- package/dist/sdk/index.js.map +1 -1
- package/dist/sdk/runtime.d.ts +282 -8
- package/dist/sdk/runtime.js +453 -14
- package/dist/sdk/runtime.js.map +1 -1
- package/dist/sdk/start-task-status.d.ts +13 -0
- package/dist/sdk/start-task-status.js +19 -0
- package/dist/sdk/start-task-status.js.map +1 -0
- package/docs/COMMANDS.md +10 -1
- package/docs/EXTENSIONS.md +7 -20
- package/docs/RELEASING.md +6 -0
- package/docs/SDK.md +65 -0
- package/docs/TESTING.md +3 -0
- package/package.json +2 -1
- package/dist/cli-bundle/chunks/activity-WJCGCYPU.js +0 -18
- package/dist/cli-bundle/chunks/activity-Z6QUAUSG.js +0 -22
- package/dist/cli-bundle/chunks/aggregate-BDM6EIAR.js +0 -25
- package/dist/cli-bundle/chunks/aggregate-VQ2DHU3S.js +0 -21
- package/dist/cli-bundle/chunks/append-RKJYPU74.js +0 -15
- package/dist/cli-bundle/chunks/chunk-2XG4IZON.js +0 -218
- package/dist/cli-bundle/chunks/chunk-2XG4IZON.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-37E72CNS.js +0 -217
- package/dist/cli-bundle/chunks/chunk-37E72CNS.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-3GCS5SKL.js +0 -228
- package/dist/cli-bundle/chunks/chunk-3GCS5SKL.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-3KTN6IBA.js +0 -2330
- package/dist/cli-bundle/chunks/chunk-3KTN6IBA.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-3VHSI5FL.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-425E4QL5.js +0 -278
- package/dist/cli-bundle/chunks/chunk-425E4QL5.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-46CUF5L6.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-4BU75MF4.js +0 -87
- package/dist/cli-bundle/chunks/chunk-4BU75MF4.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-4HIFVN7N.js +0 -249
- package/dist/cli-bundle/chunks/chunk-4HIFVN7N.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-4IWYTWGF.js +0 -819
- package/dist/cli-bundle/chunks/chunk-4IWYTWGF.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-4MZVRJOE.js +0 -279
- package/dist/cli-bundle/chunks/chunk-4MZVRJOE.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-57NWPFF2.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-5AJXHQM7.js +0 -268
- package/dist/cli-bundle/chunks/chunk-5AJXHQM7.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-5BMM6XQY.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-5GZ7TDD6.js +0 -1868
- package/dist/cli-bundle/chunks/chunk-5GZ7TDD6.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-5VAA4YHR.js +0 -1749
- package/dist/cli-bundle/chunks/chunk-5VAA4YHR.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-64YKRTSV.js +0 -1961
- package/dist/cli-bundle/chunks/chunk-64YKRTSV.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-7C2O74AE.js +0 -23
- package/dist/cli-bundle/chunks/chunk-7C2O74AE.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-B7FRNMYN.js +0 -421
- package/dist/cli-bundle/chunks/chunk-B7FRNMYN.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-C5JBZRPU.js +0 -1985
- package/dist/cli-bundle/chunks/chunk-C5JBZRPU.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-CL36D4PC.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-COSPOP7H.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-COWTDV6B.js +0 -3461
- package/dist/cli-bundle/chunks/chunk-COWTDV6B.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-DEWEK6AN.js +0 -1858
- package/dist/cli-bundle/chunks/chunk-DEWEK6AN.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-DMRNBQOI.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-E3SZTQ4K.js +0 -1932
- package/dist/cli-bundle/chunks/chunk-E3SZTQ4K.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-EGAP5OWD.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-EKFNL33R.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-ENGQOEUY.js +0 -1704
- package/dist/cli-bundle/chunks/chunk-ENGQOEUY.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-EOKXK3R3.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-FLZSGSQR.js +0 -231
- package/dist/cli-bundle/chunks/chunk-FLZSGSQR.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-FOUYJE4A.js +0 -2090
- package/dist/cli-bundle/chunks/chunk-FOUYJE4A.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-G24G7ZAV.js +0 -1570
- package/dist/cli-bundle/chunks/chunk-G24G7ZAV.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-GEYZ4G4O.js +0 -239
- package/dist/cli-bundle/chunks/chunk-GEYZ4G4O.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-GPLPTGOV.js +0 -530
- package/dist/cli-bundle/chunks/chunk-GPLPTGOV.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-GZRDYONU.js +0 -1005
- package/dist/cli-bundle/chunks/chunk-GZRDYONU.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-HN6NSXNW.js +0 -277
- package/dist/cli-bundle/chunks/chunk-HN6NSXNW.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-IQNVQHOP.js +0 -309
- package/dist/cli-bundle/chunks/chunk-IQNVQHOP.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-JINYH2DB.js +0 -371
- package/dist/cli-bundle/chunks/chunk-JINYH2DB.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-JQXPY7DN.js +0 -2257
- package/dist/cli-bundle/chunks/chunk-JQXPY7DN.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-K46RF36U.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-KERMZVY5.js +0 -371
- package/dist/cli-bundle/chunks/chunk-KERMZVY5.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-KSRUHV2H.js +0 -76
- package/dist/cli-bundle/chunks/chunk-KSRUHV2H.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-LK6XLOGP.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-LP3HSFZ2.js +0 -140
- package/dist/cli-bundle/chunks/chunk-LP3HSFZ2.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-MAWDPCJW.js +0 -1601
- package/dist/cli-bundle/chunks/chunk-MAWDPCJW.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-MFAZSEM5.js +0 -1031
- package/dist/cli-bundle/chunks/chunk-MFAZSEM5.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-MFSCBT5Q.js +0 -995
- package/dist/cli-bundle/chunks/chunk-MFSCBT5Q.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-ML5X7DP2.js +0 -296
- package/dist/cli-bundle/chunks/chunk-ML5X7DP2.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-MLIYFOE7.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-MR6FJ7LL.js +0 -2043
- package/dist/cli-bundle/chunks/chunk-MR6FJ7LL.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-MXYA5SAJ.js +0 -2033
- package/dist/cli-bundle/chunks/chunk-MXYA5SAJ.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-N745W3B3.js +0 -1604
- package/dist/cli-bundle/chunks/chunk-N745W3B3.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-NMP5I3I5.js +0 -1615
- package/dist/cli-bundle/chunks/chunk-NMP5I3I5.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-NNHHXJB2.js +0 -20
- package/dist/cli-bundle/chunks/chunk-NNHHXJB2.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-PZUGEOPS.js +0 -143
- package/dist/cli-bundle/chunks/chunk-PZUGEOPS.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-QLMX7SRD.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-QX6HM775.js +0 -398
- package/dist/cli-bundle/chunks/chunk-QX6HM775.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-QZ342C63.js +0 -220
- package/dist/cli-bundle/chunks/chunk-QZ342C63.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-R2EMWY7Q.js +0 -368
- package/dist/cli-bundle/chunks/chunk-R2EMWY7Q.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-RFNYTESG.js +0 -520
- package/dist/cli-bundle/chunks/chunk-RFNYTESG.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-RKQOO2UM.js +0 -79
- package/dist/cli-bundle/chunks/chunk-RKQOO2UM.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-RQLT6ZWB.js +0 -282
- package/dist/cli-bundle/chunks/chunk-RQLT6ZWB.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-S3JS6YVZ.js +0 -274
- package/dist/cli-bundle/chunks/chunk-S3JS6YVZ.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-SCUR7K7N.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-SHQY2IDC.js +0 -1977
- package/dist/cli-bundle/chunks/chunk-SHQY2IDC.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-SPZ6DOGY.js +0 -1041
- package/dist/cli-bundle/chunks/chunk-SPZ6DOGY.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-T42JWV3F.js +0 -822
- package/dist/cli-bundle/chunks/chunk-T42JWV3F.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-TKD5VCTD.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-TULGS6X6.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-TZXRBVAM.js +0 -2306
- package/dist/cli-bundle/chunks/chunk-TZXRBVAM.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-VIIUS6N6.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-VPIM42PC.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-VQRSPVME.js +0 -368
- package/dist/cli-bundle/chunks/chunk-VQRSPVME.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-VY3VQ22F.js +0 -84
- package/dist/cli-bundle/chunks/chunk-VY3VQ22F.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-WG34ZNQQ.js +0 -3423
- package/dist/cli-bundle/chunks/chunk-WG34ZNQQ.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-WLSM645P.js +0 -2247
- package/dist/cli-bundle/chunks/chunk-WLSM645P.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-WRTENIX3.js +0 -215
- package/dist/cli-bundle/chunks/chunk-WRTENIX3.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-WSBLYDWV.js +0 -388
- package/dist/cli-bundle/chunks/chunk-WSBLYDWV.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-XC5BURG2.js +0 -306
- package/dist/cli-bundle/chunks/chunk-XC5BURG2.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-XDB7RWQT.js +0 -424
- package/dist/cli-bundle/chunks/chunk-XDB7RWQT.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-Y6BK55A3.js +0 -2128
- package/dist/cli-bundle/chunks/chunk-Y6BK55A3.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-Z3U3U5KD.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-ZO3XKAOP.js +0 -299
- package/dist/cli-bundle/chunks/chunk-ZO3XKAOP.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-ZSUS2OD3.js.map +0 -7
- package/dist/cli-bundle/chunks/claim-RFS7BROJ.js +0 -19
- package/dist/cli-bundle/chunks/claim-XP5AWZ5H.js +0 -23
- package/dist/cli-bundle/chunks/close-GEANHQ2J.js +0 -16
- package/dist/cli-bundle/chunks/close-many-CMZW7ITN.js +0 -31
- package/dist/cli-bundle/chunks/close-many-ZFDIG6M7.js +0 -27
- package/dist/cli-bundle/chunks/comments-MFSYVNNU.js +0 -21
- package/dist/cli-bundle/chunks/comments-XUBPXDYX.js +0 -17
- package/dist/cli-bundle/chunks/config-D7XQMONX.js +0 -18
- package/dist/cli-bundle/chunks/config-T4FHBSYN.js +0 -22
- package/dist/cli-bundle/chunks/context-DIU275XI.js +0 -48
- package/dist/cli-bundle/chunks/context-JCOYB4LZ.js +0 -44
- package/dist/cli-bundle/chunks/contracts-BVO7CSLK.js +0 -12
- package/dist/cli-bundle/chunks/copy-NAGLGMHZ.js +0 -13
- package/dist/cli-bundle/chunks/create-4V7SWNBB.js +0 -30
- package/dist/cli-bundle/chunks/delete-NQI5OSKN.js +0 -14
- package/dist/cli-bundle/chunks/deps-T7SCWXEX.js +0 -17
- package/dist/cli-bundle/chunks/docs-WL2IWGWV.js +0 -18
- package/dist/cli-bundle/chunks/eval-NF2J5SHR.js +0 -23
- package/dist/cli-bundle/chunks/eval-SKDT3MZU.js +0 -27
- package/dist/cli-bundle/chunks/extension-LAXKCAYE.js +0 -42
- package/dist/cli-bundle/chunks/extension-ZISPBRBC.js +0 -38
- package/dist/cli-bundle/chunks/files-EWRQHGIS.js +0 -22
- package/dist/cli-bundle/chunks/focus-4T7TM4MT.js +0 -18
- package/dist/cli-bundle/chunks/focus-L3YUASOD.js +0 -14
- package/dist/cli-bundle/chunks/gc-2PCTYYRI.js +0 -12
- package/dist/cli-bundle/chunks/get-7DMITJ3G.js +0 -23
- package/dist/cli-bundle/chunks/get-VKQXCXLL.js +0 -19
- package/dist/cli-bundle/chunks/health-CVSTAR2F.js +0 -31
- package/dist/cli-bundle/chunks/health-TV3GKTFN.js +0 -35
- package/dist/cli-bundle/chunks/history-D4JUX5XV.js +0 -20
- package/dist/cli-bundle/chunks/history-D4JUX5XV.js.map +0 -7
- package/dist/cli-bundle/chunks/history-LQ2UWZTE.js +0 -24
- package/dist/cli-bundle/chunks/history-LQ2UWZTE.js.map +0 -1
- package/dist/cli-bundle/chunks/history-compact-3MNXLKAT.js.map +0 -1
- package/dist/cli-bundle/chunks/history-compact-QWEO32FP.js +0 -25
- package/dist/cli-bundle/chunks/history-compact-QWEO32FP.js.map +0 -7
- package/dist/cli-bundle/chunks/history-redact-3OIVBVIY.js +0 -21
- package/dist/cli-bundle/chunks/history-redact-3OIVBVIY.js.map +0 -7
- package/dist/cli-bundle/chunks/history-redact-P6DYF55G.js.map +0 -1
- package/dist/cli-bundle/chunks/history-repair-I3E73UGQ.js +0 -23
- package/dist/cli-bundle/chunks/history-repair-I3E73UGQ.js.map +0 -7
- package/dist/cli-bundle/chunks/history-repair-ZJQFMWPD.js.map +0 -1
- package/dist/cli-bundle/chunks/init-C3LJPWQZ.js +0 -30
- package/dist/cli-bundle/chunks/init-C3LJPWQZ.js.map +0 -1
- package/dist/cli-bundle/chunks/init-J3DPGWQI.js +0 -26
- package/dist/cli-bundle/chunks/init-J3DPGWQI.js.map +0 -7
- package/dist/cli-bundle/chunks/learnings-5BO2SNDW.js +0 -21
- package/dist/cli-bundle/chunks/learnings-5BO2SNDW.js.map +0 -1
- package/dist/cli-bundle/chunks/learnings-OGP4JB4I.js +0 -17
- package/dist/cli-bundle/chunks/learnings-OGP4JB4I.js.map +0 -7
- package/dist/cli-bundle/chunks/list-O5NZVSPN.js +0 -36
- package/dist/cli-bundle/chunks/list-O5NZVSPN.js.map +0 -1
- package/dist/cli-bundle/chunks/list-Z55YCNTC.js +0 -32
- package/dist/cli-bundle/chunks/list-Z55YCNTC.js.map +0 -7
- package/dist/cli-bundle/chunks/next-GBNTGXFC.js +0 -28
- package/dist/cli-bundle/chunks/next-GBNTGXFC.js.map +0 -7
- package/dist/cli-bundle/chunks/next-QKW7PTKE.js +0 -32
- package/dist/cli-bundle/chunks/next-QKW7PTKE.js.map +0 -1
- package/dist/cli-bundle/chunks/notes-R5FZTKWF.js +0 -17
- package/dist/cli-bundle/chunks/notes-R5FZTKWF.js.map +0 -7
- package/dist/cli-bundle/chunks/notes-WCGIULVG.js +0 -21
- package/dist/cli-bundle/chunks/notes-WCGIULVG.js.map +0 -1
- package/dist/cli-bundle/chunks/plan-ADISFYH4.js +0 -29
- package/dist/cli-bundle/chunks/plan-ADISFYH4.js.map +0 -7
- package/dist/cli-bundle/chunks/plan-CHVE7PBR.js.map +0 -1
- package/dist/cli-bundle/chunks/profile-LD23PSI6.js.map +0 -7
- package/dist/cli-bundle/chunks/profile-ZXGSKBJD.js.map +0 -1
- package/dist/cli-bundle/chunks/register-list-query-B42JCCOI.js.map +0 -1
- package/dist/cli-bundle/chunks/register-list-query-OEYQHFXO.js.map +0 -7
- package/dist/cli-bundle/chunks/register-operations-I3M3U7DS.js +0 -19
- package/dist/cli-bundle/chunks/register-operations-I3M3U7DS.js.map +0 -7
- package/dist/cli-bundle/chunks/register-operations-UHKENLZV.js +0 -23
- package/dist/cli-bundle/chunks/register-operations-UHKENLZV.js.map +0 -1
- package/dist/cli-bundle/chunks/register-setup-3ZVVX2VN.js.map +0 -7
- package/dist/cli-bundle/chunks/register-setup-Q6KFNIOZ.js.map +0 -1
- package/dist/cli-bundle/chunks/restore-5RQHAPMA.js.map +0 -1
- package/dist/cli-bundle/chunks/restore-PNEIBBLW.js +0 -19
- package/dist/cli-bundle/chunks/restore-PNEIBBLW.js.map +0 -7
- package/dist/cli-bundle/chunks/scheduling-shortcuts-4G56YHVQ.js +0 -29
- package/dist/cli-bundle/chunks/scheduling-shortcuts-4G56YHVQ.js.map +0 -1
- package/dist/cli-bundle/chunks/scheduling-shortcuts-75DULBYP.js +0 -25
- package/dist/cli-bundle/chunks/scheduling-shortcuts-75DULBYP.js.map +0 -7
- package/dist/cli-bundle/chunks/schema-245WW4G2.js.map +0 -1
- package/dist/cli-bundle/chunks/schema-HBORFC6B.js.map +0 -7
- package/dist/cli-bundle/chunks/search-AOZC5SIK.js +0 -34
- package/dist/cli-bundle/chunks/search-AOZC5SIK.js.map +0 -7
- package/dist/cli-bundle/chunks/search-DRXPGHD7.js +0 -38
- package/dist/cli-bundle/chunks/search-DRXPGHD7.js.map +0 -1
- package/dist/cli-bundle/chunks/stats-NJG4NLHG.js +0 -21
- package/dist/cli-bundle/chunks/stats-NJG4NLHG.js.map +0 -1
- package/dist/cli-bundle/chunks/stats-RG6AG4N2.js +0 -17
- package/dist/cli-bundle/chunks/stats-RG6AG4N2.js.map +0 -7
- package/dist/cli-bundle/chunks/telemetry-HQC2JJIF.js +0 -14
- package/dist/cli-bundle/chunks/telemetry-HQC2JJIF.js.map +0 -7
- package/dist/cli-bundle/chunks/telemetry-MPNL3HHY.js +0 -18
- package/dist/cli-bundle/chunks/telemetry-MPNL3HHY.js.map +0 -1
- package/dist/cli-bundle/chunks/test-6CMOCWUC.js +0 -39
- package/dist/cli-bundle/chunks/test-6CMOCWUC.js.map +0 -7
- package/dist/cli-bundle/chunks/test-RI7XHBZL.js +0 -43
- package/dist/cli-bundle/chunks/test-RI7XHBZL.js.map +0 -1
- package/dist/cli-bundle/chunks/test-all-7R7YRZIA.js +0 -29
- package/dist/cli-bundle/chunks/test-all-7R7YRZIA.js.map +0 -7
- package/dist/cli-bundle/chunks/test-all-QEIORFYW.js +0 -33
- package/dist/cli-bundle/chunks/test-all-QEIORFYW.js.map +0 -1
- package/dist/cli-bundle/chunks/test-runs-5Y2BOU2S.js +0 -28
- package/dist/cli-bundle/chunks/test-runs-5Y2BOU2S.js.map +0 -1
- package/dist/cli-bundle/chunks/test-runs-PVGC3GRZ.js +0 -24
- package/dist/cli-bundle/chunks/test-runs-PVGC3GRZ.js.map +0 -7
- package/dist/cli-bundle/chunks/update-QVJDFEAP.js +0 -30
- package/dist/cli-bundle/chunks/update-QVJDFEAP.js.map +0 -1
- package/dist/cli-bundle/chunks/update-VQVHAY6X.js +0 -26
- package/dist/cli-bundle/chunks/update-VQVHAY6X.js.map +0 -7
- package/dist/cli-bundle/chunks/update-many-S7XWBSB3.js +0 -37
- package/dist/cli-bundle/chunks/update-many-S7XWBSB3.js.map +0 -7
- package/dist/cli-bundle/chunks/update-many-YIYW6XQ6.js +0 -41
- package/dist/cli-bundle/chunks/update-many-YIYW6XQ6.js.map +0 -1
- package/dist/cli-bundle/chunks/upgrade-OPRXA56R.js +0 -24
- package/dist/cli-bundle/chunks/upgrade-OPRXA56R.js.map +0 -7
- package/dist/cli-bundle/chunks/upgrade-WH4BTQLX.js +0 -28
- package/dist/cli-bundle/chunks/upgrade-WH4BTQLX.js.map +0 -1
- package/dist/cli-bundle/chunks/validate-4NTXSB62.js +0 -36
- package/dist/cli-bundle/chunks/validate-4NTXSB62.js.map +0 -1
- package/dist/cli-bundle/chunks/validate-MUFXQZMI.js +0 -32
- package/dist/cli-bundle/chunks/validate-MUFXQZMI.js.map +0 -7
- /package/dist/cli-bundle/chunks/{activity-WJCGCYPU.js.map → append-CDPAYYSB.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{activity-Z6QUAUSG.js.map → append-RSPHC423.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-24YG75HI.js.map → chunk-3FUXM574.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-IWVU4C2F.js.map → chunk-3SHDAKMF.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-MUH7A3FD.js.map → chunk-3V5C7PUH.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-EGY6JBQ3.js.map → chunk-4I7KS5ES.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-GJ7QC5DJ.js.map → chunk-5STY7NVM.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-JJP45OEI.js.map → chunk-5VAZHYVQ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-22KBU3MW.js.map → chunk-6RR4XM5H.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-KUOOJR35.js.map → chunk-7QKSLAHB.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-NGXQ3PFT.js.map → chunk-7UCBLJDF.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-7DT4WSH2.js.map → chunk-BFNFTHWQ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-Y46GD4IX.js.map → chunk-C3YU3TXX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-AZYGZGGI.js.map → chunk-CGDUIPJL.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-XG625QP4.js.map → chunk-EP2CKDS7.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-MVYWGY2A.js.map → chunk-J6AD3GWC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-R5BMJX33.js.map → chunk-KFL3XHMA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-MWMVPCIE.js.map → chunk-PCBZ2VJD.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-B6DUFX6H.js.map → chunk-Q3CFSOQZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-KGFUY7WN.js.map → chunk-TU5P744I.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-JDDLOQAE.js.map → chunk-UEATYUZW.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-JVH7QBVV.js.map → chunk-UFNFHCAC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-AGHMOTGM.js.map → chunk-Z2JQH2MG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-Y4M7CPQP.js.map → chunk-ZMOPZFVT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{aggregate-VQ2DHU3S.js.map → close-E3RLZSP2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{aggregate-BDM6EIAR.js.map → close-K6BFI3OX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{append-BGML6VLD.js.map → close-many-6NBL3PM4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{append-RKJYPU74.js.map → close-many-X4YKS3RO.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{claim-XP5AWZ5H.js.map → comments-PLFK5ZKK.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{claim-RFS7BROJ.js.map → comments-ZNOD5PTV.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-GEANHQ2J.js.map → copy-F7BUFY4J.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-2SSSHHUZ.js.map → copy-VH3L4MN2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-many-ZFDIG6M7.js.map → create-AMBMYP6F.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-many-CMZW7ITN.js.map → create-TRIBYORN.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{comments-XUBPXDYX.js.map → delete-6KQHZYIP.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{comments-MFSYVNNU.js.map → delete-ZNXUNCZR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{config-D7XQMONX.js.map → deps-CVDY7FFK.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{config-T4FHBSYN.js.map → deps-SZXQHV73.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{context-DIU275XI.js.map → docs-DR74ITCD.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{context-JCOYB4LZ.js.map → docs-WCVYY6I7.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{contracts-BVO7CSLK.js.map → files-H5YCA74Z.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{contracts-NYPEW2G4.js.map → files-QEFQ2M3H.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{copy-32ROBIDL.js.map → focus-55TRYSNA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{copy-NAGLGMHZ.js.map → focus-N2QGNS5D.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{create-4V7SWNBB.js.map → history-compact-GWQ4UOEI.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{create-E77SDCUP.js.map → history-compact-JJZ4EFL3.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{delete-NQI5OSKN.js.map → history-redact-4GJOLXCM.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{delete-RA5KTCLB.js.map → history-redact-TPPUT3A5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{deps-T7SCWXEX.js.map → history-repair-HVCVCGUF.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{deps-32SU7HO5.js.map → history-repair-J7PIZ6ZP.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{docs-RRUPT7O2.js.map → learnings-KB6BT4NR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{docs-WL2IWGWV.js.map → learnings-YYY3U2Y7.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{eval-NF2J5SHR.js.map → notes-BGG7VL72.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{eval-SKDT3MZU.js.map → notes-ZTHXVOKM.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{extension-LAXKCAYE.js.map → plan-CJPKFRBK.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{extension-ZISPBRBC.js.map → plan-MK2QY3GA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{files-PYKR2UUG.js.map → profile-AQNHXOYA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{files-EWRQHGIS.js.map → profile-HTBFINKQ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{focus-4T7TM4MT.js.map → restore-BTBEZ5CK.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{focus-L3YUASOD.js.map → restore-EX4UUZL6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{gc-2PCTYYRI.js.map → schema-DGSTYYQB.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{gc-2DNMPXMC.js.map → schema-HAIBEE24.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{get-7DMITJ3G.js.map → update-MP4XLU56.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{get-VKQXCXLL.js.map → update-SDIRJGSY.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{health-CVSTAR2F.js.map → update-many-34AIU6W7.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{health-TV3GKTFN.js.map → update-many-JUPCNOKV.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extension.js","sources":["cli/commands/extension.ts"],"sourceRoot":"/","sourcesContent":["/**\n * @module cli/commands/extension\n *\n * Implements the pm extension command surface and its agent-facing runtime behavior.\n */\nimport { execFile } from \"node:child_process\";\nimport fs from \"node:fs/promises\";\nimport os from \"node:os\";\nimport path from \"node:path\";\nimport { promisify } from \"node:util\";\nimport { activateExtensions, loadExtensions, nextExtensionReloadToken } from \"../../core/extensions/index.js\";\nimport { resolveExtensionRoots } from \"../../core/extensions/loader.js\";\nimport { pathExists } from \"../../core/fs/fs-utils.js\";\nimport { isPathWithinDirectory } from \"../../core/fs/path-utils.js\";\nimport { collectPackageExtensionDirectories } from \"../../core/packages/manifest.js\";\nimport { EXIT_CODE } from \"../../core/shared/constants.js\";\nimport type { GlobalOptions } from \"../../core/shared/command-types.js\";\nimport { PmCliError } from \"../../core/shared/errors.js\";\nimport { levenshteinDistanceWithinLimit } from \"../../core/shared/levenshtein.js\";\nimport { nowIso } from \"../../core/shared/time.js\";\nimport { resolveGlobalPmRoot, resolvePmRoot } from \"../../core/store/paths.js\";\nimport { readSettings, writeSettings } from \"../../core/store/settings.js\";\nimport { ensureTypeFolderScaffold } from \"./schema.js\";\nimport type { PmSettings } from \"../../types/index.js\";\n// Cohesive helper groups now live in ./extension/* sibling modules. They are\n// imported for the command wiring that stays here and re-exported below so\n// existing import sites (sdk barrels, upgrade.ts, tests) keep importing the\n// public surface (runExtension, managed-state read/write, install-source\n// parsing, …) from \"./extension.js\" unchanged.\nimport {\n normalizeStringList,\n normalizeExtensionNameForMatch,\n normalizeManagedDirectoryName,\n parseExtensionManifest,\n validateExtensionDirectory,\n} from \"./extension/shared.js\";\nimport {\n sortManagedEntries,\n managedExtensionSourcesEquivalent,\n readManagedExtensionState,\n writeManagedExtensionState,\n upsertManagedEntry,\n resolveManagedExtensionStatePath,\n type ManagedExtensionSource,\n type ManagedExtensionRecord,\n type ManagedExtensionState,\n} from \"./extension/managed-state.js\";\nimport {\n parseExtensionInstallSource,\n resolveInstallSource,\n areDirectoriesEquivalent,\n runGitCommand,\n} from \"./extension/install-sources.js\";\nimport {\n resolveBundledExtensionAliasSource,\n resolveBundledPackageNpmName,\n isBundledPackageInstallAllTarget,\n listBundledPackageAliases,\n resolveBundledAliasManifestName,\n buildBundledPackageCatalog,\n} from \"./extension/bundled-catalog.js\";\nimport { scaffoldExtensionProject } from \"./extension/scaffold.js\";\nimport { buildExtensionDescribeResult } from \"./extension/describe.js\";\nimport {\n applyDoctorRuntimeActivationState,\n classifyDoctorLoadFailureWarnings,\n classifyDoctorActivationFailureWarnings,\n classifyUnusedCapabilityWarnings,\n buildExtensionTriageSummary,\n parseDoctorDetailMode,\n collectUnknownCapabilityGuidance,\n buildCapabilityContractMetadata,\n buildDoctorConsistencySummary,\n} from \"./extension/doctor.js\";\n// Re-export the public surface that lives in sibling modules but was previously\n// exported from this file (used by sdk barrels, upgrade.ts, and tests).\nexport {\n parseExtensionManifest,\n validateExtensionDirectory,\n readManagedExtensionState,\n writeManagedExtensionState,\n resolveManagedExtensionStatePath,\n parseExtensionInstallSource,\n};\nexport type {\n ManagedExtensionSource,\n ManagedExtensionRecord,\n ManagedExtensionState,\n};\nexport type { ManagedExtensionStateReadResult } from \"./extension/managed-state.js\";\n\nconst execFileAsync = promisify(execFile);\nconst EXTENSION_INSTALL_COPY_ATTEMPTS = 3;\nconst EXTENSION_INSTALL_LOCK_ATTEMPTS = 120;\nconst EXTENSION_INSTALL_LOCK_DELAY_MS = 250;\nconst EXTENSION_INSTALL_LOCK_STALE_MS = 120_000;\n\n/**\n * Restricts extension command action values accepted by command, SDK, and storage contracts.\n */\nexport type ExtensionCommandAction =\n | \"install\"\n | \"uninstall\"\n | \"explore\"\n | \"manage\"\n | \"describe\"\n | \"reload\"\n | \"doctor\"\n | \"catalog\"\n | \"adopt\"\n | \"adopt-all\"\n | \"activate\"\n | \"deactivate\"\n | \"init\";\n\nconst LIFECYCLE_ACTION_TARGETS = [\n [\"install\", \"install\", \"--install\"],\n [\"uninstall\", \"uninstall\", \"--uninstall\"],\n [\"explore\", \"explore\", \"--explore\"],\n [\"list\", \"explore\", \"--explore\"],\n [\"manage\", \"manage\", \"--manage\"],\n [\"describe\", \"describe\", \"--describe\"],\n [\"reload\", \"reload\", \"--reload\"],\n [\"doctor\", \"doctor\", \"--doctor\"],\n [\"catalog\", \"catalog\", \"--catalog\"],\n [\"init\", \"init\", \"--init\"],\n [\"scaffold\", \"init\", \"--scaffold\"],\n [\"adopt\", \"adopt\", \"--adopt\"],\n [\"adopt-all\", \"adopt-all\", \"--adopt-all\"],\n [\"activate\", \"activate\", \"--activate\"],\n [\"deactivate\", \"deactivate\", \"--deactivate\"],\n] as const satisfies readonly (readonly [string, ExtensionCommandAction, `--${string}`])[];\n\nconst LIFECYCLE_ACTION_FLAG_HINT = LIFECYCLE_ACTION_TARGETS.map(([, , flag]) => flag)\n .filter((flag, index, flags) => flags.indexOf(flag) === index)\n .join(\", \");\nconst LIFECYCLE_ACTION_FLAGS: Record<ExtensionCommandAction, `--${string}`> = {\n install: \"--install\",\n uninstall: \"--uninstall\",\n explore: \"--explore\",\n manage: \"--manage\",\n describe: \"--describe\",\n reload: \"--reload\",\n doctor: \"--doctor\",\n catalog: \"--catalog\",\n adopt: \"--adopt\",\n \"adopt-all\": \"--adopt-all\",\n activate: \"--activate\",\n deactivate: \"--deactivate\",\n init: \"--init\",\n};\n/**\n * Restricts extension scope values accepted by command, SDK, and storage contracts.\n */\nexport type ExtensionScope = \"project\" | \"global\";\n/**\n * Restricts extension activation status values accepted by command, SDK, and storage contracts.\n */\nexport type ExtensionActivationStatus = \"ok\" | \"failed\" | \"not_loaded\" | \"unknown\";\n\n/**\n * Documents the extension command options payload exchanged by command, SDK, and package integrations.\n */\nexport interface ExtensionCommandOptions {\n install?: boolean;\n uninstall?: boolean;\n explore?: boolean;\n manage?: boolean;\n describe?: boolean;\n markdown?: boolean;\n output?: string;\n reload?: boolean;\n doctor?: boolean;\n catalog?: boolean;\n init?: boolean;\n scaffold?: boolean;\n strictExit?: boolean;\n failOnWarn?: boolean;\n adopt?: boolean;\n adoptAll?: boolean;\n activate?: boolean;\n deactivate?: boolean;\n project?: boolean;\n local?: boolean;\n global?: boolean;\n gh?: string;\n github?: string;\n ref?: string;\n detail?: string;\n trace?: boolean;\n watch?: boolean;\n runtimeProbe?: boolean;\n fixManagedState?: boolean;\n fields?: string;\n capability?: string;\n declarative?: boolean;\n vocabulary?: \"extension\" | \"package\";\n}\n\n/**\n * Documents the managed extension summary payload exchanged by command, SDK, and package integrations.\n */\nexport interface ManagedExtensionSummary {\n name: string;\n directory: string;\n version: string;\n entry: string;\n scope: ExtensionScope;\n // Backward-compatible alias for configured enabled state. Prefer `enabled`.\n active: boolean;\n enabled: boolean;\n runtime_active: boolean | null;\n activation_status: ExtensionActivationStatus;\n command_paths?: string[];\n action_paths?: string[];\n managed: boolean;\n source?: ManagedExtensionSource;\n update_available?: boolean | null;\n last_update_check_at?: string;\n last_update_remote_commit?: string;\n update_error?: string;\n update_check_status: ExtensionUpdateCheckStatus;\n update_check_reason: string;\n}\n\n/**\n * Documents the extension command result payload exchanged by command, SDK, and package integrations.\n */\nexport interface ExtensionCommandResult {\n ok: boolean;\n action: ExtensionCommandAction;\n scope: ExtensionScope;\n roots: {\n project: string;\n global: string;\n selected: string;\n settings_root: string;\n };\n warnings: string[];\n details: Record<string, unknown>;\n}\n\nconst NATIVE_OUTPUT_MARKER = \"__pm_native_output\";\n\n/**\n * Documents the extension triage summary payload exchanged by command, SDK, and package integrations.\n */\nexport interface ExtensionTriageSummary {\n status: \"ok\" | \"warn\";\n warning_count: number;\n warning_codes: string[];\n warnings: string[];\n policy_warning_count: number;\n policy_violation_count: number;\n policy_blocked_count: number;\n total_extensions: number;\n managed_total: number;\n enabled_total: number;\n active_total: number;\n update_available_total: number;\n update_health_coverage: \"full\" | \"partial\";\n update_health_partial: boolean;\n unmanaged_loaded_extension_count: number;\n unmanaged_loaded_extensions: string[];\n unmanaged_expected_extension_count: number;\n unmanaged_expected_extensions: string[];\n unmanaged_action_required_extension_count: number;\n unmanaged_action_required_extensions: string[];\n update_check_status_totals: Record<ExtensionUpdateCheckStatus, number>;\n update_check_failed_total: number;\n top_warnings: string[];\n remediation: string[];\n collision_plan?: ExtensionCollisionPlan;\n}\n\n/**\n * Documents the extension collision plan payload exchanged by command, SDK, and package integrations.\n */\nexport interface ExtensionCollisionPlan {\n status: \"ok\" | \"conflicts_detected\";\n collision_count: number;\n extension_count: number;\n next_best_command: string;\n collisions: Array<{\n code: string;\n surface: string;\n winner: { layer: ExtensionScope; name: string };\n displaced: { layer: ExtensionScope; name: string };\n }>;\n remediation_candidates: Array<{\n action: \"deactivate\";\n extension: string;\n command: string;\n affected_collisions: number;\n feature_loss: {\n command_paths: string[];\n action_paths: string[];\n };\n }>;\n}\n\n/**\n * Restricts extension update check status values accepted by command, SDK, and storage contracts.\n */\nexport type ExtensionUpdateCheckStatus = \"checked\" | \"skipped_unmanaged\" | \"skipped_non_github\" | \"failed\" | \"not_checked\";\n\ninterface ExtensionUpdateCheckResolution {\n status: ExtensionUpdateCheckStatus;\n reason: string;\n}\n\n/**\n * Restricts extension doctor detail mode values accepted by command, SDK, and storage contracts.\n */\nexport type ExtensionDoctorDetailMode = \"summary\" | \"deep\";\nfunction buildExtensionPolicyDetails(policy: PmSettings[\"extensions\"][\"policy\"]): {\n mode: \"off\" | \"warn\" | \"enforce\";\n trust_mode: \"off\" | \"warn\" | \"enforce\";\n require_provenance: boolean;\n trusted_extensions: string[];\n default_sandbox_profile: \"none\" | \"restricted\" | \"strict\";\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: Array<{\n name: string;\n disabled?: boolean;\n require_trusted?: boolean;\n require_provenance?: boolean;\n sandbox_profile?: \"none\" | \"restricted\" | \"strict\";\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 const overrides = (policy.extension_overrides ?? [])\n .map((override) => ({\n name: override.name.trim(),\n disabled: override.disabled === true ? true : undefined,\n require_trusted: override.require_trusted === true ? true : undefined,\n require_provenance: override.require_provenance === true ? true : undefined,\n sandbox_profile: override.sandbox_profile,\n allowed_capabilities: normalizeStringList(override.allowed_capabilities ?? []),\n blocked_capabilities: normalizeStringList(override.blocked_capabilities ?? []),\n allowed_surfaces: normalizeStringList(override.allowed_surfaces ?? []),\n blocked_surfaces: normalizeStringList(override.blocked_surfaces ?? []),\n allowed_commands: normalizeStringList(override.allowed_commands ?? []),\n blocked_commands: normalizeStringList(override.blocked_commands ?? []),\n allowed_actions: normalizeStringList(override.allowed_actions ?? []),\n blocked_actions: normalizeStringList(override.blocked_actions ?? []),\n allowed_services: normalizeStringList(override.allowed_services ?? []),\n blocked_services: normalizeStringList(override.blocked_services ?? []),\n }))\n .filter((override) => override.name.length > 0)\n .sort((left, right) => left.name.localeCompare(right.name));\n return {\n mode: policy.mode,\n trust_mode: policy.trust_mode,\n require_provenance: policy.require_provenance === true,\n trusted_extensions: normalizeStringList(policy.trusted_extensions ?? []),\n default_sandbox_profile: policy.default_sandbox_profile ?? \"none\",\n allowed_extensions: normalizeStringList(policy.allowed_extensions ?? []),\n blocked_extensions: normalizeStringList(policy.blocked_extensions ?? []),\n allowed_capabilities: normalizeStringList(policy.allowed_capabilities ?? []),\n blocked_capabilities: normalizeStringList(policy.blocked_capabilities ?? []),\n allowed_surfaces: normalizeStringList(policy.allowed_surfaces ?? []),\n blocked_surfaces: normalizeStringList(policy.blocked_surfaces ?? []),\n allowed_commands: normalizeStringList(policy.allowed_commands ?? []),\n blocked_commands: normalizeStringList(policy.blocked_commands ?? []),\n allowed_actions: normalizeStringList(policy.allowed_actions ?? []),\n blocked_actions: normalizeStringList(policy.blocked_actions ?? []),\n allowed_services: normalizeStringList(policy.allowed_services ?? []),\n blocked_services: normalizeStringList(policy.blocked_services ?? []),\n extension_overrides: overrides.map((override) => ({\n name: override.name,\n ...(override.disabled === true ? { disabled: true } : {}),\n ...(override.require_trusted === true ? { require_trusted: true } : {}),\n ...(override.require_provenance === true ? { require_provenance: true } : {}),\n ...(override.sandbox_profile ? { sandbox_profile: override.sandbox_profile } : {}),\n ...(override.allowed_capabilities.length > 0 ? { allowed_capabilities: override.allowed_capabilities } : {}),\n ...(override.blocked_capabilities.length > 0 ? { blocked_capabilities: override.blocked_capabilities } : {}),\n ...(override.allowed_surfaces.length > 0 ? { allowed_surfaces: override.allowed_surfaces } : {}),\n ...(override.blocked_surfaces.length > 0 ? { blocked_surfaces: override.blocked_surfaces } : {}),\n ...(override.allowed_commands.length > 0 ? { allowed_commands: override.allowed_commands } : {}),\n ...(override.blocked_commands.length > 0 ? { blocked_commands: override.blocked_commands } : {}),\n ...(override.allowed_actions.length > 0 ? { allowed_actions: override.allowed_actions } : {}),\n ...(override.blocked_actions.length > 0 ? { blocked_actions: override.blocked_actions } : {}),\n ...(override.allowed_services.length > 0 ? { allowed_services: override.allowed_services } : {}),\n ...(override.blocked_services.length > 0 ? { blocked_services: override.blocked_services } : {}),\n })),\n };\n}\n\nfunction isRetriableExtensionInstallCopyError(error: unknown): boolean {\n if (typeof error !== \"object\" || error === null || !(\"code\" in error)) {\n return false;\n }\n const code = (error as { code?: unknown }).code;\n return code === \"EEXIST\" || code === \"ENOTEMPTY\" || code === \"ENOENT\";\n}\n\nfunction isErrnoCode(error: unknown, code: string): boolean {\n return typeof error === \"object\" && error !== null && \"code\" in error && (error as { code?: unknown }).code === code;\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => {\n setTimeout(resolve, ms);\n });\n}\n\n/**\n * Ensure the installed extension directory carries a `package.json` with\n * `\"type\": \"module\"`. Extension entrypoints are ESM TypeScript; without a\n * nearby package.json Node resolves the module type from the HOST project's\n * package.json, so installs into `\"type\": \"commonjs\"` projects fail activation\n * with `extension_load_failed` (pm-r0m4). Extensions that ship their own\n * package.json are left untouched.\n */\nasync function ensureExtensionModuleTypeMarker(destinationDirectory: string): Promise<void> {\n const markerPath = path.join(destinationDirectory, \"package.json\");\n if (await pathExists(markerPath)) {\n return;\n }\n await fs.writeFile(markerPath, `${JSON.stringify({ type: \"module\" }, null, 2)}\\n`, \"utf8\");\n}\n\n/**\n * Implements copy extension directory for install for the public runtime surface of this module.\n */\nexport async function copyExtensionDirectoryForInstall(\n sourceDirectory: string,\n destinationDirectory: string,\n copyDirectory: typeof fs.cp = fs.cp,\n): Promise<void> {\n for (let attempt = 1; attempt <= EXTENSION_INSTALL_COPY_ATTEMPTS; attempt += 1) {\n try {\n if (await pathExists(destinationDirectory)) {\n await fs.rm(destinationDirectory, { recursive: true, force: true });\n }\n await copyExtensionDirectoryWithoutSelfNesting(sourceDirectory, destinationDirectory, copyDirectory);\n return;\n } catch (error: unknown) {\n if (!isRetriableExtensionInstallCopyError(error) || attempt === EXTENSION_INSTALL_COPY_ATTEMPTS) {\n throw error;\n }\n await sleep(EXTENSION_INSTALL_LOCK_DELAY_MS);\n }\n }\n}\n\nasync function copyExtensionDirectoryWithoutSelfNesting(\n sourceDirectory: string,\n destinationDirectory: string,\n copyDirectory: typeof fs.cp,\n): Promise<void> {\n const resolvedSource = path.resolve(sourceDirectory);\n const resolvedDestination = path.resolve(destinationDirectory);\n if (resolvedSource === resolvedDestination) {\n return;\n }\n if (!isPathWithinDirectory(resolvedSource, resolvedDestination)) {\n await copyDirectory(sourceDirectory, destinationDirectory, { recursive: true, force: true });\n return;\n }\n\n const stagingRoot = await fs.mkdtemp(path.join(os.tmpdir(), \"pm-extension-copy-\"));\n const stagedDirectory = path.join(stagingRoot, \"extension\");\n try {\n await copyDirectory(sourceDirectory, stagedDirectory, { recursive: true, force: true });\n await copyDirectory(stagedDirectory, destinationDirectory, { recursive: true, force: true });\n } finally {\n await fs.rm(stagingRoot, { recursive: true, force: true });\n }\n}\n\nasync function withExtensionInstallLock<T>(\n settingsRoot: string,\n destinationDirectoryName: string,\n run: () => Promise<T>,\n options?: {\n attempts?: number;\n delay_ms?: number;\n stale_ms?: number;\n },\n): Promise<T> {\n const lockRoot = path.join(settingsRoot, \"runtime\", \"extension-install-locks\");\n const lockPath = path.join(lockRoot, `${destinationDirectoryName}.lock`);\n await fs.mkdir(lockRoot, { recursive: true });\n const attempts = Math.max(1, Math.floor(options?.attempts ?? EXTENSION_INSTALL_LOCK_ATTEMPTS));\n const delayMs = Math.max(0, Math.floor(options?.delay_ms ?? EXTENSION_INSTALL_LOCK_DELAY_MS));\n const staleMs = Math.max(0, Math.floor(options?.stale_ms ?? EXTENSION_INSTALL_LOCK_STALE_MS));\n\n let acquired = false;\n for (let attempt = 1; attempt <= attempts; attempt += 1) {\n try {\n await fs.mkdir(lockPath);\n acquired = true;\n await fs.writeFile(\n path.join(lockPath, \"owner.json\"),\n `${JSON.stringify({ pid: process.pid, created_at: nowIso(), destination: destinationDirectoryName }, null, 2)}\\n`,\n \"utf8\",\n );\n break;\n } catch (error: unknown) {\n if (!isErrnoCode(error, \"EEXIST\")) {\n throw error;\n }\n let stat: Awaited<ReturnType<typeof fs.stat>> | null = null;\n try {\n stat = await fs.stat(lockPath);\n } catch {\n stat = null;\n }\n if (stat && Date.now() - stat.mtimeMs > staleMs) {\n await fs.rm(lockPath, { recursive: true, force: true });\n continue;\n }\n await sleep(delayMs);\n }\n }\n\n if (!acquired) {\n throw new PmCliError(\n `Timed out waiting for extension install lock for \"${destinationDirectoryName}\".`,\n EXIT_CODE.CONFLICT,\n );\n }\n\n try {\n return await run();\n } finally {\n await fs.rm(lockPath, { recursive: true, force: true }).catch(() => undefined);\n }\n}\n\nasync function resolveInstalledExtensionCandidate(\n installed: ManagedExtensionSummary[],\n extensionTarget: string,\n): Promise<ManagedExtensionSummary | undefined> {\n const lookupValues = [extensionTarget];\n const bundledAliasManifestName = await resolveBundledAliasManifestName(extensionTarget);\n if (bundledAliasManifestName) {\n lookupValues.push(bundledAliasManifestName);\n }\n const normalizedLookups = [...new Set(lookupValues.map((value) => normalizeExtensionNameForMatch(value)).filter((value) => value.length > 0))];\n for (const lookup of normalizedLookups) {\n const byName = installed.find((entry) => normalizeExtensionNameForMatch(entry.name) === lookup);\n if (byName) {\n return byName;\n }\n const byDirectory = installed.find((entry) => normalizeExtensionNameForMatch(entry.directory) === lookup);\n if (byDirectory) {\n return byDirectory;\n }\n }\n return undefined;\n}\n\nfunction isExtensionEnabled(settings: PmSettings, name: string): boolean {\n const normalizedName = name.trim();\n const enabled = new Set(normalizeStringList(settings.extensions.enabled));\n const disabled = new Set(normalizeStringList(settings.extensions.disabled));\n if (disabled.has(normalizedName)) {\n return false;\n }\n if (enabled.size === 0) {\n return true;\n }\n return enabled.has(normalizedName);\n}\n\nfunction ensureActivated(settings: PmSettings, name: string): boolean {\n const normalizedName = name.trim();\n const enabled = new Set(normalizeStringList(settings.extensions.enabled));\n const disabled = new Set(normalizeStringList(settings.extensions.disabled));\n const previousEnabled = [...enabled];\n const previousDisabled = [...disabled];\n disabled.delete(normalizedName);\n if (enabled.size > 0) {\n enabled.add(normalizedName);\n }\n settings.extensions.enabled = [...enabled].sort((left, right) => left.localeCompare(right));\n settings.extensions.disabled = [...disabled].sort((left, right) => left.localeCompare(right));\n return (\n settings.extensions.enabled.join(\"\\u0000\") !== previousEnabled.join(\"\\u0000\") ||\n settings.extensions.disabled.join(\"\\u0000\") !== previousDisabled.join(\"\\u0000\")\n );\n}\n\nfunction ensureDeactivated(settings: PmSettings, name: string): boolean {\n const normalizedName = name.trim();\n const enabled = new Set(normalizeStringList(settings.extensions.enabled));\n const disabled = new Set(normalizeStringList(settings.extensions.disabled));\n const previousEnabled = [...enabled];\n const previousDisabled = [...disabled];\n enabled.delete(normalizedName);\n disabled.add(normalizedName);\n settings.extensions.enabled = [...enabled].sort((left, right) => left.localeCompare(right));\n settings.extensions.disabled = [...disabled].sort((left, right) => left.localeCompare(right));\n return (\n settings.extensions.enabled.join(\"\\u0000\") !== previousEnabled.join(\"\\u0000\") ||\n settings.extensions.disabled.join(\"\\u0000\") !== previousDisabled.join(\"\\u0000\")\n );\n}\n\nfunction clearExtensionState(settings: PmSettings, name: string): boolean {\n const normalizedName = name.trim();\n const enabled = new Set(normalizeStringList(settings.extensions.enabled));\n const disabled = new Set(normalizeStringList(settings.extensions.disabled));\n const previousEnabled = [...enabled];\n const previousDisabled = [...disabled];\n enabled.delete(normalizedName);\n disabled.delete(normalizedName);\n settings.extensions.enabled = [...enabled].sort((left, right) => left.localeCompare(right));\n settings.extensions.disabled = [...disabled].sort((left, right) => left.localeCompare(right));\n return (\n settings.extensions.enabled.join(\"\\u0000\") !== previousEnabled.join(\"\\u0000\") ||\n settings.extensions.disabled.join(\"\\u0000\") !== previousDisabled.join(\"\\u0000\")\n );\n}\n\nfunction suggestLifecycleActionTarget(target: string): { action: ExtensionCommandAction; flag: `--${string}` } | null {\n const normalizedTarget = target.trim().toLowerCase();\n const exactMatch = LIFECYCLE_ACTION_TARGETS.find(([candidate]) => candidate === normalizedTarget);\n if (exactMatch) {\n return { action: exactMatch[1], flag: exactMatch[2] };\n }\n const maxDistance = normalizedTarget.length <= 4 ? 1 : 2;\n let nearest: { action: ExtensionCommandAction; flag: `--${string}`; distance: number } | null = null;\n for (const [candidate, action, flag] of LIFECYCLE_ACTION_TARGETS) {\n const distance = levenshteinDistanceWithinLimit(normalizedTarget, candidate, maxDistance);\n if (distance === null) {\n continue;\n }\n if (nearest === null) {\n nearest = { action, flag, distance };\n continue;\n }\n if (distance < nearest.distance) {\n nearest = { action, flag, distance };\n }\n }\n return nearest === null ? null : { action: nearest.action, flag: nearest.flag };\n}\n\nfunction buildUnknownLifecycleActionError(target: string, options: ExtensionCommandOptions): PmCliError {\n const noun = options.vocabulary === \"package\" ? \"package\" : \"extension\";\n const suggestion = suggestLifecycleActionTarget(target);\n if (!suggestion) {\n return new PmCliError(\n `One action flag is required. Use one of: ${LIFECYCLE_ACTION_FLAG_HINT}. Bare \\`pm package\\` and \\`pm extension\\` default to --explore.`,\n EXIT_CODE.USAGE,\n );\n }\n const command = `pm ${noun} ${suggestion.flag}`;\n return new PmCliError(\n `Unknown ${noun} lifecycle action \"${target}\". Did you mean \"${suggestion.flag}\"?`,\n EXIT_CODE.USAGE,\n {\n code: \"unknown_lifecycle_action\",\n required: `Use one of: ${LIFECYCLE_ACTION_FLAG_HINT}.`,\n examples: [command, `pm ${noun} --help`],\n recovery: {\n attempted_command: `pm ${noun} ${target}`,\n suggested_retry: command,\n fallback_candidates: [\n {\n source: \"lifecycle_action\",\n command,\n reason: `nearest lifecycle action for \"${target}\"`,\n },\n ],\n },\n },\n );\n}\n\n// Maps each boolean action flag to the lifecycle action it selects. `scaffold`\n// aliases `init` and `adoptAll` selects `adopt-all`; every other flag maps to its\n// like-named action. Dispatching through the table keeps `resolveAction` flat.\nconst EXTENSION_ACTION_FLAG_SELECTORS = [\n [\"install\", \"install\"],\n [\"uninstall\", \"uninstall\"],\n [\"explore\", \"explore\"],\n [\"manage\", \"manage\"],\n [\"describe\", \"describe\"],\n [\"reload\", \"reload\"],\n [\"doctor\", \"doctor\"],\n [\"catalog\", \"catalog\"],\n [\"init\", \"init\"],\n [\"scaffold\", \"init\"],\n [\"adopt\", \"adopt\"],\n [\"adoptAll\", \"adopt-all\"],\n [\"activate\", \"activate\"],\n [\"deactivate\", \"deactivate\"],\n] as const satisfies readonly (readonly [keyof ExtensionCommandOptions, ExtensionCommandAction])[];\n\n/**\n * Map a bare positional token (already trimmed and lower-cased) to the lifecycle\n * action it implies for `pm extension <token>` / `pm package <token>`: the\n * `doctor`/`reload`/`catalog`/`init`/`scaffold`/`explore`/`manage` keywords, with\n * `list` and the empty string both meaning `explore`. Returns `null` for anything\n * else so the caller can raise a did-you-mean error.\n */\nfunction resolveImplicitActionFromTarget(normalizedTarget: string): ExtensionCommandAction | null {\n if (normalizedTarget === \"doctor\") {\n return \"doctor\";\n }\n if (normalizedTarget === \"reload\") {\n return \"reload\";\n }\n if (normalizedTarget === \"catalog\") {\n return \"catalog\";\n }\n if (normalizedTarget === \"init\" || normalizedTarget === \"scaffold\") {\n return \"init\";\n }\n if (normalizedTarget === \"explore\") {\n return \"explore\";\n }\n if (normalizedTarget === \"manage\") {\n return \"manage\";\n }\n if (normalizedTarget === \"list\" || normalizedTarget === \"\") {\n return \"explore\";\n }\n return null;\n}\n\nfunction resolveAction(target: string | undefined, options: ExtensionCommandOptions): ExtensionCommandAction {\n const selected = [\n ...new Set(\n EXTENSION_ACTION_FLAG_SELECTORS.filter(([flag]) => options[flag] === true).map(([, mappedAction]) => mappedAction),\n ),\n ];\n if (selected.length === 0) {\n if (target === undefined) {\n return \"explore\";\n }\n const implicitAction = resolveImplicitActionFromTarget(target.trim().toLowerCase());\n if (implicitAction) {\n return implicitAction;\n }\n throw buildUnknownLifecycleActionError(target, options);\n }\n if (selected.length > 1) {\n throw new PmCliError(\"Extension action flags are mutually exclusive.\", EXIT_CODE.USAGE);\n }\n return selected[0];\n}\n\nfunction resolveScope(options: ExtensionCommandOptions): ExtensionScope {\n const projectLike = options.project === true || options.local === true;\n const global = options.global === true;\n if (projectLike && global) {\n throw new PmCliError('Options \"--project/--local\" and \"--global\" are mutually exclusive.', EXIT_CODE.USAGE);\n }\n return global ? \"global\" : \"project\";\n}\nfunction resolveUpdateCheckResolution(managedEntry: ManagedExtensionRecord | undefined): ExtensionUpdateCheckResolution {\n if (!managedEntry) {\n return {\n status: \"skipped_unmanaged\",\n reason: \"extension_not_managed\",\n };\n }\n if (managedEntry.source.kind !== \"github\") {\n return {\n status: \"skipped_non_github\",\n reason: `managed_source_kind_${managedEntry.source.kind}`,\n };\n }\n const updateError = typeof managedEntry.update_error === \"string\" ? managedEntry.update_error.trim() : \"\";\n if (updateError.length > 0) {\n return {\n status: \"failed\",\n reason: updateError,\n };\n }\n if (typeof managedEntry.last_update_check_at === \"string\" && managedEntry.last_update_check_at.trim().length > 0) {\n if (managedEntry.update_available === true) {\n return {\n status: \"checked\",\n reason: \"update_available\",\n };\n }\n if (managedEntry.update_available === false) {\n return {\n status: \"checked\",\n reason: \"up_to_date\",\n };\n }\n return {\n status: \"checked\",\n reason: \"checked_without_commit_baseline\",\n };\n }\n return {\n status: \"not_checked\",\n reason: \"no_update_check_recorded\",\n };\n}\n\n/**\n * Assemble a {@link ManagedExtensionSummary} from a directory's resolved identity\n * (name/version/entry/enabled state) and its managed-state record, projecting the\n * managed-source provenance and the resolved update-check status. Runtime\n * activation fields default to \"not yet probed\" (`runtime_active: null`,\n * `activation_status: \"unknown\"`) so a later runtime probe can overlay live state.\n */\nfunction buildInstalledExtensionSummary(\n identity: { name: string; directory: string; version: string; entry: string; enabled: boolean },\n scope: ExtensionScope,\n managedEntry: ManagedExtensionRecord | undefined,\n updateCheck: ExtensionUpdateCheckResolution,\n): ManagedExtensionSummary {\n return {\n name: identity.name,\n directory: identity.directory,\n version: identity.version,\n entry: identity.entry,\n scope,\n active: identity.enabled,\n enabled: identity.enabled,\n runtime_active: null,\n activation_status: \"unknown\",\n managed: Boolean(managedEntry),\n source: managedEntry?.source,\n update_available: managedEntry?.update_available,\n last_update_check_at: managedEntry?.last_update_check_at,\n last_update_remote_commit: managedEntry?.last_update_remote_commit,\n update_error: managedEntry?.update_error,\n update_check_status: updateCheck.status,\n update_check_reason: updateCheck.reason,\n };\n}\n\nasync function listInstalledExtensions(\n extensionsRoot: string,\n scope: ExtensionScope,\n settings: PmSettings,\n state: ManagedExtensionState,\n): Promise<{ extensions: ManagedExtensionSummary[]; warnings: string[] }> {\n if (!(await pathExists(extensionsRoot))) {\n return {\n extensions: [],\n warnings: [],\n };\n }\n\n const entries = await fs.readdir(extensionsRoot, { withFileTypes: true });\n const directories = entries\n .filter((entry) => entry.isDirectory())\n .map((entry) => entry.name)\n .sort((left, right) => left.localeCompare(right));\n\n const managedByName = new Map<string, ManagedExtensionRecord>();\n const managedByDirectory = new Map<string, ManagedExtensionRecord>();\n for (const managedEntry of state.entries) {\n managedByName.set(normalizeExtensionNameForMatch(managedEntry.name), managedEntry);\n managedByDirectory.set(normalizeExtensionNameForMatch(managedEntry.directory), managedEntry);\n }\n\n const warnings: string[] = [];\n const summaries: ManagedExtensionSummary[] = [];\n for (const directoryName of directories) {\n const extensionDirectory = path.join(extensionsRoot, directoryName);\n const manifestPath = path.join(extensionDirectory, \"manifest.json\");\n if (!(await pathExists(manifestPath))) {\n warnings.push(`extension_manifest_missing:${scope}:${directoryName}`);\n const managedEntry = managedByDirectory.get(normalizeExtensionNameForMatch(directoryName));\n summaries.push(\n buildInstalledExtensionSummary(\n {\n name: managedEntry?.name ?? directoryName,\n directory: directoryName,\n version: managedEntry?.manifest_version ?? \"unknown\",\n entry: managedEntry?.manifest_entry ?? \"unknown\",\n enabled: managedEntry ? isExtensionEnabled(settings, managedEntry.name) : false,\n },\n scope,\n managedEntry,\n resolveUpdateCheckResolution(managedEntry),\n ),\n );\n continue;\n }\n\n let rawManifest: unknown;\n try {\n rawManifest = JSON.parse(await fs.readFile(manifestPath, \"utf8\")) as unknown;\n } catch {\n warnings.push(`extension_manifest_invalid_json:${scope}:${directoryName}`);\n continue;\n }\n const manifest = parseExtensionManifest(rawManifest);\n if (!manifest) {\n warnings.push(`extension_manifest_invalid:${scope}:${directoryName}`);\n continue;\n }\n const managedEntry =\n managedByName.get(normalizeExtensionNameForMatch(manifest.name)) ??\n managedByDirectory.get(normalizeExtensionNameForMatch(directoryName));\n summaries.push(\n buildInstalledExtensionSummary(\n {\n name: manifest.name,\n directory: directoryName,\n version: manifest.version,\n entry: manifest.entry,\n enabled: isExtensionEnabled(settings, manifest.name),\n },\n scope,\n managedEntry,\n resolveUpdateCheckResolution(managedEntry),\n ),\n );\n }\n return {\n extensions: summaries.sort((left, right) => left.name.localeCompare(right.name)),\n warnings: warnings.sort((left, right) => left.localeCompare(right)),\n };\n}\ninterface GithubUpdateStatus {\n checked_at: string;\n available: boolean | null;\n remote_commit?: string;\n error?: string;\n}\ntype ActivationFailureEntry = Awaited<ReturnType<typeof activateExtensions>>[\"failed\"][number];\n\ninterface ActivationFailureDiagnostic {\n layer: string;\n name: string;\n entry_path: string;\n error: string;\n missing_capability?: string;\n hint?: string;\n trace?: {\n method: string;\n registration_index: number;\n expected_schema: string;\n command?: string;\n capability?: string;\n missing_capability?: string;\n hint?: string;\n };\n}\n\nfunction summarizeRuntimeCommandPathsForExtension(\n extensionName: string,\n installed: ManagedExtensionSummary[],\n): { command_paths: string[]; action_paths: string[] } {\n const normalizedName = normalizeExtensionNameForMatch(extensionName);\n const entry = installed.find((candidate) => normalizeExtensionNameForMatch(candidate.name) === normalizedName);\n return {\n command_paths: [...(entry?.command_paths ?? [])].sort((left, right) => left.localeCompare(right)),\n action_paths: [...(entry?.action_paths ?? [])].sort((left, right) => left.localeCompare(right)),\n };\n}\n\nfunction resolveCommandDiscoveryPackageName(extensionName: string, source: ManagedExtensionSource): string {\n if (typeof source.package === \"string\" && source.package.trim().length > 0) {\n return source.package.trim();\n }\n if (source.kind === \"builtin\" && typeof source.name === \"string\" && source.name.trim().length > 0) {\n return source.name.trim();\n }\n return extensionName;\n}\n\nfunction buildInstallCommandDiscovery(\n extensionName: string,\n source: ManagedExtensionSource,\n commandSummary: { command_paths: string[]; action_paths: string[] },\n): Record<string, unknown> {\n const helpCommands = commandSummary.command_paths.map((commandPath) => `pm ${commandPath} --help`);\n return {\n package_name: resolveCommandDiscoveryPackageName(extensionName, source),\n extension_name: extensionName,\n command_paths: commandSummary.command_paths,\n action_paths: commandSummary.action_paths,\n help_commands: helpCommands,\n next_steps:\n commandSummary.command_paths.length > 0\n ? helpCommands\n : [\"Run pm package doctor --project --detail deep if expected package commands are missing.\"],\n };\n}\n\nfunction summarizeActivationFailureForDiagnostics(failure: ActivationFailureEntry): ActivationFailureDiagnostic {\n const trace = failure.trace\n ? {\n method: failure.trace.method,\n registration_index: failure.trace.registration_index,\n expected_schema: failure.trace.expected_schema,\n ...(failure.trace.command ? { command: failure.trace.command } : {}),\n ...(failure.trace.capability ? { capability: failure.trace.capability } : {}),\n ...(failure.trace.missing_capability ? { missing_capability: failure.trace.missing_capability } : {}),\n ...(failure.trace.hint ? { hint: failure.trace.hint } : {}),\n }\n : undefined;\n return {\n layer: failure.layer,\n name: failure.name,\n entry_path: failure.entry_path,\n error: failure.error,\n ...(failure.trace?.missing_capability ? { missing_capability: failure.trace.missing_capability } : {}),\n ...(failure.trace?.hint ? { hint: failure.trace.hint } : {}),\n ...(trace ? { trace } : {}),\n };\n}\n\nfunction collectActivationFailureDiagnostics(failures: ActivationFailureEntry[]): ActivationFailureDiagnostic[] {\n return failures\n .map((failure) => summarizeActivationFailureForDiagnostics(failure))\n .sort((left, right) => `${left.layer}:${left.name}`.localeCompare(`${right.layer}:${right.name}`));\n}\n\nfunction findActivationFailureByName(\n extensionName: string,\n failures: ActivationFailureDiagnostic[],\n layer?: ExtensionScope,\n): ActivationFailureDiagnostic | undefined {\n const normalizedName = normalizeExtensionNameForMatch(extensionName);\n return failures.find(\n (failure) =>\n (layer === undefined || failure.layer === layer) &&\n normalizeExtensionNameForMatch(failure.name) === normalizedName,\n );\n}\n\nfunction resolveInstallRuntimeActivationStatus(\n extensionName: string,\n scope: ExtensionScope,\n runtimeInstalled: ManagedExtensionSummary[],\n installActivationFailure: ActivationFailureDiagnostic | undefined,\n): ExtensionActivationStatus {\n const runtimeInstalledExtension = runtimeInstalled.find(\n (entry) =>\n entry.scope === scope && normalizeExtensionNameForMatch(entry.name) === normalizeExtensionNameForMatch(extensionName),\n );\n return runtimeInstalledExtension?.activation_status ?? (installActivationFailure ? \"failed\" : \"unknown\");\n}\n\nasync function probeRuntimeCommandPathsForInstall(\n pmRoot: string,\n settings: PmSettings,\n refreshedInstalled: ManagedExtensionSummary[],\n global: GlobalOptions,\n): Promise<{\n installed: ManagedExtensionSummary[];\n warnings: string[];\n activation_failures: ActivationFailureDiagnostic[];\n item_type_registrations: Awaited<ReturnType<typeof activateExtensions>>[\"registrations\"][\"item_types\"];\n}> {\n const loadResult = await loadExtensions({\n pmRoot,\n settings,\n cwd: process.cwd(),\n noExtensions: global.noExtensions === true,\n reload_token: nextExtensionReloadToken(),\n cache_bust: true,\n });\n const activationResult = await activateExtensions({\n ...loadResult,\n loaded: loadResult.loaded,\n });\n return {\n installed: applyDoctorRuntimeActivationState(refreshedInstalled, loadResult, activationResult),\n warnings: [...loadResult.warnings, ...activationResult.warnings],\n activation_failures: collectActivationFailureDiagnostics(activationResult.failed),\n item_type_registrations: activationResult.registrations.item_types,\n };\n}\n\nasync function checkGithubUpdate(\n source: ManagedExtensionSource,\n gitCommandRunner: typeof runGitCommand = runGitCommand,\n): Promise<GithubUpdateStatus> {\n const checkedAt = nowIso();\n if (source.kind !== \"github\" || !source.repository) {\n return {\n checked_at: checkedAt,\n available: null,\n error: \"not_a_github_managed_source\",\n };\n }\n try {\n const ref = source.ref && source.ref.trim().length > 0 ? source.ref.trim() : \"HEAD\";\n const output = await gitCommandRunner([\"ls-remote\", source.repository, ref]);\n const firstLine = output\n .split(/\\r?\\n/)\n .map((line) => line.trim())\n .find((line) => line.length > 0);\n if (!firstLine) {\n return {\n checked_at: checkedAt,\n available: null,\n error: \"no_remote_reference_found\",\n };\n }\n const [remoteCommit] = firstLine.split(/\\s+/);\n /* c8 ignore start -- firstLine is trimmed non-empty, so split always yields a non-empty first token */\n if (typeof remoteCommit !== \"string\" || remoteCommit.length === 0) {\n return {\n checked_at: checkedAt,\n available: null,\n error: \"invalid_remote_reference\",\n };\n }\n /* c8 ignore stop */\n if (typeof source.commit === \"string\" && source.commit.trim().length > 0) {\n return {\n checked_at: checkedAt,\n remote_commit: remoteCommit,\n available: remoteCommit !== source.commit.trim(),\n };\n }\n return {\n checked_at: checkedAt,\n remote_commit: remoteCommit,\n available: null,\n error: \"missing_installed_commit\",\n };\n } catch (error: unknown) {\n return {\n checked_at: checkedAt,\n available: null,\n error: error instanceof Error ? error.message : String(error),\n };\n }\n}\n\ninterface AdoptedUnmanagedExtension {\n name: string;\n directory: string;\n version: string;\n entry: string;\n source: ManagedExtensionSource;\n}\n\ninterface AdoptUnmanagedExtensionsResult {\n state: ManagedExtensionState;\n adopted_entries: AdoptedUnmanagedExtension[];\n unmanaged_candidates: ManagedExtensionSummary[];\n already_managed_count: number;\n}\n\nasync function adoptUnmanagedExtensions(\n extensionsRoot: string,\n scope: ExtensionScope,\n installedExtensions: ManagedExtensionSummary[],\n state: ManagedExtensionState,\n): Promise<AdoptUnmanagedExtensionsResult> {\n const unmanagedCandidates = installedExtensions.filter((entry) => !entry.managed);\n const sortedCandidates = [...unmanagedCandidates].sort((left, right) => {\n const byName = left.name.localeCompare(right.name);\n if (byName !== 0) {\n return byName;\n }\n return left.directory.localeCompare(right.directory);\n });\n\n let nextState = state;\n const adoptedEntries: AdoptedUnmanagedExtension[] = [];\n for (const candidate of sortedCandidates) {\n const extensionDirectory = path.join(extensionsRoot, candidate.directory);\n const validated = await validateExtensionDirectory(extensionDirectory);\n const now = nowIso();\n const sourceRecord: ManagedExtensionSource = {\n kind: \"local\",\n input: candidate.name,\n location: extensionDirectory,\n };\n nextState = upsertManagedEntry(nextState, {\n name: validated.manifest.name,\n directory: candidate.directory,\n scope,\n manifest_version: validated.manifest.version,\n manifest_entry: validated.manifest.entry,\n capabilities: [...validated.manifest.capabilities],\n installed_at: now,\n updated_at: now,\n source: sourceRecord,\n });\n adoptedEntries.push({\n name: validated.manifest.name,\n directory: candidate.directory,\n version: validated.manifest.version,\n entry: validated.manifest.entry,\n source: sourceRecord,\n });\n }\n\n if (adoptedEntries.length > 0) {\n await writeManagedExtensionState(extensionsRoot, nextState);\n }\n\n return {\n state: nextState,\n adopted_entries: adoptedEntries,\n unmanaged_candidates: sortedCandidates,\n already_managed_count: installedExtensions.length - unmanagedCandidates.length,\n };\n}\n\nfunction resolveExtensionRootsForScope(scope: ExtensionScope, global: GlobalOptions): {\n pm_root: string;\n scope: ExtensionScope;\n settings_root: string;\n selected_root: string;\n roots: { global: string; project: string };\n} {\n const pmRoot = resolvePmRoot(process.cwd(), global.path);\n const roots = resolveExtensionRoots(pmRoot, process.cwd());\n const settingsRoot = scope === \"global\" ? resolveGlobalPmRoot(process.cwd()) : pmRoot;\n const selectedRoot = scope === \"global\" ? roots.global : roots.project;\n return {\n pm_root: pmRoot,\n scope,\n settings_root: settingsRoot,\n selected_root: selectedRoot,\n roots,\n };\n}\n\nfunction resolveGithubOption(options: ExtensionCommandOptions): string | undefined {\n if (typeof options.gh === \"string\" && typeof options.github === \"string\" && options.gh.trim() !== options.github.trim()) {\n throw new PmCliError('Options \"--gh\" and \"--github\" must match when both are provided.', EXIT_CODE.USAGE);\n }\n if (typeof options.gh === \"string\" && options.gh.trim().length > 0) {\n return options.gh.trim();\n }\n if (typeof options.github === \"string\" && options.github.trim().length > 0) {\n return options.github.trim();\n }\n return undefined;\n}\n\nfunction getLifecycleActionFlag(action: ExtensionCommandAction): `--${string}` {\n return LIFECYCLE_ACTION_FLAGS[action];\n}\n\nfunction requireTarget(target: string | undefined, action: ExtensionCommandAction, options: ExtensionCommandOptions = {}): string {\n const normalized = target?.trim();\n if (!normalized) {\n if (action === \"init\") {\n throw new PmCliError(\n 'Action \"init\" requires a scaffold target path (for example: pm package init ./my-package or pm extension init ./my-extension).',\n EXIT_CODE.USAGE,\n );\n }\n const noun = options.vocabulary === \"package\" ? \"package\" : \"extension\";\n const targetName = action === \"install\" ? \"source\" : \"name\";\n const targetLabel = `${noun} ${targetName}`;\n const actionFlag = getLifecycleActionFlag(action);\n const commandTarget = `<${targetName}>`;\n const command = `pm ${noun} ${actionFlag} ${commandTarget}`;\n throw new PmCliError(\n `Action \"${action}\" requires ${targetLabel} input.`,\n EXIT_CODE.USAGE,\n {\n code: \"missing_lifecycle_target\",\n required: `Provide a ${targetName} target for ${action}.`,\n examples: [`pm ${noun} ${action} ${commandTarget}`, command, `pm ${noun} --help`],\n recovery: {\n attempted_command: `pm ${noun} ${action}`,\n suggested_retry: command,\n fallback_candidates: [\n {\n source: \"lifecycle_action\",\n command,\n reason: `flag-form ${action} command with required ${targetName} target`,\n },\n ],\n },\n },\n );\n }\n return normalized;\n}\n\nfunction collectGlobalOutputOverrideDoctorWarnings(\n activationResult: Awaited<ReturnType<typeof activateExtensions>>,\n): string[] {\n const warnings: string[] = [];\n for (const entry of activationResult.services.overrides) {\n if (entry.service !== \"output_format\") {\n continue;\n }\n warnings.push(`extension_output_service_override_global:${entry.service}:${entry.layer}:${entry.name}`);\n }\n for (const entry of activationResult.renderers.overrides) {\n warnings.push(`extension_output_renderer_override_global:${entry.format}:${entry.layer}:${entry.name}`);\n }\n return [...new Set(warnings)].sort((left, right) => left.localeCompare(right));\n}\n\n/**\n * Doctor advisory: flag loaded extensions that contribute GLOBAL schema (custom\n * item types or fields) yet also declare narrow `activation.commands`.\n *\n * Custom item types and fields must be present for the built-in commands the\n * extension does not own and cannot enumerate (`pm create <type>`,\n * `pm list --type <type>`, `pm validate`). Declaring `activation.commands` gates\n * lazy activation to only the listed command paths, so the package never\n * activates for those built-ins and its custom type silently fails to register —\n * a quiet footgun (decision pm-halx). The `schema` scaffold deliberately omits\n * the field; this advisory catches hand-authored packages that do not. It is\n * doctor-only and non-blocking — `pm health` does not surface it — so the author\n * can either drop `activation.commands` or, when the schema is intentionally\n * command-scoped, knowingly ignore the hint.\n */\nfunction collectSchemaNarrowActivationDoctorWarnings(\n loadResult: Awaited<ReturnType<typeof loadExtensions>>,\n activationResult: Awaited<ReturnType<typeof activateExtensions>>,\n): string[] {\n const schemaContributors = new Set<string>();\n for (const entry of activationResult.registrations.item_types) {\n if (entry.types.length > 0) {\n schemaContributors.add(`${entry.layer}:${normalizeExtensionNameForMatch(entry.name)}`);\n }\n }\n for (const entry of activationResult.registrations.item_fields) {\n if (entry.fields.length > 0) {\n schemaContributors.add(`${entry.layer}:${normalizeExtensionNameForMatch(entry.name)}`);\n }\n }\n const warnings: string[] = [];\n for (const extension of loadResult.loaded) {\n if ((extension.activation?.commands ?? []).length === 0) {\n continue;\n }\n if (schemaContributors.has(`${extension.layer}:${normalizeExtensionNameForMatch(extension.name)}`)) {\n warnings.push(`extension_schema_narrow_activation:${extension.layer}:${extension.name}`);\n }\n }\n return [...new Set(warnings)].sort((left, right) => left.localeCompare(right));\n}\n\n/**\n * Shared, per-invocation context threaded to each extension action handler: the\n * resolved action/scope/roots, the alias-normalized target, the accumulating\n * warnings sink, the caller options/globals, and the `withResult` builder that\n * stamps the canonical {@link ExtensionCommandResult} envelope.\n */\ninterface ExtensionActionContext {\n action: ExtensionCommandAction;\n normalizedTarget: string | undefined;\n scope: ExtensionScope;\n resolvedRoots: ReturnType<typeof resolveExtensionRootsForScope>;\n warnings: string[];\n options: ExtensionCommandOptions;\n global: GlobalOptions;\n withResult: (details: Record<string, unknown>) => ExtensionCommandResult;\n}\n\n/**\n * Reject option/action combinations that are only meaningful for a specific\n * lifecycle action — `--trace`/`--strict-exit`/`--fail-on-warn` require `--doctor`,\n * `--watch` requires `--reload`, `--runtime-probe` requires `--manage`,\n * `--fix-managed-state` requires `--manage`/`--doctor`, and\n * `--capability`/`--declarative` require `--init`/`--scaffold`. Each guard pairs a\n * \"flag is set\" predicate with the action(s) that permit it and throws a USAGE\n * error on the first mismatch.\n */\nfunction assertExtensionActionOptionScope(action: ExtensionCommandAction, options: ExtensionCommandOptions): void {\n const guards: Array<{ triggered: boolean; allowed: boolean; message: string }> = [\n {\n triggered: options.strictExit === true || options.failOnWarn === true,\n allowed: action === \"doctor\",\n message: \"--strict-exit and --fail-on-warn are only valid with --doctor.\",\n },\n { triggered: options.trace === true, allowed: action === \"doctor\", message: \"--trace is only valid with --doctor.\" },\n { triggered: options.watch === true, allowed: action === \"reload\", message: \"--watch is only valid with --reload.\" },\n {\n triggered: options.runtimeProbe === true,\n allowed: action === \"manage\",\n message: \"--runtime-probe is only valid with --manage.\",\n },\n {\n triggered: options.fixManagedState === true,\n allowed: action === \"manage\" || action === \"doctor\",\n message: \"--fix-managed-state is only valid with --manage or --doctor.\",\n },\n {\n triggered: options.capability !== undefined,\n allowed: action === \"init\",\n message: \"--capability is only valid with --init/--scaffold.\",\n },\n {\n triggered: options.declarative === true,\n allowed: action === \"init\",\n message: \"--declarative is only valid with --init/--scaffold.\",\n },\n ];\n for (const guard of guards) {\n if (guard.triggered && !guard.allowed) {\n throw new PmCliError(guard.message, EXIT_CODE.USAGE);\n }\n }\n}\n\n/* c8 ignore start -- alias-normalization matrix is covered by resolveAction tests; this only rewrites positional aliases */\n/**\n * Collapse a positional target that merely repeats the action keyword\n * (`pm extension doctor`, `reload`, `catalog`, or `init`/`scaffold`) to\n * `undefined` so the action handlers treat it as \"no target\" rather than an\n * extension name; otherwise the original target is returned unchanged.\n */\nfunction resolveNormalizedExtensionTarget(\n target: string | undefined,\n action: ExtensionCommandAction,\n options: ExtensionCommandOptions,\n): string | undefined {\n const normalizedInput = target?.trim().toLowerCase();\n if (action === \"doctor\" && normalizedInput === \"doctor\") {\n return undefined;\n }\n if (action === \"reload\" && normalizedInput === \"reload\") {\n return undefined;\n }\n if (action === \"catalog\" && normalizedInput === \"catalog\") {\n return undefined;\n }\n const inferredInitAlias =\n action === \"init\" &&\n options.init !== true &&\n options.scaffold !== true &&\n (normalizedInput === \"init\" || normalizedInput === \"scaffold\");\n if (inferredInitAlias) {\n return undefined;\n }\n return target;\n}\n/* c8 ignore stop */\n\n/**\n * Entry point for the `pm extension` / `pm package` command surface. Resolves the\n * requested lifecycle action and scope, rejects out-of-scope option usage,\n * normalizes positional aliases, then dispatches to the matching action handler —\n * each of which reads and writes managed-extension state, runtime-probes, and\n * returns the canonical {@link ExtensionCommandResult}. `--doctor` results are\n * flagged for native (non-JSON-wrapped) output.\n */\nexport async function runExtension(\n target: string | undefined,\n options: ExtensionCommandOptions,\n global: GlobalOptions,\n): Promise<ExtensionCommandResult> {\n const action = resolveAction(target, options);\n assertExtensionActionOptionScope(action, options);\n const normalizedTarget = resolveNormalizedExtensionTarget(target, action, options);\n const scope = resolveScope(options);\n const resolvedRoots = resolveExtensionRootsForScope(scope, global);\n const warnings: string[] = [];\n const withResult = (details: Record<string, unknown>): ExtensionCommandResult => {\n const result: ExtensionCommandResult = {\n ok: true,\n action,\n scope,\n roots: action === \"catalog\" && typeof options.fields === \"string\" && options.fields.trim().length > 0\n ? {\n project: \"project\",\n global: \"global\",\n selected: scope,\n settings_root: \"project\",\n }\n : {\n project: resolvedRoots.roots.project,\n global: resolvedRoots.roots.global,\n selected: resolvedRoots.selected_root,\n settings_root: resolvedRoots.settings_root,\n },\n warnings: [...new Set(warnings)].sort((left, right) => left.localeCompare(right)),\n details,\n };\n if (action === \"doctor\") {\n Object.defineProperty(result, NATIVE_OUTPUT_MARKER, {\n value: true,\n enumerable: false,\n configurable: false,\n });\n }\n return result;\n };\n const ctx: ExtensionActionContext = {\n action,\n normalizedTarget,\n scope,\n resolvedRoots,\n warnings,\n options,\n global,\n withResult,\n };\n return EXTENSION_ACTION_HANDLERS[action](ctx);\n}\n\nasync function runExtensionInitAction(ctx: ExtensionActionContext): Promise<ExtensionCommandResult> {\n const { action, normalizedTarget, options, withResult } = ctx;\n const githubOption = resolveGithubOption(options);\n if (githubOption !== undefined || (typeof options.ref === \"string\" && options.ref.trim().length > 0)) {\n throw new PmCliError('Action \"init\" does not accept --gh/--github/--ref options.', EXIT_CODE.USAGE);\n }\n const scaffoldTarget = requireTarget(normalizedTarget, action, options);\n const scaffold = await scaffoldExtensionProject(\n scaffoldTarget,\n options.vocabulary ?? \"extension\",\n options.capability,\n options.declarative === true,\n );\n const quotedTargetPath = JSON.stringify(scaffold.target_path);\n // Forward-slash the path for the copy-pasteable `cd` hint: Windows cmd.exe /\n // PowerShell reject the doubled backslashes JSON.stringify emits, while both\n // shells (and POSIX) accept forward slashes.\n const quotedShellTargetPath = JSON.stringify(scaffold.target_path.replace(/\\\\/g, \"/\"));\n return withResult({\n scaffolded: scaffold.created_directory || scaffold.files.some((entry) => entry.status === \"created\"),\n extension: {\n name: scaffold.extension_name,\n command: scaffold.command_name,\n },\n capability: scaffold.capability,\n style: scaffold.style,\n target_path: scaffold.target_path,\n created_directory: scaffold.created_directory,\n files: scaffold.files,\n next_steps: [\n // Extensions are authored AND loaded as TypeScript (ADR pm-2c28 / pm-m1uz):\n // the manifest entry is ./index.ts and pm strips types on load (Node\n // >=22.18), so there is no compile/build step — install dependencies, then\n // install the scaffold directly.\n ...(options.vocabulary === \"package\"\n ? [`Install dependencies: cd ${quotedShellTargetPath}, then run \"npm install\"`]\n : [\n `Install type-check dependencies: cd ${quotedShellTargetPath}, then run \"npm install -D typescript @types/node @unbrained/pm-cli\"`,\n ]),\n `Install the scaffold: ${options.vocabulary === \"package\" ? \"pm install --project\" : \"pm extension --install --project\"} ${quotedTargetPath}`,\n `Smoke-test command path: pm ${scaffold.command_name}`,\n ...(options.vocabulary === \"package\"\n ? [`Validate the package: cd ${quotedShellTargetPath}, then run \"npm run typecheck\" and \"npm test\"`]\n : [`Type-check the source (optional): cd ${quotedShellTargetPath}, then run \"npx tsc --noEmit\"`]),\n `Run diagnostics: ${options.vocabulary === \"package\" ? \"pm package doctor\" : \"pm extension --doctor\"} --project --detail summary`,\n ],\n });\n}\n\nasync function runExtensionReloadAction(ctx: ExtensionActionContext): Promise<ExtensionCommandResult> {\n const { normalizedTarget, resolvedRoots, warnings, options, global, withResult } = ctx;\n if (normalizedTarget !== undefined) {\n throw new PmCliError('Action \"reload\" does not accept a target argument.', EXIT_CODE.USAGE);\n }\n const settings = await readSettings(resolvedRoots.settings_root);\n const reloadToken = nextExtensionReloadToken();\n const reloaded = await loadExtensions({\n pmRoot: resolvedRoots.settings_root,\n settings,\n cwd: process.cwd(),\n noExtensions: global.noExtensions,\n reload_token: reloadToken,\n cache_bust: true,\n });\n warnings.push(...reloaded.warnings);\n const activation = await activateExtensions(reloaded);\n warnings.push(...activation.warnings);\n const details = {\n reload: {\n token: reloadToken,\n cache_bust: true,\n watch: options.watch === true,\n },\n loaded_count: reloaded.loaded.length,\n failed_count: reloaded.failed.length,\n activated_count: Math.max(0, reloaded.loaded.length - activation.failed.length),\n activation_failed_count: activation.failed.length,\n loaded_extensions: reloaded.loaded.map((entry) => ({\n name: entry.name,\n layer: entry.layer,\n version: entry.version,\n })),\n failed_extensions: reloaded.failed.map((entry) => ({\n name: entry.name,\n layer: entry.layer,\n error: entry.error,\n })),\n activation_failures: activation.failed.map((entry) => ({\n name: entry.name,\n layer: entry.layer,\n error: entry.error,\n })),\n };\n if (options.watch === true) {\n warnings.push(\"extension_reload_watch_hint:watch_mode_requested_non_interactive_single_pass_only\");\n }\n return withResult(details);\n}\n\nasync function runExtensionCatalogAction(ctx: ExtensionActionContext): Promise<ExtensionCommandResult> {\n const { normalizedTarget, scope, options, global, withResult } = ctx;\n if (typeof normalizedTarget === \"string\" && normalizedTarget.length > 0 && normalizedTarget !== \"catalog\") {\n throw new PmCliError('Action \"catalog\" does not accept a package target.', EXIT_CODE.USAGE);\n }\n return withResult(await buildBundledPackageCatalog(scope, global, options));\n}\n\n/* c8 ignore start -- source-shape branch combinations are exercised in install-source focused tests */\n/**\n * Build the persisted managed-source record for an install from its resolved\n * shape: a bundled builtin alias, a local path, an npm package, or (the default) a\n * GitHub repository, capturing the location/commit/subpath provenance the manage\n * and upgrade flows later read back.\n */\nfunction buildInstallManagedSource(\n bundledAliasName: string | null,\n bundledPackageName: string | null,\n installSource: ReturnType<typeof parseExtensionInstallSource>,\n resolvedSource: Awaited<ReturnType<typeof resolveInstallSource>>,\n): ManagedExtensionSource {\n if (bundledAliasName) {\n return {\n kind: \"builtin\",\n input: bundledAliasName,\n location: bundledAliasName,\n name: bundledAliasName,\n ...(bundledPackageName === null ? {} : { package: bundledPackageName }),\n };\n }\n if (installSource.kind === \"local\") {\n return {\n kind: \"local\",\n input: installSource.input,\n location: installSource.absolute_path,\n };\n }\n if (installSource.kind === \"npm\") {\n return {\n kind: \"npm\",\n input: installSource.input,\n location: resolvedSource.resolved_subpath ?? \".\",\n package: resolvedSource.npm_package,\n version: resolvedSource.npm_version,\n };\n }\n return {\n kind: \"github\",\n input: installSource.input,\n location: resolvedSource.resolved_subpath ?? installSource.subpath ?? \".\",\n repository: installSource.repository,\n owner: installSource.owner,\n repo: installSource.repo,\n ref: installSource.ref,\n subpath: resolvedSource.resolved_subpath ?? installSource.subpath,\n commit: resolvedSource.commit,\n };\n}\n/* c8 ignore stop */\n\n/**\n * Run the install body while holding the per-destination install lock: read\n * settings and managed state, copy the validated extension into the scope root\n * unless it is already installed in place, upsert the managed entry and activation\n * state, scaffold any contributed item-type folders, runtime-probe the freshly\n * installed command paths, and return the install result envelope.\n */\nasync function performExtensionInstallUnderLock(\n ctx: ExtensionActionContext,\n input: {\n validated: Awaited<ReturnType<typeof validateExtensionDirectory>>;\n destinationDirectoryName: string;\n bundledAliasName: string | null;\n bundledPackageName: string | null;\n installSource: ReturnType<typeof parseExtensionInstallSource>;\n resolvedSource: Awaited<ReturnType<typeof resolveInstallSource>>;\n },\n): Promise<ExtensionCommandResult> {\n const { scope, resolvedRoots, warnings, global, withResult } = ctx;\n const { validated, destinationDirectoryName, bundledAliasName, bundledPackageName, installSource, resolvedSource } = input;\n const settings = await readSettings(resolvedRoots.settings_root);\n const managedStateRead = await readManagedExtensionState(resolvedRoots.selected_root);\n warnings.push(...managedStateRead.warnings);\n const destinationDirectory = path.join(resolvedRoots.selected_root, destinationDirectoryName);\n const destinationExists = await pathExists(destinationDirectory);\n const installInPlace = await areDirectoriesEquivalent(validated.directory, destinationDirectory);\n\n await fs.mkdir(resolvedRoots.selected_root, { recursive: true });\n if (!installInPlace) {\n await copyExtensionDirectoryForInstall(validated.directory, destinationDirectory);\n }\n await ensureExtensionModuleTypeMarker(destinationDirectory);\n\n const sourceRecord = buildInstallManagedSource(bundledAliasName, bundledPackageName, installSource, resolvedSource);\n\n const now = nowIso();\n const existingManagedEntry = managedStateRead.state.entries.find(\n (entry) => normalizeExtensionNameForMatch(entry.name) === normalizeExtensionNameForMatch(validated.manifest.name),\n );\n const sourceUnchanged =\n existingManagedEntry !== undefined &&\n existingManagedEntry.manifest_version === validated.manifest.version &&\n managedExtensionSourcesEquivalent(existingManagedEntry.source, sourceRecord);\n const managedState = upsertManagedEntry(managedStateRead.state, {\n name: validated.manifest.name,\n directory: destinationDirectoryName,\n scope,\n manifest_version: validated.manifest.version,\n manifest_entry: validated.manifest.entry,\n capabilities: [...validated.manifest.capabilities],\n installed_at: existingManagedEntry?.installed_at ?? now,\n updated_at: sourceUnchanged ? existingManagedEntry.updated_at : now,\n source: sourceRecord,\n });\n await writeManagedExtensionState(resolvedRoots.selected_root, managedState);\n\n const activationChanged = ensureActivated(settings, validated.manifest.name);\n if (activationChanged) {\n await writeSettings(resolvedRoots.settings_root, settings, \"settings:write\");\n }\n const refreshedInstalled = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, managedState);\n warnings.push(...refreshedInstalled.warnings);\n const runtimeProbe = await probeRuntimeCommandPathsForInstall(\n resolvedRoots.pm_root,\n settings,\n refreshedInstalled.extensions,\n global,\n );\n warnings.push(...runtimeProbe.warnings);\n // Scaffold the folders for any item types the installed package contributes\n // so the tracker is immediately healthy — matching `pm schema add-type` and\n // `pm profile apply`, the other paths that register a type. Without this a\n // freshly-installed schema package leaves a `missing_directory` health\n // warning until the first item of its type is created. Scoped to project\n // installs, where `pm_root` is unambiguously the tracker the type folders\n // belong to; a global install is not tied to one tracker, so its folders are\n // created lazily on first use in each project.\n const installedItemTypeDefinitions = runtimeProbe.item_type_registrations\n .filter((entry) => normalizeExtensionNameForMatch(entry.name) === normalizeExtensionNameForMatch(validated.manifest.name))\n .flatMap((entry) => entry.types.map((type) => ({ name: type.name, folder: type.folder })));\n if (scope === \"project\" && installedItemTypeDefinitions.length > 0) {\n await ensureTypeFolderScaffold(resolvedRoots.pm_root, installedItemTypeDefinitions, warnings, \"install:type-folder\");\n }\n const commandSummary = summarizeRuntimeCommandPathsForExtension(validated.manifest.name, runtimeProbe.installed);\n const installActivationFailure = findActivationFailureByName(\n validated.manifest.name,\n runtimeProbe.activation_failures,\n scope,\n );\n const runtimeActivationStatus = resolveInstallRuntimeActivationStatus(\n validated.manifest.name,\n scope,\n runtimeProbe.installed,\n installActivationFailure,\n );\n\n return withResult({\n extension: {\n name: validated.manifest.name,\n version: validated.manifest.version,\n entry: validated.manifest.entry,\n capabilities: validated.manifest.capabilities,\n directory: destinationDirectoryName,\n },\n source: sourceRecord,\n destination_path: destinationDirectory,\n overwritten: destinationExists && !installInPlace,\n installed_in_place: installInPlace,\n activated: true,\n settings_changed: activationChanged,\n runtime_activation_status: runtimeActivationStatus,\n command_paths: commandSummary.command_paths,\n action_paths: commandSummary.action_paths,\n command_discovery: buildInstallCommandDiscovery(validated.manifest.name, sourceRecord, commandSummary),\n activation_diagnostics: {\n failed_count: runtimeProbe.activation_failures.length,\n failed: runtimeProbe.activation_failures,\n installed_extension_failed: installActivationFailure ?? null,\n },\n });\n}\n\nasync function runExtensionInstallAction(ctx: ExtensionActionContext): Promise<ExtensionCommandResult> {\n const { action, normalizedTarget, resolvedRoots, warnings, options, global, withResult } = ctx;\n const githubOption = resolveGithubOption(options);\n const explicitSourceInput = githubOption ?? requireTarget(normalizedTarget, action, options);\n if (typeof githubOption !== \"string\" && isBundledPackageInstallAllTarget(explicitSourceInput)) {\n if (typeof options.ref === \"string\" && options.ref.trim().length > 0) {\n throw new PmCliError('Action \"install all\" does not accept --ref.', EXIT_CODE.USAGE);\n }\n const aliases = await listBundledPackageAliases();\n const packages: Array<{ alias: string; result: ExtensionCommandResult }> = [];\n for (const alias of aliases) {\n packages.push({\n alias,\n result: await runExtension(alias, { ...options, install: true }, global),\n });\n }\n for (const entry of packages) {\n warnings.push(...entry.result.warnings);\n }\n return withResult({\n installed_all: true,\n installed_count: packages.length,\n packages: packages.map((entry) => ({\n alias: entry.alias,\n ok: entry.result.ok,\n extension: (entry.result.details as { extension?: unknown }).extension,\n source: (entry.result.details as { source?: unknown }).source,\n destination_path: (entry.result.details as { destination_path?: unknown }).destination_path,\n activated: (entry.result.details as { activated?: unknown }).activated,\n settings_changed: (entry.result.details as { settings_changed?: unknown }).settings_changed,\n command_paths: (entry.result.details as { command_paths?: unknown }).command_paths,\n action_paths: (entry.result.details as { action_paths?: unknown }).action_paths,\n command_discovery: (entry.result.details as { command_discovery?: unknown }).command_discovery,\n warnings: entry.result.warnings,\n })),\n });\n }\n /* c8 ignore start -- github/local alias-source split is exercised in install-action integration tests */\n const bundledAliasSource =\n typeof githubOption === \"string\" ? null : await resolveBundledExtensionAliasSource(explicitSourceInput);\n /* c8 ignore stop */\n const bundledAliasName = bundledAliasSource === null ? null : explicitSourceInput.trim().toLowerCase();\n const bundledPackageName = bundledAliasName === null ? null : await resolveBundledPackageNpmName(bundledAliasName);\n const sourceInput = bundledAliasSource ?? explicitSourceInput;\n /* c8 ignore start -- install-source branch combinations are covered in install-sources focused tests */\n const installSource = parseExtensionInstallSource(sourceInput, {\n forceGithub: typeof githubOption === \"string\",\n ref: options.ref,\n });\n /* c8 ignore stop */\n const resolvedSource = await resolveInstallSource(installSource);\n try {\n const validated = await validateExtensionDirectory(resolvedSource.directory);\n const destinationDirectoryName = normalizeManagedDirectoryName(validated.manifest.name);\n return await withExtensionInstallLock(resolvedRoots.settings_root, destinationDirectoryName, () =>\n performExtensionInstallUnderLock(ctx, {\n validated,\n destinationDirectoryName,\n bundledAliasName,\n bundledPackageName,\n installSource,\n resolvedSource,\n }),\n );\n } finally {\n /* c8 ignore start -- cleanup hooks are only present for transient install sources */\n if (resolvedSource.cleanup) {\n await resolvedSource.cleanup();\n }\n /* c8 ignore stop */\n }\n}\n\nasync function runExtensionAdoptAllAction(ctx: ExtensionActionContext): Promise<ExtensionCommandResult> {\n const { normalizedTarget, scope, resolvedRoots, warnings, options, withResult } = ctx;\n if (normalizedTarget !== undefined) {\n throw new PmCliError('Action \"adopt-all\" does not accept a target argument.', EXIT_CODE.USAGE);\n }\n const githubOption = resolveGithubOption(options);\n if (githubOption !== undefined || (typeof options.ref === \"string\" && options.ref.trim().length > 0)) {\n throw new PmCliError('Action \"adopt-all\" does not accept --gh/--github/--ref options.', EXIT_CODE.USAGE);\n }\n const settings = await readSettings(resolvedRoots.settings_root);\n const managedStateRead = await readManagedExtensionState(resolvedRoots.selected_root);\n warnings.push(...managedStateRead.warnings);\n const installed = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, managedStateRead.state);\n warnings.push(...installed.warnings);\n const adoption = await adoptUnmanagedExtensions(\n resolvedRoots.selected_root,\n scope,\n installed.extensions,\n managedStateRead.state,\n );\n const refreshedInstalled = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, adoption.state);\n warnings.push(...refreshedInstalled.warnings);\n const triage = buildExtensionTriageSummary(scope, warnings, refreshedInstalled.extensions, options);\n warnings.push(...triage.warnings);\n /* c8 ignore start -- refresh-entry optional metadata is display-only and exercised indirectly */\n const adoptedDetails = adoption.adopted_entries.map((entry) => {\n const refreshedEntry =\n refreshedInstalled.extensions.find(\n (candidate) =>\n normalizeExtensionNameForMatch(candidate.name) === normalizeExtensionNameForMatch(entry.name) &&\n normalizeExtensionNameForMatch(candidate.directory) === normalizeExtensionNameForMatch(entry.directory),\n ) ??\n /* c8 ignore next 3 -- fallback only matters if a manifest renames between adopt and refresh */\n refreshedInstalled.extensions.find(\n (candidate) => normalizeExtensionNameForMatch(candidate.directory) === normalizeExtensionNameForMatch(entry.directory),\n );\n return {\n ...entry,\n update_check_status: refreshedEntry?.update_check_status ?? null,\n update_check_reason: refreshedEntry?.update_check_reason ?? null,\n };\n });\n /* c8 ignore stop */\n /* c8 ignore start -- adopt-all summary booleans are deterministic mirrors of adoptedDetails length */\n return withResult({\n adopted_all: adoptedDetails.length > 0,\n adopted_count: adoptedDetails.length,\n already_managed_count: adoption.already_managed_count,\n extensions: adoptedDetails,\n triage,\n warning_codes: triage.warning_codes,\n update_health_partial: triage.update_health_partial,\n update_health_coverage: triage.update_health_coverage,\n });\n /* c8 ignore stop */\n}\n\nasync function runExtensionAdoptAction(ctx: ExtensionActionContext): Promise<ExtensionCommandResult> {\n const { action, normalizedTarget, scope, resolvedRoots, warnings, options, withResult } = ctx;\n const extensionTarget = requireTarget(normalizedTarget, action, options);\n const githubOption = resolveGithubOption(options);\n const settings = await readSettings(resolvedRoots.settings_root);\n const managedStateRead = await readManagedExtensionState(resolvedRoots.selected_root);\n warnings.push(...managedStateRead.warnings);\n const installed = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, managedStateRead.state);\n warnings.push(...installed.warnings);\n const candidate = await resolveInstalledExtensionCandidate(installed.extensions, extensionTarget);\n if (!candidate) {\n throw new PmCliError(`Installed extension \"${extensionTarget}\" was not found in ${scope} scope.`, EXIT_CODE.NOT_FOUND);\n }\n if (candidate.managed) {\n return withResult({\n adopted: false,\n already_managed: true,\n extension: {\n name: candidate.name,\n directory: candidate.directory,\n },\n });\n }\n\n const extensionDirectory = path.join(resolvedRoots.selected_root, candidate.directory);\n const validated = await validateExtensionDirectory(extensionDirectory);\n const now = nowIso();\n const sourceRecord: ManagedExtensionSource =\n githubOption === undefined\n ? {\n kind: \"local\",\n input: extensionTarget,\n location: extensionDirectory,\n }\n : (() => {\n const parsed = parseExtensionInstallSource(githubOption, {\n forceGithub: true,\n ref: options.ref,\n });\n /* c8 ignore start -- forceGithub guarantees a github-kind install source */\n if (parsed.kind !== \"github\") {\n throw new PmCliError(`Invalid GitHub shorthand \"${githubOption}\".`, EXIT_CODE.USAGE);\n }\n /* c8 ignore stop */\n /* c8 ignore start -- github subpath defaults are validated in install-source parser tests */\n return {\n kind: \"github\",\n input: parsed.input,\n location: parsed.subpath ?? \".\",\n repository: parsed.repository,\n owner: parsed.owner,\n repo: parsed.repo,\n ref: parsed.ref,\n subpath: parsed.subpath,\n };\n /* c8 ignore stop */\n })();\n const managedState = upsertManagedEntry(managedStateRead.state, {\n name: validated.manifest.name,\n directory: candidate.directory,\n scope,\n manifest_version: validated.manifest.version,\n manifest_entry: validated.manifest.entry,\n capabilities: [...validated.manifest.capabilities],\n installed_at: now,\n updated_at: now,\n source: sourceRecord,\n });\n await writeManagedExtensionState(resolvedRoots.selected_root, managedState);\n const refreshedInstalled = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, managedState);\n warnings.push(...refreshedInstalled.warnings);\n /* c8 ignore start -- fallback only matters if a manifest renames between adopt and refresh */\n const refreshedEntry =\n refreshedInstalled.extensions.find(\n (entry) => normalizeExtensionNameForMatch(entry.name) === normalizeExtensionNameForMatch(validated.manifest.name),\n ) ??\n refreshedInstalled.extensions.find(\n (entry) => normalizeExtensionNameForMatch(entry.directory) === normalizeExtensionNameForMatch(candidate.directory),\n );\n /* c8 ignore stop */\n\n /* c8 ignore start -- adopt result mirrors refreshedEntry optionals for display only */\n return withResult({\n adopted: true,\n extension: {\n name: validated.manifest.name,\n directory: candidate.directory,\n version: validated.manifest.version,\n entry: validated.manifest.entry,\n },\n source: sourceRecord,\n update_check_status: refreshedEntry?.update_check_status ?? null,\n update_check_reason: refreshedEntry?.update_check_reason ?? null,\n });\n /* c8 ignore stop */\n}\n\nasync function runExtensionUninstallAction(ctx: ExtensionActionContext): Promise<ExtensionCommandResult> {\n const { action, normalizedTarget, scope, resolvedRoots, warnings, options, withResult } = ctx;\n const extensionTarget = requireTarget(normalizedTarget, action, options);\n const settings = await readSettings(resolvedRoots.settings_root);\n const managedStateRead = await readManagedExtensionState(resolvedRoots.selected_root);\n warnings.push(...managedStateRead.warnings);\n const installed = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, managedStateRead.state);\n warnings.push(...installed.warnings);\n const candidate = await resolveInstalledExtensionCandidate(installed.extensions, extensionTarget);\n if (!candidate) {\n throw new PmCliError(`Installed extension \"${extensionTarget}\" was not found in ${scope} scope.`, EXIT_CODE.NOT_FOUND);\n }\n const destinationDirectory = path.join(resolvedRoots.selected_root, candidate.directory);\n await fs.rm(destinationDirectory, { recursive: true, force: true });\n\n const updatedState: ManagedExtensionState = {\n ...managedStateRead.state,\n updated_at: nowIso(),\n /* c8 ignore start -- uninstall filter keeps both name+directory guards for legacy managed-state migrations */\n entries: managedStateRead.state.entries.filter(\n (entry) =>\n normalizeExtensionNameForMatch(entry.name) !== normalizeExtensionNameForMatch(candidate.name) &&\n normalizeExtensionNameForMatch(entry.directory) !== normalizeExtensionNameForMatch(candidate.directory),\n ),\n /* c8 ignore stop */\n };\n await writeManagedExtensionState(resolvedRoots.selected_root, updatedState);\n\n const stateChanged = clearExtensionState(settings, candidate.name);\n if (stateChanged) {\n await writeSettings(resolvedRoots.settings_root, settings, \"settings:write\");\n }\n\n return withResult({\n removed: true,\n extension: {\n name: candidate.name,\n directory: candidate.directory,\n },\n destination_path: destinationDirectory,\n settings_changed: stateChanged,\n });\n}\n\nasync function runExtensionActivateDeactivateAction(ctx: ExtensionActionContext): Promise<ExtensionCommandResult> {\n const { action, normalizedTarget, scope, resolvedRoots, warnings, options, withResult } = ctx;\n const extensionTarget = requireTarget(normalizedTarget, action, options);\n const settings = await readSettings(resolvedRoots.settings_root);\n const managedStateRead = await readManagedExtensionState(resolvedRoots.selected_root);\n warnings.push(...managedStateRead.warnings);\n const installed = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, managedStateRead.state);\n warnings.push(...installed.warnings);\n const candidate = await resolveInstalledExtensionCandidate(installed.extensions, extensionTarget);\n if (!candidate) {\n throw new PmCliError(`Installed extension \"${extensionTarget}\" was not found in ${scope} scope.`, EXIT_CODE.NOT_FOUND);\n }\n\n const settingsChanged = action === \"activate\" ? ensureActivated(settings, candidate.name) : ensureDeactivated(settings, candidate.name);\n if (settingsChanged) {\n await writeSettings(resolvedRoots.settings_root, settings, \"settings:write\");\n }\n\n return withResult({\n extension: {\n name: candidate.name,\n directory: candidate.directory,\n },\n active: action === \"activate\",\n settings_changed: settingsChanged,\n settings: {\n enabled: [...settings.extensions.enabled],\n disabled: [...settings.extensions.disabled],\n },\n });\n}\n\n/**\n * Assemble the doctor remediation hints: the triage remediations, vocabulary-aware\n * advice to inspect load failures and activation failures, and a note when a\n * managed-state fix adopted entries. Blank entries are trimmed and the list is\n * de-duplicated.\n */\nfunction buildDoctorRemediation(\n baseRemediation: string[],\n loadFailureCount: number,\n activationFailureCount: number,\n vocabulary: ExtensionCommandOptions[\"vocabulary\"],\n managedStateFix: AdoptUnmanagedExtensionsResult | null,\n): string[] {\n return [\n ...new Set(\n [\n ...baseRemediation,\n /* c8 ignore start -- vocabulary-specific remediation branches are copy-only variants */\n ...(loadFailureCount > 0\n ? [\n vocabulary === \"package\"\n ? \"Run pm package explore --project and pm package explore --global to inspect load failures.\"\n : \"Run pm extension --explore --project and pm extension --explore --global to inspect load failures.\",\n ]\n : []),\n ...(activationFailureCount > 0\n ? [\n vocabulary === \"package\"\n ? \"Review activation failures in pm package doctor --detail deep output.\"\n : \"Review activation failures in pm extension --doctor --detail deep output.\",\n ]\n : []),\n /* c8 ignore stop */\n ...(managedStateFix && managedStateFix.adopted_entries.length > 0\n ? [`Managed-state fix adopted ${managedStateFix.adopted_entries.length} extension(s).`]\n : []),\n ].map((entry) => entry.trim()).filter((entry) => entry.length > 0),\n ),\n ];\n}\n\nasync function runExtensionDoctorAction(ctx: ExtensionActionContext): Promise<ExtensionCommandResult> {\n const { normalizedTarget, scope, resolvedRoots, warnings, options, global, withResult } = ctx;\n if (normalizedTarget && normalizedTarget.trim().length > 0) {\n throw new PmCliError('Action \"doctor\" does not accept a target argument.', EXIT_CODE.USAGE);\n }\n const detailMode = parseDoctorDetailMode(options.detail);\n const includeTrace = options.trace === true;\n if (includeTrace && detailMode !== \"deep\") {\n throw new PmCliError(\"--trace requires --detail deep with --doctor.\", EXIT_CODE.USAGE);\n }\n const settings = await readSettings(resolvedRoots.settings_root);\n const managedStateRead = await readManagedExtensionState(resolvedRoots.selected_root);\n warnings.push(...managedStateRead.warnings);\n const installed = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, managedStateRead.state);\n warnings.push(...installed.warnings);\n let managedState = managedStateRead.state;\n const managedStateFix =\n options.fixManagedState === true\n ? await adoptUnmanagedExtensions(\n resolvedRoots.selected_root,\n scope,\n installed.extensions,\n managedStateRead.state,\n )\n : null;\n if (managedStateFix) {\n managedState = managedStateFix.state;\n }\n const refreshedInstalled = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, managedState);\n warnings.push(...refreshedInstalled.warnings);\n\n const loadResult = await loadExtensions({\n pmRoot: resolvedRoots.pm_root,\n settings,\n cwd: process.cwd(),\n noExtensions: global.noExtensions === true,\n });\n const activationResult = await activateExtensions({\n ...loadResult,\n loaded: loadResult.loaded,\n });\n warnings.push(...loadResult.warnings);\n warnings.push(...classifyDoctorLoadFailureWarnings(loadResult.failed));\n warnings.push(...activationResult.warnings);\n warnings.push(...classifyDoctorActivationFailureWarnings(activationResult.failed));\n warnings.push(...classifyUnusedCapabilityWarnings(loadResult, activationResult));\n warnings.push(...collectGlobalOutputOverrideDoctorWarnings(activationResult));\n warnings.push(...collectSchemaNarrowActivationDoctorWarnings(loadResult, activationResult));\n const runtimeInstalledExtensions = applyDoctorRuntimeActivationState(refreshedInstalled.extensions, loadResult, activationResult);\n const doctorConsistency = buildDoctorConsistencySummary(\n scope,\n runtimeInstalledExtensions,\n loadResult.loaded.map((entry) => ({ layer: entry.layer, name: entry.name })),\n loadResult.failed.map((entry) => ({ name: entry.name })),\n loadResult.disabled_by_flag,\n );\n warnings.push(...doctorConsistency.warnings);\n const updateCheckWarnings = runtimeInstalledExtensions\n .filter((entry) => entry.update_check_status === \"failed\")\n .map((entry) => `extension_update_check_failed:${entry.name}`);\n warnings.push(...updateCheckWarnings);\n\n const triage = buildExtensionTriageSummary(scope, warnings, runtimeInstalledExtensions, options);\n warnings.push(...triage.warnings);\n const normalizedWarnings = [...triage.warnings];\n const policySummary = {\n mode: loadResult.policy.mode,\n trust_mode: loadResult.policy.trust_mode,\n require_provenance: loadResult.policy.require_provenance,\n default_sandbox_profile: loadResult.policy.default_sandbox_profile,\n // Honest trust model (ADR pm-6ef3): keep this caveat to one concise line.\n sandbox_enforcement:\n \"advisory: sandbox_profile/permissions are declaration-based load gates, not runtime isolation (ADR pm-6ef3)\",\n trusted_extensions_count: loadResult.policy.trusted_extensions.length,\n allowed_extensions_count: loadResult.policy.allowed_extensions.length,\n blocked_extensions_count: loadResult.policy.blocked_extensions.length,\n allowed_capabilities_count: loadResult.policy.allowed_capabilities.length,\n blocked_capabilities_count: loadResult.policy.blocked_capabilities.length,\n allowed_surfaces_count: loadResult.policy.allowed_surfaces.length,\n blocked_surfaces_count: loadResult.policy.blocked_surfaces.length,\n allowed_commands_count: loadResult.policy.allowed_commands.length,\n blocked_commands_count: loadResult.policy.blocked_commands.length,\n allowed_actions_count: loadResult.policy.allowed_actions.length,\n blocked_actions_count: loadResult.policy.blocked_actions.length,\n allowed_services_count: loadResult.policy.allowed_services.length,\n blocked_services_count: loadResult.policy.blocked_services.length,\n extension_override_count: loadResult.policy.extension_overrides.length,\n };\n const capabilityGuidance = collectUnknownCapabilityGuidance(normalizedWarnings);\n const capabilityContract = buildCapabilityContractMetadata();\n const warningCodes = triage.warning_codes;\n const remediation = buildDoctorRemediation(\n triage.remediation,\n loadResult.failed.length,\n activationResult.failed.length,\n options.vocabulary,\n managedStateFix,\n );\n\n const summary = {\n status: triage.status,\n scope,\n warning_count: triage.warning_count,\n warning_codes: warningCodes,\n total_extensions: runtimeInstalledExtensions.length,\n managed_total: runtimeInstalledExtensions.filter((entry) => entry.managed).length,\n enabled_total: runtimeInstalledExtensions.filter((entry) => entry.enabled).length,\n active_total: runtimeInstalledExtensions.filter((entry) => entry.active).length,\n unmanaged_loaded_extension_count: triage.unmanaged_loaded_extension_count,\n unmanaged_action_required_extension_count: triage.unmanaged_action_required_extension_count,\n unmanaged_expected_extension_count: triage.unmanaged_expected_extension_count,\n runtime_active_total: runtimeInstalledExtensions.filter((entry) => entry.runtime_active === true).length,\n activation_status_totals: {\n ok: runtimeInstalledExtensions.filter((entry) => entry.activation_status === \"ok\").length,\n failed: runtimeInstalledExtensions.filter((entry) => entry.activation_status === \"failed\").length,\n not_loaded: runtimeInstalledExtensions.filter((entry) => entry.activation_status === \"not_loaded\").length,\n unknown: runtimeInstalledExtensions.filter((entry) => entry.activation_status === \"unknown\").length,\n },\n unknown_capability_count: capabilityGuidance.length,\n capability_contract_version: capabilityContract.version,\n update_available_total: runtimeInstalledExtensions.filter((entry) => entry.update_available === true).length,\n update_health_coverage: triage.update_health_coverage,\n update_health_partial: triage.update_health_partial,\n update_check_failed_total: runtimeInstalledExtensions.filter((entry) => entry.update_check_status === \"failed\").length,\n load_failure_count: loadResult.failed.length,\n activation_failure_count: activationResult.failed.length,\n blocking_failure_count: loadResult.failed.length + activationResult.failed.length,\n has_blocking_failures: loadResult.failed.length + activationResult.failed.length > 0,\n consistency_warning_count: doctorConsistency.warnings.length,\n trace_enabled: includeTrace,\n policy: policySummary,\n remediation,\n };\n\n const managedStateFixSummary = managedStateFix\n ? {\n requested: true,\n applied: managedStateFix.adopted_entries.length > 0,\n adopted_count: managedStateFix.adopted_entries.length,\n already_managed_count: managedStateFix.already_managed_count,\n adopted_extensions: managedStateFix.adopted_entries.map((entry) => entry.name),\n }\n : {\n requested: false,\n applied: false,\n adopted_count: 0,\n already_managed_count: refreshedInstalled.extensions.filter((entry) => entry.managed).length,\n adopted_extensions: [] as string[],\n };\n\n const details: Record<string, unknown> = {\n mode: detailMode,\n summary,\n triage,\n trace_enabled: includeTrace,\n capability_contract: capabilityContract,\n capability_guidance: capabilityGuidance,\n managed_state_fix: managedStateFixSummary,\n policy: loadResult.policy,\n };\n if (detailMode === \"deep\") {\n const activationFailedDetails = includeTrace\n ? activationResult.failed\n : activationResult.failed.map((entry) => {\n const { trace: _trace, ...rest } = entry;\n return rest;\n });\n details.deep = {\n warnings: normalizedWarnings,\n warning_codes: warningCodes,\n capability_contract: capabilityContract,\n capability_guidance: capabilityGuidance,\n trace_enabled: includeTrace,\n managed_state: {\n path: managedStateRead.path,\n count: managedState.entries.length,\n entries: managedState.entries,\n },\n installed_extensions: runtimeInstalledExtensions,\n load: {\n roots: loadResult.roots,\n policy: loadResult.policy,\n warnings: loadResult.warnings,\n failed: loadResult.failed,\n loaded: loadResult.loaded.map((entry) => ({\n layer: entry.layer,\n directory: entry.directory,\n name: entry.name,\n version: entry.version,\n entry: entry.entry,\n priority: entry.priority,\n })),\n },\n activation: {\n failed: activationFailedDetails,\n warnings: activationResult.warnings,\n hook_counts: activationResult.hook_counts,\n registration_counts: activationResult.registration_counts,\n parser_override_count: activationResult.parser_override_count,\n preflight_override_count: activationResult.preflight_override_count,\n service_override_count: activationResult.service_override_count,\n renderer_override_count: activationResult.renderer_override_count,\n },\n consistency: doctorConsistency.summary,\n };\n if (includeTrace) {\n (details.deep as Record<string, unknown>).trace = {\n activation_failures: activationResult.failed\n .filter((entry) => entry.trace !== undefined)\n .map((entry) => ({\n layer: entry.layer,\n name: entry.name,\n entry_path: entry.entry_path,\n error: entry.error,\n method: entry.trace?.method,\n command: entry.trace?.command,\n capability: entry.trace?.capability,\n missing_capability: entry.trace?.missing_capability,\n registration_index: entry.trace?.registration_index,\n expected_schema: entry.trace?.expected_schema,\n hint: entry.trace?.hint,\n received: entry.trace?.received,\n })),\n };\n }\n }\n return withResult(details);\n}\n\nasync function runExtensionDescribeAction(ctx: ExtensionActionContext): Promise<ExtensionCommandResult> {\n const { normalizedTarget, scope, resolvedRoots, warnings, options, global, withResult } = ctx;\n const settings = await readSettings(resolvedRoots.settings_root);\n const loadResult = await loadExtensions({\n pmRoot: resolvedRoots.pm_root,\n settings,\n cwd: process.cwd(),\n noExtensions: global.noExtensions === true,\n });\n const activationResult = await activateExtensions(loadResult);\n warnings.push(...loadResult.warnings);\n warnings.push(...activationResult.warnings);\n const describeResult = buildExtensionDescribeResult(normalizedTarget, loadResult, activationResult);\n if (normalizedTarget !== undefined && describeResult.extensions.length === 0) {\n const noun = options.vocabulary === \"package\" ? \"package\" : \"extension\";\n const loadedNames = [\n ...new Set(\n loadResult.loaded.map((entry) =>\n options.vocabulary === \"package\" && typeof entry.source_package === \"string\" && entry.source_package.trim().length > 0\n ? entry.source_package.trim()\n : entry.name,\n ),\n ),\n ].sort((left, right) => left.localeCompare(right));\n const loadedHint = loadedNames.length > 0 ? ` Loaded ${noun} names: ${loadedNames.join(\", \")}.` : \"\";\n throw new PmCliError(\n `No loaded ${noun} named \"${normalizedTarget}\" was found in ${scope} scope.${loadedHint} Run pm ${noun} explore to list discovered ${noun}s.`,\n EXIT_CODE.NOT_FOUND,\n );\n }\n return withResult({\n target: describeResult.target,\n total: describeResult.total,\n extensions: describeResult.extensions,\n union: describeResult.union,\n });\n}\n\n/* c8 ignore start -- explore/manage action split is validated by dedicated command-action tests */\nasync function runExtensionExploreManageAction(ctx: ExtensionActionContext): Promise<ExtensionCommandResult> {\n const { action, scope, resolvedRoots, warnings, options, global, withResult } = ctx;\n const settings = await readSettings(resolvedRoots.settings_root);\n const configuredPolicy = buildExtensionPolicyDetails(settings.extensions.policy);\n const managedStateRead = await readManagedExtensionState(resolvedRoots.selected_root);\n warnings.push(...managedStateRead.warnings);\n const installed = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, managedStateRead.state);\n warnings.push(...installed.warnings);\n\n let managedState = managedStateRead.state;\n const managedStateFix =\n action === \"manage\" && options.fixManagedState === true\n ? await adoptUnmanagedExtensions(\n resolvedRoots.selected_root,\n scope,\n installed.extensions,\n managedStateRead.state,\n )\n : null;\n if (managedStateFix) {\n managedState = managedStateFix.state;\n }\n if (action === \"manage\") {\n const updates = await Promise.all(\n managedState.entries.map(async (entry) => {\n if (entry.source.kind !== \"github\") {\n return entry;\n }\n const updateStatus = await checkGithubUpdate(entry.source);\n return {\n ...entry,\n last_update_check_at: updateStatus.checked_at,\n last_update_remote_commit: updateStatus.remote_commit,\n update_available: updateStatus.available,\n update_error: updateStatus.error,\n };\n }),\n );\n managedState = {\n ...managedState,\n updated_at: nowIso(),\n entries: sortManagedEntries(updates),\n };\n await writeManagedExtensionState(resolvedRoots.selected_root, managedState);\n }\n\n const refreshedInstalled = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, managedState);\n warnings.push(...refreshedInstalled.warnings);\n if (action === \"manage\") {\n const updateWarnings = refreshedInstalled.extensions\n .filter((entry) => entry.update_check_status === \"failed\")\n .map((entry) => `extension_update_check_failed:${entry.name}`);\n warnings.push(...updateWarnings);\n }\n let runtimeProbeSummary: Record<string, unknown> | undefined;\n let runtimeInstalledExtensions = refreshedInstalled.extensions;\n let runtimeActivationFailures: ActivationFailureDiagnostic[] | undefined;\n if (action === \"explore\" || options.runtimeProbe === true) {\n const loadResult = await loadExtensions({\n pmRoot: resolvedRoots.pm_root,\n settings,\n cwd: process.cwd(),\n noExtensions: global.noExtensions === true,\n });\n const activationResult = await activateExtensions({\n ...loadResult,\n loaded: loadResult.loaded,\n });\n warnings.push(...loadResult.warnings);\n warnings.push(...activationResult.warnings);\n runtimeInstalledExtensions = applyDoctorRuntimeActivationState(refreshedInstalled.extensions, loadResult, activationResult);\n runtimeActivationFailures = collectActivationFailureDiagnostics(activationResult.failed);\n runtimeProbeSummary = {\n requested: true,\n executed: true,\n reason: action === \"explore\" ? \"explore_defaults_to_runtime_probe\" : \"runtime_probe_requested\",\n load_failure_count: loadResult.failed.length,\n activation_failure_count: activationResult.failed.length,\n warning_count: [...new Set([...loadResult.warnings, ...activationResult.warnings])].length,\n policy: loadResult.policy,\n };\n } else if (action === \"manage\") {\n runtimeProbeSummary = {\n requested: false,\n executed: false,\n };\n }\n\n const triage = buildExtensionTriageSummary(scope, warnings, runtimeInstalledExtensions, options);\n warnings.push(...triage.warnings);\n const details: Record<string, unknown> = {\n total: runtimeInstalledExtensions.length,\n managed_total: runtimeInstalledExtensions.filter((entry) => entry.managed).length,\n enabled_total: runtimeInstalledExtensions.filter((entry) => entry.enabled).length,\n active_total: runtimeInstalledExtensions.filter((entry) => entry.active).length,\n extensions: runtimeInstalledExtensions,\n triage,\n policy: configuredPolicy,\n };\n if (runtimeActivationFailures !== undefined) {\n details.activation_diagnostics = {\n failed_count: runtimeActivationFailures.length,\n failed: runtimeActivationFailures,\n };\n }\n if (action === \"explore\") {\n details.runtime_probe = runtimeProbeSummary;\n }\n if (action === \"manage\") {\n details.runtime_probe = runtimeProbeSummary;\n details.managed_state_fix =\n managedStateFix !== null\n ? {\n requested: true,\n applied: managedStateFix.adopted_entries.length > 0,\n adopted_count: managedStateFix.adopted_entries.length,\n adopted_extensions: managedStateFix.adopted_entries.map((entry) => entry.name),\n already_managed_count: managedStateFix.already_managed_count,\n }\n : {\n requested: false,\n applied: false,\n adopted_count: 0,\n adopted_extensions: [],\n already_managed_count: runtimeInstalledExtensions.filter((entry) => entry.managed).length,\n };\n }\n return withResult(details);\n}\n/* c8 ignore stop */\n\n// Dispatch table from lifecycle action to its handler. `explore`/`manage` and\n// `activate`/`deactivate` share a handler that branches on `ctx.action`; the\n// closed ExtensionCommandAction union guarantees every action has an entry, so\n// runExtension needs no unsupported-action fallthrough.\nconst EXTENSION_ACTION_HANDLERS: Record<\n ExtensionCommandAction,\n (ctx: ExtensionActionContext) => Promise<ExtensionCommandResult>\n> = {\n init: runExtensionInitAction,\n install: runExtensionInstallAction,\n uninstall: runExtensionUninstallAction,\n explore: runExtensionExploreManageAction,\n manage: runExtensionExploreManageAction,\n describe: runExtensionDescribeAction,\n reload: runExtensionReloadAction,\n doctor: runExtensionDoctorAction,\n catalog: runExtensionCatalogAction,\n adopt: runExtensionAdoptAction,\n \"adopt-all\": runExtensionAdoptAllAction,\n activate: runExtensionActivateDeactivateAction,\n deactivate: runExtensionActivateDeactivateAction,\n};\n\nexport const _testOnly = {\n adoptUnmanagedExtensions,\n buildExtensionPolicyDetails,\n buildInstallCommandDiscovery,\n checkGithubUpdate,\n clearExtensionState,\n collectActivationFailureDiagnostics,\n findActivationFailureByName,\n resolveInstallRuntimeActivationStatus,\n collectGlobalOutputOverrideDoctorWarnings,\n collectSchemaNarrowActivationDoctorWarnings,\n copyExtensionDirectoryWithoutSelfNesting,\n isErrnoCode,\n isRetriableExtensionInstallCopyError,\n listInstalledExtensions,\n requireTarget,\n resolveAction,\n resolveCommandDiscoveryPackageName,\n resolveGithubOption,\n resolveInstalledExtensionCandidate,\n resolveScope,\n resolveUpdateCheckResolution,\n withExtensionInstallLock,\n};\n"],"names":[],"mappings":"AAAA;;;;GAIG;;;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAC9G,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAEpE,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAE3D,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AAClF,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAEvD,6EAA6E;AAC7E,2EAA2E;AAC3E,4EAA4E;AAC5E,yEAAyE;AACzE,+CAA+C;AAC/C,OAAO,EACL,mBAAmB,EACnB,8BAA8B,EAC9B,6BAA6B,EAC7B,sBAAsB,EACtB,0BAA0B,GAC3B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,kBAAkB,EAClB,iCAAiC,EACjC,yBAAyB,EACzB,0BAA0B,EAC1B,kBAAkB,EAClB,gCAAgC,GAIjC,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,2BAA2B,EAC3B,oBAAoB,EACpB,wBAAwB,EACxB,aAAa,GACd,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,kCAAkC,EAClC,4BAA4B,EAC5B,gCAAgC,EAChC,yBAAyB,EACzB,+BAA+B,EAC/B,0BAA0B,GAC3B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EACL,iCAAiC,EACjC,iCAAiC,EACjC,uCAAuC,EACvC,gCAAgC,EAChC,2BAA2B,EAC3B,qBAAqB,EACrB,gCAAgC,EAChC,+BAA+B,EAC/B,6BAA6B,GAC9B,MAAM,uBAAuB,CAAC;AAC/B,gFAAgF;AAChF,wEAAwE;AACxE,OAAO,EACL,sBAAsB,EACtB,0BAA0B,EAC1B,yBAAyB,EACzB,0BAA0B,EAC1B,gCAAgC,EAChC,2BAA2B,GAC5B,CAAC;AAQF,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAC1C,MAAM,+BAA+B,GAAG,CAAC,CAAC;AAC1C,MAAM,+BAA+B,GAAG,GAAG,CAAC;AAC5C,MAAM,+BAA+B,GAAG,GAAG,CAAC;AAC5C,MAAM,+BAA+B,GAAG,OAAO,CAAC;AAoBhD,MAAM,wBAAwB,GAAG;IAC/B,CAAC,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC;IACnC,CAAC,WAAW,EAAE,WAAW,EAAE,aAAa,CAAC;IACzC,CAAC,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC;IACnC,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,CAAC;IAChC,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC;IAChC,CAAC,UAAU,EAAE,UAAU,EAAE,YAAY,CAAC;IACtC,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC;IAChC,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC;IAChC,CAAC,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC;IACnC,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC;IAC1B,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,CAAC;IAClC,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC;IAC7B,CAAC,WAAW,EAAE,WAAW,EAAE,aAAa,CAAC;IACzC,CAAC,UAAU,EAAE,UAAU,EAAE,YAAY,CAAC;IACtC,CAAC,YAAY,EAAE,YAAY,EAAE,cAAc,CAAC;CAC4C,CAAC;AAE3F,MAAM,0BAA0B,GAAG,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,AAAD,EAAG,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC;KAClF,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;KAC7D,IAAI,CAAC,IAAI,CAAC,CAAC;AACd,MAAM,sBAAsB,GAAkD;IAC5E,OAAO,EAAE,WAAW;IACpB,SAAS,EAAE,aAAa;IACxB,OAAO,EAAE,WAAW;IACpB,MAAM,EAAE,UAAU;IAClB,QAAQ,EAAE,YAAY;IACtB,MAAM,EAAE,UAAU;IAClB,MAAM,EAAE,UAAU;IAClB,OAAO,EAAE,WAAW;IACpB,KAAK,EAAE,SAAS;IAChB,WAAW,EAAE,aAAa;IAC1B,QAAQ,EAAE,YAAY;IACtB,UAAU,EAAE,cAAc;IAC1B,IAAI,EAAE,QAAQ;CACf,CAAC;AA4FF,MAAM,oBAAoB,GAAG,oBAAoB,CAAC;AAyElD,SAAS,2BAA2B,CAAC,MAA0C;IAoC7E,MAAM,SAAS,GAAG,CAAC,MAAM,CAAC,mBAAmB,IAAI,EAAE,CAAC;SACjD,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAClB,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE;QAC1B,QAAQ,EAAE,QAAQ,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;QACvD,eAAe,EAAE,QAAQ,CAAC,eAAe,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;QACrE,kBAAkB,EAAE,QAAQ,CAAC,kBAAkB,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;QAC3E,eAAe,EAAE,QAAQ,CAAC,eAAe;QACzC,oBAAoB,EAAE,mBAAmB,CAAC,QAAQ,CAAC,oBAAoB,IAAI,EAAE,CAAC;QAC9E,oBAAoB,EAAE,mBAAmB,CAAC,QAAQ,CAAC,oBAAoB,IAAI,EAAE,CAAC;QAC9E,gBAAgB,EAAE,mBAAmB,CAAC,QAAQ,CAAC,gBAAgB,IAAI,EAAE,CAAC;QACtE,gBAAgB,EAAE,mBAAmB,CAAC,QAAQ,CAAC,gBAAgB,IAAI,EAAE,CAAC;QACtE,gBAAgB,EAAE,mBAAmB,CAAC,QAAQ,CAAC,gBAAgB,IAAI,EAAE,CAAC;QACtE,gBAAgB,EAAE,mBAAmB,CAAC,QAAQ,CAAC,gBAAgB,IAAI,EAAE,CAAC;QACtE,eAAe,EAAE,mBAAmB,CAAC,QAAQ,CAAC,eAAe,IAAI,EAAE,CAAC;QACpE,eAAe,EAAE,mBAAmB,CAAC,QAAQ,CAAC,eAAe,IAAI,EAAE,CAAC;QACpE,gBAAgB,EAAE,mBAAmB,CAAC,QAAQ,CAAC,gBAAgB,IAAI,EAAE,CAAC;QACtE,gBAAgB,EAAE,mBAAmB,CAAC,QAAQ,CAAC,gBAAgB,IAAI,EAAE,CAAC;KACvE,CAAC,CAAC;SACF,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;SAC9C,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9D,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,KAAK,IAAI;QACtD,kBAAkB,EAAE,mBAAmB,CAAC,MAAM,CAAC,kBAAkB,IAAI,EAAE,CAAC;QACxE,uBAAuB,EAAE,MAAM,CAAC,uBAAuB,IAAI,MAAM;QACjE,kBAAkB,EAAE,mBAAmB,CAAC,MAAM,CAAC,kBAAkB,IAAI,EAAE,CAAC;QACxE,kBAAkB,EAAE,mBAAmB,CAAC,MAAM,CAAC,kBAAkB,IAAI,EAAE,CAAC;QACxE,oBAAoB,EAAE,mBAAmB,CAAC,MAAM,CAAC,oBAAoB,IAAI,EAAE,CAAC;QAC5E,oBAAoB,EAAE,mBAAmB,CAAC,MAAM,CAAC,oBAAoB,IAAI,EAAE,CAAC;QAC5E,gBAAgB,EAAE,mBAAmB,CAAC,MAAM,CAAC,gBAAgB,IAAI,EAAE,CAAC;QACpE,gBAAgB,EAAE,mBAAmB,CAAC,MAAM,CAAC,gBAAgB,IAAI,EAAE,CAAC;QACpE,gBAAgB,EAAE,mBAAmB,CAAC,MAAM,CAAC,gBAAgB,IAAI,EAAE,CAAC;QACpE,gBAAgB,EAAE,mBAAmB,CAAC,MAAM,CAAC,gBAAgB,IAAI,EAAE,CAAC;QACpE,eAAe,EAAE,mBAAmB,CAAC,MAAM,CAAC,eAAe,IAAI,EAAE,CAAC;QAClE,eAAe,EAAE,mBAAmB,CAAC,MAAM,CAAC,eAAe,IAAI,EAAE,CAAC;QAClE,gBAAgB,EAAE,mBAAmB,CAAC,MAAM,CAAC,gBAAgB,IAAI,EAAE,CAAC;QACpE,gBAAgB,EAAE,mBAAmB,CAAC,MAAM,CAAC,gBAAgB,IAAI,EAAE,CAAC;QACpE,mBAAmB,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAChD,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,GAAG,CAAC,QAAQ,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzD,GAAG,CAAC,QAAQ,CAAC,eAAe,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvE,GAAG,CAAC,QAAQ,CAAC,kBAAkB,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7E,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAClF,GAAG,CAAC,QAAQ,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,QAAQ,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5G,GAAG,CAAC,QAAQ,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,QAAQ,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5G,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChG,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChG,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChG,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChG,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7F,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7F,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChG,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACjG,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC;AAED,SAAS,oCAAoC,CAAC,KAAc;IAC1D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,EAAE,CAAC;QACtE,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,IAAI,GAAI,KAA4B,CAAC,IAAI,CAAC;IAChD,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,QAAQ,CAAC;AACxE,CAAC;AAED,SAAS,WAAW,CAAC,KAAc,EAAE,IAAY;IAC/C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,IAAI,KAAK,IAAK,KAA4B,CAAC,IAAI,KAAK,IAAI,CAAC;AACvH,CAAC;AAED,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;GAOG;AACH,KAAK,UAAU,+BAA+B,CAAC,oBAA4B;IACzE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,cAAc,CAAC,CAAC;IACnE,IAAI,MAAM,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACjC,OAAO;IACT,CAAC;IACD,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC7F,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gCAAgC,CACpD,eAAuB,EACvB,oBAA4B,EAC5B,gBAA8B,EAAE,CAAC,EAAE;IAEnC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,+BAA+B,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC;QAC/E,IAAI,CAAC;YACH,IAAI,MAAM,UAAU,CAAC,oBAAoB,CAAC,EAAE,CAAC;gBAC3C,MAAM,EAAE,CAAC,EAAE,CAAC,oBAAoB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACtE,CAAC;YACD,MAAM,wCAAwC,CAAC,eAAe,EAAE,oBAAoB,EAAE,aAAa,CAAC,CAAC;YACrG,OAAO;QACT,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,IAAI,CAAC,oCAAoC,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,+BAA+B,EAAE,CAAC;gBAChG,MAAM,KAAK,CAAC;YACd,CAAC;YACD,MAAM,KAAK,CAAC,+BAA+B,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;AACH,CAAC;AAED,KAAK,UAAU,wCAAwC,CACrD,eAAuB,EACvB,oBAA4B,EAC5B,aAA2B;IAE3B,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IACrD,MAAM,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC/D,IAAI,cAAc,KAAK,mBAAmB,EAAE,CAAC;QAC3C,OAAO;IACT,CAAC;IACD,IAAI,CAAC,qBAAqB,CAAC,cAAc,EAAE,mBAAmB,CAAC,EAAE,CAAC;QAChE,MAAM,aAAa,CAAC,eAAe,EAAE,oBAAoB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7F,OAAO;IACT,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,oBAAoB,CAAC,CAAC,CAAC;IACnF,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IAC5D,IAAI,CAAC;QACH,MAAM,aAAa,CAAC,eAAe,EAAE,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACxF,MAAM,aAAa,CAAC,eAAe,EAAE,oBAAoB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/F,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC;AAED,KAAK,UAAU,wBAAwB,CACrC,YAAoB,EACpB,wBAAgC,EAChC,GAAqB,EACrB,OAIC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,yBAAyB,CAAC,CAAC;IAC/E,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,wBAAwB,OAAO,CAAC,CAAC;IACzE,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,IAAI,+BAA+B,CAAC,CAAC,CAAC;IAC/F,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,IAAI,+BAA+B,CAAC,CAAC,CAAC;IAC9F,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,IAAI,+BAA+B,CAAC,CAAC,CAAC;IAE9F,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,QAAQ,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC;QACxD,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACzB,QAAQ,GAAG,IAAI,CAAC;YAChB,MAAM,EAAE,CAAC,SAAS,CAChB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,EACjC,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,wBAAwB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EACjH,MAAM,CACP,CAAC;YACF,MAAM;QACR,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC;gBAClC,MAAM,KAAK,CAAC;YACd,CAAC;YACD,IAAI,IAAI,GAA+C,IAAI,CAAC;YAC5D,IAAI,CAAC;gBACH,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACjC,CAAC;YAAC,MAAM,CAAC;gBACP,IAAI,GAAG,IAAI,CAAC;YACd,CAAC;YACD,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,GAAG,OAAO,EAAE,CAAC;gBAChD,MAAM,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;gBACxD,SAAS;YACX,CAAC;YACD,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,UAAU,CAClB,qDAAqD,wBAAwB,IAAI,EACjF,SAAS,CAAC,QAAQ,CACnB,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,OAAO,MAAM,GAAG,EAAE,CAAC;IACrB,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IACjF,CAAC;AACH,CAAC;AAED,KAAK,UAAU,kCAAkC,CAC/C,SAAoC,EACpC,eAAuB;IAEvB,MAAM,YAAY,GAAG,CAAC,eAAe,CAAC,CAAC;IACvC,MAAM,wBAAwB,GAAG,MAAM,+BAA+B,CAAC,eAAe,CAAC,CAAC;IACxF,IAAI,wBAAwB,EAAE,CAAC;QAC7B,YAAY,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IAC9C,CAAC;IACD,MAAM,iBAAiB,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,8BAA8B,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/I,KAAK,MAAM,MAAM,IAAI,iBAAiB,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,8BAA8B,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,CAAC;QAChG,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,8BAA8B,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,MAAM,CAAC,CAAC;QAC1G,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,WAAW,CAAC;QACrB,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,kBAAkB,CAAC,QAAoB,EAAE,IAAY;IAC5D,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACnC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,mBAAmB,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1E,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,mBAAmB,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC5E,IAAI,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;QACjC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,eAAe,CAAC,QAAoB,EAAE,IAAY;IACzD,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACnC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,mBAAmB,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1E,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,mBAAmB,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC5E,MAAM,eAAe,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;IACrC,MAAM,gBAAgB,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC;IACvC,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAChC,IAAI,OAAO,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC9B,CAAC;IACD,QAAQ,CAAC,UAAU,CAAC,OAAO,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5F,QAAQ,CAAC,UAAU,CAAC,QAAQ,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9F,OAAO,CACL,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC7E,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAChF,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,QAAoB,EAAE,IAAY;IAC3D,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACnC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,mBAAmB,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1E,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,mBAAmB,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC5E,MAAM,eAAe,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;IACrC,MAAM,gBAAgB,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC;IACvC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAC/B,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC7B,QAAQ,CAAC,UAAU,CAAC,OAAO,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5F,QAAQ,CAAC,UAAU,CAAC,QAAQ,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9F,OAAO,CACL,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC7E,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAChF,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,QAAoB,EAAE,IAAY;IAC7D,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACnC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,mBAAmB,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1E,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,mBAAmB,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC5E,MAAM,eAAe,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;IACrC,MAAM,gBAAgB,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC;IACvC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAC/B,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAChC,QAAQ,CAAC,UAAU,CAAC,OAAO,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5F,QAAQ,CAAC,UAAU,CAAC,QAAQ,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9F,OAAO,CACL,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC7E,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAChF,CAAC;AACJ,CAAC;AAED,SAAS,4BAA4B,CAAC,MAAc;IAClD,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrD,MAAM,UAAU,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,SAAS,KAAK,gBAAgB,CAAC,CAAC;IAClG,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;IACxD,CAAC;IACD,MAAM,WAAW,GAAG,gBAAgB,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,IAAI,OAAO,GAAqF,IAAI,CAAC;IACrG,KAAK,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,wBAAwB,EAAE,CAAC;QACjE,MAAM,QAAQ,GAAG,8BAA8B,CAAC,gBAAgB,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;QAC1F,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACtB,SAAS;QACX,CAAC;QACD,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,OAAO,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;YACrC,SAAS;QACX,CAAC;QACD,IAAI,QAAQ,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;YAChC,OAAO,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QACvC,CAAC;IACH,CAAC;IACD,OAAO,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;AAClF,CAAC;AAED,SAAS,gCAAgC,CAAC,MAAc,EAAE,OAAgC;IACxF,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC;IACxE,MAAM,UAAU,GAAG,4BAA4B,CAAC,MAAM,CAAC,CAAC;IACxD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,IAAI,UAAU,CACnB,4CAA4C,0BAA0B,kEAAkE,EACxI,SAAS,CAAC,KAAK,CAChB,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,IAAI,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;IAChD,OAAO,IAAI,UAAU,CACnB,WAAW,IAAI,sBAAsB,MAAM,oBAAoB,UAAU,CAAC,IAAI,IAAI,EAClF,SAAS,CAAC,KAAK,EACf;QACE,IAAI,EAAE,0BAA0B;QAChC,QAAQ,EAAE,eAAe,0BAA0B,GAAG;QACtD,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,IAAI,SAAS,CAAC;QACxC,QAAQ,EAAE;YACR,iBAAiB,EAAE,MAAM,IAAI,IAAI,MAAM,EAAE;YACzC,eAAe,EAAE,OAAO;YACxB,mBAAmB,EAAE;gBACnB;oBACE,MAAM,EAAE,kBAAkB;oBAC1B,OAAO;oBACP,MAAM,EAAE,iCAAiC,MAAM,GAAG;iBACnD;aACF;SACF;KACF,CACF,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,kFAAkF;AAClF,+EAA+E;AAC/E,MAAM,+BAA+B,GAAG;IACtC,CAAC,SAAS,EAAE,SAAS,CAAC;IACtB,CAAC,WAAW,EAAE,WAAW,CAAC;IAC1B,CAAC,SAAS,EAAE,SAAS,CAAC;IACtB,CAAC,QAAQ,EAAE,QAAQ,CAAC;IACpB,CAAC,UAAU,EAAE,UAAU,CAAC;IACxB,CAAC,QAAQ,EAAE,QAAQ,CAAC;IACpB,CAAC,QAAQ,EAAE,QAAQ,CAAC;IACpB,CAAC,SAAS,EAAE,SAAS,CAAC;IACtB,CAAC,MAAM,EAAE,MAAM,CAAC;IAChB,CAAC,UAAU,EAAE,MAAM,CAAC;IACpB,CAAC,OAAO,EAAE,OAAO,CAAC;IAClB,CAAC,UAAU,EAAE,WAAW,CAAC;IACzB,CAAC,UAAU,EAAE,UAAU,CAAC;IACxB,CAAC,YAAY,EAAE,YAAY,CAAC;CACoE,CAAC;AAEnG;;;;;;GAMG;AACH,SAAS,+BAA+B,CAAC,gBAAwB;IAC/D,IAAI,gBAAgB,KAAK,QAAQ,EAAE,CAAC;QAClC,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,IAAI,gBAAgB,KAAK,QAAQ,EAAE,CAAC;QAClC,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;QACnC,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,gBAAgB,KAAK,MAAM,IAAI,gBAAgB,KAAK,UAAU,EAAE,CAAC;QACnE,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;QACnC,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,gBAAgB,KAAK,QAAQ,EAAE,CAAC;QAClC,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,IAAI,gBAAgB,KAAK,MAAM,IAAI,gBAAgB,KAAK,EAAE,EAAE,CAAC;QAC3D,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,aAAa,CAAC,MAA0B,EAAE,OAAgC;IACjF,MAAM,QAAQ,GAAG;QACf,GAAG,IAAI,GAAG,CACR,+BAA+B,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CACnH;KACF,CAAC;IACF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,cAAc,GAAG,+BAA+B,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;QACpF,IAAI,cAAc,EAAE,CAAC;YACnB,OAAO,cAAc,CAAC;QACxB,CAAC;QACD,MAAM,gCAAgC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,UAAU,CAAC,gDAAgD,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;IAC1F,CAAC;IACD,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;AACrB,CAAC;AAED,SAAS,YAAY,CAAC,OAAgC;IACpD,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,KAAK,IAAI,CAAC;IACvE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC;IACvC,IAAI,WAAW,IAAI,MAAM,EAAE,CAAC;QAC1B,MAAM,IAAI,UAAU,CAAC,oEAAoE,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;IAC9G,CAAC;IACD,OAAO,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;AACvC,CAAC;AACD,SAAS,4BAA4B,CAAC,YAAgD;IACpF,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO;YACL,MAAM,EAAE,mBAAmB;YAC3B,MAAM,EAAE,uBAAuB;SAChC,CAAC;IACJ,CAAC;IACD,IAAI,YAAY,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC1C,OAAO;YACL,MAAM,EAAE,oBAAoB;YAC5B,MAAM,EAAE,uBAAuB,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE;SAC1D,CAAC;IACJ,CAAC;IACD,MAAM,WAAW,GAAG,OAAO,YAAY,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1G,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,OAAO;YACL,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,WAAW;SACpB,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,YAAY,CAAC,oBAAoB,KAAK,QAAQ,IAAI,YAAY,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjH,IAAI,YAAY,CAAC,gBAAgB,KAAK,IAAI,EAAE,CAAC;YAC3C,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,kBAAkB;aAC3B,CAAC;QACJ,CAAC;QACD,IAAI,YAAY,CAAC,gBAAgB,KAAK,KAAK,EAAE,CAAC;YAC5C,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,YAAY;aACrB,CAAC;QACJ,CAAC;QACD,OAAO;YACL,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,iCAAiC;SAC1C,CAAC;IACJ,CAAC;IACD,OAAO;QACL,MAAM,EAAE,aAAa;QACrB,MAAM,EAAE,0BAA0B;KACnC,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAS,8BAA8B,CACrC,QAA+F,EAC/F,KAAqB,EACrB,YAAgD,EAChD,WAA2C;IAE3C,OAAO;QACL,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,KAAK;QACL,MAAM,EAAE,QAAQ,CAAC,OAAO;QACxB,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,cAAc,EAAE,IAAI;QACpB,iBAAiB,EAAE,SAAS;QAC5B,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC;QAC9B,MAAM,EAAE,YAAY,EAAE,MAAM;QAC5B,gBAAgB,EAAE,YAAY,EAAE,gBAAgB;QAChD,oBAAoB,EAAE,YAAY,EAAE,oBAAoB;QACxD,yBAAyB,EAAE,YAAY,EAAE,yBAAyB;QAClE,YAAY,EAAE,YAAY,EAAE,YAAY;QACxC,mBAAmB,EAAE,WAAW,CAAC,MAAM;QACvC,mBAAmB,EAAE,WAAW,CAAC,MAAM;KACxC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,uBAAuB,CACpC,cAAsB,EACtB,KAAqB,EACrB,QAAoB,EACpB,KAA4B;IAE5B,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC;QACxC,OAAO;YACL,UAAU,EAAE,EAAE;YACd,QAAQ,EAAE,EAAE;SACb,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1E,MAAM,WAAW,GAAG,OAAO;SACxB,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;SACtC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;SAC1B,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IAEpD,MAAM,aAAa,GAAG,IAAI,GAAG,EAAkC,CAAC;IAChE,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAkC,CAAC;IACrE,KAAK,MAAM,YAAY,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QACzC,aAAa,CAAC,GAAG,CAAC,8BAA8B,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC;QACnF,kBAAkB,CAAC,GAAG,CAAC,8BAA8B,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,YAAY,CAAC,CAAC;IAC/F,CAAC;IAED,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,SAAS,GAA8B,EAAE,CAAC;IAChD,KAAK,MAAM,aAAa,IAAI,WAAW,EAAE,CAAC;QACxC,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;QACpE,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,eAAe,CAAC,CAAC;QACpE,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;YACtC,QAAQ,CAAC,IAAI,CAAC,8BAA8B,KAAK,IAAI,aAAa,EAAE,CAAC,CAAC;YACtE,MAAM,YAAY,GAAG,kBAAkB,CAAC,GAAG,CAAC,8BAA8B,CAAC,aAAa,CAAC,CAAC,CAAC;YAC3F,SAAS,CAAC,IAAI,CACZ,8BAA8B,CAC5B;gBACE,IAAI,EAAE,YAAY,EAAE,IAAI,IAAI,aAAa;gBACzC,SAAS,EAAE,aAAa;gBACxB,OAAO,EAAE,YAAY,EAAE,gBAAgB,IAAI,SAAS;gBACpD,KAAK,EAAE,YAAY,EAAE,cAAc,IAAI,SAAS;gBAChD,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,kBAAkB,CAAC,QAAQ,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK;aAChF,EACD,KAAK,EACL,YAAY,EACZ,4BAA4B,CAAC,YAAY,CAAC,CAC3C,CACF,CAAC;YACF,SAAS;QACX,CAAC;QAED,IAAI,WAAoB,CAAC;QACzB,IAAI,CAAC;YACH,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAY,CAAC;QAC/E,CAAC;QAAC,MAAM,CAAC;YACP,QAAQ,CAAC,IAAI,CAAC,mCAAmC,KAAK,IAAI,aAAa,EAAE,CAAC,CAAC;YAC3E,SAAS;QACX,CAAC;QACD,MAAM,QAAQ,GAAG,sBAAsB,CAAC,WAAW,CAAC,CAAC;QACrD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,QAAQ,CAAC,IAAI,CAAC,8BAA8B,KAAK,IAAI,aAAa,EAAE,CAAC,CAAC;YACtE,SAAS;QACX,CAAC;QACD,MAAM,YAAY,GAChB,aAAa,CAAC,GAAG,CAAC,8BAA8B,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAChE,kBAAkB,CAAC,GAAG,CAAC,8BAA8B,CAAC,aAAa,CAAC,CAAC,CAAC;QACxE,SAAS,CAAC,IAAI,CACZ,8BAA8B,CAC5B;YACE,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,SAAS,EAAE,aAAa;YACxB,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,OAAO,EAAE,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC;SACrD,EACD,KAAK,EACL,YAAY,EACZ,4BAA4B,CAAC,YAAY,CAAC,CAC3C,CACF,CAAC;IACJ,CAAC;IACD,OAAO;QACL,UAAU,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChF,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;KACpE,CAAC;AACJ,CAAC;AA2BD,SAAS,wCAAwC,CAC/C,aAAqB,EACrB,SAAoC;IAEpC,MAAM,cAAc,GAAG,8BAA8B,CAAC,aAAa,CAAC,CAAC;IACrE,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,8BAA8B,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,cAAc,CAAC,CAAC;IAC/G,OAAO;QACL,aAAa,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,aAAa,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACjG,YAAY,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,YAAY,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;KAChG,CAAC;AACJ,CAAC;AAED,SAAS,kCAAkC,CAAC,aAAqB,EAAE,MAA8B;IAC/F,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3E,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IAC/B,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClG,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,CAAC;IACD,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,SAAS,4BAA4B,CACnC,aAAqB,EACrB,MAA8B,EAC9B,cAAmE;IAEnE,MAAM,YAAY,GAAG,cAAc,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,MAAM,WAAW,SAAS,CAAC,CAAC;IACnG,OAAO;QACL,YAAY,EAAE,kCAAkC,CAAC,aAAa,EAAE,MAAM,CAAC;QACvE,cAAc,EAAE,aAAa;QAC7B,aAAa,EAAE,cAAc,CAAC,aAAa;QAC3C,YAAY,EAAE,cAAc,CAAC,YAAY;QACzC,aAAa,EAAE,YAAY;QAC3B,UAAU,EACR,cAAc,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC;YACrC,CAAC,CAAC,YAAY;YACd,CAAC,CAAC,CAAC,yFAAyF,CAAC;KAClG,CAAC;AACJ,CAAC;AAED,SAAS,wCAAwC,CAAC,OAA+B;IAC/E,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;QACzB,CAAC,CAAC;YACE,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM;YAC5B,kBAAkB,EAAE,OAAO,CAAC,KAAK,CAAC,kBAAkB;YACpD,eAAe,EAAE,OAAO,CAAC,KAAK,CAAC,eAAe;YAC9C,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpE,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7E,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrG,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5D;QACH,CAAC,CAAC,SAAS,CAAC;IACd,OAAO;QACL,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5B,CAAC;AACJ,CAAC;AAED,SAAS,mCAAmC,CAAC,QAAkC;IAC7E,OAAO,QAAQ;SACZ,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,wCAAwC,CAAC,OAAO,CAAC,CAAC;SACnE,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AACvG,CAAC;AAED,SAAS,2BAA2B,CAClC,aAAqB,EACrB,QAAuC,EACvC,KAAsB;IAEtB,MAAM,cAAc,GAAG,8BAA8B,CAAC,aAAa,CAAC,CAAC;IACrE,OAAO,QAAQ,CAAC,IAAI,CAClB,CAAC,OAAO,EAAE,EAAE,CACV,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC;QAChD,8BAA8B,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,cAAc,CAClE,CAAC;AACJ,CAAC;AAED,SAAS,qCAAqC,CAC5C,aAAqB,EACrB,KAAqB,EACrB,gBAA2C,EAC3C,wBAAiE;IAEjE,MAAM,yBAAyB,GAAG,gBAAgB,CAAC,IAAI,CACrD,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,CAAC,KAAK,KAAK,KAAK,IAAI,8BAA8B,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,8BAA8B,CAAC,aAAa,CAAC,CACxH,CAAC;IACF,OAAO,yBAAyB,EAAE,iBAAiB,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AAC3G,CAAC;AAED,KAAK,UAAU,kCAAkC,CAC/C,MAAc,EACd,QAAoB,EACpB,kBAA6C,EAC7C,MAAqB;IAOrB,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC;QACtC,MAAM;QACN,QAAQ;QACR,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;QAClB,YAAY,EAAE,MAAM,CAAC,YAAY,KAAK,IAAI;QAC1C,YAAY,EAAE,wBAAwB,EAAE;QACxC,UAAU,EAAE,IAAI;KACjB,CAAC,CAAC;IACH,MAAM,gBAAgB,GAAG,MAAM,kBAAkB,CAAC;QAChD,GAAG,UAAU;QACb,MAAM,EAAE,UAAU,CAAC,MAAM;KAC1B,CAAC,CAAC;IACH,OAAO;QACL,SAAS,EAAE,iCAAiC,CAAC,kBAAkB,EAAE,UAAU,EAAE,gBAAgB,CAAC;QAC9F,QAAQ,EAAE,CAAC,GAAG,UAAU,CAAC,QAAQ,EAAE,GAAG,gBAAgB,CAAC,QAAQ,CAAC;QAChE,mBAAmB,EAAE,mCAAmC,CAAC,gBAAgB,CAAC,MAAM,CAAC;QACjF,uBAAuB,EAAE,gBAAgB,CAAC,aAAa,CAAC,UAAU;KACnE,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,MAA8B,EAC9B,mBAAyC,aAAa;IAEtD,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC;IAC3B,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACnD,OAAO;YACL,UAAU,EAAE,SAAS;YACrB,SAAS,EAAE,IAAI;YACf,KAAK,EAAE,6BAA6B;SACrC,CAAC;IACJ,CAAC;IACD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;QACpF,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC;QAC7E,MAAM,SAAS,GAAG,MAAM;aACrB,KAAK,CAAC,OAAO,CAAC;aACd,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;aAC1B,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACnC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO;gBACL,UAAU,EAAE,SAAS;gBACrB,SAAS,EAAE,IAAI;gBACf,KAAK,EAAE,2BAA2B;aACnC,CAAC;QACJ,CAAC;QACD,MAAM,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC9C,uGAAuG;QACvG,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClE,OAAO;gBACL,UAAU,EAAE,SAAS;gBACrB,SAAS,EAAE,IAAI;gBACf,KAAK,EAAE,0BAA0B;aAClC,CAAC;QACJ,CAAC;QACD,oBAAoB;QACpB,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzE,OAAO;gBACL,UAAU,EAAE,SAAS;gBACrB,aAAa,EAAE,YAAY;gBAC3B,SAAS,EAAE,YAAY,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;aACjD,CAAC;QACJ,CAAC;QACD,OAAO;YACL,UAAU,EAAE,SAAS;YACrB,aAAa,EAAE,YAAY;YAC3B,SAAS,EAAE,IAAI;YACf,KAAK,EAAE,0BAA0B;SAClC,CAAC;IACJ,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,OAAO;YACL,UAAU,EAAE,SAAS;YACrB,SAAS,EAAE,IAAI;YACf,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAC9D,CAAC;IACJ,CAAC;AACH,CAAC;AAiBD,KAAK,UAAU,wBAAwB,CACrC,cAAsB,EACtB,KAAqB,EACrB,mBAA8C,EAC9C,KAA4B;IAE5B,MAAM,mBAAmB,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAClF,MAAM,gBAAgB,GAAG,CAAC,GAAG,mBAAmB,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACrE,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;YACjB,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,MAAM,cAAc,GAAgC,EAAE,CAAC;IACvD,KAAK,MAAM,SAAS,IAAI,gBAAgB,EAAE,CAAC;QACzC,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;QAC1E,MAAM,SAAS,GAAG,MAAM,0BAA0B,CAAC,kBAAkB,CAAC,CAAC;QACvE,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;QACrB,MAAM,YAAY,GAA2B;YAC3C,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,SAAS,CAAC,IAAI;YACrB,QAAQ,EAAE,kBAAkB;SAC7B,CAAC;QACF,SAAS,GAAG,kBAAkB,CAAC,SAAS,EAAE;YACxC,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,IAAI;YAC7B,SAAS,EAAE,SAAS,CAAC,SAAS;YAC9B,KAAK;YACL,gBAAgB,EAAE,SAAS,CAAC,QAAQ,CAAC,OAAO;YAC5C,cAAc,EAAE,SAAS,CAAC,QAAQ,CAAC,KAAK;YACxC,YAAY,EAAE,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC;YAClD,YAAY,EAAE,GAAG;YACjB,UAAU,EAAE,GAAG;YACf,MAAM,EAAE,YAAY;SACrB,CAAC,CAAC;QACH,cAAc,CAAC,IAAI,CAAC;YAClB,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,IAAI;YAC7B,SAAS,EAAE,SAAS,CAAC,SAAS;YAC9B,OAAO,EAAE,SAAS,CAAC,QAAQ,CAAC,OAAO;YACnC,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC,KAAK;YAC/B,MAAM,EAAE,YAAY;SACrB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,MAAM,0BAA0B,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;IAC9D,CAAC;IAED,OAAO;QACL,KAAK,EAAE,SAAS;QAChB,eAAe,EAAE,cAAc;QAC/B,oBAAoB,EAAE,gBAAgB;QACtC,qBAAqB,EAAE,mBAAmB,CAAC,MAAM,GAAG,mBAAmB,CAAC,MAAM;KAC/E,CAAC;AACJ,CAAC;AAED,SAAS,6BAA6B,CAAC,KAAqB,EAAE,MAAqB;IAOjF,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IACzD,MAAM,KAAK,GAAG,qBAAqB,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC3D,MAAM,YAAY,GAAG,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACtF,MAAM,YAAY,GAAG,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;IACvE,OAAO;QACL,OAAO,EAAE,MAAM;QACf,KAAK;QACL,aAAa,EAAE,YAAY;QAC3B,aAAa,EAAE,YAAY;QAC3B,KAAK;KACN,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAgC;IAC3D,IAAI,OAAO,OAAO,CAAC,EAAE,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,IAAI,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QACxH,MAAM,IAAI,UAAU,CAAC,kEAAkE,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;IAC5G,CAAC;IACD,IAAI,OAAO,OAAO,CAAC,EAAE,KAAK,QAAQ,IAAI,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnE,OAAO,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC;IACD,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3E,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAC/B,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,sBAAsB,CAAC,MAA8B;IAC5D,OAAO,sBAAsB,CAAC,MAAM,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,aAAa,CAAC,MAA0B,EAAE,MAA8B,EAAE,UAAmC,EAAE;IACtH,MAAM,UAAU,GAAG,MAAM,EAAE,IAAI,EAAE,CAAC;IAClC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YACtB,MAAM,IAAI,UAAU,CAClB,gIAAgI,EAChI,SAAS,CAAC,KAAK,CAChB,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC;QACxE,MAAM,UAAU,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;QAC5D,MAAM,WAAW,GAAG,GAAG,IAAI,IAAI,UAAU,EAAE,CAAC;QAC5C,MAAM,UAAU,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;QAClD,MAAM,aAAa,GAAG,IAAI,UAAU,GAAG,CAAC;QACxC,MAAM,OAAO,GAAG,MAAM,IAAI,IAAI,UAAU,IAAI,aAAa,EAAE,CAAC;QAC5D,MAAM,IAAI,UAAU,CAClB,WAAW,MAAM,cAAc,WAAW,SAAS,EACnD,SAAS,CAAC,KAAK,EACf;YACE,IAAI,EAAE,0BAA0B;YAChC,QAAQ,EAAE,aAAa,UAAU,eAAe,MAAM,GAAG;YACzD,QAAQ,EAAE,CAAC,MAAM,IAAI,IAAI,MAAM,IAAI,aAAa,EAAE,EAAE,OAAO,EAAE,MAAM,IAAI,SAAS,CAAC;YACjF,QAAQ,EAAE;gBACR,iBAAiB,EAAE,MAAM,IAAI,IAAI,MAAM,EAAE;gBACzC,eAAe,EAAE,OAAO;gBACxB,mBAAmB,EAAE;oBACnB;wBACE,MAAM,EAAE,kBAAkB;wBAC1B,OAAO;wBACP,MAAM,EAAE,aAAa,MAAM,0BAA0B,UAAU,SAAS;qBACzE;iBACF;aACF;SACF,CACF,CAAC;IACJ,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,yCAAyC,CAChD,gBAAgE;IAEhE,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,KAAK,IAAI,gBAAgB,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;QACxD,IAAI,KAAK,CAAC,OAAO,KAAK,eAAe,EAAE,CAAC;YACtC,SAAS;QACX,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,4CAA4C,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1G,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,gBAAgB,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;QACzD,QAAQ,CAAC,IAAI,CAAC,6CAA6C,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1G,CAAC;IACD,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;AACjF,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,SAAS,2CAA2C,CAClD,UAAsD,EACtD,gBAAgE;IAEhE,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC7C,KAAK,MAAM,KAAK,IAAI,gBAAgB,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;QAC9D,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,kBAAkB,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,IAAI,8BAA8B,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzF,CAAC;IACH,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,gBAAgB,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;QAC/D,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,kBAAkB,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,IAAI,8BAA8B,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzF,CAAC;IACH,CAAC;IACD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,SAAS,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;QAC1C,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxD,SAAS;QACX,CAAC;QACD,IAAI,kBAAkB,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,KAAK,IAAI,8BAA8B,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YACnG,QAAQ,CAAC,IAAI,CAAC,sCAAsC,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3F,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;AACjF,CAAC;AAmBD;;;;;;;;GAQG;AACH,SAAS,gCAAgC,CAAC,MAA8B,EAAE,OAAgC;IACxG,MAAM,MAAM,GAAqE;QAC/E;YACE,SAAS,EAAE,OAAO,CAAC,UAAU,KAAK,IAAI,IAAI,OAAO,CAAC,UAAU,KAAK,IAAI;YACrE,OAAO,EAAE,MAAM,KAAK,QAAQ;YAC5B,OAAO,EAAE,gEAAgE;SAC1E;QACD,EAAE,SAAS,EAAE,OAAO,CAAC,KAAK,KAAK,IAAI,EAAE,OAAO,EAAE,MAAM,KAAK,QAAQ,EAAE,OAAO,EAAE,sCAAsC,EAAE;QACpH,EAAE,SAAS,EAAE,OAAO,CAAC,KAAK,KAAK,IAAI,EAAE,OAAO,EAAE,MAAM,KAAK,QAAQ,EAAE,OAAO,EAAE,sCAAsC,EAAE;QACpH;YACE,SAAS,EAAE,OAAO,CAAC,YAAY,KAAK,IAAI;YACxC,OAAO,EAAE,MAAM,KAAK,QAAQ;YAC5B,OAAO,EAAE,8CAA8C;SACxD;QACD;YACE,SAAS,EAAE,OAAO,CAAC,eAAe,KAAK,IAAI;YAC3C,OAAO,EAAE,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,QAAQ;YACnD,OAAO,EAAE,8DAA8D;SACxE;QACD;YACE,SAAS,EAAE,OAAO,CAAC,UAAU,KAAK,SAAS;YAC3C,OAAO,EAAE,MAAM,KAAK,MAAM;YAC1B,OAAO,EAAE,oDAAoD;SAC9D;QACD;YACE,SAAS,EAAE,OAAO,CAAC,WAAW,KAAK,IAAI;YACvC,OAAO,EAAE,MAAM,KAAK,MAAM;YAC1B,OAAO,EAAE,qDAAqD;SAC/D;KACF,CAAC;IACF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACtC,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;AACH,CAAC;AAED,4HAA4H;AAC5H;;;;;GAKG;AACH,SAAS,gCAAgC,CACvC,MAA0B,EAC1B,MAA8B,EAC9B,OAAgC;IAEhC,MAAM,eAAe,GAAG,MAAM,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrD,IAAI,MAAM,KAAK,QAAQ,IAAI,eAAe,KAAK,QAAQ,EAAE,CAAC;QACxD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,MAAM,KAAK,QAAQ,IAAI,eAAe,KAAK,QAAQ,EAAE,CAAC;QACxD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,MAAM,KAAK,SAAS,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;QAC1D,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,iBAAiB,GACrB,MAAM,KAAK,MAAM;QACjB,OAAO,CAAC,IAAI,KAAK,IAAI;QACrB,OAAO,CAAC,QAAQ,KAAK,IAAI;QACzB,CAAC,eAAe,KAAK,MAAM,IAAI,eAAe,KAAK,UAAU,CAAC,CAAC;IACjE,IAAI,iBAAiB,EAAE,CAAC;QACtB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AACD,oBAAoB;AAEpB;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,MAA0B,EAC1B,OAAgC,EAChC,MAAqB;IAErB,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9C,gCAAgC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClD,MAAM,gBAAgB,GAAG,gCAAgC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACnF,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACpC,MAAM,aAAa,GAAG,6BAA6B,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACnE,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,UAAU,GAAG,CAAC,OAAgC,EAA0B,EAAE;QAC9E,MAAM,MAAM,GAA2B;YACrC,EAAE,EAAE,IAAI;YACR,MAAM;YACN,KAAK;YACL,KAAK,EAAE,MAAM,KAAK,SAAS,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;gBACnG,CAAC,CAAC;oBACE,OAAO,EAAE,SAAS;oBAClB,MAAM,EAAE,QAAQ;oBAChB,QAAQ,EAAE,KAAK;oBACf,aAAa,EAAE,SAAS;iBACzB;gBACH,CAAC,CAAC;oBACE,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC,OAAO;oBACpC,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,MAAM;oBAClC,QAAQ,EAAE,aAAa,CAAC,aAAa;oBACrC,aAAa,EAAE,aAAa,CAAC,aAAa;iBAC3C;YACL,QAAQ,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACjF,OAAO;SACR,CAAC;QACF,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YACxB,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,oBAAoB,EAAE;gBAClD,KAAK,EAAE,IAAI;gBACX,UAAU,EAAE,KAAK;gBACjB,YAAY,EAAE,KAAK;aACpB,CAAC,CAAC;QACL,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IACF,MAAM,GAAG,GAA2B;QAClC,MAAM;QACN,gBAAgB;QAChB,KAAK;QACL,aAAa;QACb,QAAQ;QACR,OAAO;QACP,MAAM;QACN,UAAU;KACX,CAAC;IACF,OAAO,yBAAyB,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;AAChD,CAAC;AAED,KAAK,UAAU,sBAAsB,CAAC,GAA2B;IAC/D,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC;IAC9D,MAAM,YAAY,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAClD,IAAI,YAAY,KAAK,SAAS,IAAI,CAAC,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;QACrG,MAAM,IAAI,UAAU,CAAC,4DAA4D,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;IACtG,CAAC;IACD,MAAM,cAAc,GAAG,aAAa,CAAC,gBAAgB,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACxE,MAAM,QAAQ,GAAG,MAAM,wBAAwB,CAC7C,cAAc,EACd,OAAO,CAAC,UAAU,IAAI,WAAW,EACjC,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,WAAW,KAAK,IAAI,CAC7B,CAAC;IACF,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC9D,6EAA6E;IAC7E,6EAA6E;IAC7E,6CAA6C;IAC7C,MAAM,qBAAqB,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;IACvF,OAAO,UAAU,CAAC;QAChB,UAAU,EAAE,QAAQ,CAAC,iBAAiB,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC;QACpG,SAAS,EAAE;YACT,IAAI,EAAE,QAAQ,CAAC,cAAc;YAC7B,OAAO,EAAE,QAAQ,CAAC,YAAY;SAC/B;QACD,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,WAAW,EAAE,QAAQ,CAAC,WAAW;QACjC,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB;QAC7C,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,UAAU,EAAE;YACV,4EAA4E;YAC5E,qEAAqE;YACrE,2EAA2E;YAC3E,iCAAiC;YACjC,GAAG,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS;gBAClC,CAAC,CAAC,CAAC,4BAA4B,qBAAqB,0BAA0B,CAAC;gBAC/E,CAAC,CAAC;oBACE,uCAAuC,qBAAqB,sEAAsE;iBACnI,CAAC;YACN,yBAAyB,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,kCAAkC,IAAI,gBAAgB,EAAE;YAC7I,+BAA+B,QAAQ,CAAC,YAAY,EAAE;YACtD,GAAG,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS;gBAClC,CAAC,CAAC,CAAC,4BAA4B,qBAAqB,+CAA+C,CAAC;gBACpG,CAAC,CAAC,CAAC,wCAAwC,qBAAqB,+BAA+B,CAAC,CAAC;YACnG,oBAAoB,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,uBAAuB,6BAA6B;SAClI;KACF,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,wBAAwB,CAAC,GAA2B;IACjE,MAAM,EAAE,gBAAgB,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC;IACvF,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;QACnC,MAAM,IAAI,UAAU,CAAC,oDAAoD,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;IAC9F,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;IACjE,MAAM,WAAW,GAAG,wBAAwB,EAAE,CAAC;IAC/C,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC;QACpC,MAAM,EAAE,aAAa,CAAC,aAAa;QACnC,QAAQ;QACR,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;QAClB,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,YAAY,EAAE,WAAW;QACzB,UAAU,EAAE,IAAI;KACjB,CAAC,CAAC;IACH,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACpC,MAAM,UAAU,GAAG,MAAM,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACtD,QAAQ,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG;QACd,MAAM,EAAE;YACN,KAAK,EAAE,WAAW;YAClB,UAAU,EAAE,IAAI;YAChB,KAAK,EAAE,OAAO,CAAC,KAAK,KAAK,IAAI;SAC9B;QACD,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM;QACpC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM;QACpC,eAAe,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC;QAC/E,uBAAuB,EAAE,UAAU,CAAC,MAAM,CAAC,MAAM;QACjD,iBAAiB,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACjD,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC,CAAC;QACH,iBAAiB,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACjD,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,KAAK,EAAE,KAAK,CAAC,KAAK;SACnB,CAAC,CAAC;QACH,mBAAmB,EAAE,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACrD,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,KAAK,EAAE,KAAK,CAAC,KAAK;SACnB,CAAC,CAAC;KACJ,CAAC;IACF,IAAI,OAAO,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;QAC3B,QAAQ,CAAC,IAAI,CAAC,mFAAmF,CAAC,CAAC;IACrG,CAAC;IACD,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC;AAC7B,CAAC;AAED,KAAK,UAAU,yBAAyB,CAAC,GAA2B;IAClE,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC;IACrE,IAAI,OAAO,gBAAgB,KAAK,QAAQ,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;QAC1G,MAAM,IAAI,UAAU,CAAC,oDAAoD,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;IAC9F,CAAC;IACD,OAAO,UAAU,CAAC,MAAM,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED,uGAAuG;AACvG;;;;;GAKG;AACH,SAAS,yBAAyB,CAChC,gBAA+B,EAC/B,kBAAiC,EACjC,aAA6D,EAC7D,cAAgE;IAEhE,IAAI,gBAAgB,EAAE,CAAC;QACrB,OAAO;YACL,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,gBAAgB;YACvB,QAAQ,EAAE,gBAAgB;YAC1B,IAAI,EAAE,gBAAgB;YACtB,GAAG,CAAC,kBAAkB,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC;SACxE,CAAC;IACJ,CAAC;IACD,IAAI,aAAa,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACnC,OAAO;YACL,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,aAAa,CAAC,KAAK;YAC1B,QAAQ,EAAE,aAAa,CAAC,aAAa;SACtC,CAAC;IACJ,CAAC;IACD,IAAI,aAAa,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QACjC,OAAO;YACL,IAAI,EAAE,KAAK;YACX,KAAK,EAAE,aAAa,CAAC,KAAK;YAC1B,QAAQ,EAAE,cAAc,CAAC,gBAAgB,IAAI,GAAG;YAChD,OAAO,EAAE,cAAc,CAAC,WAAW;YACnC,OAAO,EAAE,cAAc,CAAC,WAAW;SACpC,CAAC;IACJ,CAAC;IACD,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,aAAa,CAAC,KAAK;QAC1B,QAAQ,EAAE,cAAc,CAAC,gBAAgB,IAAI,aAAa,CAAC,OAAO,IAAI,GAAG;QACzE,UAAU,EAAE,aAAa,CAAC,UAAU;QACpC,KAAK,EAAE,aAAa,CAAC,KAAK;QAC1B,IAAI,EAAE,aAAa,CAAC,IAAI;QACxB,GAAG,EAAE,aAAa,CAAC,GAAG;QACtB,OAAO,EAAE,cAAc,CAAC,gBAAgB,IAAI,aAAa,CAAC,OAAO;QACjE,MAAM,EAAE,cAAc,CAAC,MAAM;KAC9B,CAAC;AACJ,CAAC;AACD,oBAAoB;AAEpB;;;;;;GAMG;AACH,KAAK,UAAU,gCAAgC,CAC7C,GAA2B,EAC3B,KAOC;IAED,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC;IACnE,MAAM,EAAE,SAAS,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,aAAa,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IAC3H,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;IACjE,MAAM,gBAAgB,GAAG,MAAM,yBAAyB,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;IACtF,QAAQ,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,oBAAoB,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,wBAAwB,CAAC,CAAC;IAC9F,MAAM,iBAAiB,GAAG,MAAM,UAAU,CAAC,oBAAoB,CAAC,CAAC;IACjE,MAAM,cAAc,GAAG,MAAM,wBAAwB,CAAC,SAAS,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;IAEjG,MAAM,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACjE,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,gCAAgC,CAAC,SAAS,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;IACpF,CAAC;IACD,MAAM,+BAA+B,CAAC,oBAAoB,CAAC,CAAC;IAE5D,MAAM,YAAY,GAAG,yBAAyB,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;IAEpH,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;IACrB,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAC9D,CAAC,KAAK,EAAE,EAAE,CAAC,8BAA8B,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,8BAA8B,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAClH,CAAC;IACF,MAAM,eAAe,GACnB,oBAAoB,KAAK,SAAS;QAClC,oBAAoB,CAAC,gBAAgB,KAAK,SAAS,CAAC,QAAQ,CAAC,OAAO;QACpE,iCAAiC,CAAC,oBAAoB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC/E,MAAM,YAAY,GAAG,kBAAkB,CAAC,gBAAgB,CAAC,KAAK,EAAE;QAC9D,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,IAAI;QAC7B,SAAS,EAAE,wBAAwB;QACnC,KAAK;QACL,gBAAgB,EAAE,SAAS,CAAC,QAAQ,CAAC,OAAO;QAC5C,cAAc,EAAE,SAAS,CAAC,QAAQ,CAAC,KAAK;QACxC,YAAY,EAAE,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC;QAClD,YAAY,EAAE,oBAAoB,EAAE,YAAY,IAAI,GAAG;QACvD,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG;QACnE,MAAM,EAAE,YAAY;KACrB,CAAC,CAAC;IACH,MAAM,0BAA0B,CAAC,aAAa,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;IAE5E,MAAM,iBAAiB,GAAG,eAAe,CAAC,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7E,IAAI,iBAAiB,EAAE,CAAC;QACtB,MAAM,aAAa,CAAC,aAAa,CAAC,aAAa,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;IAC/E,CAAC;IACD,MAAM,kBAAkB,GAAG,MAAM,uBAAuB,CAAC,aAAa,CAAC,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;IACrH,QAAQ,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAC9C,MAAM,YAAY,GAAG,MAAM,kCAAkC,CAC3D,aAAa,CAAC,OAAO,EACrB,QAAQ,EACR,kBAAkB,CAAC,UAAU,EAC7B,MAAM,CACP,CAAC;IACF,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IACxC,4EAA4E;IAC5E,4EAA4E;IAC5E,2EAA2E;IAC3E,uEAAuE;IACvE,yEAAyE;IACzE,0EAA0E;IAC1E,6EAA6E;IAC7E,+CAA+C;IAC/C,MAAM,4BAA4B,GAAG,YAAY,CAAC,uBAAuB;SACtE,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,8BAA8B,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,8BAA8B,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SACzH,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7F,IAAI,KAAK,KAAK,SAAS,IAAI,4BAA4B,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnE,MAAM,wBAAwB,CAAC,aAAa,CAAC,OAAO,EAAE,4BAA4B,EAAE,QAAQ,EAAE,qBAAqB,CAAC,CAAC;IACvH,CAAC;IACD,MAAM,cAAc,GAAG,wCAAwC,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;IACjH,MAAM,wBAAwB,GAAG,2BAA2B,CAC1D,SAAS,CAAC,QAAQ,CAAC,IAAI,EACvB,YAAY,CAAC,mBAAmB,EAChC,KAAK,CACN,CAAC;IACF,MAAM,uBAAuB,GAAG,qCAAqC,CACnE,SAAS,CAAC,QAAQ,CAAC,IAAI,EACvB,KAAK,EACL,YAAY,CAAC,SAAS,EACtB,wBAAwB,CACzB,CAAC;IAEF,OAAO,UAAU,CAAC;QAChB,SAAS,EAAE;YACT,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,IAAI;YAC7B,OAAO,EAAE,SAAS,CAAC,QAAQ,CAAC,OAAO;YACnC,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC,KAAK;YAC/B,YAAY,EAAE,SAAS,CAAC,QAAQ,CAAC,YAAY;YAC7C,SAAS,EAAE,wBAAwB;SACpC;QACD,MAAM,EAAE,YAAY;QACpB,gBAAgB,EAAE,oBAAoB;QACtC,WAAW,EAAE,iBAAiB,IAAI,CAAC,cAAc;QACjD,kBAAkB,EAAE,cAAc;QAClC,SAAS,EAAE,IAAI;QACf,gBAAgB,EAAE,iBAAiB;QACnC,yBAAyB,EAAE,uBAAuB;QAClD,aAAa,EAAE,cAAc,CAAC,aAAa;QAC3C,YAAY,EAAE,cAAc,CAAC,YAAY;QACzC,iBAAiB,EAAE,4BAA4B,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,YAAY,EAAE,cAAc,CAAC;QACtG,sBAAsB,EAAE;YACtB,YAAY,EAAE,YAAY,CAAC,mBAAmB,CAAC,MAAM;YACrD,MAAM,EAAE,YAAY,CAAC,mBAAmB;YACxC,0BAA0B,EAAE,wBAAwB,IAAI,IAAI;SAC7D;KACF,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,yBAAyB,CAAC,GAA2B;IAClE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC;IAC/F,MAAM,YAAY,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAClD,MAAM,mBAAmB,GAAG,YAAY,IAAI,aAAa,CAAC,gBAAgB,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7F,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,gCAAgC,CAAC,mBAAmB,CAAC,EAAE,CAAC;QAC9F,IAAI,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrE,MAAM,IAAI,UAAU,CAAC,6CAA6C,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;QACvF,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,yBAAyB,EAAE,CAAC;QAClD,MAAM,QAAQ,GAA6D,EAAE,CAAC;QAC9E,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,QAAQ,CAAC,IAAI,CAAC;gBACZ,KAAK;gBACL,MAAM,EAAE,MAAM,YAAY,CAAC,KAAK,EAAE,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,MAAM,CAAC;aACzE,CAAC,CAAC;QACL,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;YAC7B,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,UAAU,CAAC;YAChB,aAAa,EAAE,IAAI;YACnB,eAAe,EAAE,QAAQ,CAAC,MAAM;YAChC,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBACjC,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE;gBACnB,SAAS,EAAG,KAAK,CAAC,MAAM,CAAC,OAAmC,CAAC,SAAS;gBACtE,MAAM,EAAG,KAAK,CAAC,MAAM,CAAC,OAAgC,CAAC,MAAM;gBAC7D,gBAAgB,EAAG,KAAK,CAAC,MAAM,CAAC,OAA0C,CAAC,gBAAgB;gBAC3F,SAAS,EAAG,KAAK,CAAC,MAAM,CAAC,OAAmC,CAAC,SAAS;gBACtE,gBAAgB,EAAG,KAAK,CAAC,MAAM,CAAC,OAA0C,CAAC,gBAAgB;gBAC3F,aAAa,EAAG,KAAK,CAAC,MAAM,CAAC,OAAuC,CAAC,aAAa;gBAClF,YAAY,EAAG,KAAK,CAAC,MAAM,CAAC,OAAsC,CAAC,YAAY;gBAC/E,iBAAiB,EAAG,KAAK,CAAC,MAAM,CAAC,OAA2C,CAAC,iBAAiB;gBAC9F,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ;aAChC,CAAC,CAAC;SACJ,CAAC,CAAC;IACL,CAAC;IACD,yGAAyG;IACzG,MAAM,kBAAkB,GACtB,OAAO,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,kCAAkC,CAAC,mBAAmB,CAAC,CAAC;IAC1G,oBAAoB;IACpB,MAAM,gBAAgB,GAAG,kBAAkB,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACvG,MAAM,kBAAkB,GAAG,gBAAgB,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,4BAA4B,CAAC,gBAAgB,CAAC,CAAC;IACnH,MAAM,WAAW,GAAG,kBAAkB,IAAI,mBAAmB,CAAC;IAC9D,wGAAwG;IACxG,MAAM,aAAa,GAAG,2BAA2B,CAAC,WAAW,EAAE;QAC7D,WAAW,EAAE,OAAO,YAAY,KAAK,QAAQ;QAC7C,GAAG,EAAE,OAAO,CAAC,GAAG;KACjB,CAAC,CAAC;IACH,oBAAoB;IACpB,MAAM,cAAc,GAAG,MAAM,oBAAoB,CAAC,aAAa,CAAC,CAAC;IACjE,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,0BAA0B,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QAC7E,MAAM,wBAAwB,GAAG,6BAA6B,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACxF,OAAO,MAAM,wBAAwB,CAAC,aAAa,CAAC,aAAa,EAAE,wBAAwB,EAAE,GAAG,EAAE,CAChG,gCAAgC,CAAC,GAAG,EAAE;YACpC,SAAS;YACT,wBAAwB;YACxB,gBAAgB;YAChB,kBAAkB;YAClB,aAAa;YACb,cAAc;SACf,CAAC,CACH,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,qFAAqF;QACrF,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;YAC3B,MAAM,cAAc,CAAC,OAAO,EAAE,CAAC;QACjC,CAAC;QACD,oBAAoB;IACtB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,0BAA0B,CAAC,GAA2B;IACnE,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC;IACtF,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;QACnC,MAAM,IAAI,UAAU,CAAC,uDAAuD,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;IACjG,CAAC;IACD,MAAM,YAAY,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAClD,IAAI,YAAY,KAAK,SAAS,IAAI,CAAC,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;QACrG,MAAM,IAAI,UAAU,CAAC,iEAAiE,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;IAC3G,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;IACjE,MAAM,gBAAgB,GAAG,MAAM,yBAAyB,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;IACtF,QAAQ,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,MAAM,uBAAuB,CAAC,aAAa,CAAC,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACtH,QAAQ,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IACrC,MAAM,QAAQ,GAAG,MAAM,wBAAwB,CAC7C,aAAa,CAAC,aAAa,EAC3B,KAAK,EACL,SAAS,CAAC,UAAU,EACpB,gBAAgB,CAAC,KAAK,CACvB,CAAC;IACF,MAAM,kBAAkB,GAAG,MAAM,uBAAuB,CAAC,aAAa,CAAC,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IACvH,QAAQ,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,2BAA2B,CAAC,KAAK,EAAE,QAAQ,EAAE,kBAAkB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACpG,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IAClC,iGAAiG;IACjG,MAAM,cAAc,GAAG,QAAQ,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC5D,MAAM,cAAc,GAClB,kBAAkB,CAAC,UAAU,CAAC,IAAI,CAChC,CAAC,SAAS,EAAE,EAAE,CACZ,8BAA8B,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,8BAA8B,CAAC,KAAK,CAAC,IAAI,CAAC;YAC7F,8BAA8B,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,8BAA8B,CAAC,KAAK,CAAC,SAAS,CAAC,CAC1G;YACD,+FAA+F;YAC/F,kBAAkB,CAAC,UAAU,CAAC,IAAI,CAChC,CAAC,SAAS,EAAE,EAAE,CAAC,8BAA8B,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,8BAA8B,CAAC,KAAK,CAAC,SAAS,CAAC,CACvH,CAAC;QACJ,OAAO;YACL,GAAG,KAAK;YACR,mBAAmB,EAAE,cAAc,EAAE,mBAAmB,IAAI,IAAI;YAChE,mBAAmB,EAAE,cAAc,EAAE,mBAAmB,IAAI,IAAI;SACjE,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,oBAAoB;IACpB,sGAAsG;IACtG,OAAO,UAAU,CAAC;QAChB,WAAW,EAAE,cAAc,CAAC,MAAM,GAAG,CAAC;QACtC,aAAa,EAAE,cAAc,CAAC,MAAM;QACpC,qBAAqB,EAAE,QAAQ,CAAC,qBAAqB;QACrD,UAAU,EAAE,cAAc;QAC1B,MAAM;QACN,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,qBAAqB,EAAE,MAAM,CAAC,qBAAqB;QACnD,sBAAsB,EAAE,MAAM,CAAC,sBAAsB;KACtD,CAAC,CAAC;IACH,oBAAoB;AACtB,CAAC;AAED,KAAK,UAAU,uBAAuB,CAAC,GAA2B;IAChE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC;IAC9F,MAAM,eAAe,GAAG,aAAa,CAAC,gBAAgB,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACzE,MAAM,YAAY,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;IACjE,MAAM,gBAAgB,GAAG,MAAM,yBAAyB,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;IACtF,QAAQ,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,MAAM,uBAAuB,CAAC,aAAa,CAAC,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACtH,QAAQ,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IACrC,MAAM,SAAS,GAAG,MAAM,kCAAkC,CAAC,SAAS,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;IAClG,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,UAAU,CAAC,wBAAwB,eAAe,sBAAsB,KAAK,SAAS,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACzH,CAAC;IACD,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;QACtB,OAAO,UAAU,CAAC;YAChB,OAAO,EAAE,KAAK;YACd,eAAe,EAAE,IAAI;YACrB,SAAS,EAAE;gBACT,IAAI,EAAE,SAAS,CAAC,IAAI;gBACpB,SAAS,EAAE,SAAS,CAAC,SAAS;aAC/B;SACF,CAAC,CAAC;IACL,CAAC;IAED,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACvF,MAAM,SAAS,GAAG,MAAM,0BAA0B,CAAC,kBAAkB,CAAC,CAAC;IACvE,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;IACrB,MAAM,YAAY,GAChB,YAAY,KAAK,SAAS;QACxB,CAAC,CAAC;YACE,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,eAAe;YACtB,QAAQ,EAAE,kBAAkB;SAC7B;QACH,CAAC,CAAC,CAAC,GAAG,EAAE;YACJ,MAAM,MAAM,GAAG,2BAA2B,CAAC,YAAY,EAAE;gBACvD,WAAW,EAAE,IAAI;gBACjB,GAAG,EAAE,OAAO,CAAC,GAAG;aACjB,CAAC,CAAC;YACH,4EAA4E;YAC5E,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC7B,MAAM,IAAI,UAAU,CAAC,6BAA6B,YAAY,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;YACvF,CAAC;YACD,oBAAoB;YACpB,6FAA6F;YAC7F,OAAO;gBACL,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,QAAQ,EAAE,MAAM,CAAC,OAAO,IAAI,GAAG;gBAC/B,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,GAAG,EAAE,MAAM,CAAC,GAAG;gBACf,OAAO,EAAE,MAAM,CAAC,OAAO;aACxB,CAAC;YACF,oBAAoB;QACtB,CAAC,CAAC,EAAE,CAAC;IACX,MAAM,YAAY,GAAG,kBAAkB,CAAC,gBAAgB,CAAC,KAAK,EAAE;QAC9D,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,IAAI;QAC7B,SAAS,EAAE,SAAS,CAAC,SAAS;QAC9B,KAAK;QACL,gBAAgB,EAAE,SAAS,CAAC,QAAQ,CAAC,OAAO;QAC5C,cAAc,EAAE,SAAS,CAAC,QAAQ,CAAC,KAAK;QACxC,YAAY,EAAE,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC;QAClD,YAAY,EAAE,GAAG;QACjB,UAAU,EAAE,GAAG;QACf,MAAM,EAAE,YAAY;KACrB,CAAC,CAAC;IACH,MAAM,0BAA0B,CAAC,aAAa,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;IAC5E,MAAM,kBAAkB,GAAG,MAAM,uBAAuB,CAAC,aAAa,CAAC,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;IACrH,QAAQ,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAC9C,8FAA8F;IAC9F,MAAM,cAAc,GAClB,kBAAkB,CAAC,UAAU,CAAC,IAAI,CAChC,CAAC,KAAK,EAAE,EAAE,CAAC,8BAA8B,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,8BAA8B,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAClH;QACD,kBAAkB,CAAC,UAAU,CAAC,IAAI,CAChC,CAAC,KAAK,EAAE,EAAE,CAAC,8BAA8B,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,8BAA8B,CAAC,SAAS,CAAC,SAAS,CAAC,CACnH,CAAC;IACJ,oBAAoB;IAEpB,uFAAuF;IACvF,OAAO,UAAU,CAAC;QAChB,OAAO,EAAE,IAAI;QACb,SAAS,EAAE;YACT,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,IAAI;YAC7B,SAAS,EAAE,SAAS,CAAC,SAAS;YAC9B,OAAO,EAAE,SAAS,CAAC,QAAQ,CAAC,OAAO;YACnC,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC,KAAK;SAChC;QACD,MAAM,EAAE,YAAY;QACpB,mBAAmB,EAAE,cAAc,EAAE,mBAAmB,IAAI,IAAI;QAChE,mBAAmB,EAAE,cAAc,EAAE,mBAAmB,IAAI,IAAI;KACjE,CAAC,CAAC;IACH,oBAAoB;AACtB,CAAC;AAED,KAAK,UAAU,2BAA2B,CAAC,GAA2B;IACpE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC;IAC9F,MAAM,eAAe,GAAG,aAAa,CAAC,gBAAgB,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACzE,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;IACjE,MAAM,gBAAgB,GAAG,MAAM,yBAAyB,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;IACtF,QAAQ,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,MAAM,uBAAuB,CAAC,aAAa,CAAC,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACtH,QAAQ,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IACrC,MAAM,SAAS,GAAG,MAAM,kCAAkC,CAAC,SAAS,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;IAClG,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,UAAU,CAAC,wBAAwB,eAAe,sBAAsB,KAAK,SAAS,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACzH,CAAC;IACD,MAAM,oBAAoB,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACzF,MAAM,EAAE,CAAC,EAAE,CAAC,oBAAoB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAEpE,MAAM,YAAY,GAA0B;QAC1C,GAAG,gBAAgB,CAAC,KAAK;QACzB,UAAU,EAAE,MAAM,EAAE;QACpB,8GAA8G;QAC9G,OAAO,EAAE,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAC5C,CAAC,KAAK,EAAE,EAAE,CACR,8BAA8B,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,8BAA8B,CAAC,SAAS,CAAC,IAAI,CAAC;YAC7F,8BAA8B,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,8BAA8B,CAAC,SAAS,CAAC,SAAS,CAAC,CAC1G;QACD,oBAAoB;KACrB,CAAC;IACF,MAAM,0BAA0B,CAAC,aAAa,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;IAE5E,MAAM,YAAY,GAAG,mBAAmB,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;IACnE,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,aAAa,CAAC,aAAa,CAAC,aAAa,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;IAC/E,CAAC;IAED,OAAO,UAAU,CAAC;QAChB,OAAO,EAAE,IAAI;QACb,SAAS,EAAE;YACT,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,SAAS,EAAE,SAAS,CAAC,SAAS;SAC/B;QACD,gBAAgB,EAAE,oBAAoB;QACtC,gBAAgB,EAAE,YAAY;KAC/B,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,oCAAoC,CAAC,GAA2B;IAC7E,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC;IAC9F,MAAM,eAAe,GAAG,aAAa,CAAC,gBAAgB,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACzE,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;IACjE,MAAM,gBAAgB,GAAG,MAAM,yBAAyB,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;IACtF,QAAQ,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,MAAM,uBAAuB,CAAC,aAAa,CAAC,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACtH,QAAQ,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IACrC,MAAM,SAAS,GAAG,MAAM,kCAAkC,CAAC,SAAS,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;IAClG,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,UAAU,CAAC,wBAAwB,eAAe,sBAAsB,KAAK,SAAS,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACzH,CAAC;IAED,MAAM,eAAe,GAAG,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;IACxI,IAAI,eAAe,EAAE,CAAC;QACpB,MAAM,aAAa,CAAC,aAAa,CAAC,aAAa,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;IAC/E,CAAC;IAED,OAAO,UAAU,CAAC;QAChB,SAAS,EAAE;YACT,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,SAAS,EAAE,SAAS,CAAC,SAAS;SAC/B;QACD,MAAM,EAAE,MAAM,KAAK,UAAU;QAC7B,gBAAgB,EAAE,eAAe;QACjC,QAAQ,EAAE;YACR,OAAO,EAAE,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC;YACzC,QAAQ,EAAE,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC;SAC5C;KACF,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,SAAS,sBAAsB,CAC7B,eAAyB,EACzB,gBAAwB,EACxB,sBAA8B,EAC9B,UAAiD,EACjD,eAAsD;IAEtD,OAAO;QACL,GAAG,IAAI,GAAG,CACR;YACE,GAAG,eAAe;YAClB,wFAAwF;YACxF,GAAG,CAAC,gBAAgB,GAAG,CAAC;gBACtB,CAAC,CAAC;oBACA,UAAU,KAAK,SAAS;wBACtB,CAAC,CAAC,4FAA4F;wBAC9F,CAAC,CAAC,oGAAoG;iBACzG;gBACD,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,sBAAsB,GAAG,CAAC;gBAC5B,CAAC,CAAC;oBACA,UAAU,KAAK,SAAS;wBACtB,CAAC,CAAC,uEAAuE;wBACzE,CAAC,CAAC,2EAA2E;iBAChF;gBACD,CAAC,CAAC,EAAE,CAAC;YACP,oBAAoB;YACpB,GAAG,CAAC,eAAe,IAAI,eAAe,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC;gBAC/D,CAAC,CAAC,CAAC,6BAA6B,eAAe,CAAC,eAAe,CAAC,MAAM,gBAAgB,CAAC;gBACvF,CAAC,CAAC,EAAE,CAAC;SACR,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CACnE;KACF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,wBAAwB,CAAC,GAA2B;IACjE,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC;IAC9F,IAAI,gBAAgB,IAAI,gBAAgB,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3D,MAAM,IAAI,UAAU,CAAC,oDAAoD,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;IAC9F,CAAC;IACD,MAAM,UAAU,GAAG,qBAAqB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACzD,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,KAAK,IAAI,CAAC;IAC5C,IAAI,YAAY,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;QAC1C,MAAM,IAAI,UAAU,CAAC,+CAA+C,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;IACzF,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;IACjE,MAAM,gBAAgB,GAAG,MAAM,yBAAyB,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;IACtF,QAAQ,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,MAAM,uBAAuB,CAAC,aAAa,CAAC,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACtH,QAAQ,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IACrC,IAAI,YAAY,GAAG,gBAAgB,CAAC,KAAK,CAAC;IAC1C,MAAM,eAAe,GACnB,OAAO,CAAC,eAAe,KAAK,IAAI;QAC9B,CAAC,CAAC,MAAM,wBAAwB,CAC5B,aAAa,CAAC,aAAa,EAC3B,KAAK,EACL,SAAS,CAAC,UAAU,EACpB,gBAAgB,CAAC,KAAK,CACvB;QACH,CAAC,CAAC,IAAI,CAAC;IACX,IAAI,eAAe,EAAE,CAAC;QACpB,YAAY,GAAG,eAAe,CAAC,KAAK,CAAC;IACvC,CAAC;IACD,MAAM,kBAAkB,GAAG,MAAM,uBAAuB,CAAC,aAAa,CAAC,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;IACrH,QAAQ,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAE9C,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC;QACtC,MAAM,EAAE,aAAa,CAAC,OAAO;QAC7B,QAAQ;QACR,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;QAClB,YAAY,EAAE,MAAM,CAAC,YAAY,KAAK,IAAI;KAC3C,CAAC,CAAC;IACH,MAAM,gBAAgB,GAAG,MAAM,kBAAkB,CAAC;QAChD,GAAG,UAAU;QACb,MAAM,EAAE,UAAU,CAAC,MAAM;KAC1B,CAAC,CAAC;IACH,QAAQ,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IACtC,QAAQ,CAAC,IAAI,CAAC,GAAG,iCAAiC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;IACvE,QAAQ,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC5C,QAAQ,CAAC,IAAI,CAAC,GAAG,uCAAuC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;IACnF,QAAQ,CAAC,IAAI,CAAC,GAAG,gCAAgC,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC;IACjF,QAAQ,CAAC,IAAI,CAAC,GAAG,yCAAyC,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC9E,QAAQ,CAAC,IAAI,CAAC,GAAG,2CAA2C,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAC5F,MAAM,0BAA0B,GAAG,iCAAiC,CAAC,kBAAkB,CAAC,UAAU,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAAC;IAClI,MAAM,iBAAiB,GAAG,6BAA6B,CACrD,KAAK,EACL,0BAA0B,EAC1B,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,EAC5E,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,EACxD,UAAU,CAAC,gBAAgB,CAC5B,CAAC;IACF,QAAQ,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC7C,MAAM,mBAAmB,GAAG,0BAA0B;SACnD,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,mBAAmB,KAAK,QAAQ,CAAC;SACzD,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,iCAAiC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IACjE,QAAQ,CAAC,IAAI,CAAC,GAAG,mBAAmB,CAAC,CAAC;IAEtC,MAAM,MAAM,GAAG,2BAA2B,CAAC,KAAK,EAAE,QAAQ,EAAE,0BAA0B,EAAE,OAAO,CAAC,CAAC;IACjG,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IAClC,MAAM,kBAAkB,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IAChD,MAAM,aAAa,GAAG;QACpB,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI;QAC5B,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,UAAU;QACxC,kBAAkB,EAAE,UAAU,CAAC,MAAM,CAAC,kBAAkB;QACxD,uBAAuB,EAAE,UAAU,CAAC,MAAM,CAAC,uBAAuB;QAClE,0EAA0E;QAC1E,mBAAmB,EACjB,6GAA6G;QAC/G,wBAAwB,EAAE,UAAU,CAAC,MAAM,CAAC,kBAAkB,CAAC,MAAM;QACrE,wBAAwB,EAAE,UAAU,CAAC,MAAM,CAAC,kBAAkB,CAAC,MAAM;QACrE,wBAAwB,EAAE,UAAU,CAAC,MAAM,CAAC,kBAAkB,CAAC,MAAM;QACrE,0BAA0B,EAAE,UAAU,CAAC,MAAM,CAAC,oBAAoB,CAAC,MAAM;QACzE,0BAA0B,EAAE,UAAU,CAAC,MAAM,CAAC,oBAAoB,CAAC,MAAM;QACzE,sBAAsB,EAAE,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM;QACjE,sBAAsB,EAAE,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM;QACjE,sBAAsB,EAAE,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM;QACjE,sBAAsB,EAAE,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM;QACjE,qBAAqB,EAAE,UAAU,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM;QAC/D,qBAAqB,EAAE,UAAU,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM;QAC/D,sBAAsB,EAAE,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM;QACjE,sBAAsB,EAAE,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM;QACjE,wBAAwB,EAAE,UAAU,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM;KACvE,CAAC;IACF,MAAM,kBAAkB,GAAG,gCAAgC,CAAC,kBAAkB,CAAC,CAAC;IAChF,MAAM,kBAAkB,GAAG,+BAA+B,EAAE,CAAC;IAC7D,MAAM,YAAY,GAAG,MAAM,CAAC,aAAa,CAAC;IAC1C,MAAM,WAAW,GAAG,sBAAsB,CACxC,MAAM,CAAC,WAAW,EAClB,UAAU,CAAC,MAAM,CAAC,MAAM,EACxB,gBAAgB,CAAC,MAAM,CAAC,MAAM,EAC9B,OAAO,CAAC,UAAU,EAClB,eAAe,CAChB,CAAC;IAEF,MAAM,OAAO,GAAG;QACd,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,KAAK;QACL,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,aAAa,EAAE,YAAY;QAC3B,gBAAgB,EAAE,0BAA0B,CAAC,MAAM;QACnD,aAAa,EAAE,0BAA0B,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM;QACjF,aAAa,EAAE,0BAA0B,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM;QACjF,YAAY,EAAE,0BAA0B,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM;QAC/E,gCAAgC,EAAE,MAAM,CAAC,gCAAgC;QACzE,yCAAyC,EAAE,MAAM,CAAC,yCAAyC;QAC3F,kCAAkC,EAAE,MAAM,CAAC,kCAAkC;QAC7E,oBAAoB,EAAE,0BAA0B,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,cAAc,KAAK,IAAI,CAAC,CAAC,MAAM;QACxG,wBAAwB,EAAE;YACxB,EAAE,EAAE,0BAA0B,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,iBAAiB,KAAK,IAAI,CAAC,CAAC,MAAM;YACzF,MAAM,EAAE,0BAA0B,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,iBAAiB,KAAK,QAAQ,CAAC,CAAC,MAAM;YACjG,UAAU,EAAE,0BAA0B,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,iBAAiB,KAAK,YAAY,CAAC,CAAC,MAAM;YACzG,OAAO,EAAE,0BAA0B,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC,MAAM;SACpG;QACD,wBAAwB,EAAE,kBAAkB,CAAC,MAAM;QACnD,2BAA2B,EAAE,kBAAkB,CAAC,OAAO;QACvD,sBAAsB,EAAE,0BAA0B,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,gBAAgB,KAAK,IAAI,CAAC,CAAC,MAAM;QAC5G,sBAAsB,EAAE,MAAM,CAAC,sBAAsB;QACrD,qBAAqB,EAAE,MAAM,CAAC,qBAAqB;QACnD,yBAAyB,EAAE,0BAA0B,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,mBAAmB,KAAK,QAAQ,CAAC,CAAC,MAAM;QACtH,kBAAkB,EAAE,UAAU,CAAC,MAAM,CAAC,MAAM;QAC5C,wBAAwB,EAAE,gBAAgB,CAAC,MAAM,CAAC,MAAM;QACxD,sBAAsB,EAAE,UAAU,CAAC,MAAM,CAAC,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC,MAAM;QACjF,qBAAqB,EAAE,UAAU,CAAC,MAAM,CAAC,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;QACpF,yBAAyB,EAAE,iBAAiB,CAAC,QAAQ,CAAC,MAAM;QAC5D,aAAa,EAAE,YAAY;QAC3B,MAAM,EAAE,aAAa;QACrB,WAAW;KACZ,CAAC;IAEF,MAAM,sBAAsB,GAAG,eAAe;QAC5C,CAAC,CAAC;YACE,SAAS,EAAE,IAAI;YACf,OAAO,EAAE,eAAe,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC;YACnD,aAAa,EAAE,eAAe,CAAC,eAAe,CAAC,MAAM;YACrD,qBAAqB,EAAE,eAAe,CAAC,qBAAqB;YAC5D,kBAAkB,EAAE,eAAe,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;SAC/E;QACH,CAAC,CAAC;YACE,SAAS,EAAE,KAAK;YAChB,OAAO,EAAE,KAAK;YACd,aAAa,EAAE,CAAC;YAChB,qBAAqB,EAAE,kBAAkB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM;YAC5F,kBAAkB,EAAE,EAAc;SACnC,CAAC;IAEN,MAAM,OAAO,GAA4B;QACvC,IAAI,EAAE,UAAU;QAChB,OAAO;QACP,MAAM;QACN,aAAa,EAAE,YAAY;QAC3B,mBAAmB,EAAE,kBAAkB;QACvC,mBAAmB,EAAE,kBAAkB;QACvC,iBAAiB,EAAE,sBAAsB;QACzC,MAAM,EAAE,UAAU,CAAC,MAAM;KAC1B,CAAC;IACF,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;QAC1B,MAAM,uBAAuB,GAAG,YAAY;YAC1C,CAAC,CAAC,gBAAgB,CAAC,MAAM;YACzB,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;gBACpC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;gBACzC,OAAO,IAAI,CAAC;YACd,CAAC,CAAC,CAAC;QACP,OAAO,CAAC,IAAI,GAAG;YACb,QAAQ,EAAE,kBAAkB;YAC5B,aAAa,EAAE,YAAY;YAC3B,mBAAmB,EAAE,kBAAkB;YACvC,mBAAmB,EAAE,kBAAkB;YACvC,aAAa,EAAE,YAAY;YAC3B,aAAa,EAAE;gBACb,IAAI,EAAE,gBAAgB,CAAC,IAAI;gBAC3B,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,MAAM;gBAClC,OAAO,EAAE,YAAY,CAAC,OAAO;aAC9B;YACD,oBAAoB,EAAE,0BAA0B;YAChD,IAAI,EAAE;gBACJ,KAAK,EAAE,UAAU,CAAC,KAAK;gBACvB,MAAM,EAAE,UAAU,CAAC,MAAM;gBACzB,QAAQ,EAAE,UAAU,CAAC,QAAQ;gBAC7B,MAAM,EAAE,UAAU,CAAC,MAAM;gBACzB,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;oBACxC,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ;iBACzB,CAAC,CAAC;aACJ;YACD,UAAU,EAAE;gBACV,MAAM,EAAE,uBAAuB;gBAC/B,QAAQ,EAAE,gBAAgB,CAAC,QAAQ;gBACnC,WAAW,EAAE,gBAAgB,CAAC,WAAW;gBACzC,mBAAmB,EAAE,gBAAgB,CAAC,mBAAmB;gBACzD,qBAAqB,EAAE,gBAAgB,CAAC,qBAAqB;gBAC7D,wBAAwB,EAAE,gBAAgB,CAAC,wBAAwB;gBACnE,sBAAsB,EAAE,gBAAgB,CAAC,sBAAsB;gBAC/D,uBAAuB,EAAE,gBAAgB,CAAC,uBAAuB;aAClE;YACD,WAAW,EAAE,iBAAiB,CAAC,OAAO;SACvC,CAAC;QACF,IAAI,YAAY,EAAE,CAAC;YAChB,OAAO,CAAC,IAAgC,CAAC,KAAK,GAAG;gBAChD,mBAAmB,EAAE,gBAAgB,CAAC,MAAM;qBACzC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC;qBAC5C,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;oBACf,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,UAAU,EAAE,KAAK,CAAC,UAAU;oBAC5B,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM;oBAC3B,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO;oBAC7B,UAAU,EAAE,KAAK,CAAC,KAAK,EAAE,UAAU;oBACnC,kBAAkB,EAAE,KAAK,CAAC,KAAK,EAAE,kBAAkB;oBACnD,kBAAkB,EAAE,KAAK,CAAC,KAAK,EAAE,kBAAkB;oBACnD,eAAe,EAAE,KAAK,CAAC,KAAK,EAAE,eAAe;oBAC7C,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI;oBACvB,QAAQ,EAAE,KAAK,CAAC,KAAK,EAAE,QAAQ;iBAChC,CAAC,CAAC;aACN,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC;AAC7B,CAAC;AAED,KAAK,UAAU,0BAA0B,CAAC,GAA2B;IACnE,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC;IAC9F,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;IACjE,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC;QACtC,MAAM,EAAE,aAAa,CAAC,OAAO;QAC7B,QAAQ;QACR,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;QAClB,YAAY,EAAE,MAAM,CAAC,YAAY,KAAK,IAAI;KAC3C,CAAC,CAAC;IACH,MAAM,gBAAgB,GAAG,MAAM,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAC9D,QAAQ,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IACtC,QAAQ,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,cAAc,GAAG,4BAA4B,CAAC,gBAAgB,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAAC;IACpG,IAAI,gBAAgB,KAAK,SAAS,IAAI,cAAc,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7E,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC;QACxE,MAAM,WAAW,GAAG;YAClB,GAAG,IAAI,GAAG,CACR,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAC9B,OAAO,CAAC,UAAU,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC,cAAc,KAAK,QAAQ,IAAI,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;gBACpH,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE;gBAC7B,CAAC,CAAC,KAAK,CAAC,IAAI,CACf,CACF;SACF,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;QACnD,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,IAAI,WAAW,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACrG,MAAM,IAAI,UAAU,CAClB,aAAa,IAAI,WAAW,gBAAgB,kBAAkB,KAAK,UAAU,UAAU,WAAW,IAAI,+BAA+B,IAAI,IAAI,EAC7I,SAAS,CAAC,SAAS,CACpB,CAAC;IACJ,CAAC;IACD,OAAO,UAAU,CAAC;QAChB,MAAM,EAAE,cAAc,CAAC,MAAM;QAC7B,KAAK,EAAE,cAAc,CAAC,KAAK;QAC3B,UAAU,EAAE,cAAc,CAAC,UAAU;QACrC,KAAK,EAAE,cAAc,CAAC,KAAK;KAC5B,CAAC,CAAC;AACL,CAAC;AAED,mGAAmG;AACnG,KAAK,UAAU,+BAA+B,CAAC,GAA2B;IACxE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC;IACpF,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;IACjE,MAAM,gBAAgB,GAAG,2BAA2B,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACjF,MAAM,gBAAgB,GAAG,MAAM,yBAAyB,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;IACtF,QAAQ,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,MAAM,uBAAuB,CAAC,aAAa,CAAC,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACtH,QAAQ,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IAErC,IAAI,YAAY,GAAG,gBAAgB,CAAC,KAAK,CAAC;IAC1C,MAAM,eAAe,GACnB,MAAM,KAAK,QAAQ,IAAI,OAAO,CAAC,eAAe,KAAK,IAAI;QACrD,CAAC,CAAC,MAAM,wBAAwB,CAC5B,aAAa,CAAC,aAAa,EAC3B,KAAK,EACL,SAAS,CAAC,UAAU,EACpB,gBAAgB,CAAC,KAAK,CACvB;QACH,CAAC,CAAC,IAAI,CAAC;IACX,IAAI,eAAe,EAAE,CAAC;QACpB,YAAY,GAAG,eAAe,CAAC,KAAK,CAAC;IACvC,CAAC;IACD,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACvC,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACnC,OAAO,KAAK,CAAC;YACf,CAAC;YACD,MAAM,YAAY,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC3D,OAAO;gBACL,GAAG,KAAK;gBACR,oBAAoB,EAAE,YAAY,CAAC,UAAU;gBAC7C,yBAAyB,EAAE,YAAY,CAAC,aAAa;gBACrD,gBAAgB,EAAE,YAAY,CAAC,SAAS;gBACxC,YAAY,EAAE,YAAY,CAAC,KAAK;aACjC,CAAC;QACJ,CAAC,CAAC,CACH,CAAC;QACF,YAAY,GAAG;YACb,GAAG,YAAY;YACf,UAAU,EAAE,MAAM,EAAE;YACpB,OAAO,EAAE,kBAAkB,CAAC,OAAO,CAAC;SACrC,CAAC;QACF,MAAM,0BAA0B,CAAC,aAAa,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;IAC9E,CAAC;IAED,MAAM,kBAAkB,GAAG,MAAM,uBAAuB,CAAC,aAAa,CAAC,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;IACrH,QAAQ,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAC9C,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxB,MAAM,cAAc,GAAG,kBAAkB,CAAC,UAAU;aACjD,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,mBAAmB,KAAK,QAAQ,CAAC;aACzD,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,iCAAiC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QACjE,QAAQ,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC;IACnC,CAAC;IACD,IAAI,mBAAwD,CAAC;IAC7D,IAAI,0BAA0B,GAAG,kBAAkB,CAAC,UAAU,CAAC;IAC/D,IAAI,yBAAoE,CAAC;IACzE,IAAI,MAAM,KAAK,SAAS,IAAI,OAAO,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;QAC1D,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC;YACtC,MAAM,EAAE,aAAa,CAAC,OAAO;YAC7B,QAAQ;YACR,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;YAClB,YAAY,EAAE,MAAM,CAAC,YAAY,KAAK,IAAI;SAC3C,CAAC,CAAC;QACH,MAAM,gBAAgB,GAAG,MAAM,kBAAkB,CAAC;YAChD,GAAG,UAAU;YACb,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC;QACH,QAAQ,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;QACtC,QAAQ,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAC5C,0BAA0B,GAAG,iCAAiC,CAAC,kBAAkB,CAAC,UAAU,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAAC;QAC5H,yBAAyB,GAAG,mCAAmC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACzF,mBAAmB,GAAG;YACpB,SAAS,EAAE,IAAI;YACf,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,yBAAyB;YAC9F,kBAAkB,EAAE,UAAU,CAAC,MAAM,CAAC,MAAM;YAC5C,wBAAwB,EAAE,gBAAgB,CAAC,MAAM,CAAC,MAAM;YACxD,aAAa,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,QAAQ,EAAE,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM;YAC1F,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC;IACJ,CAAC;SAAM,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,mBAAmB,GAAG;YACpB,SAAS,EAAE,KAAK;YAChB,QAAQ,EAAE,KAAK;SAChB,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,2BAA2B,CAAC,KAAK,EAAE,QAAQ,EAAE,0BAA0B,EAAE,OAAO,CAAC,CAAC;IACjG,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IAClC,MAAM,OAAO,GAA4B;QACvC,KAAK,EAAE,0BAA0B,CAAC,MAAM;QACxC,aAAa,EAAE,0BAA0B,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM;QACjF,aAAa,EAAE,0BAA0B,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM;QACjF,YAAY,EAAE,0BAA0B,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM;QAC/E,UAAU,EAAE,0BAA0B;QACtC,MAAM;QACN,MAAM,EAAE,gBAAgB;KACzB,CAAC;IACF,IAAI,yBAAyB,KAAK,SAAS,EAAE,CAAC;QAC5C,OAAO,CAAC,sBAAsB,GAAG;YAC/B,YAAY,EAAE,yBAAyB,CAAC,MAAM;YAC9C,MAAM,EAAE,yBAAyB;SAClC,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,CAAC,aAAa,GAAG,mBAAmB,CAAC;IAC9C,CAAC;IACD,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxB,OAAO,CAAC,aAAa,GAAG,mBAAmB,CAAC;QAC5C,OAAO,CAAC,iBAAiB;YACvB,eAAe,KAAK,IAAI;gBACtB,CAAC,CAAC;oBACE,SAAS,EAAE,IAAI;oBACf,OAAO,EAAE,eAAe,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC;oBACnD,aAAa,EAAE,eAAe,CAAC,eAAe,CAAC,MAAM;oBACrD,kBAAkB,EAAE,eAAe,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;oBAC9E,qBAAqB,EAAE,eAAe,CAAC,qBAAqB;iBAC7D;gBACH,CAAC,CAAC;oBACE,SAAS,EAAE,KAAK;oBAChB,OAAO,EAAE,KAAK;oBACd,aAAa,EAAE,CAAC;oBAChB,kBAAkB,EAAE,EAAE;oBACtB,qBAAqB,EAAE,0BAA0B,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM;iBAC1F,CAAC;IACV,CAAC;IACD,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC;AAC7B,CAAC;AACD,oBAAoB;AAEpB,8EAA8E;AAC9E,6EAA6E;AAC7E,+EAA+E;AAC/E,wDAAwD;AACxD,MAAM,yBAAyB,GAG3B;IACF,IAAI,EAAE,sBAAsB;IAC5B,OAAO,EAAE,yBAAyB;IAClC,SAAS,EAAE,2BAA2B;IACtC,OAAO,EAAE,+BAA+B;IACxC,MAAM,EAAE,+BAA+B;IACvC,QAAQ,EAAE,0BAA0B;IACpC,MAAM,EAAE,wBAAwB;IAChC,MAAM,EAAE,wBAAwB;IAChC,OAAO,EAAE,yBAAyB;IAClC,KAAK,EAAE,uBAAuB;IAC9B,WAAW,EAAE,0BAA0B;IACvC,QAAQ,EAAE,oCAAoC;IAC9C,UAAU,EAAE,oCAAoC;CACjD,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,wBAAwB;IACxB,2BAA2B;IAC3B,4BAA4B;IAC5B,iBAAiB;IACjB,mBAAmB;IACnB,mCAAmC;IACnC,2BAA2B;IAC3B,qCAAqC;IACrC,yCAAyC;IACzC,2CAA2C;IAC3C,wCAAwC;IACxC,WAAW;IACX,oCAAoC;IACpC,uBAAuB;IACvB,aAAa;IACb,aAAa;IACb,kCAAkC;IAClC,mBAAmB;IACnB,kCAAkC;IAClC,YAAY;IACZ,4BAA4B;IAC5B,wBAAwB;CACzB,CAAC","debugId":"3ff8a83f-729e-576a-8830-d52097bd0d34"}
|
|
1
|
+
{"version":3,"file":"extension.js","sources":["cli/commands/extension.ts"],"sourceRoot":"/","sourcesContent":["/**\n * @module cli/commands/extension\n *\n * Implements the pm extension command surface and its agent-facing runtime behavior.\n */\nimport { execFile } from \"node:child_process\";\nimport fs from \"node:fs/promises\";\nimport os from \"node:os\";\nimport path from \"node:path\";\nimport { promisify } from \"node:util\";\nimport { activateExtensions, loadExtensions, nextExtensionReloadToken } from \"../../core/extensions/index.js\";\nimport { resolveExtensionRoots } from \"../../core/extensions/loader.js\";\nimport { pathExists } from \"../../core/fs/fs-utils.js\";\nimport { isPathWithinDirectory } from \"../../core/fs/path-utils.js\";\nimport { collectPackageExtensionDirectories } from \"../../core/packages/manifest.js\";\nimport { EXIT_CODE } from \"../../core/shared/constants.js\";\nimport type { GlobalOptions } from \"../../core/shared/command-types.js\";\nimport { PmCliError } from \"../../core/shared/errors.js\";\nimport { levenshteinDistanceWithinLimit } from \"../../core/shared/levenshtein.js\";\nimport { nowIso } from \"../../core/shared/time.js\";\nimport { resolveGlobalPmRoot, resolvePmRoot } from \"../../core/store/paths.js\";\nimport { readSettings, writeSettings } from \"../../core/store/settings.js\";\nimport { ensureTypeFolderScaffold } from \"./schema.js\";\nimport type { PmSettings } from \"../../types/index.js\";\n// Cohesive helper groups now live in ./extension/* sibling modules. They are\n// imported for the command wiring that stays here and re-exported below so\n// existing import sites (sdk barrels, upgrade.ts, tests) keep importing the\n// public surface (runExtension, managed-state read/write, install-source\n// parsing, …) from \"./extension.js\" unchanged.\nimport {\n normalizeStringList,\n normalizeExtensionNameForMatch,\n normalizeManagedDirectoryName,\n parseExtensionManifest,\n validateExtensionDirectory,\n} from \"./extension/shared.js\";\nimport {\n sortManagedEntries,\n managedExtensionSourcesEquivalent,\n readManagedExtensionState,\n writeManagedExtensionState,\n upsertManagedEntry,\n resolveManagedExtensionStatePath,\n type ManagedExtensionSource,\n type ManagedExtensionRecord,\n type ManagedExtensionState,\n} from \"./extension/managed-state.js\";\nimport {\n parseExtensionInstallSource,\n resolveInstallSource,\n areDirectoriesEquivalent,\n runGitCommand,\n} from \"./extension/install-sources.js\";\nimport {\n resolveBundledExtensionAliasSource,\n resolveBundledPackageNpmName,\n isBundledPackageInstallAllTarget,\n listBundledPackageAliases,\n resolveBundledAliasManifestName,\n buildBundledPackageCatalog,\n} from \"./extension/bundled-catalog.js\";\nimport { scaffoldExtensionProject } from \"./extension/scaffold.js\";\nimport { buildExtensionDescribeResult } from \"./extension/describe.js\";\nimport {\n applyDoctorRuntimeActivationState,\n classifyDoctorLoadFailureWarnings,\n classifyDoctorActivationFailureWarnings,\n classifyUnusedCapabilityWarnings,\n buildExtensionTriageSummary,\n parseDoctorDetailMode,\n collectUnknownCapabilityGuidance,\n buildCapabilityContractMetadata,\n buildDoctorConsistencySummary,\n} from \"./extension/doctor.js\";\n// Re-export the public surface that lives in sibling modules but was previously\n// exported from this file (used by sdk barrels, upgrade.ts, and tests).\nexport {\n parseExtensionManifest,\n validateExtensionDirectory,\n readManagedExtensionState,\n writeManagedExtensionState,\n resolveManagedExtensionStatePath,\n parseExtensionInstallSource,\n};\nexport type {\n ManagedExtensionSource,\n ManagedExtensionRecord,\n ManagedExtensionState,\n};\nexport type { ManagedExtensionStateReadResult } from \"./extension/managed-state.js\";\n\nconst execFileAsync = promisify(execFile);\nconst EXTENSION_INSTALL_COPY_ATTEMPTS = 3;\nconst EXTENSION_INSTALL_LOCK_ATTEMPTS = 120;\nconst EXTENSION_INSTALL_LOCK_DELAY_MS = 250;\nconst EXTENSION_INSTALL_LOCK_STALE_MS = 120_000;\n\n/**\n * Restricts extension command action values accepted by command, SDK, and storage contracts.\n */\nexport type ExtensionCommandAction =\n | \"install\"\n | \"uninstall\"\n | \"explore\"\n | \"manage\"\n | \"describe\"\n | \"reload\"\n | \"doctor\"\n | \"catalog\"\n | \"adopt\"\n | \"adopt-all\"\n | \"activate\"\n | \"deactivate\"\n | \"init\";\n\nconst LIFECYCLE_ACTION_TARGETS = [\n [\"install\", \"install\", \"--install\"],\n [\"uninstall\", \"uninstall\", \"--uninstall\"],\n [\"explore\", \"explore\", \"--explore\"],\n [\"list\", \"explore\", \"--explore\"],\n [\"manage\", \"manage\", \"--manage\"],\n [\"describe\", \"describe\", \"--describe\"],\n [\"reload\", \"reload\", \"--reload\"],\n [\"doctor\", \"doctor\", \"--doctor\"],\n [\"catalog\", \"catalog\", \"--catalog\"],\n [\"init\", \"init\", \"--init\"],\n [\"scaffold\", \"init\", \"--scaffold\"],\n [\"adopt\", \"adopt\", \"--adopt\"],\n [\"adopt-all\", \"adopt-all\", \"--adopt-all\"],\n [\"activate\", \"activate\", \"--activate\"],\n [\"deactivate\", \"deactivate\", \"--deactivate\"],\n] as const satisfies readonly (readonly [string, ExtensionCommandAction, `--${string}`])[];\n\nconst LIFECYCLE_ACTION_FLAG_HINT = LIFECYCLE_ACTION_TARGETS.map(([, , flag]) => flag)\n .filter((flag, index, flags) => flags.indexOf(flag) === index)\n .join(\", \");\nconst LIFECYCLE_ACTION_FLAGS: Record<ExtensionCommandAction, `--${string}`> = {\n install: \"--install\",\n uninstall: \"--uninstall\",\n explore: \"--explore\",\n manage: \"--manage\",\n describe: \"--describe\",\n reload: \"--reload\",\n doctor: \"--doctor\",\n catalog: \"--catalog\",\n adopt: \"--adopt\",\n \"adopt-all\": \"--adopt-all\",\n activate: \"--activate\",\n deactivate: \"--deactivate\",\n init: \"--init\",\n};\n/**\n * Restricts extension scope values accepted by command, SDK, and storage contracts.\n */\nexport type ExtensionScope = \"project\" | \"global\";\n/**\n * Restricts extension activation status values accepted by command, SDK, and storage contracts.\n */\nexport type ExtensionActivationStatus = \"ok\" | \"failed\" | \"not_loaded\" | \"unknown\";\n\n/**\n * Documents the extension command options payload exchanged by command, SDK, and package integrations.\n */\nexport interface ExtensionCommandOptions {\n install?: boolean;\n uninstall?: boolean;\n explore?: boolean;\n manage?: boolean;\n describe?: boolean;\n markdown?: boolean;\n output?: string;\n reload?: boolean;\n doctor?: boolean;\n catalog?: boolean;\n init?: boolean;\n scaffold?: boolean;\n strictExit?: boolean;\n failOnWarn?: boolean;\n adopt?: boolean;\n adoptAll?: boolean;\n activate?: boolean;\n deactivate?: boolean;\n project?: boolean;\n local?: boolean;\n global?: boolean;\n gh?: string;\n github?: string;\n ref?: string;\n detail?: string;\n trace?: boolean;\n watch?: boolean;\n runtimeProbe?: boolean;\n fixManagedState?: boolean;\n isolated?: boolean;\n ignoreGlobal?: boolean;\n fields?: string;\n capability?: string;\n declarative?: boolean;\n vocabulary?: \"extension\" | \"package\";\n}\n\n/**\n * Documents the managed extension summary payload exchanged by command, SDK, and package integrations.\n */\nexport interface ManagedExtensionSummary {\n name: string;\n directory: string;\n version: string;\n entry: string;\n scope: ExtensionScope;\n // Backward-compatible alias for configured enabled state. Prefer `enabled`.\n active: boolean;\n enabled: boolean;\n runtime_active: boolean | null;\n activation_status: ExtensionActivationStatus;\n command_paths?: string[];\n action_paths?: string[];\n managed: boolean;\n source?: ManagedExtensionSource;\n update_available?: boolean | null;\n last_update_check_at?: string;\n last_update_remote_commit?: string;\n update_error?: string;\n update_check_status: ExtensionUpdateCheckStatus;\n update_check_reason: string;\n}\n\n/**\n * Documents the extension command result payload exchanged by command, SDK, and package integrations.\n */\nexport interface ExtensionCommandResult {\n ok: boolean;\n action: ExtensionCommandAction;\n scope: ExtensionScope;\n roots: {\n project: string;\n global: string;\n selected: string;\n settings_root: string;\n };\n warnings: string[];\n details: Record<string, unknown>;\n}\n\nconst NATIVE_OUTPUT_MARKER = \"__pm_native_output\";\n\n/**\n * Documents the extension triage summary payload exchanged by command, SDK, and package integrations.\n */\nexport interface ExtensionTriageSummary {\n status: \"ok\" | \"warn\";\n warning_count: number;\n warning_codes: string[];\n warnings: string[];\n policy_warning_count: number;\n policy_violation_count: number;\n policy_blocked_count: number;\n total_extensions: number;\n managed_total: number;\n enabled_total: number;\n active_total: number;\n update_available_total: number;\n update_health_coverage: \"full\" | \"partial\";\n update_health_partial: boolean;\n unmanaged_loaded_extension_count: number;\n unmanaged_loaded_extensions: string[];\n unmanaged_expected_extension_count: number;\n unmanaged_expected_extensions: string[];\n unmanaged_action_required_extension_count: number;\n unmanaged_action_required_extensions: string[];\n update_check_status_totals: Record<ExtensionUpdateCheckStatus, number>;\n update_check_failed_total: number;\n top_warnings: string[];\n remediation: string[];\n collision_plan?: ExtensionCollisionPlan;\n}\n\n/**\n * Documents the extension collision plan payload exchanged by command, SDK, and package integrations.\n */\nexport interface ExtensionCollisionPlan {\n status: \"ok\" | \"conflicts_detected\";\n collision_count: number;\n extension_count: number;\n next_best_command: string;\n collisions: Array<{\n code: string;\n surface: string;\n winner: { layer: ExtensionScope; name: string };\n displaced: { layer: ExtensionScope; name: string };\n }>;\n remediation_candidates: Array<{\n action: \"deactivate\";\n extension: string;\n command: string;\n affected_collisions: number;\n feature_loss: {\n command_paths: string[];\n action_paths: string[];\n };\n }>;\n}\n\n/**\n * Restricts extension update check status values accepted by command, SDK, and storage contracts.\n */\nexport type ExtensionUpdateCheckStatus = \"checked\" | \"skipped_unmanaged\" | \"skipped_non_github\" | \"failed\" | \"not_checked\";\n\ninterface ExtensionUpdateCheckResolution {\n status: ExtensionUpdateCheckStatus;\n reason: string;\n}\n\n/**\n * Restricts extension doctor detail mode values accepted by command, SDK, and storage contracts.\n */\nexport type ExtensionDoctorDetailMode = \"summary\" | \"deep\";\n\nconst EXTENSION_POLICY_ROOT_LIST_FIELDS = [\n \"trusted_extensions\",\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] as const;\n\nconst EXTENSION_POLICY_OVERRIDE_LIST_FIELDS = [\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] as const;\nconst DEFAULT_EXTENSION_POLICY_DETAILS: PmSettings[\"extensions\"][\"policy\"] = {\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\ntype ExtensionPolicyRootListField = (typeof EXTENSION_POLICY_ROOT_LIST_FIELDS)[number];\ntype ExtensionPolicyOverrideListField = (typeof EXTENSION_POLICY_OVERRIDE_LIST_FIELDS)[number];\n\ninterface ExtensionPolicyOverrideDetails {\n name: string;\n disabled?: boolean;\n require_trusted?: boolean;\n require_provenance?: boolean;\n sandbox_profile?: \"none\" | \"restricted\" | \"strict\";\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\ninterface ExtensionPolicyDetails {\n mode: \"off\" | \"warn\" | \"enforce\";\n trust_mode: \"off\" | \"warn\" | \"enforce\";\n require_provenance: boolean;\n trusted_extensions: string[];\n default_sandbox_profile: \"none\" | \"restricted\" | \"strict\";\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: ExtensionPolicyOverrideDetails[];\n}\n\nfunction normalizePolicyRootLists(\n policy: PmSettings[\"extensions\"][\"policy\"] | null | undefined,\n): Record<ExtensionPolicyRootListField, string[]> {\n const safePolicy = policy ?? DEFAULT_EXTENSION_POLICY_DETAILS;\n const lists = {} as Record<ExtensionPolicyRootListField, string[]>;\n for (const field of EXTENSION_POLICY_ROOT_LIST_FIELDS) {\n lists[field] = normalizeStringList(safePolicy[field] ?? []);\n }\n return lists;\n}\n\nfunction appendNonEmptyPolicyLists(\n target: ExtensionPolicyOverrideDetails,\n lists: Record<ExtensionPolicyOverrideListField, string[]>,\n): ExtensionPolicyOverrideDetails {\n for (const field of EXTENSION_POLICY_OVERRIDE_LIST_FIELDS) {\n if (lists[field].length > 0) {\n target[field] = lists[field];\n }\n }\n return target;\n}\n\nfunction buildExtensionPolicyOverrideDetails(\n override: NonNullable<PmSettings[\"extensions\"][\"policy\"][\"extension_overrides\"]>[number],\n): ExtensionPolicyOverrideDetails | null {\n const name = typeof override.name === \"string\" ? override.name.trim() : \"\";\n if (name.length === 0) {\n return null;\n }\n const details: ExtensionPolicyOverrideDetails = { name };\n if (override.disabled === true) {\n details.disabled = true;\n }\n if (override.require_trusted === true) {\n details.require_trusted = true;\n }\n if (override.require_provenance === true) {\n details.require_provenance = true;\n }\n if (override.sandbox_profile) {\n details.sandbox_profile = override.sandbox_profile;\n }\n const lists = {} as Record<ExtensionPolicyOverrideListField, string[]>;\n for (const field of EXTENSION_POLICY_OVERRIDE_LIST_FIELDS) {\n lists[field] = normalizeStringList(override[field] ?? []);\n }\n return appendNonEmptyPolicyLists(details, lists);\n}\n\nfunction buildExtensionPolicyDetails(policy: PmSettings[\"extensions\"][\"policy\"] | null | undefined): ExtensionPolicyDetails {\n const safePolicy = policy ?? DEFAULT_EXTENSION_POLICY_DETAILS;\n const rootLists = normalizePolicyRootLists(policy);\n const overrides = (safePolicy.extension_overrides ?? [])\n .map((override) => buildExtensionPolicyOverrideDetails(override))\n .filter((override): override is ExtensionPolicyOverrideDetails => override !== null)\n .sort((left, right) => left.name.localeCompare(right.name));\n return {\n mode: safePolicy.mode ?? DEFAULT_EXTENSION_POLICY_DETAILS.mode,\n trust_mode: safePolicy.trust_mode ?? DEFAULT_EXTENSION_POLICY_DETAILS.trust_mode,\n require_provenance: safePolicy.require_provenance === true,\n trusted_extensions: rootLists.trusted_extensions,\n default_sandbox_profile: safePolicy.default_sandbox_profile ?? \"none\",\n allowed_extensions: rootLists.allowed_extensions,\n blocked_extensions: rootLists.blocked_extensions,\n allowed_capabilities: rootLists.allowed_capabilities,\n blocked_capabilities: rootLists.blocked_capabilities,\n allowed_surfaces: rootLists.allowed_surfaces,\n blocked_surfaces: rootLists.blocked_surfaces,\n allowed_commands: rootLists.allowed_commands,\n blocked_commands: rootLists.blocked_commands,\n allowed_actions: rootLists.allowed_actions,\n blocked_actions: rootLists.blocked_actions,\n allowed_services: rootLists.allowed_services,\n blocked_services: rootLists.blocked_services,\n extension_overrides: overrides,\n };\n}\n\nfunction isRetriableExtensionInstallCopyError(error: unknown): boolean {\n if (typeof error !== \"object\" || error === null || !(\"code\" in error)) {\n return false;\n }\n const code = (error as { code?: unknown }).code;\n return code === \"EEXIST\" || code === \"ENOTEMPTY\" || code === \"ENOENT\";\n}\n\nfunction isErrnoCode(error: unknown, code: string): boolean {\n return typeof error === \"object\" && error !== null && \"code\" in error && (error as { code?: unknown }).code === code;\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => {\n setTimeout(resolve, ms);\n });\n}\n\n/**\n * Ensure the installed extension directory carries a `package.json` with\n * `\"type\": \"module\"`. Extension entrypoints are ESM TypeScript; without a\n * nearby package.json Node resolves the module type from the HOST project's\n * package.json, so installs into `\"type\": \"commonjs\"` projects fail activation\n * with `extension_load_failed` (pm-r0m4). Extensions that ship their own\n * package.json are left untouched.\n */\nasync function ensureExtensionModuleTypeMarker(destinationDirectory: string): Promise<void> {\n const markerPath = path.join(destinationDirectory, \"package.json\");\n if (await pathExists(markerPath)) {\n return;\n }\n await fs.writeFile(markerPath, `${JSON.stringify({ type: \"module\" }, null, 2)}\\n`, \"utf8\");\n}\n\n/**\n * Implements copy extension directory for install for the public runtime surface of this module.\n */\nexport async function copyExtensionDirectoryForInstall(\n sourceDirectory: string,\n destinationDirectory: string,\n copyDirectory: typeof fs.cp = fs.cp,\n): Promise<void> {\n for (let attempt = 1; attempt <= EXTENSION_INSTALL_COPY_ATTEMPTS; attempt += 1) {\n try {\n if (await pathExists(destinationDirectory)) {\n await fs.rm(destinationDirectory, { recursive: true, force: true });\n }\n await copyExtensionDirectoryWithoutSelfNesting(sourceDirectory, destinationDirectory, copyDirectory);\n return;\n } catch (error: unknown) {\n if (!isRetriableExtensionInstallCopyError(error) || attempt === EXTENSION_INSTALL_COPY_ATTEMPTS) {\n throw error;\n }\n await sleep(EXTENSION_INSTALL_LOCK_DELAY_MS);\n }\n }\n}\n\nasync function copyExtensionDirectoryWithoutSelfNesting(\n sourceDirectory: string,\n destinationDirectory: string,\n copyDirectory: typeof fs.cp,\n): Promise<void> {\n const resolvedSource = path.resolve(sourceDirectory);\n const resolvedDestination = path.resolve(destinationDirectory);\n if (resolvedSource === resolvedDestination) {\n return;\n }\n if (!isPathWithinDirectory(resolvedSource, resolvedDestination)) {\n await copyDirectory(sourceDirectory, destinationDirectory, { recursive: true, force: true });\n return;\n }\n\n const stagingRoot = await fs.mkdtemp(path.join(os.tmpdir(), \"pm-extension-copy-\"));\n const stagedDirectory = path.join(stagingRoot, \"extension\");\n try {\n await copyDirectory(sourceDirectory, stagedDirectory, { recursive: true, force: true });\n await copyDirectory(stagedDirectory, destinationDirectory, { recursive: true, force: true });\n } finally {\n await fs.rm(stagingRoot, { recursive: true, force: true });\n }\n}\n\nasync function withExtensionInstallLock<T>(\n settingsRoot: string,\n destinationDirectoryName: string,\n run: () => Promise<T>,\n options?: {\n attempts?: number;\n delay_ms?: number;\n stale_ms?: number;\n },\n): Promise<T> {\n const lockRoot = path.join(settingsRoot, \"runtime\", \"extension-install-locks\");\n const lockPath = path.join(lockRoot, `${destinationDirectoryName}.lock`);\n await fs.mkdir(lockRoot, { recursive: true });\n const attempts = Math.max(1, Math.floor(options?.attempts ?? EXTENSION_INSTALL_LOCK_ATTEMPTS));\n const delayMs = Math.max(0, Math.floor(options?.delay_ms ?? EXTENSION_INSTALL_LOCK_DELAY_MS));\n const staleMs = Math.max(0, Math.floor(options?.stale_ms ?? EXTENSION_INSTALL_LOCK_STALE_MS));\n\n let acquired = false;\n for (let attempt = 1; attempt <= attempts; attempt += 1) {\n try {\n await fs.mkdir(lockPath);\n acquired = true;\n await fs.writeFile(\n path.join(lockPath, \"owner.json\"),\n `${JSON.stringify({ pid: process.pid, created_at: nowIso(), destination: destinationDirectoryName }, null, 2)}\\n`,\n \"utf8\",\n );\n break;\n } catch (error: unknown) {\n if (!isErrnoCode(error, \"EEXIST\")) {\n throw error;\n }\n let stat: Awaited<ReturnType<typeof fs.stat>> | null = null;\n try {\n stat = await fs.stat(lockPath);\n } catch {\n stat = null;\n }\n if (stat && Date.now() - stat.mtimeMs > staleMs) {\n await fs.rm(lockPath, { recursive: true, force: true });\n continue;\n }\n await sleep(delayMs);\n }\n }\n\n if (!acquired) {\n throw new PmCliError(\n `Timed out waiting for extension install lock for \"${destinationDirectoryName}\".`,\n EXIT_CODE.CONFLICT,\n );\n }\n\n try {\n return await run();\n } finally {\n await fs.rm(lockPath, { recursive: true, force: true }).catch(() => undefined);\n }\n}\n\nasync function resolveInstalledExtensionCandidate(\n installed: ManagedExtensionSummary[],\n extensionTarget: string,\n): Promise<ManagedExtensionSummary | undefined> {\n const lookupValues = [extensionTarget];\n const bundledAliasManifestName = await resolveBundledAliasManifestName(extensionTarget);\n if (bundledAliasManifestName) {\n lookupValues.push(bundledAliasManifestName);\n }\n const normalizedLookups = [...new Set(lookupValues.map((value) => normalizeExtensionNameForMatch(value)).filter((value) => value.length > 0))];\n for (const lookup of normalizedLookups) {\n const byName = installed.find((entry) => normalizeExtensionNameForMatch(entry.name) === lookup);\n if (byName) {\n return byName;\n }\n const byDirectory = installed.find((entry) => normalizeExtensionNameForMatch(entry.directory) === lookup);\n if (byDirectory) {\n return byDirectory;\n }\n }\n return undefined;\n}\n\nfunction isExtensionEnabled(settings: PmSettings, name: string): boolean {\n const normalizedName = name.trim();\n const enabled = new Set(normalizeStringList(settings.extensions.enabled));\n const disabled = new Set(normalizeStringList(settings.extensions.disabled));\n if (disabled.has(normalizedName)) {\n return false;\n }\n if (enabled.size === 0) {\n return true;\n }\n return enabled.has(normalizedName);\n}\n\nfunction ensureActivated(settings: PmSettings, name: string): boolean {\n const normalizedName = name.trim();\n const enabled = new Set(normalizeStringList(settings.extensions.enabled));\n const disabled = new Set(normalizeStringList(settings.extensions.disabled));\n const previousEnabled = [...enabled];\n const previousDisabled = [...disabled];\n disabled.delete(normalizedName);\n if (enabled.size > 0) {\n enabled.add(normalizedName);\n }\n settings.extensions.enabled = [...enabled].sort((left, right) => left.localeCompare(right));\n settings.extensions.disabled = [...disabled].sort((left, right) => left.localeCompare(right));\n return (\n settings.extensions.enabled.join(\"\\u0000\") !== previousEnabled.join(\"\\u0000\") ||\n settings.extensions.disabled.join(\"\\u0000\") !== previousDisabled.join(\"\\u0000\")\n );\n}\n\nfunction ensureDeactivated(settings: PmSettings, name: string): boolean {\n const normalizedName = name.trim();\n const enabled = new Set(normalizeStringList(settings.extensions.enabled));\n const disabled = new Set(normalizeStringList(settings.extensions.disabled));\n const previousEnabled = [...enabled];\n const previousDisabled = [...disabled];\n enabled.delete(normalizedName);\n disabled.add(normalizedName);\n settings.extensions.enabled = [...enabled].sort((left, right) => left.localeCompare(right));\n settings.extensions.disabled = [...disabled].sort((left, right) => left.localeCompare(right));\n return (\n settings.extensions.enabled.join(\"\\u0000\") !== previousEnabled.join(\"\\u0000\") ||\n settings.extensions.disabled.join(\"\\u0000\") !== previousDisabled.join(\"\\u0000\")\n );\n}\n\nfunction clearExtensionState(settings: PmSettings, name: string): boolean {\n const normalizedName = name.trim();\n const enabled = new Set(normalizeStringList(settings.extensions.enabled));\n const disabled = new Set(normalizeStringList(settings.extensions.disabled));\n const previousEnabled = [...enabled];\n const previousDisabled = [...disabled];\n enabled.delete(normalizedName);\n disabled.delete(normalizedName);\n settings.extensions.enabled = [...enabled].sort((left, right) => left.localeCompare(right));\n settings.extensions.disabled = [...disabled].sort((left, right) => left.localeCompare(right));\n return (\n settings.extensions.enabled.join(\"\\u0000\") !== previousEnabled.join(\"\\u0000\") ||\n settings.extensions.disabled.join(\"\\u0000\") !== previousDisabled.join(\"\\u0000\")\n );\n}\n\nfunction suggestLifecycleActionTarget(target: string): { action: ExtensionCommandAction; flag: `--${string}` } | null {\n const normalizedTarget = target.trim().toLowerCase();\n const exactMatch = LIFECYCLE_ACTION_TARGETS.find(([candidate]) => candidate === normalizedTarget);\n if (exactMatch) {\n return { action: exactMatch[1], flag: exactMatch[2] };\n }\n const maxDistance = normalizedTarget.length <= 4 ? 1 : 2;\n let nearest: { action: ExtensionCommandAction; flag: `--${string}`; distance: number } | null = null;\n for (const [candidate, action, flag] of LIFECYCLE_ACTION_TARGETS) {\n const distance = levenshteinDistanceWithinLimit(normalizedTarget, candidate, maxDistance);\n if (distance === null) {\n continue;\n }\n if (nearest === null) {\n nearest = { action, flag, distance };\n continue;\n }\n if (distance < nearest.distance) {\n nearest = { action, flag, distance };\n }\n }\n return nearest === null ? null : { action: nearest.action, flag: nearest.flag };\n}\n\nfunction buildUnknownLifecycleActionError(target: string, options: ExtensionCommandOptions): PmCliError {\n const noun = options.vocabulary === \"package\" ? \"package\" : \"extension\";\n const suggestion = suggestLifecycleActionTarget(target);\n if (!suggestion) {\n return new PmCliError(\n `One action flag is required. Use one of: ${LIFECYCLE_ACTION_FLAG_HINT}. Bare \\`pm package\\` and \\`pm extension\\` default to --explore.`,\n EXIT_CODE.USAGE,\n );\n }\n const command = `pm ${noun} ${suggestion.flag}`;\n return new PmCliError(\n `Unknown ${noun} lifecycle action \"${target}\". Did you mean \"${suggestion.flag}\"?`,\n EXIT_CODE.USAGE,\n {\n code: \"unknown_lifecycle_action\",\n required: `Use one of: ${LIFECYCLE_ACTION_FLAG_HINT}.`,\n examples: [command, `pm ${noun} --help`],\n recovery: {\n attempted_command: `pm ${noun} ${target}`,\n suggested_retry: command,\n fallback_candidates: [\n {\n source: \"lifecycle_action\",\n command,\n reason: `nearest lifecycle action for \"${target}\"`,\n },\n ],\n },\n },\n );\n}\n\n// Maps each boolean action flag to the lifecycle action it selects. `scaffold`\n// aliases `init` and `adoptAll` selects `adopt-all`; every other flag maps to its\n// like-named action. Dispatching through the table keeps `resolveAction` flat.\nconst EXTENSION_ACTION_FLAG_SELECTORS = [\n [\"install\", \"install\"],\n [\"uninstall\", \"uninstall\"],\n [\"explore\", \"explore\"],\n [\"manage\", \"manage\"],\n [\"describe\", \"describe\"],\n [\"reload\", \"reload\"],\n [\"doctor\", \"doctor\"],\n [\"catalog\", \"catalog\"],\n [\"init\", \"init\"],\n [\"scaffold\", \"init\"],\n [\"adopt\", \"adopt\"],\n [\"adoptAll\", \"adopt-all\"],\n [\"activate\", \"activate\"],\n [\"deactivate\", \"deactivate\"],\n] as const satisfies readonly (readonly [keyof ExtensionCommandOptions, ExtensionCommandAction])[];\n\n/**\n * Map a bare positional token (already trimmed and lower-cased) to the lifecycle\n * action it implies for `pm extension <token>` / `pm package <token>`: the\n * `doctor`/`reload`/`catalog`/`init`/`scaffold`/`explore`/`manage` keywords, with\n * `list` and the empty string both meaning `explore`. Returns `null` for anything\n * else so the caller can raise a did-you-mean error.\n */\nfunction resolveImplicitActionFromTarget(normalizedTarget: string): ExtensionCommandAction | null {\n if (normalizedTarget === \"doctor\") {\n return \"doctor\";\n }\n if (normalizedTarget === \"reload\") {\n return \"reload\";\n }\n if (normalizedTarget === \"catalog\") {\n return \"catalog\";\n }\n if (normalizedTarget === \"init\" || normalizedTarget === \"scaffold\") {\n return \"init\";\n }\n if (normalizedTarget === \"explore\") {\n return \"explore\";\n }\n if (normalizedTarget === \"manage\") {\n return \"manage\";\n }\n if (normalizedTarget === \"list\" || normalizedTarget === \"\") {\n return \"explore\";\n }\n return null;\n}\n\nfunction resolveAction(target: string | undefined, options: ExtensionCommandOptions): ExtensionCommandAction {\n const selected = [\n ...new Set(\n EXTENSION_ACTION_FLAG_SELECTORS.filter(([flag]) => options[flag] === true).map(([, mappedAction]) => mappedAction),\n ),\n ];\n if (selected.length === 0) {\n if (target === undefined) {\n return \"explore\";\n }\n const implicitAction = resolveImplicitActionFromTarget(target.trim().toLowerCase());\n if (implicitAction) {\n return implicitAction;\n }\n throw buildUnknownLifecycleActionError(target, options);\n }\n if (selected.length > 1) {\n throw new PmCliError(\"Extension action flags are mutually exclusive.\", EXIT_CODE.USAGE);\n }\n return selected[0];\n}\n\nfunction resolveScope(options: ExtensionCommandOptions): ExtensionScope {\n const projectLike = options.project === true || options.local === true;\n const global = options.global === true;\n if (projectLike && global) {\n throw new PmCliError('Options \"--project/--local\" and \"--global\" are mutually exclusive.', EXIT_CODE.USAGE);\n }\n return global ? \"global\" : \"project\";\n}\nfunction resolveUpdateCheckResolution(managedEntry: ManagedExtensionRecord | undefined): ExtensionUpdateCheckResolution {\n if (!managedEntry) {\n return {\n status: \"skipped_unmanaged\",\n reason: \"extension_not_managed\",\n };\n }\n if (managedEntry.source.kind !== \"github\") {\n return {\n status: \"skipped_non_github\",\n reason: `managed_source_kind_${managedEntry.source.kind}`,\n };\n }\n const updateError = typeof managedEntry.update_error === \"string\" ? managedEntry.update_error.trim() : \"\";\n if (updateError.length > 0) {\n return {\n status: \"failed\",\n reason: updateError,\n };\n }\n if (typeof managedEntry.last_update_check_at === \"string\" && managedEntry.last_update_check_at.trim().length > 0) {\n if (managedEntry.update_available === true) {\n return {\n status: \"checked\",\n reason: \"update_available\",\n };\n }\n if (managedEntry.update_available === false) {\n return {\n status: \"checked\",\n reason: \"up_to_date\",\n };\n }\n return {\n status: \"checked\",\n reason: \"checked_without_commit_baseline\",\n };\n }\n return {\n status: \"not_checked\",\n reason: \"no_update_check_recorded\",\n };\n}\n\n/**\n * Assemble a {@link ManagedExtensionSummary} from a directory's resolved identity\n * (name/version/entry/enabled state) and its managed-state record, projecting the\n * managed-source provenance and the resolved update-check status. Runtime\n * activation fields default to \"not yet probed\" (`runtime_active: null`,\n * `activation_status: \"unknown\"`) so a later runtime probe can overlay live state.\n */\nfunction buildInstalledExtensionSummary(\n identity: { name: string; directory: string; version: string; entry: string; enabled: boolean },\n scope: ExtensionScope,\n managedEntry: ManagedExtensionRecord | undefined,\n updateCheck: ExtensionUpdateCheckResolution,\n): ManagedExtensionSummary {\n return {\n name: identity.name,\n directory: identity.directory,\n version: identity.version,\n entry: identity.entry,\n scope,\n active: identity.enabled,\n enabled: identity.enabled,\n runtime_active: null,\n activation_status: \"unknown\",\n managed: Boolean(managedEntry),\n source: managedEntry?.source,\n update_available: managedEntry?.update_available,\n last_update_check_at: managedEntry?.last_update_check_at,\n last_update_remote_commit: managedEntry?.last_update_remote_commit,\n update_error: managedEntry?.update_error,\n update_check_status: updateCheck.status,\n update_check_reason: updateCheck.reason,\n };\n}\n\nasync function listInstalledExtensions(\n extensionsRoot: string,\n scope: ExtensionScope,\n settings: PmSettings,\n state: ManagedExtensionState,\n): Promise<{ extensions: ManagedExtensionSummary[]; warnings: string[] }> {\n if (!(await pathExists(extensionsRoot))) {\n return {\n extensions: [],\n warnings: [],\n };\n }\n\n const entries = await fs.readdir(extensionsRoot, { withFileTypes: true });\n const directories = entries\n .filter((entry) => entry.isDirectory())\n .map((entry) => entry.name)\n .sort((left, right) => left.localeCompare(right));\n\n const managedByName = new Map<string, ManagedExtensionRecord>();\n const managedByDirectory = new Map<string, ManagedExtensionRecord>();\n for (const managedEntry of state.entries) {\n managedByName.set(normalizeExtensionNameForMatch(managedEntry.name), managedEntry);\n managedByDirectory.set(normalizeExtensionNameForMatch(managedEntry.directory), managedEntry);\n }\n\n const warnings: string[] = [];\n const summaries: ManagedExtensionSummary[] = [];\n for (const directoryName of directories) {\n const extensionDirectory = path.join(extensionsRoot, directoryName);\n const manifestPath = path.join(extensionDirectory, \"manifest.json\");\n if (!(await pathExists(manifestPath))) {\n warnings.push(`extension_manifest_missing:${scope}:${directoryName}`);\n const managedEntry = managedByDirectory.get(normalizeExtensionNameForMatch(directoryName));\n summaries.push(\n buildInstalledExtensionSummary(\n {\n name: managedEntry?.name ?? directoryName,\n directory: directoryName,\n version: managedEntry?.manifest_version ?? \"unknown\",\n entry: managedEntry?.manifest_entry ?? \"unknown\",\n enabled: managedEntry ? isExtensionEnabled(settings, managedEntry.name) : false,\n },\n scope,\n managedEntry,\n resolveUpdateCheckResolution(managedEntry),\n ),\n );\n continue;\n }\n\n let rawManifest: unknown;\n try {\n rawManifest = JSON.parse(await fs.readFile(manifestPath, \"utf8\")) as unknown;\n } catch {\n warnings.push(`extension_manifest_invalid_json:${scope}:${directoryName}`);\n continue;\n }\n const manifest = parseExtensionManifest(rawManifest);\n if (!manifest) {\n warnings.push(`extension_manifest_invalid:${scope}:${directoryName}`);\n continue;\n }\n const managedEntry =\n managedByName.get(normalizeExtensionNameForMatch(manifest.name)) ??\n managedByDirectory.get(normalizeExtensionNameForMatch(directoryName));\n summaries.push(\n buildInstalledExtensionSummary(\n {\n name: manifest.name,\n directory: directoryName,\n version: manifest.version,\n entry: manifest.entry,\n enabled: isExtensionEnabled(settings, manifest.name),\n },\n scope,\n managedEntry,\n resolveUpdateCheckResolution(managedEntry),\n ),\n );\n }\n return {\n extensions: summaries.sort((left, right) => left.name.localeCompare(right.name)),\n warnings: warnings.sort((left, right) => left.localeCompare(right)),\n };\n}\ninterface GithubUpdateStatus {\n checked_at: string;\n available: boolean | null;\n remote_commit?: string;\n error?: string;\n}\ntype ActivationFailureEntry = Awaited<ReturnType<typeof activateExtensions>>[\"failed\"][number];\n\ninterface ActivationFailureDiagnostic {\n layer: string;\n name: string;\n entry_path: string;\n error: string;\n missing_capability?: string;\n hint?: string;\n trace?: {\n method: string;\n registration_index: number;\n expected_schema: string;\n command?: string;\n capability?: string;\n missing_capability?: string;\n hint?: string;\n };\n}\n\nfunction summarizeRuntimeCommandPathsForExtension(\n extensionName: string,\n installed: ManagedExtensionSummary[],\n): { command_paths: string[]; action_paths: string[] } {\n const normalizedName = normalizeExtensionNameForMatch(extensionName);\n const entry = installed.find((candidate) => normalizeExtensionNameForMatch(candidate.name) === normalizedName);\n return {\n command_paths: [...(entry?.command_paths ?? [])].sort((left, right) => left.localeCompare(right)),\n action_paths: [...(entry?.action_paths ?? [])].sort((left, right) => left.localeCompare(right)),\n };\n}\n\nfunction resolveCommandDiscoveryPackageName(extensionName: string, source: ManagedExtensionSource): string {\n if (typeof source.package === \"string\" && source.package.trim().length > 0) {\n return source.package.trim();\n }\n if (source.kind === \"builtin\" && typeof source.name === \"string\" && source.name.trim().length > 0) {\n return source.name.trim();\n }\n return extensionName;\n}\n\nfunction buildInstallCommandDiscovery(\n extensionName: string,\n source: ManagedExtensionSource,\n commandSummary: { command_paths: string[]; action_paths: string[] },\n): Record<string, unknown> {\n const helpCommands = commandSummary.command_paths.map((commandPath) => `pm ${commandPath} --help`);\n return {\n package_name: resolveCommandDiscoveryPackageName(extensionName, source),\n extension_name: extensionName,\n command_paths: commandSummary.command_paths,\n action_paths: commandSummary.action_paths,\n help_commands: helpCommands,\n next_steps:\n commandSummary.command_paths.length > 0\n ? helpCommands\n : [\"Run pm package doctor --project --detail deep if expected package commands are missing.\"],\n };\n}\n\nfunction summarizeActivationFailureForDiagnostics(failure: ActivationFailureEntry): ActivationFailureDiagnostic {\n const trace = failure.trace\n ? {\n method: failure.trace.method,\n registration_index: failure.trace.registration_index,\n expected_schema: failure.trace.expected_schema,\n ...(failure.trace.command ? { command: failure.trace.command } : {}),\n ...(failure.trace.capability ? { capability: failure.trace.capability } : {}),\n ...(failure.trace.missing_capability ? { missing_capability: failure.trace.missing_capability } : {}),\n ...(failure.trace.hint ? { hint: failure.trace.hint } : {}),\n }\n : undefined;\n return {\n layer: failure.layer,\n name: failure.name,\n entry_path: failure.entry_path,\n error: failure.error,\n ...(failure.trace?.missing_capability ? { missing_capability: failure.trace.missing_capability } : {}),\n ...(failure.trace?.hint ? { hint: failure.trace.hint } : {}),\n ...(trace ? { trace } : {}),\n };\n}\n\nfunction collectActivationFailureDiagnostics(failures: ActivationFailureEntry[]): ActivationFailureDiagnostic[] {\n return failures\n .map((failure) => summarizeActivationFailureForDiagnostics(failure))\n .sort((left, right) => `${left.layer}:${left.name}`.localeCompare(`${right.layer}:${right.name}`));\n}\n\nfunction findActivationFailureByName(\n extensionName: string,\n failures: ActivationFailureDiagnostic[],\n layer?: ExtensionScope,\n): ActivationFailureDiagnostic | undefined {\n const normalizedName = normalizeExtensionNameForMatch(extensionName);\n return failures.find(\n (failure) =>\n (layer === undefined || failure.layer === layer) &&\n normalizeExtensionNameForMatch(failure.name) === normalizedName,\n );\n}\n\nfunction resolveInstallRuntimeActivationStatus(\n extensionName: string,\n scope: ExtensionScope,\n runtimeInstalled: ManagedExtensionSummary[],\n installActivationFailure: ActivationFailureDiagnostic | undefined,\n): ExtensionActivationStatus {\n const runtimeInstalledExtension = runtimeInstalled.find(\n (entry) =>\n entry.scope === scope && normalizeExtensionNameForMatch(entry.name) === normalizeExtensionNameForMatch(extensionName),\n );\n return runtimeInstalledExtension?.activation_status ?? (installActivationFailure ? \"failed\" : \"unknown\");\n}\n\nasync function probeRuntimeCommandPathsForInstall(\n pmRoot: string,\n settings: PmSettings,\n refreshedInstalled: ManagedExtensionSummary[],\n global: GlobalOptions,\n): Promise<{\n installed: ManagedExtensionSummary[];\n warnings: string[];\n activation_failures: ActivationFailureDiagnostic[];\n item_type_registrations: Awaited<ReturnType<typeof activateExtensions>>[\"registrations\"][\"item_types\"];\n}> {\n const loadResult = await loadExtensions({\n pmRoot,\n settings,\n cwd: process.cwd(),\n noExtensions: global.noExtensions === true,\n reload_token: nextExtensionReloadToken(),\n cache_bust: true,\n });\n const activationResult = await activateExtensions({\n ...loadResult,\n loaded: loadResult.loaded,\n });\n return {\n installed: applyDoctorRuntimeActivationState(refreshedInstalled, loadResult, activationResult),\n warnings: [...loadResult.warnings, ...activationResult.warnings],\n activation_failures: collectActivationFailureDiagnostics(activationResult.failed),\n item_type_registrations: activationResult.registrations.item_types,\n };\n}\n\nasync function checkGithubUpdate(\n source: ManagedExtensionSource,\n gitCommandRunner: typeof runGitCommand = runGitCommand,\n): Promise<GithubUpdateStatus> {\n const checkedAt = nowIso();\n if (source.kind !== \"github\" || !source.repository) {\n return {\n checked_at: checkedAt,\n available: null,\n error: \"not_a_github_managed_source\",\n };\n }\n try {\n const ref = source.ref && source.ref.trim().length > 0 ? source.ref.trim() : \"HEAD\";\n const output = await gitCommandRunner([\"ls-remote\", source.repository, ref]);\n const firstLine = output\n .split(/\\r?\\n/)\n .map((line) => line.trim())\n .find((line) => line.length > 0);\n if (!firstLine) {\n return {\n checked_at: checkedAt,\n available: null,\n error: \"no_remote_reference_found\",\n };\n }\n const [remoteCommit] = firstLine.split(/\\s+/);\n /* c8 ignore start -- firstLine is trimmed non-empty, so split always yields a non-empty first token */\n if (typeof remoteCommit !== \"string\" || remoteCommit.length === 0) {\n return {\n checked_at: checkedAt,\n available: null,\n error: \"invalid_remote_reference\",\n };\n }\n /* c8 ignore stop */\n if (typeof source.commit === \"string\" && source.commit.trim().length > 0) {\n return {\n checked_at: checkedAt,\n remote_commit: remoteCommit,\n available: remoteCommit !== source.commit.trim(),\n };\n }\n return {\n checked_at: checkedAt,\n remote_commit: remoteCommit,\n available: null,\n error: \"missing_installed_commit\",\n };\n } catch (error: unknown) {\n return {\n checked_at: checkedAt,\n available: null,\n error: error instanceof Error ? error.message : String(error),\n };\n }\n}\n\ninterface AdoptedUnmanagedExtension {\n name: string;\n directory: string;\n version: string;\n entry: string;\n source: ManagedExtensionSource;\n}\n\ninterface AdoptUnmanagedExtensionsResult {\n state: ManagedExtensionState;\n adopted_entries: AdoptedUnmanagedExtension[];\n unmanaged_candidates: ManagedExtensionSummary[];\n already_managed_count: number;\n}\n\nasync function adoptUnmanagedExtensions(\n extensionsRoot: string,\n scope: ExtensionScope,\n installedExtensions: ManagedExtensionSummary[],\n state: ManagedExtensionState,\n): Promise<AdoptUnmanagedExtensionsResult> {\n const unmanagedCandidates = installedExtensions.filter((entry) => !entry.managed);\n const sortedCandidates = [...unmanagedCandidates].sort((left, right) => {\n const byName = left.name.localeCompare(right.name);\n if (byName !== 0) {\n return byName;\n }\n return left.directory.localeCompare(right.directory);\n });\n\n let nextState = state;\n const adoptedEntries: AdoptedUnmanagedExtension[] = [];\n for (const candidate of sortedCandidates) {\n const extensionDirectory = path.join(extensionsRoot, candidate.directory);\n const validated = await validateExtensionDirectory(extensionDirectory);\n const now = nowIso();\n const sourceRecord: ManagedExtensionSource = {\n kind: \"local\",\n input: candidate.name,\n location: extensionDirectory,\n };\n nextState = upsertManagedEntry(nextState, {\n name: validated.manifest.name,\n directory: candidate.directory,\n scope,\n manifest_version: validated.manifest.version,\n manifest_entry: validated.manifest.entry,\n capabilities: [...validated.manifest.capabilities],\n installed_at: now,\n updated_at: now,\n source: sourceRecord,\n });\n adoptedEntries.push({\n name: validated.manifest.name,\n directory: candidate.directory,\n version: validated.manifest.version,\n entry: validated.manifest.entry,\n source: sourceRecord,\n });\n }\n\n if (adoptedEntries.length > 0) {\n await writeManagedExtensionState(extensionsRoot, nextState);\n }\n\n return {\n state: nextState,\n adopted_entries: adoptedEntries,\n unmanaged_candidates: sortedCandidates,\n already_managed_count: installedExtensions.length - unmanagedCandidates.length,\n };\n}\n\nfunction resolveExtensionRootsForScope(scope: ExtensionScope, global: GlobalOptions): {\n pm_root: string;\n scope: ExtensionScope;\n settings_root: string;\n selected_root: string;\n roots: { global: string; project: string };\n} {\n const pmRoot = resolvePmRoot(process.cwd(), global.path);\n const roots = resolveExtensionRoots(pmRoot, process.cwd());\n const settingsRoot = scope === \"global\" ? resolveGlobalPmRoot(process.cwd()) : pmRoot;\n const selectedRoot = scope === \"global\" ? roots.global : roots.project;\n return {\n pm_root: pmRoot,\n scope,\n settings_root: settingsRoot,\n selected_root: selectedRoot,\n roots,\n };\n}\n\nfunction resolveGithubOption(options: ExtensionCommandOptions): string | undefined {\n if (typeof options.gh === \"string\" && typeof options.github === \"string\" && options.gh.trim() !== options.github.trim()) {\n throw new PmCliError('Options \"--gh\" and \"--github\" must match when both are provided.', EXIT_CODE.USAGE);\n }\n if (typeof options.gh === \"string\" && options.gh.trim().length > 0) {\n return options.gh.trim();\n }\n if (typeof options.github === \"string\" && options.github.trim().length > 0) {\n return options.github.trim();\n }\n return undefined;\n}\n\nfunction getLifecycleActionFlag(action: ExtensionCommandAction): `--${string}` {\n return LIFECYCLE_ACTION_FLAGS[action];\n}\n\nfunction requireTarget(target: string | undefined, action: ExtensionCommandAction, options: ExtensionCommandOptions = {}): string {\n const normalized = target?.trim();\n if (!normalized) {\n if (action === \"init\") {\n throw new PmCliError(\n 'Action \"init\" requires a scaffold target path (for example: pm package init ./my-package or pm extension init ./my-extension).',\n EXIT_CODE.USAGE,\n );\n }\n const noun = options.vocabulary === \"package\" ? \"package\" : \"extension\";\n const targetName = action === \"install\" ? \"source\" : \"name\";\n const targetLabel = `${noun} ${targetName}`;\n const actionFlag = getLifecycleActionFlag(action);\n const commandTarget = `<${targetName}>`;\n const command = `pm ${noun} ${actionFlag} ${commandTarget}`;\n throw new PmCliError(\n `Action \"${action}\" requires ${targetLabel} input.`,\n EXIT_CODE.USAGE,\n {\n code: \"missing_lifecycle_target\",\n required: `Provide a ${targetName} target for ${action}.`,\n examples: [`pm ${noun} ${action} ${commandTarget}`, command, `pm ${noun} --help`],\n recovery: {\n attempted_command: `pm ${noun} ${action}`,\n suggested_retry: command,\n fallback_candidates: [\n {\n source: \"lifecycle_action\",\n command,\n reason: `flag-form ${action} command with required ${targetName} target`,\n },\n ],\n },\n },\n );\n }\n return normalized;\n}\n\nfunction collectGlobalOutputOverrideDoctorWarnings(\n activationResult: Awaited<ReturnType<typeof activateExtensions>>,\n): string[] {\n const warnings: string[] = [];\n for (const entry of activationResult.services.overrides) {\n if (entry.service !== \"output_format\") {\n continue;\n }\n warnings.push(`extension_output_service_override_global:${entry.service}:${entry.layer}:${entry.name}`);\n }\n for (const entry of activationResult.renderers.overrides) {\n warnings.push(`extension_output_renderer_override_global:${entry.format}:${entry.layer}:${entry.name}`);\n }\n return [...new Set(warnings)].sort((left, right) => left.localeCompare(right));\n}\n\n/**\n * Doctor advisory: flag loaded extensions that contribute GLOBAL schema (custom\n * item types or fields) yet also declare narrow `activation.commands`.\n *\n * Custom item types and fields must be present for the built-in commands the\n * extension does not own and cannot enumerate (`pm create <type>`,\n * `pm list --type <type>`, `pm validate`). Declaring `activation.commands` gates\n * lazy activation to only the listed command paths, so the package never\n * activates for those built-ins and its custom type silently fails to register —\n * a quiet footgun (decision pm-halx). The `schema` scaffold deliberately omits\n * the field; this advisory catches hand-authored packages that do not. It is\n * doctor-only and non-blocking — `pm health` does not surface it — so the author\n * can either drop `activation.commands` or, when the schema is intentionally\n * command-scoped, knowingly ignore the hint.\n */\nfunction collectSchemaNarrowActivationDoctorWarnings(\n loadResult: Awaited<ReturnType<typeof loadExtensions>>,\n activationResult: Awaited<ReturnType<typeof activateExtensions>>,\n): string[] {\n const schemaContributors = new Set<string>();\n for (const entry of activationResult.registrations.item_types) {\n if (entry.types.length > 0) {\n schemaContributors.add(`${entry.layer}:${normalizeExtensionNameForMatch(entry.name)}`);\n }\n }\n for (const entry of activationResult.registrations.item_fields) {\n if (entry.fields.length > 0) {\n schemaContributors.add(`${entry.layer}:${normalizeExtensionNameForMatch(entry.name)}`);\n }\n }\n const warnings: string[] = [];\n for (const extension of loadResult.loaded) {\n if ((extension.activation?.commands ?? []).length === 0) {\n continue;\n }\n if (schemaContributors.has(`${extension.layer}:${normalizeExtensionNameForMatch(extension.name)}`)) {\n warnings.push(`extension_schema_narrow_activation:${extension.layer}:${extension.name}`);\n }\n }\n return [...new Set(warnings)].sort((left, right) => left.localeCompare(right));\n}\n\n/**\n * Shared, per-invocation context threaded to each extension action handler: the\n * resolved action/scope/roots, the alias-normalized target, the accumulating\n * warnings sink, the caller options/globals, and the `withResult` builder that\n * stamps the canonical {@link ExtensionCommandResult} envelope.\n */\ninterface ExtensionActionContext {\n action: ExtensionCommandAction;\n normalizedTarget: string | undefined;\n scope: ExtensionScope;\n resolvedRoots: ReturnType<typeof resolveExtensionRootsForScope>;\n warnings: string[];\n options: ExtensionCommandOptions;\n global: GlobalOptions;\n withResult: (details: Record<string, unknown>) => ExtensionCommandResult;\n}\n\n/**\n * Reject option/action combinations that are only meaningful for a specific\n * lifecycle action — `--trace`/`--strict-exit`/`--fail-on-warn` require `--doctor`,\n * `--watch` requires `--reload`, `--runtime-probe` requires `--manage`,\n * `--fix-managed-state` requires `--manage`/`--doctor`, and\n * `--capability`/`--declarative` require `--init`/`--scaffold`. Each guard pairs a\n * \"flag is set\" predicate with the action(s) that permit it and throws a USAGE\n * error on the first mismatch.\n */\nfunction assertExtensionActionOptionScope(action: ExtensionCommandAction, options: ExtensionCommandOptions): void {\n const guards: Array<{ triggered: boolean; allowed: boolean; message: string }> = [\n {\n triggered: options.strictExit === true || options.failOnWarn === true,\n allowed: action === \"doctor\",\n message: \"--strict-exit and --fail-on-warn are only valid with --doctor.\",\n },\n { triggered: options.trace === true, allowed: action === \"doctor\", message: \"--trace is only valid with --doctor.\" },\n { triggered: options.watch === true, allowed: action === \"reload\", message: \"--watch is only valid with --reload.\" },\n {\n triggered: options.runtimeProbe === true,\n allowed: action === \"manage\",\n message: \"--runtime-probe is only valid with --manage.\",\n },\n {\n triggered: options.fixManagedState === true,\n allowed: action === \"manage\" || action === \"doctor\",\n message: \"--fix-managed-state is only valid with --manage or --doctor.\",\n },\n {\n triggered: options.isolated === true || options.ignoreGlobal === true,\n allowed: action === \"doctor\",\n message: \"--isolated and --ignore-global are only valid with --doctor.\",\n },\n {\n triggered: options.capability !== undefined,\n allowed: action === \"init\",\n message: \"--capability is only valid with --init/--scaffold.\",\n },\n {\n triggered: options.declarative === true,\n allowed: action === \"init\",\n message: \"--declarative is only valid with --init/--scaffold.\",\n },\n ];\n for (const guard of guards) {\n if (guard.triggered && !guard.allowed) {\n throw new PmCliError(guard.message, EXIT_CODE.USAGE);\n }\n }\n}\n\n/* c8 ignore start -- alias-normalization matrix is covered by resolveAction tests; this only rewrites positional aliases */\n/**\n * Collapse a positional target that merely repeats the action keyword\n * (`pm extension doctor`, `reload`, `catalog`, or `init`/`scaffold`) to\n * `undefined` so the action handlers treat it as \"no target\" rather than an\n * extension name; otherwise the original target is returned unchanged.\n */\nfunction resolveNormalizedExtensionTarget(\n target: string | undefined,\n action: ExtensionCommandAction,\n options: ExtensionCommandOptions,\n): string | undefined {\n const normalizedInput = target?.trim().toLowerCase();\n if (action === \"doctor\" && normalizedInput === \"doctor\") {\n return undefined;\n }\n if (action === \"reload\" && normalizedInput === \"reload\") {\n return undefined;\n }\n if (action === \"catalog\" && normalizedInput === \"catalog\") {\n return undefined;\n }\n const inferredInitAlias =\n action === \"init\" &&\n options.init !== true &&\n options.scaffold !== true &&\n (normalizedInput === \"init\" || normalizedInput === \"scaffold\");\n if (inferredInitAlias) {\n return undefined;\n }\n return target;\n}\n/* c8 ignore stop */\n\n/**\n * Entry point for the `pm extension` / `pm package` command surface. Resolves the\n * requested lifecycle action and scope, rejects out-of-scope option usage,\n * normalizes positional aliases, then dispatches to the matching action handler —\n * each of which reads and writes managed-extension state, runtime-probes, and\n * returns the canonical {@link ExtensionCommandResult}. `--doctor` results are\n * flagged for native (non-JSON-wrapped) output.\n */\nexport async function runExtension(\n target: string | undefined,\n options: ExtensionCommandOptions,\n global: GlobalOptions,\n): Promise<ExtensionCommandResult> {\n const action = resolveAction(target, options);\n assertExtensionActionOptionScope(action, options);\n const normalizedTarget = resolveNormalizedExtensionTarget(target, action, options);\n const scope = resolveScope(options);\n const resolvedRoots = resolveExtensionRootsForScope(scope, global);\n const warnings: string[] = [];\n const withResult = (details: Record<string, unknown>): ExtensionCommandResult => {\n const result: ExtensionCommandResult = {\n ok: true,\n action,\n scope,\n roots: action === \"catalog\" && typeof options.fields === \"string\" && options.fields.trim().length > 0\n ? {\n project: \"project\",\n global: \"global\",\n selected: scope,\n settings_root: \"project\",\n }\n : {\n project: resolvedRoots.roots.project,\n global: resolvedRoots.roots.global,\n selected: resolvedRoots.selected_root,\n settings_root: resolvedRoots.settings_root,\n },\n warnings: [...new Set(warnings)].sort((left, right) => left.localeCompare(right)),\n details,\n };\n if (action === \"doctor\") {\n Object.defineProperty(result, NATIVE_OUTPUT_MARKER, {\n value: true,\n enumerable: false,\n configurable: false,\n });\n }\n return result;\n };\n const ctx: ExtensionActionContext = {\n action,\n normalizedTarget,\n scope,\n resolvedRoots,\n warnings,\n options,\n global,\n withResult,\n };\n return EXTENSION_ACTION_HANDLERS[action](ctx);\n}\n\nasync function runExtensionInitAction(ctx: ExtensionActionContext): Promise<ExtensionCommandResult> {\n const { action, normalizedTarget, options, withResult } = ctx;\n const githubOption = resolveGithubOption(options);\n if (githubOption !== undefined || (typeof options.ref === \"string\" && options.ref.trim().length > 0)) {\n throw new PmCliError('Action \"init\" does not accept --gh/--github/--ref options.', EXIT_CODE.USAGE);\n }\n const scaffoldTarget = requireTarget(normalizedTarget, action, options);\n const scaffold = await scaffoldExtensionProject(\n scaffoldTarget,\n options.vocabulary ?? \"extension\",\n options.capability,\n options.declarative === true,\n );\n const quotedTargetPath = JSON.stringify(scaffold.target_path);\n // Forward-slash the path for the copy-pasteable `cd` hint: Windows cmd.exe /\n // PowerShell reject the doubled backslashes JSON.stringify emits, while both\n // shells (and POSIX) accept forward slashes.\n const quotedShellTargetPath = JSON.stringify(scaffold.target_path.replace(/\\\\/g, \"/\"));\n return withResult({\n scaffolded: scaffold.created_directory || scaffold.files.some((entry) => entry.status === \"created\"),\n extension: {\n name: scaffold.extension_name,\n command: scaffold.command_name,\n },\n capability: scaffold.capability,\n style: scaffold.style,\n target_path: scaffold.target_path,\n created_directory: scaffold.created_directory,\n files: scaffold.files,\n next_steps: [\n // Extensions are authored AND loaded as TypeScript (ADR pm-2c28 / pm-m1uz):\n // the manifest entry is ./index.ts and pm strips types on load (Node\n // >=22.18), so there is no compile/build step — install dependencies, then\n // install the scaffold directly.\n ...(options.vocabulary === \"package\"\n ? [`Install dependencies: cd ${quotedShellTargetPath}, then run \"npm install\"`]\n : [\n `Install type-check dependencies: cd ${quotedShellTargetPath}, then run \"npm install -D typescript @types/node @unbrained/pm-cli\"`,\n ]),\n `Install the scaffold: ${options.vocabulary === \"package\" ? \"pm install --project\" : \"pm extension --install --project\"} ${quotedTargetPath}`,\n `Smoke-test command path: pm ${scaffold.command_name}`,\n ...(options.vocabulary === \"package\"\n ? [`Validate the package: cd ${quotedShellTargetPath}, then run \"npm run typecheck\" and \"npm test\"`]\n : [`Type-check the source (optional): cd ${quotedShellTargetPath}, then run \"npx tsc --noEmit\"`]),\n `Run diagnostics: ${options.vocabulary === \"package\" ? \"pm package doctor\" : \"pm extension --doctor\"} --project --detail summary`,\n ],\n });\n}\n\nasync function runExtensionReloadAction(ctx: ExtensionActionContext): Promise<ExtensionCommandResult> {\n const { normalizedTarget, resolvedRoots, warnings, options, global, withResult } = ctx;\n if (normalizedTarget !== undefined) {\n throw new PmCliError('Action \"reload\" does not accept a target argument.', EXIT_CODE.USAGE);\n }\n const settings = await readSettings(resolvedRoots.settings_root);\n const reloadToken = nextExtensionReloadToken();\n const reloaded = await loadExtensions({\n pmRoot: resolvedRoots.settings_root,\n settings,\n cwd: process.cwd(),\n noExtensions: global.noExtensions,\n reload_token: reloadToken,\n cache_bust: true,\n });\n warnings.push(...reloaded.warnings);\n const activation = await activateExtensions(reloaded);\n warnings.push(...activation.warnings);\n const details = {\n reload: {\n token: reloadToken,\n cache_bust: true,\n watch: options.watch === true,\n },\n loaded_count: reloaded.loaded.length,\n failed_count: reloaded.failed.length,\n activated_count: Math.max(0, reloaded.loaded.length - activation.failed.length),\n activation_failed_count: activation.failed.length,\n loaded_extensions: reloaded.loaded.map((entry) => ({\n name: entry.name,\n layer: entry.layer,\n version: entry.version,\n })),\n failed_extensions: reloaded.failed.map((entry) => ({\n name: entry.name,\n layer: entry.layer,\n error: entry.error,\n })),\n activation_failures: activation.failed.map((entry) => ({\n name: entry.name,\n layer: entry.layer,\n error: entry.error,\n })),\n };\n if (options.watch === true) {\n warnings.push(\"extension_reload_watch_hint:watch_mode_requested_non_interactive_single_pass_only\");\n }\n return withResult(details);\n}\n\nasync function runExtensionCatalogAction(ctx: ExtensionActionContext): Promise<ExtensionCommandResult> {\n const { normalizedTarget, scope, options, global, withResult } = ctx;\n if (typeof normalizedTarget === \"string\" && normalizedTarget.length > 0 && normalizedTarget !== \"catalog\") {\n throw new PmCliError('Action \"catalog\" does not accept a package target.', EXIT_CODE.USAGE);\n }\n return withResult(await buildBundledPackageCatalog(scope, global, options));\n}\n\n/* c8 ignore start -- source-shape branch combinations are exercised in install-source focused tests */\n/**\n * Build the persisted managed-source record for an install from its resolved\n * shape: a bundled builtin alias, a local path, an npm package, or (the default) a\n * GitHub repository, capturing the location/commit/subpath provenance the manage\n * and upgrade flows later read back.\n */\nfunction buildInstallManagedSource(\n bundledAliasName: string | null,\n bundledPackageName: string | null,\n installSource: ReturnType<typeof parseExtensionInstallSource>,\n resolvedSource: Awaited<ReturnType<typeof resolveInstallSource>>,\n): ManagedExtensionSource {\n if (bundledAliasName) {\n return {\n kind: \"builtin\",\n input: bundledAliasName,\n location: bundledAliasName,\n name: bundledAliasName,\n ...(bundledPackageName === null ? {} : { package: bundledPackageName }),\n };\n }\n if (installSource.kind === \"local\") {\n return {\n kind: \"local\",\n input: installSource.input,\n location: installSource.absolute_path,\n };\n }\n if (installSource.kind === \"npm\") {\n return {\n kind: \"npm\",\n input: installSource.input,\n location: resolvedSource.resolved_subpath ?? \".\",\n package: resolvedSource.npm_package,\n version: resolvedSource.npm_version,\n };\n }\n return {\n kind: \"github\",\n input: installSource.input,\n location: resolvedSource.resolved_subpath ?? installSource.subpath ?? \".\",\n repository: installSource.repository,\n owner: installSource.owner,\n repo: installSource.repo,\n ref: installSource.ref,\n subpath: resolvedSource.resolved_subpath ?? installSource.subpath,\n commit: resolvedSource.commit,\n };\n}\n/* c8 ignore stop */\n\n/**\n * Run the install body while holding the per-destination install lock: read\n * settings and managed state, copy the validated extension into the scope root\n * unless it is already installed in place, upsert the managed entry and activation\n * state, scaffold any contributed item-type folders, runtime-probe the freshly\n * installed command paths, and return the install result envelope.\n */\nasync function performExtensionInstallUnderLock(\n ctx: ExtensionActionContext,\n input: {\n validated: Awaited<ReturnType<typeof validateExtensionDirectory>>;\n destinationDirectoryName: string;\n bundledAliasName: string | null;\n bundledPackageName: string | null;\n installSource: ReturnType<typeof parseExtensionInstallSource>;\n resolvedSource: Awaited<ReturnType<typeof resolveInstallSource>>;\n },\n): Promise<ExtensionCommandResult> {\n const { scope, resolvedRoots, warnings, global, withResult } = ctx;\n const { validated, destinationDirectoryName, bundledAliasName, bundledPackageName, installSource, resolvedSource } = input;\n const settings = await readSettings(resolvedRoots.settings_root);\n const managedStateRead = await readManagedExtensionState(resolvedRoots.selected_root);\n warnings.push(...managedStateRead.warnings);\n const destinationDirectory = path.join(resolvedRoots.selected_root, destinationDirectoryName);\n const destinationExists = await pathExists(destinationDirectory);\n const installInPlace = await areDirectoriesEquivalent(validated.directory, destinationDirectory);\n\n await fs.mkdir(resolvedRoots.selected_root, { recursive: true });\n if (!installInPlace) {\n await copyExtensionDirectoryForInstall(validated.directory, destinationDirectory);\n }\n await ensureExtensionModuleTypeMarker(destinationDirectory);\n\n const sourceRecord = buildInstallManagedSource(bundledAliasName, bundledPackageName, installSource, resolvedSource);\n\n const now = nowIso();\n const existingManagedEntry = managedStateRead.state.entries.find(\n (entry) => normalizeExtensionNameForMatch(entry.name) === normalizeExtensionNameForMatch(validated.manifest.name),\n );\n const sourceUnchanged =\n existingManagedEntry !== undefined &&\n existingManagedEntry.manifest_version === validated.manifest.version &&\n managedExtensionSourcesEquivalent(existingManagedEntry.source, sourceRecord);\n const managedState = upsertManagedEntry(managedStateRead.state, {\n name: validated.manifest.name,\n directory: destinationDirectoryName,\n scope,\n manifest_version: validated.manifest.version,\n manifest_entry: validated.manifest.entry,\n capabilities: [...validated.manifest.capabilities],\n installed_at: existingManagedEntry?.installed_at ?? now,\n updated_at: sourceUnchanged ? existingManagedEntry.updated_at : now,\n source: sourceRecord,\n });\n await writeManagedExtensionState(resolvedRoots.selected_root, managedState);\n\n const activationChanged = ensureActivated(settings, validated.manifest.name);\n if (activationChanged) {\n await writeSettings(resolvedRoots.settings_root, settings, \"settings:write\");\n }\n const refreshedInstalled = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, managedState);\n warnings.push(...refreshedInstalled.warnings);\n const runtimeProbe = await probeRuntimeCommandPathsForInstall(\n resolvedRoots.pm_root,\n settings,\n refreshedInstalled.extensions,\n global,\n );\n warnings.push(...runtimeProbe.warnings);\n // Scaffold the folders for any item types the installed package contributes\n // so the tracker is immediately healthy — matching `pm schema add-type` and\n // `pm profile apply`, the other paths that register a type. Without this a\n // freshly-installed schema package leaves a `missing_directory` health\n // warning until the first item of its type is created. Scoped to project\n // installs, where `pm_root` is unambiguously the tracker the type folders\n // belong to; a global install is not tied to one tracker, so its folders are\n // created lazily on first use in each project.\n const installedItemTypeDefinitions = runtimeProbe.item_type_registrations\n .filter((entry) => normalizeExtensionNameForMatch(entry.name) === normalizeExtensionNameForMatch(validated.manifest.name))\n .flatMap((entry) => entry.types.map((type) => ({ name: type.name, folder: type.folder })));\n if (scope === \"project\" && installedItemTypeDefinitions.length > 0) {\n await ensureTypeFolderScaffold(resolvedRoots.pm_root, installedItemTypeDefinitions, warnings, \"install:type-folder\");\n }\n const commandSummary = summarizeRuntimeCommandPathsForExtension(validated.manifest.name, runtimeProbe.installed);\n const installActivationFailure = findActivationFailureByName(\n validated.manifest.name,\n runtimeProbe.activation_failures,\n scope,\n );\n const runtimeActivationStatus = resolveInstallRuntimeActivationStatus(\n validated.manifest.name,\n scope,\n runtimeProbe.installed,\n installActivationFailure,\n );\n\n return withResult({\n extension: {\n name: validated.manifest.name,\n version: validated.manifest.version,\n entry: validated.manifest.entry,\n capabilities: validated.manifest.capabilities,\n directory: destinationDirectoryName,\n },\n source: sourceRecord,\n destination_path: destinationDirectory,\n overwritten: destinationExists && !installInPlace,\n installed_in_place: installInPlace,\n activated: true,\n settings_changed: activationChanged,\n runtime_activation_status: runtimeActivationStatus,\n command_paths: commandSummary.command_paths,\n action_paths: commandSummary.action_paths,\n command_discovery: buildInstallCommandDiscovery(validated.manifest.name, sourceRecord, commandSummary),\n activation_diagnostics: {\n failed_count: runtimeProbe.activation_failures.length,\n failed: runtimeProbe.activation_failures,\n installed_extension_failed: installActivationFailure ?? null,\n },\n });\n}\n\nasync function runExtensionInstallAction(ctx: ExtensionActionContext): Promise<ExtensionCommandResult> {\n const { action, normalizedTarget, resolvedRoots, warnings, options, global, withResult } = ctx;\n const githubOption = resolveGithubOption(options);\n const explicitSourceInput = githubOption ?? requireTarget(normalizedTarget, action, options);\n if (typeof githubOption !== \"string\" && isBundledPackageInstallAllTarget(explicitSourceInput)) {\n if (typeof options.ref === \"string\" && options.ref.trim().length > 0) {\n throw new PmCliError('Action \"install all\" does not accept --ref.', EXIT_CODE.USAGE);\n }\n const aliases = await listBundledPackageAliases();\n const packages: Array<{ alias: string; result: ExtensionCommandResult }> = [];\n for (const alias of aliases) {\n packages.push({\n alias,\n result: await runExtension(alias, { ...options, install: true }, global),\n });\n }\n for (const entry of packages) {\n warnings.push(...entry.result.warnings);\n }\n return withResult({\n installed_all: true,\n installed_count: packages.length,\n packages: packages.map((entry) => ({\n alias: entry.alias,\n ok: entry.result.ok,\n extension: (entry.result.details as { extension?: unknown }).extension,\n source: (entry.result.details as { source?: unknown }).source,\n destination_path: (entry.result.details as { destination_path?: unknown }).destination_path,\n activated: (entry.result.details as { activated?: unknown }).activated,\n settings_changed: (entry.result.details as { settings_changed?: unknown }).settings_changed,\n command_paths: (entry.result.details as { command_paths?: unknown }).command_paths,\n action_paths: (entry.result.details as { action_paths?: unknown }).action_paths,\n command_discovery: (entry.result.details as { command_discovery?: unknown }).command_discovery,\n warnings: entry.result.warnings,\n })),\n });\n }\n /* c8 ignore start -- github/local alias-source split is exercised in install-action integration tests */\n const bundledAliasSource =\n typeof githubOption === \"string\" ? null : await resolveBundledExtensionAliasSource(explicitSourceInput);\n /* c8 ignore stop */\n const bundledAliasName = bundledAliasSource === null ? null : explicitSourceInput.trim().toLowerCase();\n const bundledPackageName = bundledAliasName === null ? null : await resolveBundledPackageNpmName(bundledAliasName);\n const sourceInput = bundledAliasSource ?? explicitSourceInput;\n /* c8 ignore start -- install-source branch combinations are covered in install-sources focused tests */\n const installSource = parseExtensionInstallSource(sourceInput, {\n forceGithub: typeof githubOption === \"string\",\n ref: options.ref,\n });\n /* c8 ignore stop */\n const resolvedSource = await resolveInstallSource(installSource);\n try {\n const validated = await validateExtensionDirectory(resolvedSource.directory);\n const destinationDirectoryName = normalizeManagedDirectoryName(validated.manifest.name);\n return await withExtensionInstallLock(resolvedRoots.settings_root, destinationDirectoryName, () =>\n performExtensionInstallUnderLock(ctx, {\n validated,\n destinationDirectoryName,\n bundledAliasName,\n bundledPackageName,\n installSource,\n resolvedSource,\n }),\n );\n } finally {\n /* c8 ignore start -- cleanup hooks are only present for transient install sources */\n if (resolvedSource.cleanup) {\n await resolvedSource.cleanup();\n }\n /* c8 ignore stop */\n }\n}\n\nasync function runExtensionAdoptAllAction(ctx: ExtensionActionContext): Promise<ExtensionCommandResult> {\n const { normalizedTarget, scope, resolvedRoots, warnings, options, withResult } = ctx;\n if (normalizedTarget !== undefined) {\n throw new PmCliError('Action \"adopt-all\" does not accept a target argument.', EXIT_CODE.USAGE);\n }\n const githubOption = resolveGithubOption(options);\n if (githubOption !== undefined || (typeof options.ref === \"string\" && options.ref.trim().length > 0)) {\n throw new PmCliError('Action \"adopt-all\" does not accept --gh/--github/--ref options.', EXIT_CODE.USAGE);\n }\n const settings = await readSettings(resolvedRoots.settings_root);\n const managedStateRead = await readManagedExtensionState(resolvedRoots.selected_root);\n warnings.push(...managedStateRead.warnings);\n const installed = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, managedStateRead.state);\n warnings.push(...installed.warnings);\n const adoption = await adoptUnmanagedExtensions(\n resolvedRoots.selected_root,\n scope,\n installed.extensions,\n managedStateRead.state,\n );\n const refreshedInstalled = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, adoption.state);\n warnings.push(...refreshedInstalled.warnings);\n const triage = buildExtensionTriageSummary(scope, warnings, refreshedInstalled.extensions, options);\n warnings.push(...triage.warnings);\n /* c8 ignore start -- refresh-entry optional metadata is display-only and exercised indirectly */\n const adoptedDetails = adoption.adopted_entries.map((entry) => {\n const refreshedEntry =\n refreshedInstalled.extensions.find(\n (candidate) =>\n normalizeExtensionNameForMatch(candidate.name) === normalizeExtensionNameForMatch(entry.name) &&\n normalizeExtensionNameForMatch(candidate.directory) === normalizeExtensionNameForMatch(entry.directory),\n ) ??\n /* c8 ignore next 3 -- fallback only matters if a manifest renames between adopt and refresh */\n refreshedInstalled.extensions.find(\n (candidate) => normalizeExtensionNameForMatch(candidate.directory) === normalizeExtensionNameForMatch(entry.directory),\n );\n return {\n ...entry,\n update_check_status: refreshedEntry?.update_check_status ?? null,\n update_check_reason: refreshedEntry?.update_check_reason ?? null,\n };\n });\n /* c8 ignore stop */\n /* c8 ignore start -- adopt-all summary booleans are deterministic mirrors of adoptedDetails length */\n return withResult({\n adopted_all: adoptedDetails.length > 0,\n adopted_count: adoptedDetails.length,\n already_managed_count: adoption.already_managed_count,\n extensions: adoptedDetails,\n triage,\n warning_codes: triage.warning_codes,\n update_health_partial: triage.update_health_partial,\n update_health_coverage: triage.update_health_coverage,\n });\n /* c8 ignore stop */\n}\n\nasync function runExtensionAdoptAction(ctx: ExtensionActionContext): Promise<ExtensionCommandResult> {\n const { action, normalizedTarget, scope, resolvedRoots, warnings, options, withResult } = ctx;\n const extensionTarget = requireTarget(normalizedTarget, action, options);\n const githubOption = resolveGithubOption(options);\n const settings = await readSettings(resolvedRoots.settings_root);\n const managedStateRead = await readManagedExtensionState(resolvedRoots.selected_root);\n warnings.push(...managedStateRead.warnings);\n const installed = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, managedStateRead.state);\n warnings.push(...installed.warnings);\n const candidate = await resolveInstalledExtensionCandidate(installed.extensions, extensionTarget);\n if (!candidate) {\n throw new PmCliError(`Installed extension \"${extensionTarget}\" was not found in ${scope} scope.`, EXIT_CODE.NOT_FOUND);\n }\n if (candidate.managed) {\n return withResult({\n adopted: false,\n already_managed: true,\n extension: {\n name: candidate.name,\n directory: candidate.directory,\n },\n });\n }\n\n const extensionDirectory = path.join(resolvedRoots.selected_root, candidate.directory);\n const validated = await validateExtensionDirectory(extensionDirectory);\n const now = nowIso();\n const sourceRecord: ManagedExtensionSource =\n githubOption === undefined\n ? {\n kind: \"local\",\n input: extensionTarget,\n location: extensionDirectory,\n }\n : (() => {\n const parsed = parseExtensionInstallSource(githubOption, {\n forceGithub: true,\n ref: options.ref,\n });\n /* c8 ignore start -- forceGithub guarantees a github-kind install source */\n if (parsed.kind !== \"github\") {\n throw new PmCliError(`Invalid GitHub shorthand \"${githubOption}\".`, EXIT_CODE.USAGE);\n }\n /* c8 ignore stop */\n /* c8 ignore start -- github subpath defaults are validated in install-source parser tests */\n return {\n kind: \"github\",\n input: parsed.input,\n location: parsed.subpath ?? \".\",\n repository: parsed.repository,\n owner: parsed.owner,\n repo: parsed.repo,\n ref: parsed.ref,\n subpath: parsed.subpath,\n };\n /* c8 ignore stop */\n })();\n const managedState = upsertManagedEntry(managedStateRead.state, {\n name: validated.manifest.name,\n directory: candidate.directory,\n scope,\n manifest_version: validated.manifest.version,\n manifest_entry: validated.manifest.entry,\n capabilities: [...validated.manifest.capabilities],\n installed_at: now,\n updated_at: now,\n source: sourceRecord,\n });\n await writeManagedExtensionState(resolvedRoots.selected_root, managedState);\n const refreshedInstalled = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, managedState);\n warnings.push(...refreshedInstalled.warnings);\n /* c8 ignore start -- fallback only matters if a manifest renames between adopt and refresh */\n const refreshedEntry =\n refreshedInstalled.extensions.find(\n (entry) => normalizeExtensionNameForMatch(entry.name) === normalizeExtensionNameForMatch(validated.manifest.name),\n ) ??\n refreshedInstalled.extensions.find(\n (entry) => normalizeExtensionNameForMatch(entry.directory) === normalizeExtensionNameForMatch(candidate.directory),\n );\n /* c8 ignore stop */\n\n /* c8 ignore start -- adopt result mirrors refreshedEntry optionals for display only */\n return withResult({\n adopted: true,\n extension: {\n name: validated.manifest.name,\n directory: candidate.directory,\n version: validated.manifest.version,\n entry: validated.manifest.entry,\n },\n source: sourceRecord,\n update_check_status: refreshedEntry?.update_check_status ?? null,\n update_check_reason: refreshedEntry?.update_check_reason ?? null,\n });\n /* c8 ignore stop */\n}\n\nasync function runExtensionUninstallAction(ctx: ExtensionActionContext): Promise<ExtensionCommandResult> {\n const { action, normalizedTarget, scope, resolvedRoots, warnings, options, withResult } = ctx;\n const extensionTarget = requireTarget(normalizedTarget, action, options);\n const settings = await readSettings(resolvedRoots.settings_root);\n const managedStateRead = await readManagedExtensionState(resolvedRoots.selected_root);\n warnings.push(...managedStateRead.warnings);\n const installed = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, managedStateRead.state);\n warnings.push(...installed.warnings);\n const candidate = await resolveInstalledExtensionCandidate(installed.extensions, extensionTarget);\n if (!candidate) {\n throw new PmCliError(`Installed extension \"${extensionTarget}\" was not found in ${scope} scope.`, EXIT_CODE.NOT_FOUND);\n }\n const destinationDirectory = path.join(resolvedRoots.selected_root, candidate.directory);\n await fs.rm(destinationDirectory, { recursive: true, force: true });\n\n const updatedState: ManagedExtensionState = {\n ...managedStateRead.state,\n updated_at: nowIso(),\n /* c8 ignore start -- uninstall filter keeps both name+directory guards for legacy managed-state migrations */\n entries: managedStateRead.state.entries.filter(\n (entry) =>\n normalizeExtensionNameForMatch(entry.name) !== normalizeExtensionNameForMatch(candidate.name) &&\n normalizeExtensionNameForMatch(entry.directory) !== normalizeExtensionNameForMatch(candidate.directory),\n ),\n /* c8 ignore stop */\n };\n await writeManagedExtensionState(resolvedRoots.selected_root, updatedState);\n\n const stateChanged = clearExtensionState(settings, candidate.name);\n if (stateChanged) {\n await writeSettings(resolvedRoots.settings_root, settings, \"settings:write\");\n }\n\n return withResult({\n removed: true,\n extension: {\n name: candidate.name,\n directory: candidate.directory,\n },\n destination_path: destinationDirectory,\n settings_changed: stateChanged,\n });\n}\n\nasync function runExtensionActivateDeactivateAction(ctx: ExtensionActionContext): Promise<ExtensionCommandResult> {\n const { action, normalizedTarget, scope, resolvedRoots, warnings, options, withResult } = ctx;\n const extensionTarget = requireTarget(normalizedTarget, action, options);\n const settings = await readSettings(resolvedRoots.settings_root);\n const managedStateRead = await readManagedExtensionState(resolvedRoots.selected_root);\n warnings.push(...managedStateRead.warnings);\n const installed = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, managedStateRead.state);\n warnings.push(...installed.warnings);\n const candidate = await resolveInstalledExtensionCandidate(installed.extensions, extensionTarget);\n if (!candidate) {\n throw new PmCliError(`Installed extension \"${extensionTarget}\" was not found in ${scope} scope.`, EXIT_CODE.NOT_FOUND);\n }\n\n const settingsChanged = action === \"activate\" ? ensureActivated(settings, candidate.name) : ensureDeactivated(settings, candidate.name);\n if (settingsChanged) {\n await writeSettings(resolvedRoots.settings_root, settings, \"settings:write\");\n }\n\n return withResult({\n extension: {\n name: candidate.name,\n directory: candidate.directory,\n },\n active: action === \"activate\",\n settings_changed: settingsChanged,\n settings: {\n enabled: [...settings.extensions.enabled],\n disabled: [...settings.extensions.disabled],\n },\n });\n}\n\n/**\n * Assemble the doctor remediation hints: the triage remediations, vocabulary-aware\n * advice to inspect load failures and activation failures, and a note when a\n * managed-state fix adopted entries. Blank entries are trimmed and the list is\n * de-duplicated.\n */\nfunction buildDoctorRemediation(\n baseRemediation: string[],\n loadFailureCount: number,\n activationFailureCount: number,\n vocabulary: ExtensionCommandOptions[\"vocabulary\"],\n managedStateFix: AdoptUnmanagedExtensionsResult | null,\n isolationHint: string | null,\n): string[] {\n return [\n ...new Set(\n [\n ...baseRemediation,\n ...(isolationHint === null ? [] : [isolationHint]),\n /* c8 ignore start -- vocabulary-specific remediation branches are copy-only variants */\n ...(loadFailureCount > 0\n ? [\n vocabulary === \"package\"\n ? \"Run pm package explore --project and pm package explore --global to inspect load failures.\"\n : \"Run pm extension --explore --project and pm extension --explore --global to inspect load failures.\",\n ]\n : []),\n ...(activationFailureCount > 0\n ? [\n vocabulary === \"package\"\n ? \"Review activation failures in pm package doctor --detail deep output.\"\n : \"Review activation failures in pm extension --doctor --detail deep output.\",\n ]\n : []),\n /* c8 ignore stop */\n ...(managedStateFix && managedStateFix.adopted_entries.length > 0\n ? [`Managed-state fix adopted ${managedStateFix.adopted_entries.length} extension(s).`]\n : []),\n ].map((entry) => entry.trim()).filter((entry) => entry.length > 0),\n ),\n ];\n}\n\nfunction hasGlobalLayerDiagnostics(loadResult: Awaited<ReturnType<typeof loadExtensions>>): boolean {\n return (\n loadResult.loaded.some((entry) => entry.layer === \"global\") ||\n loadResult.failed.some((entry) => entry.layer === \"global\") ||\n loadResult.warnings.some((warning) => warning.includes(\":global:\"))\n );\n}\n\nfunction buildDoctorIsolationHint(\n scope: ExtensionScope,\n isolated: boolean,\n vocabulary: ExtensionCommandOptions[\"vocabulary\"],\n loadResult: Awaited<ReturnType<typeof loadExtensions>>,\n): string | null {\n if (scope !== \"project\" || isolated || !hasGlobalLayerDiagnostics(loadResult)) {\n return null;\n }\n const noun = vocabulary === \"package\" ? \"package\" : \"extension\";\n return (\n `Global ${noun} registrations are included in project diagnostics. ` +\n `For hermetic ${noun} smoke tests, rerun pm ${noun} doctor --project --isolated --detail deep --trace, ` +\n \"or set PM_GLOBAL_PATH to a temporary directory for the whole test process.\"\n );\n}\n\ninterface DoctorIsolationMetadata {\n isolated: boolean;\n global_extensions_included: boolean;\n global_diagnostics_present: boolean;\n rerun_command: string | null;\n pm_global_path_recipe: string | null;\n}\n\n/**\n * Build the doctor isolation block shared by summary and details output so the\n * over-the-wire payload stays identical for extension and package vocabulary.\n */\nfunction buildDoctorIsolationMetadata(\n scope: ExtensionScope,\n isolated: boolean,\n vocabulary: ExtensionCommandOptions[\"vocabulary\"],\n loadResult: Awaited<ReturnType<typeof loadExtensions>>,\n): DoctorIsolationMetadata {\n const noun = vocabulary === \"package\" ? \"package\" : \"extension\";\n if (scope !== \"project\") {\n return {\n isolated,\n global_extensions_included: false,\n global_diagnostics_present: hasGlobalLayerDiagnostics(loadResult),\n rerun_command: null,\n pm_global_path_recipe: null,\n };\n }\n const isolatedCommand = `pm ${noun} doctor --project --isolated --detail deep --trace`;\n return {\n isolated,\n global_extensions_included: !isolated,\n global_diagnostics_present: hasGlobalLayerDiagnostics(loadResult),\n rerun_command: isolated ? null : isolatedCommand,\n pm_global_path_recipe: `PM_GLOBAL_PATH=$(mktemp -d) pm ${noun} doctor --project --detail deep --trace`,\n };\n}\n\nasync function runExtensionDoctorAction(ctx: ExtensionActionContext): Promise<ExtensionCommandResult> {\n const { normalizedTarget, scope, resolvedRoots, warnings, options, global, withResult } = ctx;\n if (normalizedTarget && normalizedTarget.trim().length > 0) {\n throw new PmCliError('Action \"doctor\" does not accept a target argument.', EXIT_CODE.USAGE);\n }\n const isolated = options.isolated === true || options.ignoreGlobal === true;\n if (isolated && scope === \"global\") {\n throw new PmCliError(\"--isolated and --ignore-global are only valid with project-scope doctor diagnostics.\", EXIT_CODE.USAGE);\n }\n const detailMode = parseDoctorDetailMode(options.detail);\n const includeTrace = options.trace === true;\n if (includeTrace && detailMode !== \"deep\") {\n throw new PmCliError(\"--trace requires --detail deep with --doctor.\", EXIT_CODE.USAGE);\n }\n const settings = await readSettings(resolvedRoots.settings_root);\n const managedStateRead = await readManagedExtensionState(resolvedRoots.selected_root);\n warnings.push(...managedStateRead.warnings);\n const installed = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, managedStateRead.state);\n warnings.push(...installed.warnings);\n let managedState = managedStateRead.state;\n const managedStateFix =\n options.fixManagedState === true\n ? await adoptUnmanagedExtensions(\n resolvedRoots.selected_root,\n scope,\n installed.extensions,\n managedStateRead.state,\n )\n : null;\n if (managedStateFix) {\n managedState = managedStateFix.state;\n }\n const refreshedInstalled = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, managedState);\n warnings.push(...refreshedInstalled.warnings);\n\n const loadResult = await loadExtensions({\n pmRoot: resolvedRoots.pm_root,\n settings,\n cwd: process.cwd(),\n noExtensions: global.noExtensions === true,\n ignoreGlobalExtensions: isolated,\n });\n const activationResult = await activateExtensions({\n ...loadResult,\n loaded: loadResult.loaded,\n });\n warnings.push(...loadResult.warnings);\n warnings.push(...classifyDoctorLoadFailureWarnings(loadResult.failed));\n warnings.push(...activationResult.warnings);\n warnings.push(...classifyDoctorActivationFailureWarnings(activationResult.failed));\n warnings.push(...classifyUnusedCapabilityWarnings(loadResult, activationResult));\n warnings.push(...collectGlobalOutputOverrideDoctorWarnings(activationResult));\n warnings.push(...collectSchemaNarrowActivationDoctorWarnings(loadResult, activationResult));\n const runtimeInstalledExtensions = applyDoctorRuntimeActivationState(refreshedInstalled.extensions, loadResult, activationResult);\n const doctorConsistency = buildDoctorConsistencySummary(\n scope,\n runtimeInstalledExtensions,\n loadResult.loaded.map((entry) => ({ layer: entry.layer, name: entry.name })),\n loadResult.failed.map((entry) => ({ name: entry.name })),\n loadResult.disabled_by_flag,\n );\n warnings.push(...doctorConsistency.warnings);\n const updateCheckWarnings = runtimeInstalledExtensions\n .filter((entry) => entry.update_check_status === \"failed\")\n .map((entry) => `extension_update_check_failed:${entry.name}`);\n warnings.push(...updateCheckWarnings);\n\n const triage = buildExtensionTriageSummary(scope, warnings, runtimeInstalledExtensions, options);\n warnings.push(...triage.warnings);\n const normalizedWarnings = [...triage.warnings];\n const policySummary = {\n mode: loadResult.policy.mode,\n trust_mode: loadResult.policy.trust_mode,\n require_provenance: loadResult.policy.require_provenance,\n default_sandbox_profile: loadResult.policy.default_sandbox_profile,\n // Honest trust model (ADR pm-6ef3): keep this caveat to one concise line.\n sandbox_enforcement:\n \"advisory: sandbox_profile/permissions are declaration-based load gates, not runtime isolation (ADR pm-6ef3)\",\n trusted_extensions_count: loadResult.policy.trusted_extensions.length,\n allowed_extensions_count: loadResult.policy.allowed_extensions.length,\n blocked_extensions_count: loadResult.policy.blocked_extensions.length,\n allowed_capabilities_count: loadResult.policy.allowed_capabilities.length,\n blocked_capabilities_count: loadResult.policy.blocked_capabilities.length,\n allowed_surfaces_count: loadResult.policy.allowed_surfaces.length,\n blocked_surfaces_count: loadResult.policy.blocked_surfaces.length,\n allowed_commands_count: loadResult.policy.allowed_commands.length,\n blocked_commands_count: loadResult.policy.blocked_commands.length,\n allowed_actions_count: loadResult.policy.allowed_actions.length,\n blocked_actions_count: loadResult.policy.blocked_actions.length,\n allowed_services_count: loadResult.policy.allowed_services.length,\n blocked_services_count: loadResult.policy.blocked_services.length,\n extension_override_count: loadResult.policy.extension_overrides.length,\n };\n const capabilityGuidance = collectUnknownCapabilityGuidance(normalizedWarnings);\n const capabilityContract = buildCapabilityContractMetadata();\n const warningCodes = triage.warning_codes;\n const isolationHint = buildDoctorIsolationHint(scope, isolated, options.vocabulary, loadResult);\n const remediation = buildDoctorRemediation(\n triage.remediation,\n loadResult.failed.length,\n activationResult.failed.length,\n options.vocabulary,\n managedStateFix,\n isolationHint,\n );\n const isolation = buildDoctorIsolationMetadata(scope, isolated, options.vocabulary, loadResult);\n\n const summary = {\n status: triage.status,\n scope,\n warning_count: triage.warning_count,\n warning_codes: warningCodes,\n total_extensions: runtimeInstalledExtensions.length,\n managed_total: runtimeInstalledExtensions.filter((entry) => entry.managed).length,\n enabled_total: runtimeInstalledExtensions.filter((entry) => entry.enabled).length,\n active_total: runtimeInstalledExtensions.filter((entry) => entry.active).length,\n unmanaged_loaded_extension_count: triage.unmanaged_loaded_extension_count,\n unmanaged_action_required_extension_count: triage.unmanaged_action_required_extension_count,\n unmanaged_expected_extension_count: triage.unmanaged_expected_extension_count,\n runtime_active_total: runtimeInstalledExtensions.filter((entry) => entry.runtime_active === true).length,\n activation_status_totals: {\n ok: runtimeInstalledExtensions.filter((entry) => entry.activation_status === \"ok\").length,\n failed: runtimeInstalledExtensions.filter((entry) => entry.activation_status === \"failed\").length,\n not_loaded: runtimeInstalledExtensions.filter((entry) => entry.activation_status === \"not_loaded\").length,\n unknown: runtimeInstalledExtensions.filter((entry) => entry.activation_status === \"unknown\").length,\n },\n unknown_capability_count: capabilityGuidance.length,\n capability_contract_version: capabilityContract.version,\n update_available_total: runtimeInstalledExtensions.filter((entry) => entry.update_available === true).length,\n update_health_coverage: triage.update_health_coverage,\n update_health_partial: triage.update_health_partial,\n update_check_failed_total: runtimeInstalledExtensions.filter((entry) => entry.update_check_status === \"failed\").length,\n load_failure_count: loadResult.failed.length,\n activation_failure_count: activationResult.failed.length,\n blocking_failure_count: loadResult.failed.length + activationResult.failed.length,\n has_blocking_failures: loadResult.failed.length + activationResult.failed.length > 0,\n consistency_warning_count: doctorConsistency.warnings.length,\n trace_enabled: includeTrace,\n isolation,\n policy: policySummary,\n remediation,\n };\n\n const managedStateFixSummary = managedStateFix\n ? {\n requested: true,\n applied: managedStateFix.adopted_entries.length > 0,\n adopted_count: managedStateFix.adopted_entries.length,\n already_managed_count: managedStateFix.already_managed_count,\n adopted_extensions: managedStateFix.adopted_entries.map((entry) => entry.name),\n }\n : {\n requested: false,\n applied: false,\n adopted_count: 0,\n already_managed_count: refreshedInstalled.extensions.filter((entry) => entry.managed).length,\n adopted_extensions: [] as string[],\n };\n\n const details: Record<string, unknown> = {\n mode: detailMode,\n summary,\n triage,\n trace_enabled: includeTrace,\n capability_contract: capabilityContract,\n capability_guidance: capabilityGuidance,\n managed_state_fix: managedStateFixSummary,\n isolation,\n policy: loadResult.policy,\n };\n if (detailMode === \"deep\") {\n const activationFailedDetails = includeTrace\n ? activationResult.failed\n : activationResult.failed.map((entry) => {\n const { trace: _trace, ...rest } = entry;\n return rest;\n });\n details.deep = {\n warnings: normalizedWarnings,\n warning_codes: warningCodes,\n capability_contract: capabilityContract,\n capability_guidance: capabilityGuidance,\n trace_enabled: includeTrace,\n managed_state: {\n path: managedStateRead.path,\n count: managedState.entries.length,\n entries: managedState.entries,\n },\n installed_extensions: runtimeInstalledExtensions,\n load: {\n roots: loadResult.roots,\n policy: loadResult.policy,\n warnings: loadResult.warnings,\n failed: loadResult.failed,\n loaded: loadResult.loaded.map((entry) => ({\n layer: entry.layer,\n directory: entry.directory,\n name: entry.name,\n version: entry.version,\n entry: entry.entry,\n priority: entry.priority,\n })),\n },\n activation: {\n failed: activationFailedDetails,\n warnings: activationResult.warnings,\n hook_counts: activationResult.hook_counts,\n registration_counts: activationResult.registration_counts,\n parser_override_count: activationResult.parser_override_count,\n preflight_override_count: activationResult.preflight_override_count,\n service_override_count: activationResult.service_override_count,\n renderer_override_count: activationResult.renderer_override_count,\n },\n consistency: doctorConsistency.summary,\n };\n if (includeTrace) {\n (details.deep as Record<string, unknown>).trace = {\n activation_failures: activationResult.failed\n .filter((entry) => entry.trace !== undefined)\n .map((entry) => ({\n layer: entry.layer,\n name: entry.name,\n entry_path: entry.entry_path,\n error: entry.error,\n method: entry.trace?.method,\n command: entry.trace?.command,\n capability: entry.trace?.capability,\n missing_capability: entry.trace?.missing_capability,\n registration_index: entry.trace?.registration_index,\n expected_schema: entry.trace?.expected_schema,\n hint: entry.trace?.hint,\n received: entry.trace?.received,\n })),\n };\n }\n }\n return withResult(details);\n}\n\nasync function runExtensionDescribeAction(ctx: ExtensionActionContext): Promise<ExtensionCommandResult> {\n const { normalizedTarget, scope, resolvedRoots, warnings, options, global, withResult } = ctx;\n const settings = await readSettings(resolvedRoots.settings_root);\n const loadResult = await loadExtensions({\n pmRoot: resolvedRoots.pm_root,\n settings,\n cwd: process.cwd(),\n noExtensions: global.noExtensions === true,\n });\n const activationResult = await activateExtensions(loadResult);\n warnings.push(...loadResult.warnings);\n warnings.push(...activationResult.warnings);\n const describeResult = buildExtensionDescribeResult(normalizedTarget, loadResult, activationResult);\n if (normalizedTarget !== undefined && describeResult.extensions.length === 0) {\n const noun = options.vocabulary === \"package\" ? \"package\" : \"extension\";\n const loadedNames = [\n ...new Set(\n loadResult.loaded.map((entry) =>\n options.vocabulary === \"package\" && typeof entry.source_package === \"string\" && entry.source_package.trim().length > 0\n ? entry.source_package.trim()\n : entry.name,\n ),\n ),\n ].sort((left, right) => left.localeCompare(right));\n const loadedHint = loadedNames.length > 0 ? ` Loaded ${noun} names: ${loadedNames.join(\", \")}.` : \"\";\n throw new PmCliError(\n `No loaded ${noun} named \"${normalizedTarget}\" was found in ${scope} scope.${loadedHint} Run pm ${noun} explore to list discovered ${noun}s.`,\n EXIT_CODE.NOT_FOUND,\n );\n }\n return withResult({\n target: describeResult.target,\n total: describeResult.total,\n extensions: describeResult.extensions,\n union: describeResult.union,\n });\n}\n\n/* c8 ignore start -- explore/manage action split is validated by dedicated command-action tests */\nasync function runExtensionExploreManageAction(ctx: ExtensionActionContext): Promise<ExtensionCommandResult> {\n const { action, scope, resolvedRoots, warnings, options, global, withResult } = ctx;\n const settings = await readSettings(resolvedRoots.settings_root);\n const configuredPolicy = buildExtensionPolicyDetails(settings.extensions.policy);\n const managedStateRead = await readManagedExtensionState(resolvedRoots.selected_root);\n warnings.push(...managedStateRead.warnings);\n const installed = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, managedStateRead.state);\n warnings.push(...installed.warnings);\n\n let managedState = managedStateRead.state;\n const managedStateFix =\n action === \"manage\" && options.fixManagedState === true\n ? await adoptUnmanagedExtensions(\n resolvedRoots.selected_root,\n scope,\n installed.extensions,\n managedStateRead.state,\n )\n : null;\n if (managedStateFix) {\n managedState = managedStateFix.state;\n }\n if (action === \"manage\") {\n const updates = await Promise.all(\n managedState.entries.map(async (entry) => {\n if (entry.source.kind !== \"github\") {\n return entry;\n }\n const updateStatus = await checkGithubUpdate(entry.source);\n return {\n ...entry,\n last_update_check_at: updateStatus.checked_at,\n last_update_remote_commit: updateStatus.remote_commit,\n update_available: updateStatus.available,\n update_error: updateStatus.error,\n };\n }),\n );\n managedState = {\n ...managedState,\n updated_at: nowIso(),\n entries: sortManagedEntries(updates),\n };\n await writeManagedExtensionState(resolvedRoots.selected_root, managedState);\n }\n\n const refreshedInstalled = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, managedState);\n warnings.push(...refreshedInstalled.warnings);\n if (action === \"manage\") {\n const updateWarnings = refreshedInstalled.extensions\n .filter((entry) => entry.update_check_status === \"failed\")\n .map((entry) => `extension_update_check_failed:${entry.name}`);\n warnings.push(...updateWarnings);\n }\n let runtimeProbeSummary: Record<string, unknown> | undefined;\n let runtimeInstalledExtensions = refreshedInstalled.extensions;\n let runtimeActivationFailures: ActivationFailureDiagnostic[] | undefined;\n if (action === \"explore\" || options.runtimeProbe === true) {\n const loadResult = await loadExtensions({\n pmRoot: resolvedRoots.pm_root,\n settings,\n cwd: process.cwd(),\n noExtensions: global.noExtensions === true,\n });\n const activationResult = await activateExtensions({\n ...loadResult,\n loaded: loadResult.loaded,\n });\n warnings.push(...loadResult.warnings);\n warnings.push(...activationResult.warnings);\n runtimeInstalledExtensions = applyDoctorRuntimeActivationState(refreshedInstalled.extensions, loadResult, activationResult);\n runtimeActivationFailures = collectActivationFailureDiagnostics(activationResult.failed);\n runtimeProbeSummary = {\n requested: true,\n executed: true,\n reason: action === \"explore\" ? \"explore_defaults_to_runtime_probe\" : \"runtime_probe_requested\",\n load_failure_count: loadResult.failed.length,\n activation_failure_count: activationResult.failed.length,\n warning_count: [...new Set([...loadResult.warnings, ...activationResult.warnings])].length,\n policy: loadResult.policy,\n };\n } else if (action === \"manage\") {\n runtimeProbeSummary = {\n requested: false,\n executed: false,\n };\n }\n\n const triage = buildExtensionTriageSummary(scope, warnings, runtimeInstalledExtensions, options);\n warnings.push(...triage.warnings);\n const details: Record<string, unknown> = {\n total: runtimeInstalledExtensions.length,\n managed_total: runtimeInstalledExtensions.filter((entry) => entry.managed).length,\n enabled_total: runtimeInstalledExtensions.filter((entry) => entry.enabled).length,\n active_total: runtimeInstalledExtensions.filter((entry) => entry.active).length,\n extensions: runtimeInstalledExtensions,\n triage,\n policy: configuredPolicy,\n };\n if (runtimeActivationFailures !== undefined) {\n details.activation_diagnostics = {\n failed_count: runtimeActivationFailures.length,\n failed: runtimeActivationFailures,\n };\n }\n if (action === \"explore\") {\n details.runtime_probe = runtimeProbeSummary;\n }\n if (action === \"manage\") {\n details.runtime_probe = runtimeProbeSummary;\n details.managed_state_fix =\n managedStateFix !== null\n ? {\n requested: true,\n applied: managedStateFix.adopted_entries.length > 0,\n adopted_count: managedStateFix.adopted_entries.length,\n adopted_extensions: managedStateFix.adopted_entries.map((entry) => entry.name),\n already_managed_count: managedStateFix.already_managed_count,\n }\n : {\n requested: false,\n applied: false,\n adopted_count: 0,\n adopted_extensions: [],\n already_managed_count: runtimeInstalledExtensions.filter((entry) => entry.managed).length,\n };\n }\n return withResult(details);\n}\n/* c8 ignore stop */\n\n// Dispatch table from lifecycle action to its handler. `explore`/`manage` and\n// `activate`/`deactivate` share a handler that branches on `ctx.action`; the\n// closed ExtensionCommandAction union guarantees every action has an entry, so\n// runExtension needs no unsupported-action fallthrough.\nconst EXTENSION_ACTION_HANDLERS: Record<\n ExtensionCommandAction,\n (ctx: ExtensionActionContext) => Promise<ExtensionCommandResult>\n> = {\n init: runExtensionInitAction,\n install: runExtensionInstallAction,\n uninstall: runExtensionUninstallAction,\n explore: runExtensionExploreManageAction,\n manage: runExtensionExploreManageAction,\n describe: runExtensionDescribeAction,\n reload: runExtensionReloadAction,\n doctor: runExtensionDoctorAction,\n catalog: runExtensionCatalogAction,\n adopt: runExtensionAdoptAction,\n \"adopt-all\": runExtensionAdoptAllAction,\n activate: runExtensionActivateDeactivateAction,\n deactivate: runExtensionActivateDeactivateAction,\n};\n\nexport const _testOnly = {\n adoptUnmanagedExtensions,\n buildExtensionPolicyDetails,\n buildInstallCommandDiscovery,\n checkGithubUpdate,\n clearExtensionState,\n collectActivationFailureDiagnostics,\n findActivationFailureByName,\n resolveInstallRuntimeActivationStatus,\n collectGlobalOutputOverrideDoctorWarnings,\n collectSchemaNarrowActivationDoctorWarnings,\n copyExtensionDirectoryWithoutSelfNesting,\n isErrnoCode,\n isRetriableExtensionInstallCopyError,\n listInstalledExtensions,\n requireTarget,\n resolveAction,\n resolveCommandDiscoveryPackageName,\n resolveGithubOption,\n resolveInstalledExtensionCandidate,\n resolveScope,\n resolveUpdateCheckResolution,\n withExtensionInstallLock,\n};\n"],"names":[],"mappings":"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","debugId":"0489ce7c-9aeb-586f-a972-70cb1bfa6fc8"}
|