@openpalm/ui 0.11.0-rc.2 → 0.11.0-rc.4
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/README.md +50 -19
- package/build/.openpalm-ui-version +1 -1
- package/build/client/_app/immutable/assets/0.BoT18krG.css +1 -0
- package/build/client/_app/immutable/assets/0.BoT18krG.css.br +0 -0
- package/build/client/_app/immutable/assets/0.BoT18krG.css.gz +0 -0
- package/build/client/_app/immutable/assets/{7.BHUsSUvX.css → 7.BimnqtTb.css} +1 -1
- package/build/client/_app/immutable/assets/7.BimnqtTb.css.br +0 -0
- package/build/client/_app/immutable/assets/7.BimnqtTb.css.gz +0 -0
- package/build/client/_app/immutable/assets/AuthGate._EJNXKUm.css +1 -0
- package/build/client/_app/immutable/assets/AuthGate._EJNXKUm.css.br +0 -0
- package/build/client/_app/immutable/assets/AuthGate._EJNXKUm.css.gz +0 -0
- package/build/client/_app/immutable/chunks/CmvkId2p.js +1 -0
- 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 +5 -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/{CzXGhlNF.js → DTwNbG18.js} +1 -1
- package/build/client/_app/immutable/chunks/DTwNbG18.js.br +2 -0
- package/build/client/_app/immutable/chunks/DTwNbG18.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DXseS2Vw.js +1 -0
- package/build/client/_app/immutable/chunks/DXseS2Vw.js.br +0 -0
- package/build/client/_app/immutable/chunks/DXseS2Vw.js.gz +0 -0
- package/build/client/_app/immutable/entry/{app.C_eSlUyi.js → app.D2QrHH7_.js} +2 -2
- 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 +1 -0
- 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/0.C-6HAZZl.js +1 -0
- package/build/client/_app/immutable/nodes/0.C-6HAZZl.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.C-6HAZZl.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{1.qjZsjpWC.js → 1.vc1gswpN.js} +1 -1
- 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 +19 -0
- package/build/client/_app/immutable/nodes/4.DD0APCkW.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.DD0APCkW.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{5.ChSoAFFd.js → 5.BIkQUR1G.js} +1 -1
- 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.BRG0vYmH.js → 6.DVDakR8k.js} +1 -1
- 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.BVvy1f_p.js → 7.wMxDFXAt.js} +1 -1
- 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/version.json +1 -1
- package/build/client/_app/version.json.br +0 -0
- package/build/client/_app/version.json.gz +0 -0
- package/build/server/chunks/{0-Dk6RRhi2.js → 0-BSfigTUQ.js} +4 -4
- package/build/server/chunks/{0-Dk6RRhi2.js.map → 0-BSfigTUQ.js.map} +1 -1
- package/build/server/chunks/1-BwC-cEPZ.js +9 -0
- package/build/server/chunks/{1-CWcY3PRs.js.map → 1-BwC-cEPZ.js.map} +1 -1
- package/build/server/chunks/4-BHTk326s.js +9 -0
- package/build/server/chunks/{4-DeAt_mYc.js.map → 4-BHTk326s.js.map} +1 -1
- package/build/server/chunks/5-BZDwO3BH.js +9 -0
- package/build/server/chunks/{5-qTXiNPEM.js.map → 5-BZDwO3BH.js.map} +1 -1
- package/build/server/chunks/6-DtvUY6SF.js +9 -0
- package/build/server/chunks/{6-C444Mr69.js.map → 6-DtvUY6SF.js.map} +1 -1
- package/build/server/chunks/7-C9TeiPbc.js +9 -0
- package/build/server/chunks/{7-Dg_sVly5.js.map → 7-C9TeiPbc.js.map} +1 -1
- package/build/server/chunks/{AuthGate-keg7G6rX.js → AuthGate-CdtQ21Tn.js} +34 -7
- package/build/server/chunks/AuthGate-CdtQ21Tn.js.map +1 -0
- package/build/server/chunks/{_layout.svelte-BNWepgTx.js → _layout.svelte-CWc5uRoo.js} +11 -9
- package/build/server/chunks/{_layout.svelte-BNWepgTx.js.map → _layout.svelte-CWc5uRoo.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-BdYSYjmj.js → _page.svelte-2puUmKay.js} +5 -6
- package/build/server/chunks/{_page.svelte-BdYSYjmj.js.map → _page.svelte-2puUmKay.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-CtX_8pMq.js → _page.svelte-Cb3M2n38.js} +5 -6
- package/build/server/chunks/{_page.svelte-CtX_8pMq.js.map → _page.svelte-Cb3M2n38.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-DwMiUmq6.js → _page.svelte-DYWY35Zz.js} +5 -6
- package/build/server/chunks/{_page.svelte-DwMiUmq6.js.map → _page.svelte-DYWY35Zz.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-BiKY57wg.js → _page.svelte-DkYHUL4U.js} +31 -18
- package/build/server/chunks/_page.svelte-DkYHUL4U.js.map +1 -0
- package/build/server/chunks/{_server.ts-Br16AqpO.js → _server.ts-31Ih8YM7.js} +6 -6
- package/build/server/chunks/{_server.ts-Br16AqpO.js.map → _server.ts-31Ih8YM7.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BDBJ6fxs.js → _server.ts-7SYeoL8H.js} +4 -4
- package/build/server/chunks/{_server.ts-BDBJ6fxs.js.map → _server.ts-7SYeoL8H.js.map} +1 -1
- package/build/server/chunks/{_server.ts-uWfb47S6.js → _server.ts-7YQtir-c.js} +6 -6
- package/build/server/chunks/{_server.ts-uWfb47S6.js.map → _server.ts-7YQtir-c.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CXzZeGlQ.js → _server.ts-B4-U2IgV.js} +4 -4
- package/build/server/chunks/{_server.ts-CXzZeGlQ.js.map → _server.ts-B4-U2IgV.js.map} +1 -1
- package/build/server/chunks/{_server.ts-bAJXjaCc.js → _server.ts-B5ewU2jA.js} +4 -4
- package/build/server/chunks/{_server.ts-bAJXjaCc.js.map → _server.ts-B5ewU2jA.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CDlWxA5S.js → _server.ts-B7hqA-QH.js} +4 -4
- package/build/server/chunks/{_server.ts-CDlWxA5S.js.map → _server.ts-B7hqA-QH.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DQxY-pHZ.js → _server.ts-BHy1FIWT.js} +4 -4
- package/build/server/chunks/{_server.ts-DQxY-pHZ.js.map → _server.ts-BHy1FIWT.js.map} +1 -1
- package/build/server/chunks/{_server.ts-C7rtn3mH.js → _server.ts-BIRnkRp-.js} +4 -4
- package/build/server/chunks/{_server.ts-C7rtn3mH.js.map → _server.ts-BIRnkRp-.js.map} +1 -1
- package/build/server/chunks/{_server.ts-5Q0J3F4-.js → _server.ts-BN0-6jX7.js} +4 -4
- package/build/server/chunks/{_server.ts-5Q0J3F4-.js.map → _server.ts-BN0-6jX7.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Dbly1Fe-.js → _server.ts-BNHq_0XB.js} +5 -5
- package/build/server/chunks/{_server.ts-Dbly1Fe-.js.map → _server.ts-BNHq_0XB.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CGqrfNlv.js → _server.ts-BOcqQDtZ.js} +4 -4
- package/build/server/chunks/{_server.ts-CGqrfNlv.js.map → _server.ts-BOcqQDtZ.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DwjjO7L5.js → _server.ts-BPbPm6_H.js} +4 -4
- package/build/server/chunks/{_server.ts-DwjjO7L5.js.map → _server.ts-BPbPm6_H.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DHXmcRrP.js → _server.ts-BUzhYY5b.js} +4 -4
- package/build/server/chunks/{_server.ts-DHXmcRrP.js.map → _server.ts-BUzhYY5b.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DyEbcQS0.js → _server.ts-BajIVU3T.js} +4 -4
- package/build/server/chunks/{_server.ts-DyEbcQS0.js.map → _server.ts-BajIVU3T.js.map} +1 -1
- package/build/server/chunks/{_server.ts-D-UAqhor.js → _server.ts-BdqgSniA.js} +4 -4
- package/build/server/chunks/{_server.ts-D-UAqhor.js.map → _server.ts-BdqgSniA.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DXNJ2LJu.js → _server.ts-BheY_Hpx.js} +4 -4
- package/build/server/chunks/{_server.ts-DXNJ2LJu.js.map → _server.ts-BheY_Hpx.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BV-6Mum8.js → _server.ts-BnsyzAfd.js} +4 -4
- package/build/server/chunks/{_server.ts-BV-6Mum8.js.map → _server.ts-BnsyzAfd.js.map} +1 -1
- package/build/server/chunks/{_server.ts-C88qd-ju.js → _server.ts-Br304l_4.js} +3 -3
- package/build/server/chunks/{_server.ts-C88qd-ju.js.map → _server.ts-Br304l_4.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BjiyoKWK.js → _server.ts-Broe0WRV.js} +4 -4
- package/build/server/chunks/{_server.ts-BjiyoKWK.js.map → _server.ts-Broe0WRV.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Di-8UJYw.js → _server.ts-BwNngfUJ.js} +4 -4
- package/build/server/chunks/{_server.ts-Di-8UJYw.js.map → _server.ts-BwNngfUJ.js.map} +1 -1
- package/build/server/chunks/{_server.ts-D33gvU5B.js → _server.ts-Bz5eysrP.js} +5 -5
- package/build/server/chunks/{_server.ts-D33gvU5B.js.map → _server.ts-Bz5eysrP.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BiSuK8jN.js → _server.ts-C4qYb4T-.js} +2 -2
- package/build/server/chunks/{_server.ts-BiSuK8jN.js.map → _server.ts-C4qYb4T-.js.map} +1 -1
- package/build/server/chunks/{_server.ts-WbY7XmtT.js → _server.ts-C6WJsZ0G.js} +6 -6
- package/build/server/chunks/{_server.ts-WbY7XmtT.js.map → _server.ts-C6WJsZ0G.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Bq2dkWvj.js → _server.ts-CBKtVzEl.js} +4 -4
- package/build/server/chunks/{_server.ts-Bq2dkWvj.js.map → _server.ts-CBKtVzEl.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BudQlGOx.js → _server.ts-CCMxf_7S.js} +4 -4
- package/build/server/chunks/{_server.ts-BudQlGOx.js.map → _server.ts-CCMxf_7S.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Ci-q0BiD.js → _server.ts-CD9ePvQZ.js} +4 -4
- package/build/server/chunks/{_server.ts-Ci-q0BiD.js.map → _server.ts-CD9ePvQZ.js.map} +1 -1
- package/build/server/chunks/{_server.ts-C_kseo_y.js → _server.ts-CED6YvVP.js} +4 -4
- package/build/server/chunks/{_server.ts-C_kseo_y.js.map → _server.ts-CED6YvVP.js.map} +1 -1
- package/build/server/chunks/{_server.ts-AQe1PIYE.js → _server.ts-CHxBpqNs.js} +4 -4
- package/build/server/chunks/{_server.ts-AQe1PIYE.js.map → _server.ts-CHxBpqNs.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BM4QuGQf.js → _server.ts-CJa40B0Z.js} +4 -4
- package/build/server/chunks/{_server.ts-BM4QuGQf.js.map → _server.ts-CJa40B0Z.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BsZrddQT.js → _server.ts-CLzZwKQq.js} +6 -6
- package/build/server/chunks/{_server.ts-BsZrddQT.js.map → _server.ts-CLzZwKQq.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Cbk-UThV.js → _server.ts-CZVFChDK.js} +5 -5
- package/build/server/chunks/{_server.ts-Cbk-UThV.js.map → _server.ts-CZVFChDK.js.map} +1 -1
- package/build/server/chunks/{_server.ts-HxcM6xQA.js → _server.ts-CaHJSZZ1.js} +4 -4
- package/build/server/chunks/{_server.ts-HxcM6xQA.js.map → _server.ts-CaHJSZZ1.js.map} +1 -1
- package/build/server/chunks/{_server.ts-l_HoZ2_I.js → _server.ts-Cc4BIEOJ.js} +4 -4
- package/build/server/chunks/{_server.ts-l_HoZ2_I.js.map → _server.ts-Cc4BIEOJ.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CGwYZUuw.js → _server.ts-Cct9ZWnS.js} +4 -4
- package/build/server/chunks/{_server.ts-CGwYZUuw.js.map → _server.ts-Cct9ZWnS.js.map} +1 -1
- package/build/server/chunks/{_server.ts-JItoNB1Z.js → _server.ts-CmcnDpcq.js} +5 -6
- package/build/server/chunks/_server.ts-CmcnDpcq.js.map +1 -0
- package/build/server/chunks/{_server.ts-DDwiNChJ.js → _server.ts-CoCYLLcy.js} +4 -4
- package/build/server/chunks/{_server.ts-DDwiNChJ.js.map → _server.ts-CoCYLLcy.js.map} +1 -1
- package/build/server/chunks/{_server.ts-hMTx0DC3.js → _server.ts-CsB6omUv.js} +4 -4
- package/build/server/chunks/{_server.ts-hMTx0DC3.js.map → _server.ts-CsB6omUv.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CMEY6oQe.js → _server.ts-CuVTkFXh.js} +4 -4
- package/build/server/chunks/{_server.ts-CMEY6oQe.js.map → _server.ts-CuVTkFXh.js.map} +1 -1
- package/build/server/chunks/{_server.ts-B0N2Nj7L.js → _server.ts-CzmHtvBP.js} +4 -4
- package/build/server/chunks/{_server.ts-B0N2Nj7L.js.map → _server.ts-CzmHtvBP.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BnEeEd9g.js → _server.ts-D2MVikBE.js} +4 -4
- package/build/server/chunks/{_server.ts-BnEeEd9g.js.map → _server.ts-D2MVikBE.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CHVs0yya.js → _server.ts-D2a0wAaS.js} +4 -4
- package/build/server/chunks/{_server.ts-CHVs0yya.js.map → _server.ts-D2a0wAaS.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BdnJF23z.js → _server.ts-D2eLvAHH.js} +4 -4
- package/build/server/chunks/{_server.ts-BdnJF23z.js.map → _server.ts-D2eLvAHH.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BEeaI665.js → _server.ts-DAti5TMB.js} +4 -4
- package/build/server/chunks/{_server.ts-BEeaI665.js.map → _server.ts-DAti5TMB.js.map} +1 -1
- package/build/server/chunks/{_server.ts-0FuXkx70.js → _server.ts-DDJ_6hbd.js} +4 -4
- package/build/server/chunks/{_server.ts-0FuXkx70.js.map → _server.ts-DDJ_6hbd.js.map} +1 -1
- package/build/server/chunks/{_server.ts-AJk0xBLJ.js → _server.ts-DG6Qxh-v.js} +4 -4
- package/build/server/chunks/{_server.ts-AJk0xBLJ.js.map → _server.ts-DG6Qxh-v.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BSIZMZVn.js → _server.ts-DGvfj1AD.js} +4 -4
- package/build/server/chunks/{_server.ts-BSIZMZVn.js.map → _server.ts-DGvfj1AD.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Bhh33s6N.js → _server.ts-DGwGBkiZ.js} +2 -2
- package/build/server/chunks/{_server.ts-Bhh33s6N.js.map → _server.ts-DGwGBkiZ.js.map} +1 -1
- package/build/server/chunks/{_server.ts-D1cb1hmF.js → _server.ts-DIt7oZ78.js} +4 -4
- package/build/server/chunks/{_server.ts-D1cb1hmF.js.map → _server.ts-DIt7oZ78.js.map} +1 -1
- package/build/server/chunks/_server.ts-DStLQ6G7.js +82 -0
- package/build/server/chunks/_server.ts-DStLQ6G7.js.map +1 -0
- package/build/server/chunks/{_server.ts-DEnxvwcJ.js → _server.ts-DUC-QWMj.js} +4 -4
- package/build/server/chunks/{_server.ts-DEnxvwcJ.js.map → _server.ts-DUC-QWMj.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Bfy4RFhe.js → _server.ts-DVdN-5bk.js} +4 -4
- package/build/server/chunks/{_server.ts-Bfy4RFhe.js.map → _server.ts-DVdN-5bk.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Btbzy89u.js → _server.ts-DW3vY8LS.js} +2 -2
- package/build/server/chunks/{_server.ts-Btbzy89u.js.map → _server.ts-DW3vY8LS.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DwXd92Ow.js → _server.ts-DXLqkvU1.js} +5 -5
- package/build/server/chunks/{_server.ts-DwXd92Ow.js.map → _server.ts-DXLqkvU1.js.map} +1 -1
- package/build/server/chunks/{_server.ts-ByyRcwFy.js → _server.ts-DbBkQ5gv.js} +4 -4
- package/build/server/chunks/{_server.ts-ByyRcwFy.js.map → _server.ts-DbBkQ5gv.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CgD8-EFl.js → _server.ts-DgTJfsxX.js} +5 -5
- package/build/server/chunks/{_server.ts-CgD8-EFl.js.map → _server.ts-DgTJfsxX.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CS73tiTY.js → _server.ts-DglztWzk.js} +4 -4
- package/build/server/chunks/{_server.ts-CS73tiTY.js.map → _server.ts-DglztWzk.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CWwgmo8z.js → _server.ts-Dwklttlo.js} +2 -2
- package/build/server/chunks/{_server.ts-CWwgmo8z.js.map → _server.ts-Dwklttlo.js.map} +1 -1
- package/build/server/chunks/{_server.ts-KpT_vKKo.js → _server.ts-FzTKvasI.js} +5 -5
- package/build/server/chunks/{_server.ts-KpT_vKKo.js.map → _server.ts-FzTKvasI.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BxPYakCb.js → _server.ts-R7dMpaPA.js} +2 -2
- package/build/server/chunks/{_server.ts-BxPYakCb.js.map → _server.ts-R7dMpaPA.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CboRRTK1.js → _server.ts-UM7mXEsQ.js} +5 -5
- package/build/server/chunks/{_server.ts-CboRRTK1.js.map → _server.ts-UM7mXEsQ.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DsEzCr9k.js → _server.ts-Ur_t9bMU.js} +4 -4
- package/build/server/chunks/{_server.ts-DsEzCr9k.js.map → _server.ts-Ur_t9bMU.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CyFZ9OZQ.js → _server.ts-VHHuwb3V.js} +4 -4
- package/build/server/chunks/{_server.ts-CyFZ9OZQ.js.map → _server.ts-VHHuwb3V.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Yy0BWsSd.js → _server.ts-XmCgdAim.js} +4 -4
- package/build/server/chunks/{_server.ts-Yy0BWsSd.js.map → _server.ts-XmCgdAim.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DffjWMNC.js → _server.ts-ZcRUavo2.js} +4 -4
- package/build/server/chunks/{_server.ts-DffjWMNC.js.map → _server.ts-ZcRUavo2.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Cy36-qGT.js → _server.ts-djChqJ3l.js} +4 -4
- package/build/server/chunks/{_server.ts-Cy36-qGT.js.map → _server.ts-djChqJ3l.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CD6LeslU.js → _server.ts-lmcyfcf5.js} +4 -4
- package/build/server/chunks/{_server.ts-CD6LeslU.js.map → _server.ts-lmcyfcf5.js.map} +1 -1
- package/build/server/chunks/{_server.ts-b9yNYKW6.js → _server.ts-ncFk6KuU.js} +4 -4
- package/build/server/chunks/{_server.ts-b9yNYKW6.js.map → _server.ts-ncFk6KuU.js.map} +1 -1
- package/build/server/chunks/{_server.ts-cwRl-tZ-.js → _server.ts-sAx1xFio.js} +4 -4
- package/build/server/chunks/{_server.ts-cwRl-tZ-.js.map → _server.ts-sAx1xFio.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Cn7ahHlk.js → _server.ts-zY_DK-6S.js} +4 -4
- package/build/server/chunks/{_server.ts-Cn7ahHlk.js.map → _server.ts-zY_DK-6S.js.map} +1 -1
- package/build/server/chunks/{addon-helpers-Bnj3aKJ2.js → addon-helpers-DM77guzq.js} +2 -2
- package/build/server/chunks/{addon-helpers-Bnj3aKJ2.js.map → addon-helpers-DM77guzq.js.map} +1 -1
- package/build/server/chunks/{config-CEYPfvQh.js → config-BE8RNUzZ.js} +2 -2
- package/build/server/chunks/{config-CEYPfvQh.js.map → config-BE8RNUzZ.js.map} +1 -1
- package/build/server/chunks/{docker-sGFTjRfy.js → docker-BFje1OYT.js} +2 -2
- package/build/server/chunks/{docker-sGFTjRfy.js.map → docker-BFje1OYT.js.map} +1 -1
- package/build/server/chunks/{endpoints-L7Wjvq44.js → endpoints-Dz6qhKXB.js} +2 -2
- package/build/server/chunks/{endpoints-L7Wjvq44.js.map → endpoints-Dz6qhKXB.js.map} +1 -1
- package/build/server/chunks/{error.svelte-PJnhZZCy.js → error.svelte-8jbbCpmR.js} +3 -3
- package/build/server/chunks/{error.svelte-PJnhZZCy.js.map → error.svelte-8jbbCpmR.js.map} +1 -1
- package/build/server/chunks/{helpers-5jd3ccud.js → helpers-C1fMEpiP.js} +3 -3
- package/build/server/chunks/{helpers-5jd3ccud.js.map → helpers-C1fMEpiP.js.map} +1 -1
- package/build/server/chunks/{hooks.server-Al9-eO5K.js → hooks.server-C6uX-Qkd.js} +4 -4
- package/build/server/chunks/{hooks.server-Al9-eO5K.js.map → hooks.server-C6uX-Qkd.js.map} +1 -1
- package/build/server/chunks/{http-D5xo_m60.js → http-CmL_uneS.js} +2 -2
- package/build/server/chunks/{http-D5xo_m60.js.map → http-CmL_uneS.js.map} +1 -1
- package/build/server/chunks/{internal-CJBOAkaQ.js → internal-BJjTqjxK.js} +4 -4
- package/build/server/chunks/{internal-CJBOAkaQ.js.map → internal-BJjTqjxK.js.map} +1 -1
- package/build/server/chunks/{setup-deploy-UKTSVAC0.js → setup-deploy-tjcmiBUv.js} +2 -2
- package/build/server/chunks/{setup-deploy-UKTSVAC0.js.map → setup-deploy-tjcmiBUv.js.map} +1 -1
- package/build/server/chunks/{src-FpMyngcw.js → src-BWQ05CjI.js} +27 -11
- package/build/server/chunks/src-BWQ05CjI.js.map +1 -0
- package/build/server/chunks/{state-BI-lJPhE.js → state-CKV51p4g.js} +2 -2
- package/build/server/chunks/{state-BI-lJPhE.js.map → state-CKV51p4g.js.map} +1 -1
- package/build/server/chunks/{voice-state.svelte-CQp8u0bn.js → theme-state.svelte-wqhXqgCA.js} +100 -2
- package/build/server/chunks/theme-state.svelte-wqhXqgCA.js.map +1 -0
- package/build/server/index.js +32 -2
- package/build/server/index.js.map +1 -1
- package/build/server/manifest.js +82 -75
- package/build/server/manifest.js.map +1 -1
- package/package.json +7 -2
- package/build/client/_app/immutable/assets/0.BK7X4bPu.css +0 -1
- package/build/client/_app/immutable/assets/0.BK7X4bPu.css.br +0 -0
- package/build/client/_app/immutable/assets/0.BK7X4bPu.css.gz +0 -0
- package/build/client/_app/immutable/assets/7.BHUsSUvX.css.br +0 -0
- package/build/client/_app/immutable/assets/7.BHUsSUvX.css.gz +0 -0
- package/build/client/_app/immutable/assets/AuthGate.BtJV-xXj.css +0 -1
- package/build/client/_app/immutable/assets/AuthGate.BtJV-xXj.css.br +0 -0
- package/build/client/_app/immutable/assets/AuthGate.BtJV-xXj.css.gz +0 -0
- package/build/client/_app/immutable/chunks/C8qMxft1.js +0 -1
- package/build/client/_app/immutable/chunks/C8qMxft1.js.br +0 -0
- package/build/client/_app/immutable/chunks/C8qMxft1.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CzXGhlNF.js.br +0 -0
- package/build/client/_app/immutable/chunks/CzXGhlNF.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DYskO3Sk.js +0 -5
- package/build/client/_app/immutable/chunks/DYskO3Sk.js.br +0 -0
- package/build/client/_app/immutable/chunks/DYskO3Sk.js.gz +0 -0
- package/build/client/_app/immutable/chunks/ak2ISc8B.js +0 -1
- package/build/client/_app/immutable/chunks/ak2ISc8B.js.br +0 -0
- package/build/client/_app/immutable/chunks/ak2ISc8B.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.C_eSlUyi.js.br +0 -0
- package/build/client/_app/immutable/entry/app.C_eSlUyi.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.BAta_Cih.js +0 -1
- package/build/client/_app/immutable/entry/start.BAta_Cih.js.br +0 -0
- package/build/client/_app/immutable/entry/start.BAta_Cih.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.Bi_of0So.js +0 -1
- package/build/client/_app/immutable/nodes/0.Bi_of0So.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.Bi_of0So.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.qjZsjpWC.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.qjZsjpWC.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.BYtA2xx-.js +0 -19
- package/build/client/_app/immutable/nodes/4.BYtA2xx-.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.BYtA2xx-.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.ChSoAFFd.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.ChSoAFFd.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.BRG0vYmH.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.BRG0vYmH.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.BVvy1f_p.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.BVvy1f_p.js.gz +0 -0
- package/build/server/chunks/1-CWcY3PRs.js +0 -9
- package/build/server/chunks/4-DeAt_mYc.js +0 -9
- package/build/server/chunks/5-qTXiNPEM.js +0 -9
- package/build/server/chunks/6-C444Mr69.js +0 -9
- package/build/server/chunks/7-Dg_sVly5.js +0 -9
- package/build/server/chunks/AuthGate-keg7G6rX.js.map +0 -1
- package/build/server/chunks/_page.svelte-BiKY57wg.js.map +0 -1
- package/build/server/chunks/_server.ts-JItoNB1Z.js.map +0 -1
- package/build/server/chunks/environment-BnT49Gi3.js +0 -36
- package/build/server/chunks/environment-BnT49Gi3.js.map +0 -1
- package/build/server/chunks/src-FpMyngcw.js.map +0 -1
- package/build/server/chunks/voice-state.svelte-CQp8u0bn.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,33 +1,45 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @openpalm/ui
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
OpenPalm remains compose-first and manual-first; the admin addon is a convenience layer for inspecting state and performing stack actions through Docker Socket Proxy.
|
|
3
|
+
`@openpalm/ui` is the published OpenPalm web UI package.
|
|
5
4
|
|
|
6
|
-
|
|
5
|
+
It provides the browser UI and authenticated admin API used to manage an OpenPalm installation: chat access, stack status, connections, addons, automations, and operator workflows.
|
|
7
6
|
|
|
8
|
-
|
|
9
|
-
- Authenticated `/admin/*` API used by the UI and assistant tools
|
|
10
|
-
- Thin control-plane consumer built on `@openpalm/lib`
|
|
11
|
-
- Reads the shipped addon catalog from `registry/addons/` and enabled runtime overlays from `stack/addons/`
|
|
12
|
-
- Exposes addon schema details and points operators to `knowledge/env/user.env` for values
|
|
7
|
+
This package is part of the OpenPalm monorepo, but it is versioned and published as its own npm package.
|
|
13
8
|
|
|
14
|
-
##
|
|
9
|
+
## What It Is
|
|
15
10
|
|
|
16
|
-
-
|
|
17
|
-
- The
|
|
18
|
-
-
|
|
19
|
-
-
|
|
11
|
+
- A SvelteKit app for the OpenPalm operator experience
|
|
12
|
+
- The authenticated `/admin/*` API used by the UI and related tools
|
|
13
|
+
- A thin control-plane consumer built on `@openpalm/lib`
|
|
14
|
+
- The web UI that can be bundled into Electron or run as a host-served Node app
|
|
15
|
+
|
|
16
|
+
## What It Is Not
|
|
17
|
+
|
|
18
|
+
- It is not a standalone replacement for the rest of OpenPalm
|
|
19
|
+
- It is not the source of truth for stack orchestration logic
|
|
20
|
+
- It does not replace the compose-first, file-based operating model
|
|
20
21
|
|
|
21
|
-
|
|
22
|
+
OpenPalm remains manual-first and compose-first. This package adds a user-facing management surface on top of that model.
|
|
23
|
+
|
|
24
|
+
## Features
|
|
25
|
+
|
|
26
|
+
- Operator chat UI and embedded Advanced OpenCode view
|
|
27
|
+
- Admin pages for status, versions, providers, endpoints, logs, addons, and automations
|
|
28
|
+
- Authenticated admin API routes for the browser UI
|
|
29
|
+
- Shared theme/token system used by the OpenPalm web experience
|
|
30
|
+
|
|
31
|
+
## Package Layout
|
|
22
32
|
|
|
23
33
|
```text
|
|
24
34
|
src/
|
|
25
|
-
├──
|
|
26
|
-
├── lib/components/
|
|
27
|
-
|
|
35
|
+
├── app.css # global tokens and shared UI styles
|
|
36
|
+
├── lib/components/ # Svelte UI components
|
|
37
|
+
├── lib/server/ # server-side wrappers around @openpalm/lib + admin helpers
|
|
38
|
+
├── routes/admin/ # admin API endpoints and admin-facing pages
|
|
39
|
+
└── routes/ # user-facing app routes
|
|
28
40
|
```
|
|
29
41
|
|
|
30
|
-
##
|
|
42
|
+
## Running It In This Repo
|
|
31
43
|
|
|
32
44
|
The recommended local-dev loop uses Vite HMR pointed at an isolated
|
|
33
45
|
`.dev/` `OP_HOME` so your real install at `~/.openpalm/` is never touched.
|
|
@@ -106,6 +118,25 @@ bun run ui:test:unit # vitest
|
|
|
106
118
|
bun run ui:build # production SvelteKit build
|
|
107
119
|
```
|
|
108
120
|
|
|
121
|
+
## Building And Publishing
|
|
122
|
+
|
|
123
|
+
This package is published from the monorepo as `@openpalm/ui`.
|
|
124
|
+
|
|
125
|
+
The production build is the SvelteKit `adapter-node` output in `build/`:
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
bun run ui:build
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
The build step also stamps the UI version into `.openpalm-ui-version` so OpenPalm can tell which UI build is newer when multiple UI channels exist.
|
|
132
|
+
|
|
133
|
+
## Runtime Notes
|
|
134
|
+
|
|
135
|
+
- The current runtime model is direct write + Docker Compose over `~/.openpalm/`
|
|
136
|
+
- Some module names still use historical terms like `staging`
|
|
137
|
+
- `registry/` is the shipped catalog source; `stack/addons/` are active runtime addon overlays; `knowledge/tasks/` holds active AKM task files
|
|
138
|
+
- Compose overlays under `stack/addons/` are deployment truth; the admin UI does not replace that model
|
|
139
|
+
|
|
109
140
|
## API auth
|
|
110
141
|
|
|
111
142
|
Protected endpoints require an `op_session` cookie. The browser obtains the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
0.11.0-rc.
|
|
1
|
+
0.11.0-rc.4
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
:root{--color-primary:#ff9d00;--color-primary-hover:#e68a00;--color-primary-subtle:#ff9d0014;--color-primary-border:#ff9d0047;--color-accent:var(--color-primary);--color-success:#40c057;--color-success-bg:#40c0571a;--color-success-border:#40c05740;--color-success-subtle:var(--color-success-bg);--color-danger:#fa5252;--color-danger-bg:#fa52521a;--color-danger-subtle:var(--color-danger-bg);--color-danger-border:#fa525240;--color-danger-fg:#c92a2a;--color-danger-bg-hover:#fa525229;--color-warning:#fd7e14;--color-warning-bg:#fd7e141a;--color-warning-border:#fd7e1440;--color-info:#339af0;--color-info-bg:#339af014;--color-pending:#868e96;--color-pending-bg:#868e961a;--color-caution:#e67700;--color-caution-bg:#e6770014;--color-error:var(--color-danger);--color-error-bg:var(--color-danger-bg);--color-error-border:var(--color-danger-border);--color-bg:#fff;--color-bg-secondary:#f9fafb;--color-bg-tertiary:#f3f4f6;--color-surface:#fffffffa;--color-surface-hover:#f9fafb;--color-surface-alt:#f6f8fa;--color-navbar-bg:#ffffffd9;--color-border:#e5e7eb;--color-border-hover:#d1d5db;--color-border-focus:var(--color-primary);--color-text:#111827;--color-text-secondary:#6b7280;--color-text-tertiary:#9ca3af;--color-text-muted:var(--color-text-secondary);--color-text-primary:var(--color-text);--color-text-inverse:#fff;--font-sans:"Source Sans 3", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;--font-mono:"IBM Plex Mono", "JetBrains Mono", "Fira Code", "Consolas", monospace;--text-xs:.75rem;--text-sm:.8125rem;--text-base:.875rem;--text-lg:1rem;--text-xl:1.125rem;--text-2xl:1.375rem;--text-3xl:1.75rem;--leading-tight:1.25;--leading-normal:1.5;--font-medium:500;--font-semibold:600;--font-bold:700;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;--space-10:2.5rem;--space-12:3rem;--radius-sm:6px;--radius-md:8px;--radius-lg:12px;--radius-xl:16px;--radius-full:9999px;--shadow-sm:0 1px 3px #00000014, 0 1px 2px #0000000a;--shadow-lg:0 4px 12px #0000001a, 0 2px 4px #0000000f;--transition-fast:.12s ease;--transition-normal:.2s ease;--max-width:1200px;--nav-height:56px;--sheet-width:480px;--sheet-width-wide:640px;--overlay-bg:#00000059;--shadow-sheet:-4px 0 24px #0000001f, -1px 0 4px #0000000f;--toggle-width:36px;--toggle-height:20px;--toggle-bg-off:var(--color-border-hover);--toggle-bg-on:var(--color-primary);--provider-card-size:96px;--color-border-selected:var(--color-primary);--color-bg-selected:var(--color-primary-subtle)}:root[data-theme=dark]{--color-primary:#ff9d00;--color-primary-hover:#ffb84d;--color-primary-subtle:#ff9d0029;--color-primary-border:#ff9d0057;--color-success:#5ad57f;--color-success-bg:#5ad57f24;--color-success-border:#5ad57f4d;--color-success-subtle:var(--color-success-bg);--color-danger:#ff7b7b;--color-danger-bg:#ff7b7b24;--color-danger-subtle:var(--color-danger-bg);--color-danger-border:#ff7b7b4d;--color-danger-fg:#ffd2d2;--color-danger-bg-hover:#ff7b7b38;--color-warning:#ff9f43;--color-warning-bg:#ff9f4329;--color-warning-border:#ff9f434d;--color-info:#66b8ff;--color-info-bg:#66b8ff24;--color-pending:#94a3b8;--color-pending-bg:#94a3b824;--color-caution:#ff9f43;--color-caution-bg:#ff9f4324;--color-error:var(--color-danger);--color-error-bg:var(--color-danger-bg);--color-error-border:var(--color-danger-border);--color-bg:#101418;--color-bg-secondary:#161c22;--color-bg-tertiary:#1d2630;--color-surface:#141a20fa;--color-surface-hover:#1b232c;--color-surface-alt:#19212a;--color-navbar-bg:#141a20e0;--color-border:#2a3441;--color-border-hover:#3b4756;--color-border-focus:var(--color-primary);--color-text:#f3f4f6;--color-text-secondary:#cbd5e1;--color-text-tertiary:#94a3b8;--color-text-muted:var(--color-text-secondary);--color-text-primary:var(--color-text);--color-text-inverse:#0f1419;--shadow-sm:0 1px 3px #00000038, 0 1px 2px #00000029;--shadow-lg:0 10px 24px #00000057, 0 4px 8px #0000003d;--overlay-bg:#0000008c;--shadow-sheet:-6px 0 28px #00000057, -1px 0 4px #0000003d;--toggle-bg-off:var(--color-border-hover);--toggle-bg-on:var(--color-primary);--color-border-selected:var(--color-primary);--color-bg-selected:var(--color-primary-subtle)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font-size:16px}html[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}body{font-family:var(--font-sans);font-size:var(--text-base);line-height:var(--leading-normal);color:var(--color-text);background:var(--color-bg-secondary);min-height:100vh}html.chat-locked,body.chat-locked{height:100dvh;min-height:0;overflow:hidden}*{scrollbar-width:thin;scrollbar-color:var(--color-border) transparent}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--color-border-hover)}:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.sheet-overlay{z-index:200;background:var(--overlay-bg);transition:opacity var(--transition-normal);position:fixed;inset:0}.sheet{width:var(--sheet-width);background:var(--color-surface);border-inline-start:1px solid var(--color-border);max-width:100vw;box-shadow:var(--shadow-sheet);z-index:201;transition:translate var(--transition-normal);flex-direction:column;display:flex;position:fixed;inset-block:0;inset-inline-end:0;overflow:hidden;translate:0}.sheet--wide{width:var(--sheet-width-wide)}.sheet-header{align-items:center;gap:var(--space-3);padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--color-border);flex-shrink:0;display:flex}.sheet-header-back{align-items:center;gap:var(--space-1);color:var(--color-primary);font-size:var(--text-sm);cursor:pointer;background:0 0;border:none;padding:0;display:inline-flex}.sheet-title{font-size:var(--text-base);font-weight:var(--font-semibold);color:var(--color-text);flex:1}.sheet-close{width:32px;height:32px;color:var(--color-text-secondary);border-radius:var(--radius-sm);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.sheet-close:hover{background:var(--color-bg-secondary);color:var(--color-text)}.sheet-body{padding:var(--space-5);flex:1;overflow-y:auto}.sheet-footer{justify-content:flex-end;gap:var(--space-3);padding:var(--space-4) var(--space-5);border-top:1px solid var(--color-border);background:var(--color-surface);flex-shrink:0;display:flex}.model-toggle{width:var(--toggle-width);height:var(--toggle-height);flex-shrink:0;display:inline-block;position:relative}.model-toggle input{opacity:0;width:0;height:0;position:absolute}.model-toggle-track{background:var(--toggle-bg-off);border-radius:var(--radius-full);transition:background var(--transition-fast);cursor:pointer;position:absolute;inset:0}.model-toggle-track:after{content:"";width:calc(var(--toggle-height) - 4px);aspect-ratio:1;transition:translate var(--transition-fast);background:#fff;border-radius:50%;position:absolute;inset-block:2px;inset-inline-start:2px}.model-toggle input:checked+.model-toggle-track{background:var(--toggle-bg-on)}.model-toggle input:checked+.model-toggle-track:after{translate:calc(var(--toggle-width) - var(--toggle-height)) 0}.model-toggle input:focus-visible+.model-toggle-track{outline:2px solid var(--color-primary);outline-offset:2px}.provider-grid{grid-template-columns:repeat(auto-fill, minmax(var(--provider-card-size), 1fr));gap:var(--space-3);display:grid}.provider-card{align-items:center;gap:var(--space-2);padding:var(--space-4) var(--space-3);background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;text-align:center;font-family:var(--font-sans);transition:border-color var(--transition-fast), box-shadow var(--transition-fast);flex-direction:column;display:flex}.provider-card:hover{border-color:var(--color-border-hover)}.provider-card--selected{border-color:var(--color-border-selected);background:var(--color-bg-selected);box-shadow:0 0 0 1px var(--color-border-selected)}.provider-card--connected:after{content:"";background:var(--color-success);border-radius:50%;width:8px;height:8px;display:block}.auth-method-group{gap:var(--space-2);flex-direction:column;display:flex}.auth-method-card{align-items:flex-start;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;text-align:left;font-family:var(--font-sans);transition:border-color var(--transition-fast);display:flex}.auth-method-card--selected{border-color:var(--color-primary);box-shadow:inset 3px 0 0 var(--color-primary)}.filter-pills{gap:var(--space-2);padding-bottom:var(--space-1);scrollbar-width:none;display:flex;overflow-x:auto}.pill{border-radius:var(--radius-full);border:1px solid var(--color-border);background:var(--color-bg);color:var(--color-text-secondary);font-size:var(--text-xs);font-weight:var(--font-medium);cursor:pointer;white-space:nowrap;transition:all var(--transition-fast);align-items:center;padding:4px 12px;display:inline-flex}.pill--active{background:var(--color-primary);border-color:var(--color-primary);color:#000}.model-row{align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);display:flex}.model-row:hover{background:var(--color-bg-secondary)}.model-row-name{font-family:var(--font-mono);font-size:var(--text-sm);color:var(--color-text);flex:1}.model-row-provider{font-size:var(--text-xs);color:var(--color-text-tertiary)}.provider-group summary{cursor:pointer;align-items:center;gap:var(--space-2);padding:var(--space-2) 0;font-size:var(--text-xs);font-weight:var(--font-semibold);text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-secondary);list-style:none;display:flex}.provider-group summary::-webkit-details-marker{display:none}.provider-group summary:before{content:"▸";font-size:var(--text-xs);transition:transform var(--transition-fast)}.provider-group[open] summary:before{transform:rotate(90deg)}.btn{align-items:center;gap:var(--space-2);font-family:var(--font-sans);font-size:var(--text-sm);font-weight:var(--font-semibold);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);white-space:nowrap;border:1px solid #0000;justify-content:center;padding:8px 20px;line-height:1.4;display:inline-flex}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--color-primary);color:#000;border-color:var(--color-primary)}.btn-primary:hover:not(:disabled){background:var(--color-primary-hover);border-color:var(--color-primary-hover)}.btn-outline{color:var(--color-primary);border-color:var(--color-primary);background:0 0}.btn-outline:hover:not(:disabled){background:var(--color-primary-subtle,#50c87814)}.btn-ghost{color:var(--color-text-secondary);border-radius:var(--radius-sm);cursor:pointer;background:0 0;border:none;padding:6px}.btn-ghost:hover:not(:disabled){color:var(--color-text);background:var(--color-bg-secondary)}.btn-sm{font-size:var(--text-xs);padding:4px 12px}.btn-secondary{background:var(--color-bg);color:var(--color-text);border-color:var(--color-border)}.btn-secondary:hover:not(:disabled){background:var(--color-surface-hover);border-color:var(--color-border-hover)}.btn-danger{background:var(--color-danger);color:#fff;border-color:var(--color-danger)}.btn-danger:hover:not(:disabled){opacity:.9}.spinner{border:2px solid;border-right-color:#0000;border-radius:50%;width:14px;height:14px;animation:.6s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.spin{animation:.8s linear infinite spin}@media (prefers-reduced-motion:reduce){.spinner,.spin{animation:none}}.feedback{align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);font-size:var(--text-sm);display:flex}.feedback span{flex:1}.feedback--success{background:var(--color-success-bg,#40c0571a);border:1px solid var(--color-success-border,#40c05740);color:var(--color-text)}.feedback--error{background:var(--color-danger-bg,#ff6b6b1a);border:1px solid var(--color-danger-border,#ff6b6b40);color:var(--color-text)}.feedback--warning{background:var(--color-warning-bg,#ffc1071a);border:1px solid var(--color-warning-border,#ffc10740);color:var(--color-text)}.form-field{gap:var(--space-1);flex-direction:column;display:flex}.form-label{font-size:var(--text-sm);font-weight:var(--font-medium);color:var(--color-text-secondary)}.form-input{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg);width:100%;height:40px;color:var(--color-text);font-size:var(--text-sm);padding:0 12px;font-family:inherit}.form-input:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-subtle,#50c87826);outline:none}.field-hint{font-size:var(--text-xs);color:var(--color-text-tertiary)}.field-status{font-size:var(--text-xs);color:var(--color-text-secondary)}.panel{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden}.panel-header{z-index:10;background:var(--color-surface);padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;display:flex;position:sticky;top:0}.panel-header h2{font-size:var(--text-base);font-weight:var(--font-semibold);color:var(--color-text)}.panel-subtitle{font-size:var(--text-xs);color:var(--color-text-secondary);margin-top:var(--space-1)}.panel-subtitle code{font-family:var(--font-mono);font-size:var(--text-xs);background:var(--color-bg-tertiary);border-radius:var(--radius-sm);padding:1px 6px}.panel-header-actions{align-items:center;gap:var(--space-2);display:flex}.panel-body{padding:var(--space-5)}.panel-body--flush{padding:0}.badge{font-size:10px;font-weight:var(--font-semibold);border-radius:var(--radius-full);text-transform:uppercase;letter-spacing:.03em;align-items:center;padding:1px 6px;display:inline-flex}.badge-enabled{background:var(--color-success-bg);color:var(--color-success)}.badge-disabled{background:var(--color-bg-tertiary);color:var(--color-text-tertiary)}.badge-connected,.badge-recommended,.badge-success{background:var(--color-success-bg);color:var(--color-success)}.badge-danger{background:var(--color-danger-bg);color:var(--color-danger)}.badge-warning{background:var(--color-warning-bg);color:var(--color-warning)}.badge-idle{background:var(--color-bg-tertiary);color:var(--color-text-tertiary)}.btn-dismiss{color:inherit;cursor:pointer;opacity:.6;border-radius:var(--radius-sm);background:0 0;border:none;justify-content:center;align-items:center;padding:4px;display:inline-flex}.btn-dismiss:hover{opacity:1;background:#8080801a}.loading-state{align-items:center;gap:var(--space-3);padding:var(--space-6);color:var(--color-text-secondary);font-size:var(--text-sm);display:flex}.empty-state{align-items:center;gap:var(--space-3);padding:var(--space-8) var(--space-6);text-align:center;color:var(--color-text-tertiary);flex-direction:column;display:flex}.empty-state p{font-size:var(--text-sm)}.text-link{color:var(--color-primary);text-underline-offset:2px;text-decoration:underline}.text-link:hover{color:var(--color-primary-hover)}@media (width<=520px){.sheet{border-inline-start:none;border-top:1px solid var(--color-border);border-radius:var(--radius-xl) var(--radius-xl) 0 0;width:100%;max-height:90dvh;inset-block:auto 0;inset-inline:0}.sheet--wide{width:100%}.provider-grid{grid-template-columns:repeat(auto-fill,minmax(80px,1fr))}}.update-banner.svelte-z1ckp5{color:#3730a3;font-size:var(--text-sm,.875rem);background:#eef2ff;border-bottom:1px solid #c7d2fe;align-items:center;gap:10px;padding:8px 14px;display:flex}.update-banner-icon.svelte-z1ckp5{display:inline-flex}.update-banner-text.svelte-z1ckp5{flex:1}.update-banner-link.svelte-z1ckp5{color:#4338ca;font-weight:600;text-decoration:none}.update-banner-link.svelte-z1ckp5:hover{text-decoration:underline}.update-banner-dismiss.svelte-z1ckp5{color:#3730a3;cursor:pointer;background:0 0;border:0;border-radius:4px;padding:4px 8px;font-size:1.1rem;line-height:1}.update-banner-dismiss.svelte-z1ckp5:hover{background:#4338ca14}.toast-stack.svelte-1cpok13{right:var(--space-4);bottom:var(--space-4);z-index:200;gap:var(--space-2);max-width:min(360px, calc(100vw - var(--space-8)));pointer-events:none;flex-direction:column;display:flex;position:fixed}.toast.svelte-1cpok13{align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);background:var(--color-bg);color:var(--color-text);border:1px solid var(--color-border);border-radius:var(--radius-md);pointer-events:auto;animation:.18s ease-out svelte-1cpok13-toast-in;display:flex;box-shadow:0 10px 30px #0000002e}.toast-info.svelte-1cpok13{border-color:var(--color-primary,#2563eb)}.toast-success.svelte-1cpok13{border-color:var(--color-success,#16a34a)}.toast-error.svelte-1cpok13{border-color:var(--color-danger,#dc2626)}.toast-icon.svelte-1cpok13{flex-shrink:0;display:inline-flex}.toast-info.svelte-1cpok13 .toast-icon:where(.svelte-1cpok13){color:var(--color-primary,#2563eb)}.toast-success.svelte-1cpok13 .toast-icon:where(.svelte-1cpok13){color:var(--color-success,#16a34a)}.toast-error.svelte-1cpok13 .toast-icon:where(.svelte-1cpok13){color:var(--color-danger,#dc2626)}.toast-message.svelte-1cpok13{font-size:var(--text-sm);word-break:break-word;flex:1;line-height:1.4}.toast-dismiss.svelte-1cpok13{width:24px;height:24px;color:var(--color-text-tertiary);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:0;flex-shrink:0;font-size:18px;line-height:1}.toast-dismiss.svelte-1cpok13:hover,.toast-dismiss.svelte-1cpok13:focus-visible{background:var(--color-surface-hover);color:var(--color-text);outline:none}.sr-only.svelte-1cpok13{clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@keyframes svelte-1cpok13-toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.toast.svelte-1cpok13{animation:none}}
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.thread-divider.svelte-1ebqwt{align-items:center;gap:var(--space-3);padding:var(--space-4) 0;color:var(--color-text-tertiary);font-size:var(--text-xs);font-weight:var(--font-medium);text-transform:uppercase;letter-spacing:.06em;display:flex}.divider-line.svelte-1ebqwt{background:var(--color-border);flex:1;height:1px}.divider-label.svelte-1ebqwt{padding:0 var(--space-2);background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-full);flex-shrink:0}.message.svelte-1ebqwt{flex-direction:column;max-width:80%;display:flex}.message-user.svelte-1ebqwt{align-self:flex-end;align-items:flex-end}.message-assistant.svelte-1ebqwt{align-self:flex-start;align-items:flex-start}.message-bubble.svelte-1ebqwt{padding:var(--space-3) var(--space-4);border-radius:var(--radius-lg);line-height:var(--leading-normal)}.message-user.svelte-1ebqwt .message-bubble:where(.svelte-1ebqwt){background:var(--color-primary);color:#000;border-bottom-right-radius:var(--radius-sm)}.message-assistant.svelte-1ebqwt .message-bubble:where(.svelte-1ebqwt){background:var(--color-bg-tertiary);color:var(--color-text);border:1px solid var(--color-border);border-bottom-left-radius:var(--radius-sm)}.message-text.svelte-1ebqwt{font-size:var(--text-base);word-break:break-word}.message-user.svelte-1ebqwt .message-text:where(.svelte-1ebqwt):not(.markdown-body){white-space:pre-wrap}.markdown-body.svelte-1ebqwt p{margin:0 0 var(--space-2) 0}.markdown-body.svelte-1ebqwt p:last-child{margin-bottom:0}.markdown-body.svelte-1ebqwt ul,.markdown-body.svelte-1ebqwt ol{margin:0 0 var(--space-2) 0;padding-left:var(--space-5)}.markdown-body.svelte-1ebqwt li{margin:var(--space-1) 0}.markdown-body.svelte-1ebqwt li>p{margin:0}.markdown-body.svelte-1ebqwt code{font-family:var(--font-mono);background:var(--color-bg);border:1px solid var(--color-border);border-radius:4px;padding:1px 6px;font-size:.9em}.markdown-body.svelte-1ebqwt pre{margin:var(--space-2) 0;padding:var(--space-3);background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:.9em;overflow-x:auto}.markdown-body.svelte-1ebqwt pre code{background:0 0;border:0;padding:0}.markdown-body.svelte-1ebqwt a{color:var(--color-primary);text-decoration:underline}.markdown-body.svelte-1ebqwt a:hover{text-decoration:none}.markdown-body.svelte-1ebqwt blockquote{margin:var(--space-2) 0;padding-left:var(--space-3);border-left:3px solid var(--color-border);color:var(--color-text-secondary)}.markdown-body.svelte-1ebqwt h1,.markdown-body.svelte-1ebqwt h2,.markdown-body.svelte-1ebqwt h3,.markdown-body.svelte-1ebqwt h4{margin:var(--space-3) 0 var(--space-2);font-weight:var(--font-bold);line-height:var(--leading-tight,1.25)}.markdown-body.svelte-1ebqwt h1{font-size:1.4em}.markdown-body.svelte-1ebqwt h2{font-size:1.25em}.markdown-body.svelte-1ebqwt h3{font-size:1.1em}.markdown-body.svelte-1ebqwt h4{font-size:1em}.markdown-body.svelte-1ebqwt hr{margin:var(--space-3) 0;border:0;border-top:1px solid var(--color-border)}.markdown-body.svelte-1ebqwt table{border-collapse:collapse;margin:var(--space-2) 0;font-size:.9em}.markdown-body.svelte-1ebqwt th,.markdown-body.svelte-1ebqwt td{border:1px solid var(--color-border);padding:var(--space-1) var(--space-2);text-align:left}.message-meta.svelte-1ebqwt{margin-top:var(--space-1);font-size:var(--text-xs);color:var(--color-text-tertiary)}.chat-input-row.svelte-5wsbgm{padding:var(--space-3) var(--space-4);border-top:1px solid var(--color-border);background:var(--color-bg);justify-items:center;width:-webkit-fill-available;width:-moz-available;width:stretch}.input-area.svelte-5wsbgm{align-items:flex-end;gap:var(--space-2);width:-webkit-fill-available;width:-moz-available;width:stretch;max-width:var(--max-width);display:flex}textarea.svelte-5wsbgm{min-height:40px;max-height:160px;padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg);color:var(--color-text);font-family:var(--font-sans);font-size:var(--text-base);line-height:var(--leading-normal);resize:none;transition:border-color var(--transition-fast);flex:1;overflow-y:auto}textarea.svelte-5wsbgm:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-subtle);outline:none}textarea.svelte-5wsbgm:disabled{opacity:.65;cursor:not-allowed}.send-btn.svelte-5wsbgm{background:var(--color-primary);border-radius:var(--radius-md);color:#000;cursor:pointer;width:40px;height:40px;transition:background var(--transition-fast);border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:inline-flex}.send-btn.svelte-5wsbgm:hover:not(:disabled){background:var(--color-primary-hover)}.send-btn.svelte-5wsbgm:disabled{opacity:.45;cursor:not-allowed}.spinner.svelte-5wsbgm{border:2px solid;border-right-color:#0000;border-radius:50%;width:14px;height:14px;animation:.6s linear infinite svelte-5wsbgm-spin;display:inline-block}@keyframes svelte-5wsbgm-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.spinner.svelte-5wsbgm{animation:none}}.chat-layout.svelte-23dtxz{height:calc(100dvh - var(--nav-height));flex-direction:column;margin:0;display:flex}.messages-area.svelte-23dtxz{gap:var(--space-3);padding:var(--space-4) var(--space-6);scroll-behavior:smooth;flex-direction:column;flex:1;display:flex;overflow-y:auto}.empty-state.svelte-23dtxz{text-align:center;color:var(--color-text-secondary);font-size:var(--text-base);padding:var(--space-8);margin:auto}.session-loading.svelte-23dtxz{align-items:center;gap:var(--space-2);color:var(--color-text-secondary);font-size:var(--text-sm);padding:var(--space-4);margin:auto;display:flex}.spinner.svelte-23dtxz{border:2px solid;border-right-color:#0000;border-radius:50%;flex-shrink:0;width:14px;height:14px;animation:.6s linear infinite svelte-23dtxz-spin;display:inline-block}@keyframes svelte-23dtxz-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.spinner.svelte-23dtxz{animation:none}}.chat-error-banner.svelte-23dtxz{align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-4);background:var(--color-danger-bg);font-size:var(--text-sm);color:var(--color-danger);border-top:1px solid #fa525240;display:flex}.chat-error-banner.svelte-23dtxz span:where(.svelte-23dtxz):first-child{flex:1}.reconnect-btn.svelte-23dtxz{font-size:var(--text-xs);font-weight:var(--font-semibold);border:1px solid var(--color-danger);border-radius:var(--radius-full);color:var(--color-danger);cursor:pointer;white-space:nowrap;transition:all var(--transition-fast);background:0 0;padding:3px 10px}.reconnect-btn.svelte-23dtxz:hover{background:var(--color-danger);color:#fff}.dismiss-btn.svelte-23dtxz{width:24px;height:24px;color:var(--color-danger);cursor:pointer;font-size:var(--text-lg);border-radius:var(--radius-sm);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;line-height:1;display:inline-flex}.dismiss-btn.svelte-23dtxz:hover{background:#fa525226}@media (width<=768px){.messages-area.svelte-23dtxz{padding:var(--space-3) var(--space-4)}}
|
|
1
|
+
.thread-divider.svelte-1ebqwt{align-items:center;gap:var(--space-3);padding:var(--space-4) 0;color:var(--color-text-tertiary);font-size:var(--text-xs);font-weight:var(--font-medium);text-transform:uppercase;letter-spacing:.06em;display:flex}.divider-line.svelte-1ebqwt{background:var(--color-border);flex:1;height:1px}.divider-label.svelte-1ebqwt{padding:0 var(--space-2);background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-full);flex-shrink:0}.message.svelte-1ebqwt{flex-direction:column;max-width:80%;display:flex}.message-user.svelte-1ebqwt{align-self:flex-end;align-items:flex-end}.message-assistant.svelte-1ebqwt{align-self:flex-start;align-items:flex-start}.message-bubble.svelte-1ebqwt{padding:var(--space-3) var(--space-4);border-radius:var(--radius-lg);line-height:var(--leading-normal)}.message-user.svelte-1ebqwt .message-bubble:where(.svelte-1ebqwt){background:var(--color-primary);color:#000;border-bottom-right-radius:var(--radius-sm)}.message-assistant.svelte-1ebqwt .message-bubble:where(.svelte-1ebqwt){background:var(--color-bg-tertiary);color:var(--color-text);border:1px solid var(--color-border);border-bottom-left-radius:var(--radius-sm)}.message-text.svelte-1ebqwt{font-size:var(--text-base);word-break:break-word}.message-user.svelte-1ebqwt .message-text:where(.svelte-1ebqwt):not(.markdown-body){white-space:pre-wrap}.markdown-body.svelte-1ebqwt p{margin:0 0 var(--space-2) 0}.markdown-body.svelte-1ebqwt p:last-child{margin-bottom:0}.markdown-body.svelte-1ebqwt ul,.markdown-body.svelte-1ebqwt ol{margin:0 0 var(--space-2) 0;padding-left:var(--space-5)}.markdown-body.svelte-1ebqwt li{margin:var(--space-1) 0}.markdown-body.svelte-1ebqwt li>p{margin:0}.markdown-body.svelte-1ebqwt code{font-family:var(--font-mono);background:var(--color-bg);border:1px solid var(--color-border);border-radius:4px;padding:1px 6px;font-size:.9em}.markdown-body.svelte-1ebqwt pre{margin:var(--space-2) 0;padding:var(--space-3);background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:.9em;overflow-x:auto}.markdown-body.svelte-1ebqwt pre code{background:0 0;border:0;padding:0}.markdown-body.svelte-1ebqwt a{color:var(--color-primary);text-decoration:underline}.markdown-body.svelte-1ebqwt a:hover{text-decoration:none}.markdown-body.svelte-1ebqwt blockquote{margin:var(--space-2) 0;padding-left:var(--space-3);border-left:3px solid var(--color-border);color:var(--color-text-secondary)}.markdown-body.svelte-1ebqwt h1,.markdown-body.svelte-1ebqwt h2,.markdown-body.svelte-1ebqwt h3,.markdown-body.svelte-1ebqwt h4{margin:var(--space-3) 0 var(--space-2);font-weight:var(--font-bold);line-height:var(--leading-tight,1.25)}.markdown-body.svelte-1ebqwt h1{font-size:1.4em}.markdown-body.svelte-1ebqwt h2{font-size:1.25em}.markdown-body.svelte-1ebqwt h3{font-size:1.1em}.markdown-body.svelte-1ebqwt h4{font-size:1em}.markdown-body.svelte-1ebqwt hr{margin:var(--space-3) 0;border:0;border-top:1px solid var(--color-border)}.markdown-body.svelte-1ebqwt table{border-collapse:collapse;margin:var(--space-2) 0;font-size:.9em}.markdown-body.svelte-1ebqwt th,.markdown-body.svelte-1ebqwt td{border:1px solid var(--color-border);padding:var(--space-1) var(--space-2);text-align:left}.message-meta.svelte-1ebqwt{margin-top:var(--space-1);font-size:var(--text-xs);color:var(--color-text-tertiary)}.chat-input-row.svelte-5wsbgm{padding:var(--space-3) var(--space-4);border-top:1px solid var(--color-border);background:var(--color-bg);justify-items:center;width:-webkit-fill-available;width:-moz-available;width:stretch}.input-area.svelte-5wsbgm{align-items:flex-end;gap:var(--space-2);width:-webkit-fill-available;width:-moz-available;width:stretch;max-width:var(--max-width);display:flex}textarea.svelte-5wsbgm{min-height:40px;max-height:160px;padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg);color:var(--color-text);font-family:var(--font-sans);font-size:var(--text-base);line-height:var(--leading-normal);resize:none;transition:border-color var(--transition-fast);flex:1;overflow-y:auto}textarea.svelte-5wsbgm:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-subtle);outline:none}textarea.svelte-5wsbgm:disabled{opacity:.65;cursor:not-allowed}.send-btn.svelte-5wsbgm{background:var(--color-primary);border-radius:var(--radius-md);color:#000;cursor:pointer;width:40px;height:40px;transition:background var(--transition-fast);border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:inline-flex}.send-btn.svelte-5wsbgm:hover:not(:disabled){background:var(--color-primary-hover)}.send-btn.svelte-5wsbgm:disabled{opacity:.45;cursor:not-allowed}.spinner.svelte-5wsbgm{border:2px solid;border-right-color:#0000;border-radius:50%;width:14px;height:14px;animation:.6s linear infinite svelte-5wsbgm-spin;display:inline-block}@keyframes svelte-5wsbgm-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.spinner.svelte-5wsbgm{animation:none}}.chat-layout.svelte-23dtxz{height:calc(100dvh - var(--nav-height));flex-direction:column;margin:0;display:flex}.messages-area.svelte-23dtxz{gap:var(--space-3);padding:var(--space-4) var(--space-6);scroll-behavior:smooth;flex-direction:column;flex:1;align-items:center;display:flex;overflow-y:auto}.messages-area.svelte-23dtxz>*{width:min(80ch,90svw)}.empty-state.svelte-23dtxz{text-align:center;color:var(--color-text-secondary);font-size:var(--text-base);padding:var(--space-8);margin:auto}.session-loading.svelte-23dtxz{align-items:center;gap:var(--space-2);color:var(--color-text-secondary);font-size:var(--text-sm);padding:var(--space-4);margin:auto;display:flex}.spinner.svelte-23dtxz{border:2px solid;border-right-color:#0000;border-radius:50%;flex-shrink:0;width:14px;height:14px;animation:.6s linear infinite svelte-23dtxz-spin;display:inline-block}@keyframes svelte-23dtxz-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.spinner.svelte-23dtxz{animation:none}}.chat-error-banner.svelte-23dtxz{align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-4);background:var(--color-danger-bg);font-size:var(--text-sm);color:var(--color-danger);border-top:1px solid #fa525240;display:flex}.chat-error-banner.svelte-23dtxz span:where(.svelte-23dtxz):first-child{flex:1}.reconnect-btn.svelte-23dtxz{font-size:var(--text-xs);font-weight:var(--font-semibold);border:1px solid var(--color-danger);border-radius:var(--radius-full);color:var(--color-danger);cursor:pointer;white-space:nowrap;transition:all var(--transition-fast);background:0 0;padding:3px 10px}.reconnect-btn.svelte-23dtxz:hover{background:var(--color-danger);color:#fff}.dismiss-btn.svelte-23dtxz{width:24px;height:24px;color:var(--color-danger);cursor:pointer;font-size:var(--text-lg);border-radius:var(--radius-sm);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;line-height:1;display:inline-flex}.dismiss-btn.svelte-23dtxz:hover{background:#fa525226}@media (width<=768px){.messages-area.svelte-23dtxz{padding:var(--space-3) var(--space-4)}}
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.voice-control.svelte-1a5q9sh{align-items:center;gap:var(--space-2);display:flex}.voice-interim.svelte-1a5q9sh{max-width:200px;font-size:var(--text-xs);color:var(--color-text-secondary);white-space:nowrap;text-overflow:ellipsis;padding:2px var(--space-2);background:var(--color-surface-hover);border-radius:var(--radius-sm);border:1px solid var(--color-border);flex-shrink:1;min-width:0;overflow:hidden}.voice-autoplay-banner.svelte-1a5q9sh{align-items:center;gap:var(--space-2);padding:4px var(--space-3);background:var(--color-primary-subtle);border:1px solid var(--color-primary);border-radius:var(--radius-md);height:32px;color:var(--color-primary);font-size:var(--text-xs);font-weight:var(--font-medium);cursor:pointer;white-space:nowrap;transition:filter var(--transition-fast);display:inline-flex}.voice-autoplay-banner.svelte-1a5q9sh:hover{filter:brightness(1.05)}.voice-autoplay-banner.svelte-1a5q9sh:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.voice-btn.svelte-1a5q9sh{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-md);width:32px;height:32px;color:var(--color-text-secondary);cursor:pointer;transition:all var(--transition-fast);flex-shrink:0;justify-content:center;align-items:center;padding:0;display:inline-flex;position:relative}.voice-btn.svelte-1a5q9sh:hover{color:var(--color-text);border-color:var(--color-border-hover);background:var(--color-surface-hover)}.voice-btn.svelte-1a5q9sh:focus-visible{outline:2px solid var(--color-primary);outline-offset:-2px}.voice-btn-active.svelte-1a5q9sh{color:var(--color-danger);border-color:var(--color-danger);background:var(--color-danger-bg)}.voice-btn-active.svelte-1a5q9sh:hover{color:var(--color-danger);border-color:var(--color-danger)}.voice-btn-on.svelte-1a5q9sh{color:var(--color-primary);border-color:var(--color-primary);background:var(--color-primary-subtle)}.voice-btn-on.svelte-1a5q9sh:hover{color:var(--color-primary);border-color:var(--color-primary)}.voice-btn-speaking.svelte-1a5q9sh{background:var(--color-primary-subtle);box-shadow:0 0 0 2px var(--color-primary-subtle)}.voice-btn-processing.svelte-1a5q9sh{color:var(--color-text-tertiary);cursor:not-allowed}.voice-pulse.svelte-1a5q9sh{border:2px solid var(--color-danger);border-radius:var(--radius-md);opacity:0;pointer-events:none;animation:1.5s ease-out infinite svelte-1a5q9sh-voice-pulse-anim;position:absolute;inset:-3px}.voice-spinner.svelte-1a5q9sh{border:2px solid;border-right-color:#0000;border-radius:50%;width:14px;height:14px;animation:.7s linear infinite svelte-1a5q9sh-voice-spinner-anim;display:inline-block}@keyframes svelte-1a5q9sh-voice-spinner-anim{to{transform:rotate(360deg)}}.wave-anim.svelte-1a5q9sh{transform-origin:11px 12px;animation:1.2s ease-in-out infinite svelte-1a5q9sh-wave-pulse-anim}.wave-anim-2.svelte-1a5q9sh{transform-origin:11px 12px;animation:1.2s ease-in-out .3s infinite svelte-1a5q9sh-wave-pulse-anim}@keyframes svelte-1a5q9sh-wave-pulse-anim{0%,to{opacity:.4}50%{opacity:1}}@keyframes svelte-1a5q9sh-voice-pulse-anim{0%{opacity:.6;transform:scale(1)}to{opacity:0;transform:scale(1.3)}}@media (prefers-reduced-motion:reduce){.voice-pulse.svelte-1a5q9sh,.voice-spinner.svelte-1a5q9sh,.wave-anim.svelte-1a5q9sh,.wave-anim-2.svelte-1a5q9sh{animation:none}.voice-pulse.svelte-1a5q9sh{opacity:.4}}.sr-only.svelte-1a5q9sh{clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.switcher.svelte-1gh51ee{position:relative}.trigger.svelte-1gh51ee{align-items:center;gap:var(--space-2);padding:0 var(--space-3);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md,8px);height:32px;font-size:var(--text-sm);color:var(--color-text);cursor:pointer;max-width:240px;display:inline-flex;overflow:hidden}.trigger.svelte-1gh51ee:hover:not(:disabled){background:var(--color-surface-hover)}.trigger.svelte-1gh51ee:disabled{opacity:.6;cursor:progress}.trigger-icon.svelte-1gh51ee{color:var(--color-text-secondary);flex-shrink:0;display:none}.dot.svelte-1gh51ee{background:var(--color-success,#16a34a);border-radius:50%;flex-shrink:0;width:8px;height:8px}.label.svelte-1gh51ee{text-overflow:ellipsis;white-space:nowrap;max-width:160px;overflow:hidden}.caret.svelte-1gh51ee{opacity:.6;font-size:10px}@media (width<=600px){.trigger.svelte-1gh51ee{justify-content:center;gap:0;width:32px;max-width:32px;padding:0}.trigger-icon.svelte-1gh51ee{display:inline-block}.dot.svelte-1gh51ee,.label.svelte-1gh51ee,.caret.svelte-1gh51ee{display:none}}.menu.svelte-1gh51ee{z-index:100;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md,8px);min-width:min(280px,100vw - 24px);max-width:min(360px,100vw - 24px);box-shadow:var(--shadow-lg);padding:var(--space-2);position:absolute;top:calc(100% + 6px);right:0}@media (width<=600px){.menu.svelte-1gh51ee{top:calc(var(--nav-height) + 6px);right:var(--space-3);position:fixed}}.menu-header.svelte-1gh51ee{padding:var(--space-2) var(--space-3);font-size:var(--text-xs);color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.04em}.menu-item.svelte-1gh51ee{align-items:flex-start;gap:var(--space-2);width:100%;padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm,6px);cursor:pointer;text-align:left;font:inherit;color:var(--color-text);background:0 0;border:0;display:flex}.menu-item.svelte-1gh51ee:hover:not(:disabled),.menu-item.svelte-1gh51ee:focus-visible{background:var(--color-bg-tertiary)}.menu-item.svelte-1gh51ee:disabled{opacity:.6;cursor:progress}.menu-item.active.svelte-1gh51ee{background:var(--color-bg-tertiary)}.check.svelte-1gh51ee{width:14px;color:var(--color-primary);flex-shrink:0}.menu-item-text.svelte-1gh51ee{flex-direction:column;display:flex;overflow:hidden}.menu-item-label.svelte-1gh51ee{font-weight:500;font-size:var(--text-sm)}.menu-item-url.svelte-1gh51ee{font-size:var(--text-xs);color:var(--color-text-secondary);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.menu-divider.svelte-1gh51ee{height:1px;margin:var(--space-2) 0;background:var(--color-border)}.menu-item.link.svelte-1gh51ee{color:var(--color-primary);text-decoration:none}.picker.svelte-1owsj0q{position:relative}.trigger.svelte-1owsj0q{align-items:center;gap:var(--space-2);padding:0 var(--space-3);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md,8px);height:32px;font-size:var(--text-sm);color:var(--color-text);cursor:pointer;max-width:240px;display:inline-flex;overflow:hidden}.trigger.svelte-1owsj0q:hover{background:var(--color-surface-hover)}.trigger-icon.svelte-1owsj0q{color:var(--color-text-secondary);flex-shrink:0}.dot.svelte-1owsj0q{background:var(--color-text-tertiary);border-radius:50%;flex-shrink:0;width:6px;height:6px;transition:background .12s}.dot.connected.svelte-1owsj0q{background:var(--color-success,#16a34a)}.label.svelte-1owsj0q{text-overflow:ellipsis;white-space:nowrap;max-width:160px;overflow:hidden}.caret.svelte-1owsj0q{opacity:.6;font-size:10px}@media (width<=600px){.trigger.svelte-1owsj0q{justify-content:center;gap:0;width:32px;max-width:32px;padding:0}.label.svelte-1owsj0q,.caret.svelte-1owsj0q,.dot.svelte-1owsj0q{display:none}}.menu.svelte-1owsj0q{z-index:100;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md,8px);min-width:min(300px,100vw - 24px);max-width:min(380px,100vw - 24px);box-shadow:var(--shadow-lg);padding:var(--space-2);position:absolute;top:calc(100% + 6px);right:0}@media (width<=600px){.menu.svelte-1owsj0q{top:calc(var(--nav-height) + 6px);right:var(--space-3);position:fixed}}.menu-header.svelte-1owsj0q{padding:var(--space-2) var(--space-3);font-size:var(--text-xs);color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.04em}.menu-item.svelte-1owsj0q{align-items:flex-start;gap:var(--space-2);width:100%;padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm,6px);cursor:pointer;text-align:left;font:inherit;color:var(--color-text);background:0 0;border:0;display:flex}.menu-item.svelte-1owsj0q:hover:not(:disabled),.menu-item.svelte-1owsj0q:focus-visible{background:var(--color-bg-tertiary)}.menu-item.svelte-1owsj0q:disabled{opacity:.6;cursor:not-allowed}.menu-item.active.svelte-1owsj0q{background:var(--color-bg-tertiary)}.new-btn.svelte-1owsj0q{color:var(--color-primary);font-weight:500}.check.svelte-1owsj0q{text-align:center;width:14px;color:var(--color-primary);flex-shrink:0}.menu-item-text.svelte-1owsj0q{flex-direction:column;flex:1;min-width:0;display:flex;overflow:hidden}.menu-item-label.svelte-1owsj0q{font-weight:500;font-size:var(--text-sm);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.menu-item-meta.svelte-1owsj0q{font-size:var(--text-xs);color:var(--color-text-secondary)}.menu-divider.svelte-1owsj0q{height:1px;margin:var(--space-2) 0;background:var(--color-border)}.session-list.svelte-1owsj0q{max-height:60vh;overflow-y:auto}.empty.svelte-1owsj0q,.error.svelte-1owsj0q{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);font-size:var(--text-sm);color:var(--color-text-secondary);display:flex}.error.svelte-1owsj0q{color:var(--color-danger)}.error.svelte-1owsj0q span:where(.svelte-1owsj0q):first-child{flex:1}.retry-btn.svelte-1owsj0q{font-size:var(--text-xs);border:1px solid var(--color-danger);border-radius:var(--radius-full);color:var(--color-danger);cursor:pointer;background:0 0;padding:2px 8px}.retry-btn.svelte-1owsj0q:hover{background:var(--color-danger);color:var(--color-text-inverse)}.notice.svelte-1owsj0q{margin:0 var(--space-2) var(--space-2);padding:var(--space-2) var(--space-3);font-size:var(--text-xs);color:var(--color-text-secondary);background:var(--color-bg-tertiary);border-radius:var(--radius-sm,6px)}.show-all.svelte-1owsj0q{width:100%;padding:var(--space-2) var(--space-3);color:var(--color-primary);font:inherit;font-size:var(--text-xs);text-align:left;cursor:pointer;border-radius:var(--radius-sm,6px);background:0 0;border:0}.show-all.svelte-1owsj0q:hover{background:var(--color-bg-tertiary)}.spinner.svelte-1owsj0q{border:2px solid;border-right-color:#0000;border-radius:50%;width:12px;height:12px;animation:.6s linear infinite svelte-1owsj0q-spin;display:inline-block}@keyframes svelte-1owsj0q-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.spinner.svelte-1owsj0q{animation:none}}.theme-toggle.svelte-1cmi4dh{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);width:32px;height:32px;color:var(--color-text-secondary);cursor:pointer;transition:background var(--transition-fast), color var(--transition-fast), border-color var(--transition-fast);justify-content:center;align-items:center;padding:0;display:inline-flex}.theme-toggle.svelte-1cmi4dh:hover{color:var(--color-text);background:var(--color-surface-hover);border-color:var(--color-border-hover)}.theme-toggle.svelte-1cmi4dh:focus-visible{outline:2px solid var(--color-primary);outline-offset:-2px}.theme-toggle[aria-pressed=true].svelte-1cmi4dh{color:var(--color-primary);background:var(--color-bg-tertiary);border-color:var(--color-border)}.navbar.svelte-rfuq4y{z-index:50;background:var(--color-navbar-bg);border-bottom:1px solid var(--color-border);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);position:sticky;top:0}.navbar-inner.svelte-rfuq4y{width:100%;padding:0 var(--space-6);height:var(--nav-height);align-items:center;gap:var(--space-4);display:flex}.navbar-brand.svelte-rfuq4y{margin-right:var(--space-2)}.navbar-actions.svelte-rfuq4y{margin-left:auto}.navbar-brand.svelte-rfuq4y{align-items:center;gap:var(--space-3);min-width:0;display:flex}.brand-icon.svelte-rfuq4y{flex-shrink:0;justify-content:center;align-items:center;width:34px;height:34px;display:flex}.brand-icon.svelte-rfuq4y img:where(.svelte-rfuq4y){max-width:34px}.brand-text.svelte-rfuq4y{font-size:var(--text-lg);font-weight:var(--font-bold);color:var(--color-text);letter-spacing:-.01em}.navbar-actions.svelte-rfuq4y{align-items:center;gap:var(--space-2);flex-shrink:0;display:flex}.version-badge.svelte-rfuq4y{font-size:calc(var(--text-xs) - 2.5pt);font-weight:var(--font-medium);font-family:var(--font-mono);color:var(--color-text-tertiary);background:var(--color-bg-tertiary);border-radius:var(--radius-full);letter-spacing:.02em;padding:2px 8px}.navbar-nav.svelte-rfuq4y{align-items:center;gap:var(--space-1);display:flex}.desktop-actions.svelte-rfuq4y{align-items:center;gap:var(--space-2);display:flex}.mobile-menu-btn.svelte-rfuq4y{justify-content:center;align-items:center;gap:var(--space-2);height:32px;padding:0 var(--space-3);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text-secondary);font-size:var(--text-sm);font-weight:var(--font-medium);cursor:pointer;transition:background var(--transition-fast), color var(--transition-fast), border-color var(--transition-fast);display:none}.mobile-menu-btn.svelte-rfuq4y:hover{color:var(--color-text);background:var(--color-surface-hover);border-color:var(--color-border-hover)}.mobile-menu-btn.svelte-rfuq4y:focus-visible{outline:2px solid var(--color-primary);outline-offset:-2px}.mobile-sheet-overlay.svelte-rfuq4y{z-index:299}.mobile-sheet.svelte-rfuq4y{z-index:300;width:min(420px,100vw)}.mobile-sheet-body.svelte-rfuq4y{gap:var(--space-5);flex-direction:column;display:flex}.mobile-sheet-section.svelte-rfuq4y{gap:var(--space-3);flex-direction:column;display:flex}.mobile-section-label.svelte-rfuq4y{font-size:var(--text-xs);font-weight:var(--font-semibold);text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-secondary)}.mobile-nav-list.svelte-rfuq4y{gap:var(--space-2);flex-direction:column;display:flex}.mobile-nav-link.svelte-rfuq4y{min-height:40px;padding:0 var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text);background:var(--color-surface);font-size:var(--text-sm);font-weight:var(--font-medium);align-items:center;text-decoration:none;display:flex}.mobile-nav-link.active.svelte-rfuq4y{color:var(--color-primary);border-color:var(--color-border);background:var(--color-bg-tertiary)}.mobile-control-row.svelte-rfuq4y{width:100%}.mobile-control-row.svelte-rfuq4y .trigger{justify-content:flex-start;width:100%;max-width:none}.mobile-control-row--voice.svelte-rfuq4y .voice-control{gap:var(--space-2);flex-wrap:wrap}.mobile-utility-row.svelte-rfuq4y{justify-content:space-between;align-items:center;gap:var(--space-3);padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);display:flex}.mobile-utility-labels.svelte-rfuq4y{gap:var(--space-1);flex-direction:column;min-width:0;display:flex}.mobile-utility-title.svelte-rfuq4y{color:var(--color-text);font-size:var(--text-sm);font-weight:var(--font-medium)}.mobile-utility-copy.svelte-rfuq4y{color:var(--color-text-secondary);font-size:var(--text-xs)}.nav-btn.svelte-rfuq4y{align-items:center;gap:var(--space-2);height:32px;padding:0 var(--space-3);border-radius:var(--radius-md);color:var(--color-text-secondary);font-size:var(--text-sm);font-weight:var(--font-medium);cursor:pointer;transition:all var(--transition-fast);white-space:nowrap;background:0 0;border:1px solid #0000;text-decoration:none;display:inline-flex}.nav-btn.svelte-rfuq4y:hover{color:var(--color-text);background:var(--color-surface-hover)}.nav-btn.svelte-rfuq4y:focus-visible{outline:2px solid var(--color-primary);outline-offset:-2px}.nav-btn.active.svelte-rfuq4y{color:var(--color-primary);background:var(--color-bg-tertiary);border-color:var(--color-border)}@media (width<=768px){.navbar-inner.svelte-rfuq4y{padding:0 var(--space-4)}}@media (width<=600px){.navbar-inner.svelte-rfuq4y{gap:var(--space-2)}.navbar-actions.svelte-rfuq4y{gap:var(--space-1)}.desktop-actions.svelte-rfuq4y{display:none}.mobile-menu-btn.svelte-rfuq4y{display:inline-flex}.nav-label.svelte-rfuq4y{display:inline}.navbar-nav.svelte-rfuq4y{margin-left:auto;margin-right:var(--space-1)}.navbar-nav.svelte-rfuq4y a:not([href=\/chat]){display:none}}@media (width<=480px){.version-badge.svelte-rfuq4y,.brand-text.svelte-rfuq4y{display:none}}@media (width<=360px){.navbar-actions.svelte-rfuq4y{gap:4px}.mobile-menu-label.svelte-rfuq4y{display:none}.mobile-menu-btn.svelte-rfuq4y{gap:0;width:32px;padding:0}.navbar-inner.svelte-rfuq4y{padding:0 var(--space-3)}}.auth-gate.svelte-1vviwqr{max-width:none;height:100dvh;padding:var(--space-6);box-sizing:border-box;background-color:var(--color-bg-secondary);background-image:url(../../../fu.png);background-position:left -2% bottom -2%;background-repeat:no-repeat;background-size:35%;justify-content:center;align-items:center;margin:0;display:flex;overflow:hidden}.auth-card.svelte-1vviwqr{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-xl);width:100%;max-width:460px;box-shadow:var(--shadow-lg);padding:var(--space-6);box-sizing:border-box;margin-bottom:10vh}.auth-brand.svelte-1vviwqr{align-items:center;gap:var(--space-4);margin-bottom:var(--space-5);display:flex}.auth-brand.svelte-1vviwqr h1:where(.svelte-1vviwqr){font-size:var(--text-xl);font-weight:var(--font-semibold);color:var(--color-text)}.auth-brand.svelte-1vviwqr p:where(.svelte-1vviwqr){font-size:var(--text-sm);color:var(--color-text-secondary);margin-top:4px}.brand-icon.svelte-1vviwqr{flex-shrink:0;justify-content:center;align-items:center;width:34px;height:34px;display:flex}.brand-icon.svelte-1vviwqr img:where(.svelte-1vviwqr){max-width:34px}.auth-form.svelte-1vviwqr{gap:var(--space-3);display:grid}.auth-form.svelte-1vviwqr label:where(.svelte-1vviwqr){font-size:var(--text-sm);font-weight:var(--font-medium);color:var(--color-text-secondary)}.auth-form.svelte-1vviwqr input:where(.svelte-1vviwqr):not(.sr-only){border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg);width:100%;height:40px;color:var(--color-text);font-size:var(--text-sm);padding:0 12px}.auth-form.svelte-1vviwqr input:where(.svelte-1vviwqr):not(.sr-only):focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-subtle);outline:none}.auth-error.svelte-1vviwqr{color:var(--color-danger);font-size:var(--text-sm);margin:0}.sr-only.svelte-1vviwqr{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.token-input-wrapper.svelte-1vviwqr{align-items:center;gap:var(--space-2);display:flex}.token-input-wrapper.svelte-1vviwqr input:where(.svelte-1vviwqr){flex:1}.btn-toggle.svelte-1vviwqr{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-md);width:40px;height:40px;color:var(--color-text-secondary);cursor:pointer;transition:all var(--transition-fast);flex-shrink:0;justify-content:center;align-items:center;padding:0;display:inline-flex}.btn-toggle.svelte-1vviwqr:hover{color:var(--color-text);border-color:var(--color-border-hover);background:var(--color-surface-hover)}.btn-toggle.svelte-1vviwqr:focus-visible{outline:2px solid var(--color-primary);outline-offset:-2px}@media (width<=480px){.auth-gate.svelte-1vviwqr{padding:var(--space-3);background-size:45%}.auth-card.svelte-1vviwqr{padding:var(--space-4);margin-bottom:5vh}.auth-brand.svelte-1vviwqr h1:where(.svelte-1vviwqr){font-size:var(--text-lg)}}
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{I as e,L as t,Q as n,R as r,Z as i,r as a,t as o,tt as s}from"./BwTF6U35.js";import{i as c,n as l,r as u,t as d}from"./BuFlayix.js";new URL(`sveltekit-internal://`);function f(e,t){return e===`/`||t===`ignore`?e:t===`never`?e.endsWith(`/`)?e.slice(0,-1):e:t===`always`&&!e.endsWith(`/`)?e+`/`:e}function p(e){return e.split(`%25`).map(decodeURI).join(`%25`)}function ee(e){for(let t in e)e[t]=decodeURIComponent(e[t]);return e}function m({href:e}){return e.split(`#`)[0]}function h(e,t,n,r=!1){let i=new URL(e);Object.defineProperty(i,"searchParams",{value:new Proxy(i.searchParams,{get(e,r){if(r===`get`||r===`getAll`||r===`has`)return(t,...i)=>(n(t),e[r](t,...i));t();let i=Reflect.get(e,r);return typeof i==`function`?i.bind(e):i}}),enumerable:!0,configurable:!0});let a=[`href`,`pathname`,`search`,`toString`,`toJSON`];r&&a.push(`hash`);for(let n of a)Object.defineProperty(i,n,{get(){return t(),e[n]},enumerable:!0,configurable:!0});return i}function g(){}function _(...e){let t=5381;for(let n of e)if(typeof n==`string`){let e=n.length;for(;e;)t=t*33^n.charCodeAt(--e)}else if(ArrayBuffer.isView(n)){let e=new Uint8Array(n.buffer,n.byteOffset,n.byteLength),r=e.length;for(;r;)t=t*33^e[--r]}else throw TypeError(`value must be a string or TypedArray`);return(t>>>0).toString(36)}var te=window.fetch;window.fetch=(e,t)=>((e instanceof Request?e.method:t?.method||`GET`)!==`GET`&&v.delete(b(e)),te(e,t));var v=new Map;function y(e,t){let n=b(e,t),r=document.querySelector(n);if(r?.textContent){r.remove();let{body:e,...t}=JSON.parse(r.textContent),i=r.getAttribute(`data-ttl`);return i&&v.set(n,{body:e,init:t,ttl:1e3*Number(i)}),r.getAttribute(`data-b64`)!==null&&(e=d(e)),Promise.resolve(new Response(e,t))}return window.fetch(e,t)}function ne(e,t,n){if(v.size>0){let t=b(e,n),r=v.get(t);if(r){if(performance.now()<r.ttl&&[`default`,`force-cache`,`only-if-cached`,void 0].includes(n?.cache))return new Response(r.body,r.init);v.delete(t)}}return window.fetch(t,n)}function b(e,t){let n=`script[data-sveltekit-fetched][data-url=${JSON.stringify(e instanceof Request?e.url:e)}]`;if(t?.headers||t?.body){let e=[];t.headers&&e.push([...new Headers(t.headers)].join(`,`)),t.body&&(typeof t.body==`string`||ArrayBuffer.isView(t.body))&&e.push(t.body),n+=`[data-hash="${_(...e)}"]`}return n}var re=/^(\[)?(\.\.\.)?(\w+)(?:=(\w+))?(\])?$/,x=/^\/\((?:.+)\)$/;function ie(e){let t=[];return{pattern:e===`/`||x.test(e)?/^\/$/:RegExp(`^${oe(e).map(e=>{let n=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(e);if(n)return t.push({name:n[1],matcher:n[2],optional:!1,rest:!0,chained:!0}),`(?:/([^]*))?`;let r=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(e);if(r)return t.push({name:r[1],matcher:r[2],optional:!0,rest:!1,chained:!0}),`(?:/([^/]+))?`;if(!e)return;let i=e.split(/\[(.+?)\](?!\])/);return`/`+i.map((e,n)=>{if(n%2){if(e.startsWith(`x+`))return ce(String.fromCharCode(parseInt(e.slice(2),16)));if(e.startsWith(`u+`))return ce(String.fromCharCode(...e.slice(2).split(`-`).map(e=>parseInt(e,16))));let[,r,a,o,s]=re.exec(e);return t.push({name:o,matcher:s,optional:!!r,rest:!!a,chained:a?n===1&&i[0]===``:!1}),a?`([^]*?)`:r?`([^/]*)?`:`([^/]+?)`}return ce(e)}).join(``)}).join(``)}/?$`),params:t}}function ae(e){return e!==``&&!/^\([^)]+\)$/.test(e)}function oe(e){return e.slice(1).split(`/`).filter(ae)}function se(e,t,n){let r={},i=e.slice(1),a=i.filter(e=>e!==void 0),o=0;for(let e=0;e<t.length;e+=1){let s=t[e],c=i[e-o];if(s.chained&&s.rest&&o&&(c=i.slice(e-o,e+1).filter(e=>e).join(`/`),o=0),c===void 0)if(s.rest)c=``;else continue;if(!s.matcher||n[s.matcher](c)){r[s.name]=c;let n=t[e+1],l=i[e+1];n&&!n.rest&&n.optional&&l&&s.chained&&(o=0),!n&&!l&&Object.keys(r).length===a.length&&(o=0);continue}if(s.optional&&s.chained){o++;continue}return}if(!o)return r}function ce(e){return e.normalize().replace(/[[\]]/g,`\\$&`).replace(/%/g,`%25`).replace(/\//g,`%2[Ff]`).replace(/\?/g,`%3[Ff]`).replace(/#/g,`%23`).replace(/[.*+?^${}()|\\]/g,`\\$&`)}function le({nodes:e,server_loads:t,dictionary:n,matchers:r}){let i=new Set(t);return Object.entries(n).map(([t,[n,i,s]])=>{let{pattern:c,params:l}=ie(t),u={id:t,exec:e=>{let t=c.exec(e);if(t)return se(t,l,r)},errors:[1,...s||[]].map(t=>e[t]),layouts:[0,...i||[]].map(o),leaf:a(n)};return u.errors.length=u.layouts.length=Math.max(u.errors.length,u.layouts.length),u});function a(t){let n=t<0;return n&&(t=~t),[n,e[t]]}function o(t){return t===void 0?t:[i.has(t),e[t]]}}function ue(e,t=JSON.parse){try{return t(sessionStorage[e])}catch{}}function de(e,t,n=JSON.stringify){let r=n(t);try{sessionStorage[e]=r}catch{}}var S=globalThis.__sveltekit_1i7l36r?.base??``,fe=globalThis.__sveltekit_1i7l36r?.assets??S??``,pe=`0.11.0-rc.4`,me=`sveltekit:snapshot`,he=`sveltekit:scroll`,ge=`sveltekit:states`,C=`sveltekit:history`,w=`sveltekit:navigation`,T={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},_e=location.origin;function ve(e){if(e instanceof URL)return e;let t=document.baseURI;if(!t){let e=document.getElementsByTagName(`base`);t=e.length?e[0].href:document.URL}return new URL(e,t)}function E(){return{x:pageXOffset,y:pageYOffset}}function D(e,t){return e.getAttribute(`data-sveltekit-${t}`)}var ye={...T,"":T.hover};function be(e){let t=e.assignedSlot??e.parentNode;return t?.nodeType===11&&(t=t.host),t}function xe(e,t){for(;e&&e!==t;){if(e.nodeName.toUpperCase()===`A`&&e.hasAttribute(`href`))return e;e=be(e)}}function Se(e,t,n){let r;try{if(r=new URL(e instanceof SVGAElement?e.href.baseVal:e.href,document.baseURI),n&&r.hash.match(/^#[^/]/)){let e=location.hash.split(`#`)[1]||`/`;r.hash=`#${e}${r.hash}`}}catch{}let i=e instanceof SVGAElement?e.target.baseVal:e.target,a=!r||!!i||Ee(r,t,n)||(e.getAttribute(`rel`)||``).split(/\s+/).includes(`external`),o=r?.origin===_e&&e.hasAttribute(`download`);return{url:r,external:a,target:i,download:o}}function O(e){let t=null,n=null,r=null,i=null,a=null,o=null,s=e;for(;s&&s!==document.documentElement;)r===null&&(r=D(s,`preload-code`)),i===null&&(i=D(s,`preload-data`)),t===null&&(t=D(s,`keepfocus`)),n===null&&(n=D(s,`noscroll`)),a===null&&(a=D(s,`reload`)),o===null&&(o=D(s,`replacestate`)),s=be(s);function c(e){switch(e){case``:case`true`:return!0;case`off`:case`false`:return!1;default:return}}return{preload_code:ye[r??`off`],preload_data:ye[i??`off`],keepfocus:c(t),noscroll:c(n),reload:c(a),replace_state:c(o)}}function Ce(e){let t=s(e),n=!0;function r(){n=!0,t.update(e=>e)}function i(e){n=!1,t.set(e)}function a(e){let r;return t.subscribe(t=>{(r===void 0||n&&t!==r)&&e(r=t)})}return{notify:r,set:i,subscribe:a}}var we={v:g};function Te(){let{set:e,subscribe:t}=s(!1);async function n(){clearTimeout(void 0);try{let t=await fetch(`${fe}/_app/version.json`,{headers:{pragma:`no-cache`,"cache-control":`no-cache`}});if(!t.ok)return!1;let n=(await t.json()).version!==pe;return n&&(e(!0),we.v(),clearTimeout(void 0)),n}catch{return!1}}return{subscribe:t,check:n}}function Ee(e,t,n){return e.origin!==_e||!e.pathname.startsWith(t)?!0:n?e.pathname!==location.pathname:!1}function De(e){}var Oe=new Set([`load`,`prerender`,`csr`,`ssr`,`trailingSlash`,`config`]);new Set([...Oe,`entries`]);var ke=new Set([...Oe]);new Set([...ke,`actions`,`entries`]),new Set([`GET`,`POST`,`PATCH`,`PUT`,`DELETE`,`OPTIONS`,`HEAD`,`fallback`,`prerender`,`trailingSlash`,`config`,`entries`]);function Ae(e){return e.filter(e=>e!=null)}function k(e,t){return e+`/`+t}function je(e){return e instanceof l||e instanceof c?e.status:500}function Me(e){return e instanceof c?e.text:`Internal Error`}var A,j,M,Ne=a.toString().includes(`$$`)||/function \w+\(\) \{\}/.test(a.toString()),Pe=`a:`;Ne?(A={data:{},form:null,error:null,params:{},route:{id:null},state:{},status:-1,url:new URL(Pe)},j={current:null},M={current:!1}):(A=new class{#e=n({});get data(){return e(this.#e)}set data(e){i(this.#e,e)}#t=n(null);get form(){return e(this.#t)}set form(e){i(this.#t,e)}#n=n(null);get error(){return e(this.#n)}set error(e){i(this.#n,e)}#r=n({});get params(){return e(this.#r)}set params(e){i(this.#r,e)}#i=n({id:null});get route(){return e(this.#i)}set route(e){i(this.#i,e)}#a=n({});get state(){return e(this.#a)}set state(e){i(this.#a,e)}#o=n(-1);get status(){return e(this.#o)}set status(e){i(this.#o,e)}#s=n(new URL(Pe));get url(){return e(this.#s)}set url(e){i(this.#s,e)}},j=new class{#e=n(null);get current(){return e(this.#e)}set current(e){i(this.#e,e)}},M=new class{#e=n(!1);get current(){return e(this.#e)}set current(e){i(this.#e,e)}},we.v=()=>M.current=!0);function Fe(e){Object.assign(A,e)}var Ie={spanContext(){return Le},setAttribute(){return this},setAttributes(){return this},addEvent(){return this},setStatus(){return this},updateName(){return this},end(){return this},isRecording(){return!1},recordException(){return this},addLink(){return this},addLinks(){return this}},Le={traceId:``,spanId:``,traceFlags:0},{onMount:Re,tick:ze}=o,Be=new Set([`icon`,`shortcut icon`,`apple-touch-icon`]),N=null,P=ue(`sveltekit:scroll`)??{},F=ue(`sveltekit:snapshot`)??{},I={url:Ce({}),page:Ce({}),navigating:s(null),updated:Te()};function Ve(e){P[e]=E()}function He(e,t){let n=e+1;for(;P[n];)delete P[n],n+=1;for(n=t+1;F[n];)delete F[n],n+=1}function L(e,t=!1){return t?location.replace(e.href):location.href=e.href,new Promise(g)}async function Ue(){if(`serviceWorker`in navigator){let e=await navigator.serviceWorker.getRegistration(S||`/`);e&&await e.update()}}var We,Ge,R,z,Ke,B,V=[],H=[],U=null;function W(){U?.fork?.then(e=>e?.discard()),U=null}var qe=new Map,Je=new Set,Ye=new Set,G=new Set,K={branch:[],error:null,url:null,nav:null},Xe=!1,Ze=!1,Qe=!0,q=!1,J=!1,$e=!1,et=!1,tt,Y,X,Z,nt=new Set,rt=new Map,it=new Map;async function at(e,t,n){globalThis.__sveltekit_1i7l36r&&(globalThis.__sveltekit_1i7l36r.query,globalThis.__sveltekit_1i7l36r.prerender),document.URL!==location.href&&(location.href=location.href),B=e,await e.hooks.init?.(),We=le(e),z=document.documentElement,Ke=t,Ge=e.nodes[0],R=e.nodes[1],Ge(),R(),Y=history.state?.[C],X=history.state?.[w],Y||(Y=X=Date.now(),history.replaceState({...history.state,[C]:Y,[w]:X},``));let r=P[Y];function i(){r&&(history.scrollRestoration=`manual`,scrollTo(r.x,r.y))}n?(i(),await Nt(Ke,n)):(await Q({type:`enter`,url:ve(B.hash?zt(new URL(location.href)):location.href),replace_state:!0}),i()),Mt()}function ot(){V.length=0,et=!1}function st(e){H.some(e=>e?.snapshot)&&(F[e]=H.map(e=>e?.snapshot?.capture()))}function ct(e){F[e]?.forEach((e,t)=>{H[t]?.snapshot?.restore(e)})}function lt(){Ve(Y),de(he,P),st(X),de(me,F)}async function ut(e,t,n,i){let a,o;t.invalidateAll&&W(),await Q({type:`goto`,url:ve(e),keepfocus:t.keepFocus,noscroll:t.noScroll,replace_state:t.replaceState,state:t.state,redirect_count:n,nav_token:i,accept:()=>{if(t.invalidateAll){et=!0,a=new Set;for(let[e,t]of rt)for(let n of t.keys())a.add(k(e,n));o=new Set;for(let[e,t]of it)for(let n of t.keys())o.add(k(e,n))}t.invalidate&&t.invalidate.forEach(jt)}}),t.invalidateAll&&r().then(r).then(()=>{for(let[e,t]of rt)for(let[n,{resource:r}]of t)a?.has(k(e,n))&&r.refresh();for(let[e,t]of it)for(let[n,{resource:r}]of t)o?.has(k(e,n))&&r.reconnect()})}async function dt(e){if(e.id!==U?.id){W();let t={};nt.add(t),U={id:e.id,token:t,promise:xt({...e,preload:t}).then(e=>(nt.delete(t),e.type===`loaded`&&e.state.error&&W(),e)),fork:null}}return U.promise}async function ft(e){let t=(await Tt(e,!1))?.route;t&&await Promise.all([...t.layouts,t.leaf].filter(Boolean).map(e=>e[1]()))}async function pt(e,t,n){let r={params:K.params,route:{id:K.route?.id??null},url:new URL(location.href)};if(K={...e.state,nav:r},Fe(e.props.page),tt=new B.root({target:t,props:{...e.props,stores:I,components:H},hydrate:n,sync:!1,transformError:void 0}),await Promise.resolve(),ct(X),n){let e={from:null,to:{...r,scroll:P[Y]??E()},willUnload:!1,type:`enter`,complete:Promise.resolve()};G.forEach(t=>t(e))}Ze=!0}async function mt({url:e,params:t,branch:n,errors:r,status:i,error:a,route:o,form:s}){let c=`never`;if(S&&(e.pathname===S||e.pathname===S+`/`))c=`always`;else for(let e of n)e?.slash!==void 0&&(c=e.slash);e.pathname=f(e.pathname,c),e.search=e.search;let l={type:`loaded`,state:{url:e,params:t,branch:n,error:a,route:o},props:{constructors:Ae(n).map(e=>e.node.component),page:Rt(A)}};s!==void 0&&(l.props.form=s);let u={},d=!A,p=0;for(let e=0;e<Math.max(n.length,K.branch.length);e+=1){let t=n[e],r=K.branch[e];t?.data!==r?.data&&(d=!0),t&&(u={...u,...t.data},d&&(l.props[`data_${p}`]=u),p+=1)}return(!K.url||e.href!==K.url.href||K.error!==a||s!==void 0&&s!==A.form||d)&&(l.props.page={error:a,params:t,route:{id:o?.id??null},state:{},status:i,url:new URL(e),form:s??null,data:d?u:A.data}),l}async function ht({loader:e,parent:t,url:n,params:r,route:i,server_data_node:a}){let o=null,s=!0,c={dependencies:new Set,params:new Set,parent:!1,route:!1,url:!1,search_params:new Set},l=await e();if(l.universal?.load){function e(...e){for(let t of e){let{href:e}=new URL(t,n);c.dependencies.add(e)}}let u={tracing:{enabled:!1,root:Ie,current:Ie},route:new Proxy(i,{get:(e,t)=>(s&&(c.route=!0),e[t])}),params:new Proxy(r,{get:(e,t)=>(s&&c.params.add(t),e[t])}),data:a?.data??null,url:h(n,()=>{s&&(c.url=!0)},e=>{s&&c.search_params.add(e)},B.hash),async fetch(t,r){t instanceof Request&&(r={body:t.method===`GET`||t.method===`HEAD`?void 0:await t.blob(),cache:t.cache,credentials:t.credentials,headers:[...t.headers].length>0?t?.headers:void 0,integrity:t.integrity,keepalive:t.keepalive,method:t.method,mode:t.mode,redirect:t.redirect,referrer:t.referrer,referrerPolicy:t.referrerPolicy,signal:t.signal,...r});let{resolved:i,promise:a}=gt(t,r,n);return s&&e(i.href),a},setHeaders:g,depends:e,parent(){return s&&(c.parent=!0),t()},untrack(e){s=!1;try{return e()}finally{s=!0}}};o=await l.universal.load.call(null,u)??null}return{node:l,loader:e,server:a,universal:l.universal?.load?{type:`data`,data:o,uses:c}:null,data:o??a?.data??null,slash:l.universal?.trailingSlash??a?.slash}}function gt(e,t,n){let r=e instanceof Request?e.url:e,i=new URL(r,n);return i.origin===n.origin&&(r=i.href.slice(n.origin.length)),{resolved:i,promise:Ze?ne(r,i.href,t):y(r,t)}}function _t(e,t,n,r,i,a){if(et)return!0;if(!i)return!1;if(i.parent&&e||i.route&&t||i.url&&n)return!0;for(let e of i.search_params)if(r.has(e))return!0;for(let e of i.params)if(a[e]!==K.params[e])return!0;for(let e of i.dependencies)if(V.some(t=>t(new URL(e))))return!0;return!1}function vt(e,t){return e?.type===`data`?e:e?.type===`skip`?t??null:null}function yt(e,t){if(!e)return new Set(t.searchParams.keys());let n=new Set([...e.searchParams.keys(),...t.searchParams.keys()]);for(let r of n){let i=e.searchParams.getAll(r),a=t.searchParams.getAll(r);i.every(e=>a.includes(e))&&a.every(e=>i.includes(e))&&n.delete(r)}return n}function bt({error:e,url:t,route:n,params:r}){return{type:`loaded`,state:{error:e,url:t,route:n,params:r,branch:[]},props:{page:Rt(A),constructors:[]}}}async function xt({id:e,invalidating:t,url:n,params:r,route:i,preload:a}){if(U?.id===e)return nt.delete(U.token),U.promise;let{errors:o,layouts:s,leaf:c}=i,d=[...s,c];o.forEach(e=>e?.().catch(g)),d.forEach(e=>e?.[1]().catch(g));let f=K.url?e!==Dt(K.url):!1,p=K.route?i.id!==K.route.id:!1,ee=yt(K.url,n),m=!1,h=d.map(async(e,t)=>{if(!e)return;let a=K.branch[t];return e[1]===a?.loader&&!_t(m,p,f,ee,a.universal?.uses,r)?a:(m=!0,ht({loader:e[1],url:n,params:r,route:i,parent:async()=>{let e={};for(let n=0;n<t;n+=1)Object.assign(e,(await h[n])?.data);return e},server_data_node:vt(e[0]?{type:`skip`}:null,e[0]?a?.server:void 0)}))});for(let e of h)e.catch(g);let _=[];for(let e=0;e<d.length;e+=1)if(d[e])try{_.push(await h[e])}catch(t){if(t instanceof u)return{type:`redirect`,location:t.location};if(nt.has(a))return bt({error:await $(t,{params:r,url:n,route:{id:i.id}}),url:n,params:r,route:i});let s=je(t),c;if(t instanceof l)c=t.body;else{if(await I.updated.check())return await Ue(),await L(n);c=await $(t,{params:r,url:n,route:{id:i.id}})}let d=await St(e,_,o);return d?mt({url:n,params:r,branch:_.slice(0,d.idx).concat(d.node),errors:o,status:s,error:c,route:i}):await kt(n,{id:i.id},c,s)}else _.push(void 0);return mt({url:n,params:r,branch:_,errors:o,status:200,error:null,route:i,form:t?void 0:null})}async function St(e,t,n){for(;e--;)if(n[e]){let r=e;for(;!t[r];)--r;try{return{idx:r+1,node:{node:await n[e](),loader:n[e],data:{},server:null,universal:null}}}catch{continue}}}async function Ct({status:e,error:t,url:n,route:r}){let i={};try{return mt({url:n,params:i,branch:[await ht({loader:Ge,url:n,params:i,route:r,parent:()=>Promise.resolve({}),server_data_node:vt(null)}),{node:await R(),loader:R,universal:null,server:null,data:null}],status:e,error:t,errors:[],route:null})}catch(e){if(e instanceof u)return ut(new URL(e.location,location.href),{},0);throw e}}async function wt(e){let t=e.href;if(qe.has(t))return qe.get(t);let n;try{let r=(async()=>{let t=await B.hooks.reroute({url:new URL(e),fetch:async(t,n)=>gt(t,n,e).promise})??e;if(typeof t==`string`){let n=new URL(e);B.hash?n.hash=t:n.pathname=t,t=n}return t})();qe.set(t,r),n=await r}catch{qe.delete(t);return}return n}async function Tt(e,t){if(e&&!Ee(e,S,B.hash)){let n=await wt(e);if(!n)return;let r=Et(n);for(let n of We){let i=n.exec(r);if(i)return{id:Dt(e),invalidating:t,route:n,params:ee(i),url:e}}}}function Et(e){return p(B.hash?e.hash.replace(/^#/,``).replace(/[?#].+/,``):e.pathname.slice(S.length))||`/`}function Dt(e){return(B.hash?e.hash.replace(/^#/,``):e.pathname)+e.search}function Ot({url:e,type:t,intent:n,delta:r,event:i,scroll:a}){let o=!1,s=Lt(K,n,e,t,a??null);r!==void 0&&(s.navigation.delta=r),i!==void 0&&(s.navigation.event=i);let c={...s.navigation,cancel:()=>{o=!0,s.reject(Error(`navigation cancelled`))}};return q||Je.forEach(e=>e(c)),o?null:s}async function Q({type:e,url:n,popped:i,keepfocus:a,noscroll:o,replace_state:s,state:l={},redirect_count:u=0,nav_token:d={},accept:f=g,block:p=g,event:ee}){let m=Z;Z=d;let h=await Tt(n,!1),_=e===`enter`?Lt(K,h,n,e):Ot({url:n,type:e,delta:i?.delta,intent:h,scroll:i?.scroll,event:ee});if(!_){p(),Z===d&&(Z=m);return}let te=Y,v=X;f(),q=!0,Ze&&_.navigation.type!==`enter`&&I.navigating.set(j.current=_.navigation);let y=h&&await xt(h);if(!y){if(Ee(n,S,B.hash))return await L(n,s);y=await kt(n,{id:null},await $(new c(404,`Not Found`,`Not found: ${n.pathname}`),{url:n,params:{},route:{id:null}}),404,s)}if(n=h?.url||n,Z!==d)return _.reject(Error(`navigation aborted`)),!1;if(y.type===`redirect`){if(u<20){await Q({type:e,url:new URL(y.location,n),popped:i,keepfocus:a,noscroll:o,replace_state:s,state:l,redirect_count:u+1,nav_token:d}),_.fulfil(void 0);return}y=await Ct({status:500,error:await $(Error(`Redirect loop`),{url:n,params:{},route:{id:null}}),url:n,route:{id:null}})}else y.props.page.status>=400&&await I.updated.check()&&(await Ue(),await L(n,s));if(ot(),Ve(te),st(v),y.props.page.url.pathname!==n.pathname&&(n.pathname=y.props.page.url.pathname),l=i?i.state:l,!i){let e=+!s,t={[C]:Y+=e,[w]:X+=e,[ge]:l};(s?history.replaceState:history.pushState).call(history,t,``,n),s||He(Y,X)}let ne=h&&U?.id===h.id?U.fork:null;U?.fork&&!ne&&W(),U=null,y.props.page.state=l;let b;if(Ze){let e=(await Promise.all(Array.from(Ye,e=>e(_.navigation)))).filter(e=>typeof e==`function`);if(e.length>0){function t(){e.forEach(e=>{G.delete(e)})}e.push(t),e.forEach(e=>{G.add(e)})}let r=_.navigation.to;K={...y.state,nav:{params:r.params,route:r.route,url:r.url}},y.props.page&&(y.props.page.url=n);let i=ne&&await ne;i?b=i.commit():(N=null,tt.$set(y.props),N&&Object.assign(y.props.page,N),Fe(y.props.page),b=t?.()),$e=!0}else await pt(y,Ke,!1);let{activeElement:re}=document;if(await b,await r(),await r(),Z!==d)return _.reject(Error(`navigation aborted`)),!1;y.props.page&&N&&Object.assign(y.props.page,N);let x=null;if(Qe){let e=i?i.scroll:o?E():null;e?scrollTo(e.x,e.y):(x=n.hash&&document.getElementById(Bt(n)))?x.scrollIntoView():scrollTo(0,0)}let ie=document.activeElement!==re&&document.activeElement!==document.body;!a&&!ie&&It(n,!x),Qe=!0,q=!1,e===`popstate`&&ct(X),_.fulfil(void 0),_.navigation.to&&(_.navigation.to.scroll=E()),G.forEach(e=>e(_.navigation)),I.navigating.set(j.current=null)}async function kt(e,t,n,r,i){return e.origin===_e&&e.pathname===location.pathname&&!Xe?await Ct({status:r,error:n,url:e,route:t}):await L(e,i)}function At(){let e,t={element:void 0,href:void 0},n;z.addEventListener(`mousemove`,t=>{let n=t.target;clearTimeout(e),e=setTimeout(()=>{a(n,T.hover)},20)});function r(e){e.defaultPrevented||a(e.composedPath()[0],T.tap)}z.addEventListener(`mousedown`,r),z.addEventListener(`touchstart`,r,{passive:!0});let i=new IntersectionObserver(e=>{for(let t of e)t.isIntersecting&&(ft(new URL(t.target.href)),i.unobserve(t.target))},{threshold:0});async function a(e,r){let i=xe(e,z),a=i===t.element&&i?.href===t.href&&r>=n;if(!i||a)return;let{url:o,external:s,download:c}=Se(i,S,B.hash);if(s||c)return;let l=O(i),u=o&&Dt(K.url)===Dt(o);if(!(l.reload||u))if(r<=l.preload_data){t={element:i,href:i.href},n=T.tap;let e=await Tt(o,!1);if(!e)return;dt(e)}else r<=l.preload_code&&(t={element:i,href:i.href},n=r,ft(o))}function o(){i.disconnect();for(let e of z.querySelectorAll(`a`)){let{url:t,external:n,download:r}=Se(e,S,B.hash);if(n||r)continue;let a=O(e);a.reload||(a.preload_code===T.viewport&&i.observe(e),a.preload_code===T.eager&&ft(t))}}G.add(o),o()}function $(e,t){if(e instanceof l)return e.body;let n=je(e),r=Me(e);return B.hooks.handleError({error:e,event:t,status:n,message:r})??{message:r}}function jt(e){if(typeof e==`function`)V.push(e);else{let{href:t}=new URL(e,location.href);V.push(e=>e.href===t)}}function Mt(){history.scrollRestoration=`manual`,addEventListener(`beforeunload`,e=>{let t=!1;if(lt(),!q){let e=Lt(K,void 0,null,`leave`),n={...e.navigation,cancel:()=>{t=!0,e.reject(Error(`navigation cancelled`))}};Je.forEach(e=>e(n))}t?(e.preventDefault(),e.returnValue=``):history.scrollRestoration=`auto`}),addEventListener(`visibilitychange`,()=>{document.visibilityState===`hidden`&<()}),!navigator.connection?.saveData&&!/2g/.test(navigator.connection?.effectiveType)&&At(),z.addEventListener(`click`,async t=>{if(t.button||t.which!==1||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.defaultPrevented)return;let n=xe(t.composedPath()[0],z);if(!n)return;let{url:r,external:i,target:a,download:o}=Se(n,S,B.hash);if(!r)return;if(a===`_parent`||a===`_top`){if(window.parent!==window)return}else if(a&&a!==`_self`)return;let s=O(n);if(!(n instanceof SVGAElement)&&r.protocol!==location.protocol&&!(r.protocol===`https:`||r.protocol===`http:`)||o)return;let[c,l]=(B.hash?r.hash.replace(/^#/,``):r.href).split(`#`),u=c===m(location);if(i||s.reload&&(!u||!l)){Ot({url:r,type:`link`,event:t})?q=!0:t.preventDefault();return}if(l!==void 0&&u){let[,i]=K.url.href.split(`#`);if(i===l){if(t.preventDefault(),l===``||l===`top`&&n.ownerDocument.getElementById(`top`)===null)scrollTo({top:0});else{let e=n.ownerDocument.getElementById(decodeURIComponent(l));e&&(e.scrollIntoView(),e.focus())}return}if(J=!0,Ve(Y),e(r),!s.replace_state)return;J=!1}t.preventDefault(),await new Promise(e=>{requestAnimationFrame(()=>{setTimeout(e,0)}),setTimeout(e,100)}),await Q({type:`link`,url:r,keepfocus:s.keepfocus,noscroll:s.noscroll,replace_state:s.replace_state??r.href===location.href,event:t})}),z.addEventListener(`submit`,e=>{if(e.defaultPrevented)return;let t=HTMLFormElement.prototype.cloneNode.call(e.target),n=e.submitter;if((n?.formTarget||t.target)===`_blank`||(n?.formMethod||t.method)!==`get`)return;let r=new URL(n?.hasAttribute(`formaction`)&&n?.formAction||t.action);if(Ee(r,S,!1))return;let i=e.target,a=O(i);if(a.reload)return;e.preventDefault(),e.stopPropagation();let o=new FormData(i,n);r.search=new URLSearchParams(o).toString(),Q({type:`form`,url:r,keepfocus:a.keepfocus,noscroll:a.noscroll,replace_state:a.replace_state??r.href===location.href,event:e})}),addEventListener(`popstate`,async t=>{if(!Ft)if(t.state?.[`sveltekit:history`]){let n=t.state[C];if(Z={},n===Y)return;let r=P[n],i=t.state[`sveltekit:states`]??{},a=new URL(t.state[`sveltekit:pageurl`]??location.href),o=t.state[w],s=K.url?m(location)===m(K.url):!1;if(o===X&&($e||s)){i!==A.state&&(A.state=i),e(a),P[Y]=E(),r&&scrollTo(r.x,r.y),Y=n;return}let c=n-Y;await Q({type:`popstate`,url:a,popped:{state:i,scroll:r,delta:c},accept:()=>{Y=n,X=o},block:()=>{history.go(-c)},nav_token:Z,event:t})}else J||(e(new URL(location.href)),B.hash&&location.reload())}),addEventListener(`hashchange`,()=>{J&&(J=!1,history.replaceState({...history.state,[C]:++Y,[w]:X},``,location.href))});for(let e of document.querySelectorAll(`link`))Be.has(e.rel)&&(e.href=e.href);addEventListener(`pageshow`,e=>{e.persisted&&I.navigating.set(j.current=null)});function e(e){K.url=A.url=e,I.page.set(Rt(A)),I.page.notify()}}async function Nt(e,{status:t=200,error:n,node_ids:r,params:i,route:a,server_route:o,data:s,form:c}){Xe=!0;let l=new URL(location.href),d;({params:i={},route:a={id:null}}=await Tt(l,!1)||{}),d=We.find(({id:e})=>e===a.id);let f,p=!0;try{let e=r.map(async(t,n)=>{let r=s[n];return r?.uses&&(r.uses=Pt(r.uses)),ht({loader:B.nodes[t],url:l,params:i,route:a,parent:async()=>{let t={};for(let r=0;r<n;r+=1)Object.assign(t,(await e[r]).data);return t},server_data_node:vt(r)})}),o=await Promise.all(e);if(d){let e=d.layouts;for(let t=0;t<e.length;t++)e[t]||o.splice(t,0,void 0)}f=await mt({url:l,params:i,branch:o,status:t,error:n,errors:d?.errors,form:c,route:d??null})}catch(t){if(t instanceof u){await L(new URL(t.location,location.href));return}f=await Ct({status:je(t),error:await $(t,{url:l,params:i,route:a}),url:l,route:a}),e.textContent=``,p=!1}f.props.page&&(f.props.page.state={}),await pt(f,e,p)}function Pt(e){return{dependencies:new Set(e?.dependencies??[]),params:new Set(e?.params??[]),parent:!!e?.parent,route:!!e?.route,url:!!e?.url,search_params:new Set(e?.search_params??[])}}var Ft=!1;function It(e,t=!0){let n=document.querySelector(`[autofocus]`);if(n)n.focus();else{let n=Bt(e);if(n&&document.getElementById(n)){let{x:r,y:i}=E();setTimeout(()=>{let a=history.state;Ft=!0,location.replace(new URL(`#${n}`,location.href)),history.replaceState(a,``,e),t&&scrollTo(r,i),Ft=!1})}else{let e=document.body,t=e.getAttribute(`tabindex`);e.tabIndex=-1,e.focus({preventScroll:!0,focusVisible:!1}),t===null?e.removeAttribute(`tabindex`):e.setAttribute(`tabindex`,t)}let r=getSelection();if(r&&r.type!==`None`){let e=[];for(let t=0;t<r.rangeCount;t+=1)e.push(r.getRangeAt(t));setTimeout(()=>{if(r.rangeCount===e.length){for(let t=0;t<r.rangeCount;t+=1){let n=e[t],i=r.getRangeAt(t);if(n.commonAncestorContainer!==i.commonAncestorContainer||n.startContainer!==i.startContainer||n.endContainer!==i.endContainer||n.startOffset!==i.startOffset||n.endOffset!==i.endOffset)return}r.removeAllRanges()}})}}}function Lt(e,t,n,r,i=null){let a,o,s=new Promise((e,t)=>{a=e,o=t});return s.catch(g),{navigation:{from:{params:e.params,route:{id:e.route?.id??null},url:e.url,scroll:E()},to:n&&{params:t?.params??null,route:{id:t?.route?.id??null},url:n,scroll:i},willUnload:!t,type:r,complete:s},fulfil:a,reject:o}}function Rt(e){return{data:e.data,error:e.error,form:e.form,params:e.params,route:e.route,state:e.state,status:e.status,url:e.url}}function zt(e){let t=new URL(e);return t.hash=decodeURIComponent(e.hash),t}function Bt(e){let t;if(B.hash){let[,,n]=e.hash.split(`#`,3);t=n??``}else t=e.hash.slice(1);return decodeURIComponent(t)}export{M as a,A as i,I as n,De as o,j as r,at as t};
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import{A as e,D as t,E as n,F as r,I as i,J as a,N as o,O as s,P as c,Q as l,V as u,X as d,Y as f,Z as p,ct as m,d as h,et as g,it as _,j as v,k as y,l as b,n as x,q as S,r as C,rt as w,s as T,st as E,u as D,v as O,w as k}from"./BwTF6U35.js";import"./xihTtKlq.js";import{B as A,J as j,O as M,Y as N,a as P,c as F,g as I,i as L,l as R,n as z,o as B,r as V,s as H,t as U,u as W,z as G}from"./DXseS2Vw.js";import{t as K}from"./DTwNbG18.js";var q=1e3,J=3e4,Y=`/proxy/assistant/event`;function ee(e){let t={},n=[];for(let r of e.split(`
|
|
2
|
+
`))!r||r.startsWith(`:`)||(r.startsWith(`data:`)?n.push(r.replace(/^data:\s?/,``)):r.startsWith(`event:`)?t.event=r.replace(/^event:\s?/,``):r.startsWith(`id:`)&&(t.id=r.replace(/^id:\s?/,``)));return n.length>0&&(t.data=n.join(`
|
|
3
|
+
`)),t}function te(e,t){let n=t.properties?.info,r=n?.id;if(r)switch(t.type){case`session.created`:e.onCreated(r);return;case`session.updated`:e.onUpdated(r,{title:n?.title,updatedAt:n?.time?.updated});return;case`session.deleted`:e.onDeleted(r);return;default:return}}function ne(e){let t=!1,n=new AbortController,r,i=e=>new Promise(t=>{let r=setTimeout(t,e);n.signal.addEventListener(`abort`,()=>{clearTimeout(r),t()},{once:!0})});async function a(){let t={accept:`text/event-stream`};r!==void 0&&(t[`Last-Event-ID`]=r);let i=await fetch(Y,{method:`GET`,headers:t,credentials:`include`,signal:n.signal});if(!i.ok||!i.body)throw Error(`SSE stream failed: ${i.status} ${i.statusText}`);e.onConnect?.();let a=i.body.pipeThrough(new TextDecoderStream).getReader(),o=``;try{for(;;){let{done:t,value:n}=await a.read();if(t)break;o+=n;let i=o.split(`
|
|
4
|
+
|
|
5
|
+
`);o=i.pop()??``;for(let t of i){if(!t)continue;let n=ee(t);if(n.id!==void 0&&(r=n.id),!n.data)continue;let i;try{i=JSON.parse(n.data)}catch(e){console.warn(`[session-events] Bad JSON in SSE frame`,e);continue}te(e,i)}}}finally{try{a.releaseLock()}catch{}}}return(async()=>{let r=0;for(;!t;)try{r++,await a(),r=0,t||await i(500)}catch(a){if(t)return;let o=a instanceof Error?a:Error(String(a));o.name!==`AbortError`&&(console.warn(`[session-events] SSE error, reconnecting`,o),e.onDisconnect?.(o)),await i(Math.min(q*2**Math.max(0,r-1),J)),n.signal.aborted&&!t&&(n=new AbortController)}})(),()=>{t=!0;try{n.abort()}catch{}}}function X(){return{sessions:[],sessionsLoaded:!1,sessionsLoading:!1,sessionsError:``,activeSessionId:null}}var Z=new class{#e=l(d(new Map));get byEndpoint(){return i(this.#e)}set byEndpoint(e){p(this.#e,e,!0)}#t=l(`default`);get activeEndpointId(){return i(this.#t)}set activeEndpointId(e){p(this.#t,e,!0)}#n=l(d([]));get entries(){return i(this.#n)}set entries(e){p(this.#n,e,!0)}#r=l(!1);get entriesLoading(){return i(this.#r)}set entriesLoading(e){p(this.#r,e,!0)}#i=l(!1);get sending(){return i(this.#i)}set sending(e){p(this.#i,e,!0)}#a=l(``);get error(){return i(this.#a)}set error(e){p(this.#a,e,!0)}#o=l(!1);get liveConnected(){return i(this.#o)}set liveConnected(e){p(this.#o,e,!0)}_unsubscribeEvents=null;#s=g(()=>this.byEndpoint.get(this.activeEndpointId)?.activeSessionId??null);get activeSessionId(){return i(this.#s)}set activeSessionId(e){p(this.#s,e)}setEndpointState(e,t){let n={...this.byEndpoint.get(e)??X(),...t};return this.byEndpoint=new Map(this.byEndpoint).set(e,n),n}async onEndpointChanged(e){if(this.sending){this.error=`Wait for the current reply to finish before switching.`;return}this.activeEndpointId=e,this.entries=[],this.error=``,this.byEndpoint.get(e)?.sessionsLoaded||await this.loadSessions();let t=this.byEndpoint.get(e)??X(),n=t.sessions,r=t.activeSessionId,i=null;r&&n.some(e=>e.id===r)?i=r:n.length>0&&(i=n[0].id),i!==t.activeSessionId&&this.setEndpointState(e,{activeSessionId:i}),i&&await this.openSession(i),this._resubscribeEvents()}_resubscribeEvents(){if(this._unsubscribeEvents){try{this._unsubscribeEvents()}catch(e){console.warn(`[chat] failed to unsubscribe from previous event stream`,e)}this._unsubscribeEvents=null}this.liveConnected=!1,this._unsubscribeEvents=ne({onCreated:e=>{this._onSessionCreated(e)},onUpdated:(e,t)=>{this._onSessionUpdated(e,t)},onDeleted:e=>{this._onSessionDeleted(e)},onConnect:()=>{this.liveConnected=!0},onDisconnect:()=>{this.liveConnected=!1}})}_onSessionCreated(e){let t=this.activeEndpointId,n=this.byEndpoint.get(t)??X();if(n.sessions.some(t=>t.id===e))return;let r=Date.now(),i={id:e,title:``,createdAt:r,updatedAt:r};this.setEndpointState(t,{sessions:[i,...n.sessions],sessionsLoaded:!0})}_onSessionUpdated(e,t){let n=this.activeEndpointId,r=this.byEndpoint.get(n);if(!r)return;let i=r.sessions.findIndex(t=>t.id===e);if(i===-1)return;let a=r.sessions[i],o=[{...a,title:t?.title??a.title,updatedAt:t?.updatedAt??Date.now()},...r.sessions.filter(t=>t.id!==e)];o.sort((e,t)=>t.updatedAt-e.updatedAt),this.setEndpointState(n,{sessions:o})}async _onSessionDeleted(e){let t=this.activeEndpointId,n=this.byEndpoint.get(t);if(!n||!n.sessions.some(t=>t.id===e))return;let r=n.sessions.filter(t=>t.id!==e),i=n.activeSessionId===e,a=i?r[0]?.id??null:n.activeSessionId;this.setEndpointState(t,{sessions:r,activeSessionId:a}),i&&(this.entries=[],a&&await this.openSession(a))}async loadSessions(){let e=this.activeEndpointId;this.setEndpointState(e,{sessionsLoading:!0,sessionsError:``});try{let t=await A();this.setEndpointState(e,{sessions:t,sessionsLoaded:!0,sessionsLoading:!1,sessionsError:``})}catch(t){let n=t,r=n.status===503||n.status===502?`Assistant is not reachable.`:n.message??`Failed to load sessions.`;this.setEndpointState(e,{sessionsLoading:!1,sessionsError:r})}}async openSession(e){if(this.sending){this.error=`Wait for the current reply to finish before switching.`;return}let t=this.activeEndpointId;this.setEndpointState(t,{activeSessionId:e}),this.entries=[],this.entriesLoading=!0,this.error=``;try{let n=await G(e);this.activeEndpointId===t&&this.byEndpoint.get(t)?.activeSessionId===e&&(this.entries=n)}catch(e){let t=e;t.status===503||t.status===502?this.error=`Assistant is not reachable. Try reconnecting.`:t.status===401?this.error=`Sign-in required.`:this.error=t.message??`Failed to load messages.`}finally{this.entriesLoading=!1}}async startNewSession(){if(this.sending)return this.error=`Wait for the current reply to finish before switching.`,null;let e=this.activeEndpointId;this.error=``;try{let{id:t}=await I(),n=Date.now(),r={id:t,title:``,createdAt:n,updatedAt:n},i=this.byEndpoint.get(e)??X();return this.setEndpointState(e,{sessions:[r,...i.sessions.filter(e=>e.id!==t)],sessionsLoaded:!0,activeSessionId:t}),this.entries=[],t}catch(e){let t=e;return this.error=`Failed to start session: ${t.message??`unknown error`}`,null}}async send(e){if(this.sending)return;let t=e.trim();if(!t)return;let n=this.activeSessionId;if(!n&&(n=await this.startNewSession(),!n))return;let r={id:crypto.randomUUID(),role:`user`,text:t,timestamp:Date.now()};this.entries=[...this.entries,r],this.error=``,this.sending=!0;try{let e=(await j(n,t)).parts.filter(e=>e.type===`text`&&e.text).map(e=>e.text??``).join(``),r={id:crypto.randomUUID(),role:`assistant`,text:e||`(no response)`,timestamp:Date.now()};this.entries=[...this.entries,r];let i=this.activeEndpointId,a=this.byEndpoint.get(i);if(a){let e=Date.now(),t=a.sessions.find(e=>e.id===n),r=t?{...t,updatedAt:e}:{id:n,title:``,createdAt:e,updatedAt:e},o=a.sessions.filter(e=>e.id!==n);this.setEndpointState(i,{sessions:[r,...o]})}W.ttsSupported&&W.ttsAutoEnabled&&e&&B(e)}catch(e){let t=e;t.status===503||t.status===502?(this.error=`Assistant is not reachable. Try reconnecting.`,this.setEndpointState(this.activeEndpointId,{activeSessionId:null})):t.status===401?this.error=`Sign-in required.`:this.error=t.message??`Message failed.`}finally{this.sending=!1}}reset(){if(R(),this.entries=[],this.error=``,this.byEndpoint=new Map,this._unsubscribeEvents){try{this._unsubscribeEvents()}catch(e){console.warn(`[chat] failed to unsubscribe from event stream during reset`,e)}this._unsubscribeEvents=null}this.liveConnected=!1}},re=e(`<span class="voice-interim svelte-1a5q9sh" aria-hidden="true"> </span>`),ie=e(`<button type="button" class="voice-autoplay-banner svelte-1a5q9sh" aria-label="Resume paused audio" title="Audio was blocked by the browser. Click to resume."><svg aria-hidden="true" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svelte-1a5q9sh"><polygon points="11 5 6 9 2 9 2 15 6 15 11 19 11 5" class="svelte-1a5q9sh"></polygon><line x1="23" y1="9" x2="17" y2="15" class="svelte-1a5q9sh"></line><line x1="17" y1="9" x2="23" y2="15" class="svelte-1a5q9sh"></line></svg> <span class="svelte-1a5q9sh">Audio paused — click to resume</span></button>`),ae=v(`<path d="M15.54 8.46a5 5 0 0 1 0 7.07"></path><path d="M19.07 4.93a10 10 0 0 1 0 14.14"></path>`,1),oe=v(`<line x1="23" y1="9" x2="17" y2="15" class="svelte-1a5q9sh"></line><line x1="17" y1="9" x2="23" y2="15" class="svelte-1a5q9sh"></line>`,1),se=e(`<button><svg aria-hidden="true" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svelte-1a5q9sh"><polygon points="11 5 6 9 2 9 2 15 6 15 11 19 11 5" class="svelte-1a5q9sh"></polygon><!></svg></button>`),ce=e(`<span class="voice-spinner svelte-1a5q9sh" aria-hidden="true"></span>`),le=e(`<svg aria-hidden="true" width="14" height="14" viewBox="0 0 24 24" fill="currentColor" class="svelte-1a5q9sh"><rect x="6" y="6" width="12" height="12" rx="1.5" class="svelte-1a5q9sh"></rect></svg> <span class="voice-pulse svelte-1a5q9sh" aria-hidden="true"></span>`,1),ue=v(`<svg aria-hidden="true" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svelte-1a5q9sh"><path d="M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z" class="svelte-1a5q9sh"></path><path d="M19 10v2a7 7 0 0 1-14 0v-2" class="svelte-1a5q9sh"></path><line x1="12" y1="19" x2="12" y2="23" class="svelte-1a5q9sh"></line><line x1="8" y1="23" x2="16" y2="23" class="svelte-1a5q9sh"></line></svg>`),de=e(`<button><!></button>`),fe=e(`<div class="voice-control svelte-1a5q9sh" role="toolbar" aria-label="Voice controls"><!> <!> <!> <!> <span class="sr-only svelte-1a5q9sh" aria-live="polite"> </span></div>`);function Q(e,r){_(r,!0);let o=l(!1);C(()=>{V().then(()=>{p(o,!0)})}),x(()=>{z()});let d=g(()=>i(o)&&W.sttEngine!==`disabled`&&W.sttSupported),v=g(()=>i(o)&&W.ttsSupported),b=g(()=>W.status===`recording`),T=g(()=>W.status===`transcribing`),D=g(()=>!i(b)&&!i(T)&&Z.sending),k=g(()=>W.status===`speaking`);function A(){if(i(b)){F();return}i(T)||(R(),H(e=>{let t=e.trim();t&&Z.send(t)}))}function j(){P(!W.ttsAutoEnabled)}var M=y(),N=a(M),I=e=>{var r=fe(),o=S(r),l=e=>{var n=re(),r=S(n,!0);m(n),u(e=>{h(n,`title`,W.interimTranscript),t(r,e)},[()=>W.interimTranscript.length>48?W.interimTranscript.slice(0,48)+`…`:W.interimTranscript]),s(e,n)};n(o,e=>{i(b)&&W.interimTranscript&&e(l)});var p=f(o,2),g=e=>{var t=ie();c(`click`,t,()=>L()),s(e,t)};n(p,e=>{W.autoplayBlocked&&e(g)});var _=f(p,2),y=e=>{var t=se();let r;var o=S(t),l=f(S(o)),d=e=>{var t=ae(),n=a(t);let r;var o=f(n);let c;u(()=>{r=O(n,0,`svelte-1a5q9sh`,null,r,{"wave-anim":i(k)}),c=O(o,0,`svelte-1a5q9sh`,null,c,{"wave-anim-2":i(k)})}),s(e,t)},p=e=>{var t=oe();E(),s(e,t)};n(l,e=>{W.ttsAutoEnabled?e(d):e(p,-1)}),m(o),m(t),u(()=>{r=O(t,1,`voice-btn svelte-1a5q9sh`,null,r,{"voice-btn-on":W.ttsAutoEnabled,"voice-btn-speaking":i(k)}),h(t,`aria-label`,W.ttsAutoEnabled?`Turn off spoken responses`:`Turn on spoken responses`),h(t,`aria-pressed`,W.ttsAutoEnabled),h(t,`title`,i(k)?`Speaking — click to turn off spoken responses`:W.ttsAutoEnabled?`Spoken responses are on — click to turn off`:`Spoken responses are off — click to turn on`)}),c(`click`,t,j),s(e,t)};n(_,e=>{i(v)&&e(y)});var x=f(_,2),C=e=>{var t=de();let r;var a=S(t),o=e=>{s(e,ce())},l=e=>{var t=le();E(2),s(e,t)},d=e=>{s(e,ue())};n(a,e=>{i(T)||i(D)?e(o):i(b)?e(l,1):e(d,-1)}),m(t),u(()=>{r=O(t,1,`voice-btn svelte-1a5q9sh`,null,r,{"voice-btn-active":i(b),"voice-btn-processing":i(D)||i(T)}),t.disabled=i(D),h(t,`aria-label`,i(b)?`Stop recording`:i(T)?`Transcribing…`:i(D)?`Sending message…`:`Start recording`),h(t,`aria-pressed`,i(b)),h(t,`title`,i(b)?`Stop recording`:i(T)?`Transcribing…`:i(D)?`Sending message…`:`Speak — message will be sent to the selected assistant`)}),c(`click`,t,A),s(e,t)};n(x,e=>{i(d)&&e(C)});var w=f(x,2),M=S(w,!0);m(w),m(r),u(()=>t(M,i(b)&&W.interimTranscript?W.interimTranscript:i(b)?`Recording`:i(T)?`Transcribing`:i(D)?`Sending message to assistant`:i(k)?`Assistant is speaking`:W.ttsAutoEnabled?`Spoken responses on`:``)),s(e,r)};n(N,e=>{(i(d)||i(v)||W.autoplayBlocked)&&e(I)}),s(e,M),w()}o([`click`]);var $=new class{#e=l(d([]));get endpoints(){return i(this.#e)}set endpoints(e){p(this.#e,e,!0)}#t=l(`default`);get activeId(){return i(this.#t)}set activeId(e){p(this.#t,e,!0)}#n=l(!1);get loading(){return i(this.#n)}set loading(e){p(this.#n,e,!0)}#r=l(!1);get loaded(){return i(this.#r)}set loaded(e){p(this.#r,e,!0)}#i=l(``);get error(){return i(this.#i)}set error(e){p(this.#i,e,!0)}#a=g(()=>this.endpoints.find(e=>e.id===this.activeId)??this.endpoints[0]??null);get active(){return i(this.#a)}set active(e){p(this.#a,e)}async load(e=!1){if(!this.loading&&!(this.loaded&&!e)){this.loading=!0,this.error=``;try{let{endpoints:e,activeId:t}=await M();this.endpoints=e,this.activeId=t,this.loaded=!0}catch(e){let t=e;t.status!==401&&(this.error=t.message??`Failed to load endpoints`)}finally{this.loading=!1}}}async activate(e){if(e===this.activeId)return;if(Z.sending)throw this.error=`Wait for the current reply to finish before switching.`,Error(this.error);let t=this.activeId;this.activeId=e;try{await N(e),await Z.onEndpointChanged(e)}catch(e){this.activeId=t;let n=e;throw this.error=n.message??`Failed to switch endpoint`,e}}},pe=e(`<button type="button" role="menuitemradio"><span class="check svelte-1gh51ee" aria-hidden="true"> </span> <span class="menu-item-text svelte-1gh51ee"><span class="menu-item-label svelte-1gh51ee"> </span> <span class="menu-item-url svelte-1gh51ee"> </span></span></button>`),me=e(`<div class="menu svelte-1gh51ee" role="menu"><div class="menu-header svelte-1gh51ee">Assistant endpoint</div> <!> <div class="menu-divider svelte-1gh51ee"></div> <a class="menu-item link svelte-1gh51ee" href="/admin/endpoints" role="menuitem">Manage endpoints…</a></div>`),he=e(`<div class="switcher svelte-1gh51ee"><button type="button" class="trigger svelte-1gh51ee" aria-haspopup="menu"><svg class="trigger-icon svelte-1gh51ee" aria-hidden="true" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="2" width="20" height="8" rx="2" ry="2"></rect><rect x="2" y="14" width="20" height="8" rx="2" ry="2"></rect><line x1="6" y1="6" x2="6.01" y2="6"></line><line x1="6" y1="18" x2="6.01" y2="18"></line></svg> <span class="dot svelte-1gh51ee" aria-hidden="true"></span> <span class="label svelte-1gh51ee"> </span> <span class="caret svelte-1gh51ee" aria-hidden="true">▾</span></button> <!></div>`);function ge(e,r){_(r,!0);let a=l(!1),o=l(!1),d=l(void 0),v=g(()=>$.active),y=g(()=>$.endpoints),b=g(()=>i(y).length>1);C(()=>{$.load();function e(e){if(!i(a))return;let t=e.target;i(d)&&t&&!i(d).contains(t)&&p(a,!1)}return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)});async function x(e){if(!i(o)){if(e===i(v)?.id){p(a,!1);return}p(o,!0);try{await $.activate(e),p(a,!1)}catch{}finally{p(o,!1)}}}function D(){if(!i(b)&&!i(a)){window.location.href=`/admin/endpoints`;return}p(a,!i(a))}var A=he(),j=S(A),M=f(S(j),4),N=S(M,!0);m(M),E(2),m(j);var P=f(j,2),F=e=>{var n=me(),r=f(S(n),2);k(r,17,()=>i(y),e=>e.id,(e,n)=>{var r=pe();let a;var l=S(r),d=S(l,!0);m(l);var p=f(l,2),g=S(p),_=S(g,!0);m(g);var y=f(g,2),b=S(y,!0);m(y),m(p),m(r),u(()=>{a=O(r,1,`menu-item svelte-1gh51ee`,null,a,{active:i(n).id===i(v)?.id}),h(r,`aria-checked`,i(n).id===i(v)?.id),r.disabled=i(o),t(d,i(n).id===i(v)?.id?`●`:`○`),t(_,i(n).label),t(b,i(n).url)}),c(`click`,r,()=>x(i(n).id)),s(e,r)});var l=f(r,4);m(n),c(`click`,l,()=>p(a,!1)),s(e,n)};n(P,e=>{i(a)&&e(F)}),m(A),T(A,e=>p(d,e),()=>i(d)),u(()=>{h(j,`aria-expanded`,i(a)),h(j,`aria-label`,i(v)?`Assistant endpoint: ${i(v).label}`:`Assistant endpoints`),h(j,`title`,i(v)?`Connected to: ${i(v).label} (${i(v).url})`:`Assistant endpoints`),j.disabled=i(o)||$.loading,t(N,i(v)?.label??`Endpoint…`)}),c(`click`,j,D),s(e,A),w()}o([`click`]);var _e=e(`<div class="notice svelte-1owsj0q">Wait for the current reply to finish before switching.</div>`),ve=e(`<div class="empty svelte-1owsj0q"><span class="spinner svelte-1owsj0q" aria-hidden="true"></span> <span>Loading sessions…</span></div>`),ye=e(`<div class="error svelte-1owsj0q"><span class="svelte-1owsj0q"> </span> <button type="button" class="retry-btn svelte-1owsj0q">Retry</button></div>`),be=e(`<div class="empty svelte-1owsj0q">No sessions yet. Start the first one.</div>`),xe=e(`<button type="button" role="menuitemradio"><span class="check svelte-1owsj0q" aria-hidden="true"> </span> <span class="menu-item-text svelte-1owsj0q"><span class="menu-item-label svelte-1owsj0q"> </span> <span class="menu-item-meta svelte-1owsj0q"> </span></span></button>`),Se=e(`<button type="button" class="show-all svelte-1owsj0q"> </button>`),Ce=e(`<div class="session-list svelte-1owsj0q" role="none"></div> <!>`,1),we=e(`<div class="menu svelte-1owsj0q" role="menu"><div class="menu-header svelte-1owsj0q"> </div> <!> <button type="button" class="menu-item new-btn svelte-1owsj0q" role="menuitem"><span class="check svelte-1owsj0q" aria-hidden="true">+</span> <span class="menu-item-text svelte-1owsj0q"><span class="menu-item-label svelte-1owsj0q">New session</span></span></button> <div class="menu-divider svelte-1owsj0q"></div> <!></div>`),Te=e(`<div class="picker svelte-1owsj0q"><button type="button" class="trigger svelte-1owsj0q" aria-haspopup="menu" aria-label="Sessions"><svg class="trigger-icon svelte-1owsj0q" aria-hidden="true" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 9a2 2 0 0 1-2 2H6l-4 4V4c0-1.1.9-2 2-2h8a2 2 0 0 1 2 2z"></path><path d="M18 9h2a2 2 0 0 1 2 2v11l-4-4h-6a2 2 0 0 1-2-2v-1"></path></svg> <span aria-hidden="true"></span> <span class="label svelte-1owsj0q"> </span> <span class="caret svelte-1owsj0q" aria-hidden="true">▾</span></button> <!></div>`);function Ee(e,r){_(r,!0);let o=l(!1),d=l(!1),v=l(void 0),y=g(()=>$.active),b=g(()=>i(y)?Z.byEndpoint.get(i(y).id)??null:null),x=g(()=>i(b)?.sessions??[]),D=g(()=>i(b)?.sessionsLoading??!1),A=g(()=>i(b)?.sessionsError??``),j=g(()=>Z.activeSessionId),M=g(()=>i(x).find(e=>e.id===i(j))??null),N=g(()=>i(M)?i(M).title||`Untitled · ${L(i(M).updatedAt)}`:`New session`),P=g(()=>Z.liveConnected),F=g(()=>i(d)?i(x):i(x).slice(0,50)),I=g(()=>Math.max(0,i(x).length-50));C(()=>{function e(e){if(!i(o))return;let t=e.target;i(v)&&t&&!i(v).contains(t)&&p(o,!1)}function t(e){e.key===`Escape`&&i(o)&&p(o,!1)}return document.addEventListener(`mousedown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`keydown`,t)}});function L(e){if(!e)return``;let t=Math.max(0,(Date.now()-e)/1e3);if(t<60)return`just now`;let n=Math.floor(t/60);if(n<60)return`${n}m ago`;let r=Math.floor(n/60);if(r<24)return`${r}h ago`;let i=Math.floor(r/24);if(i===1)return`yesterday`;if(i<7)return`${i}d ago`;let a=Math.floor(i/7);if(a<5)return`${a}w ago`;let o=Math.floor(i/30);return o<12?`${o}mo ago`:`${Math.floor(i/365)}y ago`}async function R(){i(o)||i(y)&&!i(b)?.sessionsLoaded&&!i(D)&&Z.loadSessions(),p(o,!i(o))}async function z(e){if(!Z.sending){if(e===i(j)){p(o,!1);return}p(o,!1),await Z.openSession(e)}}async function B(){Z.sending||(p(o,!1),await Z.startNewSession())}async function V(){await Z.loadSessions()}var H=Te(),U=S(H),W=f(S(U),2);let G;var K=f(W,2),q=S(K,!0);m(K),E(2),m(U);var J=f(U,2),Y=e=>{var r=we(),o=S(r),l=S(o);m(o);var g=f(o,2),_=e=>{s(e,_e())};n(g,e=>{Z.sending&&e(_)});var v=f(g,2),b=f(v,4),C=e=>{s(e,ve())},w=e=>{var n=ye(),r=S(n),a=S(r,!0);m(r);var o=f(r,2);m(n),u(()=>t(a,i(A))),c(`click`,o,V),s(e,n)},T=e=>{s(e,be())},E=e=>{var r=Ce(),o=a(r);k(o,21,()=>i(F),e=>e.id,(e,n)=>{var r=xe();let a;var o=S(r),l=S(o,!0);m(o);var d=f(o,2),p=S(d),g=S(p,!0);m(p);var _=f(p,2),v=S(_,!0);m(_),m(d),m(r),u(e=>{a=O(r,1,`menu-item session-item svelte-1owsj0q`,null,a,{active:i(n).id===i(j)}),h(r,`aria-checked`,i(n).id===i(j)),r.disabled=Z.sending,t(l,i(n).id===i(j)?`●`:`○`),t(g,i(n).title||`Untitled`),t(v,e)},[()=>L(i(n).updatedAt)]),c(`click`,r,()=>z(i(n).id)),s(e,r)}),m(o);var l=f(o,2),g=e=>{var n=Se(),r=S(n);m(n),u(()=>t(r,`Show all (${i(I)??``} more)`)),c(`click`,n,()=>p(d,!0)),s(e,n)};n(l,e=>{!i(d)&&i(I)>0&&e(g)}),s(e,r)};n(b,e=>{i(D)?e(C):i(A)?e(w,1):i(x).length===0?e(T,2):e(E,-1)}),m(r),u(()=>{t(l,`Sessions on ${i(y)?.label??`this endpoint`??``}`),v.disabled=Z.sending}),c(`click`,v,B),s(e,r)};n(J,e=>{i(o)&&e(Y)}),m(H),T(H,e=>p(v,e),()=>i(v)),u(()=>{h(U,`aria-expanded`,i(o)),h(U,`title`,i(N)),G=O(W,1,`dot svelte-1owsj0q`,null,G,{connected:i(P)}),h(W,`title`,i(P)?`Live updates connected`:`Live updates disconnected`),t(q,i(N))}),c(`click`,U,R),s(e,H),w()}o([`click`]);var De=v(`<svg aria-hidden="true" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="4"></circle><path d="M12 2v2"></path><path d="M12 20v2"></path><path d="m4.93 4.93 1.41 1.41"></path><path d="m17.66 17.66 1.41 1.41"></path><path d="M2 12h2"></path><path d="M20 12h2"></path><path d="m6.34 17.66-1.41 1.41"></path><path d="m19.07 4.93-1.41 1.41"></path></svg>`),Oe=v(`<svg aria-hidden="true" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9z"></path></svg>`),ke=e(`<button type="button" class="theme-toggle svelte-1cmi4dh"><!></button>`);function Ae(e,t){_(t,!0);let r=g(()=>U.resolved===`dark`),a=g(()=>i(r)?`Switch to light mode`:`Switch to dark mode`);function o(){U.toggle()}var l=ke(),d=S(l),f=e=>{s(e,De())},p=e=>{s(e,Oe())};n(d,e=>{i(r)?e(f):e(p,-1)}),m(l),u(()=>{h(l,`aria-label`,i(a)),h(l,`aria-pressed`,i(r)),h(l,`title`,i(a))}),c(`click`,l,o),s(e,l),w()}o([`click`]);var je=v(`<svg aria-hidden="true" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path></svg>`),Me=v(`<svg aria-hidden="true" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><path d="m7 9 3 3-3 3"></path><line x1="13" y1="15" x2="17" y2="15"></line></svg>`),Ne=v(`<svg aria-hidden="true" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="4" y1="21" x2="4" y2="14"></line><line x1="4" y1="10" x2="4" y2="3"></line><line x1="12" y1="21" x2="12" y2="12"></line><line x1="12" y1="8" x2="12" y2="3"></line><line x1="20" y1="21" x2="20" y2="16"></line><line x1="20" y1="12" x2="20" y2="3"></line><line x1="1" y1="14" x2="7" y2="14"></line><line x1="9" y1="8" x2="15" y2="8"></line><line x1="17" y1="16" x2="23" y2="16"></line></svg>`),Pe=e(`<a><!> <span class="nav-label svelte-rfuq4y"> </span></a>`),Fe=v(`<path d="M18 6 6 18"></path><path d="m6 6 12 12"></path>`,1),Ie=v(`<path d="M3 6h18"></path><path d="M3 12h18"></path><path d="M3 18h18"></path>`,1),Le=e(`<a> </a>`),Re=e(`<div class="sheet-overlay mobile-sheet-overlay svelte-rfuq4y" role="presentation"></div> <div id="mobile-navbar-drawer" class="sheet mobile-sheet svelte-rfuq4y" role="dialog" aria-modal="true" aria-labelledby="mobile-navbar-title"><header class="sheet-header"><h2 class="sheet-title" id="mobile-navbar-title">OpenPalm Menu</h2> <button type="button" class="sheet-close" aria-label="Close menu">×</button></header> <div class="sheet-body mobile-sheet-body svelte-rfuq4y"><section class="mobile-sheet-section svelte-rfuq4y"><div class="mobile-section-label svelte-rfuq4y">Navigate</div> <div class="mobile-nav-list svelte-rfuq4y"></div></section> <section class="mobile-sheet-section svelte-rfuq4y"><div class="mobile-section-label svelte-rfuq4y">Conversation</div> <div class="mobile-control-row svelte-rfuq4y"><!></div> <div class="mobile-control-row svelte-rfuq4y"><!></div></section> <section class="mobile-sheet-section svelte-rfuq4y"><div class="mobile-section-label svelte-rfuq4y">Controls</div> <div class="mobile-utility-row svelte-rfuq4y"><div class="mobile-utility-labels svelte-rfuq4y"><span class="mobile-utility-title svelte-rfuq4y">Theme</span> <span class="mobile-utility-copy svelte-rfuq4y">Switch between light and dark mode.</span></div> <!></div> <div class="mobile-control-row mobile-control-row--voice svelte-rfuq4y"><!></div></section></div></div>`,1),ze=e(`<nav class="navbar svelte-rfuq4y" aria-label="Main navigation"><div class="navbar-inner svelte-rfuq4y"><div class="navbar-brand svelte-rfuq4y"><span class="brand-icon svelte-rfuq4y"><img src="/logo-128.png" alt="OpenPalm Logo" class="svelte-rfuq4y"/></span> <div><span class="brand-text svelte-rfuq4y">OpenPalm</span> <span class="version-badge svelte-rfuq4y"> </span></div></div> <div class="navbar-nav svelte-rfuq4y" aria-label="Primary navigation"></div> <div class="navbar-actions svelte-rfuq4y"><div class="desktop-actions svelte-rfuq4y"><!> <!> <!> <!></div> <button type="button" class="mobile-menu-btn svelte-rfuq4y" aria-controls="mobile-navbar-drawer"><svg aria-hidden="true" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><!></svg> <span class="mobile-menu-label svelte-rfuq4y">Menu</span></button></div></div></nav> <!>`,1);function Be(e,r){_(r,!0);let o=[{href:`/chat`,label:`Chat`,icon:`chat`},{href:`/advanced`,label:`Advanced`,icon:`advanced`},{href:`/admin`,label:`Admin`,icon:`admin`}],d=g(()=>K.url?.pathname??``);function v(e){return i(d)===e||i(d).startsWith(e+`/`)}let y=l(!1);function b(){p(y,!1)}function x(){p(y,!i(y))}C(()=>{function e(e){e.key===`Escape`&&i(y)&&p(y,!1)}return window.addEventListener(`keydown`,e),()=>{window.removeEventListener(`keydown`,e)}});var T=ze(),D=a(T),A=S(D),j=S(A),M=f(S(j),2),N=f(S(M),2),P=S(N);m(N),m(M),m(j);var F=f(j,2);k(F,21,()=>o,e=>e.href,(e,r)=>{var a=Pe();let o;var c=S(a),l=e=>{s(e,je())},d=e=>{s(e,Me())},p=e=>{s(e,Ne())};n(c,e=>{i(r).icon===`chat`?e(l):i(r).icon===`advanced`?e(d,1):e(p,-1)});var g=f(c,2),_=S(g,!0);m(g),m(a),u((e,n)=>{h(a,`href`,i(r).href),o=O(a,1,`nav-btn svelte-rfuq4y`,null,o,e),h(a,`aria-current`,n),h(a,`title`,i(r).label),t(_,i(r).label)},[()=>({active:v(i(r).href)}),()=>v(i(r).href)?`page`:void 0]),s(e,a)}),m(F);var I=f(F,2),L=S(I),R=S(L);Ae(R,{});var z=f(R,2);ge(z,{});var B=f(z,2);Ee(B,{}),Q(f(B,2),{}),m(L);var V=f(L,2),H=S(V),U=S(H),W=e=>{var t=Fe();E(),s(e,t)},G=e=>{var t=Ie();E(2),s(e,t)};n(U,e=>{i(y)?e(W):e(G,-1)}),m(H),E(2),m(V),m(I),m(A),m(D);var q=f(D,2),J=e=>{var n=Re(),r=a(n),l=f(r,2),d=S(l),p=f(S(d),2);m(d);var g=f(d,2),_=S(g),y=f(S(_),2);k(y,21,()=>o.filter(e=>e.href!==`/chat`),e=>e.href,(e,n)=>{var r=Le();let a;var o=S(r,!0);m(r),u((e,s)=>{h(r,`href`,i(n).href),a=O(r,1,`mobile-nav-link svelte-rfuq4y`,null,a,e),h(r,`aria-current`,s),t(o,i(n).label)},[()=>({active:v(i(n).href)}),()=>v(i(n).href)?`page`:void 0]),c(`click`,r,b),s(e,r)}),m(y),m(_);var x=f(_,2),C=f(S(x),2);Ee(S(C),{}),m(C);var w=f(C,2);ge(S(w),{}),m(w),m(x);var T=f(x,2),E=f(S(T),2);Ae(f(S(E),2),{}),m(E);var D=f(E,2);Q(S(D),{}),m(D),m(T),m(g),m(l),c(`click`,r,b),c(`click`,p,b),s(e,n)};n(q,e=>{i(y)&&e(J)}),u(()=>{t(P,`ui v0.11.0-rc.4`),h(V,`aria-label`,i(y)?`Close menu`:`Open menu`),h(V,`aria-expanded`,i(y))}),c(`click`,V,x),s(e,T),w()}o([`click`]);var Ve=v(`<svg aria-hidden="true" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94"></path><path d="M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19"></path><line x1="1" y1="1" x2="23" y2="23"></line><path d="M14.12 14.12a3 3 0 1 1-4.24-4.24"></path></svg>`),He=v(`<svg aria-hidden="true" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"></path><circle cx="12" cy="12" r="3"></circle></svg>`),Ue=e(`<p class="auth-error svelte-1vviwqr" role="alert"> </p>`),We=e(`<span class="spinner"></span>`),Ge=e(`<main class="auth-gate svelte-1vviwqr" aria-label="Admin login gate"><section class="auth-card svelte-1vviwqr"><div class="auth-brand svelte-1vviwqr"><span class="brand-icon svelte-1vviwqr"><img src="/logo-128.png" alt="OpenPalm Logo" class="svelte-1vviwqr"/></span> <div><h1 class="svelte-1vviwqr">OpenPalm Console</h1> <p class="svelte-1vviwqr">Enter your admin password to unlock the control plane.</p></div></div> <form class="auth-form svelte-1vviwqr"><label for="admin-token" class="svelte-1vviwqr">Admin Password</label> <input type="text" name="username" autocomplete="username" value="admin" class="sr-only svelte-1vviwqr" tabindex="-1" aria-hidden="true"/> <div class="token-input-wrapper svelte-1vviwqr"><input id="admin-token" name="admin-token" placeholder="Enter admin password" autocomplete="current-password" class="svelte-1vviwqr"/> <button type="button" class="btn-toggle svelte-1vviwqr"><!></button></div> <!> <button class="btn btn-primary" type="submit"><!> Unlock Console</button></form></section></main>`);function Ke(e,a){_(a,!0);let o=l(``),d=l(!1),g=l(void 0);async function v(e){e.preventDefault();let t=i(o).trim();if(!t||a.loading){i(g)?.focus();return}await a.onSuccess(t)||(i(g)?.focus(),i(g)?.select())}var y=Ge(),x=S(y),C=f(S(x),2),O=f(f(S(C),2),2),k=S(O);D(k),T(k,e=>p(g,e),()=>i(g));var A=f(k,2),j=S(A),M=e=>{s(e,Ve())},N=e=>{s(e,He())};n(j,e=>{i(d)?e(M):e(N,-1)}),m(A),m(O);var P=f(O,2),F=e=>{var n=Ue(),r=S(n,!0);m(n),u(()=>t(r,a.error)),s(e,n)};n(P,e=>{a.error&&e(F)});var I=f(P,2),L=S(I),R=e=>{s(e,We())};n(L,e=>{a.loading&&e(R)}),E(),m(I),m(C),m(x),m(y),u(e=>{h(k,`type`,i(d)?`text`:`password`),h(A,`aria-label`,i(d)?`Hide token`:`Show token`),I.disabled=e},[()=>a.loading||!i(o).trim()]),r(`submit`,C,v),b(k,()=>i(o),e=>p(o,e)),c(`click`,A,()=>p(d,!i(d))),s(e,y),w()}o([`click`]);export{Z as i,Be as n,$ as r,Ke as t};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./BwTF6U35.js";import{i as e,n as t,r as n}from"./
|
|
1
|
+
import"./BwTF6U35.js";import{i as e,n as t,r as n}from"./CmvkId2p.js";var r={get data(){return e.data},get error(){return e.error},get form(){return e.form},get params(){return e.params},get route(){return e.route},get state(){return e.state},get status(){return e.status},get url(){return e.url}};Object.defineProperty({get from(){return n.current?n.current.from:null},get to(){return n.current?n.current.to:null},get type(){return n.current?n.current.type:null},get willUnload(){return n.current?n.current.willUnload:null},get delta(){return n.current?n.current.delta:null},get complete(){return n.current?n.current.complete:null}},"current",{get(){throw Error(`Replace navigating.current.<prop> with navigating.<prop>`)}}),t.updated.check;var i=r;export{i as t};
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{I as e,Q as t,X as n,Z as r}from"./BwTF6U35.js";var i=[`audio/webm;codecs=opus`,`audio/webm`];function a(){let e=globalThis.MediaRecorder;if(!(!e||typeof e.isTypeSupported!=`function`)){for(let t of i)if(e.isTypeSupported(t))return t}}async function o(){if(typeof window>`u`)throw Error(`Recording is only available in the browser.`);if(typeof MediaRecorder>`u`||!navigator?.mediaDevices?.getUserMedia)throw Error(`Recording is not supported in this browser.`);let e;try{e=await navigator.mediaDevices.getUserMedia({audio:!0})}catch(e){let t=e?.name??``;throw Error(t===`NotAllowedError`||t===`SecurityError`?`Microphone access denied`:t===`NotFoundError`||t===`OverconstrainedError`?`No microphone was found`:`Microphone error: ${e?.message??String(e)}`)}let t=a(),n=t?new MediaRecorder(e,{mimeType:t}):new MediaRecorder(e),r=[];n.addEventListener(`dataavailable`,e=>{let t=e.data;t&&t.size>0&&r.push(t)});let i=!1,o=!1,s=null,c=null;function l(){for(let t of e.getTracks())try{t.stop()}catch{}}return n.addEventListener(`stop`,()=>{if(l(),o)return;let e=new Blob(r,{type:n.mimeType||t||`audio/webm`});s?.(e)}),n.addEventListener(`error`,e=>{l();let t=e?.error??Error(`Recorder error`);c?.(t)}),n.start(),{stop(){return i?Promise.reject(Error(`Recorder already stopped`)):(i=!0,new Promise((e,t)=>{s=e,c=t;try{n.state!==`inactive`&&n.stop()}catch(e){l(),t(e)}}))},cancel(){if(!i){i=!0,o=!0;try{n.state!==`inactive`&&n.stop()}catch{}l()}}}}var s=``;function c(){return{"x-request-id":crypto.randomUUID(),"x-requested-by":`ui`}}async function l(e,t,n){let r={...n===void 0?{}:{"content-type":`application/json`},...c()};return fetch(`${s}${t}`,{method:e,headers:r,credentials:`include`,...n===void 0?{}:{body:JSON.stringify(n)}})}async function u(e,t=`Request failed (HTTP ${e.status})`){if((e.headers.get(`content-type`)??``).includes(`application/json`)){let t=await e.clone().json().catch(e=>(console.warn(`[api] Failed to parse JSON error response:`,e),null));if(t&&typeof t.message==`string`&&t.message.length>0)return t.message;if(t&&typeof t.error==`string`&&t.error.length>0)return t.error}return await e.text().catch(e=>(console.warn(`[api] Failed to read error response text:`,e),``))||t}async function d(e,t){if(e.status===401)throw Object.assign(Error(`Sign-in required.`),{status:401});if(!e.ok)throw Error(await u(e,t));return e}async function ee(){let[e,t]=await Promise.all([l(`GET`,`/health`),l(`GET`,`/guardian/health`).catch(e=>(console.warn(`[api] Guardian health check failed:`,e),null))]),n=await e.json(),r=null;if(t)try{r=await t.json()}catch(e){console.warn(`[api] Failed to parse guardian health response:`,e),r={status:`unavailable`,service:`guardian`}}return{admin:n,guardian:r}}async function te(){return await(await d(await l(`GET`,`/admin/containers/list`))).json()}async function ne(e,t){await d(await l(`POST`,{start:`/admin/containers/up`,stop:`/admin/containers/down`,restart:`/admin/containers/restart`}[e],{service:t}))}async function re(){let e=await l(`POST`,`/admin/update`,{});if(e.status===401)throw Object.assign(Error(`Sign-in required.`),{status:401});if(!(e.headers.get(`content-type`)??``).includes(`application/json`))throw Error(await u(e,`Apply failed (HTTP ${e.status})`));return await e.json()}async function ie(){return await(await d(await l(`POST`,`/admin/upgrade`,{}))).json()}async function ae(){return await(await d(await l(`GET`,`/admin/versions`))).json()}async function oe(){try{let e=await l(`GET`,`/admin/versions/releases`);return e.ok?await e.json():{releases:[]}}catch{return{releases:[]}}}async function se(){try{let e=await l(`GET`,`/admin/versions/ui`);return e.ok?await e.json():{versions:[]}}catch{return{versions:[]}}}async function ce(e){return await(await d(await l(`PATCH`,`/admin/stack-version`,{tag:e}))).json()}async function le(e){return await(await d(await l(`POST`,`/admin/ui-version`,{tag:e}))).json()}async function ue(){return await(await d(await l(`GET`,`/admin/automations`))).json()}async function de(e){let t=new URLSearchParams;e?.service&&t.set(`service`,e.service),e?.tail&&t.set(`tail`,String(e.tail)),e?.since&&t.set(`since`,e.since);let n=t.toString();return await(await d(await l(`GET`,`/admin/logs${n?`?${n}`:``}`))).json()}async function fe(){return(await(await d(await l(`GET`,`/admin/addons`))).json()).addons}async function pe(e,t,n){let r={enabled:t};return n&&(r.env=n),await(await d(await l(`POST`,`/admin/addons/${encodeURIComponent(e)}`,r))).json()}async function me(e){return(await(await d(await l(`GET`,`/admin/addons/${encodeURIComponent(e)}/credentials`))).json()).fields}async function he(e,t){return await(await d(await l(`POST`,`/admin/addons/${encodeURIComponent(e)}/credentials`,{values:t}))).json()}async function ge(){return await(await d(await l(`GET`,`/admin/secrets`))).json()}async function _e(e){return await(await d(await l(`GET`,`/admin/secrets/${encodeURIComponent(e)}`))).json()}async function ve(e,t){return await(await d(await l(`PUT`,`/admin/secrets/${encodeURIComponent(e)}`,{value:t}))).json()}async function ye(e){return await(await d(await l(`DELETE`,`/admin/secrets/${encodeURIComponent(e)}`))).json()}async function be(e){return await(await d(await l(`GET`,`/admin/automations/${encodeURIComponent(e)}/file`))).json()}async function xe(e,t){return await(await d(await l(`PUT`,`/admin/automations/${encodeURIComponent(e)}/file`,{content:t}))).json()}async function Se(e){return await(await d(await l(`DELETE`,`/admin/automations/${encodeURIComponent(e)}/file`))).json()}async function f(){return await(await d(await l(`GET`,`/admin/voice`))).json()}async function p(e){let t=await l(`PUT`,`/admin/voice`,e);if(t.status===401)throw Object.assign(Error(`Invalid password.`),{status:401});if(t.status===200||t.status===202||t.status===502)return{...await t.json(),status:t.status};throw Error(await u(t))}async function m(e,t){let n=new FormData;n.append(`audio`,e,`recording.webm`),t?.language&&n.append(`language`,t.language),t?.prompt&&n.append(`prompt`,t.prompt);let r=await(await d(await fetch(`/api/transcribe`,{method:`POST`,headers:c(),credentials:`include`,body:n}))).json();return typeof r.text==`string`?r.text:``}async function h(){return await(await d(await l(`GET`,`/admin/akm`))).json()}async function g(e){return await(await d(await l(`PATCH`,`/admin/akm`,e))).json()}async function _(){return await(await d(await l(`GET`,`/admin/akm/host-sharing`))).json()}async function v(e={}){return await(await d(await l(`PUT`,`/admin/akm/host-sharing`,e))).json()}async function y(){return await(await d(await l(`DELETE`,`/admin/akm/host-sharing`))).json()}async function b(){await d(await l(`POST`,`/admin/containers/pull`,{}))}async function x(){return await(await d(await l(`GET`,`/admin/endpoints`))).json()}async function S(e){return await(await d(await l(`POST`,`/admin/endpoints`,e))).json()}async function C(e,t){return await(await d(await l(`PATCH`,`/admin/endpoints/${encodeURIComponent(e)}`,t))).json()}async function w(e){await d(await l(`DELETE`,`/admin/endpoints/${encodeURIComponent(e)}`))}async function T(e){return await(await d(await l(`POST`,`/admin/endpoints/active`,{id:e}))).json()}async function E(){return await(await d(await l(`POST`,`/proxy/assistant/session`,{}))).json()}async function D(){let e=(await(await d(await l(`GET`,`/proxy/assistant/session`))).json()).map(e=>({id:e.id,title:e.title??``,createdAt:e.time?.created??0,updatedAt:e.time?.updated??e.time?.created??0}));return e.sort((e,t)=>t.updatedAt-e.updatedAt),e}async function O(e){let t=await(await d(await l(`GET`,`/proxy/assistant/session/${encodeURIComponent(e)}/message`))).json(),n=[];for(let e of t){let t=e.parts.filter(e=>e.type===`text`&&e.text).map(e=>e.text??``).join(``);t&&n.push({id:e.info.id,role:e.info.role,text:t,timestamp:e.info.time?.created??Date.now()})}return n}async function k(e,t){let n=await fetch(`/proxy/assistant/session/${encodeURIComponent(e)}/message`,{method:`POST`,headers:{"content-type":`application/json`,...c()},credentials:`include`,body:JSON.stringify({parts:[{type:`text`,text:t}]}),signal:AbortSignal.timeout(15e4)});if(n.status===401)throw Object.assign(Error(`Sign-in required.`),{status:401});if(!n.ok){let e=await u(n);throw Object.assign(Error(e),{status:n.status})}return await n.json()}async function A(){try{return(await fetch(`/proxy/assistant/provider`,{method:`GET`,headers:c(),credentials:`include`,signal:AbortSignal.timeout(3e3)})).ok}catch{return!1}}var j={info:4e3,success:5e3,error:8e3},M=new class{#e=t(n([]));get toasts(){return e(this.#e)}set toasts(e){r(this.#e,e,!0)}timers=new Map;push(e,t,n={}){let r=n.replaceId??(typeof crypto<`u`&&`randomUUID`in crypto?crypto.randomUUID():`t-${Date.now()}-${Math.random().toString(36).slice(2)}`),i=n.sticky?null:n.ttlMs??j[e],a={id:r,kind:e,message:t,ttlMs:i},o=this.timers.get(r);o&&(clearTimeout(o),this.timers.delete(r));let s=this.toasts.findIndex(e=>e.id===r);if(s>=0){let e=[...this.toasts];e[s]=a,this.toasts=e}else this.toasts=[...this.toasts,a];if(i!==null){let e=setTimeout(()=>this.dismiss(r),i);this.timers.set(r,e)}return r}dismiss(e){let t=this.timers.get(e);t&&(clearTimeout(t),this.timers.delete(e)),this.toasts=this.toasts.filter(t=>t.id!==e)}clear(){for(let e of this.timers.values())clearTimeout(e);this.timers.clear(),this.toasts=[]}},Ce=6e4,N=new class{#e=t(`idle`);get status(){return e(this.#e)}set status(e){r(this.#e,e,!0)}#t=t(!1);get sttSupported(){return e(this.#t)}set sttSupported(e){r(this.#t,e,!0)}#n=t(!1);get ttsSupported(){return e(this.#n)}set ttsSupported(e){r(this.#n,e,!0)}#r=t(``);get errorMessage(){return e(this.#r)}set errorMessage(e){r(this.#r,e,!0)}#i=t(``);get interimTranscript(){return e(this.#i)}set interimTranscript(e){r(this.#i,e,!0)}#a=t(`disabled`);get sttEngine(){return e(this.#a)}set sttEngine(e){r(this.#a,e,!0)}#o=t(`disabled`);get ttsEngine(){return e(this.#o)}set ttsEngine(e){r(this.#o,e,!0)}#s=t(``);get sttLanguage(){return e(this.#s)}set sttLanguage(e){r(this.#s,e,!0)}#c=t(!1);get ttsAutoEnabled(){return e(this.#c)}set ttsAutoEnabled(e){r(this.#c,e,!0)}#l=t(!1);get autoplayBlocked(){return e(this.#l)}set autoplayBlocked(e){r(this.#l,e,!0)}#u=t(``);get browserSttUnsupportedReason(){return e(this.#u)}set browserSttUnsupportedReason(e){r(this.#u,e,!0)}},P=`openpalm.tts.auto`,F=null,I=null,L=null,R=null;function z(e){let t=N.ttsAutoEnabled;if(N.ttsAutoEnabled=e,typeof window<`u`)try{window.localStorage.setItem(P,e?`1`:`0`)}catch{}if(!e){Q();return}t||we()}function we(){if(typeof window>`u`)return;let e=window.AudioContext??window.webkitAudioContext;if(e)try{let t=new e,n=t.createBuffer(1,1,22050),r=t.createBufferSource();r.buffer=n,r.connect(t.destination),r.start(0),setTimeout(()=>{t.close().catch(()=>{})},100)}catch{}}function B(){if(!(typeof window>`u`))return window.SpeechRecognition??window.webkitSpeechRecognition??void 0}function Te(){if(typeof navigator>`u`)return!1;let e=navigator.userAgent??``,t=/iPad|iPhone|iPod/.test(e),n=window.MSStream;return t&&!n}function Ee(){return!(typeof window>`u`||typeof MediaRecorder>`u`||!navigator?.mediaDevices?.getUserMedia)}function De(e){switch(e){case`browser`:return N.browserSttUnsupportedReason?!1:!!B();case`remote`:case`openpalm-voice`:return Ee();default:return!1}}function V(e){return e===`browser`||e===`browser-stt`?`browser`:e===`openpalm-voice`?`openpalm-voice`:e&&!e.startsWith(`skip-`)?`remote`:`disabled`}async function Oe(){let e=typeof window<`u`&&`speechSynthesis`in window;if(typeof window<`u`)try{N.ttsAutoEnabled=window.localStorage.getItem(P)===`1`}catch{}try{let e=await f(),t=e.stt??{},n=e.tts??{},r=typeof t.engine==`string`?t.engine:``,i=typeof n.engine==`string`?n.engine:``;N.sttLanguage=typeof t.language==`string`?t.language:``,N.sttEngine=V(r),N.ttsEngine=V(i)}catch{N.sttEngine=`disabled`,N.ttsEngine=`disabled`}N.ttsSupported=N.ttsEngine===`openpalm-voice`||N.ttsEngine===`remote`||N.ttsEngine===`browser`&&e,Te()&&B()?(N.browserSttUnsupportedReason=`iOS Safari does not support Web Speech recognition`,N.sttEngine===`browser`&&(N.sttEngine=`disabled`)):N.browserSttUnsupportedReason=``,N.sttEngine===`disabled`&&B()&&!N.browserSttUnsupportedReason&&(N.sttEngine=`browser`),N.sttSupported=De(N.sttEngine)}function ke(e){if(!(N.status===`recording`||N.status===`transcribing`)){if(!N.sttSupported||N.sttEngine===`disabled`){N.errorMessage=`Speech recognition is not available.`;return}if(N.errorMessage=``,R=e,N.sttEngine===`browser`){Ae(e);return}je()}}function Ae(e){let t=B();if(!t){N.errorMessage=`Speech recognition is not supported in this browser.`;return}let n=new t;I=n,n.lang=N.sttLanguage||navigator?.language||`en-US`,n.interimResults=!0,n.maxAlternatives=1,n.continuous=!1;let r=``;n.onresult=e=>{let t=``;for(let n=e.resultIndex;n<e.results.length;n++){let i=e.results[n];i.isFinal?r+=i[0]?.transcript??``:t+=i[0]?.transcript??``}N.interimTranscript=r+t},n.onerror=e=>{if(I!==n)return;let t=e.error??``;t===`no-speech`||t===`aborted`||(t===`not-allowed`?N.errorMessage=`Microphone access denied.`:N.errorMessage=`Speech error: ${t}`),N.interimTranscript=``,N.status=`idle`,I=null,R=null},n.onend=()=>{I===n&&(r.trim()&&e&&e(r.trim()),N.interimTranscript=``,N.status=`idle`,I=null,R=null)};try{n.start(),N.status=`recording`}catch{N.errorMessage=`Failed to start speech recognition.`,N.status=`idle`,I=null,R=null}}async function je(){let e;try{e=await o()}catch(e){N.errorMessage=e instanceof Error?e.message:`Failed to start recording.`,N.status=`idle`,R=null;return}F=e,N.status=`recording`,L=setTimeout(()=>{H()},Ce)}async function H(){let e=F,t=R;if(!e)return;F=null,R=null,L&&=(clearTimeout(L),null),N.status=`transcribing`;let n;try{n=await e.stop()}catch(e){N.errorMessage=e instanceof Error?e.message:`Recording failed.`,N.status=`idle`;return}if(n.size===0){N.status=`idle`;return}try{let e=(await m(n,{language:N.sttLanguage||void 0})).trim();e&&t&&t(e)}catch(e){N.errorMessage=e instanceof Error?e.message:`Transcription failed.`}finally{N.status=`idle`}}function Me(){if(I){try{I.stop()}catch{}return}F&&H()}var U=null,W=null,Ne=3,G=[],K=!1,q=null,J=null;function Y(){if(U){U.onerror=null,U.onended=null;try{U.pause()}catch{}U.src=``,U=null}W&&=(URL.revokeObjectURL(W),null)}function X(){if(q){q.onerror=null,q.onended=null;try{q.pause()}catch{}q.src=``,q=null}J&&=(URL.revokeObjectURL(J),null),N.autoplayBlocked=!1}function Pe(){let e=q;if(!e){N.autoplayBlocked=!1;return}N.autoplayBlocked=!1,N.errorMessage=``,N.status=`speaking`,U=e,W=J,q=null,J=null,e.play().catch(()=>{N.status=`idle`,N.errorMessage=`Audio playback failed.`,Y()})}async function Fe(e){if(!(typeof window>`u`||!e.trim())){if(N.status===`speaking`){G.push(e);let t=0;for(;G.length>Ne;)G.shift(),t+=1;t>0&&!K&&(K=!0,M.push(`info`,`Skipped ${t} spoken ${t===1?`reply`:`replies`} — too much overlap. Lower the auto-speak chat rate.`));return}await Z(e)}}async function Z(e){if(typeof window>`u`||!e.trim())return;X(),Y(),`speechSynthesis`in window&&window.speechSynthesis.cancel(),N.errorMessage=``;let t=N.ttsEngine,n=t===`openpalm-voice`||t===`remote`;if(n){let t;try{t=await fetch(`/api/speak`,{method:`POST`,headers:{"content-type":`application/json`},credentials:`include`,body:JSON.stringify({text:e})})}catch{}if(t&&t.ok&&t.headers.get(`content-type`)?.startsWith(`audio/`)){let e=await t.blob(),n=URL.createObjectURL(e),r=new Audio(n);U=r,W=n,r.onended=()=>{N.status=`idle`,Y();let e=G.shift();e?Z(e):K=!1},r.onerror=()=>{N.status=`idle`,N.errorMessage=`Audio playback failed.`,Y();let e=G.shift();e?Z(e):K=!1},N.status=`speaking`;try{await r.play()}catch{N.status=`idle`,q=r,J=n,U=null,W=null,N.autoplayBlocked=!0}return}t&&!t.ok&&(N.errorMessage=await Ie(t))}if(!(`speechSynthesis`in window))return;n&&(N.errorMessage=``);let r=new SpeechSynthesisUtterance(e);r.onstart=()=>{N.status=`speaking`},r.onend=()=>{N.status=`idle`;let e=G.shift();e?Z(e):K=!1},r.onerror=()=>{N.status=`idle`;let e=G.shift();e?Z(e):K=!1},window.speechSynthesis.speak(r)}async function Ie(e){let t;try{let n=await e.clone().json();typeof n.error==`string`&&(t=n.error)}catch{}return t===`tts_not_configured`?`TTS is not configured.`:t===`upstream_error`||e.status===502||e.status===503?`Voice engine is warming up — try again in a moment.`:`TTS failed (HTTP ${e.status}).`}function Q(){G.length=0,K=!1,X(),Y(),typeof window<`u`&&`speechSynthesis`in window&&window.speechSynthesis.cancel(),N.status=`idle`}function Le(){if(L&&=(clearTimeout(L),null),F){try{F.cancel()}catch{}F=null}if(I){try{I.stop()}catch{}I=null}R=null,N.interimTranscript=``,N.status=`idle`}var $=`openpalm.theme`,Re=`data-theme`,ze=`#161c22`,Be=`#f9fafb`;function Ve(e){return e===`light`||e===`dark`||e===`system`}var He=new class{#e=t(`system`);get preference(){return e(this.#e)}set preference(e){r(this.#e,e,!0)}#t=t(`light`);get resolved(){return e(this.#t)}set resolved(e){r(this.#t,e,!0)}#n=t(!1);get initialized(){return e(this.#n)}set initialized(e){r(this.#n,e,!0)}#r=null;#i=()=>{this.preference===`system`&&(this.resolved=this.#s(`system`),this.#l())};init(){typeof window>`u`||this.initialized||(this.preference=this.#a(),this.resolved=this.#s(this.preference),this.#c(),this.#l(),this.initialized=!0)}setPreference(e){this.preference=e,this.resolved=this.#s(e),this.#o(e),this.#l()}toggle(){this.setPreference(this.resolved===`dark`?`light`:`dark`)}dispose(){this.#r&&(typeof this.#r.removeEventListener==`function`?this.#r.removeEventListener(`change`,this.#i):this.#r.removeListener(this.#i)),this.#r=null,this.initialized=!1}#a(){if(typeof window>`u`)return`system`;try{let e=window.localStorage.getItem($);return Ve(e)?e:`system`}catch{return`system`}}#o(e){if(!(typeof window>`u`))try{window.localStorage.setItem($,e)}catch{}}#s(e){return e===`light`||e===`dark`?e:typeof window>`u`||typeof window.matchMedia!=`function`?`light`:window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`}#c(){if(typeof window>`u`||typeof window.matchMedia!=`function`)return;let e=window.matchMedia(`(prefers-color-scheme: dark)`);this.#r!==e&&(this.#r&&(typeof this.#r.removeEventListener==`function`?this.#r.removeEventListener(`change`,this.#i):this.#r.removeListener(this.#i)),this.#r=e,typeof e.addEventListener==`function`?e.addEventListener(`change`,this.#i):e.addListener(this.#i))}#l(){if(typeof document>`u`)return;let e=document.documentElement;e.setAttribute(Re,this.resolved),e.style.colorScheme=this.resolved;let t=document.querySelector(`meta[name="theme-color"]`);t&&(t.content=this.resolved===`dark`?ze:Be);let n=document.querySelector(`meta[name="color-scheme"]`);n&&(n.content=this.resolved)}};export{ie as $,_ as A,D as B,me as C,te as D,ue as E,be as F,ve as G,b as H,se as I,k as J,xe as K,ae as L,_e as M,ge as N,x as O,de as P,C as Q,f as R,v as S,h as T,he as U,A as V,g as W,ce as X,T as Y,pe as Z,w as _,z as a,y as b,Me as c,M as d,re as f,E as g,S as h,Pe as i,oe as j,ee as k,Q as l,ne as m,Le as n,Fe as o,c as p,p as q,Oe as r,ke as s,He as t,N as u,ye as v,fe as w,le as x,Se as y,O as z};
|
|
Binary file
|
|
Binary file
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.
|
|
2
|
-
import{A as e,D as t,E as n,H as r,I as i,J as a,M as o,O as s,Q as c,R as l,U as u,V as d,Y as f,Z as p,a as m,b as h,ct as g,et as _,i as v,it as y,k as b,q as x,r as S,rt as C,s as w}from"../chunks/BwTF6U35.js";import{t as T}from"../chunks/kNaey6uv.js";import"../chunks/xihTtKlq.js";var E={},D=e(`<div id="svelte-announcer" aria-live="assertive" aria-atomic="true" style="position: absolute; left: 0; top: 0; clip: rect(0 0 0 0); clip-path: inset(50%); overflow: hidden; white-space: nowrap; width: 1px; height: 1px"><!></div>`),O=e(`<!> <!>`,1);function k(e,v){y(v,!0);let T=m(v,`components`,23,()=>[]),E=m(v,`data_0`,3,null),k=m(v,`data_1`,3,null),A=m(v,`data_2`,3,null);u(()=>v.stores.page.set(v.page)),r(()=>{v.stores,v.page,v.constructors,T(),v.form,E(),k(),A(),v.stores.page.notify()});let j=c(!1),M=c(!1),N=c(null);S(()=>{let e=v.stores.page.subscribe(()=>{i(j)&&(p(M,!0),l().then(()=>{p(N,document.title||`untitled page`,!0)}))});return p(j,!0),e});let P=_(()=>v.constructors[2]);var F=O(),I=a(F),L=e=>{let t=_(()=>v.constructors[0]);var r=b();h(a(r),()=>i(t),(e,t)=>{w(t(e,{get data(){return E()},get form(){return v.form},get params(){return v.page.params},children:(e,t)=>{var r=b(),o=a(r),c=e=>{let t=_(()=>v.constructors[1]);var n=b();h(a(n),()=>i(t),(e,t)=>{w(t(e,{get data(){return k()},get form(){return v.form},get params(){return v.page.params},children:(e,t)=>{var n=b();h(a(n),()=>i(P),(e,t)=>{w(t(e,{get data(){return A()},get form(){return v.form},get params(){return v.page.params}}),e=>T()[2]=e,()=>T()?.[2])}),s(e,n)},$$slots:{default:!0}}),e=>T()[1]=e,()=>T()?.[1])}),s(e,n)},l=e=>{let t=_(()=>v.constructors[1]);var n=b();h(a(n),()=>i(t),(e,t)=>{w(t(e,{get data(){return k()},get form(){return v.form},get params(){return v.page.params}}),e=>T()[1]=e,()=>T()?.[1])}),s(e,n)};n(o,e=>{v.constructors[2]?e(c):e(l,-1)}),s(e,r)},$$slots:{default:!0}}),e=>T()[0]=e,()=>T()?.[0])}),s(e,r)},R=e=>{let t=_(()=>v.constructors[0]);var n=b();h(a(n),()=>i(t),(e,t)=>{w(t(e,{get data(){return E()},get form(){return v.form},get params(){return v.page.params}}),e=>T()[0]=e,()=>T()?.[0])}),s(e,n)};n(I,e=>{v.constructors[1]?e(L):e(R,-1)});var z=f(I,2),B=e=>{var r=D(),a=x(r),c=e=>{var n=o();d(()=>t(n,i(N))),s(e,n)};n(a,e=>{i(M)&&e(c)}),g(r),s(e,r)};n(z,e=>{i(j)&&e(B)}),s(e,F),C()}var A=v(k),j=[()=>T(()=>import(`../nodes/0.
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.C-6HAZZl.js","../chunks/BwTF6U35.js","../chunks/xihTtKlq.js","../chunks/DXseS2Vw.js","../assets/0.BoT18krG.css","../nodes/1.vc1gswpN.js","../chunks/DTwNbG18.js","../chunks/CmvkId2p.js","../chunks/BuFlayix.js","../nodes/2.ojh8oE7F.js","../chunks/os2NZ37U.js","../nodes/3.DeAC3yVJ.js","../nodes/4.DD0APCkW.js","../chunks/DKrt-Ofe.js","../assets/AuthGate._EJNXKUm.css","../chunks/Cb_i8bV9.js","../assets/VoiceProfileSelector.Dp7tWdKe.css","../assets/4.D9MwgTDo.css","../nodes/5.BIkQUR1G.js","../assets/5.Cj0Mk9Gn.css","../nodes/6.DVDakR8k.js","../assets/6.DJenXolA.css","../nodes/7.wMxDFXAt.js","../assets/7.BimnqtTb.css","../nodes/8.Cb4MWMah.js","../assets/8.DjrHy5wu.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{A as e,D as t,E as n,H as r,I as i,J as a,M as o,O as s,Q as c,R as l,U as u,V as d,Y as f,Z as p,a as m,b as h,ct as g,et as _,i as v,it as y,k as b,q as x,r as S,rt as C,s as w}from"../chunks/BwTF6U35.js";import{t as T}from"../chunks/kNaey6uv.js";import"../chunks/xihTtKlq.js";var E={},D=e(`<div id="svelte-announcer" aria-live="assertive" aria-atomic="true" style="position: absolute; left: 0; top: 0; clip: rect(0 0 0 0); clip-path: inset(50%); overflow: hidden; white-space: nowrap; width: 1px; height: 1px"><!></div>`),O=e(`<!> <!>`,1);function k(e,v){y(v,!0);let T=m(v,`components`,23,()=>[]),E=m(v,`data_0`,3,null),k=m(v,`data_1`,3,null),A=m(v,`data_2`,3,null);u(()=>v.stores.page.set(v.page)),r(()=>{v.stores,v.page,v.constructors,T(),v.form,E(),k(),A(),v.stores.page.notify()});let j=c(!1),M=c(!1),N=c(null);S(()=>{let e=v.stores.page.subscribe(()=>{i(j)&&(p(M,!0),l().then(()=>{p(N,document.title||`untitled page`,!0)}))});return p(j,!0),e});let P=_(()=>v.constructors[2]);var F=O(),I=a(F),L=e=>{let t=_(()=>v.constructors[0]);var r=b();h(a(r),()=>i(t),(e,t)=>{w(t(e,{get data(){return E()},get form(){return v.form},get params(){return v.page.params},children:(e,t)=>{var r=b(),o=a(r),c=e=>{let t=_(()=>v.constructors[1]);var n=b();h(a(n),()=>i(t),(e,t)=>{w(t(e,{get data(){return k()},get form(){return v.form},get params(){return v.page.params},children:(e,t)=>{var n=b();h(a(n),()=>i(P),(e,t)=>{w(t(e,{get data(){return A()},get form(){return v.form},get params(){return v.page.params}}),e=>T()[2]=e,()=>T()?.[2])}),s(e,n)},$$slots:{default:!0}}),e=>T()[1]=e,()=>T()?.[1])}),s(e,n)},l=e=>{let t=_(()=>v.constructors[1]);var n=b();h(a(n),()=>i(t),(e,t)=>{w(t(e,{get data(){return k()},get form(){return v.form},get params(){return v.page.params}}),e=>T()[1]=e,()=>T()?.[1])}),s(e,n)};n(o,e=>{v.constructors[2]?e(c):e(l,-1)}),s(e,r)},$$slots:{default:!0}}),e=>T()[0]=e,()=>T()?.[0])}),s(e,r)},R=e=>{let t=_(()=>v.constructors[0]);var n=b();h(a(n),()=>i(t),(e,t)=>{w(t(e,{get data(){return E()},get form(){return v.form},get params(){return v.page.params}}),e=>T()[0]=e,()=>T()?.[0])}),s(e,n)};n(I,e=>{v.constructors[1]?e(L):e(R,-1)});var z=f(I,2),B=e=>{var r=D(),a=x(r),c=e=>{var n=o();d(()=>t(n,i(N))),s(e,n)};n(a,e=>{i(M)&&e(c)}),g(r),s(e,r)};n(z,e=>{i(j)&&e(B)}),s(e,F),C()}var A=v(k),j=[()=>T(()=>import(`../nodes/0.C-6HAZZl.js`),__vite__mapDeps([0,1,2,3,4]),import.meta.url),()=>T(()=>import(`../nodes/1.vc1gswpN.js`),__vite__mapDeps([5,1,6,7,8,2]),import.meta.url),()=>T(()=>import(`../nodes/2.ojh8oE7F.js`),__vite__mapDeps([9,1,2,10]),import.meta.url),()=>T(()=>import(`../nodes/3.DeAC3yVJ.js`),__vite__mapDeps([11,1,8,2,10]),import.meta.url),()=>T(()=>import(`../nodes/4.DD0APCkW.js`),__vite__mapDeps([12,1,2,13,6,7,8,3,14,15,16,17]),import.meta.url),()=>T(()=>import(`../nodes/5.BIkQUR1G.js`),__vite__mapDeps([18,1,2,13,6,7,8,3,14,19]),import.meta.url),()=>T(()=>import(`../nodes/6.DVDakR8k.js`),__vite__mapDeps([20,1,2,13,6,7,8,3,14,21]),import.meta.url),()=>T(()=>import(`../nodes/7.wMxDFXAt.js`),__vite__mapDeps([22,1,2,13,6,7,8,3,14,23]),import.meta.url),()=>T(()=>import(`../nodes/8.Cb4MWMah.js`),__vite__mapDeps([24,1,2,15,16,25]),import.meta.url)],M=[],N={"/":[3],"/admin":[4],"/admin/endpoints":[5],"/advanced":[6],"/chat":[7],"/setup":[8,[2]]},P={handleError:(({error:e})=>{console.error(e)}),reroute:(()=>{}),transport:{}},F=Object.fromEntries(Object.entries(P.transport).map(([e,t])=>[e,t.decode])),I=Object.fromEntries(Object.entries(P.transport).map(([e,t])=>[e,t.encode])),L=!1,R=(e,t)=>F[e](t);export{R as decode,F as decoders,N as dictionary,I as encoders,L as hash,P as hooks,E as matchers,j as nodes,A as root,M as server_loads};
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{o as e,t}from"../chunks/CmvkId2p.js";export{e as load_css,t as start};
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{A as e,D as t,E as n,H as r,I as i,J as a,M as o,N as s,O as c,P as l,Q as u,V as d,Y as f,Z as p,ct as m,d as h,it as g,j as _,k as v,lt as y,q as b,r as x,rt as S,v as C,w,x as T}from"../chunks/BwTF6U35.js";import"../chunks/xihTtKlq.js";import{d as E,t as D,u as O}from"../chunks/DXseS2Vw.js";var k=e(`<a target="_blank" rel="noopener noreferrer" class="update-banner-link svelte-z1ckp5">Download</a>`),A=e(`<div class="update-banner svelte-z1ckp5" role="status"><span class="update-banner-icon svelte-z1ckp5" aria-hidden="true"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line></svg></span> <span class="update-banner-text svelte-z1ckp5">A new version of OpenPalm is available — <strong> </strong> <!></span> <!> <button type="button" class="update-banner-dismiss svelte-z1ckp5" aria-label="Dismiss">×</button></div>`);function j(e,r){g(r,!0);let s=u(null),_=u(!1);function y(e){return`openpalm.updateBanner.dismissed.${e}`}x(async()=>{try{let e=await fetch(`/api/electron/update-status`);if(!e.ok)return;let t=await e.json();if(!t.inElectron||!t.updateAvailable||!t.latestVersion||typeof localStorage<`u`&&localStorage.getItem(y(t.latestVersion)))return;p(s,t,!0)}catch{}});function C(){i(s)?.latestVersion&&typeof localStorage<`u`&&localStorage.setItem(y(i(s).latestVersion),`1`),p(_,!0)}var w=v(),T=a(w),E=e=>{var r=A(),a=f(b(r),2),u=f(b(a)),p=b(u);m(u);var g=f(u,2),_=e=>{var n=o();d(()=>t(n,`(you have v${i(s).currentVersion??``})`)),c(e,n)};n(g,e=>{i(s).currentVersion&&e(_)}),m(a);var v=f(a,2),y=e=>{var t=k();d(()=>h(t,`href`,i(s).latestUrl)),c(e,t)};n(v,e=>{i(s).latestUrl&&e(y)});var x=f(v,2);m(r),d(()=>t(p,`v${i(s).latestVersion??``}`)),l(`click`,x,C),c(e,r)};n(T,e=>{i(s)&&!i(_)&&e(E)}),c(e,w),S()}s([`click`]);var M=_(`<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"></polyline></svg>`),N=_(`<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line></svg>`),P=_(`<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="16" x2="12" y2="12"></line><line x1="12" y1="8" x2="12.01" y2="8"></line></svg>`),F=e(`<div><span class="toast-icon svelte-1cpok13" aria-hidden="true"><!> <span class="sr-only svelte-1cpok13"> </span></span> <span class="toast-message svelte-1cpok13"> </span> <button type="button" class="toast-dismiss svelte-1cpok13" aria-label="Dismiss">×</button></div>`),I=e(`<div class="toast-stack svelte-1cpok13" aria-live="polite"></div>`);function L(e,o){g(o,!0);let s=null;r(()=>{let e=O.errorMessage;e&&(s=E.push(`error`,e,{replaceId:s??void 0}),O.errorMessage=``)});function u(e){E.dismiss(e.id),e.id===s&&(s=null)}function p(e){return e.kind===`success`?`Success`:e.kind===`error`?`Error`:`Notice`}var _=v(),y=a(_),x=e=>{var r=I();w(r,21,()=>E.toasts,e=>e.id,(e,r)=>{var a=F(),o=b(a),s=b(o),g=e=>{c(e,M())},_=e=>{c(e,N())},v=e=>{c(e,P())};n(s,e=>{i(r).kind===`success`?e(g):i(r).kind===`error`?e(_,1):e(v,-1)});var y=f(s,2),x=b(y);m(y),m(o);var S=f(o,2),w=b(S,!0);m(S);var T=f(S,2);m(a),d(e=>{C(a,1,`toast toast-${i(r).kind??``}`,`svelte-1cpok13`),h(a,`role`,i(r).kind===`error`?`alert`:`status`),h(a,`aria-live`,i(r).kind===`error`?`assertive`:`polite`),t(x,`${e??``}:`),t(w,i(r).message)},[()=>p(i(r))]),l(`click`,T,()=>u(i(r))),c(e,a)}),m(r),c(e,r)};n(y,e=>{E.toasts.length>0&&e(x)}),c(e,_),S()}s([`click`]);var R=e(`<!> <!> <!>`,1);function z(e,t){g(t,!0),x(()=>{D.init()});var n=R(),r=a(n);j(r,{});var i=f(r,2);T(i,()=>t.children??y),L(f(i,2),{}),c(e,n),S()}export{z as component};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{A as e,D as t,J as n,O as r,V as i,Y as a,ct as o,it as s,q as c,rt as l}from"../chunks/BwTF6U35.js";import"../chunks/xihTtKlq.js";import{t as u}from"../chunks/
|
|
1
|
+
import{A as e,D as t,J as n,O as r,V as i,Y as a,ct as o,it as s,q as c,rt as l}from"../chunks/BwTF6U35.js";import"../chunks/xihTtKlq.js";import{t as u}from"../chunks/DTwNbG18.js";var d=e(`<h1> </h1> <p> </p>`,1);function f(e,f){s(f,!0);var p=d(),m=n(p),h=c(m,!0);o(m);var g=a(m,2),_=c(g,!0);o(g),i(()=>{t(h,u.status),t(_,u.error?.message)}),r(e,p),l()}export{f as component};
|
|
Binary file
|
|
Binary file
|