@openpalm/ui 0.12.51 → 0.13.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/.openpalm-ui-version +1 -1
- package/build/client/_app/immutable/assets/0.CNWpIzQn.css +1 -0
- package/build/client/_app/immutable/assets/0.CNWpIzQn.css.br +0 -0
- package/build/client/_app/immutable/assets/0.CNWpIzQn.css.gz +0 -0
- package/build/client/_app/immutable/assets/10.vLP66eby.css +1 -0
- package/build/client/_app/immutable/assets/10.vLP66eby.css.br +0 -0
- package/build/client/_app/immutable/assets/10.vLP66eby.css.gz +0 -0
- package/build/client/_app/immutable/assets/11.BF9IcRAW.css +1 -0
- package/build/client/_app/immutable/assets/11.BF9IcRAW.css.br +0 -0
- package/build/client/_app/immutable/assets/11.BF9IcRAW.css.gz +0 -0
- package/build/client/_app/immutable/assets/5.CTNuT1CQ.css +1 -0
- package/build/client/_app/immutable/assets/5.CTNuT1CQ.css.br +0 -0
- package/build/client/_app/immutable/assets/5.CTNuT1CQ.css.gz +0 -0
- package/build/client/_app/immutable/assets/6.D_kTgQ70.css +1 -0
- package/build/client/_app/immutable/assets/6.D_kTgQ70.css.br +0 -0
- package/build/client/_app/immutable/assets/6.D_kTgQ70.css.gz +0 -0
- package/build/client/_app/immutable/assets/7.CEu3B1cr.css +1 -0
- package/build/client/_app/immutable/assets/7.CEu3B1cr.css.br +0 -0
- package/build/client/_app/immutable/assets/7.CEu3B1cr.css.gz +0 -0
- package/build/client/_app/immutable/assets/9.B0-fGtW-.css +1 -0
- package/build/client/_app/immutable/assets/9.B0-fGtW-.css.br +0 -0
- package/build/client/_app/immutable/assets/9.B0-fGtW-.css.gz +0 -0
- package/build/client/_app/immutable/assets/ChatNavbar.C7LJB8r7.css +1 -0
- package/build/client/_app/immutable/assets/ChatNavbar.C7LJB8r7.css.br +0 -0
- package/build/client/_app/immutable/assets/ChatNavbar.C7LJB8r7.css.gz +0 -0
- package/build/client/_app/immutable/assets/Drawer.C9zcL24P.css +1 -0
- package/build/client/_app/immutable/assets/Drawer.C9zcL24P.css.br +0 -0
- package/build/client/_app/immutable/assets/Drawer.C9zcL24P.css.gz +0 -0
- package/build/client/_app/immutable/assets/IconActivity.BdXOPwBm.css +1 -0
- package/build/client/_app/immutable/assets/IconActivity.BdXOPwBm.css.br +0 -0
- package/build/client/_app/immutable/assets/IconActivity.BdXOPwBm.css.gz +0 -0
- package/build/client/_app/immutable/assets/Spinner.DfNgj4dl.css +1 -0
- package/build/client/_app/immutable/assets/Spinner.DfNgj4dl.css.br +2 -0
- package/build/client/_app/immutable/assets/Spinner.DfNgj4dl.css.gz +0 -0
- package/build/client/_app/immutable/chunks/BDK50g8a.js +1 -0
- package/build/client/_app/immutable/chunks/BDK50g8a.js.br +0 -0
- package/build/client/_app/immutable/chunks/BDK50g8a.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BLc6D58Y.js +3 -0
- package/build/client/_app/immutable/chunks/BLc6D58Y.js.br +0 -0
- package/build/client/_app/immutable/chunks/BLc6D58Y.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BMyudKzg.js +1 -0
- package/build/client/_app/immutable/chunks/BMyudKzg.js.br +0 -0
- package/build/client/_app/immutable/chunks/BMyudKzg.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BNkLu9ey.js +3 -0
- package/build/client/_app/immutable/chunks/BNkLu9ey.js.br +0 -0
- package/build/client/_app/immutable/chunks/BNkLu9ey.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BkqRukKX.js +1 -0
- package/build/client/_app/immutable/chunks/BkqRukKX.js.br +2 -0
- package/build/client/_app/immutable/chunks/BkqRukKX.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BzIvC31O.js +3 -0
- package/build/client/_app/immutable/chunks/BzIvC31O.js.br +0 -0
- package/build/client/_app/immutable/chunks/BzIvC31O.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CUa5ff3d.js +1 -0
- package/build/client/_app/immutable/chunks/CUa5ff3d.js.br +0 -0
- package/build/client/_app/immutable/chunks/CUa5ff3d.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CvItGqWG.js +1 -0
- package/build/client/_app/immutable/chunks/CvItGqWG.js.br +0 -0
- package/build/client/_app/immutable/chunks/CvItGqWG.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D1nSxXur.js +5 -0
- package/build/client/_app/immutable/chunks/D1nSxXur.js.br +0 -0
- package/build/client/_app/immutable/chunks/D1nSxXur.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D5FtEngX.js +1 -0
- package/build/client/_app/immutable/chunks/D5FtEngX.js.br +0 -0
- package/build/client/_app/immutable/chunks/D5FtEngX.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DIM-KrDw.js +1 -0
- package/build/client/_app/immutable/chunks/DIM-KrDw.js.br +0 -0
- package/build/client/_app/immutable/chunks/DIM-KrDw.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Db8xkqW6.js +1 -0
- package/build/client/_app/immutable/chunks/Db8xkqW6.js.br +0 -0
- package/build/client/_app/immutable/chunks/Db8xkqW6.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DfZbBavE.js +1 -0
- package/build/client/_app/immutable/chunks/DfZbBavE.js.br +1 -0
- package/build/client/_app/immutable/chunks/DfZbBavE.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DmFbAjwW.js +1 -0
- package/build/client/_app/immutable/chunks/DmFbAjwW.js.br +3 -0
- package/build/client/_app/immutable/chunks/DmFbAjwW.js.gz +0 -0
- package/build/client/_app/immutable/chunks/NR-JVJz-.js +1 -0
- package/build/client/_app/immutable/chunks/NR-JVJz-.js.br +0 -0
- package/build/client/_app/immutable/chunks/NR-JVJz-.js.gz +0 -0
- package/build/client/_app/immutable/chunks/R6GPcDBF.js +14 -0
- package/build/client/_app/immutable/chunks/R6GPcDBF.js.br +0 -0
- package/build/client/_app/immutable/chunks/R6GPcDBF.js.gz +0 -0
- package/build/client/_app/immutable/chunks/SXdvPq3_.js +1 -0
- package/build/client/_app/immutable/chunks/SXdvPq3_.js.br +0 -0
- package/build/client/_app/immutable/chunks/SXdvPq3_.js.gz +0 -0
- package/build/client/_app/immutable/chunks/c0lkYAgh.js +5 -0
- package/build/client/_app/immutable/chunks/c0lkYAgh.js.br +0 -0
- package/build/client/_app/immutable/chunks/c0lkYAgh.js.gz +0 -0
- package/build/client/_app/immutable/chunks/hSjQday7.js +1 -0
- package/build/client/_app/immutable/chunks/hSjQday7.js.br +0 -0
- package/build/client/_app/immutable/chunks/hSjQday7.js.gz +0 -0
- package/build/client/_app/immutable/chunks/mG6HnNbi.js +1 -0
- package/build/client/_app/immutable/chunks/mG6HnNbi.js.br +0 -0
- package/build/client/_app/immutable/chunks/mG6HnNbi.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.ByeYK7_P.js +2 -0
- package/build/client/_app/immutable/entry/app.ByeYK7_P.js.br +0 -0
- package/build/client/_app/immutable/entry/app.ByeYK7_P.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.kykyp6T0.js +1 -0
- package/build/client/_app/immutable/entry/start.kykyp6T0.js.br +1 -0
- package/build/client/_app/immutable/entry/start.kykyp6T0.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.CLEDwEKf.js +1 -0
- package/build/client/_app/immutable/nodes/0.CLEDwEKf.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.CLEDwEKf.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.DOwkg43h.js +1 -0
- package/build/client/_app/immutable/nodes/1.DOwkg43h.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.DOwkg43h.js.gz +0 -0
- package/build/client/_app/immutable/nodes/10.Cs6atPP0.js +1 -0
- package/build/client/_app/immutable/nodes/10.Cs6atPP0.js.br +0 -0
- package/build/client/_app/immutable/nodes/10.Cs6atPP0.js.gz +0 -0
- package/build/client/_app/immutable/nodes/11.D1ux0xRH.js +6 -0
- package/build/client/_app/immutable/nodes/11.D1ux0xRH.js.br +0 -0
- package/build/client/_app/immutable/nodes/11.D1ux0xRH.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.C-PzaHZx.js +1 -0
- package/build/client/_app/immutable/nodes/2.C-PzaHZx.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.C-PzaHZx.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.26Z_fr6N.js +1 -0
- package/build/client/_app/immutable/nodes/3.26Z_fr6N.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.26Z_fr6N.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.vRThg0Ke.js +1 -0
- package/build/client/_app/immutable/nodes/4.vRThg0Ke.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.vRThg0Ke.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.y3u2P8a-.js +2 -0
- package/build/client/_app/immutable/nodes/5.y3u2P8a-.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.y3u2P8a-.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.Vtev5Cm4.js +2 -0
- package/build/client/_app/immutable/nodes/6.Vtev5Cm4.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.Vtev5Cm4.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.DQ9bZrdN.js +4 -0
- package/build/client/_app/immutable/nodes/7.DQ9bZrdN.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.DQ9bZrdN.js.gz +0 -0
- package/build/client/_app/immutable/nodes/8.NHp_bSVx.js +1 -0
- package/build/client/_app/immutable/nodes/8.NHp_bSVx.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.NHp_bSVx.js.gz +0 -0
- package/build/client/_app/immutable/nodes/9.2IPaJ-1P.js +126 -0
- package/build/client/_app/immutable/nodes/9.2IPaJ-1P.js.br +0 -0
- package/build/client/_app/immutable/nodes/9.2IPaJ-1P.js.gz +0 -0
- package/build/client/_app/version.json +1 -1
- package/build/client/_app/version.json.br +1 -2
- package/build/client/_app/version.json.gz +0 -0
- package/build/server/chunks/0-D6JYWBmc.js +43 -0
- package/build/server/chunks/0-D6JYWBmc.js.map +1 -0
- package/build/server/chunks/1-QFaO6yhK.js +9 -0
- package/build/server/chunks/1-QFaO6yhK.js.map +1 -0
- package/build/server/chunks/10-BHQuL7xa.js +35 -0
- package/build/server/chunks/10-BHQuL7xa.js.map +1 -0
- package/build/server/chunks/11-nYH7HWHs.js +9 -0
- package/build/server/chunks/11-nYH7HWHs.js.map +1 -0
- package/build/server/chunks/2-CQSBaE_w.js +9 -0
- package/build/server/chunks/2-CQSBaE_w.js.map +1 -0
- package/build/server/chunks/3-DflhJGSw.js +58 -0
- package/build/server/chunks/3-DflhJGSw.js.map +1 -0
- package/build/server/chunks/4-dgm3mFwb.js +9 -0
- package/build/server/chunks/4-dgm3mFwb.js.map +1 -0
- package/build/server/chunks/5-_ostMB1h.js +9 -0
- package/build/server/chunks/5-_ostMB1h.js.map +1 -0
- package/build/server/chunks/6-Bz787Ixu.js +9 -0
- package/build/server/chunks/6-Bz787Ixu.js.map +1 -0
- package/build/server/chunks/7-Cs4tQiJY.js +9 -0
- package/build/server/chunks/7-Cs4tQiJY.js.map +1 -0
- package/build/server/chunks/8-DiHmrGkL.js +30 -0
- package/build/server/chunks/8-DiHmrGkL.js.map +1 -0
- package/build/server/chunks/9-DPtmsJHR.js +42 -0
- package/build/server/chunks/9-DPtmsJHR.js.map +1 -0
- package/build/server/chunks/ChatNavbar-ZxJwQIGL.js +243 -0
- package/build/server/chunks/ChatNavbar-ZxJwQIGL.js.map +1 -0
- package/build/server/chunks/IconActivity-BVrMC8FH.js +5486 -0
- package/build/server/chunks/IconActivity-BVrMC8FH.js.map +1 -0
- package/build/server/chunks/IconAgent-DeBWj6Gr.js +16 -0
- package/build/server/chunks/IconAgent-DeBWj6Gr.js.map +1 -0
- package/build/server/chunks/IconDone-CHBJ36xT.js +10 -0
- package/build/server/chunks/IconDone-CHBJ36xT.js.map +1 -0
- package/build/server/chunks/IconInfo-DA5uGQyP.js +10 -0
- package/build/server/chunks/IconInfo-DA5uGQyP.js.map +1 -0
- package/build/server/chunks/IconLock-Bz5zHCBQ.js +10 -0
- package/build/server/chunks/IconLock-Bz5zHCBQ.js.map +1 -0
- package/build/server/chunks/IconLogo-BRmPVDI_.js +10 -0
- package/build/server/chunks/IconLogo-BRmPVDI_.js.map +1 -0
- package/build/server/chunks/IconMic-BbjkE_nG.js +18 -0
- package/build/server/chunks/IconMic-BbjkE_nG.js.map +1 -0
- package/build/server/chunks/IconServer-ByAeszv0.js +180 -0
- package/build/server/chunks/IconServer-ByAeszv0.js.map +1 -0
- package/build/server/chunks/IconStop-DFbhUtaJ.js +1122 -0
- package/build/server/chunks/IconStop-DFbhUtaJ.js.map +1 -0
- package/build/server/chunks/_helpers-CafYq-UD.js +74 -0
- package/build/server/chunks/_helpers-CafYq-UD.js.map +1 -0
- package/build/server/chunks/_layout.svelte-DFMW9sdO.js +65 -0
- package/build/server/chunks/_layout.svelte-DFMW9sdO.js.map +1 -0
- package/build/server/chunks/_page.svelte-BLGF_oAz.js +92 -0
- package/build/server/chunks/_page.svelte-BLGF_oAz.js.map +1 -0
- package/build/server/chunks/_page.svelte-CKJNzmVG.js +530 -0
- package/build/server/chunks/_page.svelte-CKJNzmVG.js.map +1 -0
- package/build/server/chunks/_page.svelte-CborsVrn.js +2425 -0
- package/build/server/chunks/_page.svelte-CborsVrn.js.map +1 -0
- package/build/server/chunks/_page.svelte-CknIT-b6.js +24 -0
- package/build/server/chunks/_page.svelte-CknIT-b6.js.map +1 -0
- package/build/server/chunks/_page.svelte-Cz3JYioD.js +82 -0
- package/build/server/chunks/_page.svelte-Cz3JYioD.js.map +1 -0
- package/build/server/chunks/_page.svelte-DDFJprLE.js +47 -0
- package/build/server/chunks/_page.svelte-DDFJprLE.js.map +1 -0
- package/build/server/chunks/_page.svelte-DojSR6TL.js +3500 -0
- package/build/server/chunks/_page.svelte-DojSR6TL.js.map +1 -0
- package/build/server/chunks/_page.svelte-Du3fWBth.js +5 -0
- package/build/server/chunks/_page.svelte-Du3fWBth.js.map +1 -0
- package/build/server/chunks/_server.ts-1VKTjr08.js +71 -0
- package/build/server/chunks/_server.ts-1VKTjr08.js.map +1 -0
- package/build/server/chunks/_server.ts-1Vco45Qu.js +58 -0
- package/build/server/chunks/_server.ts-1Vco45Qu.js.map +1 -0
- package/build/server/chunks/_server.ts-4SFWMa3H.js +49 -0
- package/build/server/chunks/_server.ts-4SFWMa3H.js.map +1 -0
- package/build/server/chunks/_server.ts-4eT-crTl.js +66 -0
- package/build/server/chunks/_server.ts-4eT-crTl.js.map +1 -0
- package/build/server/chunks/_server.ts-9TnX_Hfn.js +41 -0
- package/build/server/chunks/_server.ts-9TnX_Hfn.js.map +1 -0
- package/build/server/chunks/_server.ts-B0jGXHG1.js +38 -0
- package/build/server/chunks/_server.ts-B0jGXHG1.js.map +1 -0
- package/build/server/chunks/_server.ts-B46NQmKl.js +45 -0
- package/build/server/chunks/_server.ts-B46NQmKl.js.map +1 -0
- package/build/server/chunks/_server.ts-B7jtS1rc.js +42 -0
- package/build/server/chunks/_server.ts-B7jtS1rc.js.map +1 -0
- package/build/server/chunks/_server.ts-B8p1cZWN.js +77 -0
- package/build/server/chunks/_server.ts-B8p1cZWN.js.map +1 -0
- package/build/server/chunks/_server.ts-B9GH6f46.js +45 -0
- package/build/server/chunks/_server.ts-B9GH6f46.js.map +1 -0
- package/build/server/chunks/_server.ts-BFOoXmaJ.js +88 -0
- package/build/server/chunks/_server.ts-BFOoXmaJ.js.map +1 -0
- package/build/server/chunks/_server.ts-BG50sNod.js +94 -0
- package/build/server/chunks/_server.ts-BG50sNod.js.map +1 -0
- package/build/server/chunks/_server.ts-BG89__4Y.js +48 -0
- package/build/server/chunks/_server.ts-BG89__4Y.js.map +1 -0
- package/build/server/chunks/_server.ts-BI2IrCte.js +44 -0
- package/build/server/chunks/_server.ts-BI2IrCte.js.map +1 -0
- package/build/server/chunks/_server.ts-BLxV2y7p.js +70 -0
- package/build/server/chunks/_server.ts-BLxV2y7p.js.map +1 -0
- package/build/server/chunks/_server.ts-BRiu2AFG.js +89 -0
- package/build/server/chunks/_server.ts-BRiu2AFG.js.map +1 -0
- package/build/server/chunks/_server.ts-BUE0dmBz.js +58 -0
- package/build/server/chunks/_server.ts-BUE0dmBz.js.map +1 -0
- package/build/server/chunks/_server.ts-BV6i7XBr.js +92 -0
- package/build/server/chunks/_server.ts-BV6i7XBr.js.map +1 -0
- package/build/server/chunks/_server.ts-BYUzlpfe.js +172 -0
- package/build/server/chunks/_server.ts-BYUzlpfe.js.map +1 -0
- package/build/server/chunks/_server.ts-B_R9VtOW.js +152 -0
- package/build/server/chunks/_server.ts-B_R9VtOW.js.map +1 -0
- package/build/server/chunks/_server.ts-Bbtu4jaC.js +205 -0
- package/build/server/chunks/_server.ts-Bbtu4jaC.js.map +1 -0
- package/build/server/chunks/_server.ts-BeCTOV2T.js +57 -0
- package/build/server/chunks/_server.ts-BeCTOV2T.js.map +1 -0
- package/build/server/chunks/_server.ts-Bfkzx4ao.js +248 -0
- package/build/server/chunks/_server.ts-Bfkzx4ao.js.map +1 -0
- package/build/server/chunks/_server.ts-Bj17GHeW.js +44 -0
- package/build/server/chunks/_server.ts-Bj17GHeW.js.map +1 -0
- package/build/server/chunks/_server.ts-BjEVNsPT.js +50 -0
- package/build/server/chunks/_server.ts-BjEVNsPT.js.map +1 -0
- package/build/server/chunks/_server.ts-Bu-Ie_Mc.js +96 -0
- package/build/server/chunks/_server.ts-Bu-Ie_Mc.js.map +1 -0
- package/build/server/chunks/_server.ts-BvwD-tU2.js +49 -0
- package/build/server/chunks/_server.ts-BvwD-tU2.js.map +1 -0
- package/build/server/chunks/_server.ts-C0Zlu5Xy.js +107 -0
- package/build/server/chunks/_server.ts-C0Zlu5Xy.js.map +1 -0
- package/build/server/chunks/_server.ts-C1k-QptM.js +68 -0
- package/build/server/chunks/_server.ts-C1k-QptM.js.map +1 -0
- package/build/server/chunks/_server.ts-C43E5b3d.js +521 -0
- package/build/server/chunks/_server.ts-C43E5b3d.js.map +1 -0
- package/build/server/chunks/_server.ts-C5NMGLvR.js +68 -0
- package/build/server/chunks/_server.ts-C5NMGLvR.js.map +1 -0
- package/build/server/chunks/_server.ts-C7uAOfo3.js +94 -0
- package/build/server/chunks/_server.ts-C7uAOfo3.js.map +1 -0
- package/build/server/chunks/_server.ts-C7wn5VUY.js +111 -0
- package/build/server/chunks/_server.ts-C7wn5VUY.js.map +1 -0
- package/build/server/chunks/_server.ts-CFz_IeN4.js +56 -0
- package/build/server/chunks/_server.ts-CFz_IeN4.js.map +1 -0
- package/build/server/chunks/_server.ts-CHuyT9rF.js +69 -0
- package/build/server/chunks/_server.ts-CHuyT9rF.js.map +1 -0
- package/build/server/chunks/_server.ts-CKcFu8B-.js +171 -0
- package/build/server/chunks/_server.ts-CKcFu8B-.js.map +1 -0
- package/build/server/chunks/_server.ts-CMwOXeFC.js +80 -0
- package/build/server/chunks/_server.ts-CMwOXeFC.js.map +1 -0
- package/build/server/chunks/_server.ts-CP02aPdv.js +64 -0
- package/build/server/chunks/_server.ts-CP02aPdv.js.map +1 -0
- package/build/server/chunks/_server.ts-CQIXn8xb.js +64 -0
- package/build/server/chunks/_server.ts-CQIXn8xb.js.map +1 -0
- package/build/server/chunks/_server.ts-CTKwaXm1.js +93 -0
- package/build/server/chunks/_server.ts-CTKwaXm1.js.map +1 -0
- package/build/server/chunks/_server.ts-CUPbFKq2.js +106 -0
- package/build/server/chunks/_server.ts-CUPbFKq2.js.map +1 -0
- package/build/server/chunks/_server.ts-CXt9azl0.js +105 -0
- package/build/server/chunks/_server.ts-CXt9azl0.js.map +1 -0
- package/build/server/chunks/_server.ts-CYY3W2qh.js +715 -0
- package/build/server/chunks/_server.ts-CYY3W2qh.js.map +1 -0
- package/build/server/chunks/_server.ts-C_qRsJI2.js +68 -0
- package/build/server/chunks/_server.ts-C_qRsJI2.js.map +1 -0
- package/build/server/chunks/_server.ts-CbkJG3Yk.js +72 -0
- package/build/server/chunks/_server.ts-CbkJG3Yk.js.map +1 -0
- package/build/server/chunks/_server.ts-Cg_4-N8w.js +34 -0
- package/build/server/chunks/_server.ts-Cg_4-N8w.js.map +1 -0
- package/build/server/chunks/_server.ts-Chf0EFLa.js +60 -0
- package/build/server/chunks/_server.ts-Chf0EFLa.js.map +1 -0
- package/build/server/chunks/_server.ts-Ci1n4eQ3.js +52 -0
- package/build/server/chunks/_server.ts-Ci1n4eQ3.js.map +1 -0
- package/build/server/chunks/_server.ts-ClO4pSRG.js +51 -0
- package/build/server/chunks/_server.ts-ClO4pSRG.js.map +1 -0
- package/build/server/chunks/_server.ts-Cp6d9DIG.js +103 -0
- package/build/server/chunks/_server.ts-Cp6d9DIG.js.map +1 -0
- package/build/server/chunks/_server.ts-CtiJiKFW.js +58 -0
- package/build/server/chunks/_server.ts-CtiJiKFW.js.map +1 -0
- package/build/server/chunks/_server.ts-CtsLQpY2.js +19 -0
- package/build/server/chunks/_server.ts-CtsLQpY2.js.map +1 -0
- package/build/server/chunks/_server.ts-CyzJdUdD.js +88 -0
- package/build/server/chunks/_server.ts-CyzJdUdD.js.map +1 -0
- package/build/server/chunks/_server.ts-D1mP7Ux6.js +173 -0
- package/build/server/chunks/_server.ts-D1mP7Ux6.js.map +1 -0
- package/build/server/chunks/_server.ts-D2dBUHv-.js +61 -0
- package/build/server/chunks/_server.ts-D2dBUHv-.js.map +1 -0
- package/build/server/chunks/_server.ts-D81J9NzU.js +44 -0
- package/build/server/chunks/_server.ts-D81J9NzU.js.map +1 -0
- package/build/server/chunks/_server.ts-DJFB76Z4.js +36 -0
- package/build/server/chunks/_server.ts-DJFB76Z4.js.map +1 -0
- package/build/server/chunks/_server.ts-DJxUVpVr.js +55 -0
- package/build/server/chunks/_server.ts-DJxUVpVr.js.map +1 -0
- package/build/server/chunks/_server.ts-DK409rto.js +45 -0
- package/build/server/chunks/_server.ts-DK409rto.js.map +1 -0
- package/build/server/chunks/_server.ts-DPw-9Fvz.js +88 -0
- package/build/server/chunks/_server.ts-DPw-9Fvz.js.map +1 -0
- package/build/server/chunks/_server.ts-DTOMs2Oo.js +57 -0
- package/build/server/chunks/_server.ts-DTOMs2Oo.js.map +1 -0
- package/build/server/chunks/_server.ts-DVXK2VD6.js +60 -0
- package/build/server/chunks/_server.ts-DVXK2VD6.js.map +1 -0
- package/build/server/chunks/_server.ts-DW3mRh_v.js +72 -0
- package/build/server/chunks/_server.ts-DW3mRh_v.js.map +1 -0
- package/build/server/chunks/_server.ts-Db2X5ulY.js +41 -0
- package/build/server/chunks/_server.ts-Db2X5ulY.js.map +1 -0
- package/build/server/chunks/_server.ts-DhfQc2ah.js +134 -0
- package/build/server/chunks/_server.ts-DhfQc2ah.js.map +1 -0
- package/build/server/chunks/_server.ts-DjFDthjg.js +44 -0
- package/build/server/chunks/_server.ts-DjFDthjg.js.map +1 -0
- package/build/server/chunks/_server.ts-Dk7RL-D7.js +61 -0
- package/build/server/chunks/_server.ts-Dk7RL-D7.js.map +1 -0
- package/build/server/chunks/_server.ts-DrHEkbDq.js +84 -0
- package/build/server/chunks/_server.ts-DrHEkbDq.js.map +1 -0
- package/build/server/chunks/_server.ts-DvKpBV-Y.js +42 -0
- package/build/server/chunks/_server.ts-DvKpBV-Y.js.map +1 -0
- package/build/server/chunks/_server.ts-FhE6fUSD.js +40 -0
- package/build/server/chunks/_server.ts-FhE6fUSD.js.map +1 -0
- package/build/server/chunks/_server.ts-GuptvcVQ.js +49 -0
- package/build/server/chunks/_server.ts-GuptvcVQ.js.map +1 -0
- package/build/server/chunks/_server.ts-HN1FxysS.js +68 -0
- package/build/server/chunks/_server.ts-HN1FxysS.js.map +1 -0
- package/build/server/chunks/_server.ts-HlB5nMY9.js +149 -0
- package/build/server/chunks/_server.ts-HlB5nMY9.js.map +1 -0
- package/build/server/chunks/_server.ts-MvwnQkPT.js +49 -0
- package/build/server/chunks/_server.ts-MvwnQkPT.js.map +1 -0
- package/build/server/chunks/_server.ts-Q1zB1kiD.js +87 -0
- package/build/server/chunks/_server.ts-Q1zB1kiD.js.map +1 -0
- package/build/server/chunks/_server.ts-Rv6Qmjnm.js +65 -0
- package/build/server/chunks/_server.ts-Rv6Qmjnm.js.map +1 -0
- package/build/server/chunks/_server.ts-S90K5IJI.js +57 -0
- package/build/server/chunks/_server.ts-S90K5IJI.js.map +1 -0
- package/build/server/chunks/_server.ts-Y4JoeA12.js +141 -0
- package/build/server/chunks/_server.ts-Y4JoeA12.js.map +1 -0
- package/build/server/chunks/_server.ts-at5EQV31.js +162 -0
- package/build/server/chunks/_server.ts-at5EQV31.js.map +1 -0
- package/build/server/chunks/_server.ts-c64R3qMS.js +112 -0
- package/build/server/chunks/_server.ts-c64R3qMS.js.map +1 -0
- package/build/server/chunks/_server.ts-nasuSdo-.js +80 -0
- package/build/server/chunks/_server.ts-nasuSdo-.js.map +1 -0
- package/build/server/chunks/_server.ts-rPbq-4rb.js +87 -0
- package/build/server/chunks/_server.ts-rPbq-4rb.js.map +1 -0
- package/build/server/chunks/_server.ts-tchYVZRL.js +166 -0
- package/build/server/chunks/_server.ts-tchYVZRL.js.map +1 -0
- package/build/server/chunks/_server.ts-uqxkiRQ1.js +38 -0
- package/build/server/chunks/_server.ts-uqxkiRQ1.js.map +1 -0
- package/build/server/chunks/_server.ts-y3HSMNEG.js +56 -0
- package/build/server/chunks/_server.ts-y3HSMNEG.js.map +1 -0
- package/build/server/chunks/_server.ts-y7XlQItn.js +58 -0
- package/build/server/chunks/_server.ts-y7XlQItn.js.map +1 -0
- package/build/server/chunks/addon-helpers-Cpj40OF3.js +51 -0
- package/build/server/chunks/addon-helpers-Cpj40OF3.js.map +1 -0
- package/build/server/chunks/akm-D8uSJNzt.js +151 -0
- package/build/server/chunks/akm-D8uSJNzt.js.map +1 -0
- package/build/server/chunks/catalog-C9ClLZ62.js +217 -0
- package/build/server/chunks/catalog-C9ClLZ62.js.map +1 -0
- package/build/server/chunks/client-utk4T8Jl.js +202 -0
- package/build/server/chunks/client-utk4T8Jl.js.map +1 -0
- package/build/server/chunks/compose-args2-cix5m26E.js +26 -0
- package/build/server/chunks/compose-args2-cix5m26E.js.map +1 -0
- package/build/server/chunks/config-BV78mCrh.js +121 -0
- package/build/server/chunks/config-BV78mCrh.js.map +1 -0
- package/build/server/chunks/connections-api-CpQ5k7QC.js +34 -0
- package/build/server/chunks/connections-api-CpQ5k7QC.js.map +1 -0
- package/build/server/chunks/constants-B7J5DDaI.js +298 -0
- package/build/server/chunks/constants-B7J5DDaI.js.map +1 -0
- package/build/server/chunks/docker2-DqIy9JYf.js +26 -0
- package/build/server/chunks/docker2-DqIy9JYf.js.map +1 -0
- package/build/server/chunks/docker3-DvrSgFLt.js +20 -0
- package/build/server/chunks/docker3-DvrSgFLt.js.map +1 -0
- package/build/server/chunks/endpoints-CU3ehglV.js +377 -0
- package/build/server/chunks/endpoints-CU3ehglV.js.map +1 -0
- package/build/server/chunks/environment-BYp8JQYM.js +38 -0
- package/build/server/chunks/environment-BYp8JQYM.js.map +1 -0
- package/build/server/chunks/error.svelte-B9DQG_Wh.js +18 -0
- package/build/server/chunks/error.svelte-B9DQG_Wh.js.map +1 -0
- package/build/server/chunks/exports-CcmcYU0M.js +124 -0
- package/build/server/chunks/exports-CcmcYU0M.js.map +1 -0
- package/build/server/chunks/exports2-BjzhbhYA.js +691 -0
- package/build/server/chunks/exports2-BjzhbhYA.js.map +1 -0
- package/build/server/chunks/features-DLGlNjZX.js +116 -0
- package/build/server/chunks/features-DLGlNjZX.js.map +1 -0
- package/build/server/chunks/format-date-gcou_Av8.js +950 -0
- package/build/server/chunks/format-date-gcou_Av8.js.map +1 -0
- package/build/server/chunks/helpers-7BvhniSt.js +320 -0
- package/build/server/chunks/helpers-7BvhniSt.js.map +1 -0
- package/build/server/chunks/hooks.server-CwIkB_d8.js +115 -0
- package/build/server/chunks/hooks.server-CwIkB_d8.js.map +1 -0
- package/build/server/chunks/http-D0qKwTqb.js +31 -0
- package/build/server/chunks/http-D0qKwTqb.js.map +1 -0
- package/build/server/chunks/internal-CVxYC2gp.js +915 -0
- package/build/server/chunks/internal-CVxYC2gp.js.map +1 -0
- package/build/server/chunks/landing-BAWznbys.js +95 -0
- package/build/server/chunks/landing-BAWznbys.js.map +1 -0
- package/build/server/chunks/paths-lkOb-n87.js +17 -0
- package/build/server/chunks/paths-lkOb-n87.js.map +1 -0
- package/build/server/chunks/provider-constants-1s1k8kbj.js +68 -0
- package/build/server/chunks/provider-constants-1s1k8kbj.js.map +1 -0
- package/build/server/chunks/runtime-context.svelte-FZapSP7A.js +24 -0
- package/build/server/chunks/runtime-context.svelte-FZapSP7A.js.map +1 -0
- package/build/server/chunks/session-cookie-WuIYBiMY.js +74 -0
- package/build/server/chunks/session-cookie-WuIYBiMY.js.map +1 -0
- package/build/server/chunks/setup-deploy-DaMn6d6g.js +75 -0
- package/build/server/chunks/setup-deploy-DaMn6d6g.js.map +1 -0
- package/build/server/chunks/speakable-text-BflxDDdY.js +65 -0
- package/build/server/chunks/speakable-text-BflxDDdY.js.map +1 -0
- package/build/server/chunks/src-CS2sSYOR.js +17213 -0
- package/build/server/chunks/src-CS2sSYOR.js.map +1 -0
- package/build/server/chunks/state-BRh7vs9j.js +24 -0
- package/build/server/chunks/state-BRh7vs9j.js.map +1 -0
- package/build/server/chunks/state2-COVNCCTq.js +62 -0
- package/build/server/chunks/state2-COVNCCTq.js.map +1 -0
- package/build/server/chunks/utils-OXHIhUb5.js +150 -0
- package/build/server/chunks/utils-OXHIhUb5.js.map +1 -0
- package/build/server/chunks/voice-state.svelte-bOoc1Vo0.js +1214 -0
- package/build/server/chunks/voice-state.svelte-bOoc1Vo0.js.map +1 -0
- package/build/server/index.js +33 -33
- package/build/server/index.js.map +1 -1
- package/build/server/manifest.js +272 -243
- package/build/server/manifest.js.map +1 -1
- package/package.json +3 -2
- package/build/client/_app/immutable/assets/0.C-UsFwN5.css +0 -1
- package/build/client/_app/immutable/assets/0.C-UsFwN5.css.br +0 -0
- package/build/client/_app/immutable/assets/0.C-UsFwN5.css.gz +0 -0
- package/build/client/_app/immutable/assets/10.p7qpuBHR.css +0 -1
- package/build/client/_app/immutable/assets/10.p7qpuBHR.css.br +0 -2
- package/build/client/_app/immutable/assets/10.p7qpuBHR.css.gz +0 -0
- package/build/client/_app/immutable/assets/4.DKS7ivN-.css +0 -1
- package/build/client/_app/immutable/assets/4.DKS7ivN-.css.br +0 -0
- package/build/client/_app/immutable/assets/4.DKS7ivN-.css.gz +0 -0
- package/build/client/_app/immutable/assets/5.B9kVBENv.css +0 -1
- package/build/client/_app/immutable/assets/5.B9kVBENv.css.br +0 -0
- package/build/client/_app/immutable/assets/5.B9kVBENv.css.gz +0 -0
- package/build/client/_app/immutable/assets/7.C0_Oskm7.css +0 -1
- package/build/client/_app/immutable/assets/7.C0_Oskm7.css.br +0 -0
- package/build/client/_app/immutable/assets/7.C0_Oskm7.css.gz +0 -0
- package/build/client/_app/immutable/assets/8.DdhLOSFx.css +0 -1
- package/build/client/_app/immutable/assets/8.DdhLOSFx.css.br +0 -0
- package/build/client/_app/immutable/assets/8.DdhLOSFx.css.gz +0 -0
- package/build/client/_app/immutable/assets/9.4QFZFijM.css +0 -1
- package/build/client/_app/immutable/assets/9.4QFZFijM.css.br +0 -0
- package/build/client/_app/immutable/assets/9.4QFZFijM.css.gz +0 -0
- package/build/client/_app/immutable/assets/IconClock.CudG-UM6.css +0 -1
- package/build/client/_app/immutable/assets/IconClock.CudG-UM6.css.br +0 -0
- package/build/client/_app/immutable/assets/IconClock.CudG-UM6.css.gz +0 -0
- package/build/client/_app/immutable/assets/Navbar.D3rckLpW.css +0 -1
- package/build/client/_app/immutable/assets/Navbar.D3rckLpW.css.br +0 -0
- package/build/client/_app/immutable/assets/Navbar.D3rckLpW.css.gz +0 -0
- package/build/client/_app/immutable/assets/Spinner.CCwieGti.css +0 -1
- package/build/client/_app/immutable/assets/Spinner.CCwieGti.css.br +0 -0
- package/build/client/_app/immutable/assets/Spinner.CCwieGti.css.gz +0 -0
- package/build/client/_app/immutable/chunks/B6a5LPQe.js +0 -3
- package/build/client/_app/immutable/chunks/B6a5LPQe.js.br +0 -0
- package/build/client/_app/immutable/chunks/B6a5LPQe.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BFVV1YJb.js +0 -1
- package/build/client/_app/immutable/chunks/BFVV1YJb.js.br +0 -0
- package/build/client/_app/immutable/chunks/BFVV1YJb.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BeDFZ0w6.js +0 -1
- package/build/client/_app/immutable/chunks/BeDFZ0w6.js.br +0 -0
- package/build/client/_app/immutable/chunks/BeDFZ0w6.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BiuKIdz2.js +0 -1
- package/build/client/_app/immutable/chunks/BiuKIdz2.js.br +0 -0
- package/build/client/_app/immutable/chunks/BiuKIdz2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C3n4za32.js +0 -1
- package/build/client/_app/immutable/chunks/C3n4za32.js.br +0 -0
- package/build/client/_app/immutable/chunks/C3n4za32.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C4j7gGnm.js +0 -14
- package/build/client/_app/immutable/chunks/C4j7gGnm.js.br +0 -0
- package/build/client/_app/immutable/chunks/C4j7gGnm.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C8Qdq8nY.js +0 -1
- package/build/client/_app/immutable/chunks/C8Qdq8nY.js.br +0 -0
- package/build/client/_app/immutable/chunks/C8Qdq8nY.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DI0CI0UJ.js +0 -1
- package/build/client/_app/immutable/chunks/DI0CI0UJ.js.br +0 -2
- package/build/client/_app/immutable/chunks/DI0CI0UJ.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DOah_AX9.js +0 -1
- package/build/client/_app/immutable/chunks/DOah_AX9.js.br +0 -2
- package/build/client/_app/immutable/chunks/DOah_AX9.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DS38YEEh.js +0 -3
- package/build/client/_app/immutable/chunks/DS38YEEh.js.br +0 -0
- package/build/client/_app/immutable/chunks/DS38YEEh.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DWwJdNrB.js +0 -1
- package/build/client/_app/immutable/chunks/DWwJdNrB.js.br +0 -1
- package/build/client/_app/immutable/chunks/DWwJdNrB.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DoqDEOzg.js +0 -1
- package/build/client/_app/immutable/chunks/DoqDEOzg.js.br +0 -0
- package/build/client/_app/immutable/chunks/DoqDEOzg.js.gz +0 -0
- package/build/client/_app/immutable/chunks/HbvxHNCX.js +0 -1
- package/build/client/_app/immutable/chunks/HbvxHNCX.js.br +0 -0
- package/build/client/_app/immutable/chunks/HbvxHNCX.js.gz +0 -0
- package/build/client/_app/immutable/chunks/d5pHSbNd.js +0 -1
- package/build/client/_app/immutable/chunks/d5pHSbNd.js.br +0 -0
- package/build/client/_app/immutable/chunks/d5pHSbNd.js.gz +0 -0
- package/build/client/_app/immutable/chunks/jopA0ZFl.js +0 -1
- package/build/client/_app/immutable/chunks/jopA0ZFl.js.br +0 -0
- package/build/client/_app/immutable/chunks/jopA0ZFl.js.gz +0 -0
- package/build/client/_app/immutable/chunks/mVxTG_mC.js +0 -1
- package/build/client/_app/immutable/chunks/mVxTG_mC.js.br +0 -3
- package/build/client/_app/immutable/chunks/mVxTG_mC.js.gz +0 -0
- package/build/client/_app/immutable/chunks/p-DX0ixp.js +0 -5
- package/build/client/_app/immutable/chunks/p-DX0ixp.js.br +0 -0
- package/build/client/_app/immutable/chunks/p-DX0ixp.js.gz +0 -0
- package/build/client/_app/immutable/chunks/zMaWNBEE.js +0 -1
- package/build/client/_app/immutable/chunks/zMaWNBEE.js.br +0 -0
- package/build/client/_app/immutable/chunks/zMaWNBEE.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.DehYJGqJ.js +0 -2
- package/build/client/_app/immutable/entry/app.DehYJGqJ.js.br +0 -0
- package/build/client/_app/immutable/entry/app.DehYJGqJ.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.wiUeco_y.js +0 -1
- package/build/client/_app/immutable/entry/start.wiUeco_y.js.br +0 -0
- package/build/client/_app/immutable/entry/start.wiUeco_y.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.Cnp9ux9m.js +0 -1
- package/build/client/_app/immutable/nodes/0.Cnp9ux9m.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.Cnp9ux9m.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.BemXOvxs.js +0 -1
- package/build/client/_app/immutable/nodes/1.BemXOvxs.js.br +0 -1
- package/build/client/_app/immutable/nodes/1.BemXOvxs.js.gz +0 -0
- package/build/client/_app/immutable/nodes/10.ZllEmpUV.js +0 -1
- package/build/client/_app/immutable/nodes/10.ZllEmpUV.js.br +0 -0
- package/build/client/_app/immutable/nodes/10.ZllEmpUV.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.Di1bEoG2.js +0 -1
- package/build/client/_app/immutable/nodes/2.Di1bEoG2.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.Di1bEoG2.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.DNLsgB0V.js +0 -1
- package/build/client/_app/immutable/nodes/3.DNLsgB0V.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.DNLsgB0V.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.DYNAraCN.js +0 -124
- package/build/client/_app/immutable/nodes/4.DYNAraCN.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.DYNAraCN.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.CKpwzpJZ.js +0 -4
- package/build/client/_app/immutable/nodes/5.CKpwzpJZ.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.CKpwzpJZ.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.D5-ZIRjO.js +0 -1
- package/build/client/_app/immutable/nodes/6.D5-ZIRjO.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.D5-ZIRjO.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.BvOE8CuZ.js +0 -2
- package/build/client/_app/immutable/nodes/7.BvOE8CuZ.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.BvOE8CuZ.js.gz +0 -0
- package/build/client/_app/immutable/nodes/8.BBUAt98J.js +0 -1
- package/build/client/_app/immutable/nodes/8.BBUAt98J.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.BBUAt98J.js.gz +0 -0
- package/build/client/_app/immutable/nodes/9.DOXxvfJX.js +0 -6
- package/build/client/_app/immutable/nodes/9.DOXxvfJX.js.br +0 -0
- package/build/client/_app/immutable/nodes/9.DOXxvfJX.js.gz +0 -0
- package/build/server/chunks/0-Cgrn5hhk.js +0 -22
- package/build/server/chunks/0-Cgrn5hhk.js.map +0 -1
- package/build/server/chunks/1-CZn9SJHY.js +0 -9
- package/build/server/chunks/1-CZn9SJHY.js.map +0 -1
- package/build/server/chunks/10-CtFpKzhY.js +0 -69
- package/build/server/chunks/10-CtFpKzhY.js.map +0 -1
- package/build/server/chunks/2-BcxV9Utx.js +0 -9
- package/build/server/chunks/2-BcxV9Utx.js.map +0 -1
- package/build/server/chunks/3-EodZ49YI.js +0 -23
- package/build/server/chunks/3-EodZ49YI.js.map +0 -1
- package/build/server/chunks/4-BFceMUCr.js +0 -9
- package/build/server/chunks/4-BFceMUCr.js.map +0 -1
- package/build/server/chunks/5-DMSVfHW6.js +0 -9
- package/build/server/chunks/5-DMSVfHW6.js.map +0 -1
- package/build/server/chunks/6-DfKN8DgI.js +0 -9
- package/build/server/chunks/6-DfKN8DgI.js.map +0 -1
- package/build/server/chunks/7-DH54977X.js +0 -9
- package/build/server/chunks/7-DH54977X.js.map +0 -1
- package/build/server/chunks/8-DU3RlvqB.js +0 -35
- package/build/server/chunks/8-DU3RlvqB.js.map +0 -1
- package/build/server/chunks/9-CJj3CrWs.js +0 -9
- package/build/server/chunks/9-CJj3CrWs.js.map +0 -1
- package/build/server/chunks/IconAlert-eLDsz7qz.js +0 -5496
- package/build/server/chunks/IconAlert-eLDsz7qz.js.map +0 -1
- package/build/server/chunks/IconDone-YB1DYJFs.js +0 -10
- package/build/server/chunks/IconDone-YB1DYJFs.js.map +0 -1
- package/build/server/chunks/IconInfo-yYiI9uGe.js +0 -10
- package/build/server/chunks/IconInfo-yYiI9uGe.js.map +0 -1
- package/build/server/chunks/IconLock-DHiqGiiZ.js +0 -10
- package/build/server/chunks/IconLock-DHiqGiiZ.js.map +0 -1
- package/build/server/chunks/IconLogo-Iv-7q8aY.js +0 -10
- package/build/server/chunks/IconLogo-Iv-7q8aY.js.map +0 -1
- package/build/server/chunks/IconMic-DLx3WSIu.js +0 -1291
- package/build/server/chunks/IconMic-DLx3WSIu.js.map +0 -1
- package/build/server/chunks/Navbar-CY_SCLFB.js +0 -403
- package/build/server/chunks/Navbar-CY_SCLFB.js.map +0 -1
- package/build/server/chunks/Spinner-jfNKSy3m.js +0 -12
- package/build/server/chunks/Spinner-jfNKSy3m.js.map +0 -1
- package/build/server/chunks/_helpers-B_lb4-jB.js +0 -74
- package/build/server/chunks/_helpers-B_lb4-jB.js.map +0 -1
- package/build/server/chunks/_layout.svelte-D8yNnetP.js +0 -66
- package/build/server/chunks/_layout.svelte-D8yNnetP.js.map +0 -1
- package/build/server/chunks/_page.svelte-1DSc9sIW.js +0 -74
- package/build/server/chunks/_page.svelte-1DSc9sIW.js.map +0 -1
- package/build/server/chunks/_page.svelte-BCIeT4bO.js +0 -3289
- package/build/server/chunks/_page.svelte-BCIeT4bO.js.map +0 -1
- package/build/server/chunks/_page.svelte-BfI94K0U.js +0 -122
- package/build/server/chunks/_page.svelte-BfI94K0U.js.map +0 -1
- package/build/server/chunks/_page.svelte-C3Ojg16l.js +0 -47
- package/build/server/chunks/_page.svelte-C3Ojg16l.js.map +0 -1
- package/build/server/chunks/_page.svelte-DAu9fGOD.js +0 -356
- package/build/server/chunks/_page.svelte-DAu9fGOD.js.map +0 -1
- package/build/server/chunks/_page.svelte-DCHynIvB.js +0 -79
- package/build/server/chunks/_page.svelte-DCHynIvB.js.map +0 -1
- package/build/server/chunks/_page.svelte-Dqk_OD73.js +0 -89
- package/build/server/chunks/_page.svelte-Dqk_OD73.js.map +0 -1
- package/build/server/chunks/_server.ts-0Vg6AJPt.js +0 -92
- package/build/server/chunks/_server.ts-0Vg6AJPt.js.map +0 -1
- package/build/server/chunks/_server.ts-1gIYETOG.js +0 -53
- package/build/server/chunks/_server.ts-1gIYETOG.js.map +0 -1
- package/build/server/chunks/_server.ts-2cFkndKX.js +0 -70
- package/build/server/chunks/_server.ts-2cFkndKX.js.map +0 -1
- package/build/server/chunks/_server.ts-33LuQvHu.js +0 -19
- package/build/server/chunks/_server.ts-33LuQvHu.js.map +0 -1
- package/build/server/chunks/_server.ts-B1moS46A.js +0 -45
- package/build/server/chunks/_server.ts-B1moS46A.js.map +0 -1
- package/build/server/chunks/_server.ts-B3MxMbHf.js +0 -64
- package/build/server/chunks/_server.ts-B3MxMbHf.js.map +0 -1
- package/build/server/chunks/_server.ts-B8ETN5kp.js +0 -517
- package/build/server/chunks/_server.ts-B8ETN5kp.js.map +0 -1
- package/build/server/chunks/_server.ts-BCRrWDdm.js +0 -59
- package/build/server/chunks/_server.ts-BCRrWDdm.js.map +0 -1
- package/build/server/chunks/_server.ts-BF8BIeRx.js +0 -129
- package/build/server/chunks/_server.ts-BF8BIeRx.js.map +0 -1
- package/build/server/chunks/_server.ts-BICdc86-.js +0 -78
- package/build/server/chunks/_server.ts-BICdc86-.js.map +0 -1
- package/build/server/chunks/_server.ts-BL9qmwrJ.js +0 -152
- package/build/server/chunks/_server.ts-BL9qmwrJ.js.map +0 -1
- package/build/server/chunks/_server.ts-BLozviCa.js +0 -105
- package/build/server/chunks/_server.ts-BLozviCa.js.map +0 -1
- package/build/server/chunks/_server.ts-BNpMpfbh.js +0 -149
- package/build/server/chunks/_server.ts-BNpMpfbh.js.map +0 -1
- package/build/server/chunks/_server.ts-BNxDIQAc.js +0 -160
- package/build/server/chunks/_server.ts-BNxDIQAc.js.map +0 -1
- package/build/server/chunks/_server.ts-BVJhOHAZ.js +0 -57
- package/build/server/chunks/_server.ts-BVJhOHAZ.js.map +0 -1
- package/build/server/chunks/_server.ts-BX5MvUV2.js +0 -82
- package/build/server/chunks/_server.ts-BX5MvUV2.js.map +0 -1
- package/build/server/chunks/_server.ts-Bc8yiTeq.js +0 -69
- package/build/server/chunks/_server.ts-Bc8yiTeq.js.map +0 -1
- package/build/server/chunks/_server.ts-BhgsoGpy.js +0 -62
- package/build/server/chunks/_server.ts-BhgsoGpy.js.map +0 -1
- package/build/server/chunks/_server.ts-BjSC3Crp.js +0 -103
- package/build/server/chunks/_server.ts-BjSC3Crp.js.map +0 -1
- package/build/server/chunks/_server.ts-Bl4VSlUo.js +0 -203
- package/build/server/chunks/_server.ts-Bl4VSlUo.js.map +0 -1
- package/build/server/chunks/_server.ts-Bs5cXrgG.js +0 -36
- package/build/server/chunks/_server.ts-Bs5cXrgG.js.map +0 -1
- package/build/server/chunks/_server.ts-Bt03j03I.js +0 -36
- package/build/server/chunks/_server.ts-Bt03j03I.js.map +0 -1
- package/build/server/chunks/_server.ts-Bt5bqJxH.js +0 -76
- package/build/server/chunks/_server.ts-Bt5bqJxH.js.map +0 -1
- package/build/server/chunks/_server.ts-Byf8QxAm.js +0 -57
- package/build/server/chunks/_server.ts-Byf8QxAm.js.map +0 -1
- package/build/server/chunks/_server.ts-ByhIQ3aO.js +0 -47
- package/build/server/chunks/_server.ts-ByhIQ3aO.js.map +0 -1
- package/build/server/chunks/_server.ts-C09yQI2v.js +0 -50
- package/build/server/chunks/_server.ts-C09yQI2v.js.map +0 -1
- package/build/server/chunks/_server.ts-C2LdQElH.js +0 -66
- package/build/server/chunks/_server.ts-C2LdQElH.js.map +0 -1
- package/build/server/chunks/_server.ts-C34ptFRI.js +0 -54
- package/build/server/chunks/_server.ts-C34ptFRI.js.map +0 -1
- package/build/server/chunks/_server.ts-C6TD8kSk.js +0 -44
- package/build/server/chunks/_server.ts-C6TD8kSk.js.map +0 -1
- package/build/server/chunks/_server.ts-C6ZTHZuH.js +0 -56
- package/build/server/chunks/_server.ts-C6ZTHZuH.js.map +0 -1
- package/build/server/chunks/_server.ts-C6qZPflw.js +0 -41
- package/build/server/chunks/_server.ts-C6qZPflw.js.map +0 -1
- package/build/server/chunks/_server.ts-C7jQrkiM.js +0 -120
- package/build/server/chunks/_server.ts-C7jQrkiM.js.map +0 -1
- package/build/server/chunks/_server.ts-CFjNoMgW.js +0 -49
- package/build/server/chunks/_server.ts-CFjNoMgW.js.map +0 -1
- package/build/server/chunks/_server.ts-COlWg-KN.js +0 -58
- package/build/server/chunks/_server.ts-COlWg-KN.js.map +0 -1
- package/build/server/chunks/_server.ts-CQUOqnix.js +0 -66
- package/build/server/chunks/_server.ts-CQUOqnix.js.map +0 -1
- package/build/server/chunks/_server.ts-CbTXB4zQ.js +0 -85
- package/build/server/chunks/_server.ts-CbTXB4zQ.js.map +0 -1
- package/build/server/chunks/_server.ts-Ch_BIGij.js +0 -92
- package/build/server/chunks/_server.ts-Ch_BIGij.js.map +0 -1
- package/build/server/chunks/_server.ts-ClfK8dTq.js +0 -40
- package/build/server/chunks/_server.ts-ClfK8dTq.js.map +0 -1
- package/build/server/chunks/_server.ts-ClthZEFZ.js +0 -36
- package/build/server/chunks/_server.ts-ClthZEFZ.js.map +0 -1
- package/build/server/chunks/_server.ts-CoeqCjOS.js +0 -84
- package/build/server/chunks/_server.ts-CoeqCjOS.js.map +0 -1
- package/build/server/chunks/_server.ts-CudpSCuq.js +0 -103
- package/build/server/chunks/_server.ts-CudpSCuq.js.map +0 -1
- package/build/server/chunks/_server.ts-CweZ_2Ka.js +0 -70
- package/build/server/chunks/_server.ts-CweZ_2Ka.js.map +0 -1
- package/build/server/chunks/_server.ts-CxydSIrH.js +0 -42
- package/build/server/chunks/_server.ts-CxydSIrH.js.map +0 -1
- package/build/server/chunks/_server.ts-Cyub8n-5.js +0 -44
- package/build/server/chunks/_server.ts-Cyub8n-5.js.map +0 -1
- package/build/server/chunks/_server.ts-CzmF1JGr.js +0 -63
- package/build/server/chunks/_server.ts-CzmF1JGr.js.map +0 -1
- package/build/server/chunks/_server.ts-D-7FqErp.js +0 -208
- package/build/server/chunks/_server.ts-D-7FqErp.js.map +0 -1
- package/build/server/chunks/_server.ts-D2ayVrtV.js +0 -35
- package/build/server/chunks/_server.ts-D2ayVrtV.js.map +0 -1
- package/build/server/chunks/_server.ts-D5d5Ai45.js +0 -56
- package/build/server/chunks/_server.ts-D5d5Ai45.js.map +0 -1
- package/build/server/chunks/_server.ts-D8IzPOEK.js +0 -85
- package/build/server/chunks/_server.ts-D8IzPOEK.js.map +0 -1
- package/build/server/chunks/_server.ts-DBSn4Gb6.js +0 -49
- package/build/server/chunks/_server.ts-DBSn4Gb6.js.map +0 -1
- package/build/server/chunks/_server.ts-DEieV6Jw.js +0 -43
- package/build/server/chunks/_server.ts-DEieV6Jw.js.map +0 -1
- package/build/server/chunks/_server.ts-DFbWfrL9.js +0 -67
- package/build/server/chunks/_server.ts-DFbWfrL9.js.map +0 -1
- package/build/server/chunks/_server.ts-DFqHg2Ht.js +0 -94
- package/build/server/chunks/_server.ts-DFqHg2Ht.js.map +0 -1
- package/build/server/chunks/_server.ts-DL04u4ie.js +0 -59
- package/build/server/chunks/_server.ts-DL04u4ie.js.map +0 -1
- package/build/server/chunks/_server.ts-DPbQT8Pw.js +0 -79
- package/build/server/chunks/_server.ts-DPbQT8Pw.js.map +0 -1
- package/build/server/chunks/_server.ts-DQOcjyqr.js +0 -52
- package/build/server/chunks/_server.ts-DQOcjyqr.js.map +0 -1
- package/build/server/chunks/_server.ts-DTh4mJ7C.js +0 -89
- package/build/server/chunks/_server.ts-DTh4mJ7C.js.map +0 -1
- package/build/server/chunks/_server.ts-DTwdzGLv.js +0 -48
- package/build/server/chunks/_server.ts-DTwdzGLv.js.map +0 -1
- package/build/server/chunks/_server.ts-D_zhSEAX.js +0 -56
- package/build/server/chunks/_server.ts-D_zhSEAX.js.map +0 -1
- package/build/server/chunks/_server.ts-Db_-LqfJ.js +0 -244
- package/build/server/chunks/_server.ts-Db_-LqfJ.js.map +0 -1
- package/build/server/chunks/_server.ts-DgnY_kk9.js +0 -43
- package/build/server/chunks/_server.ts-DgnY_kk9.js.map +0 -1
- package/build/server/chunks/_server.ts-Dp-M-qYf.js +0 -39
- package/build/server/chunks/_server.ts-Dp-M-qYf.js.map +0 -1
- package/build/server/chunks/_server.ts-Dp8R00NF.js +0 -167
- package/build/server/chunks/_server.ts-Dp8R00NF.js.map +0 -1
- package/build/server/chunks/_server.ts-Dwi62jBH.js +0 -55
- package/build/server/chunks/_server.ts-Dwi62jBH.js.map +0 -1
- package/build/server/chunks/_server.ts-DxPPZbk0.js +0 -762
- package/build/server/chunks/_server.ts-DxPPZbk0.js.map +0 -1
- package/build/server/chunks/_server.ts-E_FGVBJQ.js +0 -76
- package/build/server/chunks/_server.ts-E_FGVBJQ.js.map +0 -1
- package/build/server/chunks/_server.ts-GRGhe_9u.js +0 -80
- package/build/server/chunks/_server.ts-GRGhe_9u.js.map +0 -1
- package/build/server/chunks/_server.ts-I7AOxkUv.js +0 -172
- package/build/server/chunks/_server.ts-I7AOxkUv.js.map +0 -1
- package/build/server/chunks/_server.ts-Lm2k__lp.js +0 -57
- package/build/server/chunks/_server.ts-Lm2k__lp.js.map +0 -1
- package/build/server/chunks/_server.ts-LpqGWBGf.js +0 -68
- package/build/server/chunks/_server.ts-LpqGWBGf.js.map +0 -1
- package/build/server/chunks/_server.ts-OuMfyqbK.js +0 -44
- package/build/server/chunks/_server.ts-OuMfyqbK.js.map +0 -1
- package/build/server/chunks/_server.ts-PAwOtE1N.js +0 -112
- package/build/server/chunks/_server.ts-PAwOtE1N.js.map +0 -1
- package/build/server/chunks/_server.ts-PQR7rD7X.js +0 -64
- package/build/server/chunks/_server.ts-PQR7rD7X.js.map +0 -1
- package/build/server/chunks/_server.ts-RMOM33-7.js +0 -55
- package/build/server/chunks/_server.ts-RMOM33-7.js.map +0 -1
- package/build/server/chunks/_server.ts-WeGNeoTr.js +0 -43
- package/build/server/chunks/_server.ts-WeGNeoTr.js.map +0 -1
- package/build/server/chunks/_server.ts-Y4ykTmGx.js +0 -166
- package/build/server/chunks/_server.ts-Y4ykTmGx.js.map +0 -1
- package/build/server/chunks/_server.ts-Zvy5IRGD.js +0 -82
- package/build/server/chunks/_server.ts-Zvy5IRGD.js.map +0 -1
- package/build/server/chunks/_server.ts-iLNBPfy0.js +0 -47
- package/build/server/chunks/_server.ts-iLNBPfy0.js.map +0 -1
- package/build/server/chunks/_server.ts-j7LP7ugw.js +0 -89
- package/build/server/chunks/_server.ts-j7LP7ugw.js.map +0 -1
- package/build/server/chunks/_server.ts-tHdveSZl.js +0 -100
- package/build/server/chunks/_server.ts-tHdveSZl.js.map +0 -1
- package/build/server/chunks/_server.ts-tPvbvgV_.js +0 -50
- package/build/server/chunks/_server.ts-tPvbvgV_.js.map +0 -1
- package/build/server/chunks/_server.ts-u5l5oF5s.js +0 -169
- package/build/server/chunks/_server.ts-u5l5oF5s.js.map +0 -1
- package/build/server/chunks/_server.ts-whWggGP6.js +0 -58
- package/build/server/chunks/_server.ts-whWggGP6.js.map +0 -1
- package/build/server/chunks/_server.ts-y5zwjb1Y.js +0 -57
- package/build/server/chunks/_server.ts-y5zwjb1Y.js.map +0 -1
- package/build/server/chunks/addon-helpers-D5FxFtnl.js +0 -51
- package/build/server/chunks/addon-helpers-D5FxFtnl.js.map +0 -1
- package/build/server/chunks/akm-Bpp1kjYZ.js +0 -151
- package/build/server/chunks/akm-Bpp1kjYZ.js.map +0 -1
- package/build/server/chunks/catalog-DabIknB2.js +0 -217
- package/build/server/chunks/catalog-DabIknB2.js.map +0 -1
- package/build/server/chunks/client-CcgALx2z.js +0 -202
- package/build/server/chunks/client-CcgALx2z.js.map +0 -1
- package/build/server/chunks/config-C4Mb_Dmt.js +0 -121
- package/build/server/chunks/config-C4Mb_Dmt.js.map +0 -1
- package/build/server/chunks/dist-DOFcG0Zp.js +0 -6617
- package/build/server/chunks/dist-DOFcG0Zp.js.map +0 -1
- package/build/server/chunks/docker-CJyb9Y6R.js +0 -20
- package/build/server/chunks/docker-CJyb9Y6R.js.map +0 -1
- package/build/server/chunks/endpoints-CxHHWeBz.js +0 -358
- package/build/server/chunks/endpoints-CxHHWeBz.js.map +0 -1
- package/build/server/chunks/environment-DqfL567G.js +0 -38
- package/build/server/chunks/environment-DqfL567G.js.map +0 -1
- package/build/server/chunks/error.svelte-CdezevWX.js +0 -18
- package/build/server/chunks/error.svelte-CdezevWX.js.map +0 -1
- package/build/server/chunks/exports-D1quPX8S.js +0 -124
- package/build/server/chunks/exports-D1quPX8S.js.map +0 -1
- package/build/server/chunks/exports2-DECEtwH0.js +0 -691
- package/build/server/chunks/exports2-DECEtwH0.js.map +0 -1
- package/build/server/chunks/features-h0rPqe2e.js +0 -15
- package/build/server/chunks/features-h0rPqe2e.js.map +0 -1
- package/build/server/chunks/features.svelte-DsfDrPnq.js +0 -11
- package/build/server/chunks/features.svelte-DsfDrPnq.js.map +0 -1
- package/build/server/chunks/helpers-CkhM6czg.js +0 -293
- package/build/server/chunks/helpers-CkhM6czg.js.map +0 -1
- package/build/server/chunks/hooks.server-CFTYjaVy.js +0 -155
- package/build/server/chunks/hooks.server-CFTYjaVy.js.map +0 -1
- package/build/server/chunks/http-zX6if5Eq.js +0 -31
- package/build/server/chunks/http-zX6if5Eq.js.map +0 -1
- package/build/server/chunks/internal-DfljBIKo.js +0 -915
- package/build/server/chunks/internal-DfljBIKo.js.map +0 -1
- package/build/server/chunks/paths-C_pbfQFE.js +0 -17
- package/build/server/chunks/paths-C_pbfQFE.js.map +0 -1
- package/build/server/chunks/provider-constants-DPrj3yBX.js +0 -63
- package/build/server/chunks/provider-constants-DPrj3yBX.js.map +0 -1
- package/build/server/chunks/session-cookie-P9GNpA5Y.js +0 -74
- package/build/server/chunks/session-cookie-P9GNpA5Y.js.map +0 -1
- package/build/server/chunks/setup-deploy-QhBTcEuB.js +0 -75
- package/build/server/chunks/setup-deploy-QhBTcEuB.js.map +0 -1
- package/build/server/chunks/src-KraOt0_c.js +0 -9682
- package/build/server/chunks/src-KraOt0_c.js.map +0 -1
- package/build/server/chunks/state-ByHu_9PU.js +0 -24
- package/build/server/chunks/state-ByHu_9PU.js.map +0 -1
- package/build/server/chunks/state2-CmPLrPN5.js +0 -62
- package/build/server/chunks/state2-CmPLrPN5.js.map +0 -1
- package/build/server/chunks/theme-state.svelte-BCebCO8r.js +0 -681
- package/build/server/chunks/theme-state.svelte-BCebCO8r.js.map +0 -1
- package/build/server/chunks/utils-BSRjJDrZ.js +0 -150
- package/build/server/chunks/utils-BSRjJDrZ.js.map +0 -1
- /package/build/client/_app/immutable/assets/{6.BXlLAfIE.css → 4.BXlLAfIE.css} +0 -0
- /package/build/client/_app/immutable/assets/{6.BXlLAfIE.css.br → 4.BXlLAfIE.css.br} +0 -0
- /package/build/client/_app/immutable/assets/{6.BXlLAfIE.css.gz → 4.BXlLAfIE.css.gz} +0 -0
- /package/build/client/_app/immutable/assets/{IconSoundOn.BsTA83Hx.css → IconStop.BsTA83Hx.css} +0 -0
- /package/build/client/_app/immutable/assets/{IconSoundOn.BsTA83Hx.css.br → IconStop.BsTA83Hx.css.br} +0 -0
- /package/build/client/_app/immutable/assets/{IconSoundOn.BsTA83Hx.css.gz → IconStop.BsTA83Hx.css.gz} +0 -0
|
@@ -1,1291 +0,0 @@
|
|
|
1
|
-
import { p as derived, d as attr, e as attr_class, a9 as stringify, s as escape_html, q as ensure_array_like } from './dev-D85DamNs.js';
|
|
2
|
-
import 'node:module';
|
|
3
|
-
import { g as fetchEndpoints, m as setActiveEndpoint, A as voiceState, o as speakText, l as listSessions, i as getSessionMessages, c as createSession, p as startChatMessageTurn, s as sendChatMessage, j as replyChatPermission, k as replyChatQuestion, r as rejectChatQuestion, q as stopSpeaking } from './theme-state.svelte-BCebCO8r.js';
|
|
4
|
-
import { S as Spinner } from './Spinner-jfNKSy3m.js';
|
|
5
|
-
|
|
6
|
-
var SvelteSet = globalThis.Set;
|
|
7
|
-
var SvelteMap = globalThis.Map;
|
|
8
|
-
//#endregion
|
|
9
|
-
//#region src/lib/format-date.ts
|
|
10
|
-
var TIME_FMT = new Intl.DateTimeFormat(void 0, {
|
|
11
|
-
hour: "numeric",
|
|
12
|
-
minute: "2-digit"
|
|
13
|
-
});
|
|
14
|
-
var DATE_TIME_FMT = new Intl.DateTimeFormat(void 0, {
|
|
15
|
-
year: "numeric",
|
|
16
|
-
month: "short",
|
|
17
|
-
day: "numeric",
|
|
18
|
-
hour: "numeric",
|
|
19
|
-
minute: "2-digit"
|
|
20
|
-
});
|
|
21
|
-
/** Time of day, e.g. "3:42 PM" (locale-aware). Empty string for a falsy input. */
|
|
22
|
-
function formatTime(ts) {
|
|
23
|
-
if (!ts) return "";
|
|
24
|
-
return TIME_FMT.format(ts);
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Absolute date + time, e.g. "Jun 7, 2026, 3:42 PM". Use for tooltips / full
|
|
28
|
-
* context where a relative label alone is ambiguous. Empty for a falsy input.
|
|
29
|
-
*/
|
|
30
|
-
function formatDateTime(ts) {
|
|
31
|
-
if (!ts) return "";
|
|
32
|
-
return DATE_TIME_FMT.format(ts);
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Compact relative time, e.g. "just now", "5m ago", "yesterday", "3w ago".
|
|
36
|
-
* Empty string for a falsy input. No date-fns dependency — that would be ~30 KB
|
|
37
|
-
* for these few cases.
|
|
38
|
-
*/
|
|
39
|
-
function formatRelativeTime(ts) {
|
|
40
|
-
if (!ts) return "";
|
|
41
|
-
const diffSec = Math.max(0, (Date.now() - ts) / 1e3);
|
|
42
|
-
if (diffSec < 60) return "just now";
|
|
43
|
-
const min = Math.floor(diffSec / 60);
|
|
44
|
-
if (min < 60) return `${min}m ago`;
|
|
45
|
-
const hr = Math.floor(min / 60);
|
|
46
|
-
if (hr < 24) return `${hr}h ago`;
|
|
47
|
-
const day = Math.floor(hr / 24);
|
|
48
|
-
if (day === 1) return "yesterday";
|
|
49
|
-
if (day < 7) return `${day}d ago`;
|
|
50
|
-
const wk = Math.floor(day / 7);
|
|
51
|
-
if (wk < 5) return `${wk}w ago`;
|
|
52
|
-
const mo = Math.floor(day / 30);
|
|
53
|
-
if (mo < 12) return `${mo}mo ago`;
|
|
54
|
-
return `${Math.floor(day / 365)}y ago`;
|
|
55
|
-
}
|
|
56
|
-
//#endregion
|
|
57
|
-
//#region src/lib/advanced-mode-state.svelte.ts
|
|
58
|
-
var ADVANCED_MODE_STORAGE_KEY = "openpalm.chat.advanced";
|
|
59
|
-
var AdvancedModeService = class {
|
|
60
|
-
enabled = false;
|
|
61
|
-
initialized = false;
|
|
62
|
-
init() {
|
|
63
|
-
if (typeof window === "undefined" || this.initialized) return;
|
|
64
|
-
this.enabled = this.#readStoredPreference();
|
|
65
|
-
this.initialized = true;
|
|
66
|
-
}
|
|
67
|
-
setEnabled(value) {
|
|
68
|
-
this.enabled = value;
|
|
69
|
-
this.#writeStoredPreference(value);
|
|
70
|
-
}
|
|
71
|
-
toggle() {
|
|
72
|
-
const next = !this.enabled;
|
|
73
|
-
this.setEnabled(next);
|
|
74
|
-
return next;
|
|
75
|
-
}
|
|
76
|
-
preferredChatPath() {
|
|
77
|
-
return this.enabled ? "/advanced" : "/chat";
|
|
78
|
-
}
|
|
79
|
-
#readStoredPreference() {
|
|
80
|
-
if (typeof window === "undefined") return false;
|
|
81
|
-
try {
|
|
82
|
-
return window.localStorage.getItem(ADVANCED_MODE_STORAGE_KEY) === "1";
|
|
83
|
-
} catch {
|
|
84
|
-
return false;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
#writeStoredPreference(value) {
|
|
88
|
-
if (typeof window === "undefined") return;
|
|
89
|
-
try {
|
|
90
|
-
window.localStorage.setItem(ADVANCED_MODE_STORAGE_KEY, value ? "1" : "0");
|
|
91
|
-
} catch {}
|
|
92
|
-
}
|
|
93
|
-
};
|
|
94
|
-
var advancedModeService = new AdvancedModeService();
|
|
95
|
-
//#endregion
|
|
96
|
-
//#region src/lib/chat/oc-events.ts
|
|
97
|
-
function propStr(props, key) {
|
|
98
|
-
const value = props?.[key];
|
|
99
|
-
return typeof value === "string" ? value : void 0;
|
|
100
|
-
}
|
|
101
|
-
function partSnapshotType(event) {
|
|
102
|
-
if (event.type !== "message.part.updated") return null;
|
|
103
|
-
const part = event.properties?.part;
|
|
104
|
-
if (typeof part?.id === "string" && typeof part.type === "string") return {
|
|
105
|
-
partID: part.id,
|
|
106
|
-
type: part.type
|
|
107
|
-
};
|
|
108
|
-
return null;
|
|
109
|
-
}
|
|
110
|
-
function extractTextDelta(event, sessionId, reasoningPartIds) {
|
|
111
|
-
const props = event.properties ?? {};
|
|
112
|
-
if (propStr(props, "sessionID") !== sessionId) return null;
|
|
113
|
-
if (event.type === "session.next.text.delta") return propStr(props, "delta") ?? propStr(props, "text") ?? null;
|
|
114
|
-
if (event.type === "message.part.delta") {
|
|
115
|
-
const field = propStr(props, "field");
|
|
116
|
-
if (field && field !== "text") return null;
|
|
117
|
-
const partID = propStr(props, "partID");
|
|
118
|
-
if (partID && reasoningPartIds?.has(partID)) return null;
|
|
119
|
-
return propStr(props, "delta") ?? null;
|
|
120
|
-
}
|
|
121
|
-
return null;
|
|
122
|
-
}
|
|
123
|
-
function statusName(status) {
|
|
124
|
-
if (typeof status === "string") return status;
|
|
125
|
-
if (status && typeof status === "object" && typeof status.type === "string") return status.type;
|
|
126
|
-
}
|
|
127
|
-
function isTurnEnd(event, sessionId) {
|
|
128
|
-
const props = event.properties ?? {};
|
|
129
|
-
if (propStr(props, "sessionID") !== sessionId) return false;
|
|
130
|
-
if (event.type === "session.idle") return true;
|
|
131
|
-
if (event.type === "session.status") {
|
|
132
|
-
const name = statusName(props.status);
|
|
133
|
-
return name === "idle" || name === "completed" || name === "done";
|
|
134
|
-
}
|
|
135
|
-
return false;
|
|
136
|
-
}
|
|
137
|
-
function valueToText(value) {
|
|
138
|
-
if (typeof value === "string") return value;
|
|
139
|
-
if (value == null) return void 0;
|
|
140
|
-
if (typeof value === "number" || typeof value === "boolean") return String(value);
|
|
141
|
-
try {
|
|
142
|
-
return JSON.stringify(value);
|
|
143
|
-
} catch {
|
|
144
|
-
return;
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
function firstText(...values) {
|
|
148
|
-
for (const value of values) {
|
|
149
|
-
const text = valueToText(value);
|
|
150
|
-
if (text) return text;
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
function extractToolUpdate(event, sessionId) {
|
|
154
|
-
const props = event.properties ?? {};
|
|
155
|
-
if (propStr(props, "sessionID") !== sessionId) return null;
|
|
156
|
-
const part = props.part ?? props.tool;
|
|
157
|
-
if (event.type === "message.part.updated" && part && (part.type === "tool" || part.state)) {
|
|
158
|
-
const state = part.state ?? {};
|
|
159
|
-
return {
|
|
160
|
-
callID: String(part.callID ?? part.id ?? ""),
|
|
161
|
-
tool: String(part.tool ?? "tool"),
|
|
162
|
-
status: String(state.status ?? "running"),
|
|
163
|
-
title: typeof state.title === "string" ? state.title : void 0,
|
|
164
|
-
detail: firstText(state.input, state.metadata, state.progress, state.output),
|
|
165
|
-
output: valueToText(state.output),
|
|
166
|
-
error: typeof state.error === "string" ? state.error : void 0
|
|
167
|
-
};
|
|
168
|
-
}
|
|
169
|
-
if (event.type.startsWith("session.next.tool.")) {
|
|
170
|
-
const type = event.type.replace("session.next.tool.", "");
|
|
171
|
-
return {
|
|
172
|
-
callID: propStr(props, "callID") ?? "",
|
|
173
|
-
tool: propStr(props, "tool") ?? "tool",
|
|
174
|
-
status: type === "completed" ? "completed" : type === "failed" ? "error" : type === "called" ? "running" : propStr(props, "status") ?? "running",
|
|
175
|
-
title: propStr(props, "title") ?? propStr(props, "tool"),
|
|
176
|
-
detail: firstText(props.message, props.delta, props.progress, props.input, props.metadata),
|
|
177
|
-
output: firstText(props.output, props.result),
|
|
178
|
-
error: firstText(props.error)
|
|
179
|
-
};
|
|
180
|
-
}
|
|
181
|
-
return null;
|
|
182
|
-
}
|
|
183
|
-
function isSessionError(event, sessionId) {
|
|
184
|
-
return event.type === "session.error" && propStr(event.properties, "sessionID") === sessionId;
|
|
185
|
-
}
|
|
186
|
-
function extractPermissionAsk(event, sessionId) {
|
|
187
|
-
if (event.type !== "permission.asked") return null;
|
|
188
|
-
if (propStr(event.properties, "sessionID") !== sessionId) return null;
|
|
189
|
-
const id = propStr(event.properties, "id");
|
|
190
|
-
if (!id) return null;
|
|
191
|
-
const patterns = Array.isArray(event.properties?.patterns) ? event.properties.patterns.filter((item) => typeof item === "string") : [];
|
|
192
|
-
const always = Array.isArray(event.properties?.always) ? event.properties.always.filter((item) => typeof item === "string") : [];
|
|
193
|
-
const toolRecord = event.properties?.tool;
|
|
194
|
-
return {
|
|
195
|
-
requestID: id,
|
|
196
|
-
permission: propStr(event.properties, "permission") ?? "tool",
|
|
197
|
-
patterns,
|
|
198
|
-
always,
|
|
199
|
-
tool: propStr(toolRecord, "callID") ?? propStr(event.properties, "permission") ?? "tool",
|
|
200
|
-
detail: firstText(event.properties?.metadata, event.properties?.message) ?? ""
|
|
201
|
-
};
|
|
202
|
-
}
|
|
203
|
-
function extractQuestionAsk(event, sessionId) {
|
|
204
|
-
if (event.type !== "question.asked") return null;
|
|
205
|
-
if (propStr(event.properties, "sessionID") !== sessionId) return null;
|
|
206
|
-
const id = propStr(event.properties, "id");
|
|
207
|
-
if (!id) return null;
|
|
208
|
-
const rawQuestions = Array.isArray(event.properties?.questions) ? event.properties.questions : [];
|
|
209
|
-
const questions = [];
|
|
210
|
-
for (const raw of rawQuestions) {
|
|
211
|
-
const item = raw;
|
|
212
|
-
const options = Array.isArray(item.options) ? item.options.map((option) => option).filter((option) => typeof option.label === "string").map((option) => ({
|
|
213
|
-
label: option.label,
|
|
214
|
-
description: typeof option.description === "string" ? option.description : ""
|
|
215
|
-
})) : [];
|
|
216
|
-
questions.push({
|
|
217
|
-
question: typeof item.question === "string" ? item.question : "",
|
|
218
|
-
header: typeof item.header === "string" ? item.header : "",
|
|
219
|
-
options
|
|
220
|
-
});
|
|
221
|
-
}
|
|
222
|
-
if (questions.length === 0) return null;
|
|
223
|
-
return {
|
|
224
|
-
requestID: id,
|
|
225
|
-
questions
|
|
226
|
-
};
|
|
227
|
-
}
|
|
228
|
-
function extractStepUpdate(event, sessionId) {
|
|
229
|
-
const props = event.properties ?? {};
|
|
230
|
-
if (propStr(props, "sessionID") !== sessionId) return null;
|
|
231
|
-
if (event.type !== "session.next.step.started" && event.type !== "session.next.step.ended") return null;
|
|
232
|
-
return {
|
|
233
|
-
id: propStr(props, "stepID") ?? propStr(props, "id") ?? event.type,
|
|
234
|
-
title: propStr(props, "title") ?? propStr(props, "step") ?? (event.type === "session.next.step.started" ? "Working" : "Step complete"),
|
|
235
|
-
status: event.type === "session.next.step.ended" ? "completed" : "running",
|
|
236
|
-
detail: firstText(props.detail, props.message)
|
|
237
|
-
};
|
|
238
|
-
}
|
|
239
|
-
//#endregion
|
|
240
|
-
//#region src/lib/chat/session-events.ts
|
|
241
|
-
var INITIAL_BACKOFF_MS = 1e3;
|
|
242
|
-
var MAX_BACKOFF_MS = 3e4;
|
|
243
|
-
var STREAM_URL = "/proxy/assistant/event";
|
|
244
|
-
/**
|
|
245
|
-
* Parse one `\n\n`-delimited SSE frame. Multi-line `data:` fields are
|
|
246
|
-
* concatenated with `\n` per the SSE spec.
|
|
247
|
-
*/
|
|
248
|
-
function parseFrame(chunk) {
|
|
249
|
-
const frame = {};
|
|
250
|
-
const dataLines = [];
|
|
251
|
-
for (const rawLine of chunk.split("\n")) {
|
|
252
|
-
if (!rawLine || rawLine.startsWith(":")) continue;
|
|
253
|
-
if (rawLine.startsWith("data:")) dataLines.push(rawLine.replace(/^data:\s?/, ""));
|
|
254
|
-
else if (rawLine.startsWith("event:")) frame.event = rawLine.replace(/^event:\s?/, "");
|
|
255
|
-
else if (rawLine.startsWith("id:")) frame.id = rawLine.replace(/^id:\s?/, "");
|
|
256
|
-
}
|
|
257
|
-
if (dataLines.length > 0) frame.data = dataLines.join("\n");
|
|
258
|
-
return frame;
|
|
259
|
-
}
|
|
260
|
-
function dispatch(handlers, payload) {
|
|
261
|
-
const info = payload.properties?.info;
|
|
262
|
-
const id = info?.id ?? payload.sessionID;
|
|
263
|
-
if (!id) return;
|
|
264
|
-
switch (payload.type) {
|
|
265
|
-
case "session.created":
|
|
266
|
-
handlers.onCreated(id);
|
|
267
|
-
return;
|
|
268
|
-
case "session.updated":
|
|
269
|
-
handlers.onUpdated(id, {
|
|
270
|
-
title: info?.title,
|
|
271
|
-
updatedAt: info?.time?.updated
|
|
272
|
-
});
|
|
273
|
-
return;
|
|
274
|
-
case "session.deleted":
|
|
275
|
-
handlers.onDeleted(id);
|
|
276
|
-
return;
|
|
277
|
-
default: return;
|
|
278
|
-
}
|
|
279
|
-
}
|
|
280
|
-
/**
|
|
281
|
-
* Open an SSE connection to `/proxy/assistant/event` and dispatch
|
|
282
|
-
* session-scoped events. Returns an unsubscribe function that aborts the
|
|
283
|
-
* stream and prevents reconnection.
|
|
284
|
-
*/
|
|
285
|
-
function subscribeSessionEvents(handlers) {
|
|
286
|
-
let stopped = false;
|
|
287
|
-
let controller = new AbortController();
|
|
288
|
-
let lastEventId;
|
|
289
|
-
const sleep = (ms) => new Promise((resolve) => {
|
|
290
|
-
const timer = setTimeout(resolve, ms);
|
|
291
|
-
controller.signal.addEventListener("abort", () => {
|
|
292
|
-
clearTimeout(timer);
|
|
293
|
-
resolve();
|
|
294
|
-
}, { once: true });
|
|
295
|
-
});
|
|
296
|
-
async function readStream() {
|
|
297
|
-
const headers = { accept: "text/event-stream" };
|
|
298
|
-
if (lastEventId !== void 0) headers["Last-Event-ID"] = lastEventId;
|
|
299
|
-
const response = await fetch(STREAM_URL, {
|
|
300
|
-
method: "GET",
|
|
301
|
-
headers,
|
|
302
|
-
credentials: "include",
|
|
303
|
-
signal: controller.signal
|
|
304
|
-
});
|
|
305
|
-
if (!response.ok || !response.body) throw new Error(`SSE stream failed: ${response.status} ${response.statusText}`);
|
|
306
|
-
handlers.onConnect?.();
|
|
307
|
-
const reader = response.body.pipeThrough(new TextDecoderStream()).getReader();
|
|
308
|
-
let buffer = "";
|
|
309
|
-
try {
|
|
310
|
-
while (true) {
|
|
311
|
-
const { done, value } = await reader.read();
|
|
312
|
-
if (done) break;
|
|
313
|
-
buffer += value;
|
|
314
|
-
const chunks = buffer.split("\n\n");
|
|
315
|
-
buffer = chunks.pop() ?? "";
|
|
316
|
-
for (const chunk of chunks) {
|
|
317
|
-
if (!chunk) continue;
|
|
318
|
-
const frame = parseFrame(chunk);
|
|
319
|
-
if (frame.id !== void 0) lastEventId = frame.id;
|
|
320
|
-
if (!frame.data) continue;
|
|
321
|
-
let payload;
|
|
322
|
-
try {
|
|
323
|
-
payload = JSON.parse(frame.data);
|
|
324
|
-
} catch (err) {
|
|
325
|
-
console.warn("[session-events] Bad JSON in SSE frame", err);
|
|
326
|
-
continue;
|
|
327
|
-
}
|
|
328
|
-
handlers.onEvent?.(payload);
|
|
329
|
-
dispatch(handlers, payload);
|
|
330
|
-
}
|
|
331
|
-
}
|
|
332
|
-
} finally {
|
|
333
|
-
try {
|
|
334
|
-
reader.releaseLock();
|
|
335
|
-
} catch {}
|
|
336
|
-
}
|
|
337
|
-
}
|
|
338
|
-
(async () => {
|
|
339
|
-
let attempt = 0;
|
|
340
|
-
while (!stopped) try {
|
|
341
|
-
attempt++;
|
|
342
|
-
await readStream();
|
|
343
|
-
attempt = 0;
|
|
344
|
-
if (!stopped) await sleep(500);
|
|
345
|
-
} catch (err) {
|
|
346
|
-
if (stopped) return;
|
|
347
|
-
const error = err instanceof Error ? err : new Error(String(err));
|
|
348
|
-
if (error.name !== "AbortError") {
|
|
349
|
-
console.warn("[session-events] SSE error, reconnecting", error);
|
|
350
|
-
handlers.onDisconnect?.(error);
|
|
351
|
-
}
|
|
352
|
-
await sleep(Math.min(INITIAL_BACKOFF_MS * 2 ** Math.max(0, attempt - 1), MAX_BACKOFF_MS));
|
|
353
|
-
if (controller.signal.aborted && !stopped) controller = new AbortController();
|
|
354
|
-
}
|
|
355
|
-
})();
|
|
356
|
-
return () => {
|
|
357
|
-
stopped = true;
|
|
358
|
-
try {
|
|
359
|
-
controller.abort();
|
|
360
|
-
} catch {}
|
|
361
|
-
};
|
|
362
|
-
}
|
|
363
|
-
//#endregion
|
|
364
|
-
//#region src/lib/desktop-notifications.ts
|
|
365
|
-
var DESKTOP_NOTIFY_ENABLED_KEY = "openpalm.desktop.notify";
|
|
366
|
-
var DESKTOP_NOTIFY_PREVIEW_KEY = "openpalm.desktop.notify.preview";
|
|
367
|
-
function readFlag(key) {
|
|
368
|
-
if (typeof window === "undefined") return false;
|
|
369
|
-
try {
|
|
370
|
-
return window.localStorage.getItem(key) === "1";
|
|
371
|
-
} catch {
|
|
372
|
-
return false;
|
|
373
|
-
}
|
|
374
|
-
}
|
|
375
|
-
function desktopNotifyEnabled() {
|
|
376
|
-
return readFlag(DESKTOP_NOTIFY_ENABLED_KEY);
|
|
377
|
-
}
|
|
378
|
-
function desktopReplyPreviewEnabled() {
|
|
379
|
-
return readFlag(DESKTOP_NOTIFY_PREVIEW_KEY);
|
|
380
|
-
}
|
|
381
|
-
function shouldNotifyDesktop() {
|
|
382
|
-
if (typeof document === "undefined") return false;
|
|
383
|
-
if (document.hasFocus()) return false;
|
|
384
|
-
if (!desktopNotifyEnabled()) return false;
|
|
385
|
-
return typeof window !== "undefined" && typeof window.openpalm?.notify === "function";
|
|
386
|
-
}
|
|
387
|
-
function notifyAssistantReply(replyText) {
|
|
388
|
-
if (!shouldNotifyDesktop()) return;
|
|
389
|
-
const body = desktopReplyPreviewEnabled() && replyText.trim() ? replyText.trim() : "Assistant replied";
|
|
390
|
-
window.openpalm?.notify?.("OpenPalm", body);
|
|
391
|
-
}
|
|
392
|
-
function notifyAssistantError() {
|
|
393
|
-
if (!shouldNotifyDesktop()) return;
|
|
394
|
-
window.openpalm?.notify?.("OpenPalm", "Assistant error");
|
|
395
|
-
}
|
|
396
|
-
//#endregion
|
|
397
|
-
//#region src/lib/chat/chat-state.svelte.ts
|
|
398
|
-
var STREAM_TURN_TIMEOUT_MS = 15e4;
|
|
399
|
-
function emptyEndpointState() {
|
|
400
|
-
return {
|
|
401
|
-
sessions: [],
|
|
402
|
-
sessionsLoaded: false,
|
|
403
|
-
sessionsLoading: false,
|
|
404
|
-
sessionsError: "",
|
|
405
|
-
activeSessionId: null
|
|
406
|
-
};
|
|
407
|
-
}
|
|
408
|
-
var ChatService = class {
|
|
409
|
-
/**
|
|
410
|
-
* Per-endpoint session cache. Reassigned on every mutation so Svelte 5
|
|
411
|
-
* picks up the change. Never mutate the existing Map in place.
|
|
412
|
-
*/
|
|
413
|
-
byEndpoint = new SvelteMap();
|
|
414
|
-
/**
|
|
415
|
-
* Mirrored from `endpointsService.activeId` via `onEndpointChanged()`
|
|
416
|
-
* so the chat layer doesn't have to import the endpoint store.
|
|
417
|
-
*/
|
|
418
|
-
activeEndpointId = "default";
|
|
419
|
-
/** Messages for the currently rendered session only. */
|
|
420
|
-
entries = [];
|
|
421
|
-
entriesLoading = false;
|
|
422
|
-
sending = false;
|
|
423
|
-
error = "";
|
|
424
|
-
pendingAssistantText = "";
|
|
425
|
-
pendingToolStates = [];
|
|
426
|
-
pendingPermission = null;
|
|
427
|
-
pendingQuestion = null;
|
|
428
|
-
/**
|
|
429
|
-
* Set true while the SSE event stream is connected. Surfaced by the
|
|
430
|
-
* SessionPicker as a tiny green/gray dot so the operator can see at a
|
|
431
|
-
* glance whether live updates are flowing.
|
|
432
|
-
*/
|
|
433
|
-
liveConnected = false;
|
|
434
|
-
/**
|
|
435
|
-
* Active SSE subscription handle. Reassigned on every endpoint switch.
|
|
436
|
-
* Plain field (not `$state`) — only the chat service touches it.
|
|
437
|
-
*/
|
|
438
|
-
_unsubscribeEvents = null;
|
|
439
|
-
_pendingTurn = null;
|
|
440
|
-
#activeSessionId = derived(() => this.byEndpoint.get(this.activeEndpointId)?.activeSessionId ?? null);
|
|
441
|
-
get activeSessionId() {
|
|
442
|
-
return this.#activeSessionId();
|
|
443
|
-
}
|
|
444
|
-
set activeSessionId($$value) {
|
|
445
|
-
return this.#activeSessionId($$value);
|
|
446
|
-
}
|
|
447
|
-
#toolLog = derived(() => {
|
|
448
|
-
const seen = {};
|
|
449
|
-
const out = [];
|
|
450
|
-
const push = (states) => {
|
|
451
|
-
if (!states) return;
|
|
452
|
-
for (const tool of states) {
|
|
453
|
-
if (seen[tool.id]) continue;
|
|
454
|
-
seen[tool.id] = true;
|
|
455
|
-
out.push(tool);
|
|
456
|
-
}
|
|
457
|
-
};
|
|
458
|
-
for (const entry of this.entries) push(entry.toolStates);
|
|
459
|
-
push(this.pendingToolStates);
|
|
460
|
-
return out;
|
|
461
|
-
});
|
|
462
|
-
get toolLog() {
|
|
463
|
-
return this.#toolLog();
|
|
464
|
-
}
|
|
465
|
-
set toolLog($$value) {
|
|
466
|
-
return this.#toolLog($$value);
|
|
467
|
-
}
|
|
468
|
-
setEndpointState(id, patch) {
|
|
469
|
-
const next = {
|
|
470
|
-
...this.byEndpoint.get(id) ?? emptyEndpointState(),
|
|
471
|
-
...patch
|
|
472
|
-
};
|
|
473
|
-
this.byEndpoint = new SvelteMap(this.byEndpoint).set(id, next);
|
|
474
|
-
return next;
|
|
475
|
-
}
|
|
476
|
-
/**
|
|
477
|
-
* Handle an endpoint switch: load sessions, restore prior or pick
|
|
478
|
-
* newest, fetch messages. Mid-generation switches are blocked.
|
|
479
|
-
*/
|
|
480
|
-
async onEndpointChanged(id) {
|
|
481
|
-
if (this.sending) {
|
|
482
|
-
this.error = "Wait for the current reply to finish before switching.";
|
|
483
|
-
return;
|
|
484
|
-
}
|
|
485
|
-
this.activeEndpointId = id;
|
|
486
|
-
this.entries = [];
|
|
487
|
-
this.error = "";
|
|
488
|
-
await this.loadSessions();
|
|
489
|
-
const state = this.byEndpoint.get(id) ?? emptyEndpointState();
|
|
490
|
-
const sessions = state.sessions ?? [];
|
|
491
|
-
const previous = state.activeSessionId;
|
|
492
|
-
let nextSessionId = null;
|
|
493
|
-
if (previous && sessions.some((s) => s.id === previous)) nextSessionId = previous;
|
|
494
|
-
else if (sessions.length > 0) nextSessionId = sessions[0].id;
|
|
495
|
-
if (nextSessionId !== state.activeSessionId) this.setEndpointState(id, { activeSessionId: nextSessionId });
|
|
496
|
-
if (nextSessionId) await this.openSession(nextSessionId);
|
|
497
|
-
this._resubscribeEvents();
|
|
498
|
-
}
|
|
499
|
-
/**
|
|
500
|
-
* Tear down any prior SSE subscription and open a new one. Handlers
|
|
501
|
-
* dispatch session.created / updated / deleted into the per-endpoint
|
|
502
|
-
* cache, mirroring out-of-band changes (CLI, other clients).
|
|
503
|
-
*/
|
|
504
|
-
_resubscribeEvents() {
|
|
505
|
-
if (this._unsubscribeEvents) {
|
|
506
|
-
try {
|
|
507
|
-
this._unsubscribeEvents();
|
|
508
|
-
} catch (err) {
|
|
509
|
-
console.warn("[chat] failed to unsubscribe from previous event stream", err);
|
|
510
|
-
}
|
|
511
|
-
this._unsubscribeEvents = null;
|
|
512
|
-
}
|
|
513
|
-
this.liveConnected = false;
|
|
514
|
-
this._unsubscribeEvents = subscribeSessionEvents({
|
|
515
|
-
onCreated: (id) => {
|
|
516
|
-
this._onSessionCreated(id);
|
|
517
|
-
},
|
|
518
|
-
onUpdated: (id, info) => {
|
|
519
|
-
this._onSessionUpdated(id, info);
|
|
520
|
-
},
|
|
521
|
-
onDeleted: (id) => {
|
|
522
|
-
this._onSessionDeleted(id);
|
|
523
|
-
},
|
|
524
|
-
onEvent: (event) => {
|
|
525
|
-
this._onLiveEvent(event);
|
|
526
|
-
},
|
|
527
|
-
onConnect: () => {
|
|
528
|
-
this.liveConnected = true;
|
|
529
|
-
},
|
|
530
|
-
onDisconnect: () => {
|
|
531
|
-
this.liveConnected = false;
|
|
532
|
-
if (this._pendingTurn) this._failPendingTurn(/* @__PURE__ */ new Error("Assistant event stream disconnected."));
|
|
533
|
-
}
|
|
534
|
-
});
|
|
535
|
-
}
|
|
536
|
-
_toRawEvent(event) {
|
|
537
|
-
return {
|
|
538
|
-
type: event.type,
|
|
539
|
-
properties: event.properties ?? {}
|
|
540
|
-
};
|
|
541
|
-
}
|
|
542
|
-
_upsertPendingToolState(update) {
|
|
543
|
-
const id = update.callID || `${update.tool}:${this.pendingToolStates.length}`;
|
|
544
|
-
const next = {
|
|
545
|
-
id,
|
|
546
|
-
kind: "tool",
|
|
547
|
-
tool: update.tool,
|
|
548
|
-
status: update.status,
|
|
549
|
-
title: update.title ?? update.tool,
|
|
550
|
-
detail: update.detail ?? "",
|
|
551
|
-
output: update.output ?? "",
|
|
552
|
-
error: update.error ?? "",
|
|
553
|
-
updatedAt: Date.now()
|
|
554
|
-
};
|
|
555
|
-
if (!this.pendingToolStates.find((item) => item.id === id)) {
|
|
556
|
-
this.pendingToolStates = [...this.pendingToolStates, next];
|
|
557
|
-
return;
|
|
558
|
-
}
|
|
559
|
-
this.pendingToolStates = this.pendingToolStates.map((item) => item.id === id ? {
|
|
560
|
-
...item,
|
|
561
|
-
...next
|
|
562
|
-
} : item);
|
|
563
|
-
}
|
|
564
|
-
_upsertPendingStepState(update) {
|
|
565
|
-
const next = {
|
|
566
|
-
id: update.id,
|
|
567
|
-
kind: "step",
|
|
568
|
-
tool: "step",
|
|
569
|
-
status: update.status,
|
|
570
|
-
title: update.title,
|
|
571
|
-
detail: update.detail ?? "",
|
|
572
|
-
output: "",
|
|
573
|
-
error: "",
|
|
574
|
-
updatedAt: Date.now()
|
|
575
|
-
};
|
|
576
|
-
if (!this.pendingToolStates.find((item) => item.id === update.id)) {
|
|
577
|
-
this.pendingToolStates = [...this.pendingToolStates, next];
|
|
578
|
-
return;
|
|
579
|
-
}
|
|
580
|
-
this.pendingToolStates = this.pendingToolStates.map((item) => item.id === update.id ? {
|
|
581
|
-
...item,
|
|
582
|
-
...next
|
|
583
|
-
} : item);
|
|
584
|
-
}
|
|
585
|
-
_resetPendingRenderState() {
|
|
586
|
-
this.pendingAssistantText = "";
|
|
587
|
-
this.pendingToolStates = [];
|
|
588
|
-
this.pendingPermission = null;
|
|
589
|
-
this.pendingQuestion = null;
|
|
590
|
-
}
|
|
591
|
-
_appendAssistantReply(text, toolStates) {
|
|
592
|
-
const assistantEntry = {
|
|
593
|
-
id: crypto.randomUUID(),
|
|
594
|
-
role: "assistant",
|
|
595
|
-
text,
|
|
596
|
-
timestamp: Date.now(),
|
|
597
|
-
...toolStates && toolStates.length > 0 ? { toolStates: [...toolStates] } : {}
|
|
598
|
-
};
|
|
599
|
-
this.entries = [...this.entries, assistantEntry];
|
|
600
|
-
}
|
|
601
|
-
_clearPendingTurn() {
|
|
602
|
-
const pending = this._pendingTurn;
|
|
603
|
-
if (!pending) return null;
|
|
604
|
-
clearTimeout(pending.timeout);
|
|
605
|
-
this._pendingTurn = null;
|
|
606
|
-
return pending;
|
|
607
|
-
}
|
|
608
|
-
_finishPendingTurn(replyText) {
|
|
609
|
-
const pending = this._clearPendingTurn();
|
|
610
|
-
if (!pending) return;
|
|
611
|
-
const text = (replyText ?? this.pendingAssistantText).trim() || "(no response)";
|
|
612
|
-
if (this.pendingQuestion?.status === "answered" && this.pendingQuestion.message) {
|
|
613
|
-
const questionNote = {
|
|
614
|
-
id: crypto.randomUUID(),
|
|
615
|
-
type: "note",
|
|
616
|
-
label: "Question answered",
|
|
617
|
-
text: this.pendingQuestion.message,
|
|
618
|
-
timestamp: Date.now()
|
|
619
|
-
};
|
|
620
|
-
this.entries = [...this.entries, questionNote];
|
|
621
|
-
}
|
|
622
|
-
const capturedToolStates = this.pendingToolStates.length > 0 ? [...this.pendingToolStates] : void 0;
|
|
623
|
-
this._appendAssistantReply(text, capturedToolStates);
|
|
624
|
-
this._resetPendingRenderState();
|
|
625
|
-
this._bumpSession(pending.sessionId);
|
|
626
|
-
if (voiceState.ttsSupported && voiceState.ttsAutoEnabled && text && text !== "(no response)") speakText(text, {
|
|
627
|
-
mode: "chat_reply",
|
|
628
|
-
userText: pending.userText,
|
|
629
|
-
assistantText: text
|
|
630
|
-
});
|
|
631
|
-
notifyAssistantReply(text === "(no response)" ? "" : text);
|
|
632
|
-
pending.resolve();
|
|
633
|
-
}
|
|
634
|
-
_failPendingTurn(error) {
|
|
635
|
-
const pending = this._clearPendingTurn();
|
|
636
|
-
if (!pending) return;
|
|
637
|
-
this._resetPendingRenderState();
|
|
638
|
-
pending.reject(error);
|
|
639
|
-
}
|
|
640
|
-
_bumpSession(sessionId) {
|
|
641
|
-
const endpointId = this.activeEndpointId;
|
|
642
|
-
const prev = this.byEndpoint.get(endpointId);
|
|
643
|
-
if (!prev) return;
|
|
644
|
-
const now = Date.now();
|
|
645
|
-
const existing = prev.sessions.find((s) => s.id === sessionId);
|
|
646
|
-
const updated = existing ? {
|
|
647
|
-
...existing,
|
|
648
|
-
updatedAt: now
|
|
649
|
-
} : {
|
|
650
|
-
id: sessionId,
|
|
651
|
-
title: "",
|
|
652
|
-
createdAt: now,
|
|
653
|
-
updatedAt: now
|
|
654
|
-
};
|
|
655
|
-
const rest = prev.sessions.filter((s) => s.id !== sessionId);
|
|
656
|
-
this.setEndpointState(endpointId, { sessions: [updated, ...rest] });
|
|
657
|
-
}
|
|
658
|
-
_onLiveEvent(event) {
|
|
659
|
-
const pending = this._pendingTurn;
|
|
660
|
-
if (!pending) return;
|
|
661
|
-
const raw = this._toRawEvent(event);
|
|
662
|
-
if (pending.endpointId !== this.activeEndpointId) return;
|
|
663
|
-
const snapshot = partSnapshotType(raw);
|
|
664
|
-
if (snapshot?.type === "reasoning") pending.reasoningPartIds.add(snapshot.partID);
|
|
665
|
-
const textDelta = extractTextDelta(raw, pending.sessionId, pending.reasoningPartIds);
|
|
666
|
-
if (textDelta) this.pendingAssistantText += textDelta;
|
|
667
|
-
const toolUpdate = extractToolUpdate(raw, pending.sessionId);
|
|
668
|
-
if (toolUpdate) this._upsertPendingToolState(toolUpdate);
|
|
669
|
-
const stepUpdate = extractStepUpdate(raw, pending.sessionId);
|
|
670
|
-
if (stepUpdate) this._upsertPendingStepState(stepUpdate);
|
|
671
|
-
const permissionAsk = extractPermissionAsk(raw, pending.sessionId);
|
|
672
|
-
if (permissionAsk) this.pendingPermission = {
|
|
673
|
-
...permissionAsk,
|
|
674
|
-
status: "pending",
|
|
675
|
-
decision: "",
|
|
676
|
-
message: ""
|
|
677
|
-
};
|
|
678
|
-
const questionAsk = extractQuestionAsk(raw, pending.sessionId);
|
|
679
|
-
if (questionAsk) this.pendingQuestion = {
|
|
680
|
-
...questionAsk,
|
|
681
|
-
status: "pending",
|
|
682
|
-
answers: questionAsk.questions.map(() => ""),
|
|
683
|
-
message: ""
|
|
684
|
-
};
|
|
685
|
-
if (isSessionError(raw, pending.sessionId)) {
|
|
686
|
-
this._failPendingTurn(/* @__PURE__ */ new Error("Assistant session ended unexpectedly."));
|
|
687
|
-
return;
|
|
688
|
-
}
|
|
689
|
-
if (isTurnEnd(raw, pending.sessionId)) this._finishPendingTurn();
|
|
690
|
-
}
|
|
691
|
-
/**
|
|
692
|
-
* A session was created out-of-band — prepend to the active endpoint's
|
|
693
|
-
* list if not already known. Do not auto-switch to it: the user owns
|
|
694
|
-
* navigation.
|
|
695
|
-
*/
|
|
696
|
-
_onSessionCreated(sessionId) {
|
|
697
|
-
const endpointId = this.activeEndpointId;
|
|
698
|
-
const prev = this.byEndpoint.get(endpointId) ?? emptyEndpointState();
|
|
699
|
-
if (prev.sessions.some((s) => s.id === sessionId)) return;
|
|
700
|
-
const now = Date.now();
|
|
701
|
-
const summary = {
|
|
702
|
-
id: sessionId,
|
|
703
|
-
title: "",
|
|
704
|
-
createdAt: now,
|
|
705
|
-
updatedAt: now
|
|
706
|
-
};
|
|
707
|
-
this.setEndpointState(endpointId, {
|
|
708
|
-
sessions: [summary, ...prev.sessions],
|
|
709
|
-
sessionsLoaded: true
|
|
710
|
-
});
|
|
711
|
-
}
|
|
712
|
-
/**
|
|
713
|
-
* A session was touched out-of-band — patch its updatedAt (and title if
|
|
714
|
-
* the event carries one) and re-sort. Do NOT refetch messages: if the
|
|
715
|
-
* user is viewing this session, leave the in-memory entries alone for
|
|
716
|
-
* v1. A follow-up phase can reconcile message deltas via the assistant
|
|
717
|
-
* event stream.
|
|
718
|
-
*/
|
|
719
|
-
_onSessionUpdated(sessionId, info) {
|
|
720
|
-
const endpointId = this.activeEndpointId;
|
|
721
|
-
const prev = this.byEndpoint.get(endpointId);
|
|
722
|
-
if (!prev) return;
|
|
723
|
-
const idx = prev.sessions.findIndex((s) => s.id === sessionId);
|
|
724
|
-
if (idx === -1) {
|
|
725
|
-
this._onSessionCreated(sessionId);
|
|
726
|
-
return;
|
|
727
|
-
}
|
|
728
|
-
const existing = prev.sessions[idx];
|
|
729
|
-
const sessions = [{
|
|
730
|
-
...existing,
|
|
731
|
-
title: info?.title ?? existing.title,
|
|
732
|
-
updatedAt: info?.updatedAt ?? Date.now()
|
|
733
|
-
}, ...prev.sessions.filter((s) => s.id !== sessionId)];
|
|
734
|
-
sessions.sort((a, b) => b.updatedAt - a.updatedAt);
|
|
735
|
-
this.setEndpointState(endpointId, { sessions });
|
|
736
|
-
}
|
|
737
|
-
/**
|
|
738
|
-
* A session was deleted out-of-band. Remove it from the list; if it was
|
|
739
|
-
* the active session, fall back to the newest remaining session (or
|
|
740
|
-
* null) and reload its messages.
|
|
741
|
-
*/
|
|
742
|
-
async _onSessionDeleted(sessionId) {
|
|
743
|
-
const endpointId = this.activeEndpointId;
|
|
744
|
-
const prev = this.byEndpoint.get(endpointId);
|
|
745
|
-
if (!prev) return;
|
|
746
|
-
if (!prev.sessions.some((s) => s.id === sessionId)) return;
|
|
747
|
-
const sessions = prev.sessions.filter((s) => s.id !== sessionId);
|
|
748
|
-
const wasActive = prev.activeSessionId === sessionId;
|
|
749
|
-
const nextActive = wasActive ? sessions[0]?.id ?? null : prev.activeSessionId;
|
|
750
|
-
this.setEndpointState(endpointId, {
|
|
751
|
-
sessions,
|
|
752
|
-
activeSessionId: nextActive
|
|
753
|
-
});
|
|
754
|
-
if (wasActive) {
|
|
755
|
-
this.entries = [];
|
|
756
|
-
if (nextActive) await this.openSession(nextActive);
|
|
757
|
-
}
|
|
758
|
-
}
|
|
759
|
-
/** Mark sessions as stale so the next onEndpointChanged call re-fetches. */
|
|
760
|
-
invalidateSessions(id) {
|
|
761
|
-
this.setEndpointState(id, { sessionsLoaded: false });
|
|
762
|
-
}
|
|
763
|
-
/**
|
|
764
|
-
* Sync the active session cursor without loading messages. Used by the
|
|
765
|
-
* advanced-mode page to keep the chat layer's cursor in step with what is
|
|
766
|
-
* displayed in the embedded OpenCode iframe.
|
|
767
|
-
*/
|
|
768
|
-
setActiveSessionId(sessionId) {
|
|
769
|
-
this.setEndpointState(this.activeEndpointId, { activeSessionId: sessionId });
|
|
770
|
-
}
|
|
771
|
-
/** Fetch the session list for the active endpoint. */
|
|
772
|
-
async loadSessions() {
|
|
773
|
-
const id = this.activeEndpointId;
|
|
774
|
-
this.setEndpointState(id, {
|
|
775
|
-
sessionsLoading: true,
|
|
776
|
-
sessionsError: ""
|
|
777
|
-
});
|
|
778
|
-
try {
|
|
779
|
-
const sessions = await listSessions();
|
|
780
|
-
this.setEndpointState(id, {
|
|
781
|
-
sessions,
|
|
782
|
-
sessionsLoaded: true,
|
|
783
|
-
sessionsLoading: false,
|
|
784
|
-
sessionsError: ""
|
|
785
|
-
});
|
|
786
|
-
} catch (e) {
|
|
787
|
-
const err = e;
|
|
788
|
-
const message = err.status === 503 || err.status === 502 ? "Assistant is not reachable." : err.message ?? "Failed to load sessions.";
|
|
789
|
-
this.setEndpointState(id, {
|
|
790
|
-
sessionsLoading: false,
|
|
791
|
-
sessionsError: message
|
|
792
|
-
});
|
|
793
|
-
}
|
|
794
|
-
}
|
|
795
|
-
/** Select a session and render its messages. */
|
|
796
|
-
async openSession(sessionId) {
|
|
797
|
-
if (this.sending) {
|
|
798
|
-
this.error = "Wait for the current reply to finish before switching.";
|
|
799
|
-
return;
|
|
800
|
-
}
|
|
801
|
-
const endpointId = this.activeEndpointId;
|
|
802
|
-
this.setEndpointState(endpointId, { activeSessionId: sessionId });
|
|
803
|
-
this.entries = [];
|
|
804
|
-
this._resetPendingRenderState();
|
|
805
|
-
this.entriesLoading = true;
|
|
806
|
-
this.error = "";
|
|
807
|
-
try {
|
|
808
|
-
const messages = await getSessionMessages(sessionId);
|
|
809
|
-
if (this.activeEndpointId === endpointId && this.byEndpoint.get(endpointId)?.activeSessionId === sessionId) this.entries = messages;
|
|
810
|
-
} catch (e) {
|
|
811
|
-
const err = e;
|
|
812
|
-
if (err.status === 503 || err.status === 502) this.error = "Assistant is not reachable. Try reconnecting.";
|
|
813
|
-
else if (err.status === 401) this.error = "Sign-in required.";
|
|
814
|
-
else this.error = err.message ?? "Failed to load messages.";
|
|
815
|
-
} finally {
|
|
816
|
-
this.entriesLoading = false;
|
|
817
|
-
}
|
|
818
|
-
}
|
|
819
|
-
/** Create a new session on the active endpoint and select it. */
|
|
820
|
-
async startNewSession() {
|
|
821
|
-
if (this.sending) {
|
|
822
|
-
this.error = "Wait for the current reply to finish before switching.";
|
|
823
|
-
return null;
|
|
824
|
-
}
|
|
825
|
-
const endpointId = this.activeEndpointId;
|
|
826
|
-
this.error = "";
|
|
827
|
-
try {
|
|
828
|
-
const { id } = await createSession();
|
|
829
|
-
const now = Date.now();
|
|
830
|
-
const summary = {
|
|
831
|
-
id,
|
|
832
|
-
title: "",
|
|
833
|
-
createdAt: now,
|
|
834
|
-
updatedAt: now
|
|
835
|
-
};
|
|
836
|
-
const prev = this.byEndpoint.get(endpointId) ?? emptyEndpointState();
|
|
837
|
-
this.setEndpointState(endpointId, {
|
|
838
|
-
sessions: [summary, ...prev.sessions.filter((s) => s.id !== id)],
|
|
839
|
-
sessionsLoaded: true,
|
|
840
|
-
activeSessionId: id
|
|
841
|
-
});
|
|
842
|
-
this.entries = [];
|
|
843
|
-
this._resetPendingRenderState();
|
|
844
|
-
return id;
|
|
845
|
-
} catch (e) {
|
|
846
|
-
const err = e;
|
|
847
|
-
this.error = `Failed to start session: ${err.message ?? "unknown error"}`;
|
|
848
|
-
return null;
|
|
849
|
-
}
|
|
850
|
-
}
|
|
851
|
-
/**
|
|
852
|
-
* Send a message in the active session. If none is active, create one
|
|
853
|
-
* first (matches the "zero sessions" empty-state flow).
|
|
854
|
-
*/
|
|
855
|
-
async send(text) {
|
|
856
|
-
const trimmed = text.trim();
|
|
857
|
-
if (!trimmed) return;
|
|
858
|
-
if (this.pendingQuestion && this.pendingQuestion.questions.length === 1 && this.sending) {
|
|
859
|
-
await this.answerQuestion(trimmed);
|
|
860
|
-
return;
|
|
861
|
-
}
|
|
862
|
-
if (this.pendingQuestion && this.sending) {
|
|
863
|
-
this.pendingQuestion = {
|
|
864
|
-
...this.pendingQuestion,
|
|
865
|
-
status: "error",
|
|
866
|
-
message: "This question has multiple parts and must be answered with the provided controls."
|
|
867
|
-
};
|
|
868
|
-
return;
|
|
869
|
-
}
|
|
870
|
-
if (this.sending) return;
|
|
871
|
-
let sessionId = this.activeSessionId;
|
|
872
|
-
if (!sessionId) {
|
|
873
|
-
sessionId = await this.startNewSession();
|
|
874
|
-
if (!sessionId) return;
|
|
875
|
-
}
|
|
876
|
-
const userEntry = {
|
|
877
|
-
id: crypto.randomUUID(),
|
|
878
|
-
role: "user",
|
|
879
|
-
text: trimmed,
|
|
880
|
-
timestamp: Date.now()
|
|
881
|
-
};
|
|
882
|
-
this.entries = [...this.entries, userEntry];
|
|
883
|
-
this._resetPendingRenderState();
|
|
884
|
-
this.error = "";
|
|
885
|
-
this.sending = true;
|
|
886
|
-
if (voiceState.ttsSupported && voiceState.ttsAutoEnabled) speakText("Working on it.", {
|
|
887
|
-
mode: "chat_ack",
|
|
888
|
-
userText: trimmed
|
|
889
|
-
});
|
|
890
|
-
try {
|
|
891
|
-
if (this._unsubscribeEvents && this.liveConnected) await new Promise((resolve, reject) => {
|
|
892
|
-
const timeout = setTimeout(() => {
|
|
893
|
-
this._failPendingTurn(/* @__PURE__ */ new Error("Timed out waiting for the assistant response."));
|
|
894
|
-
}, STREAM_TURN_TIMEOUT_MS);
|
|
895
|
-
this._pendingTurn = {
|
|
896
|
-
endpointId: this.activeEndpointId,
|
|
897
|
-
sessionId,
|
|
898
|
-
userText: trimmed,
|
|
899
|
-
reasoningPartIds: /* @__PURE__ */ new Set(),
|
|
900
|
-
resolve,
|
|
901
|
-
reject,
|
|
902
|
-
timeout
|
|
903
|
-
};
|
|
904
|
-
startChatMessageTurn(sessionId, trimmed).catch((error) => {
|
|
905
|
-
this._failPendingTurn(error instanceof Error ? error : new Error(String(error)));
|
|
906
|
-
});
|
|
907
|
-
});
|
|
908
|
-
else {
|
|
909
|
-
const text = (await sendChatMessage(sessionId, trimmed)).parts.filter((p) => p.type === "text" && p.text).map((p) => p.text ?? "").join("").trim() || "(no response)";
|
|
910
|
-
const capturedTools = this.pendingToolStates.length > 0 ? [...this.pendingToolStates] : void 0;
|
|
911
|
-
this._appendAssistantReply(text, capturedTools);
|
|
912
|
-
this._resetPendingRenderState();
|
|
913
|
-
this._bumpSession(sessionId);
|
|
914
|
-
if (voiceState.ttsSupported && voiceState.ttsAutoEnabled && text !== "(no response)") speakText(text, {
|
|
915
|
-
mode: "chat_reply",
|
|
916
|
-
userText: trimmed,
|
|
917
|
-
assistantText: text
|
|
918
|
-
});
|
|
919
|
-
notifyAssistantReply(text === "(no response)" ? "" : text);
|
|
920
|
-
}
|
|
921
|
-
} catch (e) {
|
|
922
|
-
const err = e;
|
|
923
|
-
this._resetPendingRenderState();
|
|
924
|
-
if (err.status === 503 || err.status === 502) {
|
|
925
|
-
this.error = "Assistant is not reachable. Try reconnecting.";
|
|
926
|
-
this.setEndpointState(this.activeEndpointId, { activeSessionId: null });
|
|
927
|
-
} else if (err.status === 401) this.error = "Sign-in required.";
|
|
928
|
-
else this.error = err.message ?? "Message failed.";
|
|
929
|
-
notifyAssistantError();
|
|
930
|
-
} finally {
|
|
931
|
-
this.sending = false;
|
|
932
|
-
}
|
|
933
|
-
}
|
|
934
|
-
async answerPermission(reply) {
|
|
935
|
-
if (!this.pendingPermission || this.pendingPermission.status === "submitting") return;
|
|
936
|
-
const current = this.pendingPermission;
|
|
937
|
-
this.pendingPermission = {
|
|
938
|
-
...current,
|
|
939
|
-
status: "submitting",
|
|
940
|
-
decision: reply,
|
|
941
|
-
message: ""
|
|
942
|
-
};
|
|
943
|
-
try {
|
|
944
|
-
await replyChatPermission(current.requestID, reply);
|
|
945
|
-
this.pendingPermission = {
|
|
946
|
-
...current,
|
|
947
|
-
status: "resolved",
|
|
948
|
-
decision: reply,
|
|
949
|
-
message: reply === "once" ? `Allowed ${current.permission} once. Waiting for the assistant to continue...` : reply === "always" ? `Always allowed future matching ${current.permission} requests.` : `Denied ${current.permission}. Waiting for the assistant to continue...`
|
|
950
|
-
};
|
|
951
|
-
} catch (error) {
|
|
952
|
-
const message = error instanceof Error ? error.message : "Failed to record permission reply.";
|
|
953
|
-
this.pendingPermission = {
|
|
954
|
-
...current,
|
|
955
|
-
status: "error",
|
|
956
|
-
decision: reply,
|
|
957
|
-
message
|
|
958
|
-
};
|
|
959
|
-
}
|
|
960
|
-
}
|
|
961
|
-
setQuestionAnswer(index, answer) {
|
|
962
|
-
if (!this.pendingQuestion) return;
|
|
963
|
-
if (index < 0 || index >= this.pendingQuestion.questions.length) return;
|
|
964
|
-
const answers = [...this.pendingQuestion.answers];
|
|
965
|
-
answers[index] = answer;
|
|
966
|
-
this.pendingQuestion = {
|
|
967
|
-
...this.pendingQuestion,
|
|
968
|
-
answers,
|
|
969
|
-
message: ""
|
|
970
|
-
};
|
|
971
|
-
}
|
|
972
|
-
async answerQuestion(answer) {
|
|
973
|
-
if (!this.pendingQuestion || this.pendingQuestion.status === "submitting") return;
|
|
974
|
-
const current = this.pendingQuestion;
|
|
975
|
-
const answers = current.questions.length === 1 && typeof answer === "string" ? [answer.trim()] : current.answers.map((item) => item.trim());
|
|
976
|
-
if (answers.some((item) => !item)) {
|
|
977
|
-
this.pendingQuestion = {
|
|
978
|
-
...current,
|
|
979
|
-
status: "error",
|
|
980
|
-
message: "Answer every question before submitting."
|
|
981
|
-
};
|
|
982
|
-
return;
|
|
983
|
-
}
|
|
984
|
-
this.pendingQuestion = {
|
|
985
|
-
...current,
|
|
986
|
-
status: "submitting",
|
|
987
|
-
answers,
|
|
988
|
-
message: ""
|
|
989
|
-
};
|
|
990
|
-
try {
|
|
991
|
-
await replyChatQuestion(current.requestID, answers.map((item) => [item]));
|
|
992
|
-
this.pendingQuestion = {
|
|
993
|
-
...current,
|
|
994
|
-
status: "answered",
|
|
995
|
-
answers,
|
|
996
|
-
message: "Answer sent."
|
|
997
|
-
};
|
|
998
|
-
} catch (error) {
|
|
999
|
-
const message = error instanceof Error ? error.message : "Failed to send answer.";
|
|
1000
|
-
this.pendingQuestion = {
|
|
1001
|
-
...current,
|
|
1002
|
-
status: "error",
|
|
1003
|
-
answers,
|
|
1004
|
-
message
|
|
1005
|
-
};
|
|
1006
|
-
}
|
|
1007
|
-
}
|
|
1008
|
-
async rejectQuestion() {
|
|
1009
|
-
if (!this.pendingQuestion || this.pendingQuestion.status === "submitting") return;
|
|
1010
|
-
const current = this.pendingQuestion;
|
|
1011
|
-
this.pendingQuestion = {
|
|
1012
|
-
...current,
|
|
1013
|
-
status: "submitting",
|
|
1014
|
-
message: ""
|
|
1015
|
-
};
|
|
1016
|
-
try {
|
|
1017
|
-
await rejectChatQuestion(current.requestID);
|
|
1018
|
-
this.pendingQuestion = {
|
|
1019
|
-
...current,
|
|
1020
|
-
status: "rejected",
|
|
1021
|
-
message: "Question declined."
|
|
1022
|
-
};
|
|
1023
|
-
} catch (error) {
|
|
1024
|
-
const message = error instanceof Error ? error.message : "Failed to reject question.";
|
|
1025
|
-
this.pendingQuestion = {
|
|
1026
|
-
...current,
|
|
1027
|
-
status: "error",
|
|
1028
|
-
message
|
|
1029
|
-
};
|
|
1030
|
-
}
|
|
1031
|
-
}
|
|
1032
|
-
reset() {
|
|
1033
|
-
stopSpeaking();
|
|
1034
|
-
this._clearPendingTurn();
|
|
1035
|
-
this.entries = [];
|
|
1036
|
-
this.error = "";
|
|
1037
|
-
this._resetPendingRenderState();
|
|
1038
|
-
this.byEndpoint = new SvelteMap();
|
|
1039
|
-
if (this._unsubscribeEvents) {
|
|
1040
|
-
try {
|
|
1041
|
-
this._unsubscribeEvents();
|
|
1042
|
-
} catch (err) {
|
|
1043
|
-
console.warn("[chat] failed to unsubscribe from event stream during reset", err);
|
|
1044
|
-
}
|
|
1045
|
-
this._unsubscribeEvents = null;
|
|
1046
|
-
}
|
|
1047
|
-
this.liveConnected = false;
|
|
1048
|
-
}
|
|
1049
|
-
};
|
|
1050
|
-
var chat = new ChatService();
|
|
1051
|
-
//#endregion
|
|
1052
|
-
//#region src/lib/chat/navigation.ts
|
|
1053
|
-
function encodeWorkspacePath(path) {
|
|
1054
|
-
const bytes = new TextEncoder().encode(path);
|
|
1055
|
-
let binary = "";
|
|
1056
|
-
for (const byte of bytes) binary += String.fromCharCode(byte);
|
|
1057
|
-
return btoa(binary).replace(/=+$/g, "");
|
|
1058
|
-
}
|
|
1059
|
-
function currentChatSessionId() {
|
|
1060
|
-
return chat.activeSessionId;
|
|
1061
|
-
}
|
|
1062
|
-
function buildAdvancedPath(sessionId) {
|
|
1063
|
-
const params = new URLSearchParams();
|
|
1064
|
-
if (sessionId) params.set("session", sessionId);
|
|
1065
|
-
const query = params.toString();
|
|
1066
|
-
return query ? `/advanced?${query}` : "/advanced";
|
|
1067
|
-
}
|
|
1068
|
-
function buildChatPath(sessionId, options) {
|
|
1069
|
-
const params = new URLSearchParams();
|
|
1070
|
-
if (sessionId) params.set("session", sessionId);
|
|
1071
|
-
const query = params.toString();
|
|
1072
|
-
return query ? `/chat?${query}` : "/chat";
|
|
1073
|
-
}
|
|
1074
|
-
/**
|
|
1075
|
-
* Build the OpenCode web-UI deep link to a specific session. OpenCode scopes its
|
|
1076
|
-
* session list by directory, so the route is `/<base64(directory)>/session/<id>`
|
|
1077
|
-
* and the `directory` MUST be the workspace the session actually lives in —
|
|
1078
|
-
* resolve it from the session record (`session.directory`), never hardcode it.
|
|
1079
|
-
* Without a session id or directory, fall back to the base URL (OpenCode opens
|
|
1080
|
-
* its default view) so we never deep-link a session the embedded app can't find.
|
|
1081
|
-
*/
|
|
1082
|
-
function buildAdvancedIframeUrl(baseUrl, sessionId, directory) {
|
|
1083
|
-
if (!sessionId || !directory) return baseUrl;
|
|
1084
|
-
return `${baseUrl.replace(/\/$/, "")}/${encodeWorkspacePath(directory)}/session/${encodeURIComponent(sessionId)}`;
|
|
1085
|
-
}
|
|
1086
|
-
//#endregion
|
|
1087
|
-
//#region src/lib/components/icons/IconAdvanced.svelte
|
|
1088
|
-
function IconAdvanced($$renderer, $$props) {
|
|
1089
|
-
let { size = 20, class: className = "" } = $$props;
|
|
1090
|
-
$$renderer.push(`<svg aria-hidden="true"${attr("width", size)}${attr("height", size)} viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"${attr_class(`s-icon ${stringify(className)}`)}><path d="M4 17l4-4-4-4"></path><path d="M12 17h8"></path></svg>`);
|
|
1091
|
-
}
|
|
1092
|
-
//#endregion
|
|
1093
|
-
//#region src/lib/components/icons/IconThemeSystem.svelte
|
|
1094
|
-
function IconThemeSystem($$renderer, $$props) {
|
|
1095
|
-
let { size = 20, class: className = "" } = $$props;
|
|
1096
|
-
$$renderer.push(`<svg xmlns="http://www.w3.org/2000/svg"${attr("width", size)}${attr("height", size)} viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"${attr_class(`lucide lucide-sun-moon-icon lucide-sun-moon s-icon ${stringify(className)}`)}><path d="M12 2v2"></path><path d="M14.837 16.385a6 6 0 1 1-7.223-7.222c.624-.147.97.66.715 1.248a4 4 0 0 0 5.26 5.259c.589-.255 1.396.09 1.248.715"></path><path d="M16 12a4 4 0 0 0-4-4"></path><path d="m19 5-1.256 1.256"></path><path d="M20 12h2"></path></svg>`);
|
|
1097
|
-
}
|
|
1098
|
-
//#endregion
|
|
1099
|
-
//#region src/lib/components/icons/IconThemeLight.svelte
|
|
1100
|
-
function IconThemeLight($$renderer, $$props) {
|
|
1101
|
-
let { size = 20, class: className = "" } = $$props;
|
|
1102
|
-
$$renderer.push(`<svg aria-hidden="true"${attr("width", size)}${attr("height", size)} viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"${attr_class(`s-icon ${stringify(className)}`)}><circle cx="12" cy="12" r="4"></circle><path d="M12 2.5v2.2M12 19.3v2.2M4.6 4.6l1.6 1.6M17.8 17.8l1.6 1.6M2.5 12h2.2M19.3 12h2.2M19.4 4.6l-1.6 1.6M6.2 17.8l-1.6 1.6"></path></svg>`);
|
|
1103
|
-
}
|
|
1104
|
-
//#endregion
|
|
1105
|
-
//#region src/lib/components/icons/IconThemeDark.svelte
|
|
1106
|
-
function IconThemeDark($$renderer, $$props) {
|
|
1107
|
-
let { size = 20, class: className = "" } = $$props;
|
|
1108
|
-
$$renderer.push(`<svg aria-hidden="true"${attr("width", size)}${attr("height", size)} viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"${attr_class(`s-icon ${stringify(className)}`)}><path d="M21 12.8A9 9 0 1 1 11.2 3 7 7 0 0 0 21 12.8z"></path></svg>`);
|
|
1109
|
-
}
|
|
1110
|
-
//#endregion
|
|
1111
|
-
//#region src/lib/endpoints-state.svelte.ts
|
|
1112
|
-
var EndpointsService = class {
|
|
1113
|
-
endpoints = [];
|
|
1114
|
-
activeId = "default";
|
|
1115
|
-
loading = false;
|
|
1116
|
-
loaded = false;
|
|
1117
|
-
error = "";
|
|
1118
|
-
#active = derived(() => this.endpoints.find((e) => e.id === this.activeId) ?? this.endpoints[0] ?? null);
|
|
1119
|
-
get active() {
|
|
1120
|
-
return this.#active();
|
|
1121
|
-
}
|
|
1122
|
-
set active($$value) {
|
|
1123
|
-
return this.#active($$value);
|
|
1124
|
-
}
|
|
1125
|
-
async load(force = false) {
|
|
1126
|
-
if (this.loading) return;
|
|
1127
|
-
if (this.loaded && !force) return;
|
|
1128
|
-
this.loading = true;
|
|
1129
|
-
this.error = "";
|
|
1130
|
-
try {
|
|
1131
|
-
const { endpoints, activeId } = await fetchEndpoints();
|
|
1132
|
-
this.endpoints = endpoints;
|
|
1133
|
-
this.activeId = activeId;
|
|
1134
|
-
this.loaded = true;
|
|
1135
|
-
} catch (e) {
|
|
1136
|
-
const err = e;
|
|
1137
|
-
if (err.status !== 401) this.error = err.message ?? "Failed to load endpoints";
|
|
1138
|
-
} finally {
|
|
1139
|
-
this.loading = false;
|
|
1140
|
-
}
|
|
1141
|
-
}
|
|
1142
|
-
async activate(id) {
|
|
1143
|
-
if (id === this.activeId) return;
|
|
1144
|
-
if (chat.sending) {
|
|
1145
|
-
this.error = "Wait for the current reply to finish before switching.";
|
|
1146
|
-
throw new Error(this.error);
|
|
1147
|
-
}
|
|
1148
|
-
const previous = this.activeId;
|
|
1149
|
-
this.activeId = id;
|
|
1150
|
-
try {
|
|
1151
|
-
await setActiveEndpoint(id);
|
|
1152
|
-
await chat.onEndpointChanged(id);
|
|
1153
|
-
} catch (e) {
|
|
1154
|
-
this.activeId = previous;
|
|
1155
|
-
const err = e;
|
|
1156
|
-
this.error = err.message ?? "Failed to switch endpoint";
|
|
1157
|
-
throw e;
|
|
1158
|
-
}
|
|
1159
|
-
}
|
|
1160
|
-
};
|
|
1161
|
-
var endpointsService = new EndpointsService();
|
|
1162
|
-
//#endregion
|
|
1163
|
-
//#region src/lib/components/icons/IconClose.svelte
|
|
1164
|
-
function IconClose($$renderer, $$props) {
|
|
1165
|
-
let { size = 20, class: className = "" } = $$props;
|
|
1166
|
-
$$renderer.push(`<svg aria-hidden="true"${attr("width", size)}${attr("height", size)} viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"${attr_class(`s-icon ${stringify(className)}`)}><path d="M18 6 6 18"></path><path d="m6 6 12 12"></path></svg>`);
|
|
1167
|
-
}
|
|
1168
|
-
//#endregion
|
|
1169
|
-
//#region src/lib/assistant-endpoint.ts
|
|
1170
|
-
function isLocalAssistantUrl(url) {
|
|
1171
|
-
if (!url) return true;
|
|
1172
|
-
try {
|
|
1173
|
-
const host = new URL(url).hostname;
|
|
1174
|
-
return host === "localhost" || host === "127.0.0.1" || host === "::1" || host === "host.docker.internal";
|
|
1175
|
-
} catch {
|
|
1176
|
-
return true;
|
|
1177
|
-
}
|
|
1178
|
-
}
|
|
1179
|
-
//#endregion
|
|
1180
|
-
//#region src/lib/session-title.ts
|
|
1181
|
-
var DEFAULT_TITLE_RE = /^New session - (\d{4}-\d{2}-\d{2}T[0-9:.]+Z?)$/;
|
|
1182
|
-
/** Resolve a session's display title. */
|
|
1183
|
-
function resolveSessionTitle(title) {
|
|
1184
|
-
const trimmed = (title ?? "").trim();
|
|
1185
|
-
if (!trimmed) return "Untitled session";
|
|
1186
|
-
const match = DEFAULT_TITLE_RE.exec(trimmed);
|
|
1187
|
-
if (match) {
|
|
1188
|
-
const ts = Date.parse(match[1]);
|
|
1189
|
-
if (!Number.isNaN(ts)) return formatDateTime(ts);
|
|
1190
|
-
}
|
|
1191
|
-
return trimmed;
|
|
1192
|
-
}
|
|
1193
|
-
//#endregion
|
|
1194
|
-
//#region src/lib/components/chat/SessionTitle.svelte
|
|
1195
|
-
function SessionTitle($$renderer, $$props) {
|
|
1196
|
-
$$renderer.component(($$renderer) => {
|
|
1197
|
-
let { title } = $$props;
|
|
1198
|
-
const display = derived(() => resolveSessionTitle(title));
|
|
1199
|
-
$$renderer.push(`<!---->${escape_html(display())}`);
|
|
1200
|
-
});
|
|
1201
|
-
}
|
|
1202
|
-
//#endregion
|
|
1203
|
-
//#region src/lib/components/chat/SessionList.svelte
|
|
1204
|
-
function SessionList($$renderer, $$props) {
|
|
1205
|
-
$$renderer.component(($$renderer) => {
|
|
1206
|
-
/** Called after a session is opened or started (e.g. to close the drawer). */
|
|
1207
|
-
/** Hide the internal new-session button (use when the parent already provides one). */
|
|
1208
|
-
let { onChosen, hideNewBtn = false } = $$props;
|
|
1209
|
-
const SESSION_LIST_CAP = 50;
|
|
1210
|
-
const active = derived(() => endpointsService.active);
|
|
1211
|
-
const endpointState = derived(() => active() ? chat.byEndpoint.get(active().id) ?? null : null);
|
|
1212
|
-
const sessions = derived(() => endpointState()?.sessions ?? []);
|
|
1213
|
-
const loading = derived(() => endpointState()?.sessionsLoading ?? false);
|
|
1214
|
-
const error = derived(() => endpointState()?.sessionsError ?? "");
|
|
1215
|
-
const activeSessionId = derived(() => chat.activeSessionId);
|
|
1216
|
-
const visibleSessions = derived(() => sessions().slice(0, SESSION_LIST_CAP));
|
|
1217
|
-
const overflowCount = derived(() => Math.max(0, sessions().length - SESSION_LIST_CAP));
|
|
1218
|
-
$$renderer.push(`<div class="session-body svelte-1o6rxhb">`);
|
|
1219
|
-
if (chat.sending) {
|
|
1220
|
-
$$renderer.push("<!--[0-->");
|
|
1221
|
-
$$renderer.push(`<div class="notice svelte-1o6rxhb">Wait for the current reply to finish before switching.</div>`);
|
|
1222
|
-
} else $$renderer.push("<!--[-1-->");
|
|
1223
|
-
$$renderer.push(`<!--]--> `);
|
|
1224
|
-
if (!endpointState() || loading()) {
|
|
1225
|
-
$$renderer.push("<!--[0-->");
|
|
1226
|
-
$$renderer.push(`<div class="empty svelte-1o6rxhb">`);
|
|
1227
|
-
Spinner($$renderer, { size: 12 });
|
|
1228
|
-
$$renderer.push(`<!----><span>Loading sessions…</span></div>`);
|
|
1229
|
-
} else if (error()) {
|
|
1230
|
-
$$renderer.push("<!--[1-->");
|
|
1231
|
-
$$renderer.push(`<div class="list-error svelte-1o6rxhb"><span class="svelte-1o6rxhb">${escape_html(error())}</span> <button type="button" class="retry-btn svelte-1o6rxhb">Retry</button></div>`);
|
|
1232
|
-
} else if (sessions().length === 0) {
|
|
1233
|
-
$$renderer.push("<!--[2-->");
|
|
1234
|
-
$$renderer.push(`<div class="empty svelte-1o6rxhb">No sessions yet. Start the first one.</div>`);
|
|
1235
|
-
} else {
|
|
1236
|
-
$$renderer.push("<!--[-1-->");
|
|
1237
|
-
$$renderer.push(`<div class="session-list svelte-1o6rxhb" role="group" aria-label="Sessions"><!--[-->`);
|
|
1238
|
-
const each_array = ensure_array_like(visibleSessions());
|
|
1239
|
-
for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
|
|
1240
|
-
let s = each_array[$$index];
|
|
1241
|
-
$$renderer.push(`<button type="button"${attr_class("list-item session-item svelte-1o6rxhb", void 0, { "active": s.id === activeSessionId() })}${attr("aria-current", s.id === activeSessionId() ? "true" : void 0)}${attr("disabled", chat.sending, true)}${attr("title", formatDateTime(s.updatedAt))}><span class="item-text svelte-1o6rxhb"><span class="item-label svelte-1o6rxhb">`);
|
|
1242
|
-
SessionTitle($$renderer, { title: s.title });
|
|
1243
|
-
$$renderer.push(`<!---->`);
|
|
1244
|
-
if (s.id === activeSessionId()) {
|
|
1245
|
-
$$renderer.push("<!--[0-->");
|
|
1246
|
-
$$renderer.push(`<span class="sr-only svelte-1o6rxhb">(current)</span>`);
|
|
1247
|
-
} else $$renderer.push("<!--[-1-->");
|
|
1248
|
-
$$renderer.push(`<!--]--></span> <span class="item-meta svelte-1o6rxhb">${escape_html(formatRelativeTime(s.updatedAt))}</span></span></button>`);
|
|
1249
|
-
}
|
|
1250
|
-
$$renderer.push(`<!--]--></div> `);
|
|
1251
|
-
if (overflowCount() > 0) {
|
|
1252
|
-
$$renderer.push("<!--[0-->");
|
|
1253
|
-
$$renderer.push(`<button type="button" class="show-all svelte-1o6rxhb">Show all (${escape_html(overflowCount())} more)</button>`);
|
|
1254
|
-
} else $$renderer.push("<!--[-1-->");
|
|
1255
|
-
$$renderer.push(`<!--]-->`);
|
|
1256
|
-
}
|
|
1257
|
-
$$renderer.push(`<!--]--> `);
|
|
1258
|
-
if (!hideNewBtn) {
|
|
1259
|
-
$$renderer.push("<!--[0-->");
|
|
1260
|
-
$$renderer.push(`<div class="divider svelte-1o6rxhb"></div> <button type="button" class="list-item new-btn svelte-1o6rxhb"${attr("disabled", chat.sending, true)}><span class="check svelte-1o6rxhb" aria-hidden="true">+</span> <span class="item-text svelte-1o6rxhb"><span class="item-label svelte-1o6rxhb">New session</span></span></button>`);
|
|
1261
|
-
} else $$renderer.push("<!--[-1-->");
|
|
1262
|
-
$$renderer.push(`<!--]--></div>`);
|
|
1263
|
-
});
|
|
1264
|
-
}
|
|
1265
|
-
//#endregion
|
|
1266
|
-
//#region src/lib/components/icons/IconConversations.svelte
|
|
1267
|
-
function IconConversations($$renderer, $$props) {
|
|
1268
|
-
let { size = 20, class: className = "" } = $$props;
|
|
1269
|
-
$$renderer.push(`<svg aria-hidden="true"${attr("width", size)}${attr("height", size)} viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"${attr_class(`s-icon ${stringify(className)}`)}><path d="M4 7h16" opacity="0.9"></path><path d="M4 12h11" opacity="0.65"></path><path d="M4 17h7.5" opacity="0.5"></path></svg>`);
|
|
1270
|
-
}
|
|
1271
|
-
//#endregion
|
|
1272
|
-
//#region src/lib/components/icons/IconSoundOff.svelte
|
|
1273
|
-
function IconSoundOff($$renderer, $$props) {
|
|
1274
|
-
let { size = 20, class: className = "" } = $$props;
|
|
1275
|
-
$$renderer.push(`<svg aria-hidden="true"${attr("width", size)}${attr("height", size)} viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"${attr_class(`s-icon ${stringify(className)}`)}><polygon points="11 5 6 9 2 9 2 15 6 15 11 19 11 5"></polygon><line x1="23" y1="9" x2="17" y2="15"></line><line x1="17" y1="9" x2="23" y2="15"></line></svg>`);
|
|
1276
|
-
}
|
|
1277
|
-
//#endregion
|
|
1278
|
-
//#region src/lib/components/icons/IconSoundOn.svelte
|
|
1279
|
-
function IconSoundOn($$renderer, $$props) {
|
|
1280
|
-
let { size = 20, class: className = "" } = $$props;
|
|
1281
|
-
$$renderer.push(`<svg aria-hidden="true"${attr("width", size)}${attr("height", size)} viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"${attr_class(`s-icon ${stringify(className)}`)}><polygon points="11 5 6 9 2 9 2 15 6 15 11 19 11 5"></polygon><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></svg>`);
|
|
1282
|
-
}
|
|
1283
|
-
|
|
1284
|
-
//#region src/lib/components/icons/IconMic.svelte
|
|
1285
|
-
function IconMic($$renderer, $$props) {
|
|
1286
|
-
let { size = 20, class: className = "" } = $$props;
|
|
1287
|
-
$$renderer.push(`<svg aria-hidden="true"${attr("width", size)}${attr("height", size)} viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"${attr_class(`s-icon ${stringify(className)}`)}><path d="M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z"></path><path d="M19 10v2a7 7 0 0 1-14 0v-2"></path><line x1="12" y1="19" x2="12" y2="23"></line><line x1="8" y1="23" x2="16" y2="23"></line></svg>`);
|
|
1288
|
-
}
|
|
1289
|
-
|
|
1290
|
-
export { IconAdvanced as I, SessionList as S, IconClose as a, IconConversations as b, IconMic as c, IconSoundOff as d, IconSoundOn as e, IconThemeDark as f, IconThemeLight as g, IconThemeSystem as h, SvelteMap as i, SvelteSet as j, advancedModeService as k, buildAdvancedIframeUrl as l, buildAdvancedPath as m, buildChatPath as n, chat as o, currentChatSessionId as p, endpointsService as q, formatTime as r, isLocalAssistantUrl as s, resolveSessionTitle as t };
|
|
1291
|
-
//# sourceMappingURL=IconMic-DLx3WSIu.js.map
|