@openpalm/ui 0.11.0-rc.4 → 0.11.0-rc.6
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/{DTwNbG18.js → CJ4t2a2c.js} +1 -1
- package/build/client/_app/immutable/chunks/CJ4t2a2c.js.br +0 -0
- package/build/client/_app/immutable/chunks/CJ4t2a2c.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{DKrt-Ofe.js → D6tVMRB1.js} +2 -2
- package/build/client/_app/immutable/chunks/D6tVMRB1.js.br +0 -0
- package/build/client/_app/immutable/chunks/D6tVMRB1.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{CmvkId2p.js → DtQA2RPv.js} +1 -1
- package/build/client/_app/immutable/chunks/DtQA2RPv.js.br +0 -0
- package/build/client/_app/immutable/chunks/DtQA2RPv.js.gz +0 -0
- package/build/client/_app/immutable/entry/{app.D2QrHH7_.js → app.DaV1p_yf.js} +2 -2
- package/build/client/_app/immutable/entry/app.DaV1p_yf.js.br +0 -0
- package/build/client/_app/immutable/entry/app.DaV1p_yf.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.DwrTolTH.js +1 -0
- package/build/client/_app/immutable/entry/start.DwrTolTH.js.br +0 -0
- package/build/client/_app/immutable/entry/start.DwrTolTH.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{1.vc1gswpN.js → 1.BcYYXdgz.js} +1 -1
- package/build/client/_app/immutable/nodes/1.BcYYXdgz.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.BcYYXdgz.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{4.DD0APCkW.js → 4.Cttl54lU.js} +1 -1
- package/build/client/_app/immutable/nodes/4.Cttl54lU.js.br +0 -0
- package/build/client/_app/immutable/nodes/{4.DD0APCkW.js.gz → 4.Cttl54lU.js.gz} +0 -0
- package/build/client/_app/immutable/nodes/{5.BIkQUR1G.js → 5.dN79W272.js} +1 -1
- package/build/client/_app/immutable/nodes/5.dN79W272.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.dN79W272.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{6.DVDakR8k.js → 6.CyAbk8Zx.js} +1 -1
- package/build/client/_app/immutable/nodes/6.CyAbk8Zx.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.CyAbk8Zx.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{7.wMxDFXAt.js → 7.BiwhNQmS.js} +1 -1
- package/build/client/_app/immutable/nodes/7.BiwhNQmS.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.BiwhNQmS.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{8.Cb4MWMah.js → 8.DNsQWKjK.js} +1 -1
- package/build/client/_app/immutable/nodes/8.DNsQWKjK.js.br +0 -0
- package/build/client/_app/immutable/nodes/{8.Cb4MWMah.js.gz → 8.DNsQWKjK.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-DrJ3Bkxz.js +9 -0
- package/build/server/chunks/{1-BwC-cEPZ.js.map → 1-DrJ3Bkxz.js.map} +1 -1
- package/build/server/chunks/{4-BHTk326s.js → 4-CrmPw4La.js} +3 -3
- package/build/server/chunks/{4-BHTk326s.js.map → 4-CrmPw4La.js.map} +1 -1
- package/build/server/chunks/{5-BZDwO3BH.js → 5-CtHPRN1L.js} +3 -3
- package/build/server/chunks/{5-BZDwO3BH.js.map → 5-CtHPRN1L.js.map} +1 -1
- package/build/server/chunks/{6-DtvUY6SF.js → 6-CO8aswdn.js} +3 -3
- package/build/server/chunks/{6-DtvUY6SF.js.map → 6-CO8aswdn.js.map} +1 -1
- package/build/server/chunks/{7-C9TeiPbc.js → 7-hc1cB6hI.js} +3 -3
- package/build/server/chunks/{7-C9TeiPbc.js.map → 7-hc1cB6hI.js.map} +1 -1
- package/build/server/chunks/{8-CF5kn4AY.js → 8-b9MOJ1zI.js} +2 -2
- package/build/server/chunks/{8-CF5kn4AY.js.map → 8-b9MOJ1zI.js.map} +1 -1
- package/build/server/chunks/{AuthGate-CdtQ21Tn.js → AuthGate-DZ0ZMuag.js} +3 -3
- package/build/server/chunks/{AuthGate-CdtQ21Tn.js.map → AuthGate-DZ0ZMuag.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-2puUmKay.js → _page.svelte-0LBL-kWB.js} +5 -5
- package/build/server/chunks/{_page.svelte-2puUmKay.js.map → _page.svelte-0LBL-kWB.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-DkYHUL4U.js → _page.svelte-CCe0W6d_.js} +4 -4
- package/build/server/chunks/{_page.svelte-DkYHUL4U.js.map → _page.svelte-CCe0W6d_.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-Cb3M2n38.js → _page.svelte-Cj-Ei5f0.js} +4 -4
- package/build/server/chunks/{_page.svelte-Cb3M2n38.js.map → _page.svelte-Cj-Ei5f0.js.map} +1 -1
- package/build/server/chunks/_page.svelte-D0gMlmzQ.js.map +1 -1
- package/build/server/chunks/{_page.svelte-DYWY35Zz.js → _page.svelte-oqyV-Sbu.js} +4 -4
- package/build/server/chunks/{_page.svelte-DYWY35Zz.js.map → _page.svelte-oqyV-Sbu.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DgTJfsxX.js → _server.ts-19QmVay0.js} +5 -5
- package/build/server/chunks/{_server.ts-DgTJfsxX.js.map → _server.ts-19QmVay0.js.map} +1 -1
- package/build/server/chunks/{_server.ts-djChqJ3l.js → _server.ts-3XBYy8_r.js} +4 -4
- package/build/server/chunks/{_server.ts-djChqJ3l.js.map → _server.ts-3XBYy8_r.js.map} +1 -1
- package/build/server/chunks/{_server.ts-FzTKvasI.js → _server.ts-8jHBLHCk.js} +5 -5
- package/build/server/chunks/{_server.ts-FzTKvasI.js.map → _server.ts-8jHBLHCk.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Br304l_4.js → _server.ts-B2zo-DK5.js} +3 -3
- package/build/server/chunks/{_server.ts-Br304l_4.js.map → _server.ts-B2zo-DK5.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BajIVU3T.js → _server.ts-B395XNkL.js} +4 -4
- package/build/server/chunks/{_server.ts-BajIVU3T.js.map → _server.ts-B395XNkL.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BheY_Hpx.js → _server.ts-B3QTVRYG.js} +4 -4
- package/build/server/chunks/{_server.ts-BheY_Hpx.js.map → _server.ts-B3QTVRYG.js.map} +1 -1
- package/build/server/chunks/{_server.ts-B4-U2IgV.js → _server.ts-B3k7cThn.js} +4 -4
- package/build/server/chunks/{_server.ts-B4-U2IgV.js.map → _server.ts-B3k7cThn.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CZVFChDK.js → _server.ts-B45wZgyy.js} +5 -5
- package/build/server/chunks/{_server.ts-CZVFChDK.js.map → _server.ts-B45wZgyy.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DGwGBkiZ.js → _server.ts-B6qNkB4n.js} +2 -2
- package/build/server/chunks/{_server.ts-DGwGBkiZ.js.map → _server.ts-B6qNkB4n.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DGvfj1AD.js → _server.ts-B8HFj-Dx.js} +4 -4
- package/build/server/chunks/{_server.ts-DGvfj1AD.js.map → _server.ts-B8HFj-Dx.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CED6YvVP.js → _server.ts-BETfAVwa.js} +4 -4
- package/build/server/chunks/{_server.ts-CED6YvVP.js.map → _server.ts-BETfAVwa.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DglztWzk.js → _server.ts-BRK4Ir_R.js} +4 -4
- package/build/server/chunks/{_server.ts-DglztWzk.js.map → _server.ts-BRK4Ir_R.js.map} +1 -1
- package/build/server/chunks/{_server.ts-31Ih8YM7.js → _server.ts-BVLer_FF.js} +6 -6
- package/build/server/chunks/{_server.ts-31Ih8YM7.js.map → _server.ts-BVLer_FF.js.map} +1 -1
- package/build/server/chunks/{_server.ts-uLRX2uy0.js → _server.ts-BYVcXj0z.js} +2 -2
- package/build/server/chunks/{_server.ts-uLRX2uy0.js.map → _server.ts-BYVcXj0z.js.map} +1 -1
- package/build/server/chunks/{_server.ts-ZcRUavo2.js → _server.ts-BgjZfCV7.js} +4 -4
- package/build/server/chunks/{_server.ts-ZcRUavo2.js.map → _server.ts-BgjZfCV7.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Cct9ZWnS.js → _server.ts-BkL5Ectn.js} +4 -4
- package/build/server/chunks/{_server.ts-Cct9ZWnS.js.map → _server.ts-BkL5Ectn.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BPbPm6_H.js → _server.ts-BlC-qzze.js} +4 -4
- package/build/server/chunks/{_server.ts-BPbPm6_H.js.map → _server.ts-BlC-qzze.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DG6Qxh-v.js → _server.ts-BoZlbX_k.js} +4 -4
- package/build/server/chunks/{_server.ts-DG6Qxh-v.js.map → _server.ts-BoZlbX_k.js.map} +1 -1
- package/build/server/chunks/{_server.ts-XmCgdAim.js → _server.ts-BviOfIbS.js} +4 -4
- package/build/server/chunks/{_server.ts-XmCgdAim.js.map → _server.ts-BviOfIbS.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CCMxf_7S.js → _server.ts-BwGHtnRM.js} +4 -4
- package/build/server/chunks/{_server.ts-CCMxf_7S.js.map → _server.ts-BwGHtnRM.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CD9ePvQZ.js → _server.ts-C10Bwaam.js} +4 -4
- package/build/server/chunks/{_server.ts-CD9ePvQZ.js.map → _server.ts-C10Bwaam.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CLzZwKQq.js → _server.ts-C1Tej7yY.js} +6 -6
- package/build/server/chunks/{_server.ts-CLzZwKQq.js.map → _server.ts-C1Tej7yY.js.map} +1 -1
- package/build/server/chunks/{_server.ts-UM7mXEsQ.js → _server.ts-C1dtzbLs.js} +5 -5
- package/build/server/chunks/{_server.ts-UM7mXEsQ.js.map → _server.ts-C1dtzbLs.js.map} +1 -1
- package/build/server/chunks/{_server.ts-lmcyfcf5.js → _server.ts-C3dlXrHW.js} +4 -4
- package/build/server/chunks/{_server.ts-lmcyfcf5.js.map → _server.ts-C3dlXrHW.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CBKtVzEl.js → _server.ts-C41Rea-i.js} +4 -4
- package/build/server/chunks/{_server.ts-CBKtVzEl.js.map → _server.ts-C41Rea-i.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BUzhYY5b.js → _server.ts-C5bAGAi7.js} +4 -4
- package/build/server/chunks/{_server.ts-BUzhYY5b.js.map → _server.ts-C5bAGAi7.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CzmHtvBP.js → _server.ts-C9GXq1YZ.js} +4 -4
- package/build/server/chunks/{_server.ts-CzmHtvBP.js.map → _server.ts-C9GXq1YZ.js.map} +1 -1
- package/build/server/chunks/{_server.ts-B5ewU2jA.js → _server.ts-CDbwBsKE.js} +4 -4
- package/build/server/chunks/{_server.ts-B5ewU2jA.js.map → _server.ts-CDbwBsKE.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CoCYLLcy.js → _server.ts-CTMWM7jo.js} +4 -4
- package/build/server/chunks/{_server.ts-CoCYLLcy.js.map → _server.ts-CTMWM7jo.js.map} +1 -1
- package/build/server/chunks/{_server.ts-D2a0wAaS.js → _server.ts-CUuEa0Vv.js} +4 -4
- package/build/server/chunks/{_server.ts-D2a0wAaS.js.map → _server.ts-CUuEa0Vv.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BnsyzAfd.js → _server.ts-CZLR8h_a.js} +4 -4
- package/build/server/chunks/{_server.ts-BnsyzAfd.js.map → _server.ts-CZLR8h_a.js.map} +1 -1
- package/build/server/chunks/{_server.ts-7YQtir-c.js → _server.ts-CboC8Emy.js} +6 -6
- package/build/server/chunks/{_server.ts-7YQtir-c.js.map → _server.ts-CboC8Emy.js.map} +1 -1
- package/build/server/chunks/{_server.ts-VHHuwb3V.js → _server.ts-CeRAfDvp.js} +4 -4
- package/build/server/chunks/{_server.ts-VHHuwb3V.js.map → _server.ts-CeRAfDvp.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CmcnDpcq.js → _server.ts-CejCgHrV.js} +4 -4
- package/build/server/chunks/{_server.ts-CmcnDpcq.js.map → _server.ts-CejCgHrV.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Broe0WRV.js → _server.ts-Cj7yoyyc.js} +4 -4
- package/build/server/chunks/{_server.ts-Broe0WRV.js.map → _server.ts-Cj7yoyyc.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DIt7oZ78.js → _server.ts-Cp1Z8TiT.js} +4 -4
- package/build/server/chunks/{_server.ts-DIt7oZ78.js.map → _server.ts-Cp1Z8TiT.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Cc4BIEOJ.js → _server.ts-CpKo_OmL.js} +4 -4
- package/build/server/chunks/{_server.ts-Cc4BIEOJ.js.map → _server.ts-CpKo_OmL.js.map} +1 -1
- package/build/server/chunks/{_server.ts-zY_DK-6S.js → _server.ts-Css6k_3m.js} +4 -4
- package/build/server/chunks/{_server.ts-zY_DK-6S.js.map → _server.ts-Css6k_3m.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BdqgSniA.js → _server.ts-D4fc4Lga.js} +4 -4
- package/build/server/chunks/{_server.ts-BdqgSniA.js.map → _server.ts-D4fc4Lga.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CHxBpqNs.js → _server.ts-D7qmDX8Q.js} +4 -4
- package/build/server/chunks/{_server.ts-CHxBpqNs.js.map → _server.ts-D7qmDX8Q.js.map} +1 -1
- package/build/server/chunks/{_server.ts-sAx1xFio.js → _server.ts-D9ykShFh.js} +4 -4
- package/build/server/chunks/{_server.ts-sAx1xFio.js.map → _server.ts-D9ykShFh.js.map} +1 -1
- package/build/server/chunks/{_server.ts-D2eLvAHH.js → _server.ts-DAOUg3-k.js} +4 -4
- package/build/server/chunks/{_server.ts-D2eLvAHH.js.map → _server.ts-DAOUg3-k.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DW3vY8LS.js → _server.ts-DDfVjae-.js} +2 -2
- package/build/server/chunks/{_server.ts-DW3vY8LS.js.map → _server.ts-DDfVjae-.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CJa40B0Z.js → _server.ts-DJ7YX-XH.js} +4 -4
- package/build/server/chunks/{_server.ts-CJa40B0Z.js.map → _server.ts-DJ7YX-XH.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BN0-6jX7.js → _server.ts-DJsZ93rI.js} +4 -4
- package/build/server/chunks/{_server.ts-BN0-6jX7.js.map → _server.ts-DJsZ93rI.js.map} +1 -1
- package/build/server/chunks/{_server.ts-D2MVikBE.js → _server.ts-DUCEhzWJ.js} +4 -4
- package/build/server/chunks/{_server.ts-D2MVikBE.js.map → _server.ts-DUCEhzWJ.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CsB6omUv.js → _server.ts-D_ktEzQJ.js} +4 -4
- package/build/server/chunks/{_server.ts-CsB6omUv.js.map → _server.ts-D_ktEzQJ.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BwNngfUJ.js → _server.ts-DjqRdwzV.js} +4 -4
- package/build/server/chunks/{_server.ts-BwNngfUJ.js.map → _server.ts-DjqRdwzV.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BHy1FIWT.js → _server.ts-DkOQZuRC.js} +4 -4
- package/build/server/chunks/{_server.ts-BHy1FIWT.js.map → _server.ts-DkOQZuRC.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BNHq_0XB.js → _server.ts-DkZ1Mmoh.js} +5 -5
- package/build/server/chunks/{_server.ts-BNHq_0XB.js.map → _server.ts-DkZ1Mmoh.js.map} +1 -1
- package/build/server/chunks/{_server.ts-C6WJsZ0G.js → _server.ts-DnY4rmOV.js} +6 -6
- package/build/server/chunks/{_server.ts-C6WJsZ0G.js.map → _server.ts-DnY4rmOV.js.map} +1 -1
- package/build/server/chunks/{_server.ts-B7hqA-QH.js → _server.ts-DnpsO93M.js} +4 -4
- package/build/server/chunks/{_server.ts-B7hqA-QH.js.map → _server.ts-DnpsO93M.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DUC-QWMj.js → _server.ts-Dp3aS528.js} +4 -4
- package/build/server/chunks/{_server.ts-DUC-QWMj.js.map → _server.ts-Dp3aS528.js.map} +1 -1
- package/build/server/chunks/{_server.ts-R7dMpaPA.js → _server.ts-DrBuaoVz.js} +2 -2
- package/build/server/chunks/{_server.ts-R7dMpaPA.js.map → _server.ts-DrBuaoVz.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DStLQ6G7.js → _server.ts-DrhLq9je.js} +4 -4
- package/build/server/chunks/{_server.ts-DStLQ6G7.js.map → _server.ts-DrhLq9je.js.map} +1 -1
- package/build/server/chunks/{_server.ts-ncFk6KuU.js → _server.ts-Dzi_uR57.js} +4 -4
- package/build/server/chunks/{_server.ts-ncFk6KuU.js.map → _server.ts-Dzi_uR57.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CuVTkFXh.js → _server.ts-E9Jx4RZl.js} +4 -4
- package/build/server/chunks/{_server.ts-CuVTkFXh.js.map → _server.ts-E9Jx4RZl.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DbBkQ5gv.js → _server.ts-I4AR1K-d.js} +4 -4
- package/build/server/chunks/{_server.ts-DbBkQ5gv.js.map → _server.ts-I4AR1K-d.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DXLqkvU1.js → _server.ts-L40fgGK2.js} +5 -5
- package/build/server/chunks/{_server.ts-DXLqkvU1.js.map → _server.ts-L40fgGK2.js.map} +1 -1
- package/build/server/chunks/{_server.ts-C4qYb4T-.js → _server.ts-LH7_dhbT.js} +2 -2
- package/build/server/chunks/{_server.ts-C4qYb4T-.js.map → _server.ts-LH7_dhbT.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Ur_t9bMU.js → _server.ts-Oeuvw5C1.js} +4 -4
- package/build/server/chunks/{_server.ts-Ur_t9bMU.js.map → _server.ts-Oeuvw5C1.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BOcqQDtZ.js → _server.ts-X4eLzYa3.js} +4 -4
- package/build/server/chunks/{_server.ts-BOcqQDtZ.js.map → _server.ts-X4eLzYa3.js.map} +1 -1
- package/build/server/chunks/{_server.ts-7SYeoL8H.js → _server.ts-XYviVWKw.js} +4 -4
- package/build/server/chunks/{_server.ts-7SYeoL8H.js.map → _server.ts-XYviVWKw.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BIRnkRp-.js → _server.ts-grXc3lpo.js} +4 -4
- package/build/server/chunks/{_server.ts-BIRnkRp-.js.map → _server.ts-grXc3lpo.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Bz5eysrP.js → _server.ts-hNck8JSQ.js} +5 -5
- package/build/server/chunks/{_server.ts-Bz5eysrP.js.map → _server.ts-hNck8JSQ.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Dwklttlo.js → _server.ts-l6P5GPNF.js} +2 -2
- package/build/server/chunks/{_server.ts-Dwklttlo.js.map → _server.ts-l6P5GPNF.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DDJ_6hbd.js → _server.ts-oPUaAhwQ.js} +4 -4
- package/build/server/chunks/{_server.ts-DDJ_6hbd.js.map → _server.ts-oPUaAhwQ.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CaHJSZZ1.js → _server.ts-tHI7RAXv.js} +4 -4
- package/build/server/chunks/{_server.ts-CaHJSZZ1.js.map → _server.ts-tHI7RAXv.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DVdN-5bk.js → _server.ts-u7HOQxSc.js} +4 -4
- package/build/server/chunks/{_server.ts-DVdN-5bk.js.map → _server.ts-u7HOQxSc.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DAti5TMB.js → _server.ts-vLpDptQT.js} +4 -4
- package/build/server/chunks/{_server.ts-DAti5TMB.js.map → _server.ts-vLpDptQT.js.map} +1 -1
- package/build/server/chunks/{addon-helpers-DM77guzq.js → addon-helpers-CbNmFpKY.js} +2 -2
- package/build/server/chunks/{addon-helpers-DM77guzq.js.map → addon-helpers-CbNmFpKY.js.map} +1 -1
- package/build/server/chunks/{config-BE8RNUzZ.js → config-CWdj6ZuI.js} +2 -2
- package/build/server/chunks/{config-BE8RNUzZ.js.map → config-CWdj6ZuI.js.map} +1 -1
- package/build/server/chunks/{docker-BFje1OYT.js → docker-CjX7RsXx.js} +2 -2
- package/build/server/chunks/{docker-BFje1OYT.js.map → docker-CjX7RsXx.js.map} +1 -1
- package/build/server/chunks/{endpoints-Dz6qhKXB.js → endpoints-eF0TVirP.js} +3 -3
- package/build/server/chunks/{endpoints-Dz6qhKXB.js.map → endpoints-eF0TVirP.js.map} +1 -1
- package/build/server/chunks/{error.svelte-8jbbCpmR.js → error.svelte-BCEnO98F.js} +3 -3
- package/build/server/chunks/{error.svelte-8jbbCpmR.js.map → error.svelte-BCEnO98F.js.map} +1 -1
- package/build/server/chunks/{helpers-C1fMEpiP.js → helpers-BlYXYNks.js} +3 -3
- package/build/server/chunks/{helpers-C1fMEpiP.js.map → helpers-BlYXYNks.js.map} +1 -1
- package/build/server/chunks/{hooks.server-C6uX-Qkd.js → hooks.server-MxqwJ1Ug.js} +4 -4
- package/build/server/chunks/{hooks.server-C6uX-Qkd.js.map → hooks.server-MxqwJ1Ug.js.map} +1 -1
- package/build/server/chunks/{http-CmL_uneS.js → http-CbN2XzaU.js} +2 -2
- package/build/server/chunks/{http-CmL_uneS.js.map → http-CbN2XzaU.js.map} +1 -1
- package/build/server/chunks/{internal-BJjTqjxK.js → internal-r__KO0cl.js} +3 -3
- package/build/server/chunks/{internal-BJjTqjxK.js.map → internal-r__KO0cl.js.map} +1 -1
- package/build/server/chunks/{setup-deploy-tjcmiBUv.js → setup-deploy-DTpn9m1O.js} +2 -2
- package/build/server/chunks/{setup-deploy-tjcmiBUv.js.map → setup-deploy-DTpn9m1O.js.map} +1 -1
- package/build/server/chunks/{src-BWQ05CjI.js → src-BuTsJttD.js} +8 -3
- package/build/server/chunks/src-BuTsJttD.js.map +1 -0
- package/build/server/chunks/{state-CKV51p4g.js → state-BMvo7e8L.js} +2 -2
- package/build/server/chunks/{state-CKV51p4g.js.map → state-BMvo7e8L.js.map} +1 -1
- package/build/server/index.js +1 -1
- package/build/server/index.js.map +1 -1
- package/build/server/manifest.js +77 -77
- package/build/server/manifest.js.map +1 -1
- package/package.json +2 -2
- package/build/client/_app/immutable/chunks/CmvkId2p.js.br +0 -0
- package/build/client/_app/immutable/chunks/CmvkId2p.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DKrt-Ofe.js.br +0 -0
- package/build/client/_app/immutable/chunks/DKrt-Ofe.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DTwNbG18.js.br +0 -2
- package/build/client/_app/immutable/chunks/DTwNbG18.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.D2QrHH7_.js.br +0 -0
- package/build/client/_app/immutable/entry/app.D2QrHH7_.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.BM5p1xOI.js +0 -1
- package/build/client/_app/immutable/entry/start.BM5p1xOI.js.br +0 -0
- package/build/client/_app/immutable/entry/start.BM5p1xOI.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.vc1gswpN.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.vc1gswpN.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.DD0APCkW.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.BIkQUR1G.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.BIkQUR1G.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.DVDakR8k.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.DVDakR8k.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.wMxDFXAt.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.wMxDFXAt.js.gz +0 -0
- package/build/client/_app/immutable/nodes/8.Cb4MWMah.js.br +0 -0
- package/build/server/chunks/1-BwC-cEPZ.js +0 -9
- package/build/server/chunks/src-BWQ05CjI.js.map +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import{$ as e,A as t,B as n,D as r,E as i,F as a,I as o,J as s,K as c,M as l,N as u,O as d,P as f,Q as p,T as m,V as h,X as g,Y as _,Z as v,_ as y,a as b,ct as x,d as S,et as C,f as w,it as T,j as E,k as D,o as O,p as k,q as A,r as j,rt as M,s as N,st as P,u as F,v as I,w as L,y as R}from"../chunks/BwTF6U35.js";import"../chunks/xihTtKlq.js";import{a as z,c as B,i as V,l as H,n as U,o as W,r as ee,s as te,t as ne,u as re}from"../chunks/Cb_i8bV9.js";var G={label:`Docker setup`,href:`https://docs.docker.com/get-docker/`};function K(e){if(!e)return``;if(e instanceof Error)return e.message;if(typeof e==`string`)return e;try{return JSON.stringify(e)}catch{return String(e)}}function ie(e,t=`generic`,n={}){let r=K(e),i=r.toLowerCase(),a=n.providerName?`${n.providerName} didn't accept that key`:`API key rejected`;if(/\b(401|403|unauthorized|forbidden|invalid.?api.?key)\b/i.test(r))return{title:a,body:`The provider rejected the API key.`,hint:`Common causes: extra spaces, wrong account, or the key was revoked. Double-check the key and that it has access to the model you selected. Most providers show the key in their dashboard.`,raw:r};if(/\b(ENOTFOUND|ECONNREFUSED|getaddrinfo|EAI_AGAIN|EHOSTUNREACH)\b/i.test(r))return{title:`Couldn't reach the host`,body:r,hint:`Confirm the URL is correct and the service is online. For local providers (Ollama, LM Studio) make sure the server is running on this machine.`,raw:r};if(/(timeout|timed out|AbortError|ETIMEDOUT)/i.test(r))return{title:`Request timed out`,body:`The provider didn't respond in time.`,hint:`It may be slow or temporarily down. Try again in a moment.`,raw:r};if(i.includes(`docker`)||i.includes(`compose`)||i.includes(`daemon`))return{title:`Docker isn't available`,body:`OpenPalm needs Docker (with Compose v2) installed and running.`,hint:`Start Docker Desktop (macOS/Windows) or the docker daemon (Linux), then retry.`,links:[G],raw:r};if(/EADDRINUSE/i.test(r)||/port.*in.?use/i.test(i))return{title:`A required port is already in use`,body:r,hint:`Another program is using one of OpenPalm's default ports. Quit the conflicting app, or change OpenPalm's port from the Admin Dashboard after setup.`,raw:r};if(/EACCES|EPERM|permission denied/i.test(r))return{title:`Permission denied`,body:r,hint:`OpenPalm couldn't write to its data directory. Check that ~/.openpalm/ is writable by your user.`,raw:r};switch(t){case`provider-verify`:case`model-fetch`:return{title:`Couldn't connect to the provider`,body:r||`Verification failed.`,hint:`Check the API key and base URL, then click Verify again.`,raw:r};case`setup-complete`:return{title:`Setup couldn't finish`,body:r||`Writing configuration failed.`,hint:`Check the technical details below, then retry. If the issue persists, the admin dashboard logs may help.`,raw:r};case`deploy`:case`deploy-poll`:return{title:`Deployment ran into a problem`,body:r||`One or more services failed to start.`,hint:`Image pulls can take several minutes on first install. Retry to attempt again; check Docker logs if it keeps failing.`,raw:r};case`system-check`:return{title:`System check failed`,body:r||`A required dependency is missing.`,hint:`Resolve the failing check above, then click Retry.`,raw:r};case`channel`:return{title:`Channel credential issue`,body:r||`A required field is missing or invalid.`,hint:`Confirm the bot token and other required fields are correct.`,raw:r};case`port-conflict`:return{title:`A required port is already in use`,body:r||`Another process is using one of OpenPalm's ports.`,hint:`Another program is using one of OpenPalm's default ports. Quit the conflicting app, or change OpenPalm's port from the Admin Dashboard after setup.`,raw:r};default:return{title:`Something went wrong`,body:r||`An unexpected error occurred.`,hint:`Try again. If the problem persists, check the admin dashboard logs.`,raw:r}}}var q=t(`<div></div>`),J=t(`<span role="button"> </span>`),ae=t(`<nav class="prog-bar" aria-label="Wizard steps"><div class="prog-segments"></div> <div class="prog-labels"></div></nav>`);function oe(e,t){T(t,!0);var n=ae(),i=A(n);L(i,21,()=>B,m,(e,n,r)=>{var i=q();h(()=>I(i,1,`prog-seg ${r<=t.currentStep?`on`:``}`)),d(e,i)}),x(i);var a=_(i,2);L(a,21,()=>B,m,(e,n,i)=>{var a=J(),s=A(a,!0);x(a),h(e=>{I(a,1,`prog-lbl ${i<=t.currentStep?`on`:``} ${i===t.currentStep?`active`:``}`),S(a,`tabindex`,e),S(a,`aria-label`,`Go to step ${o(n)??``}`),r(s,o(n))},[()=>i<=t.maxVisitedStep&&t.canNavigateTo(i)?0:-1]),f(`click`,a,()=>{i<=t.maxVisitedStep&&t.canNavigateTo(i)&&t.onnavigate(i)}),f(`keydown`,a,e=>{(e.key===`Enter`||e.key===` `)&&i<=t.maxVisitedStep&&t.canNavigateTo(i)&&t.onnavigate(i)}),d(e,a)}),x(a),x(n),d(e,n),M()}u([`click`,`keydown`]);var Y=t(`<p class="friendly-error-body svelte-l9z7ob"> </p>`),X=t(`<p class="friendly-error-hint svelte-l9z7ob"> </p>`),se=t(`<a target="_blank" rel="noopener noreferrer" class="friendly-error-link svelte-l9z7ob"> </a>`),ce=t(`<div class="friendly-error-links svelte-l9z7ob"></div>`),le=t(`<details class="friendly-error-details svelte-l9z7ob"><summary class="svelte-l9z7ob">Technical details</summary> <pre class="svelte-l9z7ob"> </pre></details>`),ue=t(`<div class="friendly-error svelte-l9z7ob"><div class="friendly-error-header svelte-l9z7ob"><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"><path d="M10.29 3.86 1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg> <strong class="friendly-error-title svelte-l9z7ob"> </strong></div> <!> <!> <!> <!></div>`);function de(e,t){T(t,!0);let n=b(t,`role`,3,`alert`),a=b(t,`compact`,3,!1);var c=D(),l=s(c),u=e=>{var s=ue(),c=A(s),l=_(A(c),2),u=A(l,!0);x(l),x(c);var f=_(c,2),p=e=>{var n=Y(),i=A(n,!0);x(n),h(()=>r(i,t.error.body)),d(e,n)};i(f,e=>{t.error.body&&e(p)});var g=_(f,2),v=e=>{var n=X(),i=A(n,!0);x(n),h(()=>r(i,t.error.hint)),d(e,n)};i(g,e=>{t.error.hint&&e(v)});var y=_(g,2),b=e=>{var n=ce();L(n,21,()=>t.error.links,m,(e,t)=>{var n=se(),i=A(n);x(n),h(()=>{S(n,`href`,o(t).href),r(i,`${o(t).label??``} →`)}),d(e,n)}),x(n),d(e,n)};i(y,e=>{t.error.links&&t.error.links.length>0&&e(b)});var C=_(y,2),w=e=>{var n=le(),i=_(A(n),2),a=A(i,!0);x(i),x(n),h(()=>r(a,t.error.raw)),d(e,n)};i(C,e=>{!a()&&t.error.raw&&t.error.raw!==t.error.body&&e(w)}),x(s),h(()=>{S(s,`role`,n()),r(u,t.error.title)}),d(e,s)};i(l,e=>{t.error&&e(u)}),d(e,c),M()}var Z=t(`<span class="spinner svelte-1txhq2p"></span>`),fe=E(`<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="var(--color-success, #16a34a)" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"></polyline></svg>`),pe=E(`<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#dc2626" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg>`),me=t(`<div class="syscheck-meta svelte-1txhq2p"> </div>`),he=t(`<div class="syscheck-hint svelte-1txhq2p"> </div> <a class="syscheck-link svelte-1txhq2p" target="_blank" rel="noopener noreferrer"> </a>`,1),ge=t(`<span class="spinner svelte-1txhq2p"></span>`),_e=E(`<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="var(--color-success, #16a34a)" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"></polyline></svg>`),ve=E(`<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#dc2626" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg>`),ye=t(`<div class="syscheck-meta svelte-1txhq2p"> </div>`),be=t('<div class="syscheck-hint svelte-1txhq2p">Compose v2 ships with Docker Desktop. Linux users may need to install the `docker-compose-plugin` package.</div> <a class="syscheck-link svelte-1txhq2p" href="https://docs.docker.com/compose/install/" target="_blank" rel="noopener noreferrer">Compose installation guide →</a>',1),xe=t(`<div class="syscheck-row syscheck-row--ok svelte-1txhq2p"><div class="syscheck-icon svelte-1txhq2p"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="var(--color-success, #16a34a)" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"></polyline></svg></div> <div class="syscheck-body svelte-1txhq2p"><div class="syscheck-title svelte-1txhq2p">GPU detected</div> <div class="syscheck-meta svelte-1txhq2p"> </div></div></div>`),Se=t(`<div><div class="syscheck-icon svelte-1txhq2p"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke-width="2.3" stroke-linecap="round" stroke-linejoin="round"><path d="M12 9v4"></path><path d="M12 17h.01"></path><path d="M10.29 3.86 1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path></svg></div> <div class="syscheck-body svelte-1txhq2p"><div class="syscheck-title svelte-1txhq2p"> </div> <div class="syscheck-hint svelte-1txhq2p"><!></div></div></div>`),Ce=t(`<h2>System Check</h2> <p class="step-description">Let's make sure your machine has everything OpenPalm needs.</p> <!> <div class="syscheck-list svelte-1txhq2p" aria-live="polite"><div><div class="syscheck-icon svelte-1txhq2p"><!></div> <div class="syscheck-body svelte-1txhq2p"><div class="syscheck-title svelte-1txhq2p">Docker is installed and running</div> <!></div></div> <div><div class="syscheck-icon svelte-1txhq2p"><!></div> <div class="syscheck-body svelte-1txhq2p"><div class="syscheck-title svelte-1txhq2p">Docker can run multi-container apps</div> <!></div></div> <!> <!></div> <div class="step-actions"><button class="btn btn-secondary" id="btn-syscheck-retry"> </button> <button class="btn btn-primary" id="btn-syscheck-next">Continue</button></div>`,1);function we(e,t){T(t,!0);let n=b(t,`isRerun`,3,!1),a=p(!0),c=p(null),u=p(null),m=C(()=>n()?[]:o(c)?.ports.filter(e=>!e.available)??[]),g=C(()=>o(m).filter(e=>e.blocking)),y=C(()=>o(g).length>0),w=C(()=>!!o(c)?.docker.ok&&!!o(c)?.compose.ok&&!o(y));function E(e){return e===`darwin`?{label:`Install Docker Desktop for Mac`,href:`https://www.docker.com/products/docker-desktop/`}:e===`win32`?{label:`Install Docker Desktop for Windows`,href:`https://www.docker.com/products/docker-desktop/`}:{label:`Install Docker Engine for Linux`,href:`https://docs.docker.com/engine/install/`}}function D(e){return e===`darwin`||e===`win32`?`Open Docker Desktop and wait for it to finish starting, then click Retry.`:"Run `sudo systemctl start docker` (or your distro's equivalent), then click Retry."}async function O(){v(a,!0),v(u,null);try{let e=await fetch(`/api/setup/system-check`);if(!e.ok)throw Error(`HTTP ${e.status}`);let n=await e.json();v(c,n,!0),n.docker.ok&&n.compose.ok&&t.onpass(),n.gpu&&t.ongpudetected?.(n.gpu)}catch(e){v(u,ie(e,`system-check`),!0),v(c,null)}finally{v(a,!1)}}j(()=>{O()});var k=Ce(),N=_(s(k),4),F=e=>{de(e,{get error(){return o(u)}})};i(N,e=>{o(u)&&e(F)});var L=_(N,2),R=A(L);let z;var B=A(R),V=A(B),H=e=>{d(e,Z())},U=e=>{d(e,fe())},W=e=>{d(e,pe())};i(V,e=>{o(a)?e(H):o(c)?.docker.ok?e(U,1):e(W,-1)}),x(B);var ee=_(B,2),te=_(A(ee),2),ne=e=>{var t=me(),n=A(t);x(t),h(()=>r(n,`Docker server ${o(c).docker.version??``}`)),d(e,t)},re=e=>{var t=he(),n=s(t),i=A(n,!0);x(n);var a=_(n,2),l=A(a);x(a),h((e,t,n)=>{r(i,e),S(a,`href`,t),r(l,`${n??``} →`)},[()=>o(c).docker.error?.includes(`not found`)||o(c).docker.error?.includes(`ENOENT`)?`Docker isn't installed yet.`:D(o(c).platform),()=>E(o(c).platform).href,()=>E(o(c).platform).label]),d(e,t)};i(te,e=>{o(c)?.docker.ok&&o(c).docker.version?e(ne):o(c)&&!o(c).docker.ok&&e(re,1)}),x(ee),x(R);var G=_(R,2);let K;var q=A(G),J=A(q),ae=e=>{d(e,ge())},oe=e=>{d(e,_e())},Y=e=>{d(e,ve())};i(J,e=>{o(a)?e(ae):o(c)?.compose.ok?e(oe,1):e(Y,-1)}),x(q);var X=_(q,2),se=_(A(X),2),ce=e=>{var t=ye(),n=A(t,!0);x(t),h(()=>r(n,o(c).compose.version)),d(e,t)},le=e=>{var t=be();P(2),d(e,t)};i(se,e=>{o(c)?.compose.ok&&o(c).compose.version?e(ce):o(c)&&!o(c).compose.ok&&e(le,1)}),x(X),x(G);var ue=_(G,2),we=e=>{var t=xe(),n=_(A(t),2),i=_(A(n),2),a=A(i,!0);x(i),x(n),x(t),h(()=>r(a,o(c).gpu)),d(e,t)};i(ue,e=>{o(c)?.gpu&&e(we)});var Te=_(ue,2),Ee=e=>{var t=Se(),n=A(t),a=A(n);x(n);var s=_(n,2),u=A(s),f=A(u);x(u);var p=_(u,2),g=A(p),v=e=>{d(e,l(`Docker is not running — start Docker and click Retry to confirm.`))},b=e=>{d(e,l(`Another program is using this port. Quit it and click Retry.`))};i(g,e=>{o(c).portCheckReliable?e(b,-1):e(v)}),x(p),x(s),x(t),h(e=>{I(t,1,`syscheck-row ${o(y)?`syscheck-row--fail`:`syscheck-row--warn`}`,`svelte-1txhq2p`),S(a,`stroke`,o(y)?`#dc2626`:`#d97706`),r(f,`Port conflict on ${e??``}`)},[()=>o(m).map(e=>e.port).join(`, `)]),d(e,t)};i(Te,e=>{o(c)&&o(m).length>0&&e(Ee)}),x(L);var De=_(L,2),Oe=A(De),ke=A(Oe,!0);x(Oe);var Ae=_(Oe,2);x(De),h(()=>{z=I(R,1,`syscheck-row svelte-1txhq2p`,null,z,{"syscheck-row--ok":o(c)?.docker.ok,"syscheck-row--fail":o(c)&&!o(c).docker.ok}),K=I(G,1,`syscheck-row svelte-1txhq2p`,null,K,{"syscheck-row--ok":o(c)?.compose.ok,"syscheck-row--fail":o(c)&&!o(c).compose.ok}),Oe.disabled=o(a),r(ke,o(a)?`Checking…`:`Retry checks`),Ae.disabled=o(a)||!o(w)}),f(`click`,Oe,()=>O()),f(`click`,Ae,function(...e){t.onnext?.apply(this,e)}),d(e,k),M()}u([`click`]);var Te=t(`<div class="field-error" id="step0-error" role="alert"> </div>`),Ee=t(`<span class="spinner svelte-1d9o2de"></span> Importing providers…`,1),De=t(`<span class="spinner svelte-1d9o2de"></span> Detecting your system…`,1),Oe=t(`<div class="welcome-hero" id="welcome-hero"><div class="welcome-icon">👋</div> <h2>Welcome to OpenPalm</h2> <p class="welcome-subtitle">Your self-hosted AI assistant. Pick your providers, choose models, and you're up and running.</p> <div class="welcome-pills"><span class="pill">Cloud or local</span> <span class="pill">Smart defaults</span> <span class="pill">Privacy first</span></div> <!> <div class="welcome-actions svelte-1d9o2de"><button class="btn btn-primary-lg svelte-1d9o2de" id="btn-use-defaults"><!></button> <button class="btn btn-secondary svelte-1d9o2de" id="btn-step0-next">Continue</button></div></div>`);function ke(e,t){var n=Oe(),a=_(A(n),8),o=e=>{var n=Te(),i=A(n,!0);x(n),h(()=>r(i,t.errorMessage)),d(e,n)};i(a,e=>{t.errorMessage&&e(o)});var s=_(a,2),c=A(s),u=A(c),p=e=>{var t=Ee();P(),d(e,t)},m=e=>{var t=De();P(),d(e,t)},g=e=>{d(e,l(`Use recommended defaults`))};i(u,e=>{t.autoModeImporting?e(p):t.detectionReady?e(g,-1):e(m,1)}),x(c);var v=_(c,2);x(s),x(n),h(()=>c.disabled=!t.detectionReady||t.autoModeImporting),f(`click`,c,function(...e){t.onusedefaults?.apply(this,e)}),f(`click`,v,function(...e){t.onnext?.apply(this,e)}),d(e,n)}u([`click`]);var Ae=t(`<div class="host-status-warning svelte-1iuc968" role="alert"> </div>`),je=t(`<div class="host-import-choice svelte-1iuc968"><p class="host-import-desc svelte-1iuc968">We found OpenCode on this host with <strong> </strong> </p> <label class="host-radio svelte-1iuc968"><input type="radio" name="provider-source" value="import" class="svelte-1iuc968"/> <span><strong>Import from host OpenCode</strong> <em>(recommended)</em></span></label> <label class="host-radio svelte-1iuc968"><input type="radio" name="provider-source" value="manual" class="svelte-1iuc968"/> <span>Configure providers manually</span></label></div>`),Me=t(`<div class="loading-state" id="conn-detecting"><span class="spinner"></span> Detecting local providers...</div>`),Ne=t(`<span class="vs vs-ok">✓</span>`),Pe=t(`<span class="vs vs-wait">⟳</span>`),Fe=t(`<span class="vs vs-err">✗</span>`),Ie=t(`<div class="auth-feedback auth-feedback-ok"><span>Connected</span> <button class="auth-disconnect" type="button">Disconnect</button></div>`),Q=t(`<div class="auth-feedback auth-feedback-err"> </div>`),Le=t(`<div class="auth-row" style="margin-bottom:6px"><input type="password" placeholder="API key"/> <button class="auth-btn auth-btn-verify"> </button></div>`),Re=t(`<div class="auth-row" style="margin-bottom:6px"><button class="auth-btn auth-btn-detect" style="width:100%"> </button></div>`),ze=t(`<div class="auth-row"><input type="password"/> <button class="auth-btn auth-btn-verify"> </button></div>`),Be=t(`<div class="auth-row" style="margin-bottom:6px"><input type="url" placeholder="https://your-server.example/v1"/></div> <div class="auth-row" style="margin-bottom:6px"><input type="password" placeholder="API key (optional)"/></div> <div class="auth-row"><button class="auth-btn auth-btn-verify"> </button></div>`,1),Ve=t(`<div class="auth-row"><input type="url"/> <button> </button></div>`),He=t(`<div style="padding:4px 0;color:var(--color-text-secondary);font-size:var(--text-xs)">No authentication required</div> <button class="auth-btn auth-btn-detect">Mark as ready</button>`,1),Ue=t(`<p style="margin-bottom:6px"><a target="_blank" rel="noopener" style="color:var(--color-accent)">Open authorization page →</a></p>`),We=t(`<p style="margin-bottom:6px;white-space:pre-wrap;font-size:var(--text-xs)"> </p>`),Ge=t(`<div style="text-align:center;padding:8px"><!> <!> <p><span class="spinner"></span> Waiting for authorization...</p> <button class="auth-btn" style="margin-top:6px">Cancel</button></div>`),Ke=t(`<!> <!> <!>`,1),qe=t(`<div class="pcard-auth"><!></div>`),Je=t(`<div><div class="pcard-header" role="button" tabindex="0"><div class="pcard-info"><div class="pcard-name"> <!></div> <div class="pcard-desc"> <!></div></div> <div class="pcard-check" aria-hidden="true"> </div></div> <!></div>`),Ye=t(`<span class="vs vs-ok">✓</span>`),Xe=t(`<span class="vs vs-wait">⟳</span>`),$=t(`<span class="vs vs-err">✗</span>`),Ze=t(`<div class="auth-feedback auth-feedback-ok"><span>Connected</span> <button class="auth-disconnect" type="button">Disconnect</button></div>`),Qe=t(`<div class="auth-feedback auth-feedback-err"> </div>`),$e=t(`<div class="auth-row" style="margin-bottom:6px"><input type="password" placeholder="API key"/> <button class="auth-btn auth-btn-verify"> </button></div>`),et=t(`<div class="auth-row" style="margin-bottom:6px"><button class="auth-btn auth-btn-detect" style="width:100%"> </button></div>`),tt=t(`<div class="auth-row"><input type="password"/> <button class="auth-btn auth-btn-verify"> </button></div>`),nt=t(`<div class="auth-row" style="margin-bottom:6px"><input type="url" placeholder="https://your-server.example/v1"/></div> <div class="auth-row" style="margin-bottom:6px"><input type="password" placeholder="API key (optional)"/></div> <div class="auth-row"><button class="auth-btn auth-btn-verify"> </button></div>`,1),rt=t(`<div class="auth-row"><input type="url"/> <button> </button></div>`),it=t(`<div style="padding:4px 0;color:var(--color-text-secondary);font-size:var(--text-xs)">No authentication required</div> <button class="auth-btn auth-btn-detect">Mark as ready</button>`,1),at=t(`<p style="margin-bottom:6px"><a target="_blank" rel="noopener" style="color:var(--color-accent)">Open authorization page →</a></p>`),ot=t(`<p style="margin-bottom:6px;white-space:pre-wrap;font-size:var(--text-xs)"> </p>`),st=t(`<div style="text-align:center;padding:8px"><!> <!> <p><span class="spinner"></span> Waiting for authorization...</p> <button class="auth-btn" style="margin-top:6px">Cancel</button></div>`),ct=t(`<!> <!> <!>`,1),lt=t(`<div class="pcard-auth"><!></div>`),ut=t(`<div><div class="pcard-header" role="button" tabindex="0"><div class="pcard-info"><div class="pcard-name"> <!></div> <div class="pcard-desc"> <!></div></div> <div class="pcard-check" aria-hidden="true"> </div></div> <!></div>`),dt=t(`<button class="btn-show-all-providers svelte-1iuc968" id="btn-show-all-providers"> </button>`),ft=t(`<div style="text-align:center;padding:24px;color:var(--color-text-secondary)"> </div>`),pt=t(`<div class="model-filter-row" style="margin-bottom:12px"><input type="text" class="model-filter-input" id="oc-provider-filter" autocomplete="off"/></div> <!> <!> <!> <!>`,1),mt=t(`<span class="vs vs-ok">✓</span>`),ht=t(`<span class="vs vs-wait">⟳</span>`),gt=t(`<span class="vs vs-err">✗</span>`),_t=t(`<div class="ollama-mode-prompt"><p>Is Ollama already running on this machine?</p> <div class="ollama-mode-buttons"><button class="ollama-mode-btn ollama-mode-btn-detect">Yes, detect it</button> <button class="ollama-mode-btn ollama-mode-btn-stack">No, add to stack</button></div></div>`),vt=t(`<div class="auth-row"><input type="url"/> <button> </button></div>`),yt=t(`<div class="auth-feedback auth-feedback-ok"><span>Ollama will be added to your Docker stack with default models.</span> <button class="auth-disconnect" type="button">Disconnect</button></div>`),bt=t(`<div class="ollama-mode-prompt"><p>Ollama runs as a container in your stack with recommended models pre-configured.</p> <button class="auth-btn auth-btn-detect" style="margin-top:4px">Enable Ollama</button></div>`),xt=t(`<div class="auth-row" style="margin-top:6px"><input type="password"/></div>`),St=t(`<div class="auth-row"><input type="url" placeholder="https://your-server.example/v1"/></div> <!> <div class="auth-row" style="margin-top:6px"><button> </button></div>`,1),Ct=t(`<div class="auth-row"><input type="password"/> <button> </button></div>`),wt=t(`<div class="auth-row"><input type="url"/> <button> </button></div>`),Tt=t(`<div class="auth-feedback auth-feedback-ok"><span>Credentials verified</span> <button class="auth-disconnect" type="button">Disconnect</button></div>`),Et=t(`<div class="auth-feedback auth-feedback-err"> </div>`),Dt=t(`<div class="pcard-auth"><!> <!></div>`),Ot=t(`<div><div class="pcard-header" role="button" tabindex="0"><div class="pcard-icon"> </div> <div class="pcard-info"><div class="pcard-name"> <span> </span> <!></div> <div class="pcard-desc"> </div></div> <div class="pcard-check" aria-hidden="true"> </div></div> <!></div>`),kt=t(`<div class="provider-group"><div class="provider-group-header"><h3 class="provider-group-label"> </h3> <span class="provider-group-desc"> </span></div> <div class="provider-group-cards"></div></div>`),At=t(`<!> <div class="provider-grid" id="provider-grid"><!></div>`,1),jt=t(`<label class="allow-empty-row svelte-1iuc968"><input type="checkbox" id="allow-empty-install" class="svelte-1iuc968"/> <span>Install without an AI provider (assistant won't be able to chat until I add one from the dashboard)</span></label>`),Mt=t(`<span class="nav-info"> </span> <button class="btn btn-primary" id="btn-step1-next">Continue</button>`,1),Nt=t(`<b> </b> `,1),Pt=t(`<span class="nav-info" id="provider-count-info"><!></span> <button class="btn btn-primary" id="btn-step1-next"> </button>`,1),Ft=t(`<h2>Where should your models run?</h2> <p class="step-description">Select one or more providers. Click a card to configure it.</p> <!> <!> <!> <!> <div class="step-actions" id="step1-actions"><button class="btn btn-secondary" id="btn-step1-back">Back</button> <!></div>`,1);function It(e,t){T(t,!0);function n(e,t){if(!e)return`Connection failed`;let n=ie(e,`provider-verify`,t?{providerName:t}:{});return n.hint?`${n.title}. ${n.hint}`:n.title}let a=b(t,`hostProviderCount`,3,0),c=b(t,`hostStatusWarning`,3,null),u=b(t,`allowEmptyInstall`,3,!1),g=p(null),y=C(()=>o(g)??(a()>0?`import`:`manual`));function E(e){t.onfilterchange(e.currentTarget.value)}let O=C(()=>{let e=t.ocFilterQuery.toLowerCase().trim(),n=t.opencodeProviders;return e&&(n=n.filter(t=>t.name.toLowerCase().includes(e)||t.id.toLowerCase().includes(e))),[...n].sort((e,n)=>{let r=+!!t.providerState[e.id]?.verified,i=+!!t.providerState[n.id]?.verified;return r===i?(e.name??e.id).localeCompare(n.name??n.id):i-r})}),j=new Set([`ollama`,`huggingface`,`openai`,`google`,`model-runner`,`lmstudio`]),N=p(!1),R=C(()=>o(O).filter(e=>t.providerState[e.id]?.verified||j.has(e.id))),z=C(()=>o(O).filter(e=>!t.providerState[e.id]?.verified&&!j.has(e.id))),B=C(()=>t.ocFilterQuery?o(O):o(R)),V=C(()=>t.ocFilterQuery?0:o(z).length);var H=Ft(),U=_(s(H),4),ee=e=>{var t=Ae(),n=A(t);x(t),h(()=>r(n,`⚠ ${c()??``}`)),d(e,t)};i(U,e=>{c()&&e(ee)});var ne=_(U,2),re=e=>{var t=je(),n=A(t),i=_(A(n)),s=A(i,!0);x(i);var c=_(i);x(n);var l=_(n,2),u=A(l);F(u),P(2),x(l);var p=_(l,2),m=A(p);F(m),P(2),x(p),x(t),h(()=>{r(s,a()),r(c,` provider${a()===1?``:`s`} configured.`),w(u,o(y)===`import`),w(m,o(y)===`manual`)}),f(`change`,u,()=>{v(g,`import`)}),f(`change`,m,()=>{v(g,`manual`)}),d(e,t)};i(ne,e=>{a()>0&&e(re)});var G=_(ne,2),K=e=>{var a=At(),c=s(a),u=e=>{d(e,Me())};i(c,e=>{t.detecting&&e(u)});var p=_(c,2),g=A(p),y=e=>{var a=pt(),c=s(a),u=A(c);F(u),x(c);var p=_(c,2);L(p,17,()=>o(B),m,(e,a)=>{let c=C(()=>t.providerState[o(a).id]??{selected:!1,verified:!1,verifying:!1,error:!1,apiKey:``,baseUrl:``,models:[],ollamaMode:null}),u=C(()=>o(c).models&&o(c).models.length>0?o(c).models.length:Object.keys(o(a).models??{}).length),p=C(()=>t.opencodeAuth[o(a).id]??[]),g=C(()=>t.expandedProvider===o(a).id);var v=Je(),y=A(v),b=A(y),w=A(b),T=A(w),E=_(T),O=e=>{d(e,Ne())},j=e=>{d(e,Pe())},M=e=>{d(e,Fe())};i(E,e=>{o(c).verified?e(O):o(c).verifying?e(j,1):o(c).error&&e(M,2)}),x(w);var N=_(w,2),P=A(N),R=_(P),z=e=>{var t=l();h(()=>r(t,`· ${o(p).length??``} auth method${o(p).length===1?``:`s`}`)),d(e,t)};i(R,e=>{o(p).length>0&&e(z)}),x(N),x(b);var B=_(b,2),V=A(B,!0);x(B),x(y);var H=_(y,2),U=e=>{var l=qe(),u=A(l),g=e=>{var n=Ie(),r=_(A(n),2);x(n),f(`click`,r,e=>{e.stopPropagation(),t.ondeselect(o(a).id)}),d(e,n)},v=e=>{var l=Ke(),u=s(l),g=e=>{var t=Q(),i=A(t,!0);x(t),h(e=>r(i,e),[()=>n(o(c).errorMessage,o(a).name)]),d(e,t)};i(u,e=>{o(c).error&&e(g)});var v=_(u,2),y=e=>{var n=D();L(s(n),17,()=>o(p),m,(e,n,l)=>{var u=D(),p=s(u),m=e=>{var i=Le(),s=A(i);F(s);var l=_(s,2),u=A(l,!0);x(l),x(i),h(()=>{k(s,o(c).apiKey??``),l.disabled=o(c).verifying,r(u,o(c).verifying?`Connecting...`:o(n).label)}),f(`input`,s,e=>{e.stopPropagation(),t.onapikey(o(a).id,e.currentTarget.value)}),f(`click`,s,e=>e.stopPropagation()),f(`click`,l,e=>{e.stopPropagation(),t.onverify(o(a).id)}),d(e,i)},g=e=>{var i=Re(),s=A(i),u=A(s,!0);x(s),x(i),h(()=>{s.disabled=o(c).verifying,r(u,o(c).verifying?`Waiting...`:o(n).label)}),f(`click`,s,e=>{e.stopPropagation(),t.onoauthstart(o(a).id,l)}),d(e,i)};i(p,e=>{o(n).type===`api`?e(m):o(n).type===`oauth`&&e(g,1)}),d(e,u)}),d(e,n)},b=e=>{var n=ze(),i=A(n);F(i);var s=_(i,2),l=A(s,!0);x(s),x(n),h(()=>{S(i,`placeholder`,(o(a).env??[])[0]),k(i,o(c).apiKey??``),s.disabled=o(c).verifying,r(l,o(c).verifying?`Connecting...`:`Connect`)}),f(`input`,i,e=>{e.stopPropagation(),t.onapikey(o(a).id,e.currentTarget.value)}),f(`click`,i,e=>e.stopPropagation()),f(`click`,s,e=>{e.stopPropagation(),t.onverify(o(a).id)}),d(e,n)},C=e=>{var n=Be(),i=s(n),l=A(i);F(l),x(i);var u=_(i,2),p=A(u);F(p),x(u);var m=_(u,2),g=A(m),v=A(g,!0);x(g),x(m),h(()=>{k(l,o(c).baseUrl??``),k(p,o(c).apiKey??``),g.disabled=o(c).verifying,r(v,o(c).verifying?`Checking...`:`Connect`)}),f(`input`,l,e=>{e.stopPropagation(),t.onbaseurl(o(a).id,e.currentTarget.value)}),f(`click`,l,e=>e.stopPropagation()),f(`input`,p,e=>{e.stopPropagation(),t.onapikey(o(a).id,e.currentTarget.value)}),f(`click`,p,e=>e.stopPropagation()),f(`click`,g,e=>{e.stopPropagation(),t.onverify(o(a).id)}),d(e,n)},w=e=>{var n=Ve(),i=A(n);F(i);var s=_(i,2),l=A(s,!0);x(s),x(n),h(()=>{S(i,`placeholder`,o(a).localUrl),k(i,o(c).baseUrl||o(a).localUrl),I(s,1,`auth-btn ${o(c).verified?`auth-btn-detected`:`auth-btn-detect`}`),s.disabled=o(c).verifying,r(l,o(c).verifying?`Detecting...`:o(c).verified?`Connected ✓`:`Detect`)}),f(`input`,i,e=>{e.stopPropagation(),t.onbaseurl(o(a).id,e.currentTarget.value)}),f(`click`,i,e=>e.stopPropagation()),f(`click`,s,e=>{e.stopPropagation(),t.onverify(o(a).id)}),d(e,n)},T=e=>{var n=He();f(`click`,_(s(n),2),e=>{e.stopPropagation(),t.onmarkready(o(a).id)}),d(e,n)};i(v,e=>{o(p).length>0?e(y):(o(a).env??[]).length>0?e(b,1):o(a).id===`openai-compatible`?e(C,2):o(a).localUrl?e(w,3):e(T,-1)});var E=_(v,2),O=e=>{var n=Ge(),s=A(n),l=e=>{var t=Ue(),n=A(t);x(t),h(()=>S(n,`href`,o(c).oauthUrl)),d(e,t)};i(s,e=>{o(c).oauthUrl&&e(l)});var u=_(s,2),p=e=>{var t=We(),n=A(t,!0);x(t),h(()=>r(n,o(c).oauthInstructions)),d(e,t)};i(u,e=>{o(c).oauthInstructions&&e(p)});var m=_(u,4);x(n),f(`click`,m,e=>{e.stopPropagation(),t.onoauthcancel(o(a).id)}),d(e,n)};i(E,e=>{o(c).oauthPolling&&e(O)}),d(e,l)};i(u,e=>{o(c).verified?e(g):e(v,-1)}),x(l),d(e,l)};i(H,e=>{o(g)&&e(U)}),x(v),h(()=>{I(v,1,`pcard ${o(c).verified?`selected verified`:o(g)?`selected`:``} ${o(g)?`wide`:``}`),S(v,`data-provider`,o(a).id),r(T,`${o(a).name??``} `),r(P,`${o(u)??``} model${o(u)===1?``:`s`} `),r(V,o(c).verified?`✓`:``)}),f(`click`,y,()=>t.ontoggleopencode(o(a).id)),f(`keydown`,y,e=>{(e.key===`Enter`||e.key===` `)&&t.ontoggleopencode(o(a).id)}),d(e,v)});var g=_(p,2),y=e=>{var a=D();L(s(a),17,()=>o(z),m,(e,a)=>{let c=C(()=>t.providerState[o(a).id]??{selected:!1,verified:!1,verifying:!1,error:!1,apiKey:``,baseUrl:``,models:[],ollamaMode:null}),u=C(()=>o(c).models&&o(c).models.length>0?o(c).models.length:Object.keys(o(a).models??{}).length),p=C(()=>t.opencodeAuth[o(a).id]??[]),g=C(()=>t.expandedProvider===o(a).id);var v=ut(),y=A(v),b=A(y),w=A(b),T=A(w),E=_(T),O=e=>{d(e,Ye())},j=e=>{d(e,Xe())},M=e=>{d(e,$())};i(E,e=>{o(c).verified?e(O):o(c).verifying?e(j,1):o(c).error&&e(M,2)}),x(w);var N=_(w,2),P=A(N),R=_(P),z=e=>{var t=l();h(()=>r(t,`· ${o(p).length??``} auth method${o(p).length===1?``:`s`}`)),d(e,t)};i(R,e=>{o(p).length>0&&e(z)}),x(N),x(b);var B=_(b,2),V=A(B,!0);x(B),x(y);var H=_(y,2),U=e=>{var l=lt(),u=A(l),g=e=>{var n=Ze(),r=_(A(n),2);x(n),f(`click`,r,e=>{e.stopPropagation(),t.ondeselect(o(a).id)}),d(e,n)},v=e=>{var l=ct(),u=s(l),g=e=>{var t=Qe(),i=A(t,!0);x(t),h(e=>r(i,e),[()=>n(o(c).errorMessage,o(a).name)]),d(e,t)};i(u,e=>{o(c).error&&e(g)});var v=_(u,2),y=e=>{var n=D();L(s(n),17,()=>o(p),m,(e,n,l)=>{var u=D(),p=s(u),m=e=>{var i=$e(),s=A(i);F(s);var l=_(s,2),u=A(l,!0);x(l),x(i),h(()=>{k(s,o(c).apiKey??``),l.disabled=o(c).verifying,r(u,o(c).verifying?`Connecting...`:o(n).label)}),f(`input`,s,e=>{e.stopPropagation(),t.onapikey(o(a).id,e.currentTarget.value)}),f(`click`,s,e=>e.stopPropagation()),f(`click`,l,e=>{e.stopPropagation(),t.onverify(o(a).id)}),d(e,i)},g=e=>{var i=et(),s=A(i),u=A(s,!0);x(s),x(i),h(()=>{s.disabled=o(c).verifying,r(u,o(c).verifying?`Waiting...`:o(n).label)}),f(`click`,s,e=>{e.stopPropagation(),t.onoauthstart(o(a).id,l)}),d(e,i)};i(p,e=>{o(n).type===`api`?e(m):o(n).type===`oauth`&&e(g,1)}),d(e,u)}),d(e,n)},b=e=>{var n=tt(),i=A(n);F(i);var s=_(i,2),l=A(s,!0);x(s),x(n),h(()=>{S(i,`placeholder`,(o(a).env??[])[0]),k(i,o(c).apiKey??``),s.disabled=o(c).verifying,r(l,o(c).verifying?`Connecting...`:`Connect`)}),f(`input`,i,e=>{e.stopPropagation(),t.onapikey(o(a).id,e.currentTarget.value)}),f(`click`,i,e=>e.stopPropagation()),f(`click`,s,e=>{e.stopPropagation(),t.onverify(o(a).id)}),d(e,n)},C=e=>{var n=nt(),i=s(n),l=A(i);F(l),x(i);var u=_(i,2),p=A(u);F(p),x(u);var m=_(u,2),g=A(m),v=A(g,!0);x(g),x(m),h(()=>{k(l,o(c).baseUrl??``),k(p,o(c).apiKey??``),g.disabled=o(c).verifying,r(v,o(c).verifying?`Checking...`:`Connect`)}),f(`input`,l,e=>{e.stopPropagation(),t.onbaseurl(o(a).id,e.currentTarget.value)}),f(`click`,l,e=>e.stopPropagation()),f(`input`,p,e=>{e.stopPropagation(),t.onapikey(o(a).id,e.currentTarget.value)}),f(`click`,p,e=>e.stopPropagation()),f(`click`,g,e=>{e.stopPropagation(),t.onverify(o(a).id)}),d(e,n)},w=e=>{var n=rt(),i=A(n);F(i);var s=_(i,2),l=A(s,!0);x(s),x(n),h(()=>{S(i,`placeholder`,o(a).localUrl),k(i,o(c).baseUrl||o(a).localUrl),I(s,1,`auth-btn ${o(c).verified?`auth-btn-detected`:`auth-btn-detect`}`),s.disabled=o(c).verifying,r(l,o(c).verifying?`Detecting...`:o(c).verified?`Connected ✓`:`Detect`)}),f(`input`,i,e=>{e.stopPropagation(),t.onbaseurl(o(a).id,e.currentTarget.value)}),f(`click`,i,e=>e.stopPropagation()),f(`click`,s,e=>{e.stopPropagation(),t.onverify(o(a).id)}),d(e,n)},T=e=>{var n=it();f(`click`,_(s(n),2),e=>{e.stopPropagation(),t.onmarkready(o(a).id)}),d(e,n)};i(v,e=>{o(p).length>0?e(y):(o(a).env??[]).length>0?e(b,1):o(a).id===`openai-compatible`?e(C,2):o(a).localUrl?e(w,3):e(T,-1)});var E=_(v,2),O=e=>{var n=st(),s=A(n),l=e=>{var t=at(),n=A(t);x(t),h(()=>S(n,`href`,o(c).oauthUrl)),d(e,t)};i(s,e=>{o(c).oauthUrl&&e(l)});var u=_(s,2),p=e=>{var t=ot(),n=A(t,!0);x(t),h(()=>r(n,o(c).oauthInstructions)),d(e,t)};i(u,e=>{o(c).oauthInstructions&&e(p)});var m=_(u,4);x(n),f(`click`,m,e=>{e.stopPropagation(),t.onoauthcancel(o(a).id)}),d(e,n)};i(E,e=>{o(c).oauthPolling&&e(O)}),d(e,l)};i(u,e=>{o(c).verified?e(g):e(v,-1)}),x(l),d(e,l)};i(H,e=>{o(g)&&e(U)}),x(v),h(()=>{I(v,1,`pcard ${o(c).verified?`selected verified`:o(g)?`selected`:``} ${o(g)?`wide`:``}`),S(v,`data-provider`,o(a).id),r(T,`${o(a).name??``} `),r(P,`${o(u)??``} model${o(u)===1?``:`s`} `),r(V,o(c).verified?`✓`:``)}),f(`click`,y,()=>t.ontoggleopencode(o(a).id)),f(`keydown`,y,e=>{(e.key===`Enter`||e.key===` `)&&t.ontoggleopencode(o(a).id)}),d(e,v)}),d(e,a)};i(g,e=>{o(N)&&e(y)});var b=_(g,2),w=e=>{var t=dt(),n=A(t,!0);x(t),h(()=>r(n,o(N)?`Show fewer providers`:`Show all providers (${o(V)} more)`)),f(`click`,t,()=>v(N,!o(N))),d(e,t)};i(b,e=>{o(V)>0&&!t.ocFilterQuery&&e(w)});var T=_(b,2),j=e=>{var n=ft(),i=A(n);x(n),h(()=>r(i,`No providers match "${t.ocFilterQuery??``}"`)),d(e,n)};i(T,e=>{o(O).length===0&&t.ocFilterQuery&&e(j)}),h(()=>{S(u,`placeholder`,`Search ${t.opencodeProviders.length??``} providers…`),k(u,t.ocFilterQuery)}),f(`input`,u,E),d(e,a)},b=e=>{var a=D();L(s(a),17,()=>te,m,(e,a)=>{let c=C(()=>W.filter(e=>e.group===o(a).id).sort((e,t)=>e.order-t.order));var l=D(),u=s(l),p=e=>{var l=kt(),u=A(l),p=A(u),g=A(p,!0);x(p);var v=_(p,2),y=A(v,!0);x(v),x(u);var b=_(u,2);L(b,21,()=>o(c),m,(e,a)=>{let c=C(()=>t.providerState[o(a).id]??{selected:!1,verified:!1,verifying:!1,error:!1,apiKey:``,baseUrl:``,models:[],ollamaMode:null}),l=C(()=>t.expandedProvider===o(a).id&&o(c).selected),u=C(()=>o(a).kind===`cloud`?`badge-cloud`:o(a).kind===`local`?`badge-local`:`badge-hybrid`);var p=Ot(),m=A(p),g=A(m),v=A(g,!0);x(g);var y=_(g,2),b=A(y),w=A(b),T=_(w),E=A(T,!0);x(T);var O=_(T,2),j=e=>{d(e,mt())},M=e=>{d(e,ht())},N=e=>{d(e,gt())};i(O,e=>{o(c).verified?e(j):o(c).verifying?e(M,1):o(c).error&&e(N,2)}),x(b);var P=_(b,2),L=A(P,!0);x(P),x(y);var R=_(y,2),z=A(R,!0);x(R),x(m);var B=_(m,2),V=e=>{var l=Dt(),u=A(l),p=e=>{var n=D(),l=s(n),u=e=>{var n=_t(),r=_(A(n),2),i=A(r),a=_(i,2);x(r),x(n),f(`click`,i,e=>{e.stopPropagation(),t.onollamamode(`running`)}),f(`click`,a,e=>{e.stopPropagation(),t.onollamamode(`instack`)}),d(e,n)},p=e=>{var n=vt(),i=A(n);F(i);var s=_(i,2),l=A(s,!0);x(s),x(n),h(()=>{S(i,`placeholder`,o(a).baseUrl),k(i,o(c).baseUrl||o(a).baseUrl),I(s,1,`auth-btn ${o(c).verified?`auth-btn-detected`:`auth-btn-detect`}`),s.disabled=o(c).verifying,r(l,o(c).verifying?`Detecting...`:o(c).verified?`Connected ✓`:`Detect`)}),f(`input`,i,e=>{e.stopPropagation(),t.onbaseurl(o(a).id,e.currentTarget.value)}),f(`click`,i,e=>e.stopPropagation()),f(`click`,s,e=>{e.stopPropagation(),t.onverify(o(a).id)}),d(e,n)},m=e=>{var n=D(),r=s(n),l=e=>{var n=yt(),r=_(A(n),2);x(n),f(`click`,r,e=>{e.stopPropagation(),t.ondeselect(o(a).id)}),d(e,n)},u=e=>{var n=bt(),r=_(A(n),2);x(n),f(`click`,r,e=>{e.stopPropagation(),t.onverify(o(a).id)}),d(e,n)};i(r,e=>{o(c).verified?e(l):e(u,-1)}),d(e,n)};i(l,e=>{o(c).ollamaMode?o(c).ollamaMode===`running`?e(p,1):e(m,-1):e(u)}),d(e,n)},m=e=>{var n=St(),l=s(n),u=A(l);F(u),x(l);var p=_(l,2),m=e=>{var n=xt(),r=A(n);F(r),x(n),h(()=>{S(r,`placeholder`,o(a).placeholder||`API key (optional)`),k(r,o(c).apiKey)}),f(`input`,r,e=>{e.stopPropagation(),t.onapikey(o(a).id,e.currentTarget.value)}),f(`click`,r,e=>e.stopPropagation()),d(e,n)};i(p,e=>{o(a).optionalKey&&e(m)});var g=_(p,2),v=A(g),y=A(v,!0);x(v),x(g),h(()=>{k(u,o(c).baseUrl||``),I(v,1,`auth-btn ${o(c).verified?`auth-btn-verified`:`auth-btn-verify`}`),v.disabled=o(c).verifying,r(y,o(c).verifying?`Checking...`:o(c).verified?`Connected ✓`:`Connect`)}),f(`input`,u,e=>{e.stopPropagation(),t.onbaseurl(o(a).id,e.currentTarget.value)}),f(`click`,u,e=>e.stopPropagation()),f(`click`,v,e=>{e.stopPropagation(),t.onverify(o(a).id)}),d(e,n)},g=e=>{var n=Ct(),i=A(n);F(i);var s=_(i,2),l=A(s,!0);x(s),x(n),h(()=>{S(i,`placeholder`,o(a).placeholder||`API key`),k(i,o(c).apiKey),I(s,1,`auth-btn ${o(c).verified?`auth-btn-verified`:`auth-btn-verify`}`),s.disabled=o(c).verifying,r(l,o(c).verifying?`Checking...`:o(c).verified?`Verified ✓`:`Verify`)}),f(`input`,i,e=>{e.stopPropagation(),t.onapikey(o(a).id,e.currentTarget.value)}),f(`click`,i,e=>e.stopPropagation()),f(`click`,s,e=>{e.stopPropagation(),t.onverify(o(a).id)}),d(e,n)},v=e=>{var n=wt(),i=A(n);F(i);var s=_(i,2),l=A(s,!0);x(s),x(n),h(()=>{S(i,`placeholder`,o(a).baseUrl||`http://localhost:8080`),k(i,o(c).baseUrl||o(a).baseUrl||``),I(s,1,`auth-btn ${o(c).verified?`auth-btn-detected`:`auth-btn-detect`}`),s.disabled=o(c).verifying,r(l,o(c).verifying?`Detecting...`:o(c).verified?`Connected ✓`:`Detect`)}),f(`input`,i,e=>{e.stopPropagation(),t.onbaseurl(o(a).id,e.currentTarget.value)}),f(`click`,i,e=>e.stopPropagation()),f(`click`,s,e=>{e.stopPropagation(),t.onverify(o(a).id)}),d(e,n)};i(u,e=>{o(a).id===`ollama`?e(p):o(a).needsUrl?e(m,1):o(a).needsKey?e(g,2):e(v,-1)});var y=_(u,2),b=e=>{var n=Tt(),r=_(A(n),2);x(n),f(`click`,r,e=>{e.stopPropagation(),t.ondeselect(o(a).id)}),d(e,n)},C=e=>{var t=Et(),i=A(t,!0);x(t),h(e=>r(i,e),[()=>n(o(c).errorMessage,o(a).name)||`Verification failed — check your `+(o(a).needsKey?`credentials`:`endpoint`)]),d(e,t)};i(y,e=>{o(c).verified&&o(a).id!==`ollama`?e(b):o(c).error&&e(C,1)}),x(l),d(e,l)};i(B,e=>{o(l)&&e(V)}),x(p),h(()=>{I(p,1,`pcard ${o(c).selected?`selected`:``} ${o(c).verified?`verified`:``} ${o(l)?`wide`:``}`),S(p,`data-provider`,o(a).id),S(m,`data-toggle-provider`,o(a).id),r(v,o(a).icon),r(w,`${o(a).name??``} `),I(T,1,`badge ${o(u)??``}`,`svelte-1iuc968`),r(E,o(a).kind),r(L,o(a).desc),r(z,o(c).selected?`✓`:``)}),f(`click`,m,()=>t.ontogglefallback(o(a).id)),f(`keydown`,m,e=>{(e.key===`Enter`||e.key===` `)&&t.ontogglefallback(o(a).id)}),d(e,p)}),x(b),x(l),h(()=>{r(g,o(a).label),r(y,o(a).desc)}),d(e,l)};i(u,e=>{o(c).length>0&&e(p)}),d(e,l)}),d(e,a)};i(g,e=>{t.opencodeAvailable?e(y):e(b,-1)}),x(p),d(e,a)};i(G,e=>{(!a()||o(y)===`manual`)&&e(K)});var q=_(G,2),J=e=>{var n=jt(),r=A(n);F(r),P(2),x(n),h(()=>w(r,u())),f(`change`,r,e=>t.onallowemptyinstallchange?.(e.currentTarget.checked)),d(e,n)};i(q,e=>{t.verifiedCount===0&&(!a()||o(y)===`manual`)&&e(J)});var ae=_(q,2),oe=A(ae),Y=_(oe,2),X=e=>{var n=Mt(),i=s(n),o=A(i);x(i);var c=_(i,2);h(()=>r(o,`Import ${a()??``} provider${a()===1?``:`s`} from host`)),f(`click`,c,function(...e){t.onhostimport?.apply(this,e)}),d(e,n)},se=e=>{var n=Pt(),a=s(n),o=A(a),c=e=>{var n=Nt(),i=s(n),a=A(i,!0);x(i);var o=_(i);h(()=>{r(a,t.verifiedCount),r(o,` provider${t.verifiedCount>1?`s`:``} ready`)}),d(e,n)},p=e=>{d(e,l(`Connect a provider to continue`))};i(o,e=>{t.verifiedCount>0?e(c):e(p,-1)}),x(a);var m=_(a,2),g=A(m,!0);x(m),h(()=>{m.disabled=t.verifiedCount===0&&!u(),r(g,t.verifiedCount>0?`Choose Models`:`Skip for now`)}),f(`click`,m,function(...e){t.onnext?.apply(this,e)}),d(e,n)};i(Y,e=>{o(y)===`import`&&a()>0?e(X):e(se,-1)}),x(ae),f(`click`,oe,function(...e){t.onback?.apply(this,e)}),d(e,H),M()}u([`change`,`input`,`click`,`keydown`]);var Lt=t(`<div class="field-error" style="margin-bottom:16px">No providers configured. You can skip to complete setup and add providers from the admin panel later.</div>`),Rt=t(`<span style="flex:1;font-size:var(--text-xs);color:var(--color-text-secondary);margin-left:8px"> </span> <span style="font-size:var(--text-xs);color:var(--color-text-secondary)">▶</span>`,1),zt=t(`<span style="margin-left:auto;font-size:var(--text-xs);color:var(--color-text-secondary)">▼</span>`),Bt=t(`<div role="button" tabindex="0"><div class="model-opt-dot"><div class="model-opt-dot-inner"></div></div> <div style="flex:1"><div class="model-opt-name">(same as chat model)</div> <div class="model-opt-meta">No separate small model</div></div> <span class="model-opt-badge model-opt-badge-auto">Default</span></div>`),Vt=t(`<div class="model-filter-row"><input type="text" class="model-filter-input" autocomplete="off"/></div>`),Ht=t(`<span class="model-opt-badge model-opt-badge-top">Top Pick</span>`),Ut=t(`<div role="button" tabindex="0"><div class="model-opt-dot"><div class="model-opt-dot-inner"></div></div> <div style="flex:1;min-width:0"><div class="model-opt-name"> </div> <div class="model-opt-meta"> </div></div> <!></div>`),Wt=t(`<div class="model-group-desc"> </div> <!> <!> <!>`,1),Gt=t(`<div class="model-group"><div class="model-group-header" role="button" tabindex="0" style="cursor:pointer;user-select:none"><span class="model-group-title"> </span> <span> </span> <!></div> <!></div>`),Kt=t(`<div class="field-error" id="step2-error" role="alert"> </div>`),qt=t(`<h2>Choose Your Models</h2> <p class="step-description">Pre-selected from your providers. Adjust if needed.</p> <!> <div id="model-groups"></div> <input type="hidden" id="llm-connection"/> <input type="hidden" id="llm-model"/> <input type="hidden" id="llm-small-model"/> <input type="hidden" id="emb-connection"/> <input type="hidden" id="emb-model"/> <input type="hidden" id="emb-dims"/> <!> <div class="step-actions"><button class="btn btn-secondary" id="btn-step2-back">Back</button> <button class="btn btn-primary" id="btn-step2-next"> </button></div>`,1);function Jt(e,t){T(t,!0);let n=[{id:`llm`,label:`Chat Model`,tag:`required`,desc:`Conversations, reasoning, and code`},{id:`embedding`,label:`Memory Model`,tag:`optional`,desc:`Helps the assistant remember past conversations. Optional.`},{id:`small`,label:`Small Model`,tag:`optional`,desc:`Lightweight tasks like summarization`}],a=g({}),c=p(g(new Set));function l(e){o(c).has(e)?o(c).delete(e):o(c).add(e),v(c,new Set(o(c)),!0)}function u(e){let n=[];for(let r of t.verifiedProviders){let i=t.providerState[r.id],a=e.id===`embedding`?r.embModel:r.llmModel,o=i.models.length>0?i.models:[];a&&o.includes(a)&&n.push({id:a,connId:r.id,providerName:r.name,baseUrl:i.baseUrl||r.baseUrl,isDefault:!0,dims:e.id===`embedding`?V[a]??V[a.replace(/:.*$/,``)]??r.embDims??0:0});for(let t of o){if(t===a)continue;let o=e.id===`embedding`?V[t]??V[t.replace(/:.*$/,``)]??0:0;n.push({id:t,connId:r.id,providerName:r.name,baseUrl:i.baseUrl||r.baseUrl,isDefault:!1,dims:o})}}if(e.id===`embedding`){let e=n.filter(e=>e.isDefault||e.dims>0);if(e.length>0)return e}if(e.id===`small`&&n.length===0){let e=t.verifiedProviders[0];if(e)for(let r of t.providerState[e.id].models)n.push({id:r,connId:e.id,providerName:e.name,baseUrl:t.providerState[e.id].baseUrl||e.baseUrl,isDefault:!1,dims:0})}return n}function y(e,t){let n=(a[e.id]??``).toLowerCase().trim();return n?t.filter(e=>e.id.toLowerCase().includes(n)||e.providerName.toLowerCase().includes(n)):t}function b(e,n,r,i){t.onselect(e,n,r,i),o(c).add(e),v(c,new Set(o(c)),!0)}var w=qt(),E=_(s(w),4),O=e=>{d(e,Lt())};i(E,e=>{t.verifiedProviders.length===0&&e(O)});var j=_(E,2);L(j,21,()=>n,m,(e,n)=>{let p=C(()=>u(o(n)));var g=D(),v=s(g),w=e=>{let u=C(()=>o(p).length>6),g=C(()=>a[o(n).id]??``),v=C(()=>y(o(n),o(p)));var w=Gt(),T=A(w),E=A(T),D=A(E,!0);x(E);var O=_(E,2),j=A(O,!0);x(O);var M=_(O,2),N=e=>{let i=C(()=>t.modelSelection[o(n).id]);var a=Rt(),c=s(a),l=A(c,!0);x(c),P(2),h(()=>r(l,o(i)?.model??`(none)`)),d(e,a)},R=C(()=>o(c).has(o(n).id)),z=e=>{d(e,zt())};i(M,e=>{o(R)?e(N):e(z,-1)}),x(T);var B=_(T,2),V=e=>{var c=Wt(),l=s(c),y=A(l,!0);x(l);var w=_(l,2),T=e=>{let n=C(()=>!t.modelSelection.small?.model);var r=Bt();h(()=>I(r,1,`model-opt ${o(n)?`on`:``}`)),f(`click`,r,()=>t.onselectnone(`small`)),f(`keydown`,r,e=>{(e.key===`Enter`||e.key===` `)&&t.onselectnone(`small`)}),d(e,r)};i(w,e=>{o(n).id===`small`&&e(T)});var E=_(w,2),D=e=>{var t=Vt(),r=A(t);F(r),x(t),h(()=>{S(r,`placeholder`,`Search ${o(p).length??``} models…`),k(r,o(g))}),f(`input`,r,e=>{a[o(n).id]=e.currentTarget.value}),d(e,t)};i(E,e=>{o(p).length>3&&e(D)}),L(_(E,2),17,()=>o(g)?o(v):o(p),m,(e,a,s)=>{let c=C(()=>o(p).findIndex(e=>e.isDefault)),l=C(()=>t.modelSelection[o(n).id]),m=C(()=>!!o(l)&&o(l).model===o(a).id&&o(l).connId===o(a).connId),v=C(()=>!o(g)&&o(u)&&s>=6&&!o(m)),y=C(()=>`via `+o(a).providerName+(o(a).dims>0?` · `+o(a).dims+`d`:``));var w=Ut(),T=_(A(w),2),E=A(T),D=A(E,!0);x(E);var O=_(E,2),k=A(O,!0);x(O),x(T);var j=_(T,2),M=e=>{d(e,Ht())};i(j,e=>{s===o(c)&&o(a).isDefault&&e(M)}),x(w),h(e=>{I(w,1,`model-opt ${o(m)?`on`:``} ${o(v)?`model-opt-filtered`:``}`),S(w,`data-model-select`,`${o(n).id??``}:${o(a).connId??``}:${o(a).id??``}:${o(a).dims??``}`),S(w,`data-model-name`,e),r(D,o(a).id),r(k,o(y))},[()=>o(a).id.toLowerCase()]),f(`click`,w,()=>b(o(n).id,o(a).connId,o(a).id,o(a).dims)),f(`keydown`,w,e=>{(e.key===`Enter`||e.key===` `)&&b(o(n).id,o(a).connId,o(a).id,o(a).dims)}),d(e,w)}),h(()=>r(y,o(n).desc)),d(e,c)},H=C(()=>!o(c).has(o(n).id));i(B,e=>{o(H)&&e(V)}),x(w),h(()=>{r(D,o(n).label),I(O,1,`model-group-tag ${o(n).tag===`required`?`model-group-tag-required`:`model-group-tag-optional`}`),r(j,o(n).tag)}),f(`click`,T,()=>l(o(n).id)),f(`keydown`,T,e=>{(e.key===`Enter`||e.key===` `)&&l(o(n).id)}),d(e,w)};i(v,e=>{(o(p).length>0||o(n).id===`small`)&&e(w)}),d(e,g)}),x(j);var N=_(j,2);F(N);var R=_(N,2);F(R);var z=_(R,2);F(z);var B=_(z,2);F(B);var H=_(B,2);F(H);var U=_(H,2);F(U);var W=_(U,2),ee=e=>{var n=Kt(),i=A(n,!0);x(n),h(()=>r(i,t.errorMessage)),d(e,n)};i(W,e=>{t.errorMessage&&e(ee)});var te=_(W,2),ne=A(te),re=_(ne,2),G=A(re,!0);x(re),x(te),h(e=>{k(N,t.modelSelection.llm?.connId??``),k(R,t.modelSelection.llm?.model??``),k(z,t.modelSelection.small?.model??``),k(B,t.modelSelection.embedding?.connId??``),k(H,t.modelSelection.embedding?.model??``),k(U,e),r(G,t.verifiedProviders.length===0?`Skip for now`:`Voice Setup`)},[()=>String(t.modelSelection.embedding?.dims??1536)]),f(`click`,ne,function(...e){t.onback?.apply(this,e)}),f(`click`,re,function(...e){t.onnext?.apply(this,e)}),d(e,w),M()}u([`click`,`keydown`,`input`]);var Yt=t(`<div class="voice-unknown svelte-jxtfqg" role="alert">Your previous voice settings couldn't be loaded. Please pick an engine.</div>`),Xt=t(`<div class="voice-download-notice svelte-jxtfqg" role="note"><strong class="svelte-jxtfqg">First install will download the OpenPalm Voice image.</strong> <ul class="svelte-jxtfqg"><li>CPU build: ~2.4 GB (5–15 min on a typical home connection)</li> <li>CUDA build: ~7.6 GB (15–45 min — chosen later from the admin tab)</li></ul> The wizard's final Install step will show a progress indicator and
|
|
2
|
-
wait for the download to finish before completing.</div>`),Zt=t(`<div class="voice-summary-row svelte-jxtfqg"><span class="voice-summary-label svelte-jxtfqg">Voice Container</span> <span class="voice-summary-value svelte-jxtfqg"> </span></div>`),Qt=t(`<p class="voice-profile-inline-loading svelte-jxtfqg">Checking available hardware profiles…</p>`),$t=t(`<div class="voice-profile-inline svelte-jxtfqg"><div class="voice-profile-inline-title svelte-jxtfqg">Voice container profile</div> <!></div>`),en=t(`<p class="voice-hint svelte-jxtfqg">OpenAI is available. You can use OpenAI TTS/STT or keep browser voice.</p>`),tn=t(`<p class="voice-hint svelte-jxtfqg">Kokoro and Whisper give higher quality. Browser voice works without extra setup.</p>`),nn=t(`<h2>Voice Capabilities</h2> <p class="step-description">Browser voice is ready out of the box — no setup needed.</p> <!> <!> <div id="voice-summary" class="voice-summary svelte-jxtfqg"><div class="voice-summary-row svelte-jxtfqg"><span class="voice-summary-label svelte-jxtfqg">Text-to-Speech</span> <span class="voice-summary-value svelte-jxtfqg"> </span></div> <div class="voice-summary-row svelte-jxtfqg"><span class="voice-summary-label svelte-jxtfqg">Speech-to-Text</span> <span class="voice-summary-value svelte-jxtfqg"> </span></div> <!></div> <!> <details id="voice-configure-details" class="svelte-jxtfqg"><summary class="voice-configure-summary svelte-jxtfqg" id="voice-configure-toggle">Configure voice…</summary> <div id="voice-groups" style="margin-top:12px"><!> <div class="model-group"><div class="model-group-header"><span class="model-group-title">Text-to-Speech</span> <span class="model-group-tag model-group-tag-optional">Optional</span></div> <div class="model-group-desc">How your assistant speaks</div> <!></div> <div class="model-group"><div class="model-group-header"><span class="model-group-title">Speech-to-Text</span> <span class="model-group-tag model-group-tag-optional">Optional</span></div> <div class="model-group-desc">How your assistant hears you</div> <!></div></div></details> <div class="step-actions"><button class="btn btn-secondary" id="btn-step3-back">Back</button> <button class="btn btn-primary" id="btn-step3-next">Continue</button></div>`,1);function rn(e,t){T(t,!0);let n=b(t,`unknownTts`,3,!1),a=b(t,`unknownStt`,3,!1),c=b(t,`profiles`,19,()=>[]),l=b(t,`selectedVoiceProfile`,3,``),u=p(!1),m=C(()=>re.find(e=>e.id===t.tts.engine)?.name??`Browser Built-in`),g=C(()=>H.find(e=>e.id===t.stt.engine)?.name??`Browser Built-in`),y=C(()=>t.tts.engine===`openpalm-voice`||t.stt.engine===`openpalm-voice`),S=C(()=>{if(!l())return``;let e=c().find(e=>e.id===l());return e?.label??e?.id??l()});var w=nn(),E=_(s(w),4),D=e=>{d(e,Yt())};i(E,e=>{(n()||a())&&e(D)});var k=_(E,2),j=e=>{d(e,Xt())};i(k,e=>{o(y)&&e(j)});var N=_(k,2),P=A(N),F=_(A(P),2),I=A(F,!0);x(F),x(P);var L=_(P,2),R=_(A(L),2),z=A(R,!0);x(R),x(L);var B=_(L,2),V=e=>{var t=Zt(),n=_(A(t),2),i=A(n,!0);x(n),x(t),h(()=>r(i,o(S))),d(e,t)};i(B,e=>{o(y)&&o(S)&&e(V)}),x(N);var W=_(N,2),ee=e=>{var n=$t(),r=_(A(n),2),a=e=>{ne(e,{get profiles(){return c()},get selectedProfile(){return l()},get onchange(){return t.onprofilechange},showDescription:!1})},o=e=>{d(e,Qt())};i(r,e=>{c().length>0&&t.onprofilechange?e(a):e(o,-1)}),x(n),d(e,n)};i(W,e=>{o(y)&&e(ee)});var te=_(W,2),G=_(A(te),2),K=A(G),ie=e=>{d(e,en())},q=e=>{d(e,tn())};i(K,e=>{t.hasOpenAI?e(ie):e(q,-1)});var J=_(K,2);U(_(A(J),4),{kind:`tts`,get value(){return t.tts},get onchange(){return t.onchangetts}}),x(J);var ae=_(J,2);U(_(A(ae),4),{kind:`stt`,get value(){return t.stt},get onchange(){return t.onchangestt}}),x(ae),x(G),x(te);var oe=_(te,2),Y=A(oe),X=_(Y,2);x(oe),h(()=>{r(I,o(m)),r(z,o(g))}),O(`open`,`toggle`,te,e=>v(u,e),()=>o(u)),f(`click`,Y,function(...e){t.onback?.apply(this,e)}),f(`click`,X,function(...e){t.onnext?.apply(this,e)}),d(e,w),M()}u([`click`]);function an(e,t,n){if(n)return!0;let r=e[t];return typeof r==`object`&&r?r.enabled:!!r}function on(e,t,n){let r=e[t];return typeof r==`object`&&r?String(r[n]??``):``}var sn=t(`<span class="badge badge-local">Always on</span>`),cn=t(`<div class="toggle-track on locked"><div class="toggle-thumb"></div></div>`),ln=t(`<div><div class="toggle-thumb"></div></div>`),un=t(`<span class="channel-cred-required">*</span>`),dn=t(`<div class="auth-row"><label class="channel-cred-label"> <!></label> <input/></div>`),fn=t(`<div class="pcard-auth"></div>`),pn=t(`<div><div class="toggle-card-header" role="button"><div class="toggle-card-icon"> </div> <div class="toggle-card-info"><div class="toggle-card-name"> <!></div> <div class="toggle-card-desc"> </div></div> <div class="toggle-card-switch"><!></div></div> <!></div>`),mn=t(`<div class="pcard-auth"><!></div>`),hn=t(`<div class="pcard-auth"><!></div>`),gn=t(`<div class="options-section"><h3 class="options-section-title">Share knowledge with my host AKM</h3> <p class="options-section-desc">Adds a source entry to your personal <code>~/.config/akm/config.json</code> and mounts <code>~/akm</code> into the assistant as a secondary source. Your files' ownership is not changed and your primary stash is unchanged — your <code>~/akm</code> data and cache stay yours.</p> <div class="toggle-grid"><div><div class="toggle-card-header" role="button" tabindex="0"><div class="toggle-card-icon">🧠</div> <div class="toggle-card-info"><div class="toggle-card-name">Share knowledge with my host AKM (read + contribute)</div> <div class="toggle-card-desc">The assistant reads your personal knowledge and can contribute back. Each side keeps its own primary stash, database, and cache — only the knowledge files are shared.</div></div> <div class="toggle-card-switch"><div><div class="toggle-thumb"></div></div></div></div></div></div></div>`),_n=t(`<div class="field-error" role="alert"> </div>`),vn=t(`<h2>Options</h2> <p class="step-description">Configure channels and deployment options.</p> <div class="options-section"><h3 class="options-section-title">Channels</h3> <p class="options-section-desc">Additional ways to reach your assistant.</p> <div class="toggle-grid" id="channels-grid"></div></div> <div class="options-section"><h3 class="options-section-title">Add-ons</h3> <p class="options-section-desc">Optional features to extend your assistant.</p> <div class="toggle-grid" id="addons-grid"><div><div class="toggle-card-header" role="button" tabindex="0"><div class="toggle-card-icon">🎙️</div> <div class="toggle-card-info"><div class="toggle-card-name">Voice</div> <div class="toggle-card-desc">Bundled text-to-speech and speech-to-text. Requires a one-time local model download.</div></div> <div class="toggle-card-switch"><div><div class="toggle-thumb"></div></div></div></div> <!></div> <div><div class="toggle-card-header" role="button" tabindex="0"><div class="toggle-card-icon">🦙</div> <div class="toggle-card-info"><div class="toggle-card-name">Ollama</div> <div class="toggle-card-desc">Run local AI models inside the stack. Downloads and serves models via Docker.</div></div> <div class="toggle-card-switch"><div><div class="toggle-thumb"></div></div></div></div> <!></div></div></div> <details id="options-advanced-details" class="svelte-1q1mmx4"><summary class="options-advanced-summary svelte-1q1mmx4" id="options-advanced-toggle">Advanced settings</summary> <div class="options-section"><h3 class="options-section-title">Container Image</h3> <p class="options-section-desc">Tag or version of the OpenPalm images to deploy.</p> <div class="field-group"><label for="image-tag">Image tag</label> <div class="field-hint svelte-1q1mmx4">Advanced — leave blank to use the default.</div> <input id="image-tag" type="text" placeholder="dev"/></div></div> <!></details> <!> <div class="step-actions"><button class="btn btn-secondary" id="btn-step4-back">Back</button> <button class="btn btn-primary" id="btn-step4-next">Review</button></div>`,1);function yn(e,t){T(t,!0);function n(e,n){return an(t.channelSelection,e,n)}function a(e,n){return on(t.channelSelection,e,n)}var c=vn(),l=_(s(c),4),u=_(A(l),4);L(u,21,()=>ee,m,(e,s)=>{let c=C(()=>n(o(s).id,o(s).locked));var l=pn(),u=A(l),p=A(u),g=A(p,!0);x(p);var v=_(p,2),y=A(v),b=A(y),w=_(b),T=e=>{d(e,sn())};i(w,e=>{o(s).locked&&e(T)}),x(y);var E=_(y,2),D=A(E,!0);x(E),x(v);var O=_(v,2),j=A(O),M=e=>{d(e,cn())},N=e=>{var t=ln();h(()=>I(t,1,`toggle-track ${o(c)?`on`:``}`)),d(e,t)};i(j,e=>{o(s).locked?e(M):e(N,-1)}),x(O),x(u);var P=_(u,2),R=e=>{var n=fn();L(n,21,()=>o(s).credentials,m,(e,n)=>{let c=C(()=>o(n).secret===!1?`text`:`password`);var l=dn(),u=A(l),p=A(u),m=_(p),g=e=>{d(e,un())};i(m,e=>{o(n).required&&e(g)}),x(u);var v=_(u,2);F(v),x(l),h(e=>{S(u,`for`,`cred-${o(s).id??``}-${o(n).key??``}`),r(p,`${o(n).label??``} `),S(v,`id`,`cred-${o(s).id??``}-${o(n).key??``}`),S(v,`type`,o(c)),S(v,`placeholder`,o(n).placeholder??``),k(v,e)},[()=>a(o(s).id,o(n).key)]),f(`input`,v,e=>{e.stopPropagation(),t.oncredentialchange(o(s).id,o(n).key,e.currentTarget.value)}),f(`click`,v,e=>e.stopPropagation()),d(e,l)}),x(n),d(e,n)};i(P,e=>{o(s).credentials&&o(c)&&e(R)}),x(l),h(()=>{I(l,1,`toggle-card ${o(c)?`on`:``} ${o(s).locked?`locked`:``} ${o(s).credentials&&o(c)?`wide`:``}`),S(l,`data-channel`,o(s).id),S(u,`tabindex`,o(s).locked?-1:0),r(g,o(s).icon),r(b,`${o(s).name??``} `),r(D,o(s).desc)}),f(`click`,u,()=>{o(s).locked||t.onchanneltoggle(o(s).id)}),f(`keydown`,u,e=>{!o(s).locked&&(e.key===`Enter`||e.key===` `)&&t.onchanneltoggle(o(s).id)}),d(e,l)}),x(u),x(l);var p=_(l,2),g=_(A(p),4),v=A(g),y=A(v),b=_(A(y),4),w=A(b);x(b),x(y);var E=_(y,2),D=e=>{var n=mn();ne(A(n),{get profiles(){return t.voiceProfiles},get selectedProfile(){return t.selectedVoiceProfile},get onchange(){return t.onvoiceprofilechange},showDescription:!1}),x(n),d(e,n)};i(E,e=>{t.enableVoice&&t.voiceProfiles.length>0&&e(D)}),x(v);var O=_(v,2),j=A(O),N=_(A(j),4),P=A(N);x(N),x(j);var R=_(j,2),z=e=>{var n=hn();ne(A(n),{get profiles(){return t.ollamaProfiles},get selectedProfile(){return t.selectedOllamaProfile},get onchange(){return t.onollamaprofilechange},showDescription:!1}),x(n),d(e,n)};i(R,e=>{t.ollamaEnabled&&t.ollamaProfiles.length>0&&e(z)}),x(O),x(g),x(p);var B=_(p,2),V=_(A(B),2),H=_(A(V),4),U=_(A(H),4);F(U),x(H),x(V);var W=_(V,2),te=e=>{var n=gn(),r=_(A(n),4),i=A(r),a=A(i),o=_(A(a),4),s=A(o);x(o),x(a),x(i),x(r),x(n),h(()=>{I(i,1,`toggle-card ${t.hostAkmEnabled?`on`:``}`),I(s,1,`toggle-track ${t.hostAkmEnabled?`on`:``}`)}),f(`click`,a,()=>t.onhostakmchange(!t.hostAkmEnabled)),f(`keydown`,a,e=>{(e.key===`Enter`||e.key===` `)&&t.onhostakmchange(!t.hostAkmEnabled)}),d(e,n)};i(W,e=>{t.hostAkmAvailable&&e(te)}),x(B);var re=_(B,2),G=e=>{var n=_n(),i=A(n,!0);x(n),h(()=>r(i,t.errorMessage)),d(e,n)};i(re,e=>{t.errorMessage&&e(G)});var K=_(re,2),ie=A(K),q=_(ie,2);x(K),h(()=>{I(v,1,`toggle-card ${t.enableVoice?`on`:``} ${t.enableVoice&&t.voiceProfiles.length>0?`wide`:``}`),I(w,1,`toggle-track ${t.enableVoice?`on`:``}`),I(O,1,`toggle-card ${t.ollamaEnabled?`on`:``} ${t.ollamaEnabled&&t.ollamaProfiles.length>0?`wide`:``}`),I(P,1,`toggle-track ${t.ollamaEnabled?`on`:``}`),k(U,t.imageTag)}),f(`click`,y,()=>t.onenablevoicechange(!t.enableVoice)),f(`keydown`,y,e=>{(e.key===`Enter`||e.key===` `)&&t.onenablevoicechange(!t.enableVoice)}),f(`click`,j,()=>t.onollamachange(!t.ollamaEnabled)),f(`keydown`,j,e=>{(e.key===`Enter`||e.key===` `)&&t.onollamachange(!t.ollamaEnabled)}),f(`input`,U,e=>t.onimagtagchange(e.currentTarget.value)),f(`click`,ie,function(...e){t.onback?.apply(this,e)}),f(`click`,q,function(...e){t.onnext?.apply(this,e)}),d(e,c),M()}u([`click`,`keydown`,`input`]);var bn=t(`<div class="review-warning svelte-1q74f52" role="alert">⚠ No AI provider connected — your assistant won't be able to chat until you add one from the dashboard.</div>`),xn=t(`<input class="token-save-input svelte-1q74f52" type="password" readonly=""/>`),Sn=t(`<span class="token-save-box svelte-1q74f52"> </span>`),Cn=t(`<div class="review-row review-row--alert svelte-1q74f52"><span class="review-row-label">UI Login Password</span> <span class="review-row-value"><!></span></div> <div class="review-row review-row--alert svelte-1q74f52"><span class="review-row-label"><span class="token-save-hint svelte-1q74f52">You'll need this to sign in. Also saved in <code class="svelte-1q74f52">stack.env</code>.</span></span> <span class="review-row-value"><button type="button" class="btn btn-secondary btn-sm"> </button></span></div>`,1),wn=t(`<div class="review-row"><span class="review-row-label">UI Login Password</span> <span class="review-row-value"> </span></div>`),Tn=t(`<div class="review-row"><span class="review-row-label">Chat Model</span> <span class="review-row-value"> </span></div>`),En=t(`<div class="review-row"><span class="review-row-label">Small Model</span> <span class="review-row-value"> </span></div>`),Dn=t(`<div class="review-row"><span class="review-row-label">Memory Model</span> <span class="review-row-value"> </span></div> <div class="review-row" style="padding:4px 0"><span class="review-row-label">Embedding Dims</span> <span class="review-row-value"> </span></div>`,1),On=t(`<div class="review-row"><span class="review-row-label" style="padding-left:24px"> </span> <span class="review-row-value"> </span></div>`),kn=t(`<div class="review-row"><span class="review-row-label"> </span> <span class="review-row-value review-row-value-ok">Enabled ✓</span></div> <!>`,1),An=t(`<div class="review-row"><span class="review-row-label">Voice Container</span> <span class="review-row-value"> </span></div>`),jn=t(`<div class="review-row"><span class="review-row-label">Ollama Profile</span> <span class="review-row-value"> </span></div>`),Mn=t(`<div class="review-row"><span class="review-row-label">Ollama In-Stack</span> <span class="review-row-value">Enabled</span></div> <!>`,1),Nn=t(`<div class="review-row"><span class="review-row-label"> </span> <span class="review-row-value review-row-value-ok">Connected ✓</span></div>`),Pn=t(`<span class="spinner"></span> Installing...`,1),Fn=t(`<h2>Review & Install</h2> <p class="step-description">Confirm your settings, then install.</p> <!> <div id="review-summary"><div class="review-card"><div class="review-card-title"><span>Account</span> <button class="review-edit-btn" type="button">Edit</button></div> <!></div> <div class="review-card"><div class="review-card-title"><span>Models</span> <button class="review-edit-btn" type="button">Edit</button></div> <!> <!> <!></div> <div class="review-card"><div class="review-card-title"><span>Channels</span> <button class="review-edit-btn" type="button">Edit</button></div> <!></div> <div class="review-card"><div class="review-card-title"><span>Voice</span> <button class="review-edit-btn" type="button">Edit</button></div> <div class="review-row"><span class="review-row-label">Text-to-Speech</span> <span class="review-row-value"> </span></div> <div class="review-row"><span class="review-row-label">Speech-to-Text</span> <span class="review-row-value"> </span></div> <!></div> <div class="review-card"><div class="review-card-title"><span>Options</span> <button class="review-edit-btn" type="button">Edit</button></div> <!></div> <div class="review-card"><div class="review-card-title"><span>Providers</span> <button class="review-edit-btn" type="button">Edit</button></div> <!></div></div> <!> <div class="step-actions" id="review-actions"><button type="button" class="btn btn-info">Save configuration</button> <button class="btn btn-secondary">Back</button> <button class="btn btn-primary" id="btn-install"><!></button></div>`,1);function In(e,t){T(t,!0);let n=b(t,`voiceProfileLabel`,3,``),c=b(t,`ollamaProfileLabel`,3,``),u=b(t,`isRerun`,3,!1);function g(e){return!e||e.length<8?`(not set)`:e.slice(0,4)+`...`+e.slice(-4)}function y(e,n){return an(t.channelSelection,e,n)}function S(e,n){return on(t.channelSelection,e,n)}let w=C(()=>re.find(e=>e.id===t.activeTts)),E=C(()=>H.find(e=>e.id===t.activeStt)),O=C(()=>ee.filter(e=>y(e.id,e.locked)));function j(e){return W.find(t=>t.id===e)}let I=p(!1),R=p(!1),z=p(null);function B(e){let t=new Blob([JSON.stringify(e,null,2)],{type:`application/json`}),n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=`openpalm-setup.json`,r.click(),URL.revokeObjectURL(n)}async function V(){try{if(navigator.clipboard?.writeText){await navigator.clipboard.writeText(t.uiLoginPassword),v(I,!0),setTimeout(()=>{v(I,!1)},2e3);return}throw Error(`Clipboard API unavailable`)}catch{v(R,!0),o(z)&&(o(z).focus(),o(z).select())}}var U=Fn(),te=_(s(U),4),ne=e=>{d(e,bn())};i(te,e=>{t.verifiedProviders.length===0&&e(ne)});var G=_(te,2),K=A(G),q=A(K),J=_(A(q),2);x(q);var ae=_(q,2),oe=e=>{var n=Cn(),c=s(n),l=_(A(c),2),u=A(l),p=e=>{var n=xn();F(n),N(n,e=>v(z,e),()=>o(z)),h(()=>k(n,t.uiLoginPassword)),a(`focus`,n,e=>e.currentTarget.select()),d(e,n)},m=e=>{var n=Sn(),i=A(n);x(n),h(e=>r(i,`${e??``}*********`),[()=>t.uiLoginPassword.substring(0,2)]),d(e,n)};i(u,e=>{o(R)?e(p):e(m,-1)}),x(l),x(c);var g=_(c,2),y=_(A(g),2),b=A(y),S=A(b,!0);x(b),x(y),x(g),h(()=>r(S,o(I)?`Copied!`:`Copy password`)),f(`click`,b,()=>void V()),d(e,n)},Y=e=>{var n=wn(),i=_(A(n),2),a=A(i,!0);x(i),x(n),h(e=>r(a,e),[()=>g(t.uiLoginPassword)]),d(e,n)};i(ae,e=>{u()?e(Y,-1):e(oe)}),x(K);var X=_(K,2),se=A(X),ce=_(A(se),2);x(se);var le=_(se,2),ue=e=>{let n=C(()=>j(t.modelSelection.llm.connId));var i=Tn(),a=_(A(i),2),s=A(a);x(a),x(i),h(()=>r(s,`${t.modelSelection.llm.model??``}${o(n)?` (`+o(n).name+`)`:``}`)),d(e,i)};i(le,e=>{t.modelSelection.llm&&e(ue)});var Z=_(le,2),fe=e=>{let n=C(()=>j(t.modelSelection.small.connId));var i=En(),a=_(A(i),2),s=A(a);x(a),x(i),h(()=>r(s,`${t.modelSelection.small.model??``}${o(n)?` (`+o(n).name+`)`:``}`)),d(e,i)};i(Z,e=>{t.modelSelection.small?.model&&e(fe)});var pe=_(Z,2),me=e=>{let n=C(()=>j(t.modelSelection.embedding.connId));var i=Dn(),a=s(i),c=_(A(a),2),l=A(c);x(c),x(a);var u=_(a,2),f=_(A(u),2),p=A(f,!0);x(f),x(u),h(()=>{r(l,`${t.modelSelection.embedding.model??``}${o(n)?` (`+o(n).name+`)`:``}`),r(p,t.modelSelection.embedding.dims??1536)}),d(e,i)};i(pe,e=>{t.modelSelection.embedding&&e(me)}),x(X);var he=_(X,2),ge=A(he),_e=_(A(ge),2);x(ge),L(_(ge,2),17,()=>o(O),m,(e,n)=>{var a=kn(),c=s(a),l=A(c),u=A(l);x(l),P(2),x(c);var f=_(c,2),p=e=>{let a=C(()=>t.channelSelection[o(n).id]);var c=D(),l=s(c),u=e=>{var t=D();L(s(t),17,()=>o(n).credentials,m,(e,t)=>{let a=C(()=>S(o(n).id,o(t).key));var c=D(),l=s(c),u=e=>{var n=On(),i=A(n),s=A(i,!0);x(i);var c=_(i,2),l=A(c,!0);x(c),x(n),h(e=>{r(s,o(t).label),r(l,e)},[()=>g(o(a))]),d(e,n)};i(l,e=>{o(a)&&e(u)}),d(e,c)}),d(e,t)};i(l,e=>{typeof o(a)==`object`&&o(a)!==null&&o(a).enabled&&e(u)}),d(e,c)};i(f,e=>{o(n).credentials&&e(p)}),h(()=>r(u,`${o(n).icon??``} ${o(n).name??``}`)),d(e,a)}),x(he);var ve=_(he,2),ye=A(ve),be=_(A(ye),2);x(ye);var xe=_(ye,2),Se=_(A(xe),2),Ce=A(Se,!0);x(Se),x(xe);var we=_(xe,2),Te=_(A(we),2),Ee=A(Te,!0);x(Te),x(we);var De=_(we,2),Oe=e=>{var t=An(),i=_(A(t),2),a=A(i,!0);x(i),x(t),h(()=>r(a,n())),d(e,t)};i(De,e=>{n()&&(t.activeTts===`openpalm-voice`||t.activeStt===`openpalm-voice`)&&e(Oe)}),x(ve);var ke=_(ve,2),Ae=A(ke),je=_(A(Ae),2);x(Ae);var Me=_(Ae,2),Ne=e=>{var t=Mn(),n=_(s(t),2),a=e=>{var t=jn(),n=_(A(t),2),i=A(n,!0);x(n),x(t),h(()=>r(i,c())),d(e,t)};i(n,e=>{c()&&e(a)}),d(e,t)};i(Me,e=>{t.ollamaEnabled&&e(Ne)}),x(ke);var Pe=_(ke,2),Fe=A(Pe),Ie=_(A(Fe),2);x(Fe),L(_(Fe,2),17,()=>t.verifiedProviders,m,(e,t)=>{var n=Nn(),i=A(n),a=A(i);x(i),P(2),x(n),h(()=>r(a,`${o(t).icon??``} ${o(t).name??``}`)),d(e,n)}),x(Pe),x(G);var Q=_(G,2),Le=e=>{{let n=C(()=>ie(t.installError,`setup-complete`));de(e,{get error(){return o(n)}})}};i(Q,e=>{t.installError&&e(Le)});var Re=_(Q,2),ze=A(Re),Be=_(ze,2),Ve=_(Be,2),He=A(Ve),Ue=e=>{var t=Pn();P(),d(e,t)},We=e=>{d(e,l(`Install`))};i(He,e=>{t.installing?e(Ue):e(We,-1)}),x(Ve),x(Re),h(()=>{r(Ce,o(w)?o(w).name:`Disabled`),r(Ee,o(E)?o(E).name:`Disabled`),Ve.disabled=t.installing}),f(`click`,J,()=>t.ongostepedit(1)),f(`click`,ce,()=>t.ongostepedit(3)),f(`click`,_e,()=>t.ongostepedit(5)),f(`click`,be,()=>t.ongostepedit(4)),f(`click`,je,()=>t.ongostepedit(5)),f(`click`,Ie,()=>t.ongostepedit(2)),f(`click`,ze,()=>B(t.payload)),f(`click`,Be,function(...e){t.onback?.apply(this,e)}),f(`click`,Ve,function(...e){t.oninstall?.apply(this,e)}),d(e,U),M()}u([`click`]);var Ln=t(`<span class="deploy-check"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="var(--color-success)" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"></polyline></svg></span>`),Rn=t(`<span class="deploy-warning"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="#d97706" stroke-width="2.3" stroke-linecap="round" stroke-linejoin="round"><path d="M12 9v4"></path><path d="M12 17h.01"></path><path d="M10.29 3.86 1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path></svg></span>`),zn=t(`<span class="deploy-spinner"><span class="spinner"></span></span>`),Bn=t(`<div class="deploy-service-row"><div class="deploy-service-indicator"><!></div> <div class="deploy-service-info"><span class="deploy-service-name"> </span> <span class="deploy-service-status"> </span></div> <div class="deploy-service-bar"><div></div></div></div>`),Vn=t(`<div id="deploy-failure"><!></div>`),Hn=t(`<li>The OpenPalm Voice image is ~2.4 GB — the largest piece by far. Download speed depends on your internet connection.</li> <li>The wizard waits as long as the download takes. Progress bars below show each service's state.</li>`,1),Un=t(`<li>Container images are being downloaded for the first time.</li>`),Wn=t(`<li>You can leave this window — we'll let you know when it's ready.</li>`),Gn=t(`<li><strong>Keep this tab open while installation runs.</strong></li>`),Kn=t(`<aside class="deploy-tips" id="deploy-tips"><div class="deploy-tips-header"><span class="deploy-tips-kicker">Tips</span> <h3> </h3></div> <ul><!> <li>The admin console will be available once all services are healthy.</li> <!></ul></aside>`),qn=t(`<p class="done-subtitle">Configuration saved. Run 'openpalm start' to start services.</p>`),Jn=t(`<p class="done-close-hint svelte-1orw49v">Setup is complete. You can safely close this tab now.</p>`),Yn=t(`<span class="deploy-svc-name"> </span> <a target="_blank" rel="noopener" class="deploy-svc-link"> </a> <span class="deploy-svc-status">✓ Running</span>`,1),Xn=t(`<span class="deploy-svc-name"> </span> <span class="deploy-svc-status">✓ Running</span>`,1),Zn=t(`<li><!></li>`),Qn=t(`<p class="done-subtitle">Your OpenPalm stack is up and running.</p> <!> <ul class="service-list" id="deploy-service-list"></ul> <div class="done-links"><a class="btn btn-primary">Open Chat</a> <a target="_blank" rel="noopener" class="btn btn-secondary">OpenCode UI</a> <a class="btn btn-secondary">Admin Dashboard</a></div>`,1),$n=t(`<div class="done-state" id="deploy-done"><div class="done-icon"><svg width="48" height="48" viewBox="0 0 24 24" fill="none" stroke="var(--color-success)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg></div> <h2>Setup Complete</h2> <!></div>`),er=t(`<div class="step-actions" id="deploy-error-actions"><button class="btn btn-secondary" id="btn-deploy-back">Back to Review</button> <button class="btn btn-primary" id="btn-deploy-retry">Retry</button></div>`),tr=t(`<div class="deploy-header"><h2 id="deploy-title"> </h2> <p class="step-description" id="deploy-subtitle"> </p></div> <div class="deploy-progress-summary"><div class="deploy-progress-meta"><span class="deploy-progress-label">Progress</span> <span id="deploy-progress-value"><!></span></div> <div class="deploy-progress-bar"><div class="deploy-progress-fill" id="deploy-progress-fill"></div></div></div> <div class="deploy-services" id="deploy-services"></div> <!> <!> <!> <!>`,1);function nr(e,t){T(t,!0);let n=typeof window<`u`&&!!window.openpalm,a=typeof window<`u`&&Number(window.location.port)||3880,c=C(()=>t.deployData.ports?.admin??a),u=C(()=>t.deployData.ports?.assistant??3800),p=C(()=>({assistant:{port:o(u),label:`Assistant (OpenCode)`,path:``},admin:{port:o(c),label:`Admin Dashboard`,path:``}})),g=C(()=>t.deployData.deployStatus??[]),v=C(()=>o(g).length),b=C(()=>o(g).filter(e=>e.status===`running`).length),w=C(()=>o(v)>0?Math.round(o(b)/o(v)*100):0),E=C(()=>t.deployData.phase??`writing-config`),D=C(()=>o(g).some(e=>/^voice(-cuda|-rocm)?$/.test(e.service??``))),O=C(()=>{if(t.deployDone)return`Setup Complete`;if(t.deployError)return`Deployment Issue`;switch(o(E)){case`writing-config`:return`Preparing Configuration…`;case`pulling-images`:return o(D)?`Downloading Images (incl. Voice ~2.4 GB)…`:`Downloading Images…`;case`starting`:return`Starting Services…`;case`starting-voice`:return`Starting Voice Addon…`;case`ready`:return`Setup Complete`}return`Deploying…`}),k=C(()=>{if(t.deployDone)return`Your OpenPalm stack is up and running.`;if(t.deployError)return`Setup could not finish starting the stack.`;switch(o(E)){case`writing-config`:return`Writing config files and validating settings.`;case`pulling-images`:return o(D)?`Downloading container images. The voice model (~2.4 GB) is the largest — on a typical home connection this step can take 10–30 minutes. The wizard will wait — keep this tab open.`:`Downloading container images — first install can take 3–8 minutes depending on connection.`;case`starting`:return`${o(b)} of ${o(v)} services running.`;case`starting-voice`:return`Pulling the voice image (~2.4 GB) and warming up Kokoro + Whisper models. First launch can take 5–30 minutes on slow connections — the wizard will wait.`;case`ready`:return`All services are up.`}return`Writing configuration and starting services.`}),j=C(()=>t.deployDone&&o(g).length===0);var N=tr(),F=s(N),R=A(F),z=A(R,!0);x(R);var B=_(R,2),V=A(B,!0);x(B),x(F);var H=_(F,2),U=A(H),W=_(A(U),2),ee=A(W),te=e=>{d(e,l(`Error`))},ne=e=>{var t=l();h(()=>r(t,o(g).length>0?`100%`:``)),d(e,t)},re=e=>{var t=l();h(()=>r(t,`${o(w)??``}%`)),d(e,t)};i(ee,e=>{t.deployError?e(te):t.deployDone?e(ne,1):e(re,-1)}),x(W),x(U);var G=_(U,2),K=A(G);x(G),x(H);var q=_(H,2);L(q,21,()=>o(g),m,(e,t)=>{var n=Bn(),a=A(n),s=A(a),c=e=>{d(e,Ln())},l=e=>{d(e,Rn())},u=e=>{d(e,zn())};i(s,e=>{o(t).status===`running`?e(c):o(t).status===`error`?e(l,1):e(u,-1)}),x(a);var f=_(a,2),p=A(f),m=A(p,!0);x(p);var g=_(p,2),v=A(g,!0);x(g),x(f);var y=_(f,2),b=A(y);x(y),x(n),h(()=>{r(m,o(t).service||o(t).label||``),r(v,o(t).label||o(t).status),I(b,1,`deploy-bar-fill ${o(t).status===`running`?`complete`:o(t).status===`ready`?`ready`:o(t).status===`error`?`stopped`:`indeterminate`}`)}),d(e,n)}),x(q);var J=_(q,2),ae=e=>{var n=Vn(),r=A(n);{let e=C(()=>ie(t.deployError,`deploy`));de(r,{get error(){return o(e)}})}x(n),d(e,n)};i(J,e=>{t.deployError&&e(ae)});var oe=_(J,2),Y=e=>{var t=Kn(),a=A(t),s=_(A(a),2),c=A(s,!0);x(s),x(a);var l=_(a,2),u=A(l),f=e=>{var t=Hn();P(2),d(e,t)},p=e=>{d(e,Un())};i(u,e=>{o(D)?e(f):e(p,-1)});var m=_(u,4),g=e=>{d(e,Wn())},v=e=>{d(e,Gn())};i(m,e=>{n?e(g):e(v,-1)}),x(l),x(t),h(()=>r(c,o(D)?`First install may take 10–30 minutes`:`First startup takes a few minutes`)),d(e,t)};i(oe,e=>{!t.deployDone&&!t.deployError&&e(Y)});var X=_(oe,2),se=e=>{var t=$n(),a=_(A(t),4),l=e=>{d(e,qn())},f=e=>{var t=Qn(),a=_(s(t),2),l=e=>{d(e,Jn())};i(a,e=>{n||e(l)});var f=_(a,2);L(f,21,()=>o(g),m,(e,t)=>{let n=C(()=>o(t).service||o(t).label||``),a=C(()=>o(p)[o(n)]);var c=Zn(),l=A(c),u=e=>{let t=C(()=>`http://localhost:`+o(a).port+o(a).path);var n=Yn(),i=s(n),c=A(i,!0);x(i);var l=_(i,2),u=A(l,!0);x(l),P(2),h(()=>{r(c,o(a).label),S(l,`href`,o(t)),r(u,o(t))}),d(e,n)},f=e=>{var t=Xn(),i=s(t),a=A(i,!0);x(i),P(2),h(()=>r(a,o(n))),d(e,t)};i(l,e=>{o(a)?e(u):e(f,-1)}),x(c),d(e,c)}),x(f);var v=_(f,2),y=A(v),b=_(y,2),w=_(b,2);x(v),h(()=>{S(y,`href`,`http://localhost:${o(c)??``}/chat`),S(b,`href`,`http://localhost:${o(u)??``}`),S(w,`href`,`http://localhost:${o(c)??``}`)}),d(e,t)};i(a,e=>{o(j)?e(l):e(f,-1)}),x(t),d(e,t)};i(X,e=>{t.deployDone&&e(se)});var ce=_(X,2),le=e=>{var n=er(),r=A(n),i=_(r,2);x(n),f(`click`,r,function(...e){t.onback?.apply(this,e)}),f(`click`,i,function(...e){t.onretry?.apply(this,e)}),d(e,n)};i(ce,e=>{t.deployError&&e(le)}),h(()=>{r(z,o(O)),r(V,o(k)),I(W,1,`deploy-progress-value ${t.deployError?`deploy-progress-value--error`:``}`),y(K,`width:${(t.deployDone&&o(g).length>0?100:t.deployDone?0:o(w))??``}%`)}),d(e,N),M()}u([`click`]);var rr=t(`<link rel="stylesheet" href="/setup/wizard.css"/>`),ir=t(`<div class="rerun-banner"><span>Updating existing installation</span> <a href="/" class="rerun-back-link">← Back to Admin</a></div>`),ar=t(`<section class="step-content" id="step-0" data-testid="step-system-check"><!></section>`),or=t(`<section class="step-content" id="step-1" data-testid="step-welcome"><!></section>`),sr=t(`<div style="text-align:center;padding:48px 0"><div class="loading-state"><span class="spinner"></span> Importing providers from host OpenCode…</div></div>`),cr=t(`<section class="step-content" id="step-2" data-testid="step-capabilities"><!></section>`),lr=t(`<div class="field-warning" role="alert"> </div>`),ur=t(`<section class="step-content" id="step-3" data-testid="step-models"><!> <!></section>`),dr=t(`<section class="step-content" id="step-4" data-testid="step-voice"><!></section>`),fr=t(`<section class="step-content" id="step-5" data-testid="step-options"><!></section>`),pr=t(`<section class="step-content" id="step-6" data-testid="step-review"><!></section>`),mr=t(`<main class="setup-page" aria-label="Setup wizard"><div class="wizard-card"><!> <div class="wizard-header"><div class="hdr-logo">OP</div> <h1>OpenPalm <span class="hdr-suffix"> </span></h1></div> <div class="wizard-body"><!> <!></div></div></main>`);function hr(t,a){T(a,!0);let s=p(0),l=p(0),u=p(!1),f=p(!1),m=p(``),y=p(``),b=p(!1),S=p(!1),w=p(!1),E=p(!1),D=p(g({})),O=p(null),k=p(g([])),N=p(!1),P=p(!1),F=p(g([])),I=p(g({})),L=p(``),B=p(0),H=p(null),U=p(!1),te=p(!1),ne=p(!1),re={},G={},K=g({}),ie=p(``),q=p(``),J=p(g({engine:``})),ae=p(g({engine:``})),Y=p(g([])),X=p(``),se=p(void 0),ce=p(void 0),le=g({discord:{enabled:!1,botToken:``,applicationId:``},slack:{enabled:!1,slackBotToken:``,slackAppToken:``}}),ue=p(!1),de=p(g([])),Z=p(``),fe=p(``),pe=p(!1),me=p(!1),he=p(``),ge=p(``),_e=p(!1),ve=p(g({})),ye=p(!1),be=p(null),xe=null,Se=p(0),Ce=p(null),Te=C(()=>(o(P)?o(F).map(e=>e.id):W.map(e=>e.id)).filter(e=>o(D)[e]?.verified).length),Ee=C(()=>{if(o(P)){let e=o(F).filter(e=>o(D)[e.id]?.verified).map(e=>{let t=o(D)[e.id],n=W.find(t=>t.id===e.id);return{id:e.id,name:e.name??e.id,kind:`cloud`,group:``,order:0,icon:``,desc:``,baseUrl:t?.baseUrl??``,llmModel:n?.llmModel??``,embModel:n?.embModel??``,embDims:n?.embDims??0}}),t=new Set(e.map(e=>e.id)),n=W.filter(e=>!t.has(e.id)&&o(D)[e.id]?.verified).map(e=>{let t=o(D)[e.id];return{id:e.id,name:e.name,kind:e.kind,group:e.group,order:e.order,icon:e.icon,desc:e.desc,baseUrl:t?.baseUrl??e.baseUrl,llmModel:e.llmModel,embModel:e.embModel,embDims:e.embDims}});return[...e,...n]}return W.filter(e=>o(D)[e.id]?.verified)}),De=C(()=>W.some(e=>e.id===`ollama`&&o(D)[e.id]?.verified)),Oe=C(()=>W.some(e=>e.id===`openai`&&o(D)[e.id]?.verified)),Ae=C(()=>o(Oe)?{tts:`openai-tts`,stt:`openai-stt`}:{tts:`browser-tts`,stt:`browser-stt`}),je=C(()=>o(J).engine?o(J):o(w)?{engine:`openpalm-voice`}:{engine:o(Ae).tts}),Me=C(()=>o(ae).engine?o(ae):o(w)?{engine:`openpalm-voice`}:{engine:o(Ae).stt}),Ne=C(()=>o(J).engine?o(J):o(w)?{engine:`openpalm-voice`}:{engine:``}),Pe=C(()=>o(ae).engine?o(ae):o(w)?{engine:`openpalm-voice`}:{engine:``}),Fe=C(()=>{if(!o(X))return``;let e=o(Y).find(e=>e.id===o(X));return e?.label??e?.id??o(X)}),Ie=C(()=>{if(!o(Z))return``;let e=o(de).find(e=>e.id===o(Z));return e?.label??e?.id??o(Z)});function Q(e,t){return`addon.${e}.${t}`}let Le=C(()=>{let e=K.llm,t=K.embedding,n=K.small,r={};e&&(r[e.connId]=!0),t&&(r[t.connId]=!0),n?.model&&(r[n.connId]=!0);let i=o(Ee).filter(e=>r[e.id]).map(e=>{let t=o(D)[e.id];return{id:e.id,name:e.name,provider:e.id,baseUrl:t?.baseUrl??e.baseUrl,apiKey:t?.apiKey??``}}),a=e?.connId??``,s=t?.connId??``,c=i.find(e=>e.id===a),l=i.find(e=>e.id===s),u=c?.provider??``,d=l?.provider??``,f={};o(ue)&&(f.ollama=!0),(o(Ne).engine===`openpalm-voice`||o(Pe).engine===`openpalm-voice`)&&(f.voice=!0);let p={},h=ze();for(let e of Object.keys(h)){let t=h[e];if(t===!0)f[e]=!0;else if(typeof t==`object`&&t){f[e]=!0;let n={};for(let e of Object.keys(t))e!==`enabled`&&t[e]&&(n[e]=String(t[e]));Object.keys(n).length>0&&(p[e]=n)}}let g={version:2,addons:f,security:{uiLoginPassword:o(m)},connections:i};u&&e?.model&&(g.llm={provider:u,model:e.model,baseUrl:c?.baseUrl??``}),d&&t?.model&&(g.embedding={provider:d,model:t.model,dims:t.dims??1536,baseUrl:l?.baseUrl??``});let _=e=>{if(!e.engine||e.engine.startsWith(`skip-`))return;let t={enabled:!0,engine:e.engine};return e.provider&&(t.provider=e.provider),e.baseURL&&(t.baseURL=e.baseURL),e.model&&(t.model=e.model),e.voice&&(t.voice=e.voice),e.language&&(t.language=e.language),t},v=_(o(Ne));v&&(g.tts=v);let y=_(o(Pe));return y&&(g.stt=y),(o(Ne).engine===`openpalm-voice`||o(Pe).engine===`openpalm-voice`)&&o(X)&&(g.voiceProfile=o(X)),o(ue)&&o(Z)&&(g.ollamaProfile=o(Z)),Object.keys(p).length>0&&(g.channelCredentials=p),o(fe).trim()&&(g.imageTag=o(fe).trim()),o(pe)&&(g.hostAkm=!0),g});function Re(){let e=new Uint8Array(16);return crypto.getRandomValues(e),Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(``)}function ze(){let e={};for(let t of ee){let n=le[t.id];if(t.locked)e[t.id]=!0;else if(typeof n==`object`&&n){if(n.enabled){let r={enabled:!0};if(t.credentials)for(let e of t.credentials){let t=n[e.key];t&&(r[e.key]=t)}e[t.id]=r}}else n&&(e[t.id]=!0)}return e}async function Be(){try{let e=await fetch(`/api/setup/voice-profiles`);if(!e.ok)return;let t=await e.json();if(!Array.isArray(t.profiles))return;v(Y,t.profiles,!0);let n=o(E)?t.profiles.find(e=>e.id===Q(`voice`,`cuda`)&&e.available!==!1)??t.profiles.find(e=>e.default&&e.available!==!1)??t.profiles.find(e=>e.available!==!1):t.profiles.find(e=>e.id===Q(`voice`,`cpu`)&&e.available!==!1)??t.profiles.find(e=>e.default&&e.available!==!1)??t.profiles.find(e=>e.available!==!1);if(n&&v(X,n.id,!0),o(E)&&o(X)!==Q(`voice`,`cuda`)){let e=o(Y).find(e=>e.id===Q(`voice`,`cuda`)&&e.available!==!1);e&&v(X,e.id,!0)}}catch{}}async function Ve(){try{let e=await fetch(`/api/setup/ollama-profiles`);if(!e.ok)return;let t=await e.json();if(!Array.isArray(t.profiles))return;v(de,t.profiles,!0);let n=o(E)?t.profiles.find(e=>e.id===Q(`ollama`,`cuda`)&&e.available!==!1)??t.profiles.find(e=>e.default&&e.available!==!1)??t.profiles.find(e=>e.available!==!1):t.profiles.find(e=>e.id===Q(`ollama`,`cpu`)&&e.available!==!1)??t.profiles.find(e=>e.default&&e.available!==!1)??t.profiles.find(e=>e.available!==!1);t.selectedProfile&&typeof t.selectedProfile==`string`?v(Z,t.selectedProfile,!0):n&&v(Z,n.id,!0)}catch{}}function He(){let e={};for(let t of W)e[t.id]={selected:!1,verified:!1,verifying:!1,error:!1,apiKey:``,baseUrl:t.baseUrl??``,models:[],ollamaMode:null};v(D,e,!0)}function Ue(){return o(m).trim().length<8?(v(y,`UI login password must be at least 8 characters.`),!1):(v(y,``),!0)}function We(){v(ue,!0);let e=o(D).ollama;e&&(e.selected=!0,e.verified=!0,e.ollamaMode=`instack`,e.baseUrl=`http://ollama:11434`,e.models.length===0&&(e.models=[`nomic-embed-text`,`qwen3:4b`]));let t=Q(`ollama`,o(E)?`cuda`:`cpu`);v(Z,(o(de).find(e=>e.id===t&&e.available!==!1)??o(de).find(e=>e.available!==!1))?.id??t,!0)}async function Ge(){if(o(Ee).length>=1){We(),tt(),Ze(),$(5);return}if(o(B)>0&&!o(Ot)){v(S,!0),v(Ot,!0);try{let e=await fetch(`/api/setup/import-host`,{method:`POST`});e.ok&&(await e.json()).ok&&o(P)&&await rt()}catch{}v(S,!1)}We(),tt(),Ze(),v(U,!0),$(5)}function Ke(e){if(v(w,e,!0),e&&!o(X)){let e=Q(`voice`,o(E)?`cuda`:`cpu`),t=o(Y).find(t=>t.id===e&&t.available!==!1)??o(Y).find(e=>e.available!==!1);t&&v(X,t.id,!0)}}function qe(e){if(e)We();else{v(ue,!1);let e=o(D).ollama;e&&e.ollamaMode!==`running`&&(e.selected=!1,e.verified=!1)}}function Je(){return o(Ee).length===0?o(U)?(v(ie,``),!0):(v(ie,`Connect at least one provider, or check "Install without an AI provider" on the previous step.`),!1):K.llm?.model?(v(ie,``),!0):(v(ie,`Select a chat model.`),!1)}function Ye(){let e=[];for(let t of ee){if(!t.credentials)continue;let n=le[t.id];if(!(typeof n!=`object`||!n)&&n.enabled)for(let r of t.credentials)r.required&&!String(n[r.key]??``).trim()&&e.push(t.name+`: `+r.label+` is required.`)}return e.length>0?(v(he,e.join(` `),!0),!1):(v(he,``),!0)}function Xe(e){return!(e>o(l))}function $(e){e<0||e>6||e>0&&!o(f)||(v(s,e,!0),e>o(l)&&v(l,e,!0),v(u,!1),e===3&&(tt(),Ze()),e===5&&o(De)&&v(ue,o(D).ollama?.ollamaMode===`instack`),e===2&&o(B)>0&&!o(Ot)&&(v(Ot,!0),jt()))}function Ze(){for(let e of[`llm`,`embedding`,`small`]){if(K[e])continue;let t=Qe(e);if(t.length===0)continue;let n=e===`embedding`&&o(ue)?t.find(e=>e.connId===`ollama`)??t.find(e=>e.isDefault)??t[0]:t.find(e=>e.isDefault)??t[0];K[e]={connId:n.connId,model:n.id,dims:n.dims},e===`embedding`&&n.dims<=0&&v(q,`Unknown embedding model dimensions — set manually in akm config after install.`)}}function Qe(e){let t=[];for(let n of o(Ee)){let r=o(D)[n.id],i=e===`embedding`?n.embModel:n.llmModel,a=r.models.length>0?r.models:[];i&&a.includes(i)&&t.push({id:i,connId:n.id,isDefault:!0,dims:e===`embedding`?V[i]??V[i.replace(/:.*$/,``)]??n.embDims??0:0});for(let r of a){if(r===i)continue;let a=e===`embedding`?V[r]??V[r.replace(/:.*$/,``)]??0:0;t.push({id:r,connId:n.id,isDefault:!1,dims:a})}}if(e===`embedding`&&o(ue)){let e=o(D).ollama;if(e?.verified&&!t.some(e=>e.connId===`ollama`)){let n=`nomic-embed-text`;if(e.models.includes(n)||e.models.length>0){let e=V[n]??768;t.unshift({id:n,connId:`ollama`,isDefault:!1,dims:e})}}}if(e===`embedding`){let e=t.filter(e=>e.isDefault||e.dims>0);if(e.length>0)return e}return t}function $e(e,t){if(!t)return;let n=Qe(e);if(n.length===0)return;let r=t.indexOf(`/`),i=r>0?t.slice(0,r):``,a=r>0?t.slice(r+1):t,o=n.find(e=>e.id===t);if(o)return{connId:o.connId,model:o.id,dims:o.dims};let s=i?n.find(e=>e.connId===i&&e.id===a):void 0;if(s)return{connId:s.connId,model:s.id,dims:s.dims};let c=n.find(e=>e.id===a);if(c)return{connId:c.connId,model:c.id,dims:c.dims}}function et(e){e&&(e.llm&&v(se,e.llm,!0),e.small&&v(ce,e.small,!0),tt())}function tt(){if(o(se)){let e=$e(`llm`,o(se));e&&(K.llm=e)}if(o(ce)){let e=$e(`small`,o(ce));e&&(K.small=e)}}async function nt(){try{let e=await fetch(`/api/setup/opencode/ensure`,{method:`POST`});if(e.ok){let{ok:t}=await e.json();if(t){v(P,!0),await rt();return}}}catch{}try{let e=await fetch(`/api/setup/opencode/status`);e.ok&&(await e.json()).available&&(v(P,!0),await rt())}catch{}}async function rt(){let e=await fetch(`/api/setup/opencode/providers`);if(!e.ok)return;let t=await e.json();if(!t.available||!Array.isArray(t.providers))return;let n=t.providers,r=t.auth??{},i=new Set(Array.isArray(t.connected)?t.connected:[]),a=new Set(n.map(e=>e.id));for(let e of z)a.has(e.id)||n.push(e);v(F,n,!0),v(I,r,!0);let s={...o(D)};for(let e of n){s[e.id]||(s[e.id]={selected:!1,verified:!1,verifying:!1,error:!1,apiKey:``,baseUrl:e.localUrl??``,models:[],ollamaMode:null});let t=Object.keys(e.models??{});t.length>0&&s[e.id].models.length===0&&(s[e.id].models=t),i.has(e.id)&&(s[e.id].verified=!0)}v(D,s,!0),et(t.selectedModels)}async function it(){v(N,!0);try{let e=await fetch(`/api/setup/detect-providers`);if(e.ok){v(k,(await e.json()).providers??[],!0);for(let e of o(k)){if(!e.available)continue;let t=o(D)[e.provider];t&&(t.baseUrl=e.url,t.selected||(t.selected=!0,e.provider===`ollama`&&(t.ollamaMode=`running`)),ot(e.provider))}}}catch{v(k,[],!0)}v(N,!1)}async function at(e,t,n){let r=`/api/setup/models/`+encodeURIComponent(e),i=await fetch(r,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({apiKey:n??``,baseUrl:t??``})}),a=await i.json();if(!i.ok||a.status===`recoverable_error`)throw Error(a.error??`Failed to fetch models (HTTP `+i.status+`)`);return a}async function ot(e){let t=W.find(t=>t.id===e);if(!t)return;let n=o(D)[e];if(!n)return;if(e===`ollama`&&n.ollamaMode===`instack`){n.verified=!0,n.error=!1;return}let r=(re[e]??0)+1;re[e]=r,n.verifying=!0,n.error=!1;let i=(n.baseUrl||t.baseUrl).trim(),a=(n.apiKey??``).trim();try{let t=await at(e,i,a);if(re[e]!==r)return;n.verified=!0,n.error=!1,n.models=t.models??[]}catch(t){if(re[e]!==r)return;n.verified=!1,n.error=!0,n.errorMessage=t instanceof Error?t.message:``,n.models=[]}n.verifying=!1}async function st(e){let t=o(D)[e];if(t?.apiKey){t.verifying=!0,t.error=!1;try{let n=await fetch(`/api/setup/opencode/auth/`+encodeURIComponent(e),{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({type:`api`,key:t.apiKey})});if(!n.ok){let e=await n.json().catch(()=>({}));throw Error(e.message??`Failed to connect (HTTP `+n.status+`)`)}t.verified=!0,t.error=!1}catch(e){t.verified=!1,t.error=!0,t.errorMessage=e instanceof Error?e.message:`Connection failed`}t.verifying=!1}}async function ct(e,t){let n=o(D)[e];if(n){n.verifying=!0,n.error=!1;try{let r=await fetch(`/api/setup/opencode/provider/`+encodeURIComponent(e)+`/oauth/authorize`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({method:t})}),i=await r.json();if(!r.ok)throw Error(i.message??`OAuth failed`);n.oauthPolling=!0,n.oauthUrl=i.url??``,n.oauthInstructions=i.instructions??``,i.url&&i.method===`auto`&&window.open(i.url,`_blank`),await lt(e,t)}catch(e){n.verifying=!1,n.error=!0,n.errorMessage=e instanceof Error?e.message:`OAuth failed`,n.oauthPolling=!1}}}async function lt(e,t){let n=o(D)[e],r=new AbortController;G[e]=r;let i=AbortSignal.timeout(10*6e4),a=AbortSignal.any?AbortSignal.any([r.signal,i]):r.signal;try{let r=await fetch(`/api/setup/opencode/provider/`+encodeURIComponent(e)+`/oauth/callback`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({method:t}),signal:a}),i=await r.json().catch(()=>null);r.ok&&i?.ok?(n.verified=!0,n.error=!1):(n.error=!0,n.errorMessage=i?.message??`Authorization failed`)}catch(e){if(e instanceof Error&&e.name===`AbortError`&&r.signal.aborted)return;e instanceof Error&&e.name===`AbortError`?(n.error=!0,n.errorMessage=`Authorization timed out. Try again.`):(n.error=!0,n.errorMessage=e instanceof Error?e.message:`Authorization failed`)}finally{delete G[e],n.oauthPolling=!1,n.verifying=!1}}async function ut(){if(!o(_e)){if(v(ge,``),v(_e,!0),(o(Ne).engine===`openpalm-voice`||o(Pe).engine===`openpalm-voice`)&&!o(X)){let e=Q(`voice`,o(E)?`cuda`:`cpu`);v(X,(o(Y).find(t=>t.id===e&&t.available!==!1)??o(Y).find(e=>e.id===Q(`voice`,`cpu`)&&e.available!==!1)??o(Y).find(e=>e.available!==!1))?.id??Q(`voice`,`cpu`),!0)}o(ue)&&!o(Z)&&v(Z,Q(`ollama`,o(E)?`cuda`:`cpu`),!0);try{let e=await fetch(`/api/setup/complete`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(o(Le))}),t=await e.json();if(!e.ok||!t.ok){v(ge,t.error??t.message??`Install failed.`,!0),v(_e,!1);return}v(u,!0),dt()}catch(e){v(ge,`Network error: `+(e instanceof Error?e.message:`unable to reach server.`)),v(_e,!1)}}}function dt(){ft(),pt(),xe=setInterval(()=>{pt()},2500)}function ft(){xe&&=(clearInterval(xe),null)}async function pt(){try{let t=await fetch(`/api/setup/deploy-status`);if(!t.ok){e(Se),o(Se)>=5&&(ft(),v(be,`Lost contact with the installer. Services may still be starting in the background.`));return}let n=await t.json();v(Se,0),n.deployStatus&&n.deployStatus.length>0&&v(Ce,n.deployStatus.map(e=>({service:e.service,status:e.status,label:e.label})),!0),v(ve,n,!0),n.deployError?(ft(),v(be,n.deployError,!0)):n.setupComplete&&n.deployStatus&&n.deployStatus.length>0?n.deployStatus.every(e=>e.status===`running`)&&(ft(),v(ye,!0)):n.setupComplete&&!n.deploying&&(!n.deployStatus||n.deployStatus.length===0)&&(ft(),v(ye,!0))}catch(t){e(Se),o(Se)>=5&&(ft(),v(be,t instanceof Error?`Lost contact with the installer: ${t.message}`:`Lost contact with the installer.`,!0))}}function mt(e){let t=o(D)[e];if(t)if(t.selected)v(O,o(O)===e?null:e,!0);else{t.selected=!0,v(O,e,!0);let n=o(k).find(t=>t.provider===e&&t.available);n&&(t.baseUrl=n.url)}}function ht(e){v(O,o(O)===e?null:e,!0)}function gt(e){let t=o(D)[e];t&&(t.selected=!1,t.verified=!1,t.verifying=!1,t.error=!1,t.apiKey=``,t.models=[],e===`ollama`&&(t.ollamaMode=null),o(O)===e&&v(O,null))}function _t(e){let t=o(D)[e];t&&(t.verified=!0,t.error=!1)}function vt(e){if(o(P)){let t=o(D)[e];t&&!t.apiKey?ot(e):st(e)}else ot(e)}function yt(e,t){let n=o(D)[e];n&&(n.apiKey=t)}function bt(e,t){let n=o(D)[e];n&&(n.baseUrl=t)}function xt(e){let t=o(D).ollama;t&&(t.ollamaMode=e)}function St(e){let t=le[e];typeof t==`object`&&t?t.enabled=!t.enabled:le[e]=!t}function Ct(e,t,n){let r=le[e];typeof r==`object`&&r&&(r[t]=n)}function wt(e,t,n,r){K[e]={connId:t,model:n,dims:r},e===`embedding`&&(r<=0||r===void 0)?v(q,`Unknown embedding model dimensions — set manually in akm config after install.`):e===`embedding`&&v(q,``)}function Tt(e){delete K[e]}function Et(){v(_e,!1),v(be,null),v(ye,!1),v(ve,{},!0),v(Ce,null),v(Se,0),ut()}function Dt(){v(_e,!1),v(be,null),v(ye,!1),v(ve,{},!0),v(Se,0),v(Ce,null),v(u,!1),v(s,6)}let Ot=p(!1),kt=p(!1);async function At(){try{let e=await fetch(`/api/setup/host-status`);if(e.ok){let t=await e.json();v(B,Math.max(t.providerCount??0,t.credentialCount??0),!0),t.imageTag&&!o(fe)&&v(fe,t.imageTag,!0),typeof t.hostAkmAvailable==`boolean`&&v(me,t.hostAkmAvailable,!0),v(H,t.warning??null,!0),t.modelPreferences?.model&&v(se,t.modelPreferences.model,!0),t.modelPreferences?.small_model&&v(ce,t.modelPreferences.small_model,!0),o(B)>0&&!o(Ot)&&(o(s)===2||o(Mt))&&(v(Ot,!0),jt())}}catch{}}async function jt(){v(kt,!0);try{let e=await fetch(`/api/setup/import-host`,{method:`POST`});if(e.ok&&(await e.json()).ok){o(P)&&await rt(),tt();for(let e of Object.keys(o(D)))!o(D)[e].verified&&W.some(t=>t.id===e)&&ot(e);v(kt,!1),o(Mt)||$(3);return}}catch{}v(kt,!1)}let Mt=p(!1);j(()=>{He(),v(Mt,new URLSearchParams(window.location.search).get(`rerun`)===`1`),o(Mt)?(v(f,!0),v(l,6),v(m,Re(),!0),fetch(`/api/setup/current-config`).then(e=>e.ok?e.json():null).then(e=>{if(!e)return;if(e.imageTag&&v(fe,e.imageTag,!0),typeof e.hostAkm==`boolean`&&v(pe,e.hostAkm,!0),e.llm?.provider&&e.llm?.model&&(K.llm={connId:e.llm.provider,model:e.llm.model}),e.embedding?.provider&&e.embedding?.model&&(K.embedding={connId:e.embedding.provider,model:e.embedding.model,dims:e.embedding.dims}),e.voice?.tts){let t=e.voice.tts;t.engine?v(J,{...t,engine:t.engine},!0):(v(J,{engine:``},!0),v(te,!0))}if(e.voice?.stt){let t=e.voice.stt;t.engine?v(ae,{...t,engine:t.engine},!0):(v(ae,{engine:``},!0),v(ne,!0))}e.voice?.selectedProfile&&typeof e.voice.selectedProfile==`string`&&v(X,e.voice.selectedProfile,!0);let t=Array.isArray(e.enabledAddons)?e.enabledAddons:[];t.includes(`ollama`)&&v(ue,!0),e.ollama?.selectedProfile&&typeof e.ollama.selectedProfile==`string`&&v(Z,e.ollama.selectedProfile,!0);let n=e.channelCredentials??{};for(let e of[`discord`,`slack`]){let r=le[e];if(typeof r==`object`&&r){t.includes(e)&&(r.enabled=!0);let i=n[e];i&&typeof i==`object`&&Object.assign(r,i)}}}).catch(e=>{console.error(`[setup] failed to load existing config:`,e)})):(v(m,Re(),!0),fetch(`/api/setup/status`).then(e=>e.json()).then(e=>{e.setupComplete&&(window.location.href=`/`)}).catch(e=>{console.error(`[setup] failed to check setup status:`,e)})),fetch(`/api/setup/deploy-status`).then(e=>e.ok?e.json():null).then(e=>{e&&(e.deploying||e.deployError)&&(v(ve,e,!0),v(u,!0),dt())}).catch(e=>{console.error(`[setup] failed to fetch deploy status:`,e)}),At(),Be(),Ve();let e=setTimeout(()=>{v(b,!0)},1e4);nt().then(()=>it()).catch(e=>{console.error(`[setup] provider detection failed:`,e)}).finally(()=>{clearTimeout(e),v(b,!0)})});var Nt=mr();R(`g40i6i`,e=>{var t=rr();n(()=>{c.title=`OpenPalm Setup`}),d(e,t)});var Pt=A(Nt),Ft=A(Pt),Lt=e=>{d(e,ir())};i(Ft,e=>{o(Mt)&&e(Lt)});var Rt=_(Ft,2),zt=_(A(Rt),2),Bt=_(A(zt)),Vt=A(Bt,!0);x(Bt),x(zt),x(Rt);var Ht=_(Rt,2),Ut=A(Ht),Wt=e=>{oe(e,{get currentStep(){return o(s)},get maxVisitedStep(){return o(l)},onnavigate:$,canNavigateTo:Xe})};i(Ut,e=>{o(u)||e(Wt)});var Gt=_(Ut,2),Kt=e=>{nr(e,{get deployData(){return o(ve)},get deployDone(){return o(ye)},get deployError(){return o(be)},onback:Dt,onretry:Et})},qt=e=>{var t=ar();we(A(t),{get isRerun(){return o(Mt)},onpass:()=>{v(f,!0)},onnext:()=>{v(f,!0),$(1)},ongpudetected:e=>{if(v(E,!0),o(Y).length>0&&o(X)!==Q(`voice`,`cuda`)){let e=o(Y).find(e=>e.id===Q(`voice`,`cuda`)&&e.available!==!1);e&&v(X,e.id,!0)}}}),x(t),d(e,t)},Yt=e=>{var t=or();ke(A(t),{get errorMessage(){return o(y)},get detectionReady(){return o(b)},get autoModeImporting(){return o(S)},onnext:()=>{Ue()&&$(2)},onusedefaults:()=>{Ue()&&Ge()}}),x(t),d(e,t)},Xt=e=>{var t=cr(),n=A(t),r=e=>{d(e,sr())},a=e=>{It(e,{get opencodeAvailable(){return o(P)},get opencodeProviders(){return o(F)},get opencodeAuth(){return o(I)},get providerState(){return o(D)},get expandedProvider(){return o(O)},get detectedProviders(){return o(k)},get detecting(){return o(N)},get ocFilterQuery(){return o(L)},get verifiedCount(){return o(Te)},get hostProviderCount(){return o(B)},get hostStatusWarning(){return o(H)},get allowEmptyInstall(){return o(U)},onback:()=>$(1),onnext:()=>$(3),ontogglefallback:mt,ontoggleopencode:ht,onverify:vt,onapikey:yt,onbaseurl:bt,onollamamode:xt,onoauthstart:ct,onoauthcancel:e=>{let t=G[e];t&&(t.abort(),delete G[e]);let n=o(D)[e];n&&(n.oauthPolling=!1,n.verifying=!1)},onmarkready:_t,ondeselect:gt,onfilterchange:e=>v(L,e,!0),onhostimport:()=>void jt(),onallowemptyinstallchange:e=>v(U,e,!0)})};i(n,e=>{o(kt)?e(r):e(a,-1)}),x(t),d(e,t)},Zt=e=>{var t=ur(),n=A(t),a=e=>{var t=lr(),n=A(t,!0);x(t),h(()=>r(n,o(q))),d(e,t)};i(n,e=>{o(q)&&e(a)}),Jt(_(n,2),{get verifiedProviders(){return o(Ee)},get providerState(){return o(D)},get modelSelection(){return K},get errorMessage(){return o(ie)},onback:()=>$(2),onnext:()=>{Je()&&$(4)},onselect:wt,onselectnone:Tt}),x(t),d(e,t)},Qt=e=>{var t=dr();rn(A(t),{get tts(){return o(je)},get stt(){return o(Me)},get hasOpenAI(){return o(Oe)},get unknownTts(){return o(te)},get unknownStt(){return o(ne)},get profiles(){return o(Y)},get selectedVoiceProfile(){return o(X)},onback:()=>$(3),onnext:()=>$(5),onchangetts:e=>{v(J,e,!0),v(te,!1)},onchangestt:e=>{v(ae,e,!0),v(ne,!1)},onprofilechange:e=>{v(X,e,!0)}}),x(t),d(e,t)},$t=e=>{var t=fr();yn(A(t),{get channelSelection(){return le},get imageTag(){return o(fe)},get hostAkmEnabled(){return o(pe)},get hostAkmAvailable(){return o(me)},get enableVoice(){return o(w)},get voiceProfiles(){return o(Y)},get selectedVoiceProfile(){return o(X)},get ollamaEnabled(){return o(ue)},get ollamaProfiles(){return o(de)},get selectedOllamaProfile(){return o(Z)},get errorMessage(){return o(he)},onback:()=>$(4),onnext:()=>{Ye()&&$(6)},onchanneltoggle:St,oncredentialchange:Ct,onimagtagchange:e=>v(fe,e,!0),onhostakmchange:e=>v(pe,e,!0),onenablevoicechange:Ke,onvoiceprofilechange:e=>{v(X,e,!0)},onollamachange:qe,onollamaprofilechange:e=>{v(Z,e,!0)}}),x(t),d(e,t)},en=e=>{var t=pr();In(A(t),{get uiLoginPassword(){return o(m)},get verifiedProviders(){return o(Ee)},get modelSelection(){return K},get activeTts(){return o(Ne).engine},get activeStt(){return o(Pe).engine},get voiceProfileLabel(){return o(Fe)},get ollamaProfileLabel(){return o(Ie)},get channelSelection(){return le},get ollamaEnabled(){return o(ue)},get payload(){return o(Le)},get installError(){return o(ge)},get installing(){return o(_e)},get isRerun(){return o(Mt)},onback:()=>$(5),oninstall:ut,ongostepedit:$}),x(t),d(e,t)};i(Gt,e=>{o(u)?e(Kt):o(s)===0?e(qt,1):o(s)===1?e(Yt,2):o(s)===2?e(Xt,3):o(s)===3?e(Zt,4):o(s)===4?e(Qt,5):o(s)===5?e($t,6):o(s)===6&&e(en,7)}),x(Ht),x(Pt),x(Nt),h(()=>r(Vt,o(Mt)?`Update Settings`:`Setup`)),d(t,Nt),M()}export{hr as component};
|
|
2
|
+
wait for the download to finish before completing.</div>`),Zt=t(`<div class="voice-summary-row svelte-jxtfqg"><span class="voice-summary-label svelte-jxtfqg">Voice Container</span> <span class="voice-summary-value svelte-jxtfqg"> </span></div>`),Qt=t(`<p class="voice-profile-inline-loading svelte-jxtfqg">Checking available hardware profiles…</p>`),$t=t(`<div class="voice-profile-inline svelte-jxtfqg"><div class="voice-profile-inline-title svelte-jxtfqg">Voice container profile</div> <!></div>`),en=t(`<p class="voice-hint svelte-jxtfqg">OpenAI is available. You can use OpenAI TTS/STT or keep browser voice.</p>`),tn=t(`<p class="voice-hint svelte-jxtfqg">Kokoro and Whisper give higher quality. Browser voice works without extra setup.</p>`),nn=t(`<h2>Voice Capabilities</h2> <p class="step-description">Browser voice is ready out of the box — no setup needed.</p> <!> <!> <div id="voice-summary" class="voice-summary svelte-jxtfqg"><div class="voice-summary-row svelte-jxtfqg"><span class="voice-summary-label svelte-jxtfqg">Text-to-Speech</span> <span class="voice-summary-value svelte-jxtfqg"> </span></div> <div class="voice-summary-row svelte-jxtfqg"><span class="voice-summary-label svelte-jxtfqg">Speech-to-Text</span> <span class="voice-summary-value svelte-jxtfqg"> </span></div> <!></div> <!> <details id="voice-configure-details" class="svelte-jxtfqg"><summary class="voice-configure-summary svelte-jxtfqg" id="voice-configure-toggle">Configure voice…</summary> <div id="voice-groups" style="margin-top:12px"><!> <div class="model-group"><div class="model-group-header"><span class="model-group-title">Text-to-Speech</span> <span class="model-group-tag model-group-tag-optional">Optional</span></div> <div class="model-group-desc">How your assistant speaks</div> <!></div> <div class="model-group"><div class="model-group-header"><span class="model-group-title">Speech-to-Text</span> <span class="model-group-tag model-group-tag-optional">Optional</span></div> <div class="model-group-desc">How your assistant hears you</div> <!></div></div></details> <div class="step-actions"><button class="btn btn-secondary" id="btn-step3-back">Back</button> <button class="btn btn-primary" id="btn-step3-next">Continue</button></div>`,1);function rn(e,t){T(t,!0);let n=b(t,`unknownTts`,3,!1),a=b(t,`unknownStt`,3,!1),c=b(t,`profiles`,19,()=>[]),l=b(t,`selectedVoiceProfile`,3,``),u=p(!1),m=C(()=>re.find(e=>e.id===t.tts.engine)?.name??`Browser Built-in`),g=C(()=>H.find(e=>e.id===t.stt.engine)?.name??`Browser Built-in`),y=C(()=>t.tts.engine===`openpalm-voice`||t.stt.engine===`openpalm-voice`),S=C(()=>{if(!l())return``;let e=c().find(e=>e.id===l());return e?.label??e?.id??l()});var w=nn(),E=_(s(w),4),D=e=>{d(e,Yt())};i(E,e=>{(n()||a())&&e(D)});var k=_(E,2),j=e=>{d(e,Xt())};i(k,e=>{o(y)&&e(j)});var N=_(k,2),P=A(N),F=_(A(P),2),I=A(F,!0);x(F),x(P);var L=_(P,2),R=_(A(L),2),z=A(R,!0);x(R),x(L);var B=_(L,2),V=e=>{var t=Zt(),n=_(A(t),2),i=A(n,!0);x(n),x(t),h(()=>r(i,o(S))),d(e,t)};i(B,e=>{o(y)&&o(S)&&e(V)}),x(N);var W=_(N,2),ee=e=>{var n=$t(),r=_(A(n),2),a=e=>{ne(e,{get profiles(){return c()},get selectedProfile(){return l()},get onchange(){return t.onprofilechange},showDescription:!1})},o=e=>{d(e,Qt())};i(r,e=>{c().length>0&&t.onprofilechange?e(a):e(o,-1)}),x(n),d(e,n)};i(W,e=>{o(y)&&e(ee)});var te=_(W,2),G=_(A(te),2),K=A(G),ie=e=>{d(e,en())},q=e=>{d(e,tn())};i(K,e=>{t.hasOpenAI?e(ie):e(q,-1)});var J=_(K,2);U(_(A(J),4),{kind:`tts`,get value(){return t.tts},get onchange(){return t.onchangetts}}),x(J);var ae=_(J,2);U(_(A(ae),4),{kind:`stt`,get value(){return t.stt},get onchange(){return t.onchangestt}}),x(ae),x(G),x(te);var oe=_(te,2),Y=A(oe),X=_(Y,2);x(oe),h(()=>{r(I,o(m)),r(z,o(g))}),O(`open`,`toggle`,te,e=>v(u,e),()=>o(u)),f(`click`,Y,function(...e){t.onback?.apply(this,e)}),f(`click`,X,function(...e){t.onnext?.apply(this,e)}),d(e,w),M()}u([`click`]);function an(e,t,n){if(n)return!0;let r=e[t];return typeof r==`object`&&r?r.enabled:!!r}function on(e,t,n){let r=e[t];return typeof r==`object`&&r?String(r[n]??``):``}var sn=t(`<span class="badge badge-local">Always on</span>`),cn=t(`<div class="toggle-track on locked"><div class="toggle-thumb"></div></div>`),ln=t(`<div><div class="toggle-thumb"></div></div>`),un=t(`<span class="channel-cred-required">*</span>`),dn=t(`<div class="auth-row"><label class="channel-cred-label"> <!></label> <input/></div>`),fn=t(`<div class="pcard-auth"></div>`),pn=t(`<div><div class="toggle-card-header" role="button"><div class="toggle-card-icon"> </div> <div class="toggle-card-info"><div class="toggle-card-name"> <!></div> <div class="toggle-card-desc"> </div></div> <div class="toggle-card-switch"><!></div></div> <!></div>`),mn=t(`<div class="pcard-auth"><!></div>`),hn=t(`<div class="pcard-auth"><!></div>`),gn=t(`<div class="options-section"><h3 class="options-section-title">Share knowledge with my host AKM</h3> <p class="options-section-desc">Adds a source entry to your personal <code>~/.config/akm/config.json</code> and mounts <code>~/akm</code> into the assistant as a secondary source. Your files' ownership is not changed and your primary stash is unchanged — your <code>~/akm</code> data and cache stay yours.</p> <div class="toggle-grid"><div><div class="toggle-card-header" role="button" tabindex="0"><div class="toggle-card-icon">🧠</div> <div class="toggle-card-info"><div class="toggle-card-name">Share knowledge with my host AKM (read + contribute)</div> <div class="toggle-card-desc">The assistant reads your personal knowledge and can contribute back. Each side keeps its own primary stash, database, and cache — only the knowledge files are shared.</div></div> <div class="toggle-card-switch"><div><div class="toggle-thumb"></div></div></div></div></div></div></div>`),_n=t(`<div class="field-error" role="alert"> </div>`),vn=t(`<h2>Options</h2> <p class="step-description">Configure channels and deployment options.</p> <div class="options-section"><h3 class="options-section-title">Channels</h3> <p class="options-section-desc">Additional ways to reach your assistant.</p> <div class="toggle-grid" id="channels-grid"></div></div> <div class="options-section"><h3 class="options-section-title">Add-ons</h3> <p class="options-section-desc">Optional features to extend your assistant.</p> <div class="toggle-grid" id="addons-grid"><div><div class="toggle-card-header" role="button" tabindex="0"><div class="toggle-card-icon">🎙️</div> <div class="toggle-card-info"><div class="toggle-card-name">Voice</div> <div class="toggle-card-desc">Bundled text-to-speech and speech-to-text. Requires a one-time local model download.</div></div> <div class="toggle-card-switch"><div><div class="toggle-thumb"></div></div></div></div> <!></div> <div><div class="toggle-card-header" role="button" tabindex="0"><div class="toggle-card-icon">🦙</div> <div class="toggle-card-info"><div class="toggle-card-name">Ollama</div> <div class="toggle-card-desc">Run local AI models inside the stack. Downloads and serves models via Docker.</div></div> <div class="toggle-card-switch"><div><div class="toggle-thumb"></div></div></div></div> <!></div></div></div> <details id="options-advanced-details" class="svelte-1q1mmx4"><summary class="options-advanced-summary svelte-1q1mmx4" id="options-advanced-toggle">Advanced settings</summary> <div class="options-section"><h3 class="options-section-title">Container Image</h3> <p class="options-section-desc">Tag or version of the OpenPalm images to deploy.</p> <div class="field-group"><label for="image-tag">Image tag</label> <div class="field-hint svelte-1q1mmx4">Advanced — leave blank to use the default.</div> <input id="image-tag" type="text" placeholder="dev"/></div></div> <!></details> <!> <div class="step-actions"><button class="btn btn-secondary" id="btn-step4-back">Back</button> <button class="btn btn-primary" id="btn-step4-next">Review</button></div>`,1);function yn(e,t){T(t,!0);function n(e,n){return an(t.channelSelection,e,n)}function a(e,n){return on(t.channelSelection,e,n)}var c=vn(),l=_(s(c),4),u=_(A(l),4);L(u,21,()=>ee,m,(e,s)=>{let c=C(()=>n(o(s).id,o(s).locked));var l=pn(),u=A(l),p=A(u),g=A(p,!0);x(p);var v=_(p,2),y=A(v),b=A(y),w=_(b),T=e=>{d(e,sn())};i(w,e=>{o(s).locked&&e(T)}),x(y);var E=_(y,2),D=A(E,!0);x(E),x(v);var O=_(v,2),j=A(O),M=e=>{d(e,cn())},N=e=>{var t=ln();h(()=>I(t,1,`toggle-track ${o(c)?`on`:``}`)),d(e,t)};i(j,e=>{o(s).locked?e(M):e(N,-1)}),x(O),x(u);var P=_(u,2),R=e=>{var n=fn();L(n,21,()=>o(s).credentials,m,(e,n)=>{let c=C(()=>o(n).secret===!1?`text`:`password`);var l=dn(),u=A(l),p=A(u),m=_(p),g=e=>{d(e,un())};i(m,e=>{o(n).required&&e(g)}),x(u);var v=_(u,2);F(v),x(l),h(e=>{S(u,`for`,`cred-${o(s).id??``}-${o(n).key??``}`),r(p,`${o(n).label??``} `),S(v,`id`,`cred-${o(s).id??``}-${o(n).key??``}`),S(v,`type`,o(c)),S(v,`placeholder`,o(n).placeholder??``),k(v,e)},[()=>a(o(s).id,o(n).key)]),f(`input`,v,e=>{e.stopPropagation(),t.oncredentialchange(o(s).id,o(n).key,e.currentTarget.value)}),f(`click`,v,e=>e.stopPropagation()),d(e,l)}),x(n),d(e,n)};i(P,e=>{o(s).credentials&&o(c)&&e(R)}),x(l),h(()=>{I(l,1,`toggle-card ${o(c)?`on`:``} ${o(s).locked?`locked`:``} ${o(s).credentials&&o(c)?`wide`:``}`),S(l,`data-channel`,o(s).id),S(u,`tabindex`,o(s).locked?-1:0),r(g,o(s).icon),r(b,`${o(s).name??``} `),r(D,o(s).desc)}),f(`click`,u,()=>{o(s).locked||t.onchanneltoggle(o(s).id)}),f(`keydown`,u,e=>{!o(s).locked&&(e.key===`Enter`||e.key===` `)&&t.onchanneltoggle(o(s).id)}),d(e,l)}),x(u),x(l);var p=_(l,2),g=_(A(p),4),v=A(g),y=A(v),b=_(A(y),4),w=A(b);x(b),x(y);var E=_(y,2),D=e=>{var n=mn();ne(A(n),{get profiles(){return t.voiceProfiles},get selectedProfile(){return t.selectedVoiceProfile},get onchange(){return t.onvoiceprofilechange},showDescription:!1}),x(n),d(e,n)};i(E,e=>{t.enableVoice&&t.voiceProfiles.length>0&&e(D)}),x(v);var O=_(v,2),j=A(O),N=_(A(j),4),P=A(N);x(N),x(j);var R=_(j,2),z=e=>{var n=hn();ne(A(n),{get profiles(){return t.ollamaProfiles},get selectedProfile(){return t.selectedOllamaProfile},get onchange(){return t.onollamaprofilechange},showDescription:!1}),x(n),d(e,n)};i(R,e=>{t.ollamaEnabled&&t.ollamaProfiles.length>0&&e(z)}),x(O),x(g),x(p);var B=_(p,2),V=_(A(B),2),H=_(A(V),4),U=_(A(H),4);F(U),x(H),x(V);var W=_(V,2),te=e=>{var n=gn(),r=_(A(n),4),i=A(r),a=A(i),o=_(A(a),4),s=A(o);x(o),x(a),x(i),x(r),x(n),h(()=>{I(i,1,`toggle-card ${t.hostAkmEnabled?`on`:``}`),I(s,1,`toggle-track ${t.hostAkmEnabled?`on`:``}`)}),f(`click`,a,()=>t.onhostakmchange(!t.hostAkmEnabled)),f(`keydown`,a,e=>{(e.key===`Enter`||e.key===` `)&&t.onhostakmchange(!t.hostAkmEnabled)}),d(e,n)};i(W,e=>{t.hostAkmAvailable&&e(te)}),x(B);var re=_(B,2),G=e=>{var n=_n(),i=A(n,!0);x(n),h(()=>r(i,t.errorMessage)),d(e,n)};i(re,e=>{t.errorMessage&&e(G)});var K=_(re,2),ie=A(K),q=_(ie,2);x(K),h(()=>{I(v,1,`toggle-card ${t.enableVoice?`on`:``} ${t.enableVoice&&t.voiceProfiles.length>0?`wide`:``}`),I(w,1,`toggle-track ${t.enableVoice?`on`:``}`),I(O,1,`toggle-card ${t.ollamaEnabled?`on`:``} ${t.ollamaEnabled&&t.ollamaProfiles.length>0?`wide`:``}`),I(P,1,`toggle-track ${t.ollamaEnabled?`on`:``}`),k(U,t.imageTag)}),f(`click`,y,()=>t.onenablevoicechange(!t.enableVoice)),f(`keydown`,y,e=>{(e.key===`Enter`||e.key===` `)&&t.onenablevoicechange(!t.enableVoice)}),f(`click`,j,()=>t.onollamachange(!t.ollamaEnabled)),f(`keydown`,j,e=>{(e.key===`Enter`||e.key===` `)&&t.onollamachange(!t.ollamaEnabled)}),f(`input`,U,e=>t.onimagtagchange(e.currentTarget.value)),f(`click`,ie,function(...e){t.onback?.apply(this,e)}),f(`click`,q,function(...e){t.onnext?.apply(this,e)}),d(e,c),M()}u([`click`,`keydown`,`input`]);var bn=t(`<div class="review-warning svelte-1q74f52" role="alert">⚠ No AI provider connected — your assistant won't be able to chat until you add one from the dashboard.</div>`),xn=t(`<input class="token-save-input svelte-1q74f52" type="password" readonly=""/>`),Sn=t(`<span class="token-save-box svelte-1q74f52"> </span>`),Cn=t(`<div class="review-row review-row--alert svelte-1q74f52"><span class="review-row-label">UI Login Password</span> <span class="review-row-value"><!></span></div> <div class="review-row review-row--alert svelte-1q74f52"><span class="review-row-label"><span class="token-save-hint svelte-1q74f52">You'll need this to sign in. Also saved in <code class="svelte-1q74f52">stack.env</code>.</span></span> <span class="review-row-value"><button type="button" class="btn btn-secondary btn-sm"> </button></span></div>`,1),wn=t(`<div class="review-row"><span class="review-row-label">UI Login Password</span> <span class="review-row-value"> </span></div>`),Tn=t(`<div class="review-row"><span class="review-row-label">Chat Model</span> <span class="review-row-value"> </span></div>`),En=t(`<div class="review-row"><span class="review-row-label">Small Model</span> <span class="review-row-value"> </span></div>`),Dn=t(`<div class="review-row"><span class="review-row-label">Memory Model</span> <span class="review-row-value"> </span></div> <div class="review-row" style="padding:4px 0"><span class="review-row-label">Embedding Dims</span> <span class="review-row-value"> </span></div>`,1),On=t(`<div class="review-row"><span class="review-row-label" style="padding-left:24px"> </span> <span class="review-row-value"> </span></div>`),kn=t(`<div class="review-row"><span class="review-row-label"> </span> <span class="review-row-value review-row-value-ok">Enabled ✓</span></div> <!>`,1),An=t(`<div class="review-row"><span class="review-row-label">Voice Container</span> <span class="review-row-value"> </span></div>`),jn=t(`<div class="review-row"><span class="review-row-label">Ollama Profile</span> <span class="review-row-value"> </span></div>`),Mn=t(`<div class="review-row"><span class="review-row-label">Ollama In-Stack</span> <span class="review-row-value">Enabled</span></div> <!>`,1),Nn=t(`<div class="review-row"><span class="review-row-label"> </span> <span class="review-row-value review-row-value-ok">Connected ✓</span></div>`),Pn=t(`<span class="spinner"></span> Installing...`,1),Fn=t(`<h2>Review & Install</h2> <p class="step-description">Confirm your settings, then install.</p> <!> <div id="review-summary"><div class="review-card"><div class="review-card-title"><span>Account</span> <button class="review-edit-btn" type="button">Edit</button></div> <!></div> <div class="review-card"><div class="review-card-title"><span>Models</span> <button class="review-edit-btn" type="button">Edit</button></div> <!> <!> <!></div> <div class="review-card"><div class="review-card-title"><span>Channels</span> <button class="review-edit-btn" type="button">Edit</button></div> <!></div> <div class="review-card"><div class="review-card-title"><span>Voice</span> <button class="review-edit-btn" type="button">Edit</button></div> <div class="review-row"><span class="review-row-label">Text-to-Speech</span> <span class="review-row-value"> </span></div> <div class="review-row"><span class="review-row-label">Speech-to-Text</span> <span class="review-row-value"> </span></div> <!></div> <div class="review-card"><div class="review-card-title"><span>Options</span> <button class="review-edit-btn" type="button">Edit</button></div> <!></div> <div class="review-card"><div class="review-card-title"><span>Providers</span> <button class="review-edit-btn" type="button">Edit</button></div> <!></div></div> <!> <div class="step-actions" id="review-actions"><button type="button" class="btn btn-info">Save configuration</button> <button class="btn btn-secondary">Back</button> <button class="btn btn-primary" id="btn-install"><!></button></div>`,1);function In(e,t){T(t,!0);let n=b(t,`voiceProfileLabel`,3,``),c=b(t,`ollamaProfileLabel`,3,``),u=b(t,`isRerun`,3,!1);function g(e){return!e||e.length<8?`(not set)`:e.slice(0,4)+`...`+e.slice(-4)}function y(e,n){return an(t.channelSelection,e,n)}function S(e,n){return on(t.channelSelection,e,n)}let w=C(()=>re.find(e=>e.id===t.activeTts)),E=C(()=>H.find(e=>e.id===t.activeStt)),O=C(()=>ee.filter(e=>y(e.id,e.locked)));function j(e){return W.find(t=>t.id===e)}let I=p(!1),R=p(!1),z=p(null);function B(e){let t=new Blob([JSON.stringify(e,null,2)],{type:`application/json`}),n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=`openpalm-setup.json`,r.click(),URL.revokeObjectURL(n)}async function V(){try{if(navigator.clipboard?.writeText){await navigator.clipboard.writeText(t.uiLoginPassword),v(I,!0),setTimeout(()=>{v(I,!1)},2e3);return}throw Error(`Clipboard API unavailable`)}catch{v(R,!0),o(z)&&(o(z).focus(),o(z).select())}}var U=Fn(),te=_(s(U),4),ne=e=>{d(e,bn())};i(te,e=>{t.verifiedProviders.length===0&&e(ne)});var G=_(te,2),K=A(G),q=A(K),J=_(A(q),2);x(q);var ae=_(q,2),oe=e=>{var n=Cn(),c=s(n),l=_(A(c),2),u=A(l),p=e=>{var n=xn();F(n),N(n,e=>v(z,e),()=>o(z)),h(()=>k(n,t.uiLoginPassword)),a(`focus`,n,e=>e.currentTarget.select()),d(e,n)},m=e=>{var n=Sn(),i=A(n);x(n),h(e=>r(i,`${e??``}*********`),[()=>t.uiLoginPassword.substring(0,2)]),d(e,n)};i(u,e=>{o(R)?e(p):e(m,-1)}),x(l),x(c);var g=_(c,2),y=_(A(g),2),b=A(y),S=A(b,!0);x(b),x(y),x(g),h(()=>r(S,o(I)?`Copied!`:`Copy password`)),f(`click`,b,()=>void V()),d(e,n)},Y=e=>{var n=wn(),i=_(A(n),2),a=A(i,!0);x(i),x(n),h(e=>r(a,e),[()=>g(t.uiLoginPassword)]),d(e,n)};i(ae,e=>{u()?e(Y,-1):e(oe)}),x(K);var X=_(K,2),se=A(X),ce=_(A(se),2);x(se);var le=_(se,2),ue=e=>{let n=C(()=>j(t.modelSelection.llm.connId));var i=Tn(),a=_(A(i),2),s=A(a);x(a),x(i),h(()=>r(s,`${t.modelSelection.llm.model??``}${o(n)?` (`+o(n).name+`)`:``}`)),d(e,i)};i(le,e=>{t.modelSelection.llm&&e(ue)});var Z=_(le,2),fe=e=>{let n=C(()=>j(t.modelSelection.small.connId));var i=En(),a=_(A(i),2),s=A(a);x(a),x(i),h(()=>r(s,`${t.modelSelection.small.model??``}${o(n)?` (`+o(n).name+`)`:``}`)),d(e,i)};i(Z,e=>{t.modelSelection.small?.model&&e(fe)});var pe=_(Z,2),me=e=>{let n=C(()=>j(t.modelSelection.embedding.connId));var i=Dn(),a=s(i),c=_(A(a),2),l=A(c);x(c),x(a);var u=_(a,2),f=_(A(u),2),p=A(f,!0);x(f),x(u),h(()=>{r(l,`${t.modelSelection.embedding.model??``}${o(n)?` (`+o(n).name+`)`:``}`),r(p,t.modelSelection.embedding.dims??1536)}),d(e,i)};i(pe,e=>{t.modelSelection.embedding&&e(me)}),x(X);var he=_(X,2),ge=A(he),_e=_(A(ge),2);x(ge),L(_(ge,2),17,()=>o(O),m,(e,n)=>{var a=kn(),c=s(a),l=A(c),u=A(l);x(l),P(2),x(c);var f=_(c,2),p=e=>{let a=C(()=>t.channelSelection[o(n).id]);var c=D(),l=s(c),u=e=>{var t=D();L(s(t),17,()=>o(n).credentials,m,(e,t)=>{let a=C(()=>S(o(n).id,o(t).key));var c=D(),l=s(c),u=e=>{var n=On(),i=A(n),s=A(i,!0);x(i);var c=_(i,2),l=A(c,!0);x(c),x(n),h(e=>{r(s,o(t).label),r(l,e)},[()=>g(o(a))]),d(e,n)};i(l,e=>{o(a)&&e(u)}),d(e,c)}),d(e,t)};i(l,e=>{typeof o(a)==`object`&&o(a)!==null&&o(a).enabled&&e(u)}),d(e,c)};i(f,e=>{o(n).credentials&&e(p)}),h(()=>r(u,`${o(n).icon??``} ${o(n).name??``}`)),d(e,a)}),x(he);var ve=_(he,2),ye=A(ve),be=_(A(ye),2);x(ye);var xe=_(ye,2),Se=_(A(xe),2),Ce=A(Se,!0);x(Se),x(xe);var we=_(xe,2),Te=_(A(we),2),Ee=A(Te,!0);x(Te),x(we);var De=_(we,2),Oe=e=>{var t=An(),i=_(A(t),2),a=A(i,!0);x(i),x(t),h(()=>r(a,n())),d(e,t)};i(De,e=>{n()&&(t.activeTts===`openpalm-voice`||t.activeStt===`openpalm-voice`)&&e(Oe)}),x(ve);var ke=_(ve,2),Ae=A(ke),je=_(A(Ae),2);x(Ae);var Me=_(Ae,2),Ne=e=>{var t=Mn(),n=_(s(t),2),a=e=>{var t=jn(),n=_(A(t),2),i=A(n,!0);x(n),x(t),h(()=>r(i,c())),d(e,t)};i(n,e=>{c()&&e(a)}),d(e,t)};i(Me,e=>{t.ollamaEnabled&&e(Ne)}),x(ke);var Pe=_(ke,2),Fe=A(Pe),Ie=_(A(Fe),2);x(Fe),L(_(Fe,2),17,()=>t.verifiedProviders,m,(e,t)=>{var n=Nn(),i=A(n),a=A(i);x(i),P(2),x(n),h(()=>r(a,`${o(t).icon??``} ${o(t).name??``}`)),d(e,n)}),x(Pe),x(G);var Q=_(G,2),Le=e=>{{let n=C(()=>ie(t.installError,`setup-complete`));de(e,{get error(){return o(n)}})}};i(Q,e=>{t.installError&&e(Le)});var Re=_(Q,2),ze=A(Re),Be=_(ze,2),Ve=_(Be,2),He=A(Ve),Ue=e=>{var t=Pn();P(),d(e,t)},We=e=>{d(e,l(`Install`))};i(He,e=>{t.installing?e(Ue):e(We,-1)}),x(Ve),x(Re),h(()=>{r(Ce,o(w)?o(w).name:`Disabled`),r(Ee,o(E)?o(E).name:`Disabled`),Ve.disabled=t.installing}),f(`click`,J,()=>t.ongostepedit(1)),f(`click`,ce,()=>t.ongostepedit(3)),f(`click`,_e,()=>t.ongostepedit(5)),f(`click`,be,()=>t.ongostepedit(4)),f(`click`,je,()=>t.ongostepedit(5)),f(`click`,Ie,()=>t.ongostepedit(2)),f(`click`,ze,()=>B(t.payload)),f(`click`,Be,function(...e){t.onback?.apply(this,e)}),f(`click`,Ve,function(...e){t.oninstall?.apply(this,e)}),d(e,U),M()}u([`click`]);var Ln=t(`<span class="deploy-check"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="var(--color-success)" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"></polyline></svg></span>`),Rn=t(`<span class="deploy-warning"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="#d97706" stroke-width="2.3" stroke-linecap="round" stroke-linejoin="round"><path d="M12 9v4"></path><path d="M12 17h.01"></path><path d="M10.29 3.86 1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path></svg></span>`),zn=t(`<span class="deploy-spinner"><span class="spinner"></span></span>`),Bn=t(`<div class="deploy-service-row"><div class="deploy-service-indicator"><!></div> <div class="deploy-service-info"><span class="deploy-service-name"> </span> <span class="deploy-service-status"> </span></div> <div class="deploy-service-bar"><div></div></div></div>`),Vn=t(`<div id="deploy-failure"><!></div>`),Hn=t(`<li>The OpenPalm Voice image is ~2.4 GB — the largest piece by far. Download speed depends on your internet connection.</li> <li>The wizard waits as long as the download takes. Progress bars below show each service's state.</li>`,1),Un=t(`<li>Container images are being downloaded for the first time.</li>`),Wn=t(`<li>You can leave this window — we'll let you know when it's ready.</li>`),Gn=t(`<li><strong>Keep this tab open while installation runs.</strong></li>`),Kn=t(`<aside class="deploy-tips" id="deploy-tips"><div class="deploy-tips-header"><span class="deploy-tips-kicker">Tips</span> <h3> </h3></div> <ul><!> <li>The admin console will be available once all services are healthy.</li> <!></ul></aside>`),qn=t(`<p class="done-subtitle">Configuration saved. Run 'openpalm start' to start services.</p>`),Jn=t(`<p class="done-close-hint svelte-1orw49v">Setup is complete. You can safely close this tab now.</p>`),Yn=t(`<span class="deploy-svc-name"> </span> <a target="_blank" rel="noopener" class="deploy-svc-link"> </a> <span class="deploy-svc-status">✓ Running</span>`,1),Xn=t(`<span class="deploy-svc-name"> </span> <span class="deploy-svc-status">✓ Running</span>`,1),Zn=t(`<li><!></li>`),Qn=t(`<p class="done-subtitle">Your OpenPalm stack is up and running.</p> <!> <ul class="service-list" id="deploy-service-list"></ul> <div class="done-links"><a href="/chat" class="btn btn-primary">Open Chat</a> <a target="_blank" rel="noopener" class="btn btn-secondary">OpenCode UI</a> <a href="/" class="btn btn-secondary">Admin Dashboard</a></div>`,1),$n=t(`<div class="done-state" id="deploy-done"><div class="done-icon"><svg width="48" height="48" viewBox="0 0 24 24" fill="none" stroke="var(--color-success)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg></div> <h2>Setup Complete</h2> <!></div>`),er=t(`<div class="step-actions" id="deploy-error-actions"><button class="btn btn-secondary" id="btn-deploy-back">Back to Review</button> <button class="btn btn-primary" id="btn-deploy-retry">Retry</button></div>`),tr=t(`<div class="deploy-header"><h2 id="deploy-title"> </h2> <p class="step-description" id="deploy-subtitle"> </p></div> <div class="deploy-progress-summary"><div class="deploy-progress-meta"><span class="deploy-progress-label">Progress</span> <span id="deploy-progress-value"><!></span></div> <div class="deploy-progress-bar"><div class="deploy-progress-fill" id="deploy-progress-fill"></div></div></div> <div class="deploy-services" id="deploy-services"></div> <!> <!> <!> <!>`,1);function nr(e,t){T(t,!0);let n=typeof window<`u`&&!!window.openpalm,a=typeof window<`u`&&Number(window.location.port)||3880,c=C(()=>t.deployData.ports?.admin??a),u=C(()=>t.deployData.ports?.assistant??3800),p=C(()=>({assistant:{port:o(u),label:`Assistant (OpenCode)`,path:``},admin:{port:o(c),label:`Admin Dashboard`,path:``}})),g=C(()=>t.deployData.deployStatus??[]),v=C(()=>o(g).length),b=C(()=>o(g).filter(e=>e.status===`running`).length),w=C(()=>o(v)>0?Math.round(o(b)/o(v)*100):0),E=C(()=>t.deployData.phase??`writing-config`),D=C(()=>o(g).some(e=>/^voice(-cuda|-rocm)?$/.test(e.service??``))),O=C(()=>{if(t.deployDone)return`Setup Complete`;if(t.deployError)return`Deployment Issue`;switch(o(E)){case`writing-config`:return`Preparing Configuration…`;case`pulling-images`:return o(D)?`Downloading Images (incl. Voice ~2.4 GB)…`:`Downloading Images…`;case`starting`:return`Starting Services…`;case`starting-voice`:return`Starting Voice Addon…`;case`ready`:return`Setup Complete`}return`Deploying…`}),k=C(()=>{if(t.deployDone)return`Your OpenPalm stack is up and running.`;if(t.deployError)return`Setup could not finish starting the stack.`;switch(o(E)){case`writing-config`:return`Writing config files and validating settings.`;case`pulling-images`:return o(D)?`Downloading container images. The voice model (~2.4 GB) is the largest — on a typical home connection this step can take 10–30 minutes. The wizard will wait — keep this tab open.`:`Downloading container images — first install can take 3–8 minutes depending on connection.`;case`starting`:return`${o(b)} of ${o(v)} services running.`;case`starting-voice`:return`Pulling the voice image (~2.4 GB) and warming up Kokoro + Whisper models. First launch can take 5–30 minutes on slow connections — the wizard will wait.`;case`ready`:return`All services are up.`}return`Writing configuration and starting services.`}),j=C(()=>t.deployDone&&o(g).length===0);var N=tr(),F=s(N),R=A(F),z=A(R,!0);x(R);var B=_(R,2),V=A(B,!0);x(B),x(F);var H=_(F,2),U=A(H),W=_(A(U),2),ee=A(W),te=e=>{d(e,l(`Error`))},ne=e=>{var t=l();h(()=>r(t,o(g).length>0?`100%`:``)),d(e,t)},re=e=>{var t=l();h(()=>r(t,`${o(w)??``}%`)),d(e,t)};i(ee,e=>{t.deployError?e(te):t.deployDone?e(ne,1):e(re,-1)}),x(W),x(U);var G=_(U,2),K=A(G);x(G),x(H);var q=_(H,2);L(q,21,()=>o(g),m,(e,t)=>{var n=Bn(),a=A(n),s=A(a),c=e=>{d(e,Ln())},l=e=>{d(e,Rn())},u=e=>{d(e,zn())};i(s,e=>{o(t).status===`running`?e(c):o(t).status===`error`?e(l,1):e(u,-1)}),x(a);var f=_(a,2),p=A(f),m=A(p,!0);x(p);var g=_(p,2),v=A(g,!0);x(g),x(f);var y=_(f,2),b=A(y);x(y),x(n),h(()=>{r(m,o(t).service||o(t).label||``),r(v,o(t).label||o(t).status),I(b,1,`deploy-bar-fill ${o(t).status===`running`?`complete`:o(t).status===`ready`?`ready`:o(t).status===`error`?`stopped`:`indeterminate`}`)}),d(e,n)}),x(q);var J=_(q,2),ae=e=>{var n=Vn(),r=A(n);{let e=C(()=>ie(t.deployError,`deploy`));de(r,{get error(){return o(e)}})}x(n),d(e,n)};i(J,e=>{t.deployError&&e(ae)});var oe=_(J,2),Y=e=>{var t=Kn(),a=A(t),s=_(A(a),2),c=A(s,!0);x(s),x(a);var l=_(a,2),u=A(l),f=e=>{var t=Hn();P(2),d(e,t)},p=e=>{d(e,Un())};i(u,e=>{o(D)?e(f):e(p,-1)});var m=_(u,4),g=e=>{d(e,Wn())},v=e=>{d(e,Gn())};i(m,e=>{n?e(g):e(v,-1)}),x(l),x(t),h(()=>r(c,o(D)?`First install may take 10–30 minutes`:`First startup takes a few minutes`)),d(e,t)};i(oe,e=>{!t.deployDone&&!t.deployError&&e(Y)});var X=_(oe,2),se=e=>{var t=$n(),a=_(A(t),4),c=e=>{d(e,qn())},l=e=>{var t=Qn(),a=_(s(t),2),c=e=>{d(e,Jn())};i(a,e=>{n||e(c)});var l=_(a,2);L(l,21,()=>o(g),m,(e,t)=>{let n=C(()=>o(t).service||o(t).label||``),a=C(()=>o(p)[o(n)]);var c=Zn(),l=A(c),u=e=>{let t=C(()=>`http://127.0.0.1:`+o(a).port+o(a).path);var n=Yn(),i=s(n),c=A(i,!0);x(i);var l=_(i,2),u=A(l,!0);x(l),P(2),h(()=>{r(c,o(a).label),S(l,`href`,o(t)),r(u,o(t))}),d(e,n)},f=e=>{var t=Xn(),i=s(t),a=A(i,!0);x(i),P(2),h(()=>r(a,o(n))),d(e,t)};i(l,e=>{o(a)?e(u):e(f,-1)}),x(c),d(e,c)}),x(l);var f=_(l,2),v=_(A(f),2);P(2),x(f),h(()=>S(v,`href`,`http://127.0.0.1:${o(u)??``}`)),d(e,t)};i(a,e=>{o(j)?e(c):e(l,-1)}),x(t),d(e,t)};i(X,e=>{t.deployDone&&e(se)});var ce=_(X,2),le=e=>{var n=er(),r=A(n),i=_(r,2);x(n),f(`click`,r,function(...e){t.onback?.apply(this,e)}),f(`click`,i,function(...e){t.onretry?.apply(this,e)}),d(e,n)};i(ce,e=>{t.deployError&&e(le)}),h(()=>{r(z,o(O)),r(V,o(k)),I(W,1,`deploy-progress-value ${t.deployError?`deploy-progress-value--error`:``}`),y(K,`width:${(t.deployDone&&o(g).length>0?100:t.deployDone?0:o(w))??``}%`)}),d(e,N),M()}u([`click`]);var rr=t(`<link rel="stylesheet" href="/setup/wizard.css"/>`),ir=t(`<div class="rerun-banner"><span>Updating existing installation</span> <a href="/" class="rerun-back-link">← Back to Admin</a></div>`),ar=t(`<section class="step-content" id="step-0" data-testid="step-system-check"><!></section>`),or=t(`<section class="step-content" id="step-1" data-testid="step-welcome"><!></section>`),sr=t(`<div style="text-align:center;padding:48px 0"><div class="loading-state"><span class="spinner"></span> Importing providers from host OpenCode…</div></div>`),cr=t(`<section class="step-content" id="step-2" data-testid="step-capabilities"><!></section>`),lr=t(`<div class="field-warning" role="alert"> </div>`),ur=t(`<section class="step-content" id="step-3" data-testid="step-models"><!> <!></section>`),dr=t(`<section class="step-content" id="step-4" data-testid="step-voice"><!></section>`),fr=t(`<section class="step-content" id="step-5" data-testid="step-options"><!></section>`),pr=t(`<section class="step-content" id="step-6" data-testid="step-review"><!></section>`),mr=t(`<main class="setup-page" aria-label="Setup wizard"><div class="wizard-card"><!> <div class="wizard-header"><div class="hdr-logo">OP</div> <h1>OpenPalm <span class="hdr-suffix"> </span></h1></div> <div class="wizard-body"><!> <!></div></div></main>`);function hr(t,a){T(a,!0);let s=p(0),l=p(0),u=p(!1),f=p(!1),m=p(``),y=p(``),b=p(!1),S=p(!1),w=p(!1),E=p(!1),D=p(g({})),O=p(null),k=p(g([])),N=p(!1),P=p(!1),F=p(g([])),I=p(g({})),L=p(``),B=p(0),H=p(null),U=p(!1),te=p(!1),ne=p(!1),re={},G={},K=g({}),ie=p(``),q=p(``),J=p(g({engine:``})),ae=p(g({engine:``})),Y=p(g([])),X=p(``),se=p(void 0),ce=p(void 0),le=g({discord:{enabled:!1,botToken:``,applicationId:``},slack:{enabled:!1,slackBotToken:``,slackAppToken:``}}),ue=p(!1),de=p(g([])),Z=p(``),fe=p(``),pe=p(!1),me=p(!1),he=p(``),ge=p(``),_e=p(!1),ve=p(g({})),ye=p(!1),be=p(null),xe=null,Se=p(0),Ce=p(null),Te=C(()=>(o(P)?o(F).map(e=>e.id):W.map(e=>e.id)).filter(e=>o(D)[e]?.verified).length),Ee=C(()=>{if(o(P)){let e=o(F).filter(e=>o(D)[e.id]?.verified).map(e=>{let t=o(D)[e.id],n=W.find(t=>t.id===e.id);return{id:e.id,name:e.name??e.id,kind:`cloud`,group:``,order:0,icon:``,desc:``,baseUrl:t?.baseUrl??``,llmModel:n?.llmModel??``,embModel:n?.embModel??``,embDims:n?.embDims??0}}),t=new Set(e.map(e=>e.id)),n=W.filter(e=>!t.has(e.id)&&o(D)[e.id]?.verified).map(e=>{let t=o(D)[e.id];return{id:e.id,name:e.name,kind:e.kind,group:e.group,order:e.order,icon:e.icon,desc:e.desc,baseUrl:t?.baseUrl??e.baseUrl,llmModel:e.llmModel,embModel:e.embModel,embDims:e.embDims}});return[...e,...n]}return W.filter(e=>o(D)[e.id]?.verified)}),De=C(()=>W.some(e=>e.id===`ollama`&&o(D)[e.id]?.verified)),Oe=C(()=>W.some(e=>e.id===`openai`&&o(D)[e.id]?.verified)),Ae=C(()=>o(Oe)?{tts:`openai-tts`,stt:`openai-stt`}:{tts:`browser-tts`,stt:`browser-stt`}),je=C(()=>o(J).engine?o(J):o(w)?{engine:`openpalm-voice`}:{engine:o(Ae).tts}),Me=C(()=>o(ae).engine?o(ae):o(w)?{engine:`openpalm-voice`}:{engine:o(Ae).stt}),Ne=C(()=>o(J).engine?o(J):o(w)?{engine:`openpalm-voice`}:{engine:``}),Pe=C(()=>o(ae).engine?o(ae):o(w)?{engine:`openpalm-voice`}:{engine:``}),Fe=C(()=>{if(!o(X))return``;let e=o(Y).find(e=>e.id===o(X));return e?.label??e?.id??o(X)}),Ie=C(()=>{if(!o(Z))return``;let e=o(de).find(e=>e.id===o(Z));return e?.label??e?.id??o(Z)});function Q(e,t){return`addon.${e}.${t}`}let Le=C(()=>{let e=K.llm,t=K.embedding,n=K.small,r={};e&&(r[e.connId]=!0),t&&(r[t.connId]=!0),n?.model&&(r[n.connId]=!0);let i=o(Ee).filter(e=>r[e.id]).map(e=>{let t=o(D)[e.id];return{id:e.id,name:e.name,provider:e.id,baseUrl:t?.baseUrl??e.baseUrl,apiKey:t?.apiKey??``}}),a=e?.connId??``,s=t?.connId??``,c=i.find(e=>e.id===a),l=i.find(e=>e.id===s),u=c?.provider??``,d=l?.provider??``,f={};o(ue)&&(f.ollama=!0),(o(Ne).engine===`openpalm-voice`||o(Pe).engine===`openpalm-voice`)&&(f.voice=!0);let p={},h=ze();for(let e of Object.keys(h)){let t=h[e];if(t===!0)f[e]=!0;else if(typeof t==`object`&&t){f[e]=!0;let n={};for(let e of Object.keys(t))e!==`enabled`&&t[e]&&(n[e]=String(t[e]));Object.keys(n).length>0&&(p[e]=n)}}let g={version:2,addons:f,security:{uiLoginPassword:o(m)},connections:i};u&&e?.model&&(g.llm={provider:u,model:e.model,baseUrl:c?.baseUrl??``}),d&&t?.model&&(g.embedding={provider:d,model:t.model,dims:t.dims??1536,baseUrl:l?.baseUrl??``});let _=e=>{if(!e.engine||e.engine.startsWith(`skip-`))return;let t={enabled:!0,engine:e.engine};return e.provider&&(t.provider=e.provider),e.baseURL&&(t.baseURL=e.baseURL),e.model&&(t.model=e.model),e.voice&&(t.voice=e.voice),e.language&&(t.language=e.language),t},v=_(o(Ne));v&&(g.tts=v);let y=_(o(Pe));return y&&(g.stt=y),(o(Ne).engine===`openpalm-voice`||o(Pe).engine===`openpalm-voice`)&&o(X)&&(g.voiceProfile=o(X)),o(ue)&&o(Z)&&(g.ollamaProfile=o(Z)),Object.keys(p).length>0&&(g.channelCredentials=p),o(fe).trim()&&(g.imageTag=o(fe).trim()),o(pe)&&(g.hostAkm=!0),g});function Re(){let e=new Uint8Array(16);return crypto.getRandomValues(e),Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(``)}function ze(){let e={};for(let t of ee){let n=le[t.id];if(t.locked)e[t.id]=!0;else if(typeof n==`object`&&n){if(n.enabled){let r={enabled:!0};if(t.credentials)for(let e of t.credentials){let t=n[e.key];t&&(r[e.key]=t)}e[t.id]=r}}else n&&(e[t.id]=!0)}return e}async function Be(){try{let e=await fetch(`/api/setup/voice-profiles`);if(!e.ok)return;let t=await e.json();if(!Array.isArray(t.profiles))return;v(Y,t.profiles,!0);let n=o(E)?t.profiles.find(e=>e.id===Q(`voice`,`cuda`)&&e.available!==!1)??t.profiles.find(e=>e.default&&e.available!==!1)??t.profiles.find(e=>e.available!==!1):t.profiles.find(e=>e.id===Q(`voice`,`cpu`)&&e.available!==!1)??t.profiles.find(e=>e.default&&e.available!==!1)??t.profiles.find(e=>e.available!==!1);if(n&&v(X,n.id,!0),o(E)&&o(X)!==Q(`voice`,`cuda`)){let e=o(Y).find(e=>e.id===Q(`voice`,`cuda`)&&e.available!==!1);e&&v(X,e.id,!0)}}catch{}}async function Ve(){try{let e=await fetch(`/api/setup/ollama-profiles`);if(!e.ok)return;let t=await e.json();if(!Array.isArray(t.profiles))return;v(de,t.profiles,!0);let n=o(E)?t.profiles.find(e=>e.id===Q(`ollama`,`cuda`)&&e.available!==!1)??t.profiles.find(e=>e.default&&e.available!==!1)??t.profiles.find(e=>e.available!==!1):t.profiles.find(e=>e.id===Q(`ollama`,`cpu`)&&e.available!==!1)??t.profiles.find(e=>e.default&&e.available!==!1)??t.profiles.find(e=>e.available!==!1);t.selectedProfile&&typeof t.selectedProfile==`string`?v(Z,t.selectedProfile,!0):n&&v(Z,n.id,!0)}catch{}}function He(){let e={};for(let t of W)e[t.id]={selected:!1,verified:!1,verifying:!1,error:!1,apiKey:``,baseUrl:t.baseUrl??``,models:[],ollamaMode:null};v(D,e,!0)}function Ue(){return o(m).trim().length<8?(v(y,`UI login password must be at least 8 characters.`),!1):(v(y,``),!0)}function We(){v(ue,!0);let e=o(D).ollama;e&&(e.selected=!0,e.verified=!0,e.ollamaMode=`instack`,e.baseUrl=`http://ollama:11434`,e.models.length===0&&(e.models=[`nomic-embed-text`,`qwen3:4b`]));let t=Q(`ollama`,o(E)?`cuda`:`cpu`);v(Z,(o(de).find(e=>e.id===t&&e.available!==!1)??o(de).find(e=>e.available!==!1))?.id??t,!0)}async function Ge(){if(o(Ee).length>=1){We(),tt(),Ze(),$(5);return}if(o(B)>0&&!o(Ot)){v(S,!0),v(Ot,!0);try{let e=await fetch(`/api/setup/import-host`,{method:`POST`});e.ok&&(await e.json()).ok&&o(P)&&await rt()}catch{}v(S,!1)}We(),tt(),Ze(),v(U,!0),$(5)}function Ke(e){if(v(w,e,!0),e&&!o(X)){let e=Q(`voice`,o(E)?`cuda`:`cpu`),t=o(Y).find(t=>t.id===e&&t.available!==!1)??o(Y).find(e=>e.available!==!1);t&&v(X,t.id,!0)}}function qe(e){if(e)We();else{v(ue,!1);let e=o(D).ollama;e&&e.ollamaMode!==`running`&&(e.selected=!1,e.verified=!1)}}function Je(){return o(Ee).length===0?o(U)?(v(ie,``),!0):(v(ie,`Connect at least one provider, or check "Install without an AI provider" on the previous step.`),!1):K.llm?.model?(v(ie,``),!0):(v(ie,`Select a chat model.`),!1)}function Ye(){let e=[];for(let t of ee){if(!t.credentials)continue;let n=le[t.id];if(!(typeof n!=`object`||!n)&&n.enabled)for(let r of t.credentials)r.required&&!String(n[r.key]??``).trim()&&e.push(t.name+`: `+r.label+` is required.`)}return e.length>0?(v(he,e.join(` `),!0),!1):(v(he,``),!0)}function Xe(e){return!(e>o(l))}function $(e){e<0||e>6||e>0&&!o(f)||(v(s,e,!0),e>o(l)&&v(l,e,!0),v(u,!1),e===3&&(tt(),Ze()),e===5&&o(De)&&v(ue,o(D).ollama?.ollamaMode===`instack`),e===2&&o(B)>0&&!o(Ot)&&(v(Ot,!0),jt()))}function Ze(){for(let e of[`llm`,`embedding`,`small`]){if(K[e])continue;let t=Qe(e);if(t.length===0)continue;let n=e===`embedding`&&o(ue)?t.find(e=>e.connId===`ollama`)??t.find(e=>e.isDefault)??t[0]:t.find(e=>e.isDefault)??t[0];K[e]={connId:n.connId,model:n.id,dims:n.dims},e===`embedding`&&n.dims<=0&&v(q,`Unknown embedding model dimensions — set manually in akm config after install.`)}}function Qe(e){let t=[];for(let n of o(Ee)){let r=o(D)[n.id],i=e===`embedding`?n.embModel:n.llmModel,a=r.models.length>0?r.models:[];i&&a.includes(i)&&t.push({id:i,connId:n.id,isDefault:!0,dims:e===`embedding`?V[i]??V[i.replace(/:.*$/,``)]??n.embDims??0:0});for(let r of a){if(r===i)continue;let a=e===`embedding`?V[r]??V[r.replace(/:.*$/,``)]??0:0;t.push({id:r,connId:n.id,isDefault:!1,dims:a})}}if(e===`embedding`&&o(ue)){let e=o(D).ollama;if(e?.verified&&!t.some(e=>e.connId===`ollama`)){let n=`nomic-embed-text`;if(e.models.includes(n)||e.models.length>0){let e=V[n]??768;t.unshift({id:n,connId:`ollama`,isDefault:!1,dims:e})}}}if(e===`embedding`){let e=t.filter(e=>e.isDefault||e.dims>0);if(e.length>0)return e}return t}function $e(e,t){if(!t)return;let n=Qe(e);if(n.length===0)return;let r=t.indexOf(`/`),i=r>0?t.slice(0,r):``,a=r>0?t.slice(r+1):t,o=n.find(e=>e.id===t);if(o)return{connId:o.connId,model:o.id,dims:o.dims};let s=i?n.find(e=>e.connId===i&&e.id===a):void 0;if(s)return{connId:s.connId,model:s.id,dims:s.dims};let c=n.find(e=>e.id===a);if(c)return{connId:c.connId,model:c.id,dims:c.dims}}function et(e){e&&(e.llm&&v(se,e.llm,!0),e.small&&v(ce,e.small,!0),tt())}function tt(){if(o(se)){let e=$e(`llm`,o(se));e&&(K.llm=e)}if(o(ce)){let e=$e(`small`,o(ce));e&&(K.small=e)}}async function nt(){try{let e=await fetch(`/api/setup/opencode/ensure`,{method:`POST`});if(e.ok){let{ok:t}=await e.json();if(t){v(P,!0),await rt();return}}}catch{}try{let e=await fetch(`/api/setup/opencode/status`);e.ok&&(await e.json()).available&&(v(P,!0),await rt())}catch{}}async function rt(){let e=await fetch(`/api/setup/opencode/providers`);if(!e.ok)return;let t=await e.json();if(!t.available||!Array.isArray(t.providers))return;let n=t.providers,r=t.auth??{},i=new Set(Array.isArray(t.connected)?t.connected:[]),a=new Set(n.map(e=>e.id));for(let e of z)a.has(e.id)||n.push(e);v(F,n,!0),v(I,r,!0);let s={...o(D)};for(let e of n){s[e.id]||(s[e.id]={selected:!1,verified:!1,verifying:!1,error:!1,apiKey:``,baseUrl:e.localUrl??``,models:[],ollamaMode:null});let t=Object.keys(e.models??{});t.length>0&&s[e.id].models.length===0&&(s[e.id].models=t),i.has(e.id)&&(s[e.id].verified=!0)}v(D,s,!0),et(t.selectedModels)}async function it(){v(N,!0);try{let e=await fetch(`/api/setup/detect-providers`);if(e.ok){v(k,(await e.json()).providers??[],!0);for(let e of o(k)){if(!e.available)continue;let t=o(D)[e.provider];t&&(t.baseUrl=e.url,t.selected||(t.selected=!0,e.provider===`ollama`&&(t.ollamaMode=`running`)),ot(e.provider))}}}catch{v(k,[],!0)}v(N,!1)}async function at(e,t,n){let r=`/api/setup/models/`+encodeURIComponent(e),i=await fetch(r,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({apiKey:n??``,baseUrl:t??``})}),a=await i.json();if(!i.ok||a.status===`recoverable_error`)throw Error(a.error??`Failed to fetch models (HTTP `+i.status+`)`);return a}async function ot(e){let t=W.find(t=>t.id===e);if(!t)return;let n=o(D)[e];if(!n)return;if(e===`ollama`&&n.ollamaMode===`instack`){n.verified=!0,n.error=!1;return}let r=(re[e]??0)+1;re[e]=r,n.verifying=!0,n.error=!1;let i=(n.baseUrl||t.baseUrl).trim(),a=(n.apiKey??``).trim();try{let t=await at(e,i,a);if(re[e]!==r)return;n.verified=!0,n.error=!1,n.models=t.models??[]}catch(t){if(re[e]!==r)return;n.verified=!1,n.error=!0,n.errorMessage=t instanceof Error?t.message:``,n.models=[]}n.verifying=!1}async function st(e){let t=o(D)[e];if(t?.apiKey){t.verifying=!0,t.error=!1;try{let n=await fetch(`/api/setup/opencode/auth/`+encodeURIComponent(e),{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({type:`api`,key:t.apiKey})});if(!n.ok){let e=await n.json().catch(()=>({}));throw Error(e.message??`Failed to connect (HTTP `+n.status+`)`)}t.verified=!0,t.error=!1}catch(e){t.verified=!1,t.error=!0,t.errorMessage=e instanceof Error?e.message:`Connection failed`}t.verifying=!1}}async function ct(e,t){let n=o(D)[e];if(n){n.verifying=!0,n.error=!1;try{let r=await fetch(`/api/setup/opencode/provider/`+encodeURIComponent(e)+`/oauth/authorize`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({method:t})}),i=await r.json();if(!r.ok)throw Error(i.message??`OAuth failed`);n.oauthPolling=!0,n.oauthUrl=i.url??``,n.oauthInstructions=i.instructions??``,i.url&&i.method===`auto`&&window.open(i.url,`_blank`),await lt(e,t)}catch(e){n.verifying=!1,n.error=!0,n.errorMessage=e instanceof Error?e.message:`OAuth failed`,n.oauthPolling=!1}}}async function lt(e,t){let n=o(D)[e],r=new AbortController;G[e]=r;let i=AbortSignal.timeout(10*6e4),a=AbortSignal.any?AbortSignal.any([r.signal,i]):r.signal;try{let r=await fetch(`/api/setup/opencode/provider/`+encodeURIComponent(e)+`/oauth/callback`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({method:t}),signal:a}),i=await r.json().catch(()=>null);r.ok&&i?.ok?(n.verified=!0,n.error=!1):(n.error=!0,n.errorMessage=i?.message??`Authorization failed`)}catch(e){if(e instanceof Error&&e.name===`AbortError`&&r.signal.aborted)return;e instanceof Error&&e.name===`AbortError`?(n.error=!0,n.errorMessage=`Authorization timed out. Try again.`):(n.error=!0,n.errorMessage=e instanceof Error?e.message:`Authorization failed`)}finally{delete G[e],n.oauthPolling=!1,n.verifying=!1}}async function ut(){if(!o(_e)){if(v(ge,``),v(_e,!0),(o(Ne).engine===`openpalm-voice`||o(Pe).engine===`openpalm-voice`)&&!o(X)){let e=Q(`voice`,o(E)?`cuda`:`cpu`);v(X,(o(Y).find(t=>t.id===e&&t.available!==!1)??o(Y).find(e=>e.id===Q(`voice`,`cpu`)&&e.available!==!1)??o(Y).find(e=>e.available!==!1))?.id??Q(`voice`,`cpu`),!0)}o(ue)&&!o(Z)&&v(Z,Q(`ollama`,o(E)?`cuda`:`cpu`),!0);try{let e=await fetch(`/api/setup/complete`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(o(Le))}),t=await e.json();if(!e.ok||!t.ok){v(ge,t.error??t.message??`Install failed.`,!0),v(_e,!1);return}v(u,!0),dt()}catch(e){v(ge,`Network error: `+(e instanceof Error?e.message:`unable to reach server.`)),v(_e,!1)}}}function dt(){ft(),pt(),xe=setInterval(()=>{pt()},2500)}function ft(){xe&&=(clearInterval(xe),null)}async function pt(){try{let t=await fetch(`/api/setup/deploy-status`);if(!t.ok){e(Se),o(Se)>=5&&(ft(),v(be,`Lost contact with the installer. Services may still be starting in the background.`));return}let n=await t.json();v(Se,0),n.deployStatus&&n.deployStatus.length>0&&v(Ce,n.deployStatus.map(e=>({service:e.service,status:e.status,label:e.label})),!0),v(ve,n,!0),n.deployError?(ft(),v(be,n.deployError,!0)):n.setupComplete&&n.deployStatus&&n.deployStatus.length>0?n.deployStatus.every(e=>e.status===`running`)&&(ft(),v(ye,!0)):n.setupComplete&&!n.deploying&&(!n.deployStatus||n.deployStatus.length===0)&&(ft(),v(ye,!0))}catch(t){e(Se),o(Se)>=5&&(ft(),v(be,t instanceof Error?`Lost contact with the installer: ${t.message}`:`Lost contact with the installer.`,!0))}}function mt(e){let t=o(D)[e];if(t)if(t.selected)v(O,o(O)===e?null:e,!0);else{t.selected=!0,v(O,e,!0);let n=o(k).find(t=>t.provider===e&&t.available);n&&(t.baseUrl=n.url)}}function ht(e){v(O,o(O)===e?null:e,!0)}function gt(e){let t=o(D)[e];t&&(t.selected=!1,t.verified=!1,t.verifying=!1,t.error=!1,t.apiKey=``,t.models=[],e===`ollama`&&(t.ollamaMode=null),o(O)===e&&v(O,null))}function _t(e){let t=o(D)[e];t&&(t.verified=!0,t.error=!1)}function vt(e){if(o(P)){let t=o(D)[e];t&&!t.apiKey?ot(e):st(e)}else ot(e)}function yt(e,t){let n=o(D)[e];n&&(n.apiKey=t)}function bt(e,t){let n=o(D)[e];n&&(n.baseUrl=t)}function xt(e){let t=o(D).ollama;t&&(t.ollamaMode=e)}function St(e){let t=le[e];typeof t==`object`&&t?t.enabled=!t.enabled:le[e]=!t}function Ct(e,t,n){let r=le[e];typeof r==`object`&&r&&(r[t]=n)}function wt(e,t,n,r){K[e]={connId:t,model:n,dims:r},e===`embedding`&&(r<=0||r===void 0)?v(q,`Unknown embedding model dimensions — set manually in akm config after install.`):e===`embedding`&&v(q,``)}function Tt(e){delete K[e]}function Et(){v(_e,!1),v(be,null),v(ye,!1),v(ve,{},!0),v(Ce,null),v(Se,0),ut()}function Dt(){v(_e,!1),v(be,null),v(ye,!1),v(ve,{},!0),v(Se,0),v(Ce,null),v(u,!1),v(s,6)}let Ot=p(!1),kt=p(!1);async function At(){try{let e=await fetch(`/api/setup/host-status`);if(e.ok){let t=await e.json();v(B,Math.max(t.providerCount??0,t.credentialCount??0),!0),t.imageTag&&!o(fe)&&v(fe,t.imageTag,!0),typeof t.hostAkmAvailable==`boolean`&&v(me,t.hostAkmAvailable,!0),v(H,t.warning??null,!0),t.modelPreferences?.model&&v(se,t.modelPreferences.model,!0),t.modelPreferences?.small_model&&v(ce,t.modelPreferences.small_model,!0),o(B)>0&&!o(Ot)&&(o(s)===2||o(Mt))&&(v(Ot,!0),jt())}}catch{}}async function jt(){v(kt,!0);try{let e=await fetch(`/api/setup/import-host`,{method:`POST`});if(e.ok&&(await e.json()).ok){o(P)&&await rt(),tt();for(let e of Object.keys(o(D)))!o(D)[e].verified&&W.some(t=>t.id===e)&&ot(e);v(kt,!1),o(Mt)||$(3);return}}catch{}v(kt,!1)}let Mt=p(!1);j(()=>{He(),v(Mt,new URLSearchParams(window.location.search).get(`rerun`)===`1`),o(Mt)?(v(f,!0),v(l,6),v(m,Re(),!0),fetch(`/api/setup/current-config`).then(e=>e.ok?e.json():null).then(e=>{if(!e)return;if(e.imageTag&&v(fe,e.imageTag,!0),typeof e.hostAkm==`boolean`&&v(pe,e.hostAkm,!0),e.llm?.provider&&e.llm?.model&&(K.llm={connId:e.llm.provider,model:e.llm.model}),e.embedding?.provider&&e.embedding?.model&&(K.embedding={connId:e.embedding.provider,model:e.embedding.model,dims:e.embedding.dims}),e.voice?.tts){let t=e.voice.tts;t.engine?v(J,{...t,engine:t.engine},!0):(v(J,{engine:``},!0),v(te,!0))}if(e.voice?.stt){let t=e.voice.stt;t.engine?v(ae,{...t,engine:t.engine},!0):(v(ae,{engine:``},!0),v(ne,!0))}e.voice?.selectedProfile&&typeof e.voice.selectedProfile==`string`&&v(X,e.voice.selectedProfile,!0);let t=Array.isArray(e.enabledAddons)?e.enabledAddons:[];t.includes(`ollama`)&&v(ue,!0),e.ollama?.selectedProfile&&typeof e.ollama.selectedProfile==`string`&&v(Z,e.ollama.selectedProfile,!0);let n=e.channelCredentials??{};for(let e of[`discord`,`slack`]){let r=le[e];if(typeof r==`object`&&r){t.includes(e)&&(r.enabled=!0);let i=n[e];i&&typeof i==`object`&&Object.assign(r,i)}}}).catch(e=>{console.error(`[setup] failed to load existing config:`,e)})):(v(m,Re(),!0),fetch(`/api/setup/status`).then(e=>e.json()).then(e=>{e.setupComplete&&(window.location.href=`/`)}).catch(e=>{console.error(`[setup] failed to check setup status:`,e)})),fetch(`/api/setup/deploy-status`).then(e=>e.ok?e.json():null).then(e=>{e&&(e.deploying||e.deployError)&&(v(ve,e,!0),v(u,!0),dt())}).catch(e=>{console.error(`[setup] failed to fetch deploy status:`,e)}),At(),Be(),Ve();let e=setTimeout(()=>{v(b,!0)},1e4);nt().then(()=>it()).catch(e=>{console.error(`[setup] provider detection failed:`,e)}).finally(()=>{clearTimeout(e),v(b,!0)})});var Nt=mr();R(`g40i6i`,e=>{var t=rr();n(()=>{c.title=`OpenPalm Setup`}),d(e,t)});var Pt=A(Nt),Ft=A(Pt),Lt=e=>{d(e,ir())};i(Ft,e=>{o(Mt)&&e(Lt)});var Rt=_(Ft,2),zt=_(A(Rt),2),Bt=_(A(zt)),Vt=A(Bt,!0);x(Bt),x(zt),x(Rt);var Ht=_(Rt,2),Ut=A(Ht),Wt=e=>{oe(e,{get currentStep(){return o(s)},get maxVisitedStep(){return o(l)},onnavigate:$,canNavigateTo:Xe})};i(Ut,e=>{o(u)||e(Wt)});var Gt=_(Ut,2),Kt=e=>{nr(e,{get deployData(){return o(ve)},get deployDone(){return o(ye)},get deployError(){return o(be)},onback:Dt,onretry:Et})},qt=e=>{var t=ar();we(A(t),{get isRerun(){return o(Mt)},onpass:()=>{v(f,!0)},onnext:()=>{v(f,!0),$(1)},ongpudetected:e=>{if(v(E,!0),o(Y).length>0&&o(X)!==Q(`voice`,`cuda`)){let e=o(Y).find(e=>e.id===Q(`voice`,`cuda`)&&e.available!==!1);e&&v(X,e.id,!0)}}}),x(t),d(e,t)},Yt=e=>{var t=or();ke(A(t),{get errorMessage(){return o(y)},get detectionReady(){return o(b)},get autoModeImporting(){return o(S)},onnext:()=>{Ue()&&$(2)},onusedefaults:()=>{Ue()&&Ge()}}),x(t),d(e,t)},Xt=e=>{var t=cr(),n=A(t),r=e=>{d(e,sr())},a=e=>{It(e,{get opencodeAvailable(){return o(P)},get opencodeProviders(){return o(F)},get opencodeAuth(){return o(I)},get providerState(){return o(D)},get expandedProvider(){return o(O)},get detectedProviders(){return o(k)},get detecting(){return o(N)},get ocFilterQuery(){return o(L)},get verifiedCount(){return o(Te)},get hostProviderCount(){return o(B)},get hostStatusWarning(){return o(H)},get allowEmptyInstall(){return o(U)},onback:()=>$(1),onnext:()=>$(3),ontogglefallback:mt,ontoggleopencode:ht,onverify:vt,onapikey:yt,onbaseurl:bt,onollamamode:xt,onoauthstart:ct,onoauthcancel:e=>{let t=G[e];t&&(t.abort(),delete G[e]);let n=o(D)[e];n&&(n.oauthPolling=!1,n.verifying=!1)},onmarkready:_t,ondeselect:gt,onfilterchange:e=>v(L,e,!0),onhostimport:()=>void jt(),onallowemptyinstallchange:e=>v(U,e,!0)})};i(n,e=>{o(kt)?e(r):e(a,-1)}),x(t),d(e,t)},Zt=e=>{var t=ur(),n=A(t),a=e=>{var t=lr(),n=A(t,!0);x(t),h(()=>r(n,o(q))),d(e,t)};i(n,e=>{o(q)&&e(a)}),Jt(_(n,2),{get verifiedProviders(){return o(Ee)},get providerState(){return o(D)},get modelSelection(){return K},get errorMessage(){return o(ie)},onback:()=>$(2),onnext:()=>{Je()&&$(4)},onselect:wt,onselectnone:Tt}),x(t),d(e,t)},Qt=e=>{var t=dr();rn(A(t),{get tts(){return o(je)},get stt(){return o(Me)},get hasOpenAI(){return o(Oe)},get unknownTts(){return o(te)},get unknownStt(){return o(ne)},get profiles(){return o(Y)},get selectedVoiceProfile(){return o(X)},onback:()=>$(3),onnext:()=>$(5),onchangetts:e=>{v(J,e,!0),v(te,!1)},onchangestt:e=>{v(ae,e,!0),v(ne,!1)},onprofilechange:e=>{v(X,e,!0)}}),x(t),d(e,t)},$t=e=>{var t=fr();yn(A(t),{get channelSelection(){return le},get imageTag(){return o(fe)},get hostAkmEnabled(){return o(pe)},get hostAkmAvailable(){return o(me)},get enableVoice(){return o(w)},get voiceProfiles(){return o(Y)},get selectedVoiceProfile(){return o(X)},get ollamaEnabled(){return o(ue)},get ollamaProfiles(){return o(de)},get selectedOllamaProfile(){return o(Z)},get errorMessage(){return o(he)},onback:()=>$(4),onnext:()=>{Ye()&&$(6)},onchanneltoggle:St,oncredentialchange:Ct,onimagtagchange:e=>v(fe,e,!0),onhostakmchange:e=>v(pe,e,!0),onenablevoicechange:Ke,onvoiceprofilechange:e=>{v(X,e,!0)},onollamachange:qe,onollamaprofilechange:e=>{v(Z,e,!0)}}),x(t),d(e,t)},en=e=>{var t=pr();In(A(t),{get uiLoginPassword(){return o(m)},get verifiedProviders(){return o(Ee)},get modelSelection(){return K},get activeTts(){return o(Ne).engine},get activeStt(){return o(Pe).engine},get voiceProfileLabel(){return o(Fe)},get ollamaProfileLabel(){return o(Ie)},get channelSelection(){return le},get ollamaEnabled(){return o(ue)},get payload(){return o(Le)},get installError(){return o(ge)},get installing(){return o(_e)},get isRerun(){return o(Mt)},onback:()=>$(5),oninstall:ut,ongostepedit:$}),x(t),d(e,t)};i(Gt,e=>{o(u)?e(Kt):o(s)===0?e(qt,1):o(s)===1?e(Yt,2):o(s)===2?e(Xt,3):o(s)===3?e(Zt,4):o(s)===4?e(Qt,5):o(s)===5?e($t,6):o(s)===6&&e(en,7)}),x(Ht),x(Pt),x(Nt),h(()=>r(Vt,o(Mt)?`Update Settings`:`Setup`)),d(t,Nt),M()}export{hr as component};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":"0.11.0-rc.
|
|
1
|
+
{"version":"0.11.0-rc.6"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
�{"version":"0.11.0-rc.
|
|
1
|
+
�{"version":"0.11.0-rc.6"}
|
|
Binary file
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
const index = 1;
|
|
2
|
+
let component_cache;
|
|
3
|
+
const component = async () => component_cache ??= (await import('./error.svelte-BCEnO98F.js')).default;
|
|
4
|
+
const imports = ["_app/immutable/nodes/1.BcYYXdgz.js","_app/immutable/chunks/BwTF6U35.js","_app/immutable/chunks/CJ4t2a2c.js","_app/immutable/chunks/DtQA2RPv.js","_app/immutable/chunks/BuFlayix.js","_app/immutable/chunks/xihTtKlq.js"];
|
|
5
|
+
const stylesheets = [];
|
|
6
|
+
const fonts = [];
|
|
7
|
+
|
|
8
|
+
export { component, fonts, imports, index, stylesheets };
|
|
9
|
+
//# sourceMappingURL=1-DrJ3Bkxz.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"1-
|
|
1
|
+
{"version":3,"file":"1-DrJ3Bkxz.js","sources":["../../../.svelte-kit/adapter-node/nodes/1.js"],"sourcesContent":["\n\nexport const index = 1;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/fallbacks/error.svelte.js')).default;\nexport const imports = [\"_app/immutable/nodes/1.BcYYXdgz.js\",\"_app/immutable/chunks/BwTF6U35.js\",\"_app/immutable/chunks/CJ4t2a2c.js\",\"_app/immutable/chunks/DtQA2RPv.js\",\"_app/immutable/chunks/BuFlayix.js\",\"_app/immutable/chunks/xihTtKlq.js\"];\nexport const stylesheets = [];\nexport const fonts = [];\n"],"names":[],"mappings":"AAEY,MAAC,KAAK,GAAG;AACrB,IAAI,eAAe;AACP,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,4BAAsC,CAAC,EAAE;AACpG,MAAC,OAAO,GAAG,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC;AACpO,MAAC,WAAW,GAAG;AACf,MAAC,KAAK,GAAG;;;;"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
const index = 4;
|
|
2
2
|
let component_cache;
|
|
3
|
-
const component = async () => component_cache ??= (await import('./_page.svelte-
|
|
4
|
-
const imports = ["_app/immutable/nodes/4.
|
|
3
|
+
const component = async () => component_cache ??= (await import('./_page.svelte-CCe0W6d_.js')).default;
|
|
4
|
+
const imports = ["_app/immutable/nodes/4.Cttl54lU.js","_app/immutable/chunks/BwTF6U35.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/D6tVMRB1.js","_app/immutable/chunks/CJ4t2a2c.js","_app/immutable/chunks/DtQA2RPv.js","_app/immutable/chunks/BuFlayix.js","_app/immutable/chunks/DXseS2Vw.js","_app/immutable/chunks/Cb_i8bV9.js"];
|
|
5
5
|
const stylesheets = ["_app/immutable/assets/AuthGate._EJNXKUm.css","_app/immutable/assets/VoiceProfileSelector.Dp7tWdKe.css","_app/immutable/assets/4.D9MwgTDo.css"];
|
|
6
6
|
const fonts = [];
|
|
7
7
|
|
|
8
8
|
export { component, fonts, imports, index, stylesheets };
|
|
9
|
-
//# sourceMappingURL=4-
|
|
9
|
+
//# sourceMappingURL=4-CrmPw4La.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"4-
|
|
1
|
+
{"version":3,"file":"4-CrmPw4La.js","sources":["../../../.svelte-kit/adapter-node/nodes/4.js"],"sourcesContent":["\n\nexport const index = 4;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/admin/_page.svelte.js')).default;\nexport const imports = [\"_app/immutable/nodes/4.Cttl54lU.js\",\"_app/immutable/chunks/BwTF6U35.js\",\"_app/immutable/chunks/xihTtKlq.js\",\"_app/immutable/chunks/D6tVMRB1.js\",\"_app/immutable/chunks/CJ4t2a2c.js\",\"_app/immutable/chunks/DtQA2RPv.js\",\"_app/immutable/chunks/BuFlayix.js\",\"_app/immutable/chunks/DXseS2Vw.js\",\"_app/immutable/chunks/Cb_i8bV9.js\"];\nexport const stylesheets = [\"_app/immutable/assets/AuthGate._EJNXKUm.css\",\"_app/immutable/assets/VoiceProfileSelector.Dp7tWdKe.css\",\"_app/immutable/assets/4.D9MwgTDo.css\"];\nexport const fonts = [];\n"],"names":[],"mappings":"AAEY,MAAC,KAAK,GAAG;AACrB,IAAI,eAAe;AACP,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,4BAAwC,CAAC,EAAE;AACtG,MAAC,OAAO,GAAG,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC;AAChV,MAAC,WAAW,GAAG,CAAC,6CAA6C,CAAC,yDAAyD,CAAC,sCAAsC;AAC9J,MAAC,KAAK,GAAG;;;;"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
const index = 5;
|
|
2
2
|
let component_cache;
|
|
3
|
-
const component = async () => component_cache ??= (await import('./_page.svelte-
|
|
4
|
-
const imports = ["_app/immutable/nodes/5.
|
|
3
|
+
const component = async () => component_cache ??= (await import('./_page.svelte-oqyV-Sbu.js')).default;
|
|
4
|
+
const imports = ["_app/immutable/nodes/5.dN79W272.js","_app/immutable/chunks/BwTF6U35.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/D6tVMRB1.js","_app/immutable/chunks/CJ4t2a2c.js","_app/immutable/chunks/DtQA2RPv.js","_app/immutable/chunks/BuFlayix.js","_app/immutable/chunks/DXseS2Vw.js"];
|
|
5
5
|
const stylesheets = ["_app/immutable/assets/AuthGate._EJNXKUm.css","_app/immutable/assets/5.Cj0Mk9Gn.css"];
|
|
6
6
|
const fonts = [];
|
|
7
7
|
|
|
8
8
|
export { component, fonts, imports, index, stylesheets };
|
|
9
|
-
//# sourceMappingURL=5-
|
|
9
|
+
//# sourceMappingURL=5-CtHPRN1L.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"5-
|
|
1
|
+
{"version":3,"file":"5-CtHPRN1L.js","sources":["../../../.svelte-kit/adapter-node/nodes/5.js"],"sourcesContent":["\n\nexport const index = 5;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/admin/endpoints/_page.svelte.js')).default;\nexport const imports = [\"_app/immutable/nodes/5.dN79W272.js\",\"_app/immutable/chunks/BwTF6U35.js\",\"_app/immutable/chunks/xihTtKlq.js\",\"_app/immutable/chunks/D6tVMRB1.js\",\"_app/immutable/chunks/CJ4t2a2c.js\",\"_app/immutable/chunks/DtQA2RPv.js\",\"_app/immutable/chunks/BuFlayix.js\",\"_app/immutable/chunks/DXseS2Vw.js\"];\nexport const stylesheets = [\"_app/immutable/assets/AuthGate._EJNXKUm.css\",\"_app/immutable/assets/5.Cj0Mk9Gn.css\"];\nexport const fonts = [];\n"],"names":[],"mappings":"AAEY,MAAC,KAAK,GAAG;AACrB,IAAI,eAAe;AACP,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,4BAAkD,CAAC,EAAE;AAChH,MAAC,OAAO,GAAG,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC;AAC5S,MAAC,WAAW,GAAG,CAAC,6CAA6C,CAAC,sCAAsC;AACpG,MAAC,KAAK,GAAG;;;;"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
const index = 6;
|
|
2
2
|
let component_cache;
|
|
3
|
-
const component = async () => component_cache ??= (await import('./_page.svelte-
|
|
4
|
-
const imports = ["_app/immutable/nodes/6.
|
|
3
|
+
const component = async () => component_cache ??= (await import('./_page.svelte-0LBL-kWB.js')).default;
|
|
4
|
+
const imports = ["_app/immutable/nodes/6.CyAbk8Zx.js","_app/immutable/chunks/BwTF6U35.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/D6tVMRB1.js","_app/immutable/chunks/CJ4t2a2c.js","_app/immutable/chunks/DtQA2RPv.js","_app/immutable/chunks/BuFlayix.js","_app/immutable/chunks/DXseS2Vw.js"];
|
|
5
5
|
const stylesheets = ["_app/immutable/assets/AuthGate._EJNXKUm.css","_app/immutable/assets/6.DJenXolA.css"];
|
|
6
6
|
const fonts = [];
|
|
7
7
|
|
|
8
8
|
export { component, fonts, imports, index, stylesheets };
|
|
9
|
-
//# sourceMappingURL=6-
|
|
9
|
+
//# sourceMappingURL=6-CO8aswdn.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"6-
|
|
1
|
+
{"version":3,"file":"6-CO8aswdn.js","sources":["../../../.svelte-kit/adapter-node/nodes/6.js"],"sourcesContent":["\n\nexport const index = 6;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/advanced/_page.svelte.js')).default;\nexport const imports = [\"_app/immutable/nodes/6.CyAbk8Zx.js\",\"_app/immutable/chunks/BwTF6U35.js\",\"_app/immutable/chunks/xihTtKlq.js\",\"_app/immutable/chunks/D6tVMRB1.js\",\"_app/immutable/chunks/CJ4t2a2c.js\",\"_app/immutable/chunks/DtQA2RPv.js\",\"_app/immutable/chunks/BuFlayix.js\",\"_app/immutable/chunks/DXseS2Vw.js\"];\nexport const stylesheets = [\"_app/immutable/assets/AuthGate._EJNXKUm.css\",\"_app/immutable/assets/6.DJenXolA.css\"];\nexport const fonts = [];\n"],"names":[],"mappings":"AAEY,MAAC,KAAK,GAAG;AACrB,IAAI,eAAe;AACP,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,4BAA2C,CAAC,EAAE;AACzG,MAAC,OAAO,GAAG,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC;AAC5S,MAAC,WAAW,GAAG,CAAC,6CAA6C,CAAC,sCAAsC;AACpG,MAAC,KAAK,GAAG;;;;"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
const index = 7;
|
|
2
2
|
let component_cache;
|
|
3
|
-
const component = async () => component_cache ??= (await import('./_page.svelte-
|
|
4
|
-
const imports = ["_app/immutable/nodes/7.
|
|
3
|
+
const component = async () => component_cache ??= (await import('./_page.svelte-Cj-Ei5f0.js')).default;
|
|
4
|
+
const imports = ["_app/immutable/nodes/7.BiwhNQmS.js","_app/immutable/chunks/BwTF6U35.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/D6tVMRB1.js","_app/immutable/chunks/CJ4t2a2c.js","_app/immutable/chunks/DtQA2RPv.js","_app/immutable/chunks/BuFlayix.js","_app/immutable/chunks/DXseS2Vw.js"];
|
|
5
5
|
const stylesheets = ["_app/immutable/assets/AuthGate._EJNXKUm.css","_app/immutable/assets/7.BimnqtTb.css"];
|
|
6
6
|
const fonts = [];
|
|
7
7
|
|
|
8
8
|
export { component, fonts, imports, index, stylesheets };
|
|
9
|
-
//# sourceMappingURL=7-
|
|
9
|
+
//# sourceMappingURL=7-hc1cB6hI.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"7-
|
|
1
|
+
{"version":3,"file":"7-hc1cB6hI.js","sources":["../../../.svelte-kit/adapter-node/nodes/7.js"],"sourcesContent":["\n\nexport const index = 7;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/chat/_page.svelte.js')).default;\nexport const imports = [\"_app/immutable/nodes/7.BiwhNQmS.js\",\"_app/immutable/chunks/BwTF6U35.js\",\"_app/immutable/chunks/xihTtKlq.js\",\"_app/immutable/chunks/D6tVMRB1.js\",\"_app/immutable/chunks/CJ4t2a2c.js\",\"_app/immutable/chunks/DtQA2RPv.js\",\"_app/immutable/chunks/BuFlayix.js\",\"_app/immutable/chunks/DXseS2Vw.js\"];\nexport const stylesheets = [\"_app/immutable/assets/AuthGate._EJNXKUm.css\",\"_app/immutable/assets/7.BimnqtTb.css\"];\nexport const fonts = [];\n"],"names":[],"mappings":"AAEY,MAAC,KAAK,GAAG;AACrB,IAAI,eAAe;AACP,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,4BAAuC,CAAC,EAAE;AACrG,MAAC,OAAO,GAAG,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC;AAC5S,MAAC,WAAW,GAAG,CAAC,6CAA6C,CAAC,sCAAsC;AACpG,MAAC,KAAK,GAAG;;;;"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
const index = 8;
|
|
2
2
|
let component_cache;
|
|
3
3
|
const component = async () => component_cache ??= (await import('./_page.svelte-D0gMlmzQ.js')).default;
|
|
4
|
-
const imports = ["_app/immutable/nodes/8.
|
|
4
|
+
const imports = ["_app/immutable/nodes/8.DNsQWKjK.js","_app/immutable/chunks/BwTF6U35.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/Cb_i8bV9.js"];
|
|
5
5
|
const stylesheets = ["_app/immutable/assets/VoiceProfileSelector.Dp7tWdKe.css","_app/immutable/assets/8.DjrHy5wu.css"];
|
|
6
6
|
const fonts = [];
|
|
7
7
|
|
|
8
8
|
export { component, fonts, imports, index, stylesheets };
|
|
9
|
-
//# sourceMappingURL=8-
|
|
9
|
+
//# sourceMappingURL=8-b9MOJ1zI.js.map
|