@openpalm/ui 0.11.0-rc.5 → 0.11.0-rc.7
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/build/.openpalm-ui-version +1 -1
- package/build/client/_app/immutable/chunks/{Dw2d8QWE.js → D24QgzW3.js} +1 -1
- package/build/client/_app/immutable/chunks/D24QgzW3.js.br +0 -0
- package/build/client/_app/immutable/chunks/D24QgzW3.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{TTISnh12.js → DqNbg4NA.js} +2 -2
- package/build/client/_app/immutable/chunks/DqNbg4NA.js.br +0 -0
- package/build/client/_app/immutable/chunks/DqNbg4NA.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{wMd8NDhX.js → s2DJ2Hzc.js} +1 -1
- package/build/client/_app/immutable/chunks/s2DJ2Hzc.js.br +0 -0
- package/build/client/_app/immutable/chunks/s2DJ2Hzc.js.gz +0 -0
- package/build/client/_app/immutable/entry/{app.DqfTKA88.js → app.Cn3CnYEK.js} +2 -2
- package/build/client/_app/immutable/entry/app.Cn3CnYEK.js.br +0 -0
- package/build/client/_app/immutable/entry/app.Cn3CnYEK.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.BKJ_XPtH.js +1 -0
- package/build/client/_app/immutable/entry/start.BKJ_XPtH.js.br +0 -0
- package/build/client/_app/immutable/entry/start.BKJ_XPtH.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{1.BxzZToo0.js → 1.CFZtmr9Z.js} +1 -1
- package/build/client/_app/immutable/nodes/1.CFZtmr9Z.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.CFZtmr9Z.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{4.ENrY-4Dj.js → 4.qMg9S6NF.js} +1 -1
- package/build/client/_app/immutable/nodes/4.qMg9S6NF.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.qMg9S6NF.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{5.NziE0-zQ.js → 5.DOV0FWgV.js} +1 -1
- package/build/client/_app/immutable/nodes/5.DOV0FWgV.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.DOV0FWgV.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{6.CR4zG2G-.js → 6.OjOdE489.js} +1 -1
- package/build/client/_app/immutable/nodes/6.OjOdE489.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.OjOdE489.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{7.CG-43_5h.js → 7.BmeNI8zH.js} +1 -1
- package/build/client/_app/immutable/nodes/7.BmeNI8zH.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.BmeNI8zH.js.gz +0 -0
- package/build/client/_app/version.json +1 -1
- package/build/client/_app/version.json.br +1 -1
- package/build/client/_app/version.json.gz +0 -0
- package/build/server/chunks/1-BT8Fv1iZ.js +9 -0
- package/build/server/chunks/{1-Diul24Nb.js.map → 1-BT8Fv1iZ.js.map} +1 -1
- package/build/server/chunks/{4-Bp2iYgY0.js → 4-Dogph41a.js} +3 -3
- package/build/server/chunks/{4-Bp2iYgY0.js.map → 4-Dogph41a.js.map} +1 -1
- package/build/server/chunks/{5-CKi45Vks.js → 5-B2ffACT5.js} +3 -3
- package/build/server/chunks/{5-CKi45Vks.js.map → 5-B2ffACT5.js.map} +1 -1
- package/build/server/chunks/{6-DledoXU7.js → 6-SeG59S0A.js} +3 -3
- package/build/server/chunks/{6-DledoXU7.js.map → 6-SeG59S0A.js.map} +1 -1
- package/build/server/chunks/{7-XMlfGgLT.js → 7-C49AAXUP.js} +3 -3
- package/build/server/chunks/{7-XMlfGgLT.js.map → 7-C49AAXUP.js.map} +1 -1
- package/build/server/chunks/{AuthGate-Xv2gDFre.js → AuthGate-Bd07jybQ.js} +3 -3
- package/build/server/chunks/{AuthGate-Xv2gDFre.js.map → AuthGate-Bd07jybQ.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-BT7Zl-3n.js → _page.svelte-BankODKC.js} +4 -4
- package/build/server/chunks/{_page.svelte-BT7Zl-3n.js.map → _page.svelte-BankODKC.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-DmqizcB7.js → _page.svelte-BguwEDhs.js} +4 -4
- package/build/server/chunks/{_page.svelte-DmqizcB7.js.map → _page.svelte-BguwEDhs.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-CVnKLUNO.js → _page.svelte-CnbQWtht.js} +4 -4
- package/build/server/chunks/{_page.svelte-CVnKLUNO.js.map → _page.svelte-CnbQWtht.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-B7Viea5q.js → _page.svelte-omfzeOSO.js} +4 -4
- package/build/server/chunks/{_page.svelte-B7Viea5q.js.map → _page.svelte-omfzeOSO.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DI99MlC1.js → _server.ts-5CjguYY3.js} +4 -4
- package/build/server/chunks/{_server.ts-DI99MlC1.js.map → _server.ts-5CjguYY3.js.map} +1 -1
- package/build/server/chunks/{_server.ts-COqD5JG7.js → _server.ts-B3tjtq2m.js} +4 -4
- package/build/server/chunks/{_server.ts-COqD5JG7.js.map → _server.ts-B3tjtq2m.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DELvBvgq.js → _server.ts-B4N5gO26.js} +4 -4
- package/build/server/chunks/{_server.ts-DELvBvgq.js.map → _server.ts-B4N5gO26.js.map} +1 -1
- package/build/server/chunks/{_server.ts-E7P8eWIh.js → _server.ts-B6FENZO7.js} +4 -4
- package/build/server/chunks/{_server.ts-E7P8eWIh.js.map → _server.ts-B6FENZO7.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BOdvyQBN.js → _server.ts-B8JtVHLy.js} +4 -4
- package/build/server/chunks/{_server.ts-BOdvyQBN.js.map → _server.ts-B8JtVHLy.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DX_N9mUT.js → _server.ts-BR9OrjcE.js} +4 -4
- package/build/server/chunks/{_server.ts-DX_N9mUT.js.map → _server.ts-BR9OrjcE.js.map} +1 -1
- package/build/server/chunks/{_server.ts-c_BnBfnu.js → _server.ts-BYdXdnje.js} +4 -4
- package/build/server/chunks/{_server.ts-c_BnBfnu.js.map → _server.ts-BYdXdnje.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CagG44-u.js → _server.ts-BaxRyhZ8.js} +4 -4
- package/build/server/chunks/{_server.ts-CagG44-u.js.map → _server.ts-BaxRyhZ8.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BFwwheTh.js → _server.ts-BclZ3UFT.js} +4 -4
- package/build/server/chunks/{_server.ts-BFwwheTh.js.map → _server.ts-BclZ3UFT.js.map} +1 -1
- package/build/server/chunks/{_server.ts-E7LmtLTE.js → _server.ts-Bd_I8GjG.js} +4 -4
- package/build/server/chunks/{_server.ts-E7LmtLTE.js.map → _server.ts-Bd_I8GjG.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CVC2DcTU.js → _server.ts-Bdry_CdG.js} +4 -4
- package/build/server/chunks/{_server.ts-CVC2DcTU.js.map → _server.ts-Bdry_CdG.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CIzQaEuK.js → _server.ts-Bg8OpPuA.js} +5 -5
- package/build/server/chunks/{_server.ts-CIzQaEuK.js.map → _server.ts-Bg8OpPuA.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CScr1cg9.js → _server.ts-BjrO7pvn.js} +5 -5
- package/build/server/chunks/{_server.ts-CScr1cg9.js.map → _server.ts-BjrO7pvn.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DjOkvcG2.js → _server.ts-BkoJOqrr.js} +4 -4
- package/build/server/chunks/{_server.ts-DjOkvcG2.js.map → _server.ts-BkoJOqrr.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CDNwixfw.js → _server.ts-Bl0YOh50.js} +4 -4
- package/build/server/chunks/{_server.ts-CDNwixfw.js.map → _server.ts-Bl0YOh50.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DdedRZbb.js → _server.ts-BmZlEy27.js} +4 -4
- package/build/server/chunks/{_server.ts-DdedRZbb.js.map → _server.ts-BmZlEy27.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DaOy0voa.js → _server.ts-Bq2S1OMq.js} +4 -4
- package/build/server/chunks/{_server.ts-DaOy0voa.js.map → _server.ts-Bq2S1OMq.js.map} +1 -1
- package/build/server/chunks/{_server.ts-R7dMpaPA.js → _server.ts-BwHojI4i.js} +2 -2
- package/build/server/chunks/{_server.ts-R7dMpaPA.js.map → _server.ts-BwHojI4i.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Dwklttlo.js → _server.ts-C-lN2ZUO.js} +2 -2
- package/build/server/chunks/{_server.ts-Dwklttlo.js.map → _server.ts-C-lN2ZUO.js.map} +1 -1
- package/build/server/chunks/{_server.ts-5jmEAAP1.js → _server.ts-C1DcK_rP.js} +6 -6
- package/build/server/chunks/{_server.ts-5jmEAAP1.js.map → _server.ts-C1DcK_rP.js.map} +1 -1
- package/build/server/chunks/{_server.ts-d07hBh36.js → _server.ts-C1y3X6iK.js} +5 -5
- package/build/server/chunks/{_server.ts-d07hBh36.js.map → _server.ts-C1y3X6iK.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DvhzwHVM.js → _server.ts-C5s-OXCm.js} +4 -4
- package/build/server/chunks/{_server.ts-DvhzwHVM.js.map → _server.ts-C5s-OXCm.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BYq3CZj9.js → _server.ts-CAKTZL2t.js} +5 -5
- package/build/server/chunks/{_server.ts-BYq3CZj9.js.map → _server.ts-CAKTZL2t.js.map} +1 -1
- package/build/server/chunks/{_server.ts-C15jWMsG.js → _server.ts-CDtOOD3Q.js} +4 -4
- package/build/server/chunks/{_server.ts-C15jWMsG.js.map → _server.ts-CDtOOD3Q.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BghxZYzS.js → _server.ts-CG409cWi.js} +4 -4
- package/build/server/chunks/{_server.ts-BghxZYzS.js.map → _server.ts-CG409cWi.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DrTbJSk6.js → _server.ts-CJL8da0o.js} +4 -4
- package/build/server/chunks/{_server.ts-DrTbJSk6.js.map → _server.ts-CJL8da0o.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BqMZY5o3.js → _server.ts-CLBKpKeH.js} +6 -6
- package/build/server/chunks/{_server.ts-BqMZY5o3.js.map → _server.ts-CLBKpKeH.js.map} +1 -1
- package/build/server/chunks/{_server.ts-kZe_UKI-.js → _server.ts-CLiYOnOv.js} +4 -4
- package/build/server/chunks/{_server.ts-kZe_UKI-.js.map → _server.ts-CLiYOnOv.js.map} +1 -1
- package/build/server/chunks/{_server.ts-A2NXmSNp.js → _server.ts-CQqURrHY.js} +4 -4
- package/build/server/chunks/{_server.ts-A2NXmSNp.js.map → _server.ts-CQqURrHY.js.map} +1 -1
- package/build/server/chunks/{_server.ts-D91b7Kz1.js → _server.ts-CSgPjCYv.js} +4 -4
- package/build/server/chunks/{_server.ts-D91b7Kz1.js.map → _server.ts-CSgPjCYv.js.map} +1 -1
- package/build/server/chunks/{_server.ts-B-RVeWYz.js → _server.ts-C_fNO73y.js} +4 -4
- package/build/server/chunks/{_server.ts-B-RVeWYz.js.map → _server.ts-C_fNO73y.js.map} +1 -1
- package/build/server/chunks/{_server.ts-C4qYb4T-.js → _server.ts-CcTt5aAs.js} +2 -2
- package/build/server/chunks/{_server.ts-C4qYb4T-.js.map → _server.ts-CcTt5aAs.js.map} +1 -1
- package/build/server/chunks/{_server.ts-B-8GqpGN.js → _server.ts-CfLbEufw.js} +4 -4
- package/build/server/chunks/{_server.ts-B-8GqpGN.js.map → _server.ts-CfLbEufw.js.map} +1 -1
- package/build/server/chunks/{_server.ts-XTQz9VpV.js → _server.ts-CqHMhINi.js} +4 -4
- package/build/server/chunks/{_server.ts-XTQz9VpV.js.map → _server.ts-CqHMhINi.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CQKqWKMo.js → _server.ts-CrU9r7-F.js} +4 -4
- package/build/server/chunks/{_server.ts-CQKqWKMo.js.map → _server.ts-CrU9r7-F.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DVwVnmDQ.js → _server.ts-CtZuKotA.js} +4 -4
- package/build/server/chunks/{_server.ts-DVwVnmDQ.js.map → _server.ts-CtZuKotA.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DlLgzS0S.js → _server.ts-D-sjM5kn.js} +4 -4
- package/build/server/chunks/{_server.ts-DlLgzS0S.js.map → _server.ts-D-sjM5kn.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DG8W3r0Z.js → _server.ts-D2wlMMJl.js} +4 -4
- package/build/server/chunks/{_server.ts-DG8W3r0Z.js.map → _server.ts-D2wlMMJl.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DW3vY8LS.js → _server.ts-D7L27_xI.js} +2 -2
- package/build/server/chunks/{_server.ts-DW3vY8LS.js.map → _server.ts-D7L27_xI.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BPsFKk3L.js → _server.ts-DMKIHwKi.js} +4 -4
- package/build/server/chunks/{_server.ts-BPsFKk3L.js.map → _server.ts-DMKIHwKi.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DJze1H0z.js → _server.ts-DTyZan5L.js} +4 -4
- package/build/server/chunks/{_server.ts-DJze1H0z.js.map → _server.ts-DTyZan5L.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Ci-P5JS7.js → _server.ts-DVekHgMN.js} +5 -5
- package/build/server/chunks/{_server.ts-Ci-P5JS7.js.map → _server.ts-DVekHgMN.js.map} +1 -1
- package/build/server/chunks/{_server.ts-dDjGFOuI.js → _server.ts-DWLkr6Qg.js} +4 -4
- package/build/server/chunks/{_server.ts-dDjGFOuI.js.map → _server.ts-DWLkr6Qg.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DGwGBkiZ.js → _server.ts-DWN6TJv0.js} +2 -2
- package/build/server/chunks/{_server.ts-DGwGBkiZ.js.map → _server.ts-DWN6TJv0.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Cck-oHeA.js → _server.ts-D_dO8hvJ.js} +4 -4
- package/build/server/chunks/{_server.ts-Cck-oHeA.js.map → _server.ts-D_dO8hvJ.js.map} +1 -1
- package/build/server/chunks/{_server.ts-_Wwme_Ks.js → _server.ts-Da9y6lio.js} +6 -6
- package/build/server/chunks/{_server.ts-_Wwme_Ks.js.map → _server.ts-Da9y6lio.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Cx2ceFsu.js → _server.ts-DbO3cg55.js} +4 -4
- package/build/server/chunks/{_server.ts-Cx2ceFsu.js.map → _server.ts-DbO3cg55.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Dv2CZYWD.js → _server.ts-DclRsTpW.js} +4 -4
- package/build/server/chunks/{_server.ts-Dv2CZYWD.js.map → _server.ts-DclRsTpW.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BvkqEkzw.js → _server.ts-DdlF1vjy.js} +4 -4
- package/build/server/chunks/{_server.ts-BvkqEkzw.js.map → _server.ts-DdlF1vjy.js.map} +1 -1
- package/build/server/chunks/{_server.ts-D5-BhYyI.js → _server.ts-De7IOs2z.js} +4 -4
- package/build/server/chunks/{_server.ts-D5-BhYyI.js.map → _server.ts-De7IOs2z.js.map} +1 -1
- package/build/server/chunks/{_server.ts-71Azeoau.js → _server.ts-DmyOp1yq.js} +4 -4
- package/build/server/chunks/{_server.ts-71Azeoau.js.map → _server.ts-DmyOp1yq.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Br304l_4.js → _server.ts-DnKTcT9x.js} +3 -3
- package/build/server/chunks/{_server.ts-Br304l_4.js.map → _server.ts-DnKTcT9x.js.map} +1 -1
- package/build/server/chunks/{_server.ts-D8CBGHuZ.js → _server.ts-Dq82kHyx.js} +4 -4
- package/build/server/chunks/{_server.ts-D8CBGHuZ.js.map → _server.ts-Dq82kHyx.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BCP1MsVG.js → _server.ts-DqVJ1NqI.js} +4 -4
- package/build/server/chunks/{_server.ts-BCP1MsVG.js.map → _server.ts-DqVJ1NqI.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BEBJtcQc.js → _server.ts-DzWtvjem.js} +4 -4
- package/build/server/chunks/{_server.ts-BEBJtcQc.js.map → _server.ts-DzWtvjem.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CLywmUSs.js → _server.ts-EZS5Qan4.js} +4 -4
- package/build/server/chunks/{_server.ts-CLywmUSs.js.map → _server.ts-EZS5Qan4.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CZ_7ZCFx.js → _server.ts-I0iKpsyr.js} +5 -5
- package/build/server/chunks/{_server.ts-CZ_7ZCFx.js.map → _server.ts-I0iKpsyr.js.map} +1 -1
- package/build/server/chunks/{_server.ts-D5CLEB-8.js → _server.ts-P4pmd9NX.js} +4 -4
- package/build/server/chunks/{_server.ts-D5CLEB-8.js.map → _server.ts-P4pmd9NX.js.map} +1 -1
- package/build/server/chunks/{_server.ts-EFPUyapr.js → _server.ts-UF_kxNaU.js} +4 -4
- package/build/server/chunks/{_server.ts-EFPUyapr.js.map → _server.ts-UF_kxNaU.js.map} +1 -1
- package/build/server/chunks/{_server.ts-u8irmAWb.js → _server.ts-b3mVtmkb.js} +4 -4
- package/build/server/chunks/{_server.ts-u8irmAWb.js.map → _server.ts-b3mVtmkb.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CHFuY3NH.js → _server.ts-dhkEt2p6.js} +4 -4
- package/build/server/chunks/{_server.ts-CHFuY3NH.js.map → _server.ts-dhkEt2p6.js.map} +1 -1
- package/build/server/chunks/{_server.ts-C1Gsb5XV.js → _server.ts-eK_9jY-9.js} +4 -4
- package/build/server/chunks/{_server.ts-C1Gsb5XV.js.map → _server.ts-eK_9jY-9.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Cz_3WeM6.js → _server.ts-fsEmx9mw.js} +4 -4
- package/build/server/chunks/{_server.ts-Cz_3WeM6.js.map → _server.ts-fsEmx9mw.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DzPMQAAh.js → _server.ts-l4CK3c4j.js} +4 -4
- package/build/server/chunks/{_server.ts-DzPMQAAh.js.map → _server.ts-l4CK3c4j.js.map} +1 -1
- package/build/server/chunks/{_server.ts-ClPUIRt1.js → _server.ts-otJRaSSq.js} +5 -5
- package/build/server/chunks/{_server.ts-ClPUIRt1.js.map → _server.ts-otJRaSSq.js.map} +1 -1
- package/build/server/chunks/{_server.ts-YAghx0dq.js → _server.ts-rXhjnBtw.js} +4 -4
- package/build/server/chunks/{_server.ts-YAghx0dq.js.map → _server.ts-rXhjnBtw.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BgBrVPoo.js → _server.ts-wZ88P3nX.js} +6 -6
- package/build/server/chunks/{_server.ts-BgBrVPoo.js.map → _server.ts-wZ88P3nX.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DW9C0-e0.js → _server.ts-xO4nhxDx.js} +4 -4
- package/build/server/chunks/{_server.ts-DW9C0-e0.js.map → _server.ts-xO4nhxDx.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DumKJLr_.js → _server.ts-yimewsjO.js} +4 -4
- package/build/server/chunks/{_server.ts-DumKJLr_.js.map → _server.ts-yimewsjO.js.map} +1 -1
- package/build/server/chunks/{addon-helpers-DM77guzq.js → addon-helpers-BpnH-GEc.js} +2 -2
- package/build/server/chunks/{addon-helpers-DM77guzq.js.map → addon-helpers-BpnH-GEc.js.map} +1 -1
- package/build/server/chunks/{config-BxHEufAo.js → config-0LFudKuE.js} +2 -2
- package/build/server/chunks/{config-BxHEufAo.js.map → config-0LFudKuE.js.map} +1 -1
- package/build/server/chunks/{docker-BFje1OYT.js → docker-B23w4kr6.js} +2 -2
- package/build/server/chunks/{docker-BFje1OYT.js.map → docker-B23w4kr6.js.map} +1 -1
- package/build/server/chunks/{endpoints-Cl-EGY98.js → endpoints-Drq_J-2Z.js} +2 -2
- package/build/server/chunks/{endpoints-Cl-EGY98.js.map → endpoints-Drq_J-2Z.js.map} +1 -1
- package/build/server/chunks/{error.svelte-BGYxxQ9s.js → error.svelte-CB2UX4hU.js} +3 -3
- package/build/server/chunks/{error.svelte-BGYxxQ9s.js.map → error.svelte-CB2UX4hU.js.map} +1 -1
- package/build/server/chunks/{helpers-CXOtgOuA.js → helpers-CX6xRBmt.js} +3 -3
- package/build/server/chunks/{helpers-CXOtgOuA.js.map → helpers-CX6xRBmt.js.map} +1 -1
- package/build/server/chunks/{hooks.server-DAguS3lI.js → hooks.server-E9Cpxup2.js} +4 -4
- package/build/server/chunks/{hooks.server-DAguS3lI.js.map → hooks.server-E9Cpxup2.js.map} +1 -1
- package/build/server/chunks/{http-Cl3z_Fum.js → http-VqOG8hyj.js} +2 -2
- package/build/server/chunks/{http-Cl3z_Fum.js.map → http-VqOG8hyj.js.map} +1 -1
- package/build/server/chunks/{internal-CgdcWAsz.js → internal-mQUKV7SV.js} +3 -3
- package/build/server/chunks/{internal-CgdcWAsz.js.map → internal-mQUKV7SV.js.map} +1 -1
- package/build/server/chunks/{setup-deploy-tjcmiBUv.js → setup-deploy-B4oSSFYi.js} +2 -2
- package/build/server/chunks/{setup-deploy-tjcmiBUv.js.map → setup-deploy-B4oSSFYi.js.map} +1 -1
- package/build/server/chunks/{src-BWQ05CjI.js → src-BkvQ5Uuf.js} +24 -22
- package/build/server/chunks/src-BkvQ5Uuf.js.map +1 -0
- package/build/server/chunks/{state-DfN1wFlX.js → state-BVlApqbN.js} +2 -2
- package/build/server/chunks/{state-DfN1wFlX.js.map → state-BVlApqbN.js.map} +1 -1
- package/build/server/index.js +1 -1
- package/build/server/index.js.map +1 -1
- package/build/server/manifest.js +75 -75
- package/build/server/manifest.js.map +1 -1
- package/package.json +2 -2
- package/build/client/_app/immutable/chunks/Dw2d8QWE.js.br +0 -0
- package/build/client/_app/immutable/chunks/Dw2d8QWE.js.gz +0 -0
- package/build/client/_app/immutable/chunks/TTISnh12.js.br +0 -0
- package/build/client/_app/immutable/chunks/TTISnh12.js.gz +0 -0
- package/build/client/_app/immutable/chunks/wMd8NDhX.js.br +0 -0
- package/build/client/_app/immutable/chunks/wMd8NDhX.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.DqfTKA88.js.br +0 -0
- package/build/client/_app/immutable/entry/app.DqfTKA88.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.Ct20hSrY.js +0 -1
- package/build/client/_app/immutable/entry/start.Ct20hSrY.js.br +0 -0
- package/build/client/_app/immutable/entry/start.Ct20hSrY.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.BxzZToo0.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.BxzZToo0.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.ENrY-4Dj.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.ENrY-4Dj.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.NziE0-zQ.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.NziE0-zQ.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.CR4zG2G-.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.CR4zG2G-.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.CG-43_5h.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.CG-43_5h.js.gz +0 -0
- package/build/server/chunks/1-Diul24Nb.js +0 -9
- package/build/server/chunks/src-BWQ05CjI.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_page.svelte-B7Viea5q.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/admin/_page.svelte.js"],"sourcesContent":["import { B as attr, V as escape_html, a as ensure_array_like, i as derived, l as stringify, n as attr_class, o as head } from \"../../../chunks/dev.js\";\nimport { n as onDestroy } from \"../../../chunks/index-server.js\";\nimport { C as fetchUiVersions, M as upgradeStack, O as pullImages, S as fetchServiceLogs, b as fetchReleases, c as applyChanges, f as downloadUiVersion, g as fetchContainers, h as fetchAutomations, j as setStackVersion, l as buildHeaders, o as voiceState, u as containerAction, v as fetchHealth, w as fetchVersions } from \"../../../chunks/theme-state.svelte.js\";\nimport { n as Navbar, t as AuthGate } from \"../../../chunks/AuthGate.js\";\nimport { n as VoiceEngineSelector, t as VoiceProfileSelector } from \"../../../chunks/VoiceProfileSelector.js\";\n//#region src/lib/components/TabBar.svelte\nfunction TabBar($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { active, onSelect } = $$props;\n\t\t$$renderer.push(`<div class=\"tabs svelte-1wwzsr0\" role=\"tablist\"><button${attr_class(\"tab svelte-1wwzsr0\", void 0, { \"tab-active\": active === \"overview\" })} role=\"tab\"${attr(\"aria-selected\", active === \"overview\")}><svg aria-hidden=\"true\" width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3\" y=\"3\" width=\"7\" height=\"7\"></rect><rect x=\"14\" y=\"3\" width=\"7\" height=\"7\"></rect><rect x=\"14\" y=\"14\" width=\"7\" height=\"7\"></rect><rect x=\"3\" y=\"14\" width=\"7\" height=\"7\"></rect></svg> Overview</button> <button${attr_class(\"tab svelte-1wwzsr0\", void 0, { \"tab-active\": active === \"addons\" })} role=\"tab\"${attr(\"aria-selected\", active === \"addons\")}><svg aria-hidden=\"true\" width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12 2L2 7l10 5 10-5-10-5z\"></path><path d=\"M2 17l10 5 10-5\"></path><path d=\"M2 12l10 5 10-5\"></path></svg> Addons</button> <button${attr_class(\"tab svelte-1wwzsr0\", void 0, { \"tab-active\": active === \"automations\" })} role=\"tab\"${attr(\"aria-selected\", active === \"automations\")}><svg aria-hidden=\"true\" width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"12\" cy=\"12\" r=\"10\"></circle><polyline points=\"12 6 12 12 16 14\"></polyline></svg> Automations</button> <button${attr_class(\"tab svelte-1wwzsr0\", void 0, { \"tab-active\": active === \"connections\" })} role=\"tab\"${attr(\"aria-selected\", active === \"connections\")}><svg aria-hidden=\"true\" width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71\"></path><path d=\"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71\"></path></svg> Connections</button> <button${attr_class(\"tab svelte-1wwzsr0\", void 0, { \"tab-active\": active === \"secrets\" })} role=\"tab\"${attr(\"aria-selected\", active === \"secrets\")}><svg aria-hidden=\"true\" width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\" ry=\"2\"></rect><path d=\"M7 11V7a5 5 0 0 1 10 0v4\"></path></svg> Secrets</button> <button${attr_class(\"tab svelte-1wwzsr0\", void 0, { \"tab-active\": active === \"voice\" })} role=\"tab\"${attr(\"aria-selected\", active === \"voice\")}><svg aria-hidden=\"true\" width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z\"></path><path d=\"M19 10v2a7 7 0 0 1-14 0v-2\"></path><line x1=\"12\" y1=\"19\" x2=\"12\" y2=\"23\"></line><line x1=\"8\" y1=\"23\" x2=\"16\" y2=\"23\"></line></svg> Voice</button> <button${attr_class(\"tab svelte-1wwzsr0\", void 0, { \"tab-active\": active === \"akm\" })} role=\"tab\"${attr(\"aria-selected\", active === \"akm\")}><svg aria-hidden=\"true\" width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z\"></path><path d=\"M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z\"></path></svg> Knowledge</button> <button${attr_class(\"tab svelte-1wwzsr0\", void 0, { \"tab-active\": active === \"containers\" })} role=\"tab\"${attr(\"aria-selected\", active === \"containers\")}><svg aria-hidden=\"true\" width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"2\" y=\"2\" width=\"20\" height=\"8\" rx=\"2\" ry=\"2\"></rect><rect x=\"2\" y=\"14\" width=\"20\" height=\"8\" rx=\"2\" ry=\"2\"></rect><line x1=\"6\" y1=\"6\" x2=\"6.01\" y2=\"6\"></line><line x1=\"6\" y1=\"18\" x2=\"6.01\" y2=\"18\"></line></svg> Containers</button> <button${attr_class(\"tab svelte-1wwzsr0\", void 0, { \"tab-active\": active === \"logs\" })} role=\"tab\"${attr(\"aria-selected\", active === \"logs\")}><svg aria-hidden=\"true\" width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"4 17 10 11 4 5\"></polyline><line x1=\"12\" y1=\"19\" x2=\"20\" y2=\"19\"></line></svg> Logs</button></div>`);\n\t});\n}\n//#endregion\n//#region src/lib/components/OverviewTab.svelte\nfunction OverviewTab($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { adminHealth, operationResult, operationResultType, tokenStored, healthLoading, applyLoading, upgradeLoading, anyDangerousLoading, automationsData, mergedServices, currentImageTag, tagChangeLoading, uiDownloadLoading, uiDownloadReady, inElectron, selectedImageTag, selectedUiTag, releases, releasesLoading, uiVersions, uiVersionsLoading, onCheckHealth, onApplyChanges, onUpgradeStack, onDismissResult, onSetImageTag, onDownloadUiVersion, onRestartApp, onSelectedImageTagChange, onSelectedUiTagChange } = $$props;\n\t\tfunction uiVersionLabel(v) {\n\t\t\tconst tags = [];\n\t\t\tif (v.distTag) tags.push(v.distTag);\n\t\t\telse if (v.prerelease) tags.push(\"pre-release\");\n\t\t\treturn tags.length ? `${v.version} (${tags.join(\", \")})` : v.version;\n\t\t}\n\t\tlet automationCount = derived(() => automationsData?.automations.length ?? 0);\n\t\tlet enabledAutomationCount = derived(() => automationsData?.automations.filter((a) => a.enabled).length ?? 0);\n\t\tlet containerCounts = derived(() => {\n\t\t\tif (mergedServices.size === 0) return null;\n\t\t\treturn {\n\t\t\t\ttotal: mergedServices.size,\n\t\t\t\trunning: [...mergedServices.values()].filter((s) => s === \"running\").length\n\t\t\t};\n\t\t});\n\t\tlet guardianContainerStatus = derived(() => {\n\t\t\tconst status = mergedServices.get(\"guardian\");\n\t\t\tif (status === \"running\") return \"running\";\n\t\t\tif (status === \"stopped\" || status === \"exited\" || status === \"created\") return \"stopped\";\n\t\t\tif (status) return \"stopped\";\n\t\t\treturn \"unknown\";\n\t\t});\n\t\tlet assistantStatus = derived(() => {\n\t\t\tconst status = mergedServices.get(\"assistant\");\n\t\t\tif (status === \"running\") return \"connected\";\n\t\t\tif (status === \"stopped\" || status === \"exited\" || status === \"created\") return \"disconnected\";\n\t\t\tif (status) return \"disconnected\";\n\t\t\treturn \"unknown\";\n\t\t});\n\t\tlet healthSummary = derived(() => {\n\t\t\tif (!containerCounts()) return {\n\t\t\t\tstatus: \"unknown\",\n\t\t\t\tmessage: \"Checking services…\"\n\t\t\t};\n\t\t\tif (containerCounts().running === containerCounts().total && containerCounts().total > 0) return {\n\t\t\t\tstatus: \"ok\",\n\t\t\t\tmessage: `All ${containerCounts().total} services running`\n\t\t\t};\n\t\t\treturn {\n\t\t\t\tstatus: \"warning\",\n\t\t\t\tmessage: `${containerCounts().total - containerCounts().running} of ${containerCounts().total} services not running — check the Containers tab`\n\t\t\t};\n\t\t});\n\t\t$$renderer.push(`<div${attr_class(`health-summary health-summary--${stringify(healthSummary().status)}`, \"svelte-1ob1zsm\")} role=\"status\" aria-live=\"polite\"><span class=\"health-dot svelte-1ob1zsm\"></span> <span class=\"health-msg svelte-1ob1zsm\">${escape_html(healthSummary().message)}</span></div> `);\n\t\tif (operationResult) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<section${attr_class(`output-section output-section--${stringify(operationResultType)}`, \"svelte-1ob1zsm\")}><div class=\"output-header svelte-1ob1zsm\"><h3 class=\"svelte-1ob1zsm\">Operation Output</h3> <button class=\"btn-ghost svelte-1ob1zsm\" aria-label=\"Dismiss\"><svg aria-hidden=\"true\" width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"svelte-1ob1zsm\"><line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" class=\"svelte-1ob1zsm\"></line><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" class=\"svelte-1ob1zsm\"></line></svg></button></div> <pre class=\"output-code svelte-1ob1zsm\">${escape_html(operationResult)}</pre></section>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> <div class=\"panel-grid svelte-1ob1zsm\" role=\"tabpanel\"><div class=\"panel svelte-1ob1zsm\"><div class=\"panel-header svelte-1ob1zsm\"><h2 class=\"svelte-1ob1zsm\">Quick Actions</h2></div> <div class=\"panel-body svelte-1ob1zsm\"><div class=\"action-list svelte-1ob1zsm\"><button class=\"action-item svelte-1ob1zsm\"${attr(\"disabled\", healthLoading, true)}><span class=\"action-icon action-icon--blue svelte-1ob1zsm\">`);\n\t\tif (healthLoading) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<span class=\"spinner svelte-1ob1zsm\"></span>`);\n\t\t} else {\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<svg aria-hidden=\"true\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"svelte-1ob1zsm\"><path d=\"M22 12h-4l-3 9L9 3l-3 9H2\" class=\"svelte-1ob1zsm\"></path></svg>`);\n\t\t}\n\t\t$$renderer.push(`<!--]--></span> <div class=\"action-content svelte-1ob1zsm\"><span class=\"action-title svelte-1ob1zsm\">Health Check</span> <span class=\"action-desc svelte-1ob1zsm\">Verify admin and guardian services are reachable</span></div> <span class=\"action-arrow svelte-1ob1zsm\"><svg aria-hidden=\"true\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"svelte-1ob1zsm\"><polyline points=\"9 18 15 12 9 6\" class=\"svelte-1ob1zsm\"></polyline></svg></span></button> <button class=\"action-item svelte-1ob1zsm\"${attr(\"disabled\", anyDangerousLoading || !tokenStored, true)}><span class=\"action-icon action-icon--blue svelte-1ob1zsm\">`);\n\t\tif (applyLoading) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<span class=\"spinner svelte-1ob1zsm\"></span>`);\n\t\t} else {\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<svg aria-hidden=\"true\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"svelte-1ob1zsm\"><polyline points=\"16 16 12 12 8 16\" class=\"svelte-1ob1zsm\"></polyline><line x1=\"12\" y1=\"12\" x2=\"12\" y2=\"21\" class=\"svelte-1ob1zsm\"></line><path d=\"M20.39 18.39A5 5 0 0 0 18 9h-1.26A8 8 0 1 0 3 16.3\" class=\"svelte-1ob1zsm\"></path></svg>`);\n\t\t}\n\t\t$$renderer.push(`<!--]--></span> <div class=\"action-content svelte-1ob1zsm\"><span class=\"action-title svelte-1ob1zsm\">Apply Config + Restart</span> <span class=\"action-desc svelte-1ob1zsm\">Update configuration and restart running services</span> <span class=\"action-hint svelte-1ob1zsm\">Restarts services with updated compose config.</span></div> <span class=\"action-arrow svelte-1ob1zsm\"><svg aria-hidden=\"true\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"svelte-1ob1zsm\"><polyline points=\"9 18 15 12 9 6\" class=\"svelte-1ob1zsm\"></polyline></svg></span></button> <a class=\"action-item svelte-1ob1zsm\" href=\"/setup?rerun=1\"><span class=\"action-icon action-icon--purple svelte-1ob1zsm\"><svg aria-hidden=\"true\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"svelte-1ob1zsm\"><circle cx=\"12\" cy=\"12\" r=\"3\" class=\"svelte-1ob1zsm\"></circle><path d=\"M19.07 4.93a10 10 0 0 1 0 14.14M4.93 4.93a10 10 0 0 0 0 14.14\" class=\"svelte-1ob1zsm\"></path></svg></span> <div class=\"action-content svelte-1ob1zsm\"><span class=\"action-title svelte-1ob1zsm\">Update Settings</span> <span class=\"action-desc svelte-1ob1zsm\">Re-run setup wizard to change providers, channels, or options</span></div> <span class=\"action-arrow svelte-1ob1zsm\"><svg aria-hidden=\"true\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"svelte-1ob1zsm\"><polyline points=\"9 18 15 12 9 6\" class=\"svelte-1ob1zsm\"></polyline></svg></span></a> <a class=\"action-item svelte-1ob1zsm\" href=\"/advanced\"><span class=\"action-icon action-icon--blue svelte-1ob1zsm\"><svg aria-hidden=\"true\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"svelte-1ob1zsm\"><rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\" class=\"svelte-1ob1zsm\"></rect><path d=\"M9 9h6v6H9z\" class=\"svelte-1ob1zsm\"></path></svg></span> <div class=\"action-content svelte-1ob1zsm\"><span class=\"action-title svelte-1ob1zsm\">Advanced Chat (OpenCode)</span> <span class=\"action-desc svelte-1ob1zsm\">Open the full OpenCode UI embedded in OpenPalm — host machine only</span></div> <span class=\"action-arrow svelte-1ob1zsm\"><svg aria-hidden=\"true\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"svelte-1ob1zsm\"><polyline points=\"9 18 15 12 9 6\" class=\"svelte-1ob1zsm\"></polyline></svg></span></a></div></div></div> <div class=\"panel svelte-1ob1zsm\"><div class=\"panel-header svelte-1ob1zsm\"><h2 class=\"svelte-1ob1zsm\">System Information</h2></div> <div class=\"panel-body svelte-1ob1zsm\"><div class=\"info-grid svelte-1ob1zsm\"><div class=\"info-item svelte-1ob1zsm\"><span class=\"info-label svelte-1ob1zsm\">Admin API</span> <span class=\"info-value svelte-1ob1zsm\">`);\n\t\tif (adminHealth) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<span${attr_class(\"badge svelte-1ob1zsm\", void 0, {\n\t\t\t\t\"badge-success\": adminHealth.status === \"ok\",\n\t\t\t\t\"badge-danger\": adminHealth.status !== \"ok\"\n\t\t\t})}>${escape_html(adminHealth.status)}</span>`);\n\t\t} else {\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<span class=\"badge badge-idle svelte-1ob1zsm\">Unknown</span>`);\n\t\t}\n\t\t$$renderer.push(`<!--]--></span></div> <div class=\"info-item svelte-1ob1zsm\"><span class=\"info-label svelte-1ob1zsm\">Guardian</span> <span class=\"info-value svelte-1ob1zsm\">`);\n\t\tif (guardianContainerStatus() === \"running\") {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<span class=\"badge badge-success svelte-1ob1zsm\">Running</span>`);\n\t\t} else if (guardianContainerStatus() === \"stopped\") {\n\t\t\t$$renderer.push(\"<!--[1-->\");\n\t\t\t$$renderer.push(`<span class=\"badge badge-danger svelte-1ob1zsm\">Stopped</span>`);\n\t\t} else {\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<span class=\"badge badge-idle svelte-1ob1zsm\">Unknown</span>`);\n\t\t}\n\t\t$$renderer.push(`<!--]--></span></div> <div class=\"info-item svelte-1ob1zsm\"><span class=\"info-label svelte-1ob1zsm\">Containers</span> <span class=\"info-value svelte-1ob1zsm\">`);\n\t\tif (containerCounts()) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\tif (containerCounts().running === containerCounts().total) {\n\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t$$renderer.push(`<span class=\"badge badge-success svelte-1ob1zsm\">${escape_html(containerCounts().running)} / ${escape_html(containerCounts().total)} running</span>`);\n\t\t\t} else if (containerCounts().running > 0) {\n\t\t\t\t$$renderer.push(\"<!--[1-->\");\n\t\t\t\t$$renderer.push(`<span class=\"badge badge-warning svelte-1ob1zsm\">${escape_html(containerCounts().running)} / ${escape_html(containerCounts().total)} running</span>`);\n\t\t\t} else {\n\t\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<span class=\"badge badge-danger svelte-1ob1zsm\">0 / ${escape_html(containerCounts().total)} running</span>`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]-->`);\n\t\t} else {\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<span class=\"badge badge-idle svelte-1ob1zsm\">Unknown</span>`);\n\t\t}\n\t\t$$renderer.push(`<!--]--></span></div> <div class=\"info-item svelte-1ob1zsm\"><span class=\"info-label svelte-1ob1zsm\">Assistant</span> <span class=\"info-value svelte-1ob1zsm\">`);\n\t\tif (assistantStatus() === \"connected\") {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<span class=\"badge badge-success svelte-1ob1zsm\">Connected</span>`);\n\t\t} else if (assistantStatus() === \"disconnected\") {\n\t\t\t$$renderer.push(\"<!--[1-->\");\n\t\t\t$$renderer.push(`<span class=\"badge badge-danger svelte-1ob1zsm\">Disconnected</span>`);\n\t\t} else {\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<span class=\"badge badge-idle svelte-1ob1zsm\">Unknown</span>`);\n\t\t}\n\t\t$$renderer.push(`<!--]--></span></div> <div class=\"info-item svelte-1ob1zsm\"><span class=\"info-label svelte-1ob1zsm\">Automations</span> <span class=\"info-value svelte-1ob1zsm\">`);\n\t\tif (automationsData) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<span class=\"info-mono svelte-1ob1zsm\">${escape_html(enabledAutomationCount())} active / ${escape_html(automationCount())} total</span>`);\n\t\t} else {\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<span class=\"badge badge-idle svelte-1ob1zsm\">Loading</span>`);\n\t\t}\n\t\t$$renderer.push(`<!--]--></span></div></div></div></div> <div class=\"panel svelte-1ob1zsm\"><div class=\"panel-header svelte-1ob1zsm\"><h2 class=\"svelte-1ob1zsm\">Version Management</h2></div> <div class=\"panel-body svelte-1ob1zsm\"><div class=\"version-section svelte-1ob1zsm\"><div class=\"version-row svelte-1ob1zsm\"><span class=\"version-label svelte-1ob1zsm\">Stack images</span> <code class=\"version-value version-value--active svelte-1ob1zsm\">${escape_html(currentImageTag || \"—\")}</code></div> <div class=\"version-input-row svelte-1ob1zsm\">`);\n\t\tif (releasesLoading) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<div class=\"version-select-skeleton svelte-1ob1zsm\"></div>`);\n\t\t} else if (releases.length > 0) {\n\t\t\t$$renderer.push(\"<!--[1-->\");\n\t\t\t$$renderer.select({\n\t\t\t\tclass: \"version-select\",\n\t\t\t\tvalue: selectedImageTag,\n\t\t\t\tonchange: (e) => onSelectedImageTagChange(e.currentTarget.value),\n\t\t\t\tdisabled: tagChangeLoading || anyDangerousLoading\n\t\t\t}, ($$renderer) => {\n\t\t\t\t$$renderer.option({\n\t\t\t\t\tvalue: \"latest\",\n\t\t\t\t\tclass: \"\"\n\t\t\t\t}, ($$renderer) => {\n\t\t\t\t\t$$renderer.push(`latest`);\n\t\t\t\t}, \"svelte-1ob1zsm\");\n\t\t\t\t$$renderer.push(`<!--[-->`);\n\t\t\t\tconst each_array = ensure_array_like(releases);\n\t\t\t\tfor (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {\n\t\t\t\t\tlet r = each_array[$$index];\n\t\t\t\t\t$$renderer.option({\n\t\t\t\t\t\tvalue: r.tag,\n\t\t\t\t\t\tclass: \"\"\n\t\t\t\t\t}, ($$renderer) => {\n\t\t\t\t\t\t$$renderer.push(`${escape_html(r.tag)}${escape_html(r.prerelease ? \" (pre-release)\" : \"\")}`);\n\t\t\t\t\t}, \"svelte-1ob1zsm\");\n\t\t\t\t}\n\t\t\t\t$$renderer.push(`<!--]-->`);\n\t\t\t}, \"svelte-1ob1zsm\");\n\t\t} else {\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<input class=\"version-input svelte-1ob1zsm\" type=\"text\" placeholder=\"e.g. 0.11.0 or latest\"${attr(\"value\", selectedImageTag)}${attr(\"disabled\", tagChangeLoading || anyDangerousLoading, true)}/>`);\n\t\t}\n\t\t$$renderer.push(`<!--]--> <button class=\"btn btn-sm svelte-1ob1zsm\"${attr(\"disabled\", !selectedImageTag.trim() || tagChangeLoading || anyDangerousLoading, true)}>`);\n\t\tif (tagChangeLoading) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<span class=\"spinner spinner-sm svelte-1ob1zsm\"></span> Applying…`);\n\t\t} else {\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`Pull & Restart`);\n\t\t}\n\t\t$$renderer.push(`<!--]--></button></div> <p class=\"version-hint svelte-1ob1zsm\">Pulls the selected images and restarts services.</p></div> <div class=\"version-divider svelte-1ob1zsm\"></div> <div class=\"version-section svelte-1ob1zsm\"><div class=\"version-row svelte-1ob1zsm\"><span class=\"version-label svelte-1ob1zsm\">Upgrade Stack</span></div> <div class=\"version-input-row svelte-1ob1zsm\"><button class=\"btn btn-sm btn-warning svelte-1ob1zsm\"${attr(\"disabled\", anyDangerousLoading || !tokenStored, true)}>`);\n\t\tif (upgradeLoading) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<span class=\"spinner spinner-sm svelte-1ob1zsm\"></span> Upgrading…`);\n\t\t} else {\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`Upgrade to Latest`);\n\t\t}\n\t\t$$renderer.push(`<!--]--></button></div> <p class=\"version-hint svelte-1ob1zsm\">Downloads the latest assets, pulls images, and restarts services. Backs up current config first.</p></div> <div class=\"version-divider svelte-1ob1zsm\"></div> `);\n\t\tif (inElectron) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<div class=\"version-section svelte-1ob1zsm\"><div class=\"version-input-row svelte-1ob1zsm\">`);\n\t\t\tif (uiVersionsLoading) {\n\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t$$renderer.push(`<div class=\"version-select-skeleton svelte-1ob1zsm\"></div>`);\n\t\t\t} else if (uiVersions.length > 0) {\n\t\t\t\t$$renderer.push(\"<!--[1-->\");\n\t\t\t\t$$renderer.select({\n\t\t\t\t\tclass: \"version-select\",\n\t\t\t\t\tvalue: selectedUiTag,\n\t\t\t\t\tonchange: (e) => onSelectedUiTagChange(e.currentTarget.value),\n\t\t\t\t\tdisabled: uiDownloadLoading\n\t\t\t\t}, ($$renderer) => {\n\t\t\t\t\t$$renderer.push(`<!--[-->`);\n\t\t\t\t\tconst each_array_1 = ensure_array_like(uiVersions);\n\t\t\t\t\tfor (let $$index_1 = 0, $$length = each_array_1.length; $$index_1 < $$length; $$index_1++) {\n\t\t\t\t\t\tlet v = each_array_1[$$index_1];\n\t\t\t\t\t\t$$renderer.option({\n\t\t\t\t\t\t\tvalue: v.version,\n\t\t\t\t\t\t\tclass: \"\"\n\t\t\t\t\t\t}, ($$renderer) => {\n\t\t\t\t\t\t\t$$renderer.push(`${escape_html(uiVersionLabel(v))}`);\n\t\t\t\t\t\t}, \"svelte-1ob1zsm\");\n\t\t\t\t\t}\n\t\t\t\t\t$$renderer.push(`<!--]-->`);\n\t\t\t\t}, \"svelte-1ob1zsm\");\n\t\t\t} else {\n\t\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<input class=\"version-input svelte-1ob1zsm\" type=\"text\" placeholder=\"e.g. 0.11.0-beta.7\"${attr(\"value\", selectedUiTag)}${attr(\"disabled\", uiDownloadLoading, true)}/>`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--> <button class=\"btn btn-sm svelte-1ob1zsm\"${attr(\"disabled\", !selectedUiTag.trim() || uiDownloadLoading, true)}>`);\n\t\t\tif (uiDownloadLoading) {\n\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t$$renderer.push(`<span class=\"spinner spinner-sm svelte-1ob1zsm\"></span> Downloading…`);\n\t\t\t} else {\n\t\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`Download`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--></button></div> `);\n\t\t\tif (uiDownloadReady) {\n\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t$$renderer.push(`<div class=\"version-restart-prompt svelte-1ob1zsm\">UI updated. <button class=\"btn btn-sm btn-primary svelte-1ob1zsm\">Restart App</button></div>`);\n\t\t\t} else {\n\t\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<p class=\"version-hint svelte-1ob1zsm\">Downloads and replaces the UI from GitHub. Takes effect on restart.</p>`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--></div>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--></div></div></div>`);\n\t});\n}\n//#endregion\n//#region src/lib/components/AddonsTab.svelte\nfunction AddonsTab($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { onAuthError } = $$props;\n\t\tlet addons = [];\n\t\tlet loading = false;\n\t\tlet actionLoading = null;\n\t\tlet expanded = null;\n\t\tlet credFields = {};\n\t\tlet credValues = {};\n\t\tlet credLoading = null;\n\t\tlet credSaving = null;\n\t\t$$renderer.push(`<div class=\"panel\" role=\"tabpanel\"><div class=\"panel-header\"><div><h2>Addons</h2> <p class=\"panel-subtitle\">Optional features you can enable or disable. Credentials are written to the stack config and applied when the addon container restarts.</p></div> <button class=\"btn btn-secondary btn-sm\"${attr(\"disabled\", loading, true)}>`);\n\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> Refresh</button></div> <div class=\"panel-body panel-body--flush\">`);\n\t\tif (addons.length === 0) {\n\t\t\t$$renderer.push(\"<!--[2-->\");\n\t\t\t$$renderer.push(`<div class=\"empty-state\"><svg aria-hidden=\"true\" width=\"40\" height=\"40\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12 2L2 7l10 5 10-5-10-5z\"></path><path d=\"M2 17l10 5 10-5\"></path><path d=\"M2 12l10 5 10-5\"></path></svg> <p>No addons found in registry/addons/.</p></div>`);\n\t\t} else {\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<div class=\"addon-table svelte-faz2je\"><div class=\"addon-table-header svelte-faz2je\"><span class=\"addon-col addon-col--name svelte-faz2je\">Addon</span> <span class=\"addon-col addon-col--status svelte-faz2je\">Status</span> <span class=\"addon-col addon-col--actions svelte-faz2je\"></span></div> <!--[-->`);\n\t\t\tconst each_array = ensure_array_like(addons);\n\t\t\tfor (let $$index_1 = 0, $$length = each_array.length; $$index_1 < $$length; $$index_1++) {\n\t\t\t\tlet addon = each_array[$$index_1];\n\t\t\t\t$$renderer.push(`<div class=\"addon-row svelte-faz2je\"><span class=\"addon-col addon-col--name addon-name svelte-faz2je\">${escape_html(addon.name)}</span> <span class=\"addon-col addon-col--status svelte-faz2je\"><span${attr_class(\"badge\", void 0, {\n\t\t\t\t\t\"badge-enabled\": addon.enabled,\n\t\t\t\t\t\"badge-disabled\": !addon.enabled\n\t\t\t\t})}>${escape_html(addon.enabled ? \"enabled\" : \"disabled\")}</span></span> <span class=\"addon-col addon-col--actions svelte-faz2je\"><button class=\"btn btn-sm btn-ghost\"${attr(\"disabled\", !addon.available, true)}${attr(\"aria-expanded\", expanded === addon.name)}>${escape_html(expanded === addon.name ? \"Hide\" : \"Credentials\")}</button> <button${attr_class(\"btn btn-sm\", void 0, {\n\t\t\t\t\t\"btn-danger\": addon.enabled,\n\t\t\t\t\t\"btn-outline\": !addon.enabled\n\t\t\t\t})}${attr(\"disabled\", actionLoading === addon.name || !addon.available, true)}>`);\n\t\t\t\tif (actionLoading === addon.name) {\n\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t$$renderer.push(`<span class=\"spinner\"></span>`);\n\t\t\t\t} else {\n\t\t\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t$$renderer.push(`${escape_html(addon.enabled ? \"Disable\" : \"Enable\")}`);\n\t\t\t\t}\n\t\t\t\t$$renderer.push(`<!--]--></button></span></div> `);\n\t\t\t\tif (expanded === addon.name) {\n\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t$$renderer.push(`<div class=\"addon-creds svelte-faz2je\">`);\n\t\t\t\t\tif (credLoading === addon.name) {\n\t\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t\t$$renderer.push(`<div class=\"creds-loading svelte-faz2je\"><span class=\"spinner\"></span> Loading credentials...</div>`);\n\t\t\t\t\t} else if ((credFields[addon.name]?.length ?? 0) === 0) {\n\t\t\t\t\t\t$$renderer.push(\"<!--[1-->\");\n\t\t\t\t\t\t$$renderer.push(`<p class=\"creds-empty svelte-faz2je\">This addon has no configurable env vars (compose overlay only).</p>`);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t\t$$renderer.push(`<p class=\"creds-hint svelte-faz2je\">Values are written to <code>knowledge/env/stack.env</code> and read by the addon container on next recreate.</p> <!--[-->`);\n\t\t\t\t\t\tconst each_array_1 = ensure_array_like(credFields[addon.name] ?? []);\n\t\t\t\t\t\tfor (let $$index = 0, $$length = each_array_1.length; $$index < $$length; $$index++) {\n\t\t\t\t\t\t\tlet field = each_array_1[$$index];\n\t\t\t\t\t\t\t$$renderer.push(`<div class=\"creds-row svelte-faz2je\"><label class=\"creds-label svelte-faz2je\"${attr(\"for\", `cred-${stringify(addon.name)}-${stringify(field.key)}`)}><code class=\"svelte-faz2je\">${escape_html(field.key)}</code> `);\n\t\t\t\t\t\t\tif (field.sensitive) {\n\t\t\t\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t\t\t\t$$renderer.push(`<span class=\"creds-tag svelte-faz2je\">sensitive</span>`);\n\t\t\t\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t\t\t$$renderer.push(`<!--]--> `);\n\t\t\t\t\t\t\tif (field.sensitive && field.set) {\n\t\t\t\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t\t\t\t$$renderer.push(`<span class=\"creds-tag creds-tag--set svelte-faz2je\">set</span>`);\n\t\t\t\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t\t\t$$renderer.push(`<!--]--></label> `);\n\t\t\t\t\t\t\tif (field.description) {\n\t\t\t\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t\t\t\t$$renderer.push(`<p class=\"creds-desc svelte-faz2je\">${escape_html(field.description)}</p>`);\n\t\t\t\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t\t\t$$renderer.push(`<!--]--> <input${attr(\"id\", `cred-${stringify(addon.name)}-${stringify(field.key)}`)}${attr(\"type\", field.sensitive ? \"password\" : \"text\")} class=\"form-input svelte-faz2je\"${attr(\"placeholder\", field.sensitive ? field.set ? \"••••••• (leave empty to keep current)\" : field.default : field.default)}${attr(\"value\", credValues[addon.name][field.key])} autocomplete=\"off\"/></div>`);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$$renderer.push(`<!--]--> <div class=\"creds-actions svelte-faz2je\"><button class=\"btn btn-primary btn-sm\"${attr(\"disabled\", credSaving === addon.name, true)}>`);\n\t\t\t\t\t\tif (credSaving === addon.name) {\n\t\t\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t\t\t$$renderer.push(`<span class=\"spinner\"></span>`);\n\t\t\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t\t$$renderer.push(`<!--]--> Save</button></div>`);\n\t\t\t\t\t}\n\t\t\t\t\t$$renderer.push(`<!--]--></div>`);\n\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<!--]-->`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--></div>`);\n\t\t}\n\t\t$$renderer.push(`<!--]--></div></div>`);\n\t});\n}\n//#endregion\n//#region src/lib/components/ContainersTab.svelte\nfunction ContainersTab($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { containerData, serviceEntries, loading, error, tokenStored, selectedContainerId, onToggleContainer, onStart, onStop, onRestart, onRefresh, onPullImages, lastUpdated, pullLoading } = $$props;\n\t\tlet hasEntries = derived(() => serviceEntries.length > 0);\n\t\tlet rowState = {};\n\t\tfunction parseImageTag(image) {\n\t\t\tconst atIdx = image.indexOf(\"@\");\n\t\t\tconst base = atIdx > -1 ? image.slice(0, atIdx) : image;\n\t\t\tconst colonIdx = base.lastIndexOf(\":\");\n\t\t\tif (colonIdx > -1) return {\n\t\t\t\tname: base.slice(0, colonIdx),\n\t\t\t\ttag: base.slice(colonIdx + 1)\n\t\t\t};\n\t\t\treturn {\n\t\t\t\tname: base,\n\t\t\t\ttag: \"latest\"\n\t\t\t};\n\t\t}\n\t\tfunction containerStatusColor(state) {\n\t\t\tif (state === \"running\") return \"success\";\n\t\t\tif (state === \"exited\" || state === \"dead\" || state === \"stopped\") return \"danger\";\n\t\t\tif (state === \"restarting\" || state === \"paused\") return \"warning\";\n\t\t\treturn \"idle\";\n\t\t}\n\t\t$$renderer.push(`<div class=\"panel\" role=\"tabpanel\"><div class=\"panel-header\"><h2>Container Status</h2> <div class=\"panel-header-actions\">`);\n\t\tif (lastUpdated) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<span class=\"last-updated svelte-ocbovv\">Updated ${escape_html(lastUpdated)}</span>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> <button class=\"btn btn-secondary btn-sm\"${attr(\"disabled\", pullLoading || !tokenStored, true)}>`);\n\t\tif (pullLoading) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<span class=\"spinner\"></span>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> Pull Images</button> <button class=\"btn btn-secondary btn-sm\"${attr(\"disabled\", loading || !tokenStored, true)}>`);\n\t\tif (loading) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<span class=\"spinner\"></span>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> Refresh</button></div></div> <div class=\"panel-body panel-body--flush\">`);\n\t\tif (hasEntries()) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<div class=\"container-table svelte-ocbovv\"><div class=\"container-table-header svelte-ocbovv\"><span class=\"ct-col ct-col--name svelte-ocbovv\">Container</span> <span class=\"ct-col ct-col--image svelte-ocbovv\">Image</span> <span class=\"ct-col ct-col--tag svelte-ocbovv\">Tag</span> <span class=\"ct-col ct-col--status svelte-ocbovv\">Status</span> <span class=\"ct-col ct-col--actions svelte-ocbovv\"></span></div> <!--[-->`);\n\t\t\tconst each_array = ensure_array_like(serviceEntries);\n\t\t\tfor (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {\n\t\t\t\tlet entry = each_array[$$index];\n\t\t\t\tconst selected = selectedContainerId === entry.id;\n\t\t\t\tconst entryActionInFlight = rowState[entry.id]?.inFlight ?? null;\n\t\t\t\tconst entryConfirmAction = rowState[entry.id]?.confirm ?? null;\n\t\t\t\tconst entryFeedback = rowState[entry.id]?.feedback ?? null;\n\t\t\t\tconst img = entry.docker ? parseImageTag(entry.docker.Image) : null;\n\t\t\t\tconst isAnyActionInFlight = entryActionInFlight !== null;\n\t\t\t\tconst isNotCreated = !entry.docker;\n\t\t\t\t$$renderer.push(`<button class=\"container-table-row container-table-row--clickable svelte-ocbovv\"${attr(\"aria-expanded\", selected)}><span class=\"ct-col ct-col--name svelte-ocbovv\"><span${attr_class(`ct-indicator ct-indicator--${stringify(containerStatusColor(entry.state))}`, \"svelte-ocbovv\")}></span> <span class=\"ct-service-name svelte-ocbovv\">${escape_html(entry.service)}</span></span> <span class=\"ct-col ct-col--image ct-mono svelte-ocbovv\">`);\n\t\t\t\tif (img) {\n\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t$$renderer.push(`${escape_html(img.name)}`);\n\t\t\t\t} else {\n\t\t\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t$$renderer.push(`<span class=\"ct-not-created svelte-ocbovv\">--</span>`);\n\t\t\t\t}\n\t\t\t\t$$renderer.push(`<!--]--></span> <span class=\"ct-col ct-col--tag svelte-ocbovv\">`);\n\t\t\t\tif (img) {\n\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t$$renderer.push(`<span class=\"tag-badge svelte-ocbovv\">${escape_html(img.tag)}</span>`);\n\t\t\t\t} else {\n\t\t\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t$$renderer.push(`<span class=\"ct-not-created svelte-ocbovv\">--</span>`);\n\t\t\t\t}\n\t\t\t\t$$renderer.push(`<!--]--></span> <span class=\"ct-col ct-col--status svelte-ocbovv\"><span${attr_class(`badge badge-${stringify(containerStatusColor(entry.state))}`, \"svelte-ocbovv\")}>${escape_html(entry.state)}</span></span> <span class=\"ct-col ct-col--actions svelte-ocbovv\"><svg aria-hidden=\"true\" width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"${attr_class(\"svelte-ocbovv\", void 0, { \"ct-chevron-open\": selected })}><polyline points=\"6 9 12 15 18 9\"></polyline></svg></span></button> `);\n\t\t\t\tif (selected) {\n\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t$$renderer.push(`<div class=\"container-detail svelte-ocbovv\">`);\n\t\t\t\t\tif (entry.docker) {\n\t\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t\tconst container = entry.docker;\n\t\t\t\t\t\t$$renderer.push(`<div class=\"detail-grid svelte-ocbovv\"><div class=\"detail-item svelte-ocbovv\"><span class=\"detail-label svelte-ocbovv\">Container ID</span> <span class=\"detail-value detail-mono svelte-ocbovv\">${escape_html(container.ID)}</span></div> <div class=\"detail-item svelte-ocbovv\"><span class=\"detail-label svelte-ocbovv\">Name</span> <span class=\"detail-value detail-mono svelte-ocbovv\">${escape_html(container.Name || container.Names)}</span></div> <div class=\"detail-item svelte-ocbovv\"><span class=\"detail-label svelte-ocbovv\">Image</span> <span class=\"detail-value detail-mono svelte-ocbovv\">${escape_html(container.Image)}</span></div> `);\n\t\t\t\t\t\tif (img) {\n\t\t\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t\t\t$$renderer.push(`<div class=\"detail-item svelte-ocbovv\"><span class=\"detail-label svelte-ocbovv\">Image Name</span> <span class=\"detail-value detail-mono svelte-ocbovv\">${escape_html(img.name)}</span></div> <div class=\"detail-item svelte-ocbovv\"><span class=\"detail-label svelte-ocbovv\">Tag / Digest</span> <span class=\"detail-value svelte-ocbovv\"><span class=\"tag-badge tag-badge--lg svelte-ocbovv\">${escape_html(img.tag)}</span> `);\n\t\t\t\t\t\t\tif (container.Image.includes(\"@\")) {\n\t\t\t\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t\t\t\t$$renderer.push(`<span class=\"detail-mono detail-digest svelte-ocbovv\">${escape_html(container.Image.split(\"@\")[1]?.slice(0, 19))}...</span>`);\n\t\t\t\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t\t\t$$renderer.push(`<!--]--></span></div>`);\n\t\t\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t\t$$renderer.push(`<!--]--> <div class=\"detail-item svelte-ocbovv\"><span class=\"detail-label svelte-ocbovv\">State</span> <span class=\"detail-value svelte-ocbovv\"><span${attr_class(`badge badge-${stringify(containerStatusColor(container.State))}`, \"svelte-ocbovv\")}>${escape_html(container.State)}</span></span></div> <div class=\"detail-item svelte-ocbovv\"><span class=\"detail-label svelte-ocbovv\">Status</span> <span class=\"detail-value svelte-ocbovv\">${escape_html(container.Status)}</span></div> `);\n\t\t\t\t\t\tif (container.Health) {\n\t\t\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t\t\t$$renderer.push(`<div class=\"detail-item svelte-ocbovv\"><span class=\"detail-label svelte-ocbovv\">Health</span> <span class=\"detail-value svelte-ocbovv\"><span${attr_class(\"badge\", void 0, {\n\t\t\t\t\t\t\t\t\"badge-success\": container.Health === \"healthy\",\n\t\t\t\t\t\t\t\t\"badge-warning\": container.Health === \"starting\",\n\t\t\t\t\t\t\t\t\"badge-danger\": container.Health === \"unhealthy\",\n\t\t\t\t\t\t\t\t\"badge-idle\": ![\n\t\t\t\t\t\t\t\t\t\"healthy\",\n\t\t\t\t\t\t\t\t\t\"starting\",\n\t\t\t\t\t\t\t\t\t\"unhealthy\"\n\t\t\t\t\t\t\t\t].includes(container.Health)\n\t\t\t\t\t\t\t})}>${escape_html(container.Health)}</span></span></div>`);\n\t\t\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t\t$$renderer.push(`<!--]--> `);\n\t\t\t\t\t\tif (container.Ports) {\n\t\t\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t\t\t$$renderer.push(`<div class=\"detail-item svelte-ocbovv\"><span class=\"detail-label svelte-ocbovv\">Ports</span> <span class=\"detail-value detail-mono svelte-ocbovv\">${escape_html(container.Ports)}</span></div>`);\n\t\t\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t\t$$renderer.push(`<!--]--> `);\n\t\t\t\t\t\tif (container.RunningFor) {\n\t\t\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t\t\t$$renderer.push(`<div class=\"detail-item svelte-ocbovv\"><span class=\"detail-label svelte-ocbovv\">Uptime</span> <span class=\"detail-value svelte-ocbovv\">${escape_html(container.RunningFor)}</span></div>`);\n\t\t\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t\t$$renderer.push(`<!--]--> `);\n\t\t\t\t\t\tif (container.CreatedAt) {\n\t\t\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t\t\t$$renderer.push(`<div class=\"detail-item svelte-ocbovv\"><span class=\"detail-label svelte-ocbovv\">Created</span> <span class=\"detail-value svelte-ocbovv\">${escape_html(container.CreatedAt)}</span></div>`);\n\t\t\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t\t$$renderer.push(`<!--]--> `);\n\t\t\t\t\t\tif (container.Project) {\n\t\t\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t\t\t$$renderer.push(`<div class=\"detail-item svelte-ocbovv\"><span class=\"detail-label svelte-ocbovv\">Project</span> <span class=\"detail-value detail-mono svelte-ocbovv\">${escape_html(container.Project)}</span></div>`);\n\t\t\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t\t$$renderer.push(`<!--]--></div>`);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t\t$$renderer.push(`<div class=\"detail-not-created svelte-ocbovv\"><p class=\"svelte-ocbovv\">Container has not been created yet. Use <strong>Start</strong> to create and start it.</p></div>`);\n\t\t\t\t\t}\n\t\t\t\t\t$$renderer.push(`<!--]--> `);\n\t\t\t\t\tif (entryFeedback) {\n\t\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t\t$$renderer.push(`<div${attr_class(`action-feedback action-feedback--${stringify(entryFeedback.type)}`, \"svelte-ocbovv\")} role=\"status\">${escape_html(entryFeedback.message)}</div>`);\n\t\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t$$renderer.push(`<!--]--> `);\n\t\t\t\t\tif (entryConfirmAction) {\n\t\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t\t$$renderer.push(`<div class=\"confirm-bar svelte-ocbovv\" role=\"alert\"><span class=\"confirm-text svelte-ocbovv\">${escape_html(entryConfirmAction.charAt(0).toUpperCase() + entryConfirmAction.slice(1))} <strong>${escape_html(entry.service)}</strong>?</span> <div class=\"confirm-actions svelte-ocbovv\"><button class=\"btn btn-danger btn-sm\">Confirm</button> <button class=\"btn btn-secondary btn-sm\">Cancel</button></div></div>`);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t\t$$renderer.push(`<div class=\"detail-actions svelte-ocbovv\">`);\n\t\t\t\t\t\tif (isNotCreated) {\n\t\t\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t\t\t$$renderer.push(`<button class=\"btn btn-primary btn-sm\"${attr(\"disabled\", isAnyActionInFlight, true)}>`);\n\t\t\t\t\t\t\tif (entryActionInFlight === \"start\") {\n\t\t\t\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t\t\t\t$$renderer.push(`<span class=\"spinner-inline svelte-ocbovv\"></span>`);\n\t\t\t\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t\t\t$$renderer.push(`<!--]--> Start</button>`);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t\t\t$$renderer.push(`<button class=\"btn btn-secondary btn-sm\"${attr(\"disabled\", isAnyActionInFlight, true)}>`);\n\t\t\t\t\t\t\tif (entryActionInFlight === \"start\") {\n\t\t\t\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t\t\t\t$$renderer.push(`<span class=\"spinner-inline svelte-ocbovv\"></span>`);\n\t\t\t\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t\t\t$$renderer.push(`<!--]--> Start</button> <button class=\"btn btn-danger btn-sm\"${attr(\"disabled\", isAnyActionInFlight, true)}>`);\n\t\t\t\t\t\t\tif (entryActionInFlight === \"stop\") {\n\t\t\t\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t\t\t\t$$renderer.push(`<span class=\"spinner-inline svelte-ocbovv\"></span>`);\n\t\t\t\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t\t\t$$renderer.push(`<!--]--> Stop</button> <button class=\"btn btn-secondary btn-sm\"${attr(\"disabled\", isAnyActionInFlight, true)}>`);\n\t\t\t\t\t\t\tif (entryActionInFlight === \"restart\") {\n\t\t\t\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t\t\t\t$$renderer.push(`<span class=\"spinner-inline svelte-ocbovv\"></span>`);\n\t\t\t\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t\t\t$$renderer.push(`<!--]--> Restart</button>`);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$$renderer.push(`<!--]--></div>`);\n\t\t\t\t\t}\n\t\t\t\t\t$$renderer.push(`<!--]--></div>`);\n\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<!--]-->`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--></div>`);\n\t\t} else {\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<div class=\"empty-state svelte-ocbovv\"><svg aria-hidden=\"true\" width=\"40\" height=\"40\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"2\" y=\"2\" width=\"20\" height=\"8\" rx=\"2\" ry=\"2\"></rect><rect x=\"2\" y=\"14\" width=\"20\" height=\"8\" rx=\"2\" ry=\"2\"></rect><line x1=\"6\" y1=\"6\" x2=\"6.01\" y2=\"6\"></line><line x1=\"6\" y1=\"18\" x2=\"6.01\" y2=\"18\"></line></svg> `);\n\t\t\tif (loading) {\n\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t$$renderer.push(`<p>Loading container status...</p>`);\n\t\t\t} else if (error) {\n\t\t\t\t$$renderer.push(\"<!--[1-->\");\n\t\t\t\t$$renderer.push(`<p class=\"text-danger svelte-ocbovv\">${escape_html(error)}</p> <button class=\"btn btn-secondary btn-sm svelte-ocbovv\"${attr(\"disabled\", !tokenStored, true)}>Try Again</button>`);\n\t\t\t} else if (containerData && !containerData.dockerAvailable) {\n\t\t\t\t$$renderer.push(\"<!--[2-->\");\n\t\t\t\t$$renderer.push(`<p>Docker is not available on this host.</p> <p class=\"hint svelte-ocbovv\">Ensure Docker is running and the admin service has access to the Docker socket.</p>`);\n\t\t\t} else {\n\t\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<p>No containers found. Services may not be installed yet.</p>`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--></div>`);\n\t\t}\n\t\t$$renderer.push(`<!--]--></div></div>`);\n\t});\n}\n//#endregion\n//#region src/lib/components/AutomationsTab.svelte\nfunction AutomationsTab($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { data, loading, error, tokenStored, onRefresh } = $$props;\n\t\tlet hasAutomations = derived(() => data !== null && Array.isArray(data.automations) && data.automations.length > 0);\n\t\t/** Reverse map: cron expression -> friendly label */\n\t\tconst CRON_TO_LABEL = {\n\t\t\t\"* * * * *\": \"Every minute\",\n\t\t\t\"*/5 * * * *\": \"Every 5 minutes\",\n\t\t\t\"*/15 * * * *\": \"Every 15 minutes\",\n\t\t\t\"0 * * * *\": \"Every hour\",\n\t\t\t\"0 0 * * *\": \"Daily at midnight\",\n\t\t\t\"0 8 * * *\": \"Daily at 8 AM\",\n\t\t\t\"0 0 * * 0\": \"Weekly (Sunday midnight)\",\n\t\t\t\"0 3 * * 0\": \"Weekly (Sunday 3 AM)\",\n\t\t\t\"0 4 * * 0\": \"Weekly (Sunday 4 AM)\"\n\t\t};\n\t\tfunction formatSchedule(cron) {\n\t\t\tconst friendly = CRON_TO_LABEL[cron];\n\t\t\tif (friendly) return {\n\t\t\t\tlabel: friendly,\n\t\t\t\tcron\n\t\t\t};\n\t\t\treturn null;\n\t\t}\n\t\t$$renderer.push(`<div class=\"panel\" role=\"tabpanel\"><div class=\"panel-header\"><div><h2>Automations</h2> <p class=\"panel-subtitle\">Scheduled tasks read from <code>~/.openpalm/knowledge/tasks/</code>. Add or edit task files there to manage automations — changes take effect on refresh.</p></div> <div class=\"panel-header-actions\"><button class=\"btn btn-secondary btn-sm\"${attr(\"disabled\", !tokenStored, true)}>New task</button> <button class=\"btn btn-secondary btn-sm\"${attr(\"disabled\", loading || !tokenStored, true)}>`);\n\t\tif (loading) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<span class=\"spinner\"></span>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> Refresh</button></div></div> `);\n\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> <div class=\"panel-body\">`);\n\t\tif (hasAutomations() && data) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<div class=\"automation-list svelte-1uqcxu1\"><!--[-->`);\n\t\t\tconst each_array = ensure_array_like(data.automations);\n\t\t\tfor (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {\n\t\t\t\tlet automation = each_array[$$index];\n\t\t\t\tconst preset = formatSchedule(automation.schedule);\n\t\t\t\t$$renderer.push(`<div class=\"automation-card svelte-1uqcxu1\"><div class=\"automation-row svelte-1uqcxu1\"><div class=\"automation-main svelte-1uqcxu1\"><div class=\"automation-name svelte-1uqcxu1\">${escape_html(automation.name)} <span${attr_class(\"badge\", void 0, {\n\t\t\t\t\t\"badge-enabled\": automation.enabled,\n\t\t\t\t\t\"badge-disabled\": !automation.enabled\n\t\t\t\t})}>${escape_html(automation.enabled ? \"enabled\" : \"disabled\")}</span> <span class=\"badge badge-type svelte-1uqcxu1\">${escape_html(automation.action.type)}</span></div> `);\n\t\t\t\tif (automation.description) {\n\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t$$renderer.push(`<div class=\"automation-desc svelte-1uqcxu1\">${escape_html(automation.description)}</div>`);\n\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<!--]--></div> <div class=\"automation-meta svelte-1uqcxu1\">`);\n\t\t\t\tif (preset?.cron) {\n\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t$$renderer.push(`<span class=\"meta-item schedule-friendly svelte-1uqcxu1\">${escape_html(preset.label)}</span>`);\n\t\t\t\t} else {\n\t\t\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t$$renderer.push(`<span class=\"meta-item svelte-1uqcxu1\"><code class=\"svelte-1uqcxu1\">${escape_html(automation.schedule)}</code></span> <span class=\"meta-item meta-tz svelte-1uqcxu1\">${escape_html(automation.timezone)}</span>`);\n\t\t\t\t}\n\t\t\t\t$$renderer.push(`<!--]--></div></div> <div class=\"automation-footer svelte-1uqcxu1\"><span class=\"automation-file svelte-1uqcxu1\">${escape_html(automation.fileName)}</span> <div class=\"automation-actions svelte-1uqcxu1\"><button class=\"btn btn-ghost btn-sm\"${attr(\"disabled\", !tokenStored, true)}>Edit</button> <button class=\"btn btn-ghost btn-sm\"${attr(\"disabled\", !tokenStored, true)}${attr(\"aria-label\", `Delete ${stringify(automation.fileName)}`)}>Delete</button></div></div></div>`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--></div>`);\n\t\t} else {\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<div class=\"empty-state svelte-1uqcxu1\"><svg aria-hidden=\"true\" width=\"40\" height=\"40\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"12\" cy=\"12\" r=\"10\"></circle><polyline points=\"12 6 12 12 16 14\"></polyline></svg> `);\n\t\t\tif (loading) {\n\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t$$renderer.push(`<p>Loading automations...</p>`);\n\t\t\t} else if (error) {\n\t\t\t\t$$renderer.push(\"<!--[1-->\");\n\t\t\t\t$$renderer.push(`<p class=\"text-danger svelte-1uqcxu1\">${escape_html(error)}</p> <button class=\"btn btn-secondary btn-sm svelte-1uqcxu1\">Try Again</button>`);\n\t\t\t} else {\n\t\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<p>No automations configured.</p> <p class=\"empty-state-hint svelte-1uqcxu1\">Drop <code class=\"svelte-1uqcxu1\">.md</code> task files into <code class=\"svelte-1uqcxu1\">~/.openpalm/knowledge/tasks/</code>, or install via <code class=\"svelte-1uqcxu1\">akm</code>.</p>`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--></div>`);\n\t\t}\n\t\t$$renderer.push(`<!--]--></div></div>`);\n\t});\n}\n//#endregion\n//#region src/lib/components/providers/AddProviderSheet.svelte\nfunction AddProviderSheet($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { providers, onselect, oncustom, onclose } = $$props;\n\t\tlet query = \"\";\n\t\tconst filtered = derived(() => {\n\t\t\tconst q = query.trim().toLowerCase();\n\t\t\tif (!q) return providers;\n\t\t\treturn providers.filter((p) => p.name.toLowerCase().includes(q) || p.id.toLowerCase().includes(q));\n\t\t});\n\t\t$$renderer.push(`<div class=\"sheet-overlay\" role=\"presentation\"></div> <div class=\"sheet\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"add-provider-title\"><header class=\"sheet-header\"><h2 class=\"sheet-title\" id=\"add-provider-title\">Add provider</h2> <button type=\"button\" class=\"sheet-close\" aria-label=\"Close\">×</button></header> <div class=\"sheet-search svelte-1ykz2x6\"><input type=\"search\" class=\"form-input\" placeholder=\"Search providers…\"${attr(\"value\", query)} autocomplete=\"off\" autofocus=\"\"/></div> <div class=\"sheet-body sheet-body--list svelte-1ykz2x6\">`);\n\t\tif (filtered().length === 0 && query);\n\t\telse {\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<!--[-->`);\n\t\t\tconst each_array = ensure_array_like(filtered());\n\t\t\tfor (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {\n\t\t\t\tlet p = each_array[$$index];\n\t\t\t\t$$renderer.push(`<button type=\"button\" class=\"provider-pick svelte-1ykz2x6\"><span class=\"provider-name svelte-1ykz2x6\">${escape_html(p.name)}</span> `);\n\t\t\t\tif (p.modelCount > 0) {\n\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t$$renderer.push(`<span class=\"provider-meta svelte-1ykz2x6\">${escape_html(p.modelCount)} models</span>`);\n\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<!--]--></button>`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--> <button type=\"button\" class=\"provider-pick provider-pick--custom svelte-1ykz2x6\"><span class=\"provider-name svelte-1ykz2x6\">Custom provider</span> <span class=\"provider-meta svelte-1ykz2x6\">OpenAI-compatible</span></button>`);\n\t\t}\n\t\t$$renderer.push(`<!--]--></div></div>`);\n\t});\n}\n//#endregion\n//#region src/lib/components/providers/ConnectSheet.svelte\nfunction ConnectSheet($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { provider, onaction, onclose } = $$props;\n\t\tconst methods = derived(() => provider.authMethods.filter((m) => !m.label.toLowerCase().includes(\"headless\")));\n\t\tlet step = initialStepFor(provider);\n\t\tfunction initialStepFor(p) {\n\t\t\tconst list = p.authMethods.filter((m) => !m.label.toLowerCase().includes(\"headless\"));\n\t\t\tif (list.length === 0) return \"api-form\";\n\t\t\tif (list.length === 1) return list[0].type === \"oauth\" ? \"oauth-code\" : \"api-form\";\n\t\t\treturn \"method-picker\";\n\t\t}\n\t\tlet apiKey = \"\";\n\t\tlet authCode = \"\";\n\t\tlet submitting = false;\n\t\tlet abortController;\n\t\tfunction stopPolling() {\n\t\t\tabortController?.abort();\n\t\t\tabortController = void 0;\n\t\t}\n\t\tonDestroy(stopPolling);\n\t\tconst title = derived(() => {\n\t\t\tif (step === \"method-picker\") return `Connect ${provider.name}`;\n\t\t\treturn `Connect ${provider.name}`;\n\t\t});\n\t\tconst canGoBack = derived(() => step !== \"method-picker\" && methods().length > 1);\n\t\t$$renderer.push(`<div class=\"sheet-overlay\" role=\"presentation\"></div> <div class=\"sheet\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"connect-sheet-title\"><header class=\"sheet-header\">`);\n\t\tif (canGoBack()) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<button type=\"button\" class=\"sheet-header-back\" aria-label=\"Back\">←</button>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> <h2 class=\"sheet-title\" id=\"connect-sheet-title\">${escape_html(title())}</h2> <button type=\"button\" class=\"sheet-close\" aria-label=\"Close\">×</button></header> <div class=\"sheet-body\">`);\n\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> `);\n\t\tif (step === \"method-picker\") {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<p class=\"field-hint\">Select login method for ${escape_html(provider.name)}.</p> <div class=\"auth-method-group svelte-1bnolke\"><!--[-->`);\n\t\t\tconst each_array = ensure_array_like(methods());\n\t\t\tfor (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {\n\t\t\t\tlet method = each_array[$$index];\n\t\t\t\t$$renderer.push(`<button type=\"button\" class=\"auth-method-card svelte-1bnolke\"><span class=\"method-label svelte-1bnolke\">${escape_html(method.label)}</span> <span class=\"method-type svelte-1bnolke\">${escape_html(method.type === \"oauth\" ? \"Browser sign-in\" : \"API key\")}</span></button>`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--></div>`);\n\t\t} else if (step === \"api-form\") {\n\t\t\t$$renderer.push(\"<!--[1-->\");\n\t\t\t$$renderer.push(`<p class=\"field-hint\">Enter your ${escape_html(provider.name)} API key to connect your account and use ${escape_html(provider.name)} models in OpenCode.</p> <div class=\"form-field\"><label class=\"form-label\" for=\"connect-apikey\">${escape_html(provider.name)} API key</label> <input id=\"connect-apikey\" type=\"password\" class=\"form-input\" placeholder=\"API key\"${attr(\"value\", apiKey)}${attr(\"disabled\", submitting, true)} autocomplete=\"off\"/></div>`);\n\t\t} else if (step === \"oauth-code\") {\n\t\t\t$$renderer.push(\"<!--[2-->\");\n\t\t\t$$renderer.push(`<p class=\"field-hint\">Visit <a${attr(\"href\", \"#\")} target=\"_blank\" rel=\"noopener\" class=\"text-link\">this link</a> to collect your authorization code to connect your account and use ${escape_html(provider.name)} models in OpenCode.</p> <div class=\"form-field\"><label class=\"form-label\" for=\"connect-code\">${escape_html(\"OAuth\")} authorization code</label> <input id=\"connect-code\" type=\"text\" class=\"form-input\" placeholder=\"Authorization code\"${attr(\"value\", authCode)}${attr(\"disabled\", submitting, true)} autocomplete=\"off\"/></div>`);\n\t\t} else if (step === \"oauth-auto\") {\n\t\t\t$$renderer.push(\"<!--[3-->\");\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<!--]--> `);\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<!--]--> <p class=\"field-hint\"><span class=\"spinner\"></span> Waiting for sign-in to complete…</p>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--></div> `);\n\t\tif (step === \"api-form\" || step === \"oauth-code\") {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<footer class=\"sheet-footer\"><button type=\"button\" class=\"btn btn-primary\"${attr(\"disabled\", submitting, true)}>`);\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<!--]--> Continue</button></footer>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--></div>`);\n\t});\n}\n//#endregion\n//#region src/lib/components/providers/CustomProviderForm.svelte\nfunction CustomProviderForm($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { onaction, onclose } = $$props;\n\t\tlet id = \"\";\n\t\tlet displayName = \"\";\n\t\tlet baseURL = \"\";\n\t\tlet apiKey = \"\";\n\t\tlet submitting = false;\n\t\t$$renderer.push(`<div class=\"sheet-overlay\" role=\"presentation\"></div> <div class=\"sheet\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"custom-sheet-title\"><header class=\"sheet-header\"><h2 class=\"sheet-title\" id=\"custom-sheet-title\">Add custom provider</h2> <button type=\"button\" class=\"sheet-close\" aria-label=\"Close\">×</button></header> <div class=\"sheet-body\"><p class=\"field-hint\">Register an OpenAI-compatible provider by base URL. Models are auto-discovered on first connection.</p> `);\n\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> <div class=\"form-stack svelte-1btkq49\"><div class=\"form-field\"><label class=\"form-label\" for=\"custom-id\">Provider ID</label> <input id=\"custom-id\" type=\"text\" class=\"form-input\" placeholder=\"my-provider\"${attr(\"value\", id)}${attr(\"disabled\", submitting, true)} autocomplete=\"off\"/></div> <div class=\"form-field\"><label class=\"form-label\" for=\"custom-name\">Display name</label> <input id=\"custom-name\" type=\"text\" class=\"form-input\" placeholder=\"My Provider\"${attr(\"value\", displayName)}${attr(\"disabled\", submitting, true)} autocomplete=\"off\"/></div> <div class=\"form-field\"><label class=\"form-label\" for=\"custom-url\">Base URL</label> <input id=\"custom-url\" type=\"url\" class=\"form-input\" placeholder=\"https://example.com/v1\"${attr(\"value\", baseURL)}${attr(\"disabled\", submitting, true)} autocomplete=\"off\"/></div> <div class=\"form-field\"><label class=\"form-label\" for=\"custom-key\">API key <span class=\"optional svelte-1btkq49\">(optional)</span></label> <input id=\"custom-key\" type=\"password\" class=\"form-input\" placeholder=\"API key\"${attr(\"value\", apiKey)}${attr(\"disabled\", submitting, true)} autocomplete=\"off\"/></div></div></div> <footer class=\"sheet-footer\"><button type=\"button\" class=\"btn btn-primary\"${attr(\"disabled\", submitting, true)}>`);\n\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> Continue</button></footer></div>`);\n\t});\n}\n//#endregion\n//#region src/lib/components/providers/HostImportModal.svelte\nfunction HostImportModal($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { providerCount, credentialCount, configPath, authPath, onimported, oncancel } = $$props;\n\t\tlet importing = false;\n\t\t$$renderer.push(`<div class=\"sheet-overlay\" role=\"presentation\"></div> <div class=\"sheet\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"import-sheet-title\"><header class=\"sheet-header\"><h2 class=\"sheet-title\" id=\"import-sheet-title\">Import from host OpenCode</h2> <button type=\"button\" class=\"sheet-close\" aria-label=\"Close\">×</button></header> <div class=\"sheet-body\">`);\n\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<p class=\"field-hint\">We found an OpenCode installation on this host:</p> <ul class=\"result-list svelte-15y8pah\">`);\n\t\tif (configPath) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<li class=\"svelte-15y8pah\"><code class=\"svelte-15y8pah\">${escape_html(configPath)}</code> <span class=\"muted svelte-15y8pah\">(${escape_html(providerCount)} provider${escape_html(providerCount !== 1 ? \"s\" : \"\")})</span></li>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> `);\n\t\tif (authPath) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<li class=\"svelte-15y8pah\"><code class=\"svelte-15y8pah\">${escape_html(authPath)}</code> <span class=\"muted svelte-15y8pah\">(${escape_html(credentialCount)} credential${escape_html(credentialCount !== 1 ? \"s\" : \"\")})</span></li>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--></ul> <p class=\"field-hint\">Importing will copy provider settings and stored credentials into OP_HOME and\n\t\t\t\tactivate them in the running assistant. Existing OP_HOME credentials are\n\t\t\t\tpreserved on conflict.</p> `);\n\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]-->`);\n\t\t$$renderer.push(`<!--]--></div> <footer class=\"sheet-footer\">`);\n\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<button type=\"button\" class=\"btn btn-primary\"${attr(\"disabled\", importing, true)}>`);\n\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> Import</button>`);\n\t\t$$renderer.push(`<!--]--></footer></div>`);\n\t});\n}\n//#endregion\n//#region src/lib/components/ProvidersPanel.svelte\nfunction ProvidersPanel($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet pageState = {\n\t\t\tavailable: false,\n\t\t\tproviders: [],\n\t\t\tdefaultModels: {},\n\t\t\tallowlistActive: false,\n\t\t\tproviderCountLabel: \"\",\n\t\t\tstats: {\n\t\t\t\ttotal: 0,\n\t\t\t\tconnected: 0,\n\t\t\t\tconfigured: 0,\n\t\t\t\tdisabled: 0\n\t\t\t}\n\t\t};\n\t\tlet loading = true;\n\t\tasync function load() {\n\t\t\tloading = true;\n\t\t\ttry {\n\t\t\t\tconst res = await fetch(\"/admin/providers\", { headers: buildHeaders() });\n\t\t\t\tif (res.ok) {\n\t\t\t\t\tpageState = await res.json();\n\t\t\t\t\tmainModelChoice = pageState.currentModel ?? \"\";\n\t\t\t\t\tsmallModelChoice = pageState.currentSmallModel ?? \"\";\n\t\t\t\t}\n\t\t\t} catch {} finally {\n\t\t\t\tloading = false;\n\t\t\t}\n\t\t}\n\t\tconst connected = derived(() => pageState.providers.filter((p) => p.connected));\n\t\tconst unconnected = derived(() => pageState.providers.filter((p) => !p.connected));\n\t\tlet mainModelChoice = \"\";\n\t\tlet smallModelChoice = \"\";\n\t\tlet modelSaveError = null;\n\t\tasync function saveModel(target, value) {\n\t\t\tmodelSaveError = null;\n\t\t\ttry {\n\t\t\t\tconst res = await fetch(\"/admin/opencode/model\", {\n\t\t\t\t\tmethod: \"POST\",\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t...buildHeaders(),\n\t\t\t\t\t\t\"content-type\": \"application/json\"\n\t\t\t\t\t},\n\t\t\t\t\tbody: JSON.stringify({ [target]: value || null })\n\t\t\t\t});\n\t\t\t\tif (!res.ok) modelSaveError = (await res.json().catch(() => ({}))).message ?? `Save failed (${res.status})`;\n\t\t\t} catch (err) {\n\t\t\t\tmodelSaveError = err instanceof Error ? err.message : \"Request failed.\";\n\t\t\t}\n\t\t}\n\t\tlet showAddSheet = false;\n\t\tlet connectProvider = null;\n\t\tlet showCustomForm = false;\n\t\tlet disconnectingId = null;\n\t\tconst BADGE_LABEL = {\n\t\t\tenv: \"env\",\n\t\t\tapi: \"api key\",\n\t\t\toauth: \"oauth\",\n\t\t\tconfig: \"config\",\n\t\t\tcustom: \"custom\"\n\t\t};\n\t\tfunction authBadge(p) {\n\t\t\treturn p.credentialType ? BADGE_LABEL[p.credentialType] : \"\";\n\t\t}\n\t\tfunction pickProvider(p) {\n\t\t\tshowAddSheet = false;\n\t\t\tconnectProvider = p;\n\t\t}\n\t\tfunction pickCustom() {\n\t\t\tshowAddSheet = false;\n\t\t\tshowCustomForm = true;\n\t\t}\n\t\tfunction handleAfterAction() {\n\t\t\tconnectProvider = null;\n\t\t\tshowCustomForm = false;\n\t\t\tload();\n\t\t}\n\t\tlet hostStatus = null;\n\t\tlet showImportSheet = false;\n\t\tasync function loadHostStatus() {\n\t\t\ttry {\n\t\t\t\tconst res = await fetch(\"/admin/providers/host-status\", { headers: buildHeaders() });\n\t\t\t\tif (res.ok) hostStatus = await res.json();\n\t\t\t} catch {}\n\t\t}\n\t\tfunction handleImportDone() {\n\t\t\tshowImportSheet = false;\n\t\t\tload();\n\t\t\tloadHostStatus();\n\t\t}\n\t\t$$renderer.push(`<div class=\"panel\" role=\"tabpanel\"><div class=\"panel-header\"><div><h2>Connections</h2> <p class=\"panel-subtitle\">Sign in to AI providers. Credentials are stored in OpenCode's auth.json.</p></div> <div class=\"panel-header-actions\"><button type=\"button\" class=\"btn btn-secondary btn-sm\"${attr(\"disabled\", !hostStatus?.detected, true)}${attr(\"title\", hostStatus?.detected ? `Import ${hostStatus.providerCount} providers from host OpenCode` : \"No host OpenCode installation detected\")}>Import from host</button> <button type=\"button\" class=\"btn btn-primary btn-sm\">Add provider</button> <button class=\"btn btn-secondary btn-sm\"${attr(\"disabled\", loading, true)}>`);\n\t\tif (loading) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<span class=\"spinner\"></span>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> Refresh</button></div></div> `);\n\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> <div class=\"panel-body panel-body--flush\">`);\n\t\tif (!pageState.available && !loading) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<div class=\"empty-state\"><p>The assistant (OpenCode server) is not reachable. Start the assistant container and refresh.</p></div>`);\n\t\t} else if (loading && pageState.providers.length === 0) {\n\t\t\t$$renderer.push(\"<!--[1-->\");\n\t\t\t$$renderer.push(`<div class=\"loading-state\"><span class=\"spinner\"></span> <span>Loading providers…</span></div>`);\n\t\t} else if (connected().length === 0) {\n\t\t\t$$renderer.push(\"<!--[2-->\");\n\t\t\t$$renderer.push(`<div class=\"empty-state\"><p>No providers connected yet.</p> <p class=\"empty-hint svelte-1tqmczc\">Click <strong>Add provider</strong> above to sign in to one.</p></div>`);\n\t\t} else {\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<div class=\"model-defaults svelte-1tqmczc\"><div class=\"model-field svelte-1tqmczc\"><label class=\"form-label\" for=\"default-model\">Default model</label> `);\n\t\t\t$$renderer.select({\n\t\t\t\tid: \"default-model\",\n\t\t\t\tclass: \"form-input\",\n\t\t\t\tvalue: mainModelChoice,\n\t\t\t\tonchange: (e) => void saveModel(\"model\", e.currentTarget.value)\n\t\t\t}, ($$renderer) => {\n\t\t\t\t$$renderer.option({ value: \"\" }, ($$renderer) => {\n\t\t\t\t\t$$renderer.push(`— OpenCode default —`);\n\t\t\t\t});\n\t\t\t\t$$renderer.push(`<!--[-->`);\n\t\t\t\tconst each_array = ensure_array_like(connected());\n\t\t\t\tfor (let $$index_1 = 0, $$length = each_array.length; $$index_1 < $$length; $$index_1++) {\n\t\t\t\t\tlet p = each_array[$$index_1];\n\t\t\t\t\tif (p.models.length > 0) {\n\t\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t\t$$renderer.push(`<optgroup${attr(\"label\", p.name)}><!--[-->`);\n\t\t\t\t\t\tconst each_array_1 = ensure_array_like(p.models);\n\t\t\t\t\t\tfor (let $$index = 0, $$length = each_array_1.length; $$index < $$length; $$index++) {\n\t\t\t\t\t\t\tlet m = each_array_1[$$index];\n\t\t\t\t\t\t\t$$renderer.option({ value: `${stringify(p.id)}/${stringify(m.id)}` }, ($$renderer) => {\n\t\t\t\t\t\t\t\t$$renderer.push(`${escape_html(m.name || m.id)}`);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$$renderer.push(`<!--]--></optgroup>`);\n\t\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t$$renderer.push(`<!--]-->`);\n\t\t\t\t}\n\t\t\t\t$$renderer.push(`<!--]-->`);\n\t\t\t});\n\t\t\t$$renderer.push(`</div> <div class=\"model-field svelte-1tqmczc\"><label class=\"form-label\" for=\"small-model\">Small model</label> `);\n\t\t\t$$renderer.select({\n\t\t\t\tid: \"small-model\",\n\t\t\t\tclass: \"form-input\",\n\t\t\t\tvalue: smallModelChoice,\n\t\t\t\tonchange: (e) => void saveModel(\"small_model\", e.currentTarget.value)\n\t\t\t}, ($$renderer) => {\n\t\t\t\t$$renderer.option({ value: \"\" }, ($$renderer) => {\n\t\t\t\t\t$$renderer.push(`— OpenCode default —`);\n\t\t\t\t});\n\t\t\t\t$$renderer.push(`<!--[-->`);\n\t\t\t\tconst each_array_2 = ensure_array_like(connected());\n\t\t\t\tfor (let $$index_3 = 0, $$length = each_array_2.length; $$index_3 < $$length; $$index_3++) {\n\t\t\t\t\tlet p = each_array_2[$$index_3];\n\t\t\t\t\tif (p.models.length > 0) {\n\t\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t\t$$renderer.push(`<optgroup${attr(\"label\", p.name)}><!--[-->`);\n\t\t\t\t\t\tconst each_array_3 = ensure_array_like(p.models);\n\t\t\t\t\t\tfor (let $$index_2 = 0, $$length = each_array_3.length; $$index_2 < $$length; $$index_2++) {\n\t\t\t\t\t\t\tlet m = each_array_3[$$index_2];\n\t\t\t\t\t\t\t$$renderer.option({ value: `${stringify(p.id)}/${stringify(m.id)}` }, ($$renderer) => {\n\t\t\t\t\t\t\t\t$$renderer.push(`${escape_html(m.name || m.id)}`);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$$renderer.push(`<!--]--></optgroup>`);\n\t\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t$$renderer.push(`<!--]-->`);\n\t\t\t\t}\n\t\t\t\t$$renderer.push(`<!--]-->`);\n\t\t\t});\n\t\t\t$$renderer.push(`</div> `);\n\t\t\tif (modelSaveError) {\n\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t$$renderer.push(`<p class=\"model-error svelte-1tqmczc\">${escape_html(modelSaveError)}</p>`);\n\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<!--]--></div> <!--[-->`);\n\t\t\tconst each_array_4 = ensure_array_like(connected());\n\t\t\tfor (let $$index_4 = 0, $$length = each_array_4.length; $$index_4 < $$length; $$index_4++) {\n\t\t\t\tlet p = each_array_4[$$index_4];\n\t\t\t\t$$renderer.push(`<div class=\"provider-row svelte-1tqmczc\"><div class=\"provider-id svelte-1tqmczc\"><span class=\"provider-name svelte-1tqmczc\">${escape_html(p.name)}</span> <span class=\"badge badge-connected\">${escape_html(authBadge(p))}</span></div> <button class=\"btn btn-outline btn-sm\"${attr(\"disabled\", disconnectingId === p.id, true)}>`);\n\t\t\t\tif (disconnectingId === p.id) {\n\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t$$renderer.push(`<span class=\"spinner\"></span>`);\n\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<!--]--> Disconnect</button></div>`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]-->`);\n\t\t}\n\t\t$$renderer.push(`<!--]--></div></div> `);\n\t\tif (showAddSheet) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\tAddProviderSheet($$renderer, {\n\t\t\t\tproviders: unconnected(),\n\t\t\t\tonselect: pickProvider,\n\t\t\t\toncustom: pickCustom,\n\t\t\t\tonclose: () => {\n\t\t\t\t\tshowAddSheet = false;\n\t\t\t\t}\n\t\t\t});\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> `);\n\t\tif (connectProvider) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\tConnectSheet($$renderer, {\n\t\t\t\tprovider: connectProvider,\n\t\t\t\tonaction: handleAfterAction,\n\t\t\t\tonclose: () => {\n\t\t\t\t\tconnectProvider = null;\n\t\t\t\t}\n\t\t\t});\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> `);\n\t\tif (showCustomForm) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\tCustomProviderForm($$renderer, {\n\t\t\t\tonaction: handleAfterAction,\n\t\t\t\tonclose: () => {\n\t\t\t\t\tshowCustomForm = false;\n\t\t\t\t}\n\t\t\t});\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> `);\n\t\tif (showImportSheet && hostStatus) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\tHostImportModal($$renderer, {\n\t\t\t\tproviderCount: hostStatus.providerCount,\n\t\t\t\tcredentialCount: hostStatus.credentialCount,\n\t\t\t\tconfigPath: hostStatus.configPath,\n\t\t\t\tauthPath: hostStatus.authPath,\n\t\t\t\tonimported: handleImportDone,\n\t\t\t\toncancel: () => {\n\t\t\t\t\tshowImportSheet = false;\n\t\t\t\t}\n\t\t\t});\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]-->`);\n\t});\n}\n//#endregion\n//#region src/lib/components/LogsTab.svelte\nfunction LogsTab($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { tokenStored, services } = $$props;\n\t\tlet logs = \"\";\n\t\tlet logsLoaded = false;\n\t\tlet loading = false;\n\t\tlet error = \"\";\n\t\tlet selectedService = \"\";\n\t\tlet tailLines = 100;\n\t\tlet autoScroll = true;\n\t\tasync function loadLogs() {\n\t\t\tloading = true;\n\t\t\terror = \"\";\n\t\t\ttry {\n\t\t\t\tconst result = await fetchServiceLogs({\n\t\t\t\t\tservice: void 0,\n\t\t\t\t\ttail: tailLines\n\t\t\t\t});\n\t\t\t\tif (result.ok) {\n\t\t\t\t\tlogs = result.logs;\n\t\t\t\t\tlogsLoaded = true;\n\t\t\t\t} else error = result.error ?? \"Failed to fetch logs.\";\n\t\t\t} catch (e) {\n\t\t\t\terror = e instanceof Error ? e.message : \"Failed to fetch logs.\";\n\t\t\t} finally {\n\t\t\t\tloading = false;\n\t\t\t}\n\t\t}\n\t\t$$renderer.push(`<div class=\"panel\" role=\"tabpanel\"><div class=\"panel-header\"><h2>Service Logs</h2> <div class=\"panel-header-actions\"><button class=\"btn btn-secondary btn-sm\"${attr(\"disabled\", !logs, true)}>${escape_html(\"Copy\")}</button> <button class=\"btn btn-secondary btn-sm\"${attr(\"disabled\", loading || !tokenStored, true)}>`);\n\t\tif (loading) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<span class=\"spinner\"></span>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> Refresh</button></div></div> <div class=\"controls svelte-s1vlr2\"><div class=\"control-group svelte-s1vlr2\"><label for=\"log-service\" class=\"control-label svelte-s1vlr2\">Service</label> `);\n\t\t$$renderer.select({\n\t\t\tid: \"log-service\",\n\t\t\tclass: \"control-input\",\n\t\t\tvalue: selectedService,\n\t\t\tonchange: () => void loadLogs()\n\t\t}, ($$renderer) => {\n\t\t\t$$renderer.option({ value: \"\" }, ($$renderer) => {\n\t\t\t\t$$renderer.push(`All services`);\n\t\t\t});\n\t\t\t$$renderer.push(`<!--[-->`);\n\t\t\tconst each_array = ensure_array_like(services);\n\t\t\tfor (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {\n\t\t\t\tlet svc = each_array[$$index];\n\t\t\t\t$$renderer.option({ value: svc }, ($$renderer) => {\n\t\t\t\t\t$$renderer.push(`${escape_html(svc)}`);\n\t\t\t\t});\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]-->`);\n\t\t}, \"svelte-s1vlr2\");\n\t\t$$renderer.push(`</div> <div class=\"control-group svelte-s1vlr2\"><label for=\"log-tail\" class=\"control-label svelte-s1vlr2\">Lines</label> `);\n\t\t$$renderer.select({\n\t\t\tid: \"log-tail\",\n\t\t\tclass: \"control-input\",\n\t\t\tvalue: tailLines,\n\t\t\tonchange: () => void loadLogs()\n\t\t}, ($$renderer) => {\n\t\t\t$$renderer.option({ value: 50 }, ($$renderer) => {\n\t\t\t\t$$renderer.push(`50`);\n\t\t\t});\n\t\t\t$$renderer.option({ value: 100 }, ($$renderer) => {\n\t\t\t\t$$renderer.push(`100`);\n\t\t\t});\n\t\t\t$$renderer.option({ value: 250 }, ($$renderer) => {\n\t\t\t\t$$renderer.push(`250`);\n\t\t\t});\n\t\t\t$$renderer.option({ value: 500 }, ($$renderer) => {\n\t\t\t\t$$renderer.push(`500`);\n\t\t\t});\n\t\t\t$$renderer.option({ value: 1e3 }, ($$renderer) => {\n\t\t\t\t$$renderer.push(`1000`);\n\t\t\t});\n\t\t}, \"svelte-s1vlr2\");\n\t\t$$renderer.push(`</div> <div class=\"control-group control-group--toggle svelte-s1vlr2\"><label class=\"toggle-label svelte-s1vlr2\"><input type=\"checkbox\"${attr(\"checked\", autoScroll, true)} class=\"svelte-s1vlr2\"/> <span>Auto-scroll</span></label></div> <button class=\"btn btn-primary btn-sm\"${attr(\"disabled\", loading || !tokenStored, true)}>`);\n\t\tif (loading) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<span class=\"spinner\"></span>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> Load Logs</button></div> <div class=\"panel-body panel-body--flush\">`);\n\t\tif (error) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<div class=\"error-banner svelte-s1vlr2\"><span>${escape_html(error)}</span></div>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> `);\n\t\tif (logs) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<pre class=\"log-output svelte-s1vlr2\">${escape_html(logs)}</pre>`);\n\t\t} else if (!loading) {\n\t\t\t$$renderer.push(\"<!--[1-->\");\n\t\t\t$$renderer.push(`<div class=\"empty-state\"><svg aria-hidden=\"true\" width=\"40\" height=\"40\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"></path><polyline points=\"14 2 14 8 20 8\"></polyline><line x1=\"16\" y1=\"13\" x2=\"8\" y2=\"13\"></line><line x1=\"16\" y1=\"17\" x2=\"8\" y2=\"17\"></line></svg> `);\n\t\t\tif (logsLoaded) {\n\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t$$renderer.push(`<p>No log output — the container may not be running or has no recent output.</p>`);\n\t\t\t} else {\n\t\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<p>Select a service and click \"Load Logs\" to view container output.</p>`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--></div>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--></div></div>`);\n\t});\n}\n//#endregion\n//#region src/lib/components/SecretsTab.svelte\nfunction SecretsTab($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { tokenStored } = $$props;\n\t\tlet busy = false;\n\t\tlet files = [];\n\t\tlet selected = null;\n\t\tlet newName = \"\";\n\t\tfunction fmtSize(n) {\n\t\t\tif (n < 1024) return `${n} B`;\n\t\t\treturn `${(n / 1024).toFixed(1)} KB`;\n\t\t}\n\t\t$$renderer.push(`<div class=\"panel\" role=\"tabpanel\"><div class=\"panel-header svelte-1levcw0\"><h2>Secrets</h2> <div class=\"panel-header-actions\"><button class=\"btn btn-secondary btn-sm\"${attr(\"disabled\", !tokenStored, true)}>`);\n\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> Refresh</button></div></div> <p class=\"section-note svelte-1levcw0\">Files in the assistant's secrets directory (<code>/stash/secrets</code> → <code>knowledge/secrets</code>). These are mounted into the assistant and granted to\n services via Docker secrets. Files are stored 0600. Editing here changes the live\n file — restart affected services to pick up changes.</p> `);\n\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> <div class=\"secrets-layout svelte-1levcw0\"><div class=\"secrets-list svelte-1levcw0\">`);\n\t\tif (files.length === 0 && true) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<p class=\"empty-note svelte-1levcw0\">No secret files found.</p>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> <!--[-->`);\n\t\tconst each_array = ensure_array_like(files);\n\t\tfor (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {\n\t\t\tlet f = each_array[$$index];\n\t\t\t$$renderer.push(`<div${attr_class(`secret-row ${selected === f.name ? \"active\" : \"\"}`, \"svelte-1levcw0\")}><button class=\"secret-name svelte-1levcw0\"${attr(\"disabled\", busy, true)}${attr(\"aria-label\", `Edit ${stringify(f.name)}`)}><span class=\"mono svelte-1levcw0\">${escape_html(f.name)}</span> <span class=\"secret-size svelte-1levcw0\">${escape_html(fmtSize(f.size))}</span></button> <button class=\"btn btn-ghost btn-sm\"${attr(\"disabled\", busy, true)}${attr(\"aria-label\", `Delete ${stringify(f.name)}`)}>✕</button></div>`);\n\t\t}\n\t\t$$renderer.push(`<!--]--> <div class=\"new-secret svelte-1levcw0\"><input class=\"control-input\" type=\"text\" spellcheck=\"false\" placeholder=\"new-file-name\"${attr(\"value\", newName)}${attr(\"disabled\", busy, true)}/> <button class=\"btn btn-secondary btn-sm\"${attr(\"disabled\", !newName.trim(), true)}>Add</button></div></div> <div class=\"secrets-editor svelte-1levcw0\">`);\n\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<p class=\"empty-note svelte-1levcw0\">Select a file to view or edit its contents.</p>`);\n\t\t$$renderer.push(`<!--]--></div></div></div>`);\n\t});\n}\n//#endregion\n//#region src/lib/components/AkmTab.svelte\nfunction AkmTab($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { tokenStored } = $$props;\n\t\tlet saving = false;\n\t\tlet llmProfiles = [];\n\t\tlet defaultLlmProfile = \"\";\n\t\tlet agentProfiles = [];\n\t\tlet defaultAgentProfile = \"\";\n\t\tlet improveProfiles = [];\n\t\tlet defaultImproveProfile = \"\";\n\t\tlet embEndpoint = \"\";\n\t\tlet embModel = \"\";\n\t\tlet embProvider = \"\";\n\t\tlet embApiKey = \"\";\n\t\tlet embDimension = 1536;\n\t\tlet embLocalModel = \"\";\n\t\tlet embBatchSize = \"\";\n\t\tlet embChunkSize = \"\";\n\t\tlet embContextLength = \"\";\n\t\tlet embOllamaNumCtx = \"\";\n\t\tlet semanticSearchMode = \"auto\";\n\t\tlet outputFormat = \"json\";\n\t\tlet outputDetail = \"brief\";\n\t\tlet imHalfLife = \"\";\n\t\tlet imFeedbackBoost = \"\";\n\t\tlet imEventRetention = \"\";\n\t\tlet searchMinScore = \"\";\n\t\tlet searchCurateRerank = \"\";\n\t\tlet fbRequireReason = \"\";\n\t\tlet fbFailureModes = \"\";\n\t\tlet indexJson = \"\";\n\t\tlet llmProfileNames = derived(() => llmProfiles.map((p) => p.name).filter((n) => n));\n\t\tnew Set([\n\t\t\t\"enabled\",\n\t\t\t\"mode\",\n\t\t\t\"profile\",\n\t\t\t\"timeoutMs\",\n\t\t\t\"allowedTypes\",\n\t\t\t\"qualityGate\",\n\t\t\t\"contradictionDetection\",\n\t\t\t\"defaultSince\",\n\t\t\t\"maxTotalChars\",\n\t\t\t\"maxChunkSize\",\n\t\t\t\"applyMode\",\n\t\t\t\"policy\",\n\t\t\t\"maxAcceptsPerRun\",\n\t\t\t\"maxDiffLines\",\n\t\t\t\"rejectEmpty\",\n\t\t\t\"judgment\"\n\t\t]);\n\t\t$$renderer.push(`<datalist id=\"llm-profiles-list\"><!--[-->`);\n\t\tconst each_array = ensure_array_like(llmProfileNames());\n\t\tfor (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {\n\t\t\tlet name = each_array[$$index];\n\t\t\t$$renderer.option({ value: name }, ($$renderer) => {});\n\t\t}\n\t\t$$renderer.push(`<!--]--></datalist> <div class=\"panel\" role=\"tabpanel\"><div class=\"panel-header svelte-1844cb2\"><h2 class=\"svelte-1844cb2\">Knowledge</h2> <div class=\"panel-header-actions svelte-1844cb2\"><button class=\"btn btn-secondary btn-sm\"${attr(\"disabled\", !tokenStored, true)}>`);\n\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> Refresh</button> <button class=\"btn btn-primary btn-sm\"${attr(\"disabled\", !tokenStored, true)}>`);\n\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> Save</button></div></div> `);\n\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> <div class=\"panel-body svelte-1844cb2\"><section class=\"config-section svelte-1844cb2\"><h3 class=\"section-title svelte-1844cb2\">LLM Profiles</h3> <p class=\"section-note svelte-1844cb2\">Named connection configs your improve pipeline can reference. Add one per LLM service you want AKM to use.</p> `);\n\t\tif (llmProfiles.length === 0) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<p class=\"empty-note svelte-1844cb2\">No LLM profiles configured — add one below.</p>`);\n\t\t} else {\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<div class=\"profile-list svelte-1844cb2\"><!--[-->`);\n\t\t\tconst each_array_1 = ensure_array_like(llmProfiles);\n\t\t\tfor (let $$index_1 = 0, $$length = each_array_1.length; $$index_1 < $$length; $$index_1++) {\n\t\t\t\tlet p = each_array_1[$$index_1];\n\t\t\t\t$$renderer.push(`<div class=\"profile-row svelte-1844cb2\"><span class=\"profile-row-name svelte-1844cb2\">${escape_html(p.name || \"(unnamed)\")}</span> `);\n\t\t\t\tif (defaultLlmProfile === p.name && p.name) {\n\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t$$renderer.push(`<span class=\"badge badge--default svelte-1844cb2\">Default</span>`);\n\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<!--]--> <div class=\"profile-row-actions svelte-1844cb2\">`);\n\t\t\t\tif (p.name && defaultLlmProfile !== p.name) {\n\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t$$renderer.push(`<button class=\"btn btn-sm\"${attr(\"disabled\", saving, true)}>Set Default</button>`);\n\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<!--]--> <button class=\"btn btn-sm\"${attr(\"disabled\", saving, true)}>Edit</button> <button class=\"btn btn-sm btn-danger\"${attr(\"disabled\", saving, true)}>Remove</button></div></div>`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--></div>`);\n\t\t}\n\t\t$$renderer.push(`<!--]--> <button class=\"btn btn-secondary btn-sm\"${attr(\"disabled\", saving, true)}>+ Add LLM Profile</button></section> <section class=\"config-section svelte-1844cb2\"><h3 class=\"section-title svelte-1844cb2\">Agent Profiles</h3> <p class=\"section-note svelte-1844cb2\">Named runner configs for pipeline steps that spawn a subprocess (opencode or claude CLI).</p> `);\n\t\tif (agentProfiles.length === 0) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<p class=\"empty-note svelte-1844cb2\">No agent profiles defined.</p>`);\n\t\t} else {\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<div class=\"profile-list svelte-1844cb2\"><!--[-->`);\n\t\t\tconst each_array_2 = ensure_array_like(agentProfiles);\n\t\t\tfor (let $$index_2 = 0, $$length = each_array_2.length; $$index_2 < $$length; $$index_2++) {\n\t\t\t\tlet p = each_array_2[$$index_2];\n\t\t\t\t$$renderer.push(`<div class=\"profile-row svelte-1844cb2\"><span class=\"profile-row-name svelte-1844cb2\">${escape_html(p.name || \"(unnamed)\")}</span> <span class=\"badge svelte-1844cb2\">${escape_html(p.platform)}</span> `);\n\t\t\t\tif (defaultAgentProfile === p.name && p.name) {\n\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t$$renderer.push(`<span class=\"badge badge--default svelte-1844cb2\">Default</span>`);\n\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<!--]--> <div class=\"profile-row-actions svelte-1844cb2\">`);\n\t\t\t\tif (p.name && defaultAgentProfile !== p.name) {\n\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t$$renderer.push(`<button class=\"btn btn-sm\"${attr(\"disabled\", saving, true)}>Set Default</button>`);\n\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<!--]--> <button class=\"btn btn-sm\"${attr(\"disabled\", saving, true)}>Edit</button> <button class=\"btn btn-sm btn-danger\"${attr(\"disabled\", saving, true)}>Remove</button></div></div>`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--></div>`);\n\t\t}\n\t\t$$renderer.push(`<!--]--> <button class=\"btn btn-secondary btn-sm\"${attr(\"disabled\", saving, true)}>+ Add Agent Profile</button></section> <section class=\"config-section svelte-1844cb2\"><h3 class=\"section-title svelte-1844cb2\">Improve Profiles</h3> <p class=\"section-note svelte-1844cb2\">Named configurations for <code>akm improve</code>. Each profile defines which processes run and which LLM/agent they use.</p> `);\n\t\tif (improveProfiles.length === 0) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<p class=\"empty-note svelte-1844cb2\">No improve profiles defined — add one below.</p>`);\n\t\t} else {\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<div class=\"profile-list svelte-1844cb2\"><!--[-->`);\n\t\t\tconst each_array_3 = ensure_array_like(improveProfiles);\n\t\t\tfor (let $$index_3 = 0, $$length = each_array_3.length; $$index_3 < $$length; $$index_3++) {\n\t\t\t\tlet ip = each_array_3[$$index_3];\n\t\t\t\t$$renderer.push(`<div class=\"profile-row svelte-1844cb2\"><span class=\"profile-row-name svelte-1844cb2\">${escape_html(ip.name || \"(unnamed)\")}</span> `);\n\t\t\t\tif (ip.description) {\n\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t$$renderer.push(`<span class=\"profile-row-desc svelte-1844cb2\">${escape_html(ip.description)}</span>`);\n\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<!--]--> `);\n\t\t\t\tif (defaultImproveProfile === ip.name && ip.name) {\n\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t$$renderer.push(`<span class=\"badge badge--default svelte-1844cb2\">Default</span>`);\n\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<!--]--> <div class=\"profile-row-actions svelte-1844cb2\">`);\n\t\t\t\tif (ip.name && defaultImproveProfile !== ip.name) {\n\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t$$renderer.push(`<button class=\"btn btn-sm\"${attr(\"disabled\", saving, true)}>Set Default</button>`);\n\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<!--]--> <button class=\"btn btn-sm\"${attr(\"disabled\", saving, true)}>Edit</button> <button class=\"btn btn-sm btn-danger\"${attr(\"disabled\", saving, true)}>Remove</button></div></div>`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--></div>`);\n\t\t}\n\t\t$$renderer.push(`<!--]--> <button class=\"btn btn-secondary btn-sm\"${attr(\"disabled\", saving, true)}>+ Add Improve Profile</button></section> <section class=\"config-section svelte-1844cb2\"><h3 class=\"section-title svelte-1844cb2\">Embedding Connection</h3> <p class=\"section-note svelte-1844cb2\">Vector embedding provider for semantic search. Leave Endpoint and Model blank to use built-in local embeddings.</p> <div class=\"controls controls--grid svelte-1844cb2\"><div class=\"control-group control-group--wide svelte-1844cb2\"><label class=\"control-label svelte-1844cb2\" for=\"embEndpoint\">Endpoint</label> <input id=\"embEndpoint\" class=\"control-input svelte-1844cb2\" type=\"url\" spellcheck=\"false\" placeholder=\"https://api.openai.com/v1/embeddings\"${attr(\"value\", embEndpoint)}${attr(\"disabled\", saving, true)}/></div> <div class=\"control-group svelte-1844cb2\"><label class=\"control-label svelte-1844cb2\" for=\"embModel\">Model</label> <input id=\"embModel\" class=\"control-input svelte-1844cb2\" type=\"text\" spellcheck=\"false\" placeholder=\"text-embedding-3-small\"${attr(\"value\", embModel)}${attr(\"disabled\", saving, true)}/></div> <div class=\"control-group svelte-1844cb2\"><label class=\"control-label svelte-1844cb2\" for=\"embProvider\">Provider (label)</label> <input id=\"embProvider\" class=\"control-input svelte-1844cb2\" type=\"text\" spellcheck=\"false\" placeholder=\"openai\"${attr(\"value\", embProvider)}${attr(\"disabled\", saving, true)}/></div> <div class=\"control-group svelte-1844cb2\"><label class=\"control-label svelte-1844cb2\" for=\"embApiKey\">API Key</label> <div class=\"input-with-toggle svelte-1844cb2\"><input id=\"embApiKey\" class=\"control-input svelte-1844cb2\"${attr(\"type\", \"password\")} spellcheck=\"false\" placeholder=\"\\${AKM_EMBED_API_KEY}\"${attr(\"value\", embApiKey)}${attr(\"disabled\", saving, true)}/> <button type=\"button\" class=\"btn-icon svelte-1844cb2\"${attr(\"aria-label\", \"Show API key\")}>${escape_html(\"Show\")}</button></div></div> <div class=\"control-group svelte-1844cb2\"><label class=\"control-label svelte-1844cb2\" for=\"embDimension\">Dimensions</label> <input id=\"embDimension\" class=\"control-input control-input--narrow svelte-1844cb2\" type=\"number\" min=\"1\"${attr(\"value\", embDimension)}${attr(\"disabled\", saving, true)}/></div> <div class=\"control-group svelte-1844cb2\"><label class=\"control-label svelte-1844cb2\" for=\"embLocalModel\">Local model</label> <input id=\"embLocalModel\" class=\"control-input svelte-1844cb2\" type=\"text\" spellcheck=\"false\" placeholder=\"Xenova/bge-small-en-v1.5\"${attr(\"value\", embLocalModel)}${attr(\"disabled\", saving, true)}/></div> <div class=\"control-group svelte-1844cb2\"><label class=\"control-label svelte-1844cb2\" for=\"embBatchSize\">Batch size</label> <input id=\"embBatchSize\" class=\"control-input control-input--narrow svelte-1844cb2\" type=\"number\" min=\"1\"${attr(\"value\", embBatchSize)}${attr(\"disabled\", saving, true)}/></div> <div class=\"control-group svelte-1844cb2\"><label class=\"control-label svelte-1844cb2\" for=\"embChunkSize\">Chunk size (chars)</label> <input id=\"embChunkSize\" class=\"control-input control-input--narrow svelte-1844cb2\" type=\"number\" min=\"1\"${attr(\"value\", embChunkSize)}${attr(\"disabled\", saving, true)}/></div> <div class=\"control-group svelte-1844cb2\"><label class=\"control-label svelte-1844cb2\" for=\"embContextLength\">Context length</label> <input id=\"embContextLength\" class=\"control-input control-input--narrow svelte-1844cb2\" type=\"number\" min=\"1\"${attr(\"value\", embContextLength)}${attr(\"disabled\", saving, true)}/></div> <div class=\"control-group svelte-1844cb2\"><label class=\"control-label svelte-1844cb2\" for=\"embOllamaNumCtx\">Ollama num_ctx</label> <input id=\"embOllamaNumCtx\" class=\"control-input control-input--narrow svelte-1844cb2\" type=\"number\" min=\"1\"${attr(\"value\", embOllamaNumCtx)}${attr(\"disabled\", saving, true)}/></div></div></section> <section class=\"config-section svelte-1844cb2\"><h3 class=\"section-title svelte-1844cb2\">Behavior</h3> <div class=\"controls controls--grid svelte-1844cb2\"><div class=\"control-group svelte-1844cb2\"><label class=\"control-label svelte-1844cb2\" for=\"semanticSearch\">Semantic search</label> `);\n\t\t$$renderer.select({\n\t\t\tid: \"semanticSearch\",\n\t\t\tclass: \"control-input\",\n\t\t\tvalue: semanticSearchMode,\n\t\t\tdisabled: saving\n\t\t}, ($$renderer) => {\n\t\t\t$$renderer.option({ value: \"auto\" }, ($$renderer) => {\n\t\t\t\t$$renderer.push(`Auto (vector index when available)`);\n\t\t\t});\n\t\t\t$$renderer.option({ value: \"off\" }, ($$renderer) => {\n\t\t\t\t$$renderer.push(`Off (keyword only)`);\n\t\t\t});\n\t\t}, \"svelte-1844cb2\");\n\t\t$$renderer.push(`</div> <div class=\"control-group svelte-1844cb2\"><label class=\"control-label svelte-1844cb2\" for=\"outputFormat\">Output format</label> `);\n\t\t$$renderer.select({\n\t\t\tid: \"outputFormat\",\n\t\t\tclass: \"control-input\",\n\t\t\tvalue: outputFormat,\n\t\t\tdisabled: saving\n\t\t}, ($$renderer) => {\n\t\t\t$$renderer.option({ value: \"json\" }, ($$renderer) => {\n\t\t\t\t$$renderer.push(`JSON`);\n\t\t\t});\n\t\t\t$$renderer.option({ value: \"yaml\" }, ($$renderer) => {\n\t\t\t\t$$renderer.push(`YAML`);\n\t\t\t});\n\t\t\t$$renderer.option({ value: \"text\" }, ($$renderer) => {\n\t\t\t\t$$renderer.push(`Text`);\n\t\t\t});\n\t\t}, \"svelte-1844cb2\");\n\t\t$$renderer.push(`</div> <div class=\"control-group svelte-1844cb2\"><label class=\"control-label svelte-1844cb2\" for=\"outputDetail\">Output detail</label> `);\n\t\t$$renderer.select({\n\t\t\tid: \"outputDetail\",\n\t\t\tclass: \"control-input\",\n\t\t\tvalue: outputDetail,\n\t\t\tdisabled: saving\n\t\t}, ($$renderer) => {\n\t\t\t$$renderer.option({ value: \"brief\" }, ($$renderer) => {\n\t\t\t\t$$renderer.push(`Brief`);\n\t\t\t});\n\t\t\t$$renderer.option({ value: \"normal\" }, ($$renderer) => {\n\t\t\t\t$$renderer.push(`Normal`);\n\t\t\t});\n\t\t\t$$renderer.option({ value: \"full\" }, ($$renderer) => {\n\t\t\t\t$$renderer.push(`Full`);\n\t\t\t});\n\t\t}, \"svelte-1844cb2\");\n\t\t$$renderer.push(`</div></div></section> <section class=\"config-section svelte-1844cb2\"><h3 class=\"section-title svelte-1844cb2\">Advanced</h3> <p class=\"section-note svelte-1844cb2\">Global tuning beyond per-profile settings. Leave blank to use akm defaults.</p> <div class=\"controls controls--grid svelte-1844cb2\"><div class=\"control-group svelte-1844cb2\"><label class=\"control-label svelte-1844cb2\" for=\"adv-halflife\">Utility decay half-life (days)</label> <input id=\"adv-halflife\" class=\"control-input control-input--narrow svelte-1844cb2\" type=\"number\" min=\"0.1\" step=\"0.1\" placeholder=\"default\"${attr(\"value\", imHalfLife)}${attr(\"disabled\", saving, true)}/></div> <div class=\"control-group svelte-1844cb2\"><label class=\"control-label svelte-1844cb2\" for=\"adv-fbboost\">Feedback stability boost (≥1)</label> <input id=\"adv-fbboost\" class=\"control-input control-input--narrow svelte-1844cb2\" type=\"number\" min=\"1\" step=\"0.1\" placeholder=\"default\"${attr(\"value\", imFeedbackBoost)}${attr(\"disabled\", saving, true)}/></div> <div class=\"control-group svelte-1844cb2\"><label class=\"control-label svelte-1844cb2\" for=\"adv-eventret\">Event retention (days)</label> <input id=\"adv-eventret\" class=\"control-input control-input--narrow svelte-1844cb2\" type=\"number\" min=\"0\" placeholder=\"default\"${attr(\"value\", imEventRetention)}${attr(\"disabled\", saving, true)}/></div> <div class=\"control-group svelte-1844cb2\"><label class=\"control-label svelte-1844cb2\" for=\"adv-minscore\">Search min score</label> <input id=\"adv-minscore\" class=\"control-input control-input--narrow svelte-1844cb2\" type=\"number\" min=\"0\" step=\"0.01\" placeholder=\"default\"${attr(\"value\", searchMinScore)}${attr(\"disabled\", saving, true)}/></div> <div class=\"control-group svelte-1844cb2\"><label class=\"control-label svelte-1844cb2\" for=\"adv-rerank\">Curate rerank</label> `);\n\t\t$$renderer.select({\n\t\t\tid: \"adv-rerank\",\n\t\t\tclass: \"control-input\",\n\t\t\tvalue: searchCurateRerank,\n\t\t\tdisabled: saving\n\t\t}, ($$renderer) => {\n\t\t\t$$renderer.option({ value: \"\" }, ($$renderer) => {\n\t\t\t\t$$renderer.push(`Default`);\n\t\t\t});\n\t\t\t$$renderer.option({ value: \"on\" }, ($$renderer) => {\n\t\t\t\t$$renderer.push(`Enabled`);\n\t\t\t});\n\t\t\t$$renderer.option({ value: \"off\" }, ($$renderer) => {\n\t\t\t\t$$renderer.push(`Disabled`);\n\t\t\t});\n\t\t}, \"svelte-1844cb2\");\n\t\t$$renderer.push(`</div> <div class=\"control-group svelte-1844cb2\"><label class=\"control-label svelte-1844cb2\" for=\"adv-reqreason\">Feedback requires reason</label> `);\n\t\t$$renderer.select({\n\t\t\tid: \"adv-reqreason\",\n\t\t\tclass: \"control-input\",\n\t\t\tvalue: fbRequireReason,\n\t\t\tdisabled: saving\n\t\t}, ($$renderer) => {\n\t\t\t$$renderer.option({ value: \"\" }, ($$renderer) => {\n\t\t\t\t$$renderer.push(`Default`);\n\t\t\t});\n\t\t\t$$renderer.option({ value: \"on\" }, ($$renderer) => {\n\t\t\t\t$$renderer.push(`Required`);\n\t\t\t});\n\t\t\t$$renderer.option({ value: \"off\" }, ($$renderer) => {\n\t\t\t\t$$renderer.push(`Optional`);\n\t\t\t});\n\t\t}, \"svelte-1844cb2\");\n\t\t$$renderer.push(`</div> <div class=\"control-group control-group--wide svelte-1844cb2\"><label class=\"control-label svelte-1844cb2\" for=\"adv-failmodes\">Allowed feedback failure modes (comma-separated)</label> <input id=\"adv-failmodes\" class=\"control-input svelte-1844cb2\" type=\"text\" spellcheck=\"false\" placeholder=\"e.g. outdated, incorrect, irrelevant\"${attr(\"value\", fbFailureModes)}${attr(\"disabled\", saving, true)}/></div> <div class=\"control-group control-group--wide svelte-1844cb2\"><label class=\"control-label svelte-1844cb2\" for=\"adv-index\">Index config (JSON, per-pass)</label> <textarea id=\"adv-index\" class=\"control-input svelte-1844cb2\" rows=\"4\" spellcheck=\"false\" placeholder=\"{ "enrichment": { "llm": false } }\"${attr(\"disabled\", saving, true)}>`);\n\t\tconst $$body = escape_html(indexJson);\n\t\tif ($$body) $$renderer.push(`${$$body}`);\n\t\t$$renderer.push(`</textarea> <span class=\"section-note svelte-1844cb2\">Advanced per-pass indexing options (enrichment, graphExtraction, metadataEnhance, stalenessDetection). Must be a JSON object.</span></div></div></section> `);\n\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--></div> `);\n\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--></div>`);\n\t});\n}\n//#endregion\n//#region src/lib/components/VoiceTab.svelte\nfunction VoiceTab($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { tokenStored } = $$props;\n\t\tconst ADMIN_TTS_OPTIONS = [\n\t\t\t{\n\t\t\t\tid: \"openpalm-voice\",\n\t\t\t\tname: \"OpenPalm Voice\",\n\t\t\t\ttype: \"local\",\n\t\t\t\trecommended: true,\n\t\t\t\tdesc: \"Local Kokoro TTS + Whisper STT bundled together.\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"remote\",\n\t\t\t\tname: \"Remote (OpenAI-compatible)\",\n\t\t\t\ttype: \"cloud\",\n\t\t\t\tdesc: \"Point at any /v1/audio/speech endpoint (OpenAI, Kokoro, Piper, …).\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"browser\",\n\t\t\t\tname: \"Browser\",\n\t\t\t\ttype: \"builtin\",\n\t\t\t\tdesc: \"Web Speech API on this device. No setup, voice quality varies.\"\n\t\t\t}\n\t\t];\n\t\tconst ADMIN_STT_OPTIONS = [\n\t\t\t{\n\t\t\t\tid: \"openpalm-voice\",\n\t\t\t\tname: \"OpenPalm Voice\",\n\t\t\t\ttype: \"local\",\n\t\t\t\trecommended: true,\n\t\t\t\tdesc: \"Local Kokoro TTS + Whisper STT bundled together.\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"remote\",\n\t\t\t\tname: \"Remote (OpenAI-compatible)\",\n\t\t\t\ttype: \"cloud\",\n\t\t\t\tdesc: \"Point at any /v1/audio/transcriptions endpoint (Whisper, …).\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"browser\",\n\t\t\t\tname: \"Browser\",\n\t\t\t\ttype: \"builtin\",\n\t\t\t\tdesc: \"Web Speech API on this device. Chrome/Edge only on desktop.\"\n\t\t\t}\n\t\t];\n\t\tconst ADMIN_TTS_ENGINES = {\n\t\t\t\"openpalm-voice\": {\n\t\t\t\tid: \"openpalm-voice\",\n\t\t\t\tfields: []\n\t\t\t},\n\t\t\tremote: {\n\t\t\t\tid: \"remote\",\n\t\t\t\tfields: [\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"baseURL\",\n\t\t\t\t\t\tlabel: \"Endpoint URL\",\n\t\t\t\t\t\tplaceholder: \"http://host.docker.internal:8880/v1\",\n\t\t\t\t\t\thint: \"OpenAI-compatible /v1/audio/speech endpoint.\"\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"model\",\n\t\t\t\t\t\tlabel: \"Model\",\n\t\t\t\t\t\tplaceholder: \"tts-1\"\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"voice\",\n\t\t\t\t\t\tlabel: \"Voice\",\n\t\t\t\t\t\tplaceholder: \"alloy\"\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\tbrowser: {\n\t\t\t\tid: \"browser\",\n\t\t\t\tfields: []\n\t\t\t}\n\t\t};\n\t\tconst ADMIN_STT_ENGINES = {\n\t\t\t\"openpalm-voice\": {\n\t\t\t\tid: \"openpalm-voice\",\n\t\t\t\tfields: []\n\t\t\t},\n\t\t\tremote: {\n\t\t\t\tid: \"remote\",\n\t\t\t\tfields: [\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"baseURL\",\n\t\t\t\t\t\tlabel: \"Endpoint URL\",\n\t\t\t\t\t\tplaceholder: \"http://host.docker.internal:9000/v1\",\n\t\t\t\t\t\thint: \"OpenAI-compatible /v1/audio/transcriptions endpoint.\"\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"model\",\n\t\t\t\t\t\tlabel: \"Model\",\n\t\t\t\t\t\tplaceholder: \"whisper-1\"\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"language\",\n\t\t\t\t\t\tlabel: \"Language\",\n\t\t\t\t\t\tplaceholder: \"en\",\n\t\t\t\t\t\thint: \"A code like `en` or `fr`, or leave blank to detect.\"\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\tbrowser: {\n\t\t\t\tid: \"browser\",\n\t\t\t\tfields: [{\n\t\t\t\t\tkey: \"language\",\n\t\t\t\t\tlabel: \"Language\",\n\t\t\t\t\tplaceholder: \"en-US\"\n\t\t\t\t}]\n\t\t\t}\n\t\t};\n\t\tconst EMPTY_SECTION = () => ({\n\t\t\tengine: \"\",\n\t\t\tbaseURL: \"\",\n\t\t\tmodel: \"\",\n\t\t\tvoice: \"\",\n\t\t\tlanguage: \"\"\n\t\t});\n\t\tlet loading = false;\n\t\tlet tts = EMPTY_SECTION();\n\t\tlet stt = EMPTY_SECTION();\n\t\tlet availability = {\n\t\t\tstt: {\n\t\t\t\tremoteConfigured: false,\n\t\t\t\tremoteReachable: false\n\t\t\t},\n\t\t\ttts: {\n\t\t\t\tremoteConfigured: false,\n\t\t\t\tremoteReachable: false\n\t\t\t}\n\t\t};\n\t\tlet addonProfiles = [];\n\t\tlet selectedProfile = \"\";\n\t\tconst wantsOpenpalmVoice = derived(() => tts.engine === \"openpalm-voice\" || stt.engine === \"openpalm-voice\");\n\t\tfunction sectionToValue(s) {\n\t\t\treturn {\n\t\t\t\tengine: s.engine,\n\t\t\t\t...s.baseURL ? { baseURL: s.baseURL } : {},\n\t\t\t\t...s.model ? { model: s.model } : {},\n\t\t\t\t...s.voice ? { voice: s.voice } : {},\n\t\t\t\t...s.language ? { language: s.language } : {}\n\t\t\t};\n\t\t}\n\t\tfunction applyTtsChange(v) {\n\t\t\ttts.engine = v.engine || \"\";\n\t\t\ttts.baseURL = v.baseURL ?? \"\";\n\t\t\ttts.model = v.model ?? \"\";\n\t\t\ttts.voice = v.voice ?? \"\";\n\t\t}\n\t\tfunction applySttChange(v) {\n\t\t\tstt.engine = v.engine || \"\";\n\t\t\tstt.baseURL = v.baseURL ?? \"\";\n\t\t\tstt.model = v.model ?? \"\";\n\t\t\tstt.language = v.language ?? \"\";\n\t\t}\n\t\tconst sttDisabledEngines = derived(() => {\n\t\t\treturn {};\n\t\t});\n\t\tconst ttsHiddenEngines = derived(() => new Set([\"browser\"]));\n\t\tconst sttHiddenEngines = derived(() => new Set([\"browser\"]));\n\t\t$$renderer.push(`<div class=\"panel\" role=\"tabpanel\"><div class=\"panel-header svelte-1iuj2un\"><h2 class=\"svelte-1iuj2un\">Voice</h2> <div class=\"panel-header-actions svelte-1iuj2un\"><button class=\"btn btn-secondary btn-sm\"${attr(\"disabled\", !tokenStored, true)}>`);\n\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> Refresh</button> <button class=\"btn btn-primary btn-sm\"${attr(\"disabled\", !tokenStored, true)}>`);\n\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> Save</button></div></div> `);\n\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> <div class=\"panel-body svelte-1iuj2un\"><p class=\"section-desc svelte-1iuj2un\">Configure how the assistant listens and speaks. Choose an engine for each;\n\t\t\tthe in-app mic uses STT and the optional auto-speak toggle uses TTS.</p> <section class=\"engine-section svelte-1iuj2un\"><h3 class=\"engine-heading svelte-1iuj2un\">Text-to-Speech</h3> <p class=\"engine-subheading svelte-1iuj2un\">How your assistant speaks</p> `);\n\t\tVoiceEngineSelector($$renderer, {\n\t\t\tkind: \"tts\",\n\t\t\tvalue: sectionToValue(tts),\n\t\t\tonchange: applyTtsChange,\n\t\t\tengineOptions: ADMIN_TTS_OPTIONS,\n\t\t\tengineConfigs: ADMIN_TTS_ENGINES,\n\t\t\treachable: availability.tts,\n\t\t\treachabilityEngineId: \"remote\",\n\t\t\thiddenEngines: ttsHiddenEngines()\n\t\t});\n\t\t$$renderer.push(`<!----> `);\n\t\tif (tts.engine) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<div class=\"tts-extras svelte-1iuj2un\"><div class=\"test-voice-row svelte-1iuj2un\"><button type=\"button\" class=\"btn btn-secondary btn-sm\"${attr(\"disabled\", loading, true)}>`);\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<!--]--> Test voice</button> `);\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<!--]--></div> <label class=\"auto-speak-toggle svelte-1iuj2un\"><input type=\"checkbox\"${attr(\"checked\", voiceState.ttsAutoEnabled, true)} class=\"svelte-1iuj2un\"/> <span>Speak assistant replies aloud automatically</span></label></div>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--></section> <section class=\"engine-section svelte-1iuj2un\"><h3 class=\"engine-heading svelte-1iuj2un\">Speech-to-Text</h3> <p class=\"engine-subheading svelte-1iuj2un\">How your assistant listens</p> `);\n\t\tVoiceEngineSelector($$renderer, {\n\t\t\tkind: \"stt\",\n\t\t\tvalue: sectionToValue(stt),\n\t\t\tonchange: applySttChange,\n\t\t\tengineOptions: ADMIN_STT_OPTIONS,\n\t\t\tengineConfigs: ADMIN_STT_ENGINES,\n\t\t\treachable: availability.stt,\n\t\t\treachabilityEngineId: \"remote\",\n\t\t\tdisabledEngines: sttDisabledEngines(),\n\t\t\thiddenEngines: sttHiddenEngines()\n\t\t});\n\t\t$$renderer.push(`<!----></section> `);\n\t\tif (wantsOpenpalmVoice() && addonProfiles.length > 0) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<section class=\"engine-section svelte-1iuj2un\"><h3 class=\"engine-heading svelte-1iuj2un\">Hardware profile</h3> `);\n\t\t\tVoiceProfileSelector($$renderer, {\n\t\t\t\tprofiles: addonProfiles,\n\t\t\t\tselectedProfile,\n\t\t\t\tonchange: (id) => selectedProfile = id\n\t\t\t});\n\t\t\t$$renderer.push(`<!----></section>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--></div></div>`);\n\t});\n}\n//#endregion\n//#region src/routes/admin/+page.svelte\nfunction _page($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet authLocked = true;\n\t\tlet authLoading = false;\n\t\tlet authError = \"\";\n\t\tlet adminHealth = null;\n\t\tlet healthLoading = false;\n\t\tlet applyLoading = false;\n\t\tlet upgradeLoading = false;\n\t\tlet containersLoading = false;\n\t\tlet automationsLoading = false;\n\t\tlet operationResult = \"\";\n\t\tlet operationResultType = \"info\";\n\t\tlet containerData = null;\n\t\tlet containerError = \"\";\n\t\tlet containersLastUpdated = null;\n\t\tlet automationsData = null;\n\t\tlet automationsError = \"\";\n\t\tlet selectedContainerId = null;\n\t\tlet activeTab = \"overview\";\n\t\tlet pullLoading = false;\n\t\tlet currentImageTag = \"\";\n\t\tlet inElectron = false;\n\t\tlet tagChangeLoading = false;\n\t\tlet uiDownloadLoading = false;\n\t\tlet uiDownloadReady = false;\n\t\tlet selectedImageTag = \"latest\";\n\t\tlet selectedUiTag = \"\";\n\t\tlet releases = [];\n\t\tlet releasesLoading = false;\n\t\tlet uiVersions = [];\n\t\tlet uiVersionsLoading = false;\n\t\tconst POLL_INTERVAL_MS = 1e4;\n\t\tlet pollTimer = null;\n\t\tfunction startContainerPolling() {\n\t\t\tstopContainerPolling();\n\t\t\tpollTimer = setInterval(() => {\n\t\t\t\tif (!authLocked && containerData) loadContainers();\n\t\t\t}, POLL_INTERVAL_MS);\n\t\t}\n\t\tfunction stopContainerPolling() {\n\t\t\tif (pollTimer !== null) {\n\t\t\t\tclearInterval(pollTimer);\n\t\t\t\tpollTimer = null;\n\t\t\t}\n\t\t}\n\t\tonDestroy(() => {\n\t\t\tstopContainerPolling();\n\t\t});\n\t\tlet anyDangerousLoading = derived(() => applyLoading || upgradeLoading);\n\t\t/** Merged service → state map (used by OverviewTab for health indicators) */\n\t\tlet mergedServices = derived(() => {\n\t\t\tif (!containerData) return /* @__PURE__ */ new Map();\n\t\t\tconst merged = /* @__PURE__ */ new Map();\n\t\t\tif (containerData.containers) for (const [name, state] of Object.entries(containerData.containers)) merged.set(name, state);\n\t\t\tif (containerData.dockerContainers) for (const c of containerData.dockerContainers) merged.set(c.Service, c.State);\n\t\t\treturn merged;\n\t\t});\n\t\t/** Full merged ServiceEntry list (used by ContainersTab for detail rows) */\n\t\tlet serviceEntries = derived(() => {\n\t\t\tif (!containerData) return [];\n\t\t\tconst byService = /* @__PURE__ */ new Map();\n\t\t\tif (containerData.containers) for (const [name, state] of Object.entries(containerData.containers)) byService.set(name, {\n\t\t\t\tid: name,\n\t\t\t\tservice: name,\n\t\t\t\tstate,\n\t\t\t\tdocker: null\n\t\t\t});\n\t\t\tif (containerData.dockerContainers) for (const c of containerData.dockerContainers) {\n\t\t\t\tconst existing = byService.get(c.Service);\n\t\t\t\tif (existing) {\n\t\t\t\t\texisting.state = c.State;\n\t\t\t\t\texisting.docker = c;\n\t\t\t\t\texisting.id = c.ID;\n\t\t\t\t} else byService.set(c.Service, {\n\t\t\t\t\tid: c.ID,\n\t\t\t\t\tservice: c.Service || c.Name,\n\t\t\t\t\tstate: c.State,\n\t\t\t\t\tdocker: c\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn [...byService.values()].sort((a, b) => {\n\t\t\t\tif (a.state === \"running\" && b.state !== \"running\") return -1;\n\t\t\t\tif (a.state !== \"running\" && b.state === \"running\") return 1;\n\t\t\t\treturn a.service.localeCompare(b.service);\n\t\t\t});\n\t\t});\n\t\tfunction applyInvalidTokenState() {\n\t\t\tauthLocked = true;\n\t\t\tauthError = \"Invalid password.\";\n\t\t}\n\t\tasync function handleAuthSuccess(token) {\n\t\t\tif (authLoading) return false;\n\t\t\tauthLoading = true;\n\t\t\tauthError = \"\";\n\t\t\ttry {\n\t\t\t\tif (!(await fetch(\"/admin/auth/login\", {\n\t\t\t\t\tmethod: \"POST\",\n\t\t\t\t\theaders: { \"content-type\": \"application/json\" },\n\t\t\t\t\tbody: JSON.stringify({ password: token }),\n\t\t\t\t\tcredentials: \"include\"\n\t\t\t\t})).ok) {\n\t\t\t\t\tapplyInvalidTokenState();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tauthLocked = false;\n\t\t\t\tauthError = \"\";\n\t\t\t\tstartContainerPolling();\n\t\t\t\tawait loadHealth();\n\t\t\t\tloadContainers();\n\t\t\t\tloadAutomations();\n\t\t\t\tloadVersions();\n\t\t\t\tloadReleases();\n\t\t\t\treturn true;\n\t\t\t} catch (e) {\n\t\t\t\tconsole.warn(\"[page] Auth failed:\", e);\n\t\t\t\tauthError = \"Unable to reach admin API.\";\n\t\t\t\treturn false;\n\t\t\t} finally {\n\t\t\t\tauthLoading = false;\n\t\t\t}\n\t\t}\n\t\tasync function loadHealth() {\n\t\t\thealthLoading = true;\n\t\t\ttry {\n\t\t\t\tconst health = await fetchHealth();\n\t\t\t\tadminHealth = health.admin;\n\t\t\t\thealth.guardian;\n\t\t\t} catch (e) {\n\t\t\t\tconsole.warn(\"[page] Health check failed:\", e);\n\t\t\t\tadminHealth = {\n\t\t\t\t\tstatus: \"error\",\n\t\t\t\t\tservice: \"admin\"\n\t\t\t\t};\n\t\t\t}\n\t\t\thealthLoading = false;\n\t\t}\n\t\tasync function loadContainers() {\n\t\t\tcontainersLoading = true;\n\t\t\tcontainerError = \"\";\n\t\t\ttry {\n\t\t\t\tcontainerData = await fetchContainers();\n\t\t\t} catch (e) {\n\t\t\t\tcontainerData = null;\n\t\t\t\tconst err = e;\n\t\t\t\tif (err.status === 401) {\n\t\t\t\t\tcontainerError = \"Invalid password.\";\n\t\t\t\t\tapplyInvalidTokenState();\n\t\t\t\t} else containerError = `Failed to load containers: ${err.message ?? e}`;\n\t\t\t}\n\t\t\tcontainersLoading = false;\n\t\t\tif (containerData) containersLastUpdated = (/* @__PURE__ */ new Date()).toLocaleTimeString();\n\t\t}\n\t\tasync function loadAutomations() {\n\t\t\tautomationsLoading = true;\n\t\t\tautomationsError = \"\";\n\t\t\ttry {\n\t\t\t\tautomationsData = await fetchAutomations();\n\t\t\t} catch (e) {\n\t\t\t\tautomationsData = null;\n\t\t\t\tconst err = e;\n\t\t\t\tif (err.status === 401) {\n\t\t\t\t\tautomationsError = \"Invalid password.\";\n\t\t\t\t\tapplyInvalidTokenState();\n\t\t\t\t} else automationsError = `Failed to load automations: ${err.message ?? e}`;\n\t\t\t}\n\t\t\tautomationsLoading = false;\n\t\t}\n\t\tasync function loadVersions() {\n\t\t\ttry {\n\t\t\t\tconst data = await fetchVersions();\n\t\t\t\tcurrentImageTag = data.imageTag;\n\t\t\t\tinElectron = data.inElectron;\n\t\t\t} catch {}\n\t\t}\n\t\tasync function loadReleases() {\n\t\t\treleasesLoading = true;\n\t\t\tuiVersionsLoading = true;\n\t\t\ttry {\n\t\t\t\tconst [releaseData, uiData] = await Promise.all([fetchReleases(), fetchUiVersions()]);\n\t\t\t\treleases = releaseData.releases;\n\t\t\t\tuiVersions = uiData.versions;\n\t\t\t\tif (!selectedUiTag) {\n\t\t\t\t\tconst channelPick = uiData.versions.find((v) => v.distTag === \"next\" || v.distTag === \"latest\") ?? uiData.versions[0];\n\t\t\t\t\tif (channelPick) selectedUiTag = channelPick.version;\n\t\t\t\t}\n\t\t\t} catch {}\n\t\t\treleasesLoading = false;\n\t\t\tuiVersionsLoading = false;\n\t\t}\n\t\tasync function handleApplyChanges() {\n\t\t\tif (anyDangerousLoading()) return;\n\t\t\tapplyLoading = true;\n\t\t\ttry {\n\t\t\t\tconst result = await applyChanges();\n\t\t\t\tif (result.overallSuccess) {\n\t\t\t\t\toperationResult = result.restarted.length > 0 ? `Changes applied successfully. Restarted: ${result.restarted.join(\", \")}.` : \"Changes applied successfully.\";\n\t\t\t\t\toperationResultType = \"success\";\n\t\t\t\t} else if (result.failed.length > 0) {\n\t\t\t\t\tconst failures = result.failed.map((f) => `${f.service}: ${f.reason}`).join(\"; \");\n\t\t\t\t\tconst restartedNote = result.restarted.length > 0 ? ` (other services restarted: ${result.restarted.join(\", \")})` : \"\";\n\t\t\t\t\toperationResult = `Apply failed for ${result.failed.length} service(s): ${failures}${restartedNote}`;\n\t\t\t\t\toperationResultType = \"error\";\n\t\t\t\t} else if (!result.dockerAvailable) {\n\t\t\t\t\toperationResult = \"Config written, but Docker is unavailable — services were not restarted.\";\n\t\t\t\t\toperationResultType = \"error\";\n\t\t\t\t} else {\n\t\t\t\t\toperationResult = `Apply failed: ${result.error ?? \"unknown error\"}`;\n\t\t\t\t\toperationResultType = \"error\";\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tconst err = e;\n\t\t\t\tif (err.status === 401) applyInvalidTokenState();\n\t\t\t\telse {\n\t\t\t\t\toperationResult = `Error applying changes: ${err.message ?? e}`;\n\t\t\t\t\toperationResultType = \"error\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tapplyLoading = false;\n\t\t}\n\t\tasync function handleUpgradeStack() {\n\t\t\tif (anyDangerousLoading()) return;\n\t\t\tupgradeLoading = true;\n\t\t\ttry {\n\t\t\t\tconst result = await upgradeStack();\n\t\t\t\toperationResult = `Upgrade complete (image: ${result.imageTag}). ${result.assetsUpdated.length} asset(s) updated, ${result.restarted.length} service(s) restarted.`;\n\t\t\t\toperationResultType = \"success\";\n\t\t\t} catch (e) {\n\t\t\t\tconst err = e;\n\t\t\t\tif (err.status === 401) applyInvalidTokenState();\n\t\t\t\telse {\n\t\t\t\t\toperationResult = `Error upgrading stack: ${err.message ?? e}`;\n\t\t\t\t\toperationResultType = \"error\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tupgradeLoading = false;\n\t\t}\n\t\tasync function handleSetImageTag(tag) {\n\t\t\tif (tagChangeLoading) return;\n\t\t\ttagChangeLoading = true;\n\t\t\ttry {\n\t\t\t\tconst result = await setStackVersion(tag);\n\t\t\t\tcurrentImageTag = result.imageTag;\n\t\t\t\tselectedImageTag = result.imageTag;\n\t\t\t\toperationResult = `Image tag set to ${result.imageTag}. Restarted: ${result.restarted.join(\", \") || \"none\"}.`;\n\t\t\t\toperationResultType = \"success\";\n\t\t\t} catch (e) {\n\t\t\t\toperationResult = `Failed to apply image tag: ${e.message ?? e}`;\n\t\t\t\toperationResultType = \"error\";\n\t\t\t}\n\t\t\ttagChangeLoading = false;\n\t\t}\n\t\tasync function handleDownloadUiVersion(tag) {\n\t\t\tif (uiDownloadLoading) return;\n\t\t\tuiDownloadLoading = true;\n\t\t\tuiDownloadReady = false;\n\t\t\ttry {\n\t\t\t\tawait downloadUiVersion(tag);\n\t\t\t\tselectedUiTag = tag;\n\t\t\t\tuiDownloadReady = true;\n\t\t\t} catch (e) {\n\t\t\t\toperationResult = `Failed to download UI version: ${e.message ?? e}`;\n\t\t\t\toperationResultType = \"error\";\n\t\t\t}\n\t\t\tuiDownloadLoading = false;\n\t\t}\n\t\tfunction handleRestartApp() {\n\t\t\twindow.openpalm?.restart?.();\n\t\t}\n\t\tasync function handleContainerAction(action, containerId) {\n\t\t\ttry {\n\t\t\t\tawait containerAction(action, containerId);\n\t\t\t\tawait loadContainers();\n\t\t\t} catch (e) {\n\t\t\t\tconst err = e;\n\t\t\t\tif (err.status === 401) applyInvalidTokenState();\n\t\t\t\telse containerError = `Action failed: ${err.message ?? e}`;\n\t\t\t}\n\t\t}\n\t\tfunction handleToggleContainer(id) {\n\t\t\tselectedContainerId = selectedContainerId === id ? null : id;\n\t\t}\n\t\t/** Derive service names from container data for the logs tab */\n\t\tlet serviceNames = derived(() => {\n\t\t\tif (!containerData) return [];\n\t\t\tconst names = /* @__PURE__ */ new Set();\n\t\t\tif (containerData.containers) for (const name of Object.keys(containerData.containers)) names.add(name);\n\t\t\tif (containerData.dockerContainers) {\n\t\t\t\tfor (const c of containerData.dockerContainers) if (c.Service) names.add(c.Service);\n\t\t\t}\n\t\t\treturn [...names].sort();\n\t\t});\n\t\tasync function handlePullImages() {\n\t\t\tpullLoading = true;\n\t\t\ttry {\n\t\t\t\tawait pullImages();\n\t\t\t\tawait loadContainers();\n\t\t\t} catch (e) {\n\t\t\t\tconst err = e;\n\t\t\t\tif (err.status === 401) applyInvalidTokenState();\n\t\t\t\telse containerError = `Pull failed: ${err.message ?? e}`;\n\t\t\t} finally {\n\t\t\t\tpullLoading = false;\n\t\t\t}\n\t\t}\n\t\tfunction handleTabSelect(tab) {\n\t\t\tactiveTab = tab;\n\t\t\tif (tab === \"containers\" && !containerData) loadContainers();\n\t\t\tif (tab === \"automations\" && !automationsData) loadAutomations();\n\t\t}\n\t\tfunction handleComponentsAuthError() {\n\t\t\tapplyInvalidTokenState();\n\t\t}\n\t\thead(\"1jef3w8\", $$renderer, ($$renderer) => {\n\t\t\t$$renderer.title(($$renderer) => {\n\t\t\t\t$$renderer.push(`<title>OpenPalm Console</title>`);\n\t\t\t});\n\t\t});\n\t\tif (authLocked) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\tAuthGate($$renderer, {\n\t\t\t\tonSuccess: handleAuthSuccess,\n\t\t\t\tloading: authLoading,\n\t\t\t\terror: authError\n\t\t\t});\n\t\t} else {\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\tNavbar($$renderer, {});\n\t\t\t$$renderer.push(`<!----> <main class=\"svelte-1jef3w8\">`);\n\t\t\tTabBar($$renderer, {\n\t\t\t\tactive: activeTab,\n\t\t\t\tonSelect: handleTabSelect\n\t\t\t});\n\t\t\t$$renderer.push(`<!----> `);\n\t\t\tif (activeTab === \"overview\") {\n\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\tOverviewTab($$renderer, {\n\t\t\t\t\tadminHealth,\n\t\t\t\t\toperationResult,\n\t\t\t\t\toperationResultType,\n\t\t\t\t\ttokenStored: true,\n\t\t\t\t\thealthLoading,\n\t\t\t\t\tapplyLoading,\n\t\t\t\t\tupgradeLoading,\n\t\t\t\t\tanyDangerousLoading: anyDangerousLoading(),\n\t\t\t\t\tautomationsData,\n\t\t\t\t\tmergedServices: mergedServices(),\n\t\t\t\t\tcurrentImageTag,\n\t\t\t\t\ttagChangeLoading,\n\t\t\t\t\tuiDownloadLoading,\n\t\t\t\t\tuiDownloadReady,\n\t\t\t\t\tinElectron,\n\t\t\t\t\tselectedImageTag,\n\t\t\t\t\tselectedUiTag,\n\t\t\t\t\treleases,\n\t\t\t\t\treleasesLoading,\n\t\t\t\t\tuiVersions,\n\t\t\t\t\tuiVersionsLoading,\n\t\t\t\t\tonCheckHealth: loadHealth,\n\t\t\t\t\tonApplyChanges: handleApplyChanges,\n\t\t\t\t\tonUpgradeStack: handleUpgradeStack,\n\t\t\t\t\tonDismissResult: () => {\n\t\t\t\t\t\toperationResult = \"\";\n\t\t\t\t\t\toperationResultType = \"info\";\n\t\t\t\t\t},\n\t\t\t\t\tonSetImageTag: handleSetImageTag,\n\t\t\t\t\tonDownloadUiVersion: handleDownloadUiVersion,\n\t\t\t\t\tonRestartApp: handleRestartApp,\n\t\t\t\t\tonSelectedImageTagChange: (t) => {\n\t\t\t\t\t\tselectedImageTag = t;\n\t\t\t\t\t},\n\t\t\t\t\tonSelectedUiTagChange: (t) => {\n\t\t\t\t\t\tselectedUiTag = t;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else if (activeTab === \"addons\") {\n\t\t\t\t$$renderer.push(\"<!--[1-->\");\n\t\t\t\tAddonsTab($$renderer, { onAuthError: handleComponentsAuthError });\n\t\t\t} else if (activeTab === \"containers\") {\n\t\t\t\t$$renderer.push(\"<!--[2-->\");\n\t\t\t\tContainersTab($$renderer, {\n\t\t\t\t\tcontainerData,\n\t\t\t\t\tserviceEntries: serviceEntries(),\n\t\t\t\t\tloading: containersLoading,\n\t\t\t\t\terror: containerError,\n\t\t\t\t\ttokenStored: true,\n\t\t\t\t\tselectedContainerId,\n\t\t\t\t\tonToggleContainer: handleToggleContainer,\n\t\t\t\t\tonStart: (id) => handleContainerAction(\"start\", id),\n\t\t\t\t\tonStop: (id) => handleContainerAction(\"stop\", id),\n\t\t\t\t\tonRestart: (id) => handleContainerAction(\"restart\", id),\n\t\t\t\t\tonRefresh: loadContainers,\n\t\t\t\t\tonPullImages: handlePullImages,\n\t\t\t\t\tlastUpdated: containersLastUpdated,\n\t\t\t\t\tpullLoading\n\t\t\t\t});\n\t\t\t} else if (activeTab === \"automations\") {\n\t\t\t\t$$renderer.push(\"<!--[3-->\");\n\t\t\t\tAutomationsTab($$renderer, {\n\t\t\t\t\tdata: automationsData,\n\t\t\t\t\tloading: automationsLoading,\n\t\t\t\t\terror: automationsError,\n\t\t\t\t\ttokenStored: true,\n\t\t\t\t\tonRefresh: loadAutomations\n\t\t\t\t});\n\t\t\t} else if (activeTab === \"connections\") {\n\t\t\t\t$$renderer.push(\"<!--[4-->\");\n\t\t\t\tProvidersPanel($$renderer, {});\n\t\t\t} else if (activeTab === \"secrets\") {\n\t\t\t\t$$renderer.push(\"<!--[5-->\");\n\t\t\t\tSecretsTab($$renderer, { tokenStored: true });\n\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<!--]--> `);\n\t\t\tif (activeTab === \"voice\") {\n\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\tVoiceTab($$renderer, { tokenStored: true });\n\t\t\t} else if (activeTab === \"akm\") {\n\t\t\t\t$$renderer.push(\"<!--[1-->\");\n\t\t\t\tAkmTab($$renderer, { tokenStored: true });\n\t\t\t} else if (activeTab === \"logs\") {\n\t\t\t\t$$renderer.push(\"<!--[2-->\");\n\t\t\t\tLogsTab($$renderer, {\n\t\t\t\t\ttokenStored: true,\n\t\t\t\t\tservices: serviceNames()\n\t\t\t\t});\n\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<!--]--></main>`);\n\t\t}\n\t\t$$renderer.push(`<!--]-->`);\n\t});\n}\n//#endregion\nexport { _page as default };\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"_page.svelte-omfzeOSO.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/admin/_page.svelte.js"],"sourcesContent":["import { B as attr, V as escape_html, a as ensure_array_like, i as derived, l as stringify, n as attr_class, o as head } from \"../../../chunks/dev.js\";\nimport { n as onDestroy } from \"../../../chunks/index-server.js\";\nimport { C as fetchUiVersions, M as upgradeStack, O as pullImages, S as fetchServiceLogs, b as fetchReleases, c as applyChanges, f as downloadUiVersion, g as fetchContainers, h as fetchAutomations, j as setStackVersion, l as buildHeaders, o as voiceState, u as containerAction, v as fetchHealth, w as fetchVersions } from \"../../../chunks/theme-state.svelte.js\";\nimport { n as Navbar, t as AuthGate } from \"../../../chunks/AuthGate.js\";\nimport { n as VoiceEngineSelector, t as VoiceProfileSelector } from \"../../../chunks/VoiceProfileSelector.js\";\n//#region src/lib/components/TabBar.svelte\nfunction TabBar($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { active, onSelect } = $$props;\n\t\t$$renderer.push(`<div class=\"tabs svelte-1wwzsr0\" role=\"tablist\"><button${attr_class(\"tab svelte-1wwzsr0\", void 0, { \"tab-active\": active === \"overview\" })} role=\"tab\"${attr(\"aria-selected\", active === \"overview\")}><svg aria-hidden=\"true\" width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3\" y=\"3\" width=\"7\" height=\"7\"></rect><rect x=\"14\" y=\"3\" width=\"7\" height=\"7\"></rect><rect x=\"14\" y=\"14\" width=\"7\" height=\"7\"></rect><rect x=\"3\" y=\"14\" width=\"7\" height=\"7\"></rect></svg> Overview</button> <button${attr_class(\"tab svelte-1wwzsr0\", void 0, { \"tab-active\": active === \"addons\" })} role=\"tab\"${attr(\"aria-selected\", active === \"addons\")}><svg aria-hidden=\"true\" width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12 2L2 7l10 5 10-5-10-5z\"></path><path d=\"M2 17l10 5 10-5\"></path><path d=\"M2 12l10 5 10-5\"></path></svg> Addons</button> <button${attr_class(\"tab svelte-1wwzsr0\", void 0, { \"tab-active\": active === \"automations\" })} role=\"tab\"${attr(\"aria-selected\", active === \"automations\")}><svg aria-hidden=\"true\" width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"12\" cy=\"12\" r=\"10\"></circle><polyline points=\"12 6 12 12 16 14\"></polyline></svg> Automations</button> <button${attr_class(\"tab svelte-1wwzsr0\", void 0, { \"tab-active\": active === \"connections\" })} role=\"tab\"${attr(\"aria-selected\", active === \"connections\")}><svg aria-hidden=\"true\" width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71\"></path><path d=\"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71\"></path></svg> Connections</button> <button${attr_class(\"tab svelte-1wwzsr0\", void 0, { \"tab-active\": active === \"secrets\" })} role=\"tab\"${attr(\"aria-selected\", active === \"secrets\")}><svg aria-hidden=\"true\" width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\" ry=\"2\"></rect><path d=\"M7 11V7a5 5 0 0 1 10 0v4\"></path></svg> Secrets</button> <button${attr_class(\"tab svelte-1wwzsr0\", void 0, { \"tab-active\": active === \"voice\" })} role=\"tab\"${attr(\"aria-selected\", active === \"voice\")}><svg aria-hidden=\"true\" width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z\"></path><path d=\"M19 10v2a7 7 0 0 1-14 0v-2\"></path><line x1=\"12\" y1=\"19\" x2=\"12\" y2=\"23\"></line><line x1=\"8\" y1=\"23\" x2=\"16\" y2=\"23\"></line></svg> Voice</button> <button${attr_class(\"tab svelte-1wwzsr0\", void 0, { \"tab-active\": active === \"akm\" })} role=\"tab\"${attr(\"aria-selected\", active === \"akm\")}><svg aria-hidden=\"true\" width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z\"></path><path d=\"M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z\"></path></svg> Knowledge</button> <button${attr_class(\"tab svelte-1wwzsr0\", void 0, { \"tab-active\": active === \"containers\" })} role=\"tab\"${attr(\"aria-selected\", active === \"containers\")}><svg aria-hidden=\"true\" width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"2\" y=\"2\" width=\"20\" height=\"8\" rx=\"2\" ry=\"2\"></rect><rect x=\"2\" y=\"14\" width=\"20\" height=\"8\" rx=\"2\" ry=\"2\"></rect><line x1=\"6\" y1=\"6\" x2=\"6.01\" y2=\"6\"></line><line x1=\"6\" y1=\"18\" x2=\"6.01\" y2=\"18\"></line></svg> Containers</button> <button${attr_class(\"tab svelte-1wwzsr0\", void 0, { \"tab-active\": active === \"logs\" })} role=\"tab\"${attr(\"aria-selected\", active === \"logs\")}><svg aria-hidden=\"true\" width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"4 17 10 11 4 5\"></polyline><line x1=\"12\" y1=\"19\" x2=\"20\" y2=\"19\"></line></svg> Logs</button></div>`);\n\t});\n}\n//#endregion\n//#region src/lib/components/OverviewTab.svelte\nfunction OverviewTab($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { adminHealth, operationResult, operationResultType, tokenStored, healthLoading, applyLoading, upgradeLoading, anyDangerousLoading, automationsData, mergedServices, currentImageTag, tagChangeLoading, uiDownloadLoading, uiDownloadReady, inElectron, selectedImageTag, selectedUiTag, releases, releasesLoading, uiVersions, uiVersionsLoading, onCheckHealth, onApplyChanges, onUpgradeStack, onDismissResult, onSetImageTag, onDownloadUiVersion, onRestartApp, onSelectedImageTagChange, onSelectedUiTagChange } = $$props;\n\t\tfunction uiVersionLabel(v) {\n\t\t\tconst tags = [];\n\t\t\tif (v.distTag) tags.push(v.distTag);\n\t\t\telse if (v.prerelease) tags.push(\"pre-release\");\n\t\t\treturn tags.length ? `${v.version} (${tags.join(\", \")})` : v.version;\n\t\t}\n\t\tlet automationCount = derived(() => automationsData?.automations.length ?? 0);\n\t\tlet enabledAutomationCount = derived(() => automationsData?.automations.filter((a) => a.enabled).length ?? 0);\n\t\tlet containerCounts = derived(() => {\n\t\t\tif (mergedServices.size === 0) return null;\n\t\t\treturn {\n\t\t\t\ttotal: mergedServices.size,\n\t\t\t\trunning: [...mergedServices.values()].filter((s) => s === \"running\").length\n\t\t\t};\n\t\t});\n\t\tlet guardianContainerStatus = derived(() => {\n\t\t\tconst status = mergedServices.get(\"guardian\");\n\t\t\tif (status === \"running\") return \"running\";\n\t\t\tif (status === \"stopped\" || status === \"exited\" || status === \"created\") return \"stopped\";\n\t\t\tif (status) return \"stopped\";\n\t\t\treturn \"unknown\";\n\t\t});\n\t\tlet assistantStatus = derived(() => {\n\t\t\tconst status = mergedServices.get(\"assistant\");\n\t\t\tif (status === \"running\") return \"connected\";\n\t\t\tif (status === \"stopped\" || status === \"exited\" || status === \"created\") return \"disconnected\";\n\t\t\tif (status) return \"disconnected\";\n\t\t\treturn \"unknown\";\n\t\t});\n\t\tlet healthSummary = derived(() => {\n\t\t\tif (!containerCounts()) return {\n\t\t\t\tstatus: \"unknown\",\n\t\t\t\tmessage: \"Checking services…\"\n\t\t\t};\n\t\t\tif (containerCounts().running === containerCounts().total && containerCounts().total > 0) return {\n\t\t\t\tstatus: \"ok\",\n\t\t\t\tmessage: `All ${containerCounts().total} services running`\n\t\t\t};\n\t\t\treturn {\n\t\t\t\tstatus: \"warning\",\n\t\t\t\tmessage: `${containerCounts().total - containerCounts().running} of ${containerCounts().total} services not running — check the Containers tab`\n\t\t\t};\n\t\t});\n\t\t$$renderer.push(`<div${attr_class(`health-summary health-summary--${stringify(healthSummary().status)}`, \"svelte-1ob1zsm\")} role=\"status\" aria-live=\"polite\"><span class=\"health-dot svelte-1ob1zsm\"></span> <span class=\"health-msg svelte-1ob1zsm\">${escape_html(healthSummary().message)}</span></div> `);\n\t\tif (operationResult) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<section${attr_class(`output-section output-section--${stringify(operationResultType)}`, \"svelte-1ob1zsm\")}><div class=\"output-header svelte-1ob1zsm\"><h3 class=\"svelte-1ob1zsm\">Operation Output</h3> <button class=\"btn-ghost svelte-1ob1zsm\" aria-label=\"Dismiss\"><svg aria-hidden=\"true\" width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"svelte-1ob1zsm\"><line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" class=\"svelte-1ob1zsm\"></line><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" class=\"svelte-1ob1zsm\"></line></svg></button></div> <pre class=\"output-code svelte-1ob1zsm\">${escape_html(operationResult)}</pre></section>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> <div class=\"panel-grid svelte-1ob1zsm\" role=\"tabpanel\"><div class=\"panel svelte-1ob1zsm\"><div class=\"panel-header svelte-1ob1zsm\"><h2 class=\"svelte-1ob1zsm\">Quick Actions</h2></div> <div class=\"panel-body svelte-1ob1zsm\"><div class=\"action-list svelte-1ob1zsm\"><button class=\"action-item svelte-1ob1zsm\"${attr(\"disabled\", healthLoading, true)}><span class=\"action-icon action-icon--blue svelte-1ob1zsm\">`);\n\t\tif (healthLoading) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<span class=\"spinner svelte-1ob1zsm\"></span>`);\n\t\t} else {\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<svg aria-hidden=\"true\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"svelte-1ob1zsm\"><path d=\"M22 12h-4l-3 9L9 3l-3 9H2\" class=\"svelte-1ob1zsm\"></path></svg>`);\n\t\t}\n\t\t$$renderer.push(`<!--]--></span> <div class=\"action-content svelte-1ob1zsm\"><span class=\"action-title svelte-1ob1zsm\">Health Check</span> <span class=\"action-desc svelte-1ob1zsm\">Verify admin and guardian services are reachable</span></div> <span class=\"action-arrow svelte-1ob1zsm\"><svg aria-hidden=\"true\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"svelte-1ob1zsm\"><polyline points=\"9 18 15 12 9 6\" class=\"svelte-1ob1zsm\"></polyline></svg></span></button> <button class=\"action-item svelte-1ob1zsm\"${attr(\"disabled\", anyDangerousLoading || !tokenStored, true)}><span class=\"action-icon action-icon--blue svelte-1ob1zsm\">`);\n\t\tif (applyLoading) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<span class=\"spinner svelte-1ob1zsm\"></span>`);\n\t\t} else {\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<svg aria-hidden=\"true\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"svelte-1ob1zsm\"><polyline points=\"16 16 12 12 8 16\" class=\"svelte-1ob1zsm\"></polyline><line x1=\"12\" y1=\"12\" x2=\"12\" y2=\"21\" class=\"svelte-1ob1zsm\"></line><path d=\"M20.39 18.39A5 5 0 0 0 18 9h-1.26A8 8 0 1 0 3 16.3\" class=\"svelte-1ob1zsm\"></path></svg>`);\n\t\t}\n\t\t$$renderer.push(`<!--]--></span> <div class=\"action-content svelte-1ob1zsm\"><span class=\"action-title svelte-1ob1zsm\">Apply Config + Restart</span> <span class=\"action-desc svelte-1ob1zsm\">Update configuration and restart running services</span> <span class=\"action-hint svelte-1ob1zsm\">Restarts services with updated compose config.</span></div> <span class=\"action-arrow svelte-1ob1zsm\"><svg aria-hidden=\"true\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"svelte-1ob1zsm\"><polyline points=\"9 18 15 12 9 6\" class=\"svelte-1ob1zsm\"></polyline></svg></span></button> <a class=\"action-item svelte-1ob1zsm\" href=\"/setup?rerun=1\"><span class=\"action-icon action-icon--purple svelte-1ob1zsm\"><svg aria-hidden=\"true\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"svelte-1ob1zsm\"><circle cx=\"12\" cy=\"12\" r=\"3\" class=\"svelte-1ob1zsm\"></circle><path d=\"M19.07 4.93a10 10 0 0 1 0 14.14M4.93 4.93a10 10 0 0 0 0 14.14\" class=\"svelte-1ob1zsm\"></path></svg></span> <div class=\"action-content svelte-1ob1zsm\"><span class=\"action-title svelte-1ob1zsm\">Update Settings</span> <span class=\"action-desc svelte-1ob1zsm\">Re-run setup wizard to change providers, channels, or options</span></div> <span class=\"action-arrow svelte-1ob1zsm\"><svg aria-hidden=\"true\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"svelte-1ob1zsm\"><polyline points=\"9 18 15 12 9 6\" class=\"svelte-1ob1zsm\"></polyline></svg></span></a> <a class=\"action-item svelte-1ob1zsm\" href=\"/advanced\"><span class=\"action-icon action-icon--blue svelte-1ob1zsm\"><svg aria-hidden=\"true\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"svelte-1ob1zsm\"><rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\" class=\"svelte-1ob1zsm\"></rect><path d=\"M9 9h6v6H9z\" class=\"svelte-1ob1zsm\"></path></svg></span> <div class=\"action-content svelte-1ob1zsm\"><span class=\"action-title svelte-1ob1zsm\">Advanced Chat (OpenCode)</span> <span class=\"action-desc svelte-1ob1zsm\">Open the full OpenCode UI embedded in OpenPalm — host machine only</span></div> <span class=\"action-arrow svelte-1ob1zsm\"><svg aria-hidden=\"true\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"svelte-1ob1zsm\"><polyline points=\"9 18 15 12 9 6\" class=\"svelte-1ob1zsm\"></polyline></svg></span></a></div></div></div> <div class=\"panel svelte-1ob1zsm\"><div class=\"panel-header svelte-1ob1zsm\"><h2 class=\"svelte-1ob1zsm\">System Information</h2></div> <div class=\"panel-body svelte-1ob1zsm\"><div class=\"info-grid svelte-1ob1zsm\"><div class=\"info-item svelte-1ob1zsm\"><span class=\"info-label svelte-1ob1zsm\">Admin API</span> <span class=\"info-value svelte-1ob1zsm\">`);\n\t\tif (adminHealth) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<span${attr_class(\"badge svelte-1ob1zsm\", void 0, {\n\t\t\t\t\"badge-success\": adminHealth.status === \"ok\",\n\t\t\t\t\"badge-danger\": adminHealth.status !== \"ok\"\n\t\t\t})}>${escape_html(adminHealth.status)}</span>`);\n\t\t} else {\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<span class=\"badge badge-idle svelte-1ob1zsm\">Unknown</span>`);\n\t\t}\n\t\t$$renderer.push(`<!--]--></span></div> <div class=\"info-item svelte-1ob1zsm\"><span class=\"info-label svelte-1ob1zsm\">Guardian</span> <span class=\"info-value svelte-1ob1zsm\">`);\n\t\tif (guardianContainerStatus() === \"running\") {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<span class=\"badge badge-success svelte-1ob1zsm\">Running</span>`);\n\t\t} else if (guardianContainerStatus() === \"stopped\") {\n\t\t\t$$renderer.push(\"<!--[1-->\");\n\t\t\t$$renderer.push(`<span class=\"badge badge-danger svelte-1ob1zsm\">Stopped</span>`);\n\t\t} else {\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<span class=\"badge badge-idle svelte-1ob1zsm\">Unknown</span>`);\n\t\t}\n\t\t$$renderer.push(`<!--]--></span></div> <div class=\"info-item svelte-1ob1zsm\"><span class=\"info-label svelte-1ob1zsm\">Containers</span> <span class=\"info-value svelte-1ob1zsm\">`);\n\t\tif (containerCounts()) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\tif (containerCounts().running === containerCounts().total) {\n\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t$$renderer.push(`<span class=\"badge badge-success svelte-1ob1zsm\">${escape_html(containerCounts().running)} / ${escape_html(containerCounts().total)} running</span>`);\n\t\t\t} else if (containerCounts().running > 0) {\n\t\t\t\t$$renderer.push(\"<!--[1-->\");\n\t\t\t\t$$renderer.push(`<span class=\"badge badge-warning svelte-1ob1zsm\">${escape_html(containerCounts().running)} / ${escape_html(containerCounts().total)} running</span>`);\n\t\t\t} else {\n\t\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<span class=\"badge badge-danger svelte-1ob1zsm\">0 / ${escape_html(containerCounts().total)} running</span>`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]-->`);\n\t\t} else {\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<span class=\"badge badge-idle svelte-1ob1zsm\">Unknown</span>`);\n\t\t}\n\t\t$$renderer.push(`<!--]--></span></div> <div class=\"info-item svelte-1ob1zsm\"><span class=\"info-label svelte-1ob1zsm\">Assistant</span> <span class=\"info-value svelte-1ob1zsm\">`);\n\t\tif (assistantStatus() === \"connected\") {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<span class=\"badge badge-success svelte-1ob1zsm\">Connected</span>`);\n\t\t} else if (assistantStatus() === \"disconnected\") {\n\t\t\t$$renderer.push(\"<!--[1-->\");\n\t\t\t$$renderer.push(`<span class=\"badge badge-danger svelte-1ob1zsm\">Disconnected</span>`);\n\t\t} else {\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<span class=\"badge badge-idle svelte-1ob1zsm\">Unknown</span>`);\n\t\t}\n\t\t$$renderer.push(`<!--]--></span></div> <div class=\"info-item svelte-1ob1zsm\"><span class=\"info-label svelte-1ob1zsm\">Automations</span> <span class=\"info-value svelte-1ob1zsm\">`);\n\t\tif (automationsData) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<span class=\"info-mono svelte-1ob1zsm\">${escape_html(enabledAutomationCount())} active / ${escape_html(automationCount())} total</span>`);\n\t\t} else {\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<span class=\"badge badge-idle svelte-1ob1zsm\">Loading</span>`);\n\t\t}\n\t\t$$renderer.push(`<!--]--></span></div></div></div></div> <div class=\"panel svelte-1ob1zsm\"><div class=\"panel-header svelte-1ob1zsm\"><h2 class=\"svelte-1ob1zsm\">Version Management</h2></div> <div class=\"panel-body svelte-1ob1zsm\"><div class=\"version-section svelte-1ob1zsm\"><div class=\"version-row svelte-1ob1zsm\"><span class=\"version-label svelte-1ob1zsm\">Stack images</span> <code class=\"version-value version-value--active svelte-1ob1zsm\">${escape_html(currentImageTag || \"—\")}</code></div> <div class=\"version-input-row svelte-1ob1zsm\">`);\n\t\tif (releasesLoading) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<div class=\"version-select-skeleton svelte-1ob1zsm\"></div>`);\n\t\t} else if (releases.length > 0) {\n\t\t\t$$renderer.push(\"<!--[1-->\");\n\t\t\t$$renderer.select({\n\t\t\t\tclass: \"version-select\",\n\t\t\t\tvalue: selectedImageTag,\n\t\t\t\tonchange: (e) => onSelectedImageTagChange(e.currentTarget.value),\n\t\t\t\tdisabled: tagChangeLoading || anyDangerousLoading\n\t\t\t}, ($$renderer) => {\n\t\t\t\t$$renderer.option({\n\t\t\t\t\tvalue: \"latest\",\n\t\t\t\t\tclass: \"\"\n\t\t\t\t}, ($$renderer) => {\n\t\t\t\t\t$$renderer.push(`latest`);\n\t\t\t\t}, \"svelte-1ob1zsm\");\n\t\t\t\t$$renderer.push(`<!--[-->`);\n\t\t\t\tconst each_array = ensure_array_like(releases);\n\t\t\t\tfor (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {\n\t\t\t\t\tlet r = each_array[$$index];\n\t\t\t\t\t$$renderer.option({\n\t\t\t\t\t\tvalue: r.tag,\n\t\t\t\t\t\tclass: \"\"\n\t\t\t\t\t}, ($$renderer) => {\n\t\t\t\t\t\t$$renderer.push(`${escape_html(r.tag)}${escape_html(r.prerelease ? \" (pre-release)\" : \"\")}`);\n\t\t\t\t\t}, \"svelte-1ob1zsm\");\n\t\t\t\t}\n\t\t\t\t$$renderer.push(`<!--]-->`);\n\t\t\t}, \"svelte-1ob1zsm\");\n\t\t} else {\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<input class=\"version-input svelte-1ob1zsm\" type=\"text\" placeholder=\"e.g. 0.11.0 or latest\"${attr(\"value\", selectedImageTag)}${attr(\"disabled\", tagChangeLoading || anyDangerousLoading, true)}/>`);\n\t\t}\n\t\t$$renderer.push(`<!--]--> <button class=\"btn btn-sm svelte-1ob1zsm\"${attr(\"disabled\", !selectedImageTag.trim() || tagChangeLoading || anyDangerousLoading, true)}>`);\n\t\tif (tagChangeLoading) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<span class=\"spinner spinner-sm svelte-1ob1zsm\"></span> Applying…`);\n\t\t} else {\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`Pull & Restart`);\n\t\t}\n\t\t$$renderer.push(`<!--]--></button></div> <p class=\"version-hint svelte-1ob1zsm\">Pulls the selected images and restarts services.</p></div> <div class=\"version-divider svelte-1ob1zsm\"></div> <div class=\"version-section svelte-1ob1zsm\"><div class=\"version-row svelte-1ob1zsm\"><span class=\"version-label svelte-1ob1zsm\">Upgrade Stack</span></div> <div class=\"version-input-row svelte-1ob1zsm\"><button class=\"btn btn-sm btn-warning svelte-1ob1zsm\"${attr(\"disabled\", anyDangerousLoading || !tokenStored, true)}>`);\n\t\tif (upgradeLoading) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<span class=\"spinner spinner-sm svelte-1ob1zsm\"></span> Upgrading…`);\n\t\t} else {\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`Upgrade to Latest`);\n\t\t}\n\t\t$$renderer.push(`<!--]--></button></div> <p class=\"version-hint svelte-1ob1zsm\">Downloads the latest assets, pulls images, and restarts services. Backs up current config first.</p></div> <div class=\"version-divider svelte-1ob1zsm\"></div> `);\n\t\tif (inElectron) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<div class=\"version-section svelte-1ob1zsm\"><div class=\"version-input-row svelte-1ob1zsm\">`);\n\t\t\tif (uiVersionsLoading) {\n\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t$$renderer.push(`<div class=\"version-select-skeleton svelte-1ob1zsm\"></div>`);\n\t\t\t} else if (uiVersions.length > 0) {\n\t\t\t\t$$renderer.push(\"<!--[1-->\");\n\t\t\t\t$$renderer.select({\n\t\t\t\t\tclass: \"version-select\",\n\t\t\t\t\tvalue: selectedUiTag,\n\t\t\t\t\tonchange: (e) => onSelectedUiTagChange(e.currentTarget.value),\n\t\t\t\t\tdisabled: uiDownloadLoading\n\t\t\t\t}, ($$renderer) => {\n\t\t\t\t\t$$renderer.push(`<!--[-->`);\n\t\t\t\t\tconst each_array_1 = ensure_array_like(uiVersions);\n\t\t\t\t\tfor (let $$index_1 = 0, $$length = each_array_1.length; $$index_1 < $$length; $$index_1++) {\n\t\t\t\t\t\tlet v = each_array_1[$$index_1];\n\t\t\t\t\t\t$$renderer.option({\n\t\t\t\t\t\t\tvalue: v.version,\n\t\t\t\t\t\t\tclass: \"\"\n\t\t\t\t\t\t}, ($$renderer) => {\n\t\t\t\t\t\t\t$$renderer.push(`${escape_html(uiVersionLabel(v))}`);\n\t\t\t\t\t\t}, \"svelte-1ob1zsm\");\n\t\t\t\t\t}\n\t\t\t\t\t$$renderer.push(`<!--]-->`);\n\t\t\t\t}, \"svelte-1ob1zsm\");\n\t\t\t} else {\n\t\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<input class=\"version-input svelte-1ob1zsm\" type=\"text\" placeholder=\"e.g. 0.11.0-beta.7\"${attr(\"value\", selectedUiTag)}${attr(\"disabled\", uiDownloadLoading, true)}/>`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--> <button class=\"btn btn-sm svelte-1ob1zsm\"${attr(\"disabled\", !selectedUiTag.trim() || uiDownloadLoading, true)}>`);\n\t\t\tif (uiDownloadLoading) {\n\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t$$renderer.push(`<span class=\"spinner spinner-sm svelte-1ob1zsm\"></span> Downloading…`);\n\t\t\t} else {\n\t\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`Download`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--></button></div> `);\n\t\t\tif (uiDownloadReady) {\n\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t$$renderer.push(`<div class=\"version-restart-prompt svelte-1ob1zsm\">UI updated. <button class=\"btn btn-sm btn-primary svelte-1ob1zsm\">Restart App</button></div>`);\n\t\t\t} else {\n\t\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<p class=\"version-hint svelte-1ob1zsm\">Downloads and replaces the UI from GitHub. Takes effect on restart.</p>`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--></div>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--></div></div></div>`);\n\t});\n}\n//#endregion\n//#region src/lib/components/AddonsTab.svelte\nfunction AddonsTab($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { onAuthError } = $$props;\n\t\tlet addons = [];\n\t\tlet loading = false;\n\t\tlet actionLoading = null;\n\t\tlet expanded = null;\n\t\tlet credFields = {};\n\t\tlet credValues = {};\n\t\tlet credLoading = null;\n\t\tlet credSaving = null;\n\t\t$$renderer.push(`<div class=\"panel\" role=\"tabpanel\"><div class=\"panel-header\"><div><h2>Addons</h2> <p class=\"panel-subtitle\">Optional features you can enable or disable. Credentials are written to the stack config and applied when the addon container restarts.</p></div> <button class=\"btn btn-secondary btn-sm\"${attr(\"disabled\", loading, true)}>`);\n\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> Refresh</button></div> <div class=\"panel-body panel-body--flush\">`);\n\t\tif (addons.length === 0) {\n\t\t\t$$renderer.push(\"<!--[2-->\");\n\t\t\t$$renderer.push(`<div class=\"empty-state\"><svg aria-hidden=\"true\" width=\"40\" height=\"40\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12 2L2 7l10 5 10-5-10-5z\"></path><path d=\"M2 17l10 5 10-5\"></path><path d=\"M2 12l10 5 10-5\"></path></svg> <p>No addons found in registry/addons/.</p></div>`);\n\t\t} else {\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<div class=\"addon-table svelte-faz2je\"><div class=\"addon-table-header svelte-faz2je\"><span class=\"addon-col addon-col--name svelte-faz2je\">Addon</span> <span class=\"addon-col addon-col--status svelte-faz2je\">Status</span> <span class=\"addon-col addon-col--actions svelte-faz2je\"></span></div> <!--[-->`);\n\t\t\tconst each_array = ensure_array_like(addons);\n\t\t\tfor (let $$index_1 = 0, $$length = each_array.length; $$index_1 < $$length; $$index_1++) {\n\t\t\t\tlet addon = each_array[$$index_1];\n\t\t\t\t$$renderer.push(`<div class=\"addon-row svelte-faz2je\"><span class=\"addon-col addon-col--name addon-name svelte-faz2je\">${escape_html(addon.name)}</span> <span class=\"addon-col addon-col--status svelte-faz2je\"><span${attr_class(\"badge\", void 0, {\n\t\t\t\t\t\"badge-enabled\": addon.enabled,\n\t\t\t\t\t\"badge-disabled\": !addon.enabled\n\t\t\t\t})}>${escape_html(addon.enabled ? \"enabled\" : \"disabled\")}</span></span> <span class=\"addon-col addon-col--actions svelte-faz2je\"><button class=\"btn btn-sm btn-ghost\"${attr(\"disabled\", !addon.available, true)}${attr(\"aria-expanded\", expanded === addon.name)}>${escape_html(expanded === addon.name ? \"Hide\" : \"Credentials\")}</button> <button${attr_class(\"btn btn-sm\", void 0, {\n\t\t\t\t\t\"btn-danger\": addon.enabled,\n\t\t\t\t\t\"btn-outline\": !addon.enabled\n\t\t\t\t})}${attr(\"disabled\", actionLoading === addon.name || !addon.available, true)}>`);\n\t\t\t\tif (actionLoading === addon.name) {\n\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t$$renderer.push(`<span class=\"spinner\"></span>`);\n\t\t\t\t} else {\n\t\t\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t$$renderer.push(`${escape_html(addon.enabled ? \"Disable\" : \"Enable\")}`);\n\t\t\t\t}\n\t\t\t\t$$renderer.push(`<!--]--></button></span></div> `);\n\t\t\t\tif (expanded === addon.name) {\n\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t$$renderer.push(`<div class=\"addon-creds svelte-faz2je\">`);\n\t\t\t\t\tif (credLoading === addon.name) {\n\t\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t\t$$renderer.push(`<div class=\"creds-loading svelte-faz2je\"><span class=\"spinner\"></span> Loading credentials...</div>`);\n\t\t\t\t\t} else if ((credFields[addon.name]?.length ?? 0) === 0) {\n\t\t\t\t\t\t$$renderer.push(\"<!--[1-->\");\n\t\t\t\t\t\t$$renderer.push(`<p class=\"creds-empty svelte-faz2je\">This addon has no configurable env vars (compose overlay only).</p>`);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t\t$$renderer.push(`<p class=\"creds-hint svelte-faz2je\">Values are written to <code>knowledge/env/stack.env</code> and read by the addon container on next recreate.</p> <!--[-->`);\n\t\t\t\t\t\tconst each_array_1 = ensure_array_like(credFields[addon.name] ?? []);\n\t\t\t\t\t\tfor (let $$index = 0, $$length = each_array_1.length; $$index < $$length; $$index++) {\n\t\t\t\t\t\t\tlet field = each_array_1[$$index];\n\t\t\t\t\t\t\t$$renderer.push(`<div class=\"creds-row svelte-faz2je\"><label class=\"creds-label svelte-faz2je\"${attr(\"for\", `cred-${stringify(addon.name)}-${stringify(field.key)}`)}><code class=\"svelte-faz2je\">${escape_html(field.key)}</code> `);\n\t\t\t\t\t\t\tif (field.sensitive) {\n\t\t\t\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t\t\t\t$$renderer.push(`<span class=\"creds-tag svelte-faz2je\">sensitive</span>`);\n\t\t\t\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t\t\t$$renderer.push(`<!--]--> `);\n\t\t\t\t\t\t\tif (field.sensitive && field.set) {\n\t\t\t\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t\t\t\t$$renderer.push(`<span class=\"creds-tag creds-tag--set svelte-faz2je\">set</span>`);\n\t\t\t\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t\t\t$$renderer.push(`<!--]--></label> `);\n\t\t\t\t\t\t\tif (field.description) {\n\t\t\t\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t\t\t\t$$renderer.push(`<p class=\"creds-desc svelte-faz2je\">${escape_html(field.description)}</p>`);\n\t\t\t\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t\t\t$$renderer.push(`<!--]--> <input${attr(\"id\", `cred-${stringify(addon.name)}-${stringify(field.key)}`)}${attr(\"type\", field.sensitive ? \"password\" : \"text\")} class=\"form-input svelte-faz2je\"${attr(\"placeholder\", field.sensitive ? field.set ? \"••••••• (leave empty to keep current)\" : field.default : field.default)}${attr(\"value\", credValues[addon.name][field.key])} autocomplete=\"off\"/></div>`);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$$renderer.push(`<!--]--> <div class=\"creds-actions svelte-faz2je\"><button class=\"btn btn-primary btn-sm\"${attr(\"disabled\", credSaving === addon.name, true)}>`);\n\t\t\t\t\t\tif (credSaving === addon.name) {\n\t\t\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t\t\t$$renderer.push(`<span class=\"spinner\"></span>`);\n\t\t\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t\t$$renderer.push(`<!--]--> Save</button></div>`);\n\t\t\t\t\t}\n\t\t\t\t\t$$renderer.push(`<!--]--></div>`);\n\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<!--]-->`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--></div>`);\n\t\t}\n\t\t$$renderer.push(`<!--]--></div></div>`);\n\t});\n}\n//#endregion\n//#region src/lib/components/ContainersTab.svelte\nfunction ContainersTab($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { containerData, serviceEntries, loading, error, tokenStored, selectedContainerId, onToggleContainer, onStart, onStop, onRestart, onRefresh, onPullImages, lastUpdated, pullLoading } = $$props;\n\t\tlet hasEntries = derived(() => serviceEntries.length > 0);\n\t\tlet rowState = {};\n\t\tfunction parseImageTag(image) {\n\t\t\tconst atIdx = image.indexOf(\"@\");\n\t\t\tconst base = atIdx > -1 ? image.slice(0, atIdx) : image;\n\t\t\tconst colonIdx = base.lastIndexOf(\":\");\n\t\t\tif (colonIdx > -1) return {\n\t\t\t\tname: base.slice(0, colonIdx),\n\t\t\t\ttag: base.slice(colonIdx + 1)\n\t\t\t};\n\t\t\treturn {\n\t\t\t\tname: base,\n\t\t\t\ttag: \"latest\"\n\t\t\t};\n\t\t}\n\t\tfunction containerStatusColor(state) {\n\t\t\tif (state === \"running\") return \"success\";\n\t\t\tif (state === \"exited\" || state === \"dead\" || state === \"stopped\") return \"danger\";\n\t\t\tif (state === \"restarting\" || state === \"paused\") return \"warning\";\n\t\t\treturn \"idle\";\n\t\t}\n\t\t$$renderer.push(`<div class=\"panel\" role=\"tabpanel\"><div class=\"panel-header\"><h2>Container Status</h2> <div class=\"panel-header-actions\">`);\n\t\tif (lastUpdated) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<span class=\"last-updated svelte-ocbovv\">Updated ${escape_html(lastUpdated)}</span>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> <button class=\"btn btn-secondary btn-sm\"${attr(\"disabled\", pullLoading || !tokenStored, true)}>`);\n\t\tif (pullLoading) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<span class=\"spinner\"></span>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> Pull Images</button> <button class=\"btn btn-secondary btn-sm\"${attr(\"disabled\", loading || !tokenStored, true)}>`);\n\t\tif (loading) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<span class=\"spinner\"></span>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> Refresh</button></div></div> <div class=\"panel-body panel-body--flush\">`);\n\t\tif (hasEntries()) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<div class=\"container-table svelte-ocbovv\"><div class=\"container-table-header svelte-ocbovv\"><span class=\"ct-col ct-col--name svelte-ocbovv\">Container</span> <span class=\"ct-col ct-col--image svelte-ocbovv\">Image</span> <span class=\"ct-col ct-col--tag svelte-ocbovv\">Tag</span> <span class=\"ct-col ct-col--status svelte-ocbovv\">Status</span> <span class=\"ct-col ct-col--actions svelte-ocbovv\"></span></div> <!--[-->`);\n\t\t\tconst each_array = ensure_array_like(serviceEntries);\n\t\t\tfor (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {\n\t\t\t\tlet entry = each_array[$$index];\n\t\t\t\tconst selected = selectedContainerId === entry.id;\n\t\t\t\tconst entryActionInFlight = rowState[entry.id]?.inFlight ?? null;\n\t\t\t\tconst entryConfirmAction = rowState[entry.id]?.confirm ?? null;\n\t\t\t\tconst entryFeedback = rowState[entry.id]?.feedback ?? null;\n\t\t\t\tconst img = entry.docker ? parseImageTag(entry.docker.Image) : null;\n\t\t\t\tconst isAnyActionInFlight = entryActionInFlight !== null;\n\t\t\t\tconst isNotCreated = !entry.docker;\n\t\t\t\t$$renderer.push(`<button class=\"container-table-row container-table-row--clickable svelte-ocbovv\"${attr(\"aria-expanded\", selected)}><span class=\"ct-col ct-col--name svelte-ocbovv\"><span${attr_class(`ct-indicator ct-indicator--${stringify(containerStatusColor(entry.state))}`, \"svelte-ocbovv\")}></span> <span class=\"ct-service-name svelte-ocbovv\">${escape_html(entry.service)}</span></span> <span class=\"ct-col ct-col--image ct-mono svelte-ocbovv\">`);\n\t\t\t\tif (img) {\n\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t$$renderer.push(`${escape_html(img.name)}`);\n\t\t\t\t} else {\n\t\t\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t$$renderer.push(`<span class=\"ct-not-created svelte-ocbovv\">--</span>`);\n\t\t\t\t}\n\t\t\t\t$$renderer.push(`<!--]--></span> <span class=\"ct-col ct-col--tag svelte-ocbovv\">`);\n\t\t\t\tif (img) {\n\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t$$renderer.push(`<span class=\"tag-badge svelte-ocbovv\">${escape_html(img.tag)}</span>`);\n\t\t\t\t} else {\n\t\t\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t$$renderer.push(`<span class=\"ct-not-created svelte-ocbovv\">--</span>`);\n\t\t\t\t}\n\t\t\t\t$$renderer.push(`<!--]--></span> <span class=\"ct-col ct-col--status svelte-ocbovv\"><span${attr_class(`badge badge-${stringify(containerStatusColor(entry.state))}`, \"svelte-ocbovv\")}>${escape_html(entry.state)}</span></span> <span class=\"ct-col ct-col--actions svelte-ocbovv\"><svg aria-hidden=\"true\" width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"${attr_class(\"svelte-ocbovv\", void 0, { \"ct-chevron-open\": selected })}><polyline points=\"6 9 12 15 18 9\"></polyline></svg></span></button> `);\n\t\t\t\tif (selected) {\n\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t$$renderer.push(`<div class=\"container-detail svelte-ocbovv\">`);\n\t\t\t\t\tif (entry.docker) {\n\t\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t\tconst container = entry.docker;\n\t\t\t\t\t\t$$renderer.push(`<div class=\"detail-grid svelte-ocbovv\"><div class=\"detail-item svelte-ocbovv\"><span class=\"detail-label svelte-ocbovv\">Container ID</span> <span class=\"detail-value detail-mono svelte-ocbovv\">${escape_html(container.ID)}</span></div> <div class=\"detail-item svelte-ocbovv\"><span class=\"detail-label svelte-ocbovv\">Name</span> <span class=\"detail-value detail-mono svelte-ocbovv\">${escape_html(container.Name || container.Names)}</span></div> <div class=\"detail-item svelte-ocbovv\"><span class=\"detail-label svelte-ocbovv\">Image</span> <span class=\"detail-value detail-mono svelte-ocbovv\">${escape_html(container.Image)}</span></div> `);\n\t\t\t\t\t\tif (img) {\n\t\t\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t\t\t$$renderer.push(`<div class=\"detail-item svelte-ocbovv\"><span class=\"detail-label svelte-ocbovv\">Image Name</span> <span class=\"detail-value detail-mono svelte-ocbovv\">${escape_html(img.name)}</span></div> <div class=\"detail-item svelte-ocbovv\"><span class=\"detail-label svelte-ocbovv\">Tag / Digest</span> <span class=\"detail-value svelte-ocbovv\"><span class=\"tag-badge tag-badge--lg svelte-ocbovv\">${escape_html(img.tag)}</span> `);\n\t\t\t\t\t\t\tif (container.Image.includes(\"@\")) {\n\t\t\t\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t\t\t\t$$renderer.push(`<span class=\"detail-mono detail-digest svelte-ocbovv\">${escape_html(container.Image.split(\"@\")[1]?.slice(0, 19))}...</span>`);\n\t\t\t\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t\t\t$$renderer.push(`<!--]--></span></div>`);\n\t\t\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t\t$$renderer.push(`<!--]--> <div class=\"detail-item svelte-ocbovv\"><span class=\"detail-label svelte-ocbovv\">State</span> <span class=\"detail-value svelte-ocbovv\"><span${attr_class(`badge badge-${stringify(containerStatusColor(container.State))}`, \"svelte-ocbovv\")}>${escape_html(container.State)}</span></span></div> <div class=\"detail-item svelte-ocbovv\"><span class=\"detail-label svelte-ocbovv\">Status</span> <span class=\"detail-value svelte-ocbovv\">${escape_html(container.Status)}</span></div> `);\n\t\t\t\t\t\tif (container.Health) {\n\t\t\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t\t\t$$renderer.push(`<div class=\"detail-item svelte-ocbovv\"><span class=\"detail-label svelte-ocbovv\">Health</span> <span class=\"detail-value svelte-ocbovv\"><span${attr_class(\"badge\", void 0, {\n\t\t\t\t\t\t\t\t\"badge-success\": container.Health === \"healthy\",\n\t\t\t\t\t\t\t\t\"badge-warning\": container.Health === \"starting\",\n\t\t\t\t\t\t\t\t\"badge-danger\": container.Health === \"unhealthy\",\n\t\t\t\t\t\t\t\t\"badge-idle\": ![\n\t\t\t\t\t\t\t\t\t\"healthy\",\n\t\t\t\t\t\t\t\t\t\"starting\",\n\t\t\t\t\t\t\t\t\t\"unhealthy\"\n\t\t\t\t\t\t\t\t].includes(container.Health)\n\t\t\t\t\t\t\t})}>${escape_html(container.Health)}</span></span></div>`);\n\t\t\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t\t$$renderer.push(`<!--]--> `);\n\t\t\t\t\t\tif (container.Ports) {\n\t\t\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t\t\t$$renderer.push(`<div class=\"detail-item svelte-ocbovv\"><span class=\"detail-label svelte-ocbovv\">Ports</span> <span class=\"detail-value detail-mono svelte-ocbovv\">${escape_html(container.Ports)}</span></div>`);\n\t\t\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t\t$$renderer.push(`<!--]--> `);\n\t\t\t\t\t\tif (container.RunningFor) {\n\t\t\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t\t\t$$renderer.push(`<div class=\"detail-item svelte-ocbovv\"><span class=\"detail-label svelte-ocbovv\">Uptime</span> <span class=\"detail-value svelte-ocbovv\">${escape_html(container.RunningFor)}</span></div>`);\n\t\t\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t\t$$renderer.push(`<!--]--> `);\n\t\t\t\t\t\tif (container.CreatedAt) {\n\t\t\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t\t\t$$renderer.push(`<div class=\"detail-item svelte-ocbovv\"><span class=\"detail-label svelte-ocbovv\">Created</span> <span class=\"detail-value svelte-ocbovv\">${escape_html(container.CreatedAt)}</span></div>`);\n\t\t\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t\t$$renderer.push(`<!--]--> `);\n\t\t\t\t\t\tif (container.Project) {\n\t\t\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t\t\t$$renderer.push(`<div class=\"detail-item svelte-ocbovv\"><span class=\"detail-label svelte-ocbovv\">Project</span> <span class=\"detail-value detail-mono svelte-ocbovv\">${escape_html(container.Project)}</span></div>`);\n\t\t\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t\t$$renderer.push(`<!--]--></div>`);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t\t$$renderer.push(`<div class=\"detail-not-created svelte-ocbovv\"><p class=\"svelte-ocbovv\">Container has not been created yet. Use <strong>Start</strong> to create and start it.</p></div>`);\n\t\t\t\t\t}\n\t\t\t\t\t$$renderer.push(`<!--]--> `);\n\t\t\t\t\tif (entryFeedback) {\n\t\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t\t$$renderer.push(`<div${attr_class(`action-feedback action-feedback--${stringify(entryFeedback.type)}`, \"svelte-ocbovv\")} role=\"status\">${escape_html(entryFeedback.message)}</div>`);\n\t\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t$$renderer.push(`<!--]--> `);\n\t\t\t\t\tif (entryConfirmAction) {\n\t\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t\t$$renderer.push(`<div class=\"confirm-bar svelte-ocbovv\" role=\"alert\"><span class=\"confirm-text svelte-ocbovv\">${escape_html(entryConfirmAction.charAt(0).toUpperCase() + entryConfirmAction.slice(1))} <strong>${escape_html(entry.service)}</strong>?</span> <div class=\"confirm-actions svelte-ocbovv\"><button class=\"btn btn-danger btn-sm\">Confirm</button> <button class=\"btn btn-secondary btn-sm\">Cancel</button></div></div>`);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t\t$$renderer.push(`<div class=\"detail-actions svelte-ocbovv\">`);\n\t\t\t\t\t\tif (isNotCreated) {\n\t\t\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t\t\t$$renderer.push(`<button class=\"btn btn-primary btn-sm\"${attr(\"disabled\", isAnyActionInFlight, true)}>`);\n\t\t\t\t\t\t\tif (entryActionInFlight === \"start\") {\n\t\t\t\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t\t\t\t$$renderer.push(`<span class=\"spinner-inline svelte-ocbovv\"></span>`);\n\t\t\t\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t\t\t$$renderer.push(`<!--]--> Start</button>`);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t\t\t$$renderer.push(`<button class=\"btn btn-secondary btn-sm\"${attr(\"disabled\", isAnyActionInFlight, true)}>`);\n\t\t\t\t\t\t\tif (entryActionInFlight === \"start\") {\n\t\t\t\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t\t\t\t$$renderer.push(`<span class=\"spinner-inline svelte-ocbovv\"></span>`);\n\t\t\t\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t\t\t$$renderer.push(`<!--]--> Start</button> <button class=\"btn btn-danger btn-sm\"${attr(\"disabled\", isAnyActionInFlight, true)}>`);\n\t\t\t\t\t\t\tif (entryActionInFlight === \"stop\") {\n\t\t\t\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t\t\t\t$$renderer.push(`<span class=\"spinner-inline svelte-ocbovv\"></span>`);\n\t\t\t\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t\t\t$$renderer.push(`<!--]--> Stop</button> <button class=\"btn btn-secondary btn-sm\"${attr(\"disabled\", isAnyActionInFlight, true)}>`);\n\t\t\t\t\t\t\tif (entryActionInFlight === \"restart\") {\n\t\t\t\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t\t\t\t$$renderer.push(`<span class=\"spinner-inline svelte-ocbovv\"></span>`);\n\t\t\t\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t\t\t$$renderer.push(`<!--]--> Restart</button>`);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$$renderer.push(`<!--]--></div>`);\n\t\t\t\t\t}\n\t\t\t\t\t$$renderer.push(`<!--]--></div>`);\n\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<!--]-->`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--></div>`);\n\t\t} else {\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<div class=\"empty-state svelte-ocbovv\"><svg aria-hidden=\"true\" width=\"40\" height=\"40\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"2\" y=\"2\" width=\"20\" height=\"8\" rx=\"2\" ry=\"2\"></rect><rect x=\"2\" y=\"14\" width=\"20\" height=\"8\" rx=\"2\" ry=\"2\"></rect><line x1=\"6\" y1=\"6\" x2=\"6.01\" y2=\"6\"></line><line x1=\"6\" y1=\"18\" x2=\"6.01\" y2=\"18\"></line></svg> `);\n\t\t\tif (loading) {\n\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t$$renderer.push(`<p>Loading container status...</p>`);\n\t\t\t} else if (error) {\n\t\t\t\t$$renderer.push(\"<!--[1-->\");\n\t\t\t\t$$renderer.push(`<p class=\"text-danger svelte-ocbovv\">${escape_html(error)}</p> <button class=\"btn btn-secondary btn-sm svelte-ocbovv\"${attr(\"disabled\", !tokenStored, true)}>Try Again</button>`);\n\t\t\t} else if (containerData && !containerData.dockerAvailable) {\n\t\t\t\t$$renderer.push(\"<!--[2-->\");\n\t\t\t\t$$renderer.push(`<p>Docker is not available on this host.</p> <p class=\"hint svelte-ocbovv\">Ensure Docker is running and the admin service has access to the Docker socket.</p>`);\n\t\t\t} else {\n\t\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<p>No containers found. Services may not be installed yet.</p>`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--></div>`);\n\t\t}\n\t\t$$renderer.push(`<!--]--></div></div>`);\n\t});\n}\n//#endregion\n//#region src/lib/components/AutomationsTab.svelte\nfunction AutomationsTab($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { data, loading, error, tokenStored, onRefresh } = $$props;\n\t\tlet hasAutomations = derived(() => data !== null && Array.isArray(data.automations) && data.automations.length > 0);\n\t\t/** Reverse map: cron expression -> friendly label */\n\t\tconst CRON_TO_LABEL = {\n\t\t\t\"* * * * *\": \"Every minute\",\n\t\t\t\"*/5 * * * *\": \"Every 5 minutes\",\n\t\t\t\"*/15 * * * *\": \"Every 15 minutes\",\n\t\t\t\"0 * * * *\": \"Every hour\",\n\t\t\t\"0 0 * * *\": \"Daily at midnight\",\n\t\t\t\"0 8 * * *\": \"Daily at 8 AM\",\n\t\t\t\"0 0 * * 0\": \"Weekly (Sunday midnight)\",\n\t\t\t\"0 3 * * 0\": \"Weekly (Sunday 3 AM)\",\n\t\t\t\"0 4 * * 0\": \"Weekly (Sunday 4 AM)\"\n\t\t};\n\t\tfunction formatSchedule(cron) {\n\t\t\tconst friendly = CRON_TO_LABEL[cron];\n\t\t\tif (friendly) return {\n\t\t\t\tlabel: friendly,\n\t\t\t\tcron\n\t\t\t};\n\t\t\treturn null;\n\t\t}\n\t\t$$renderer.push(`<div class=\"panel\" role=\"tabpanel\"><div class=\"panel-header\"><div><h2>Automations</h2> <p class=\"panel-subtitle\">Scheduled tasks read from <code>~/.openpalm/knowledge/tasks/</code>. Add or edit task files there to manage automations — changes take effect on refresh.</p></div> <div class=\"panel-header-actions\"><button class=\"btn btn-secondary btn-sm\"${attr(\"disabled\", !tokenStored, true)}>New task</button> <button class=\"btn btn-secondary btn-sm\"${attr(\"disabled\", loading || !tokenStored, true)}>`);\n\t\tif (loading) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<span class=\"spinner\"></span>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> Refresh</button></div></div> `);\n\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> <div class=\"panel-body\">`);\n\t\tif (hasAutomations() && data) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<div class=\"automation-list svelte-1uqcxu1\"><!--[-->`);\n\t\t\tconst each_array = ensure_array_like(data.automations);\n\t\t\tfor (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {\n\t\t\t\tlet automation = each_array[$$index];\n\t\t\t\tconst preset = formatSchedule(automation.schedule);\n\t\t\t\t$$renderer.push(`<div class=\"automation-card svelte-1uqcxu1\"><div class=\"automation-row svelte-1uqcxu1\"><div class=\"automation-main svelte-1uqcxu1\"><div class=\"automation-name svelte-1uqcxu1\">${escape_html(automation.name)} <span${attr_class(\"badge\", void 0, {\n\t\t\t\t\t\"badge-enabled\": automation.enabled,\n\t\t\t\t\t\"badge-disabled\": !automation.enabled\n\t\t\t\t})}>${escape_html(automation.enabled ? \"enabled\" : \"disabled\")}</span> <span class=\"badge badge-type svelte-1uqcxu1\">${escape_html(automation.action.type)}</span></div> `);\n\t\t\t\tif (automation.description) {\n\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t$$renderer.push(`<div class=\"automation-desc svelte-1uqcxu1\">${escape_html(automation.description)}</div>`);\n\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<!--]--></div> <div class=\"automation-meta svelte-1uqcxu1\">`);\n\t\t\t\tif (preset?.cron) {\n\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t$$renderer.push(`<span class=\"meta-item schedule-friendly svelte-1uqcxu1\">${escape_html(preset.label)}</span>`);\n\t\t\t\t} else {\n\t\t\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t$$renderer.push(`<span class=\"meta-item svelte-1uqcxu1\"><code class=\"svelte-1uqcxu1\">${escape_html(automation.schedule)}</code></span> <span class=\"meta-item meta-tz svelte-1uqcxu1\">${escape_html(automation.timezone)}</span>`);\n\t\t\t\t}\n\t\t\t\t$$renderer.push(`<!--]--></div></div> <div class=\"automation-footer svelte-1uqcxu1\"><span class=\"automation-file svelte-1uqcxu1\">${escape_html(automation.fileName)}</span> <div class=\"automation-actions svelte-1uqcxu1\"><button class=\"btn btn-ghost btn-sm\"${attr(\"disabled\", !tokenStored, true)}>Edit</button> <button class=\"btn btn-ghost btn-sm\"${attr(\"disabled\", !tokenStored, true)}${attr(\"aria-label\", `Delete ${stringify(automation.fileName)}`)}>Delete</button></div></div></div>`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--></div>`);\n\t\t} else {\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<div class=\"empty-state svelte-1uqcxu1\"><svg aria-hidden=\"true\" width=\"40\" height=\"40\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"12\" cy=\"12\" r=\"10\"></circle><polyline points=\"12 6 12 12 16 14\"></polyline></svg> `);\n\t\t\tif (loading) {\n\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t$$renderer.push(`<p>Loading automations...</p>`);\n\t\t\t} else if (error) {\n\t\t\t\t$$renderer.push(\"<!--[1-->\");\n\t\t\t\t$$renderer.push(`<p class=\"text-danger svelte-1uqcxu1\">${escape_html(error)}</p> <button class=\"btn btn-secondary btn-sm svelte-1uqcxu1\">Try Again</button>`);\n\t\t\t} else {\n\t\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<p>No automations configured.</p> <p class=\"empty-state-hint svelte-1uqcxu1\">Drop <code class=\"svelte-1uqcxu1\">.md</code> task files into <code class=\"svelte-1uqcxu1\">~/.openpalm/knowledge/tasks/</code>, or install via <code class=\"svelte-1uqcxu1\">akm</code>.</p>`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--></div>`);\n\t\t}\n\t\t$$renderer.push(`<!--]--></div></div>`);\n\t});\n}\n//#endregion\n//#region src/lib/components/providers/AddProviderSheet.svelte\nfunction AddProviderSheet($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { providers, onselect, oncustom, onclose } = $$props;\n\t\tlet query = \"\";\n\t\tconst filtered = derived(() => {\n\t\t\tconst q = query.trim().toLowerCase();\n\t\t\tif (!q) return providers;\n\t\t\treturn providers.filter((p) => p.name.toLowerCase().includes(q) || p.id.toLowerCase().includes(q));\n\t\t});\n\t\t$$renderer.push(`<div class=\"sheet-overlay\" role=\"presentation\"></div> <div class=\"sheet\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"add-provider-title\"><header class=\"sheet-header\"><h2 class=\"sheet-title\" id=\"add-provider-title\">Add provider</h2> <button type=\"button\" class=\"sheet-close\" aria-label=\"Close\">×</button></header> <div class=\"sheet-search svelte-1ykz2x6\"><input type=\"search\" class=\"form-input\" placeholder=\"Search providers…\"${attr(\"value\", query)} autocomplete=\"off\" autofocus=\"\"/></div> <div class=\"sheet-body sheet-body--list svelte-1ykz2x6\">`);\n\t\tif (filtered().length === 0 && query);\n\t\telse {\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<!--[-->`);\n\t\t\tconst each_array = ensure_array_like(filtered());\n\t\t\tfor (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {\n\t\t\t\tlet p = each_array[$$index];\n\t\t\t\t$$renderer.push(`<button type=\"button\" class=\"provider-pick svelte-1ykz2x6\"><span class=\"provider-name svelte-1ykz2x6\">${escape_html(p.name)}</span> `);\n\t\t\t\tif (p.modelCount > 0) {\n\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t$$renderer.push(`<span class=\"provider-meta svelte-1ykz2x6\">${escape_html(p.modelCount)} models</span>`);\n\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<!--]--></button>`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--> <button type=\"button\" class=\"provider-pick provider-pick--custom svelte-1ykz2x6\"><span class=\"provider-name svelte-1ykz2x6\">Custom provider</span> <span class=\"provider-meta svelte-1ykz2x6\">OpenAI-compatible</span></button>`);\n\t\t}\n\t\t$$renderer.push(`<!--]--></div></div>`);\n\t});\n}\n//#endregion\n//#region src/lib/components/providers/ConnectSheet.svelte\nfunction ConnectSheet($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { provider, onaction, onclose } = $$props;\n\t\tconst methods = derived(() => provider.authMethods.filter((m) => !m.label.toLowerCase().includes(\"headless\")));\n\t\tlet step = initialStepFor(provider);\n\t\tfunction initialStepFor(p) {\n\t\t\tconst list = p.authMethods.filter((m) => !m.label.toLowerCase().includes(\"headless\"));\n\t\t\tif (list.length === 0) return \"api-form\";\n\t\t\tif (list.length === 1) return list[0].type === \"oauth\" ? \"oauth-code\" : \"api-form\";\n\t\t\treturn \"method-picker\";\n\t\t}\n\t\tlet apiKey = \"\";\n\t\tlet authCode = \"\";\n\t\tlet submitting = false;\n\t\tlet abortController;\n\t\tfunction stopPolling() {\n\t\t\tabortController?.abort();\n\t\t\tabortController = void 0;\n\t\t}\n\t\tonDestroy(stopPolling);\n\t\tconst title = derived(() => {\n\t\t\tif (step === \"method-picker\") return `Connect ${provider.name}`;\n\t\t\treturn `Connect ${provider.name}`;\n\t\t});\n\t\tconst canGoBack = derived(() => step !== \"method-picker\" && methods().length > 1);\n\t\t$$renderer.push(`<div class=\"sheet-overlay\" role=\"presentation\"></div> <div class=\"sheet\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"connect-sheet-title\"><header class=\"sheet-header\">`);\n\t\tif (canGoBack()) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<button type=\"button\" class=\"sheet-header-back\" aria-label=\"Back\">←</button>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> <h2 class=\"sheet-title\" id=\"connect-sheet-title\">${escape_html(title())}</h2> <button type=\"button\" class=\"sheet-close\" aria-label=\"Close\">×</button></header> <div class=\"sheet-body\">`);\n\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> `);\n\t\tif (step === \"method-picker\") {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<p class=\"field-hint\">Select login method for ${escape_html(provider.name)}.</p> <div class=\"auth-method-group svelte-1bnolke\"><!--[-->`);\n\t\t\tconst each_array = ensure_array_like(methods());\n\t\t\tfor (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {\n\t\t\t\tlet method = each_array[$$index];\n\t\t\t\t$$renderer.push(`<button type=\"button\" class=\"auth-method-card svelte-1bnolke\"><span class=\"method-label svelte-1bnolke\">${escape_html(method.label)}</span> <span class=\"method-type svelte-1bnolke\">${escape_html(method.type === \"oauth\" ? \"Browser sign-in\" : \"API key\")}</span></button>`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--></div>`);\n\t\t} else if (step === \"api-form\") {\n\t\t\t$$renderer.push(\"<!--[1-->\");\n\t\t\t$$renderer.push(`<p class=\"field-hint\">Enter your ${escape_html(provider.name)} API key to connect your account and use ${escape_html(provider.name)} models in OpenCode.</p> <div class=\"form-field\"><label class=\"form-label\" for=\"connect-apikey\">${escape_html(provider.name)} API key</label> <input id=\"connect-apikey\" type=\"password\" class=\"form-input\" placeholder=\"API key\"${attr(\"value\", apiKey)}${attr(\"disabled\", submitting, true)} autocomplete=\"off\"/></div>`);\n\t\t} else if (step === \"oauth-code\") {\n\t\t\t$$renderer.push(\"<!--[2-->\");\n\t\t\t$$renderer.push(`<p class=\"field-hint\">Visit <a${attr(\"href\", \"#\")} target=\"_blank\" rel=\"noopener\" class=\"text-link\">this link</a> to collect your authorization code to connect your account and use ${escape_html(provider.name)} models in OpenCode.</p> <div class=\"form-field\"><label class=\"form-label\" for=\"connect-code\">${escape_html(\"OAuth\")} authorization code</label> <input id=\"connect-code\" type=\"text\" class=\"form-input\" placeholder=\"Authorization code\"${attr(\"value\", authCode)}${attr(\"disabled\", submitting, true)} autocomplete=\"off\"/></div>`);\n\t\t} else if (step === \"oauth-auto\") {\n\t\t\t$$renderer.push(\"<!--[3-->\");\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<!--]--> `);\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<!--]--> <p class=\"field-hint\"><span class=\"spinner\"></span> Waiting for sign-in to complete…</p>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--></div> `);\n\t\tif (step === \"api-form\" || step === \"oauth-code\") {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<footer class=\"sheet-footer\"><button type=\"button\" class=\"btn btn-primary\"${attr(\"disabled\", submitting, true)}>`);\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<!--]--> Continue</button></footer>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--></div>`);\n\t});\n}\n//#endregion\n//#region src/lib/components/providers/CustomProviderForm.svelte\nfunction CustomProviderForm($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { onaction, onclose } = $$props;\n\t\tlet id = \"\";\n\t\tlet displayName = \"\";\n\t\tlet baseURL = \"\";\n\t\tlet apiKey = \"\";\n\t\tlet submitting = false;\n\t\t$$renderer.push(`<div class=\"sheet-overlay\" role=\"presentation\"></div> <div class=\"sheet\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"custom-sheet-title\"><header class=\"sheet-header\"><h2 class=\"sheet-title\" id=\"custom-sheet-title\">Add custom provider</h2> <button type=\"button\" class=\"sheet-close\" aria-label=\"Close\">×</button></header> <div class=\"sheet-body\"><p class=\"field-hint\">Register an OpenAI-compatible provider by base URL. Models are auto-discovered on first connection.</p> `);\n\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> <div class=\"form-stack svelte-1btkq49\"><div class=\"form-field\"><label class=\"form-label\" for=\"custom-id\">Provider ID</label> <input id=\"custom-id\" type=\"text\" class=\"form-input\" placeholder=\"my-provider\"${attr(\"value\", id)}${attr(\"disabled\", submitting, true)} autocomplete=\"off\"/></div> <div class=\"form-field\"><label class=\"form-label\" for=\"custom-name\">Display name</label> <input id=\"custom-name\" type=\"text\" class=\"form-input\" placeholder=\"My Provider\"${attr(\"value\", displayName)}${attr(\"disabled\", submitting, true)} autocomplete=\"off\"/></div> <div class=\"form-field\"><label class=\"form-label\" for=\"custom-url\">Base URL</label> <input id=\"custom-url\" type=\"url\" class=\"form-input\" placeholder=\"https://example.com/v1\"${attr(\"value\", baseURL)}${attr(\"disabled\", submitting, true)} autocomplete=\"off\"/></div> <div class=\"form-field\"><label class=\"form-label\" for=\"custom-key\">API key <span class=\"optional svelte-1btkq49\">(optional)</span></label> <input id=\"custom-key\" type=\"password\" class=\"form-input\" placeholder=\"API key\"${attr(\"value\", apiKey)}${attr(\"disabled\", submitting, true)} autocomplete=\"off\"/></div></div></div> <footer class=\"sheet-footer\"><button type=\"button\" class=\"btn btn-primary\"${attr(\"disabled\", submitting, true)}>`);\n\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> Continue</button></footer></div>`);\n\t});\n}\n//#endregion\n//#region src/lib/components/providers/HostImportModal.svelte\nfunction HostImportModal($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { providerCount, credentialCount, configPath, authPath, onimported, oncancel } = $$props;\n\t\tlet importing = false;\n\t\t$$renderer.push(`<div class=\"sheet-overlay\" role=\"presentation\"></div> <div class=\"sheet\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"import-sheet-title\"><header class=\"sheet-header\"><h2 class=\"sheet-title\" id=\"import-sheet-title\">Import from host OpenCode</h2> <button type=\"button\" class=\"sheet-close\" aria-label=\"Close\">×</button></header> <div class=\"sheet-body\">`);\n\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<p class=\"field-hint\">We found an OpenCode installation on this host:</p> <ul class=\"result-list svelte-15y8pah\">`);\n\t\tif (configPath) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<li class=\"svelte-15y8pah\"><code class=\"svelte-15y8pah\">${escape_html(configPath)}</code> <span class=\"muted svelte-15y8pah\">(${escape_html(providerCount)} provider${escape_html(providerCount !== 1 ? \"s\" : \"\")})</span></li>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> `);\n\t\tif (authPath) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<li class=\"svelte-15y8pah\"><code class=\"svelte-15y8pah\">${escape_html(authPath)}</code> <span class=\"muted svelte-15y8pah\">(${escape_html(credentialCount)} credential${escape_html(credentialCount !== 1 ? \"s\" : \"\")})</span></li>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--></ul> <p class=\"field-hint\">Importing will copy provider settings and stored credentials into OP_HOME and\n\t\t\t\tactivate them in the running assistant. Existing OP_HOME credentials are\n\t\t\t\tpreserved on conflict.</p> `);\n\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]-->`);\n\t\t$$renderer.push(`<!--]--></div> <footer class=\"sheet-footer\">`);\n\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<button type=\"button\" class=\"btn btn-primary\"${attr(\"disabled\", importing, true)}>`);\n\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> Import</button>`);\n\t\t$$renderer.push(`<!--]--></footer></div>`);\n\t});\n}\n//#endregion\n//#region src/lib/components/ProvidersPanel.svelte\nfunction ProvidersPanel($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet pageState = {\n\t\t\tavailable: false,\n\t\t\tproviders: [],\n\t\t\tdefaultModels: {},\n\t\t\tallowlistActive: false,\n\t\t\tproviderCountLabel: \"\",\n\t\t\tstats: {\n\t\t\t\ttotal: 0,\n\t\t\t\tconnected: 0,\n\t\t\t\tconfigured: 0,\n\t\t\t\tdisabled: 0\n\t\t\t}\n\t\t};\n\t\tlet loading = true;\n\t\tasync function load() {\n\t\t\tloading = true;\n\t\t\ttry {\n\t\t\t\tconst res = await fetch(\"/admin/providers\", { headers: buildHeaders() });\n\t\t\t\tif (res.ok) {\n\t\t\t\t\tpageState = await res.json();\n\t\t\t\t\tmainModelChoice = pageState.currentModel ?? \"\";\n\t\t\t\t\tsmallModelChoice = pageState.currentSmallModel ?? \"\";\n\t\t\t\t}\n\t\t\t} catch {} finally {\n\t\t\t\tloading = false;\n\t\t\t}\n\t\t}\n\t\tconst connected = derived(() => pageState.providers.filter((p) => p.connected));\n\t\tconst unconnected = derived(() => pageState.providers.filter((p) => !p.connected));\n\t\tlet mainModelChoice = \"\";\n\t\tlet smallModelChoice = \"\";\n\t\tlet modelSaveError = null;\n\t\tasync function saveModel(target, value) {\n\t\t\tmodelSaveError = null;\n\t\t\ttry {\n\t\t\t\tconst res = await fetch(\"/admin/opencode/model\", {\n\t\t\t\t\tmethod: \"POST\",\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t...buildHeaders(),\n\t\t\t\t\t\t\"content-type\": \"application/json\"\n\t\t\t\t\t},\n\t\t\t\t\tbody: JSON.stringify({ [target]: value || null })\n\t\t\t\t});\n\t\t\t\tif (!res.ok) modelSaveError = (await res.json().catch(() => ({}))).message ?? `Save failed (${res.status})`;\n\t\t\t} catch (err) {\n\t\t\t\tmodelSaveError = err instanceof Error ? err.message : \"Request failed.\";\n\t\t\t}\n\t\t}\n\t\tlet showAddSheet = false;\n\t\tlet connectProvider = null;\n\t\tlet showCustomForm = false;\n\t\tlet disconnectingId = null;\n\t\tconst BADGE_LABEL = {\n\t\t\tenv: \"env\",\n\t\t\tapi: \"api key\",\n\t\t\toauth: \"oauth\",\n\t\t\tconfig: \"config\",\n\t\t\tcustom: \"custom\"\n\t\t};\n\t\tfunction authBadge(p) {\n\t\t\treturn p.credentialType ? BADGE_LABEL[p.credentialType] : \"\";\n\t\t}\n\t\tfunction pickProvider(p) {\n\t\t\tshowAddSheet = false;\n\t\t\tconnectProvider = p;\n\t\t}\n\t\tfunction pickCustom() {\n\t\t\tshowAddSheet = false;\n\t\t\tshowCustomForm = true;\n\t\t}\n\t\tfunction handleAfterAction() {\n\t\t\tconnectProvider = null;\n\t\t\tshowCustomForm = false;\n\t\t\tload();\n\t\t}\n\t\tlet hostStatus = null;\n\t\tlet showImportSheet = false;\n\t\tasync function loadHostStatus() {\n\t\t\ttry {\n\t\t\t\tconst res = await fetch(\"/admin/providers/host-status\", { headers: buildHeaders() });\n\t\t\t\tif (res.ok) hostStatus = await res.json();\n\t\t\t} catch {}\n\t\t}\n\t\tfunction handleImportDone() {\n\t\t\tshowImportSheet = false;\n\t\t\tload();\n\t\t\tloadHostStatus();\n\t\t}\n\t\t$$renderer.push(`<div class=\"panel\" role=\"tabpanel\"><div class=\"panel-header\"><div><h2>Connections</h2> <p class=\"panel-subtitle\">Sign in to AI providers. Credentials are stored in OpenCode's auth.json.</p></div> <div class=\"panel-header-actions\"><button type=\"button\" class=\"btn btn-secondary btn-sm\"${attr(\"disabled\", !hostStatus?.detected, true)}${attr(\"title\", hostStatus?.detected ? `Import ${hostStatus.providerCount} providers from host OpenCode` : \"No host OpenCode installation detected\")}>Import from host</button> <button type=\"button\" class=\"btn btn-primary btn-sm\">Add provider</button> <button class=\"btn btn-secondary btn-sm\"${attr(\"disabled\", loading, true)}>`);\n\t\tif (loading) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<span class=\"spinner\"></span>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> Refresh</button></div></div> `);\n\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> <div class=\"panel-body panel-body--flush\">`);\n\t\tif (!pageState.available && !loading) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<div class=\"empty-state\"><p>The assistant (OpenCode server) is not reachable. Start the assistant container and refresh.</p></div>`);\n\t\t} else if (loading && pageState.providers.length === 0) {\n\t\t\t$$renderer.push(\"<!--[1-->\");\n\t\t\t$$renderer.push(`<div class=\"loading-state\"><span class=\"spinner\"></span> <span>Loading providers…</span></div>`);\n\t\t} else if (connected().length === 0) {\n\t\t\t$$renderer.push(\"<!--[2-->\");\n\t\t\t$$renderer.push(`<div class=\"empty-state\"><p>No providers connected yet.</p> <p class=\"empty-hint svelte-1tqmczc\">Click <strong>Add provider</strong> above to sign in to one.</p></div>`);\n\t\t} else {\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<div class=\"model-defaults svelte-1tqmczc\"><div class=\"model-field svelte-1tqmczc\"><label class=\"form-label\" for=\"default-model\">Default model</label> `);\n\t\t\t$$renderer.select({\n\t\t\t\tid: \"default-model\",\n\t\t\t\tclass: \"form-input\",\n\t\t\t\tvalue: mainModelChoice,\n\t\t\t\tonchange: (e) => void saveModel(\"model\", e.currentTarget.value)\n\t\t\t}, ($$renderer) => {\n\t\t\t\t$$renderer.option({ value: \"\" }, ($$renderer) => {\n\t\t\t\t\t$$renderer.push(`— OpenCode default —`);\n\t\t\t\t});\n\t\t\t\t$$renderer.push(`<!--[-->`);\n\t\t\t\tconst each_array = ensure_array_like(connected());\n\t\t\t\tfor (let $$index_1 = 0, $$length = each_array.length; $$index_1 < $$length; $$index_1++) {\n\t\t\t\t\tlet p = each_array[$$index_1];\n\t\t\t\t\tif (p.models.length > 0) {\n\t\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t\t$$renderer.push(`<optgroup${attr(\"label\", p.name)}><!--[-->`);\n\t\t\t\t\t\tconst each_array_1 = ensure_array_like(p.models);\n\t\t\t\t\t\tfor (let $$index = 0, $$length = each_array_1.length; $$index < $$length; $$index++) {\n\t\t\t\t\t\t\tlet m = each_array_1[$$index];\n\t\t\t\t\t\t\t$$renderer.option({ value: `${stringify(p.id)}/${stringify(m.id)}` }, ($$renderer) => {\n\t\t\t\t\t\t\t\t$$renderer.push(`${escape_html(m.name || m.id)}`);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$$renderer.push(`<!--]--></optgroup>`);\n\t\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t$$renderer.push(`<!--]-->`);\n\t\t\t\t}\n\t\t\t\t$$renderer.push(`<!--]-->`);\n\t\t\t});\n\t\t\t$$renderer.push(`</div> <div class=\"model-field svelte-1tqmczc\"><label class=\"form-label\" for=\"small-model\">Small model</label> `);\n\t\t\t$$renderer.select({\n\t\t\t\tid: \"small-model\",\n\t\t\t\tclass: \"form-input\",\n\t\t\t\tvalue: smallModelChoice,\n\t\t\t\tonchange: (e) => void saveModel(\"small_model\", e.currentTarget.value)\n\t\t\t}, ($$renderer) => {\n\t\t\t\t$$renderer.option({ value: \"\" }, ($$renderer) => {\n\t\t\t\t\t$$renderer.push(`— OpenCode default —`);\n\t\t\t\t});\n\t\t\t\t$$renderer.push(`<!--[-->`);\n\t\t\t\tconst each_array_2 = ensure_array_like(connected());\n\t\t\t\tfor (let $$index_3 = 0, $$length = each_array_2.length; $$index_3 < $$length; $$index_3++) {\n\t\t\t\t\tlet p = each_array_2[$$index_3];\n\t\t\t\t\tif (p.models.length > 0) {\n\t\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t\t$$renderer.push(`<optgroup${attr(\"label\", p.name)}><!--[-->`);\n\t\t\t\t\t\tconst each_array_3 = ensure_array_like(p.models);\n\t\t\t\t\t\tfor (let $$index_2 = 0, $$length = each_array_3.length; $$index_2 < $$length; $$index_2++) {\n\t\t\t\t\t\t\tlet m = each_array_3[$$index_2];\n\t\t\t\t\t\t\t$$renderer.option({ value: `${stringify(p.id)}/${stringify(m.id)}` }, ($$renderer) => {\n\t\t\t\t\t\t\t\t$$renderer.push(`${escape_html(m.name || m.id)}`);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$$renderer.push(`<!--]--></optgroup>`);\n\t\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t$$renderer.push(`<!--]-->`);\n\t\t\t\t}\n\t\t\t\t$$renderer.push(`<!--]-->`);\n\t\t\t});\n\t\t\t$$renderer.push(`</div> `);\n\t\t\tif (modelSaveError) {\n\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t$$renderer.push(`<p class=\"model-error svelte-1tqmczc\">${escape_html(modelSaveError)}</p>`);\n\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<!--]--></div> <!--[-->`);\n\t\t\tconst each_array_4 = ensure_array_like(connected());\n\t\t\tfor (let $$index_4 = 0, $$length = each_array_4.length; $$index_4 < $$length; $$index_4++) {\n\t\t\t\tlet p = each_array_4[$$index_4];\n\t\t\t\t$$renderer.push(`<div class=\"provider-row svelte-1tqmczc\"><div class=\"provider-id svelte-1tqmczc\"><span class=\"provider-name svelte-1tqmczc\">${escape_html(p.name)}</span> <span class=\"badge badge-connected\">${escape_html(authBadge(p))}</span></div> <button class=\"btn btn-outline btn-sm\"${attr(\"disabled\", disconnectingId === p.id, true)}>`);\n\t\t\t\tif (disconnectingId === p.id) {\n\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t$$renderer.push(`<span class=\"spinner\"></span>`);\n\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<!--]--> Disconnect</button></div>`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]-->`);\n\t\t}\n\t\t$$renderer.push(`<!--]--></div></div> `);\n\t\tif (showAddSheet) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\tAddProviderSheet($$renderer, {\n\t\t\t\tproviders: unconnected(),\n\t\t\t\tonselect: pickProvider,\n\t\t\t\toncustom: pickCustom,\n\t\t\t\tonclose: () => {\n\t\t\t\t\tshowAddSheet = false;\n\t\t\t\t}\n\t\t\t});\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> `);\n\t\tif (connectProvider) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\tConnectSheet($$renderer, {\n\t\t\t\tprovider: connectProvider,\n\t\t\t\tonaction: handleAfterAction,\n\t\t\t\tonclose: () => {\n\t\t\t\t\tconnectProvider = null;\n\t\t\t\t}\n\t\t\t});\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> `);\n\t\tif (showCustomForm) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\tCustomProviderForm($$renderer, {\n\t\t\t\tonaction: handleAfterAction,\n\t\t\t\tonclose: () => {\n\t\t\t\t\tshowCustomForm = false;\n\t\t\t\t}\n\t\t\t});\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> `);\n\t\tif (showImportSheet && hostStatus) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\tHostImportModal($$renderer, {\n\t\t\t\tproviderCount: hostStatus.providerCount,\n\t\t\t\tcredentialCount: hostStatus.credentialCount,\n\t\t\t\tconfigPath: hostStatus.configPath,\n\t\t\t\tauthPath: hostStatus.authPath,\n\t\t\t\tonimported: handleImportDone,\n\t\t\t\toncancel: () => {\n\t\t\t\t\tshowImportSheet = false;\n\t\t\t\t}\n\t\t\t});\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]-->`);\n\t});\n}\n//#endregion\n//#region src/lib/components/LogsTab.svelte\nfunction LogsTab($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { tokenStored, services } = $$props;\n\t\tlet logs = \"\";\n\t\tlet logsLoaded = false;\n\t\tlet loading = false;\n\t\tlet error = \"\";\n\t\tlet selectedService = \"\";\n\t\tlet tailLines = 100;\n\t\tlet autoScroll = true;\n\t\tasync function loadLogs() {\n\t\t\tloading = true;\n\t\t\terror = \"\";\n\t\t\ttry {\n\t\t\t\tconst result = await fetchServiceLogs({\n\t\t\t\t\tservice: void 0,\n\t\t\t\t\ttail: tailLines\n\t\t\t\t});\n\t\t\t\tif (result.ok) {\n\t\t\t\t\tlogs = result.logs;\n\t\t\t\t\tlogsLoaded = true;\n\t\t\t\t} else error = result.error ?? \"Failed to fetch logs.\";\n\t\t\t} catch (e) {\n\t\t\t\terror = e instanceof Error ? e.message : \"Failed to fetch logs.\";\n\t\t\t} finally {\n\t\t\t\tloading = false;\n\t\t\t}\n\t\t}\n\t\t$$renderer.push(`<div class=\"panel\" role=\"tabpanel\"><div class=\"panel-header\"><h2>Service Logs</h2> <div class=\"panel-header-actions\"><button class=\"btn btn-secondary btn-sm\"${attr(\"disabled\", !logs, true)}>${escape_html(\"Copy\")}</button> <button class=\"btn btn-secondary btn-sm\"${attr(\"disabled\", loading || !tokenStored, true)}>`);\n\t\tif (loading) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<span class=\"spinner\"></span>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> Refresh</button></div></div> <div class=\"controls svelte-s1vlr2\"><div class=\"control-group svelte-s1vlr2\"><label for=\"log-service\" class=\"control-label svelte-s1vlr2\">Service</label> `);\n\t\t$$renderer.select({\n\t\t\tid: \"log-service\",\n\t\t\tclass: \"control-input\",\n\t\t\tvalue: selectedService,\n\t\t\tonchange: () => void loadLogs()\n\t\t}, ($$renderer) => {\n\t\t\t$$renderer.option({ value: \"\" }, ($$renderer) => {\n\t\t\t\t$$renderer.push(`All services`);\n\t\t\t});\n\t\t\t$$renderer.push(`<!--[-->`);\n\t\t\tconst each_array = ensure_array_like(services);\n\t\t\tfor (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {\n\t\t\t\tlet svc = each_array[$$index];\n\t\t\t\t$$renderer.option({ value: svc }, ($$renderer) => {\n\t\t\t\t\t$$renderer.push(`${escape_html(svc)}`);\n\t\t\t\t});\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]-->`);\n\t\t}, \"svelte-s1vlr2\");\n\t\t$$renderer.push(`</div> <div class=\"control-group svelte-s1vlr2\"><label for=\"log-tail\" class=\"control-label svelte-s1vlr2\">Lines</label> `);\n\t\t$$renderer.select({\n\t\t\tid: \"log-tail\",\n\t\t\tclass: \"control-input\",\n\t\t\tvalue: tailLines,\n\t\t\tonchange: () => void loadLogs()\n\t\t}, ($$renderer) => {\n\t\t\t$$renderer.option({ value: 50 }, ($$renderer) => {\n\t\t\t\t$$renderer.push(`50`);\n\t\t\t});\n\t\t\t$$renderer.option({ value: 100 }, ($$renderer) => {\n\t\t\t\t$$renderer.push(`100`);\n\t\t\t});\n\t\t\t$$renderer.option({ value: 250 }, ($$renderer) => {\n\t\t\t\t$$renderer.push(`250`);\n\t\t\t});\n\t\t\t$$renderer.option({ value: 500 }, ($$renderer) => {\n\t\t\t\t$$renderer.push(`500`);\n\t\t\t});\n\t\t\t$$renderer.option({ value: 1e3 }, ($$renderer) => {\n\t\t\t\t$$renderer.push(`1000`);\n\t\t\t});\n\t\t}, \"svelte-s1vlr2\");\n\t\t$$renderer.push(`</div> <div class=\"control-group control-group--toggle svelte-s1vlr2\"><label class=\"toggle-label svelte-s1vlr2\"><input type=\"checkbox\"${attr(\"checked\", autoScroll, true)} class=\"svelte-s1vlr2\"/> <span>Auto-scroll</span></label></div> <button class=\"btn btn-primary btn-sm\"${attr(\"disabled\", loading || !tokenStored, true)}>`);\n\t\tif (loading) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<span class=\"spinner\"></span>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> Load Logs</button></div> <div class=\"panel-body panel-body--flush\">`);\n\t\tif (error) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<div class=\"error-banner svelte-s1vlr2\"><span>${escape_html(error)}</span></div>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> `);\n\t\tif (logs) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<pre class=\"log-output svelte-s1vlr2\">${escape_html(logs)}</pre>`);\n\t\t} else if (!loading) {\n\t\t\t$$renderer.push(\"<!--[1-->\");\n\t\t\t$$renderer.push(`<div class=\"empty-state\"><svg aria-hidden=\"true\" width=\"40\" height=\"40\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"></path><polyline points=\"14 2 14 8 20 8\"></polyline><line x1=\"16\" y1=\"13\" x2=\"8\" y2=\"13\"></line><line x1=\"16\" y1=\"17\" x2=\"8\" y2=\"17\"></line></svg> `);\n\t\t\tif (logsLoaded) {\n\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t$$renderer.push(`<p>No log output — the container may not be running or has no recent output.</p>`);\n\t\t\t} else {\n\t\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<p>Select a service and click \"Load Logs\" to view container output.</p>`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--></div>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--></div></div>`);\n\t});\n}\n//#endregion\n//#region src/lib/components/SecretsTab.svelte\nfunction SecretsTab($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { tokenStored } = $$props;\n\t\tlet busy = false;\n\t\tlet files = [];\n\t\tlet selected = null;\n\t\tlet newName = \"\";\n\t\tfunction fmtSize(n) {\n\t\t\tif (n < 1024) return `${n} B`;\n\t\t\treturn `${(n / 1024).toFixed(1)} KB`;\n\t\t}\n\t\t$$renderer.push(`<div class=\"panel\" role=\"tabpanel\"><div class=\"panel-header svelte-1levcw0\"><h2>Secrets</h2> <div class=\"panel-header-actions\"><button class=\"btn btn-secondary btn-sm\"${attr(\"disabled\", !tokenStored, true)}>`);\n\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> Refresh</button></div></div> <p class=\"section-note svelte-1levcw0\">Files in the assistant's secrets directory (<code>/stash/secrets</code> → <code>knowledge/secrets</code>). These are mounted into the assistant and granted to\n services via Docker secrets. Files are stored 0600. Editing here changes the live\n file — restart affected services to pick up changes.</p> `);\n\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> <div class=\"secrets-layout svelte-1levcw0\"><div class=\"secrets-list svelte-1levcw0\">`);\n\t\tif (files.length === 0 && true) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<p class=\"empty-note svelte-1levcw0\">No secret files found.</p>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> <!--[-->`);\n\t\tconst each_array = ensure_array_like(files);\n\t\tfor (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {\n\t\t\tlet f = each_array[$$index];\n\t\t\t$$renderer.push(`<div${attr_class(`secret-row ${selected === f.name ? \"active\" : \"\"}`, \"svelte-1levcw0\")}><button class=\"secret-name svelte-1levcw0\"${attr(\"disabled\", busy, true)}${attr(\"aria-label\", `Edit ${stringify(f.name)}`)}><span class=\"mono svelte-1levcw0\">${escape_html(f.name)}</span> <span class=\"secret-size svelte-1levcw0\">${escape_html(fmtSize(f.size))}</span></button> <button class=\"btn btn-ghost btn-sm\"${attr(\"disabled\", busy, true)}${attr(\"aria-label\", `Delete ${stringify(f.name)}`)}>✕</button></div>`);\n\t\t}\n\t\t$$renderer.push(`<!--]--> <div class=\"new-secret svelte-1levcw0\"><input class=\"control-input\" type=\"text\" spellcheck=\"false\" placeholder=\"new-file-name\"${attr(\"value\", newName)}${attr(\"disabled\", busy, true)}/> <button class=\"btn btn-secondary btn-sm\"${attr(\"disabled\", !newName.trim(), true)}>Add</button></div></div> <div class=\"secrets-editor svelte-1levcw0\">`);\n\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<p class=\"empty-note svelte-1levcw0\">Select a file to view or edit its contents.</p>`);\n\t\t$$renderer.push(`<!--]--></div></div></div>`);\n\t});\n}\n//#endregion\n//#region src/lib/components/AkmTab.svelte\nfunction AkmTab($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { tokenStored } = $$props;\n\t\tlet saving = false;\n\t\tlet llmProfiles = [];\n\t\tlet defaultLlmProfile = \"\";\n\t\tlet agentProfiles = [];\n\t\tlet defaultAgentProfile = \"\";\n\t\tlet improveProfiles = [];\n\t\tlet defaultImproveProfile = \"\";\n\t\tlet embEndpoint = \"\";\n\t\tlet embModel = \"\";\n\t\tlet embProvider = \"\";\n\t\tlet embApiKey = \"\";\n\t\tlet embDimension = 1536;\n\t\tlet embLocalModel = \"\";\n\t\tlet embBatchSize = \"\";\n\t\tlet embChunkSize = \"\";\n\t\tlet embContextLength = \"\";\n\t\tlet embOllamaNumCtx = \"\";\n\t\tlet semanticSearchMode = \"auto\";\n\t\tlet outputFormat = \"json\";\n\t\tlet outputDetail = \"brief\";\n\t\tlet imHalfLife = \"\";\n\t\tlet imFeedbackBoost = \"\";\n\t\tlet imEventRetention = \"\";\n\t\tlet searchMinScore = \"\";\n\t\tlet searchCurateRerank = \"\";\n\t\tlet fbRequireReason = \"\";\n\t\tlet fbFailureModes = \"\";\n\t\tlet indexJson = \"\";\n\t\tlet llmProfileNames = derived(() => llmProfiles.map((p) => p.name).filter((n) => n));\n\t\tnew Set([\n\t\t\t\"enabled\",\n\t\t\t\"mode\",\n\t\t\t\"profile\",\n\t\t\t\"timeoutMs\",\n\t\t\t\"allowedTypes\",\n\t\t\t\"qualityGate\",\n\t\t\t\"contradictionDetection\",\n\t\t\t\"defaultSince\",\n\t\t\t\"maxTotalChars\",\n\t\t\t\"maxChunkSize\",\n\t\t\t\"applyMode\",\n\t\t\t\"policy\",\n\t\t\t\"maxAcceptsPerRun\",\n\t\t\t\"maxDiffLines\",\n\t\t\t\"rejectEmpty\",\n\t\t\t\"judgment\"\n\t\t]);\n\t\t$$renderer.push(`<datalist id=\"llm-profiles-list\"><!--[-->`);\n\t\tconst each_array = ensure_array_like(llmProfileNames());\n\t\tfor (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {\n\t\t\tlet name = each_array[$$index];\n\t\t\t$$renderer.option({ value: name }, ($$renderer) => {});\n\t\t}\n\t\t$$renderer.push(`<!--]--></datalist> <div class=\"panel\" role=\"tabpanel\"><div class=\"panel-header svelte-1844cb2\"><h2 class=\"svelte-1844cb2\">Knowledge</h2> <div class=\"panel-header-actions svelte-1844cb2\"><button class=\"btn btn-secondary btn-sm\"${attr(\"disabled\", !tokenStored, true)}>`);\n\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> Refresh</button> <button class=\"btn btn-primary btn-sm\"${attr(\"disabled\", !tokenStored, true)}>`);\n\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> Save</button></div></div> `);\n\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> <div class=\"panel-body svelte-1844cb2\"><section class=\"config-section svelte-1844cb2\"><h3 class=\"section-title svelte-1844cb2\">LLM Profiles</h3> <p class=\"section-note svelte-1844cb2\">Named connection configs your improve pipeline can reference. Add one per LLM service you want AKM to use.</p> `);\n\t\tif (llmProfiles.length === 0) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<p class=\"empty-note svelte-1844cb2\">No LLM profiles configured — add one below.</p>`);\n\t\t} else {\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<div class=\"profile-list svelte-1844cb2\"><!--[-->`);\n\t\t\tconst each_array_1 = ensure_array_like(llmProfiles);\n\t\t\tfor (let $$index_1 = 0, $$length = each_array_1.length; $$index_1 < $$length; $$index_1++) {\n\t\t\t\tlet p = each_array_1[$$index_1];\n\t\t\t\t$$renderer.push(`<div class=\"profile-row svelte-1844cb2\"><span class=\"profile-row-name svelte-1844cb2\">${escape_html(p.name || \"(unnamed)\")}</span> `);\n\t\t\t\tif (defaultLlmProfile === p.name && p.name) {\n\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t$$renderer.push(`<span class=\"badge badge--default svelte-1844cb2\">Default</span>`);\n\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<!--]--> <div class=\"profile-row-actions svelte-1844cb2\">`);\n\t\t\t\tif (p.name && defaultLlmProfile !== p.name) {\n\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t$$renderer.push(`<button class=\"btn btn-sm\"${attr(\"disabled\", saving, true)}>Set Default</button>`);\n\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<!--]--> <button class=\"btn btn-sm\"${attr(\"disabled\", saving, true)}>Edit</button> <button class=\"btn btn-sm btn-danger\"${attr(\"disabled\", saving, true)}>Remove</button></div></div>`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--></div>`);\n\t\t}\n\t\t$$renderer.push(`<!--]--> <button class=\"btn btn-secondary btn-sm\"${attr(\"disabled\", saving, true)}>+ Add LLM Profile</button></section> <section class=\"config-section svelte-1844cb2\"><h3 class=\"section-title svelte-1844cb2\">Agent Profiles</h3> <p class=\"section-note svelte-1844cb2\">Named runner configs for pipeline steps that spawn a subprocess (opencode or claude CLI).</p> `);\n\t\tif (agentProfiles.length === 0) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<p class=\"empty-note svelte-1844cb2\">No agent profiles defined.</p>`);\n\t\t} else {\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<div class=\"profile-list svelte-1844cb2\"><!--[-->`);\n\t\t\tconst each_array_2 = ensure_array_like(agentProfiles);\n\t\t\tfor (let $$index_2 = 0, $$length = each_array_2.length; $$index_2 < $$length; $$index_2++) {\n\t\t\t\tlet p = each_array_2[$$index_2];\n\t\t\t\t$$renderer.push(`<div class=\"profile-row svelte-1844cb2\"><span class=\"profile-row-name svelte-1844cb2\">${escape_html(p.name || \"(unnamed)\")}</span> <span class=\"badge svelte-1844cb2\">${escape_html(p.platform)}</span> `);\n\t\t\t\tif (defaultAgentProfile === p.name && p.name) {\n\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t$$renderer.push(`<span class=\"badge badge--default svelte-1844cb2\">Default</span>`);\n\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<!--]--> <div class=\"profile-row-actions svelte-1844cb2\">`);\n\t\t\t\tif (p.name && defaultAgentProfile !== p.name) {\n\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t$$renderer.push(`<button class=\"btn btn-sm\"${attr(\"disabled\", saving, true)}>Set Default</button>`);\n\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<!--]--> <button class=\"btn btn-sm\"${attr(\"disabled\", saving, true)}>Edit</button> <button class=\"btn btn-sm btn-danger\"${attr(\"disabled\", saving, true)}>Remove</button></div></div>`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--></div>`);\n\t\t}\n\t\t$$renderer.push(`<!--]--> <button class=\"btn btn-secondary btn-sm\"${attr(\"disabled\", saving, true)}>+ Add Agent Profile</button></section> <section class=\"config-section svelte-1844cb2\"><h3 class=\"section-title svelte-1844cb2\">Improve Profiles</h3> <p class=\"section-note svelte-1844cb2\">Named configurations for <code>akm improve</code>. Each profile defines which processes run and which LLM/agent they use.</p> `);\n\t\tif (improveProfiles.length === 0) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<p class=\"empty-note svelte-1844cb2\">No improve profiles defined — add one below.</p>`);\n\t\t} else {\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<div class=\"profile-list svelte-1844cb2\"><!--[-->`);\n\t\t\tconst each_array_3 = ensure_array_like(improveProfiles);\n\t\t\tfor (let $$index_3 = 0, $$length = each_array_3.length; $$index_3 < $$length; $$index_3++) {\n\t\t\t\tlet ip = each_array_3[$$index_3];\n\t\t\t\t$$renderer.push(`<div class=\"profile-row svelte-1844cb2\"><span class=\"profile-row-name svelte-1844cb2\">${escape_html(ip.name || \"(unnamed)\")}</span> `);\n\t\t\t\tif (ip.description) {\n\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t$$renderer.push(`<span class=\"profile-row-desc svelte-1844cb2\">${escape_html(ip.description)}</span>`);\n\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<!--]--> `);\n\t\t\t\tif (defaultImproveProfile === ip.name && ip.name) {\n\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t$$renderer.push(`<span class=\"badge badge--default svelte-1844cb2\">Default</span>`);\n\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<!--]--> <div class=\"profile-row-actions svelte-1844cb2\">`);\n\t\t\t\tif (ip.name && defaultImproveProfile !== ip.name) {\n\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t$$renderer.push(`<button class=\"btn btn-sm\"${attr(\"disabled\", saving, true)}>Set Default</button>`);\n\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<!--]--> <button class=\"btn btn-sm\"${attr(\"disabled\", saving, true)}>Edit</button> <button class=\"btn btn-sm btn-danger\"${attr(\"disabled\", saving, true)}>Remove</button></div></div>`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--></div>`);\n\t\t}\n\t\t$$renderer.push(`<!--]--> <button class=\"btn btn-secondary btn-sm\"${attr(\"disabled\", saving, true)}>+ Add Improve Profile</button></section> <section class=\"config-section svelte-1844cb2\"><h3 class=\"section-title svelte-1844cb2\">Embedding Connection</h3> <p class=\"section-note svelte-1844cb2\">Vector embedding provider for semantic search. Leave Endpoint and Model blank to use built-in local embeddings.</p> <div class=\"controls controls--grid svelte-1844cb2\"><div class=\"control-group control-group--wide svelte-1844cb2\"><label class=\"control-label svelte-1844cb2\" for=\"embEndpoint\">Endpoint</label> <input id=\"embEndpoint\" class=\"control-input svelte-1844cb2\" type=\"url\" spellcheck=\"false\" placeholder=\"https://api.openai.com/v1/embeddings\"${attr(\"value\", embEndpoint)}${attr(\"disabled\", saving, true)}/></div> <div class=\"control-group svelte-1844cb2\"><label class=\"control-label svelte-1844cb2\" for=\"embModel\">Model</label> <input id=\"embModel\" class=\"control-input svelte-1844cb2\" type=\"text\" spellcheck=\"false\" placeholder=\"text-embedding-3-small\"${attr(\"value\", embModel)}${attr(\"disabled\", saving, true)}/></div> <div class=\"control-group svelte-1844cb2\"><label class=\"control-label svelte-1844cb2\" for=\"embProvider\">Provider (label)</label> <input id=\"embProvider\" class=\"control-input svelte-1844cb2\" type=\"text\" spellcheck=\"false\" placeholder=\"openai\"${attr(\"value\", embProvider)}${attr(\"disabled\", saving, true)}/></div> <div class=\"control-group svelte-1844cb2\"><label class=\"control-label svelte-1844cb2\" for=\"embApiKey\">API Key</label> <div class=\"input-with-toggle svelte-1844cb2\"><input id=\"embApiKey\" class=\"control-input svelte-1844cb2\"${attr(\"type\", \"password\")} spellcheck=\"false\" placeholder=\"\\${AKM_EMBED_API_KEY}\"${attr(\"value\", embApiKey)}${attr(\"disabled\", saving, true)}/> <button type=\"button\" class=\"btn-icon svelte-1844cb2\"${attr(\"aria-label\", \"Show API key\")}>${escape_html(\"Show\")}</button></div></div> <div class=\"control-group svelte-1844cb2\"><label class=\"control-label svelte-1844cb2\" for=\"embDimension\">Dimensions</label> <input id=\"embDimension\" class=\"control-input control-input--narrow svelte-1844cb2\" type=\"number\" min=\"1\"${attr(\"value\", embDimension)}${attr(\"disabled\", saving, true)}/></div> <div class=\"control-group svelte-1844cb2\"><label class=\"control-label svelte-1844cb2\" for=\"embLocalModel\">Local model</label> <input id=\"embLocalModel\" class=\"control-input svelte-1844cb2\" type=\"text\" spellcheck=\"false\" placeholder=\"Xenova/bge-small-en-v1.5\"${attr(\"value\", embLocalModel)}${attr(\"disabled\", saving, true)}/></div> <div class=\"control-group svelte-1844cb2\"><label class=\"control-label svelte-1844cb2\" for=\"embBatchSize\">Batch size</label> <input id=\"embBatchSize\" class=\"control-input control-input--narrow svelte-1844cb2\" type=\"number\" min=\"1\"${attr(\"value\", embBatchSize)}${attr(\"disabled\", saving, true)}/></div> <div class=\"control-group svelte-1844cb2\"><label class=\"control-label svelte-1844cb2\" for=\"embChunkSize\">Chunk size (chars)</label> <input id=\"embChunkSize\" class=\"control-input control-input--narrow svelte-1844cb2\" type=\"number\" min=\"1\"${attr(\"value\", embChunkSize)}${attr(\"disabled\", saving, true)}/></div> <div class=\"control-group svelte-1844cb2\"><label class=\"control-label svelte-1844cb2\" for=\"embContextLength\">Context length</label> <input id=\"embContextLength\" class=\"control-input control-input--narrow svelte-1844cb2\" type=\"number\" min=\"1\"${attr(\"value\", embContextLength)}${attr(\"disabled\", saving, true)}/></div> <div class=\"control-group svelte-1844cb2\"><label class=\"control-label svelte-1844cb2\" for=\"embOllamaNumCtx\">Ollama num_ctx</label> <input id=\"embOllamaNumCtx\" class=\"control-input control-input--narrow svelte-1844cb2\" type=\"number\" min=\"1\"${attr(\"value\", embOllamaNumCtx)}${attr(\"disabled\", saving, true)}/></div></div></section> <section class=\"config-section svelte-1844cb2\"><h3 class=\"section-title svelte-1844cb2\">Behavior</h3> <div class=\"controls controls--grid svelte-1844cb2\"><div class=\"control-group svelte-1844cb2\"><label class=\"control-label svelte-1844cb2\" for=\"semanticSearch\">Semantic search</label> `);\n\t\t$$renderer.select({\n\t\t\tid: \"semanticSearch\",\n\t\t\tclass: \"control-input\",\n\t\t\tvalue: semanticSearchMode,\n\t\t\tdisabled: saving\n\t\t}, ($$renderer) => {\n\t\t\t$$renderer.option({ value: \"auto\" }, ($$renderer) => {\n\t\t\t\t$$renderer.push(`Auto (vector index when available)`);\n\t\t\t});\n\t\t\t$$renderer.option({ value: \"off\" }, ($$renderer) => {\n\t\t\t\t$$renderer.push(`Off (keyword only)`);\n\t\t\t});\n\t\t}, \"svelte-1844cb2\");\n\t\t$$renderer.push(`</div> <div class=\"control-group svelte-1844cb2\"><label class=\"control-label svelte-1844cb2\" for=\"outputFormat\">Output format</label> `);\n\t\t$$renderer.select({\n\t\t\tid: \"outputFormat\",\n\t\t\tclass: \"control-input\",\n\t\t\tvalue: outputFormat,\n\t\t\tdisabled: saving\n\t\t}, ($$renderer) => {\n\t\t\t$$renderer.option({ value: \"json\" }, ($$renderer) => {\n\t\t\t\t$$renderer.push(`JSON`);\n\t\t\t});\n\t\t\t$$renderer.option({ value: \"yaml\" }, ($$renderer) => {\n\t\t\t\t$$renderer.push(`YAML`);\n\t\t\t});\n\t\t\t$$renderer.option({ value: \"text\" }, ($$renderer) => {\n\t\t\t\t$$renderer.push(`Text`);\n\t\t\t});\n\t\t}, \"svelte-1844cb2\");\n\t\t$$renderer.push(`</div> <div class=\"control-group svelte-1844cb2\"><label class=\"control-label svelte-1844cb2\" for=\"outputDetail\">Output detail</label> `);\n\t\t$$renderer.select({\n\t\t\tid: \"outputDetail\",\n\t\t\tclass: \"control-input\",\n\t\t\tvalue: outputDetail,\n\t\t\tdisabled: saving\n\t\t}, ($$renderer) => {\n\t\t\t$$renderer.option({ value: \"brief\" }, ($$renderer) => {\n\t\t\t\t$$renderer.push(`Brief`);\n\t\t\t});\n\t\t\t$$renderer.option({ value: \"normal\" }, ($$renderer) => {\n\t\t\t\t$$renderer.push(`Normal`);\n\t\t\t});\n\t\t\t$$renderer.option({ value: \"full\" }, ($$renderer) => {\n\t\t\t\t$$renderer.push(`Full`);\n\t\t\t});\n\t\t}, \"svelte-1844cb2\");\n\t\t$$renderer.push(`</div></div></section> <section class=\"config-section svelte-1844cb2\"><h3 class=\"section-title svelte-1844cb2\">Advanced</h3> <p class=\"section-note svelte-1844cb2\">Global tuning beyond per-profile settings. Leave blank to use akm defaults.</p> <div class=\"controls controls--grid svelte-1844cb2\"><div class=\"control-group svelte-1844cb2\"><label class=\"control-label svelte-1844cb2\" for=\"adv-halflife\">Utility decay half-life (days)</label> <input id=\"adv-halflife\" class=\"control-input control-input--narrow svelte-1844cb2\" type=\"number\" min=\"0.1\" step=\"0.1\" placeholder=\"default\"${attr(\"value\", imHalfLife)}${attr(\"disabled\", saving, true)}/></div> <div class=\"control-group svelte-1844cb2\"><label class=\"control-label svelte-1844cb2\" for=\"adv-fbboost\">Feedback stability boost (≥1)</label> <input id=\"adv-fbboost\" class=\"control-input control-input--narrow svelte-1844cb2\" type=\"number\" min=\"1\" step=\"0.1\" placeholder=\"default\"${attr(\"value\", imFeedbackBoost)}${attr(\"disabled\", saving, true)}/></div> <div class=\"control-group svelte-1844cb2\"><label class=\"control-label svelte-1844cb2\" for=\"adv-eventret\">Event retention (days)</label> <input id=\"adv-eventret\" class=\"control-input control-input--narrow svelte-1844cb2\" type=\"number\" min=\"0\" placeholder=\"default\"${attr(\"value\", imEventRetention)}${attr(\"disabled\", saving, true)}/></div> <div class=\"control-group svelte-1844cb2\"><label class=\"control-label svelte-1844cb2\" for=\"adv-minscore\">Search min score</label> <input id=\"adv-minscore\" class=\"control-input control-input--narrow svelte-1844cb2\" type=\"number\" min=\"0\" step=\"0.01\" placeholder=\"default\"${attr(\"value\", searchMinScore)}${attr(\"disabled\", saving, true)}/></div> <div class=\"control-group svelte-1844cb2\"><label class=\"control-label svelte-1844cb2\" for=\"adv-rerank\">Curate rerank</label> `);\n\t\t$$renderer.select({\n\t\t\tid: \"adv-rerank\",\n\t\t\tclass: \"control-input\",\n\t\t\tvalue: searchCurateRerank,\n\t\t\tdisabled: saving\n\t\t}, ($$renderer) => {\n\t\t\t$$renderer.option({ value: \"\" }, ($$renderer) => {\n\t\t\t\t$$renderer.push(`Default`);\n\t\t\t});\n\t\t\t$$renderer.option({ value: \"on\" }, ($$renderer) => {\n\t\t\t\t$$renderer.push(`Enabled`);\n\t\t\t});\n\t\t\t$$renderer.option({ value: \"off\" }, ($$renderer) => {\n\t\t\t\t$$renderer.push(`Disabled`);\n\t\t\t});\n\t\t}, \"svelte-1844cb2\");\n\t\t$$renderer.push(`</div> <div class=\"control-group svelte-1844cb2\"><label class=\"control-label svelte-1844cb2\" for=\"adv-reqreason\">Feedback requires reason</label> `);\n\t\t$$renderer.select({\n\t\t\tid: \"adv-reqreason\",\n\t\t\tclass: \"control-input\",\n\t\t\tvalue: fbRequireReason,\n\t\t\tdisabled: saving\n\t\t}, ($$renderer) => {\n\t\t\t$$renderer.option({ value: \"\" }, ($$renderer) => {\n\t\t\t\t$$renderer.push(`Default`);\n\t\t\t});\n\t\t\t$$renderer.option({ value: \"on\" }, ($$renderer) => {\n\t\t\t\t$$renderer.push(`Required`);\n\t\t\t});\n\t\t\t$$renderer.option({ value: \"off\" }, ($$renderer) => {\n\t\t\t\t$$renderer.push(`Optional`);\n\t\t\t});\n\t\t}, \"svelte-1844cb2\");\n\t\t$$renderer.push(`</div> <div class=\"control-group control-group--wide svelte-1844cb2\"><label class=\"control-label svelte-1844cb2\" for=\"adv-failmodes\">Allowed feedback failure modes (comma-separated)</label> <input id=\"adv-failmodes\" class=\"control-input svelte-1844cb2\" type=\"text\" spellcheck=\"false\" placeholder=\"e.g. outdated, incorrect, irrelevant\"${attr(\"value\", fbFailureModes)}${attr(\"disabled\", saving, true)}/></div> <div class=\"control-group control-group--wide svelte-1844cb2\"><label class=\"control-label svelte-1844cb2\" for=\"adv-index\">Index config (JSON, per-pass)</label> <textarea id=\"adv-index\" class=\"control-input svelte-1844cb2\" rows=\"4\" spellcheck=\"false\" placeholder=\"{ "enrichment": { "llm": false } }\"${attr(\"disabled\", saving, true)}>`);\n\t\tconst $$body = escape_html(indexJson);\n\t\tif ($$body) $$renderer.push(`${$$body}`);\n\t\t$$renderer.push(`</textarea> <span class=\"section-note svelte-1844cb2\">Advanced per-pass indexing options (enrichment, graphExtraction, metadataEnhance, stalenessDetection). Must be a JSON object.</span></div></div></section> `);\n\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--></div> `);\n\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--></div>`);\n\t});\n}\n//#endregion\n//#region src/lib/components/VoiceTab.svelte\nfunction VoiceTab($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { tokenStored } = $$props;\n\t\tconst ADMIN_TTS_OPTIONS = [\n\t\t\t{\n\t\t\t\tid: \"openpalm-voice\",\n\t\t\t\tname: \"OpenPalm Voice\",\n\t\t\t\ttype: \"local\",\n\t\t\t\trecommended: true,\n\t\t\t\tdesc: \"Local Kokoro TTS + Whisper STT bundled together.\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"remote\",\n\t\t\t\tname: \"Remote (OpenAI-compatible)\",\n\t\t\t\ttype: \"cloud\",\n\t\t\t\tdesc: \"Point at any /v1/audio/speech endpoint (OpenAI, Kokoro, Piper, …).\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"browser\",\n\t\t\t\tname: \"Browser\",\n\t\t\t\ttype: \"builtin\",\n\t\t\t\tdesc: \"Web Speech API on this device. No setup, voice quality varies.\"\n\t\t\t}\n\t\t];\n\t\tconst ADMIN_STT_OPTIONS = [\n\t\t\t{\n\t\t\t\tid: \"openpalm-voice\",\n\t\t\t\tname: \"OpenPalm Voice\",\n\t\t\t\ttype: \"local\",\n\t\t\t\trecommended: true,\n\t\t\t\tdesc: \"Local Kokoro TTS + Whisper STT bundled together.\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"remote\",\n\t\t\t\tname: \"Remote (OpenAI-compatible)\",\n\t\t\t\ttype: \"cloud\",\n\t\t\t\tdesc: \"Point at any /v1/audio/transcriptions endpoint (Whisper, …).\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"browser\",\n\t\t\t\tname: \"Browser\",\n\t\t\t\ttype: \"builtin\",\n\t\t\t\tdesc: \"Web Speech API on this device. Chrome/Edge only on desktop.\"\n\t\t\t}\n\t\t];\n\t\tconst ADMIN_TTS_ENGINES = {\n\t\t\t\"openpalm-voice\": {\n\t\t\t\tid: \"openpalm-voice\",\n\t\t\t\tfields: []\n\t\t\t},\n\t\t\tremote: {\n\t\t\t\tid: \"remote\",\n\t\t\t\tfields: [\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"baseURL\",\n\t\t\t\t\t\tlabel: \"Endpoint URL\",\n\t\t\t\t\t\tplaceholder: \"http://host.docker.internal:8880/v1\",\n\t\t\t\t\t\thint: \"OpenAI-compatible /v1/audio/speech endpoint.\"\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"model\",\n\t\t\t\t\t\tlabel: \"Model\",\n\t\t\t\t\t\tplaceholder: \"tts-1\"\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"voice\",\n\t\t\t\t\t\tlabel: \"Voice\",\n\t\t\t\t\t\tplaceholder: \"alloy\"\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\tbrowser: {\n\t\t\t\tid: \"browser\",\n\t\t\t\tfields: []\n\t\t\t}\n\t\t};\n\t\tconst ADMIN_STT_ENGINES = {\n\t\t\t\"openpalm-voice\": {\n\t\t\t\tid: \"openpalm-voice\",\n\t\t\t\tfields: []\n\t\t\t},\n\t\t\tremote: {\n\t\t\t\tid: \"remote\",\n\t\t\t\tfields: [\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"baseURL\",\n\t\t\t\t\t\tlabel: \"Endpoint URL\",\n\t\t\t\t\t\tplaceholder: \"http://host.docker.internal:9000/v1\",\n\t\t\t\t\t\thint: \"OpenAI-compatible /v1/audio/transcriptions endpoint.\"\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"model\",\n\t\t\t\t\t\tlabel: \"Model\",\n\t\t\t\t\t\tplaceholder: \"whisper-1\"\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"language\",\n\t\t\t\t\t\tlabel: \"Language\",\n\t\t\t\t\t\tplaceholder: \"en\",\n\t\t\t\t\t\thint: \"A code like `en` or `fr`, or leave blank to detect.\"\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\tbrowser: {\n\t\t\t\tid: \"browser\",\n\t\t\t\tfields: [{\n\t\t\t\t\tkey: \"language\",\n\t\t\t\t\tlabel: \"Language\",\n\t\t\t\t\tplaceholder: \"en-US\"\n\t\t\t\t}]\n\t\t\t}\n\t\t};\n\t\tconst EMPTY_SECTION = () => ({\n\t\t\tengine: \"\",\n\t\t\tbaseURL: \"\",\n\t\t\tmodel: \"\",\n\t\t\tvoice: \"\",\n\t\t\tlanguage: \"\"\n\t\t});\n\t\tlet loading = false;\n\t\tlet tts = EMPTY_SECTION();\n\t\tlet stt = EMPTY_SECTION();\n\t\tlet availability = {\n\t\t\tstt: {\n\t\t\t\tremoteConfigured: false,\n\t\t\t\tremoteReachable: false\n\t\t\t},\n\t\t\ttts: {\n\t\t\t\tremoteConfigured: false,\n\t\t\t\tremoteReachable: false\n\t\t\t}\n\t\t};\n\t\tlet addonProfiles = [];\n\t\tlet selectedProfile = \"\";\n\t\tconst wantsOpenpalmVoice = derived(() => tts.engine === \"openpalm-voice\" || stt.engine === \"openpalm-voice\");\n\t\tfunction sectionToValue(s) {\n\t\t\treturn {\n\t\t\t\tengine: s.engine,\n\t\t\t\t...s.baseURL ? { baseURL: s.baseURL } : {},\n\t\t\t\t...s.model ? { model: s.model } : {},\n\t\t\t\t...s.voice ? { voice: s.voice } : {},\n\t\t\t\t...s.language ? { language: s.language } : {}\n\t\t\t};\n\t\t}\n\t\tfunction applyTtsChange(v) {\n\t\t\ttts.engine = v.engine || \"\";\n\t\t\ttts.baseURL = v.baseURL ?? \"\";\n\t\t\ttts.model = v.model ?? \"\";\n\t\t\ttts.voice = v.voice ?? \"\";\n\t\t}\n\t\tfunction applySttChange(v) {\n\t\t\tstt.engine = v.engine || \"\";\n\t\t\tstt.baseURL = v.baseURL ?? \"\";\n\t\t\tstt.model = v.model ?? \"\";\n\t\t\tstt.language = v.language ?? \"\";\n\t\t}\n\t\tconst sttDisabledEngines = derived(() => {\n\t\t\treturn {};\n\t\t});\n\t\tconst ttsHiddenEngines = derived(() => new Set([\"browser\"]));\n\t\tconst sttHiddenEngines = derived(() => new Set([\"browser\"]));\n\t\t$$renderer.push(`<div class=\"panel\" role=\"tabpanel\"><div class=\"panel-header svelte-1iuj2un\"><h2 class=\"svelte-1iuj2un\">Voice</h2> <div class=\"panel-header-actions svelte-1iuj2un\"><button class=\"btn btn-secondary btn-sm\"${attr(\"disabled\", !tokenStored, true)}>`);\n\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> Refresh</button> <button class=\"btn btn-primary btn-sm\"${attr(\"disabled\", !tokenStored, true)}>`);\n\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> Save</button></div></div> `);\n\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> <div class=\"panel-body svelte-1iuj2un\"><p class=\"section-desc svelte-1iuj2un\">Configure how the assistant listens and speaks. Choose an engine for each;\n\t\t\tthe in-app mic uses STT and the optional auto-speak toggle uses TTS.</p> <section class=\"engine-section svelte-1iuj2un\"><h3 class=\"engine-heading svelte-1iuj2un\">Text-to-Speech</h3> <p class=\"engine-subheading svelte-1iuj2un\">How your assistant speaks</p> `);\n\t\tVoiceEngineSelector($$renderer, {\n\t\t\tkind: \"tts\",\n\t\t\tvalue: sectionToValue(tts),\n\t\t\tonchange: applyTtsChange,\n\t\t\tengineOptions: ADMIN_TTS_OPTIONS,\n\t\t\tengineConfigs: ADMIN_TTS_ENGINES,\n\t\t\treachable: availability.tts,\n\t\t\treachabilityEngineId: \"remote\",\n\t\t\thiddenEngines: ttsHiddenEngines()\n\t\t});\n\t\t$$renderer.push(`<!----> `);\n\t\tif (tts.engine) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<div class=\"tts-extras svelte-1iuj2un\"><div class=\"test-voice-row svelte-1iuj2un\"><button type=\"button\" class=\"btn btn-secondary btn-sm\"${attr(\"disabled\", loading, true)}>`);\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<!--]--> Test voice</button> `);\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<!--]--></div> <label class=\"auto-speak-toggle svelte-1iuj2un\"><input type=\"checkbox\"${attr(\"checked\", voiceState.ttsAutoEnabled, true)} class=\"svelte-1iuj2un\"/> <span>Speak assistant replies aloud automatically</span></label></div>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--></section> <section class=\"engine-section svelte-1iuj2un\"><h3 class=\"engine-heading svelte-1iuj2un\">Speech-to-Text</h3> <p class=\"engine-subheading svelte-1iuj2un\">How your assistant listens</p> `);\n\t\tVoiceEngineSelector($$renderer, {\n\t\t\tkind: \"stt\",\n\t\t\tvalue: sectionToValue(stt),\n\t\t\tonchange: applySttChange,\n\t\t\tengineOptions: ADMIN_STT_OPTIONS,\n\t\t\tengineConfigs: ADMIN_STT_ENGINES,\n\t\t\treachable: availability.stt,\n\t\t\treachabilityEngineId: \"remote\",\n\t\t\tdisabledEngines: sttDisabledEngines(),\n\t\t\thiddenEngines: sttHiddenEngines()\n\t\t});\n\t\t$$renderer.push(`<!----></section> `);\n\t\tif (wantsOpenpalmVoice() && addonProfiles.length > 0) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<section class=\"engine-section svelte-1iuj2un\"><h3 class=\"engine-heading svelte-1iuj2un\">Hardware profile</h3> `);\n\t\t\tVoiceProfileSelector($$renderer, {\n\t\t\t\tprofiles: addonProfiles,\n\t\t\t\tselectedProfile,\n\t\t\t\tonchange: (id) => selectedProfile = id\n\t\t\t});\n\t\t\t$$renderer.push(`<!----></section>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--></div></div>`);\n\t});\n}\n//#endregion\n//#region src/routes/admin/+page.svelte\nfunction _page($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet authLocked = true;\n\t\tlet authLoading = false;\n\t\tlet authError = \"\";\n\t\tlet adminHealth = null;\n\t\tlet healthLoading = false;\n\t\tlet applyLoading = false;\n\t\tlet upgradeLoading = false;\n\t\tlet containersLoading = false;\n\t\tlet automationsLoading = false;\n\t\tlet operationResult = \"\";\n\t\tlet operationResultType = \"info\";\n\t\tlet containerData = null;\n\t\tlet containerError = \"\";\n\t\tlet containersLastUpdated = null;\n\t\tlet automationsData = null;\n\t\tlet automationsError = \"\";\n\t\tlet selectedContainerId = null;\n\t\tlet activeTab = \"overview\";\n\t\tlet pullLoading = false;\n\t\tlet currentImageTag = \"\";\n\t\tlet inElectron = false;\n\t\tlet tagChangeLoading = false;\n\t\tlet uiDownloadLoading = false;\n\t\tlet uiDownloadReady = false;\n\t\tlet selectedImageTag = \"latest\";\n\t\tlet selectedUiTag = \"\";\n\t\tlet releases = [];\n\t\tlet releasesLoading = false;\n\t\tlet uiVersions = [];\n\t\tlet uiVersionsLoading = false;\n\t\tconst POLL_INTERVAL_MS = 1e4;\n\t\tlet pollTimer = null;\n\t\tfunction startContainerPolling() {\n\t\t\tstopContainerPolling();\n\t\t\tpollTimer = setInterval(() => {\n\t\t\t\tif (!authLocked && containerData) loadContainers();\n\t\t\t}, POLL_INTERVAL_MS);\n\t\t}\n\t\tfunction stopContainerPolling() {\n\t\t\tif (pollTimer !== null) {\n\t\t\t\tclearInterval(pollTimer);\n\t\t\t\tpollTimer = null;\n\t\t\t}\n\t\t}\n\t\tonDestroy(() => {\n\t\t\tstopContainerPolling();\n\t\t});\n\t\tlet anyDangerousLoading = derived(() => applyLoading || upgradeLoading);\n\t\t/** Merged service → state map (used by OverviewTab for health indicators) */\n\t\tlet mergedServices = derived(() => {\n\t\t\tif (!containerData) return /* @__PURE__ */ new Map();\n\t\t\tconst merged = /* @__PURE__ */ new Map();\n\t\t\tif (containerData.containers) for (const [name, state] of Object.entries(containerData.containers)) merged.set(name, state);\n\t\t\tif (containerData.dockerContainers) for (const c of containerData.dockerContainers) merged.set(c.Service, c.State);\n\t\t\treturn merged;\n\t\t});\n\t\t/** Full merged ServiceEntry list (used by ContainersTab for detail rows) */\n\t\tlet serviceEntries = derived(() => {\n\t\t\tif (!containerData) return [];\n\t\t\tconst byService = /* @__PURE__ */ new Map();\n\t\t\tif (containerData.containers) for (const [name, state] of Object.entries(containerData.containers)) byService.set(name, {\n\t\t\t\tid: name,\n\t\t\t\tservice: name,\n\t\t\t\tstate,\n\t\t\t\tdocker: null\n\t\t\t});\n\t\t\tif (containerData.dockerContainers) for (const c of containerData.dockerContainers) {\n\t\t\t\tconst existing = byService.get(c.Service);\n\t\t\t\tif (existing) {\n\t\t\t\t\texisting.state = c.State;\n\t\t\t\t\texisting.docker = c;\n\t\t\t\t\texisting.id = c.ID;\n\t\t\t\t} else byService.set(c.Service, {\n\t\t\t\t\tid: c.ID,\n\t\t\t\t\tservice: c.Service || c.Name,\n\t\t\t\t\tstate: c.State,\n\t\t\t\t\tdocker: c\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn [...byService.values()].sort((a, b) => {\n\t\t\t\tif (a.state === \"running\" && b.state !== \"running\") return -1;\n\t\t\t\tif (a.state !== \"running\" && b.state === \"running\") return 1;\n\t\t\t\treturn a.service.localeCompare(b.service);\n\t\t\t});\n\t\t});\n\t\tfunction applyInvalidTokenState() {\n\t\t\tauthLocked = true;\n\t\t\tauthError = \"Invalid password.\";\n\t\t}\n\t\tasync function handleAuthSuccess(token) {\n\t\t\tif (authLoading) return false;\n\t\t\tauthLoading = true;\n\t\t\tauthError = \"\";\n\t\t\ttry {\n\t\t\t\tif (!(await fetch(\"/admin/auth/login\", {\n\t\t\t\t\tmethod: \"POST\",\n\t\t\t\t\theaders: { \"content-type\": \"application/json\" },\n\t\t\t\t\tbody: JSON.stringify({ password: token }),\n\t\t\t\t\tcredentials: \"include\"\n\t\t\t\t})).ok) {\n\t\t\t\t\tapplyInvalidTokenState();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tauthLocked = false;\n\t\t\t\tauthError = \"\";\n\t\t\t\tstartContainerPolling();\n\t\t\t\tawait loadHealth();\n\t\t\t\tloadContainers();\n\t\t\t\tloadAutomations();\n\t\t\t\tloadVersions();\n\t\t\t\tloadReleases();\n\t\t\t\treturn true;\n\t\t\t} catch (e) {\n\t\t\t\tconsole.warn(\"[page] Auth failed:\", e);\n\t\t\t\tauthError = \"Unable to reach admin API.\";\n\t\t\t\treturn false;\n\t\t\t} finally {\n\t\t\t\tauthLoading = false;\n\t\t\t}\n\t\t}\n\t\tasync function loadHealth() {\n\t\t\thealthLoading = true;\n\t\t\ttry {\n\t\t\t\tconst health = await fetchHealth();\n\t\t\t\tadminHealth = health.admin;\n\t\t\t\thealth.guardian;\n\t\t\t} catch (e) {\n\t\t\t\tconsole.warn(\"[page] Health check failed:\", e);\n\t\t\t\tadminHealth = {\n\t\t\t\t\tstatus: \"error\",\n\t\t\t\t\tservice: \"admin\"\n\t\t\t\t};\n\t\t\t}\n\t\t\thealthLoading = false;\n\t\t}\n\t\tasync function loadContainers() {\n\t\t\tcontainersLoading = true;\n\t\t\tcontainerError = \"\";\n\t\t\ttry {\n\t\t\t\tcontainerData = await fetchContainers();\n\t\t\t} catch (e) {\n\t\t\t\tcontainerData = null;\n\t\t\t\tconst err = e;\n\t\t\t\tif (err.status === 401) {\n\t\t\t\t\tcontainerError = \"Invalid password.\";\n\t\t\t\t\tapplyInvalidTokenState();\n\t\t\t\t} else containerError = `Failed to load containers: ${err.message ?? e}`;\n\t\t\t}\n\t\t\tcontainersLoading = false;\n\t\t\tif (containerData) containersLastUpdated = (/* @__PURE__ */ new Date()).toLocaleTimeString();\n\t\t}\n\t\tasync function loadAutomations() {\n\t\t\tautomationsLoading = true;\n\t\t\tautomationsError = \"\";\n\t\t\ttry {\n\t\t\t\tautomationsData = await fetchAutomations();\n\t\t\t} catch (e) {\n\t\t\t\tautomationsData = null;\n\t\t\t\tconst err = e;\n\t\t\t\tif (err.status === 401) {\n\t\t\t\t\tautomationsError = \"Invalid password.\";\n\t\t\t\t\tapplyInvalidTokenState();\n\t\t\t\t} else automationsError = `Failed to load automations: ${err.message ?? e}`;\n\t\t\t}\n\t\t\tautomationsLoading = false;\n\t\t}\n\t\tasync function loadVersions() {\n\t\t\ttry {\n\t\t\t\tconst data = await fetchVersions();\n\t\t\t\tcurrentImageTag = data.imageTag;\n\t\t\t\tinElectron = data.inElectron;\n\t\t\t} catch {}\n\t\t}\n\t\tasync function loadReleases() {\n\t\t\treleasesLoading = true;\n\t\t\tuiVersionsLoading = true;\n\t\t\ttry {\n\t\t\t\tconst [releaseData, uiData] = await Promise.all([fetchReleases(), fetchUiVersions()]);\n\t\t\t\treleases = releaseData.releases;\n\t\t\t\tuiVersions = uiData.versions;\n\t\t\t\tif (!selectedUiTag) {\n\t\t\t\t\tconst channelPick = uiData.versions.find((v) => v.distTag === \"next\" || v.distTag === \"latest\") ?? uiData.versions[0];\n\t\t\t\t\tif (channelPick) selectedUiTag = channelPick.version;\n\t\t\t\t}\n\t\t\t} catch {}\n\t\t\treleasesLoading = false;\n\t\t\tuiVersionsLoading = false;\n\t\t}\n\t\tasync function handleApplyChanges() {\n\t\t\tif (anyDangerousLoading()) return;\n\t\t\tapplyLoading = true;\n\t\t\ttry {\n\t\t\t\tconst result = await applyChanges();\n\t\t\t\tif (result.overallSuccess) {\n\t\t\t\t\toperationResult = result.restarted.length > 0 ? `Changes applied successfully. Restarted: ${result.restarted.join(\", \")}.` : \"Changes applied successfully.\";\n\t\t\t\t\toperationResultType = \"success\";\n\t\t\t\t} else if (result.failed.length > 0) {\n\t\t\t\t\tconst failures = result.failed.map((f) => `${f.service}: ${f.reason}`).join(\"; \");\n\t\t\t\t\tconst restartedNote = result.restarted.length > 0 ? ` (other services restarted: ${result.restarted.join(\", \")})` : \"\";\n\t\t\t\t\toperationResult = `Apply failed for ${result.failed.length} service(s): ${failures}${restartedNote}`;\n\t\t\t\t\toperationResultType = \"error\";\n\t\t\t\t} else if (!result.dockerAvailable) {\n\t\t\t\t\toperationResult = \"Config written, but Docker is unavailable — services were not restarted.\";\n\t\t\t\t\toperationResultType = \"error\";\n\t\t\t\t} else {\n\t\t\t\t\toperationResult = `Apply failed: ${result.error ?? \"unknown error\"}`;\n\t\t\t\t\toperationResultType = \"error\";\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tconst err = e;\n\t\t\t\tif (err.status === 401) applyInvalidTokenState();\n\t\t\t\telse {\n\t\t\t\t\toperationResult = `Error applying changes: ${err.message ?? e}`;\n\t\t\t\t\toperationResultType = \"error\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tapplyLoading = false;\n\t\t}\n\t\tasync function handleUpgradeStack() {\n\t\t\tif (anyDangerousLoading()) return;\n\t\t\tupgradeLoading = true;\n\t\t\ttry {\n\t\t\t\tconst result = await upgradeStack();\n\t\t\t\toperationResult = `Upgrade complete (image: ${result.imageTag}). ${result.assetsUpdated.length} asset(s) updated, ${result.restarted.length} service(s) restarted.`;\n\t\t\t\toperationResultType = \"success\";\n\t\t\t} catch (e) {\n\t\t\t\tconst err = e;\n\t\t\t\tif (err.status === 401) applyInvalidTokenState();\n\t\t\t\telse {\n\t\t\t\t\toperationResult = `Error upgrading stack: ${err.message ?? e}`;\n\t\t\t\t\toperationResultType = \"error\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tupgradeLoading = false;\n\t\t}\n\t\tasync function handleSetImageTag(tag) {\n\t\t\tif (tagChangeLoading) return;\n\t\t\ttagChangeLoading = true;\n\t\t\ttry {\n\t\t\t\tconst result = await setStackVersion(tag);\n\t\t\t\tcurrentImageTag = result.imageTag;\n\t\t\t\tselectedImageTag = result.imageTag;\n\t\t\t\toperationResult = `Image tag set to ${result.imageTag}. Restarted: ${result.restarted.join(\", \") || \"none\"}.`;\n\t\t\t\toperationResultType = \"success\";\n\t\t\t} catch (e) {\n\t\t\t\toperationResult = `Failed to apply image tag: ${e.message ?? e}`;\n\t\t\t\toperationResultType = \"error\";\n\t\t\t}\n\t\t\ttagChangeLoading = false;\n\t\t}\n\t\tasync function handleDownloadUiVersion(tag) {\n\t\t\tif (uiDownloadLoading) return;\n\t\t\tuiDownloadLoading = true;\n\t\t\tuiDownloadReady = false;\n\t\t\ttry {\n\t\t\t\tawait downloadUiVersion(tag);\n\t\t\t\tselectedUiTag = tag;\n\t\t\t\tuiDownloadReady = true;\n\t\t\t} catch (e) {\n\t\t\t\toperationResult = `Failed to download UI version: ${e.message ?? e}`;\n\t\t\t\toperationResultType = \"error\";\n\t\t\t}\n\t\t\tuiDownloadLoading = false;\n\t\t}\n\t\tfunction handleRestartApp() {\n\t\t\twindow.openpalm?.restart?.();\n\t\t}\n\t\tasync function handleContainerAction(action, containerId) {\n\t\t\ttry {\n\t\t\t\tawait containerAction(action, containerId);\n\t\t\t\tawait loadContainers();\n\t\t\t} catch (e) {\n\t\t\t\tconst err = e;\n\t\t\t\tif (err.status === 401) applyInvalidTokenState();\n\t\t\t\telse containerError = `Action failed: ${err.message ?? e}`;\n\t\t\t}\n\t\t}\n\t\tfunction handleToggleContainer(id) {\n\t\t\tselectedContainerId = selectedContainerId === id ? null : id;\n\t\t}\n\t\t/** Derive service names from container data for the logs tab */\n\t\tlet serviceNames = derived(() => {\n\t\t\tif (!containerData) return [];\n\t\t\tconst names = /* @__PURE__ */ new Set();\n\t\t\tif (containerData.containers) for (const name of Object.keys(containerData.containers)) names.add(name);\n\t\t\tif (containerData.dockerContainers) {\n\t\t\t\tfor (const c of containerData.dockerContainers) if (c.Service) names.add(c.Service);\n\t\t\t}\n\t\t\treturn [...names].sort();\n\t\t});\n\t\tasync function handlePullImages() {\n\t\t\tpullLoading = true;\n\t\t\ttry {\n\t\t\t\tawait pullImages();\n\t\t\t\tawait loadContainers();\n\t\t\t} catch (e) {\n\t\t\t\tconst err = e;\n\t\t\t\tif (err.status === 401) applyInvalidTokenState();\n\t\t\t\telse containerError = `Pull failed: ${err.message ?? e}`;\n\t\t\t} finally {\n\t\t\t\tpullLoading = false;\n\t\t\t}\n\t\t}\n\t\tfunction handleTabSelect(tab) {\n\t\t\tactiveTab = tab;\n\t\t\tif (tab === \"containers\" && !containerData) loadContainers();\n\t\t\tif (tab === \"automations\" && !automationsData) loadAutomations();\n\t\t}\n\t\tfunction handleComponentsAuthError() {\n\t\t\tapplyInvalidTokenState();\n\t\t}\n\t\thead(\"1jef3w8\", $$renderer, ($$renderer) => {\n\t\t\t$$renderer.title(($$renderer) => {\n\t\t\t\t$$renderer.push(`<title>OpenPalm Console</title>`);\n\t\t\t});\n\t\t});\n\t\tif (authLocked) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\tAuthGate($$renderer, {\n\t\t\t\tonSuccess: handleAuthSuccess,\n\t\t\t\tloading: authLoading,\n\t\t\t\terror: authError\n\t\t\t});\n\t\t} else {\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\tNavbar($$renderer, {});\n\t\t\t$$renderer.push(`<!----> <main class=\"svelte-1jef3w8\">`);\n\t\t\tTabBar($$renderer, {\n\t\t\t\tactive: activeTab,\n\t\t\t\tonSelect: handleTabSelect\n\t\t\t});\n\t\t\t$$renderer.push(`<!----> `);\n\t\t\tif (activeTab === \"overview\") {\n\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\tOverviewTab($$renderer, {\n\t\t\t\t\tadminHealth,\n\t\t\t\t\toperationResult,\n\t\t\t\t\toperationResultType,\n\t\t\t\t\ttokenStored: true,\n\t\t\t\t\thealthLoading,\n\t\t\t\t\tapplyLoading,\n\t\t\t\t\tupgradeLoading,\n\t\t\t\t\tanyDangerousLoading: anyDangerousLoading(),\n\t\t\t\t\tautomationsData,\n\t\t\t\t\tmergedServices: mergedServices(),\n\t\t\t\t\tcurrentImageTag,\n\t\t\t\t\ttagChangeLoading,\n\t\t\t\t\tuiDownloadLoading,\n\t\t\t\t\tuiDownloadReady,\n\t\t\t\t\tinElectron,\n\t\t\t\t\tselectedImageTag,\n\t\t\t\t\tselectedUiTag,\n\t\t\t\t\treleases,\n\t\t\t\t\treleasesLoading,\n\t\t\t\t\tuiVersions,\n\t\t\t\t\tuiVersionsLoading,\n\t\t\t\t\tonCheckHealth: loadHealth,\n\t\t\t\t\tonApplyChanges: handleApplyChanges,\n\t\t\t\t\tonUpgradeStack: handleUpgradeStack,\n\t\t\t\t\tonDismissResult: () => {\n\t\t\t\t\t\toperationResult = \"\";\n\t\t\t\t\t\toperationResultType = \"info\";\n\t\t\t\t\t},\n\t\t\t\t\tonSetImageTag: handleSetImageTag,\n\t\t\t\t\tonDownloadUiVersion: handleDownloadUiVersion,\n\t\t\t\t\tonRestartApp: handleRestartApp,\n\t\t\t\t\tonSelectedImageTagChange: (t) => {\n\t\t\t\t\t\tselectedImageTag = t;\n\t\t\t\t\t},\n\t\t\t\t\tonSelectedUiTagChange: (t) => {\n\t\t\t\t\t\tselectedUiTag = t;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else if (activeTab === \"addons\") {\n\t\t\t\t$$renderer.push(\"<!--[1-->\");\n\t\t\t\tAddonsTab($$renderer, { onAuthError: handleComponentsAuthError });\n\t\t\t} else if (activeTab === \"containers\") {\n\t\t\t\t$$renderer.push(\"<!--[2-->\");\n\t\t\t\tContainersTab($$renderer, {\n\t\t\t\t\tcontainerData,\n\t\t\t\t\tserviceEntries: serviceEntries(),\n\t\t\t\t\tloading: containersLoading,\n\t\t\t\t\terror: containerError,\n\t\t\t\t\ttokenStored: true,\n\t\t\t\t\tselectedContainerId,\n\t\t\t\t\tonToggleContainer: handleToggleContainer,\n\t\t\t\t\tonStart: (id) => handleContainerAction(\"start\", id),\n\t\t\t\t\tonStop: (id) => handleContainerAction(\"stop\", id),\n\t\t\t\t\tonRestart: (id) => handleContainerAction(\"restart\", id),\n\t\t\t\t\tonRefresh: loadContainers,\n\t\t\t\t\tonPullImages: handlePullImages,\n\t\t\t\t\tlastUpdated: containersLastUpdated,\n\t\t\t\t\tpullLoading\n\t\t\t\t});\n\t\t\t} else if (activeTab === \"automations\") {\n\t\t\t\t$$renderer.push(\"<!--[3-->\");\n\t\t\t\tAutomationsTab($$renderer, {\n\t\t\t\t\tdata: automationsData,\n\t\t\t\t\tloading: automationsLoading,\n\t\t\t\t\terror: automationsError,\n\t\t\t\t\ttokenStored: true,\n\t\t\t\t\tonRefresh: loadAutomations\n\t\t\t\t});\n\t\t\t} else if (activeTab === \"connections\") {\n\t\t\t\t$$renderer.push(\"<!--[4-->\");\n\t\t\t\tProvidersPanel($$renderer, {});\n\t\t\t} else if (activeTab === \"secrets\") {\n\t\t\t\t$$renderer.push(\"<!--[5-->\");\n\t\t\t\tSecretsTab($$renderer, { tokenStored: true });\n\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<!--]--> `);\n\t\t\tif (activeTab === \"voice\") {\n\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\tVoiceTab($$renderer, { tokenStored: true });\n\t\t\t} else if (activeTab === \"akm\") {\n\t\t\t\t$$renderer.push(\"<!--[1-->\");\n\t\t\t\tAkmTab($$renderer, { tokenStored: true });\n\t\t\t} else if (activeTab === \"logs\") {\n\t\t\t\t$$renderer.push(\"<!--[2-->\");\n\t\t\t\tLogsTab($$renderer, {\n\t\t\t\t\ttokenStored: true,\n\t\t\t\t\tservices: serviceNames()\n\t\t\t\t});\n\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<!--]--></main>`);\n\t\t}\n\t\t$$renderer.push(`<!--]-->`);\n\t});\n}\n//#endregion\nexport { _page as default };\n"],"names":[],"mappings":"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"}
|