@openpalm/ui 0.12.52 → 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.CcyzbXoG.css +0 -1
- package/build/client/_app/immutable/assets/7.CcyzbXoG.css.br +0 -0
- package/build/client/_app/immutable/assets/7.CcyzbXoG.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/BDvA7M6l.js +0 -1
- package/build/client/_app/immutable/chunks/BDvA7M6l.js.br +0 -0
- package/build/client/_app/immutable/chunks/BDvA7M6l.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/BM4jJmEk.js +0 -1
- package/build/client/_app/immutable/chunks/BM4jJmEk.js.br +0 -0
- package/build/client/_app/immutable/chunks/BM4jJmEk.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/C4c5Y6rY.js +0 -5
- package/build/client/_app/immutable/chunks/C4c5Y6rY.js.br +0 -0
- package/build/client/_app/immutable/chunks/C4c5Y6rY.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/C7x_T9zu.js +0 -3
- package/build/client/_app/immutable/chunks/C7x_T9zu.js.br +0 -0
- package/build/client/_app/immutable/chunks/C7x_T9zu.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/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/DoTCwfyJ.js +0 -1
- package/build/client/_app/immutable/chunks/DoTCwfyJ.js.br +0 -2
- package/build/client/_app/immutable/chunks/DoTCwfyJ.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DwEShcLP.js +0 -1
- package/build/client/_app/immutable/chunks/DwEShcLP.js.br +0 -0
- package/build/client/_app/immutable/chunks/DwEShcLP.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/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/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.D5lUGJr1.js +0 -2
- package/build/client/_app/immutable/entry/app.D5lUGJr1.js.br +0 -0
- package/build/client/_app/immutable/entry/app.D5lUGJr1.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.CKoCEnYJ.js +0 -1
- package/build/client/_app/immutable/entry/start.CKoCEnYJ.js.br +0 -0
- package/build/client/_app/immutable/entry/start.CKoCEnYJ.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.anwXhDvm.js +0 -1
- package/build/client/_app/immutable/nodes/0.anwXhDvm.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.anwXhDvm.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.DrRwtvKf.js +0 -1
- package/build/client/_app/immutable/nodes/1.DrRwtvKf.js.br +0 -1
- package/build/client/_app/immutable/nodes/1.DrRwtvKf.js.gz +0 -0
- package/build/client/_app/immutable/nodes/10.BLqUjjTI.js +0 -1
- package/build/client/_app/immutable/nodes/10.BLqUjjTI.js.br +0 -0
- package/build/client/_app/immutable/nodes/10.BLqUjjTI.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.paHt3QH9.js +0 -124
- package/build/client/_app/immutable/nodes/4.paHt3QH9.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.paHt3QH9.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.bKLnh085.js +0 -4
- package/build/client/_app/immutable/nodes/5.bKLnh085.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.bKLnh085.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.DRi42KoD.js +0 -1
- package/build/client/_app/immutable/nodes/6.DRi42KoD.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.DRi42KoD.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.BvgWYGnm.js +0 -2
- package/build/client/_app/immutable/nodes/7.BvgWYGnm.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.BvgWYGnm.js.gz +0 -0
- package/build/client/_app/immutable/nodes/8.BKAKOw6V.js +0 -1
- package/build/client/_app/immutable/nodes/8.BKAKOw6V.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.BKAKOw6V.js.gz +0 -0
- package/build/client/_app/immutable/nodes/9.DwWxN6-k.js +0 -6
- package/build/client/_app/immutable/nodes/9.DwWxN6-k.js.br +0 -0
- package/build/client/_app/immutable/nodes/9.DwWxN6-k.js.gz +0 -0
- package/build/server/chunks/0-BiE1oF-J.js +0 -22
- package/build/server/chunks/0-BiE1oF-J.js.map +0 -1
- package/build/server/chunks/1-B-LNip7q.js +0 -9
- package/build/server/chunks/1-B-LNip7q.js.map +0 -1
- package/build/server/chunks/10-CS2lFzh1.js +0 -69
- package/build/server/chunks/10-CS2lFzh1.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-CliJOxWK.js +0 -9
- package/build/server/chunks/4-CliJOxWK.js.map +0 -1
- package/build/server/chunks/5-DkkL3QsU.js +0 -9
- package/build/server/chunks/5-DkkL3QsU.js.map +0 -1
- package/build/server/chunks/6-B6ZHxJZG.js +0 -9
- package/build/server/chunks/6-B6ZHxJZG.js.map +0 -1
- package/build/server/chunks/7-CIl66k8R.js +0 -9
- package/build/server/chunks/7-CIl66k8R.js.map +0 -1
- package/build/server/chunks/8-Dbz3fLZs.js +0 -35
- package/build/server/chunks/8-Dbz3fLZs.js.map +0 -1
- package/build/server/chunks/9-CnaXNk2w.js +0 -9
- package/build/server/chunks/9-CnaXNk2w.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-DMJf4zcn.js +0 -1295
- package/build/server/chunks/IconMic-DMJf4zcn.js.map +0 -1
- package/build/server/chunks/Navbar-CbBudHU6.js +0 -403
- package/build/server/chunks/Navbar-CbBudHU6.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-B5opDXuf.js +0 -66
- package/build/server/chunks/_layout.svelte-B5opDXuf.js.map +0 -1
- package/build/server/chunks/_page.svelte-1VhBiAl_.js +0 -385
- package/build/server/chunks/_page.svelte-1VhBiAl_.js.map +0 -1
- package/build/server/chunks/_page.svelte-6gpwjZv0.js +0 -122
- package/build/server/chunks/_page.svelte-6gpwjZv0.js.map +0 -1
- package/build/server/chunks/_page.svelte-Bd16jege.js +0 -47
- package/build/server/chunks/_page.svelte-Bd16jege.js.map +0 -1
- package/build/server/chunks/_page.svelte-Boq5WJfs.js +0 -3289
- package/build/server/chunks/_page.svelte-Boq5WJfs.js.map +0 -1
- package/build/server/chunks/_page.svelte-DM-4V1_g.js +0 -79
- package/build/server/chunks/_page.svelte-DM-4V1_g.js.map +0 -1
- package/build/server/chunks/_page.svelte-jdDbUptn.js +0 -89
- package/build/server/chunks/_page.svelte-jdDbUptn.js.map +0 -1
- package/build/server/chunks/_page.svelte-yAnFAnHi.js +0 -74
- package/build/server/chunks/_page.svelte-yAnFAnHi.js.map +0 -1
- package/build/server/chunks/_server.ts-0x3ZsRoq.js +0 -41
- package/build/server/chunks/_server.ts-0x3ZsRoq.js.map +0 -1
- package/build/server/chunks/_server.ts-1fytrAUC.js +0 -105
- package/build/server/chunks/_server.ts-1fytrAUC.js.map +0 -1
- package/build/server/chunks/_server.ts-2trnHYNR.js +0 -103
- package/build/server/chunks/_server.ts-2trnHYNR.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-3IGr8J7j.js +0 -103
- package/build/server/chunks/_server.ts-3IGr8J7j.js.map +0 -1
- package/build/server/chunks/_server.ts-4HApbECL.js +0 -49
- package/build/server/chunks/_server.ts-4HApbECL.js.map +0 -1
- package/build/server/chunks/_server.ts-4cGCnV5A.js +0 -172
- package/build/server/chunks/_server.ts-4cGCnV5A.js.map +0 -1
- package/build/server/chunks/_server.ts-5mKh6tgD.js +0 -56
- package/build/server/chunks/_server.ts-5mKh6tgD.js.map +0 -1
- package/build/server/chunks/_server.ts-B-gZIXCx.js +0 -120
- package/build/server/chunks/_server.ts-B-gZIXCx.js.map +0 -1
- package/build/server/chunks/_server.ts-B1LApKwc.js +0 -48
- package/build/server/chunks/_server.ts-B1LApKwc.js.map +0 -1
- package/build/server/chunks/_server.ts-B5s8k9IW.js +0 -53
- package/build/server/chunks/_server.ts-B5s8k9IW.js.map +0 -1
- package/build/server/chunks/_server.ts-B7oDgVRm.js +0 -208
- package/build/server/chunks/_server.ts-B7oDgVRm.js.map +0 -1
- package/build/server/chunks/_server.ts-BA7OxoAM.js +0 -69
- package/build/server/chunks/_server.ts-BA7OxoAM.js.map +0 -1
- package/build/server/chunks/_server.ts-BCqZP9mX.js +0 -94
- package/build/server/chunks/_server.ts-BCqZP9mX.js.map +0 -1
- package/build/server/chunks/_server.ts-BE9eO04W.js +0 -100
- package/build/server/chunks/_server.ts-BE9eO04W.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-BUf-IIIm.js +0 -85
- package/build/server/chunks/_server.ts-BUf-IIIm.js.map +0 -1
- package/build/server/chunks/_server.ts-BW13CurN.js +0 -43
- package/build/server/chunks/_server.ts-BW13CurN.js.map +0 -1
- package/build/server/chunks/_server.ts-BWh3c-xu.js +0 -44
- package/build/server/chunks/_server.ts-BWh3c-xu.js.map +0 -1
- package/build/server/chunks/_server.ts-BYDgL8Wh.js +0 -68
- package/build/server/chunks/_server.ts-BYDgL8Wh.js.map +0 -1
- package/build/server/chunks/_server.ts-B_9-b1wk.js +0 -82
- package/build/server/chunks/_server.ts-B_9-b1wk.js.map +0 -1
- package/build/server/chunks/_server.ts-Bbc4zzJy.js +0 -39
- package/build/server/chunks/_server.ts-Bbc4zzJy.js.map +0 -1
- package/build/server/chunks/_server.ts-BhmHIGs6.js +0 -45
- package/build/server/chunks/_server.ts-BhmHIGs6.js.map +0 -1
- package/build/server/chunks/_server.ts-BhuoSeRy.js +0 -64
- package/build/server/chunks/_server.ts-BhuoSeRy.js.map +0 -1
- package/build/server/chunks/_server.ts-BnL_ReBS.js +0 -50
- package/build/server/chunks/_server.ts-BnL_ReBS.js.map +0 -1
- package/build/server/chunks/_server.ts-BoOQ7F2z.js +0 -40
- package/build/server/chunks/_server.ts-BoOQ7F2z.js.map +0 -1
- package/build/server/chunks/_server.ts-Bry3Z40C.js +0 -160
- package/build/server/chunks/_server.ts-Bry3Z40C.js.map +0 -1
- package/build/server/chunks/_server.ts-BtVLVJf0.js +0 -80
- package/build/server/chunks/_server.ts-BtVLVJf0.js.map +0 -1
- package/build/server/chunks/_server.ts-BzISiSHa.js +0 -57
- package/build/server/chunks/_server.ts-BzISiSHa.js.map +0 -1
- package/build/server/chunks/_server.ts-C7PeR-ll.js +0 -112
- package/build/server/chunks/_server.ts-C7PeR-ll.js.map +0 -1
- package/build/server/chunks/_server.ts-C8NW6VWR.js +0 -55
- package/build/server/chunks/_server.ts-C8NW6VWR.js.map +0 -1
- package/build/server/chunks/_server.ts-CF0aKxAL.js +0 -59
- package/build/server/chunks/_server.ts-CF0aKxAL.js.map +0 -1
- package/build/server/chunks/_server.ts-CH-OPdXJ.js +0 -56
- package/build/server/chunks/_server.ts-CH-OPdXJ.js.map +0 -1
- package/build/server/chunks/_server.ts-CPsQ5aGi.js +0 -79
- package/build/server/chunks/_server.ts-CPsQ5aGi.js.map +0 -1
- package/build/server/chunks/_server.ts-CQ8JX5O7.js +0 -89
- package/build/server/chunks/_server.ts-CQ8JX5O7.js.map +0 -1
- package/build/server/chunks/_server.ts-CQPRTbTX.js +0 -63
- package/build/server/chunks/_server.ts-CQPRTbTX.js.map +0 -1
- package/build/server/chunks/_server.ts-CTVpEmAc.js +0 -517
- package/build/server/chunks/_server.ts-CTVpEmAc.js.map +0 -1
- package/build/server/chunks/_server.ts-CWVi9VhR.js +0 -76
- package/build/server/chunks/_server.ts-CWVi9VhR.js.map +0 -1
- package/build/server/chunks/_server.ts-CXQd0L0u.js +0 -57
- package/build/server/chunks/_server.ts-CXQd0L0u.js.map +0 -1
- package/build/server/chunks/_server.ts-Cgg_3L-k.js +0 -44
- package/build/server/chunks/_server.ts-Cgg_3L-k.js.map +0 -1
- package/build/server/chunks/_server.ts-ChvbGMR6.js +0 -50
- package/build/server/chunks/_server.ts-ChvbGMR6.js.map +0 -1
- package/build/server/chunks/_server.ts-CnByyw9m.js +0 -35
- package/build/server/chunks/_server.ts-CnByyw9m.js.map +0 -1
- package/build/server/chunks/_server.ts-Ct_0qiMK.js +0 -76
- package/build/server/chunks/_server.ts-Ct_0qiMK.js.map +0 -1
- package/build/server/chunks/_server.ts-Cu1u6Fq3.js +0 -244
- package/build/server/chunks/_server.ts-Cu1u6Fq3.js.map +0 -1
- package/build/server/chunks/_server.ts-Cuq4zRUh.js +0 -66
- package/build/server/chunks/_server.ts-Cuq4zRUh.js.map +0 -1
- package/build/server/chunks/_server.ts-Cx8pH99_.js +0 -43
- package/build/server/chunks/_server.ts-Cx8pH99_.js.map +0 -1
- package/build/server/chunks/_server.ts-D-eORdC8.js +0 -57
- package/build/server/chunks/_server.ts-D-eORdC8.js.map +0 -1
- package/build/server/chunks/_server.ts-D1cvo-nO.js +0 -55
- package/build/server/chunks/_server.ts-D1cvo-nO.js.map +0 -1
- package/build/server/chunks/_server.ts-D4nuqQNX.js +0 -85
- package/build/server/chunks/_server.ts-D4nuqQNX.js.map +0 -1
- package/build/server/chunks/_server.ts-D6aAJoCf.js +0 -70
- package/build/server/chunks/_server.ts-D6aAJoCf.js.map +0 -1
- package/build/server/chunks/_server.ts-D9PUEjiN.js +0 -47
- package/build/server/chunks/_server.ts-D9PUEjiN.js.map +0 -1
- package/build/server/chunks/_server.ts-DAiD8z-P.js +0 -47
- package/build/server/chunks/_server.ts-DAiD8z-P.js.map +0 -1
- package/build/server/chunks/_server.ts-DDKL_uuS.js +0 -203
- package/build/server/chunks/_server.ts-DDKL_uuS.js.map +0 -1
- package/build/server/chunks/_server.ts-DGkgd0uc.js +0 -166
- package/build/server/chunks/_server.ts-DGkgd0uc.js.map +0 -1
- package/build/server/chunks/_server.ts-DHig-2Ii.js +0 -58
- package/build/server/chunks/_server.ts-DHig-2Ii.js.map +0 -1
- package/build/server/chunks/_server.ts-DJdHVo2c.js +0 -36
- package/build/server/chunks/_server.ts-DJdHVo2c.js.map +0 -1
- package/build/server/chunks/_server.ts-DLrsnGKc.js +0 -64
- package/build/server/chunks/_server.ts-DLrsnGKc.js.map +0 -1
- package/build/server/chunks/_server.ts-DRYh6JJM.js +0 -36
- package/build/server/chunks/_server.ts-DRYh6JJM.js.map +0 -1
- package/build/server/chunks/_server.ts-DUbqsB2y.js +0 -43
- package/build/server/chunks/_server.ts-DUbqsB2y.js.map +0 -1
- package/build/server/chunks/_server.ts-DVRwJs1D.js +0 -89
- package/build/server/chunks/_server.ts-DVRwJs1D.js.map +0 -1
- package/build/server/chunks/_server.ts-DYZ1SnMq.js +0 -44
- package/build/server/chunks/_server.ts-DYZ1SnMq.js.map +0 -1
- package/build/server/chunks/_server.ts-DdpgDdUI.js +0 -59
- package/build/server/chunks/_server.ts-DdpgDdUI.js.map +0 -1
- package/build/server/chunks/_server.ts-DhVR_dEn.js +0 -67
- package/build/server/chunks/_server.ts-DhVR_dEn.js.map +0 -1
- package/build/server/chunks/_server.ts-DorWUEnZ.js +0 -762
- package/build/server/chunks/_server.ts-DorWUEnZ.js.map +0 -1
- package/build/server/chunks/_server.ts-DptdgCp1.js +0 -92
- package/build/server/chunks/_server.ts-DptdgCp1.js.map +0 -1
- package/build/server/chunks/_server.ts-DyFhMY-d.js +0 -84
- package/build/server/chunks/_server.ts-DyFhMY-d.js.map +0 -1
- package/build/server/chunks/_server.ts-FBHhAciM.js +0 -149
- package/build/server/chunks/_server.ts-FBHhAciM.js.map +0 -1
- package/build/server/chunks/_server.ts-H0_rl9HF.js +0 -66
- package/build/server/chunks/_server.ts-H0_rl9HF.js.map +0 -1
- package/build/server/chunks/_server.ts-MGCXhBlP.js +0 -52
- package/build/server/chunks/_server.ts-MGCXhBlP.js.map +0 -1
- package/build/server/chunks/_server.ts-OXR06_zO.js +0 -167
- package/build/server/chunks/_server.ts-OXR06_zO.js.map +0 -1
- package/build/server/chunks/_server.ts-QbGAW-It.js +0 -58
- package/build/server/chunks/_server.ts-QbGAW-It.js.map +0 -1
- package/build/server/chunks/_server.ts-TAvt1Rlb.js +0 -57
- package/build/server/chunks/_server.ts-TAvt1Rlb.js.map +0 -1
- package/build/server/chunks/_server.ts-VXMfJF_F.js +0 -62
- package/build/server/chunks/_server.ts-VXMfJF_F.js.map +0 -1
- package/build/server/chunks/_server.ts-XiInWDAF.js +0 -82
- package/build/server/chunks/_server.ts-XiInWDAF.js.map +0 -1
- package/build/server/chunks/_server.ts-d08IyVdj.js +0 -54
- package/build/server/chunks/_server.ts-d08IyVdj.js.map +0 -1
- package/build/server/chunks/_server.ts-dtw_InfP.js +0 -36
- package/build/server/chunks/_server.ts-dtw_InfP.js.map +0 -1
- package/build/server/chunks/_server.ts-eTP3NGlu.js +0 -49
- package/build/server/chunks/_server.ts-eTP3NGlu.js.map +0 -1
- package/build/server/chunks/_server.ts-fm-L_1WH.js +0 -56
- package/build/server/chunks/_server.ts-fm-L_1WH.js.map +0 -1
- package/build/server/chunks/_server.ts-g5H0gdQB.js +0 -70
- package/build/server/chunks/_server.ts-g5H0gdQB.js.map +0 -1
- package/build/server/chunks/_server.ts-gBvSTaRH.js +0 -78
- package/build/server/chunks/_server.ts-gBvSTaRH.js.map +0 -1
- package/build/server/chunks/_server.ts-lMB9A2Vx.js +0 -92
- package/build/server/chunks/_server.ts-lMB9A2Vx.js.map +0 -1
- package/build/server/chunks/_server.ts-tww34LXr.js +0 -42
- package/build/server/chunks/_server.ts-tww34LXr.js.map +0 -1
- package/build/server/chunks/_server.ts-xgg0Rj1C.js +0 -129
- package/build/server/chunks/_server.ts-xgg0Rj1C.js.map +0 -1
- package/build/server/chunks/_server.ts-yO3j4YDH.js +0 -169
- package/build/server/chunks/_server.ts-yO3j4YDH.js.map +0 -1
- package/build/server/chunks/addon-helpers-DnZ1IPC7.js +0 -51
- package/build/server/chunks/addon-helpers-DnZ1IPC7.js.map +0 -1
- package/build/server/chunks/akm-BVM3F-FY.js +0 -151
- package/build/server/chunks/akm-BVM3F-FY.js.map +0 -1
- package/build/server/chunks/catalog-B_9Qf_Tj.js +0 -217
- package/build/server/chunks/catalog-B_9Qf_Tj.js.map +0 -1
- package/build/server/chunks/client-CEfPhREO.js +0 -202
- package/build/server/chunks/client-CEfPhREO.js.map +0 -1
- package/build/server/chunks/config-VJ5wAdKd.js +0 -121
- package/build/server/chunks/config-VJ5wAdKd.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-7rKo0FDm.js +0 -20
- package/build/server/chunks/docker-7rKo0FDm.js.map +0 -1
- package/build/server/chunks/endpoints-DUs5zmwI.js +0 -358
- package/build/server/chunks/endpoints-DUs5zmwI.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-DXUxoirZ.js +0 -18
- package/build/server/chunks/error.svelte-DXUxoirZ.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-GEmeDI6e.js +0 -293
- package/build/server/chunks/helpers-GEmeDI6e.js.map +0 -1
- package/build/server/chunks/hooks.server-CwgeONEs.js +0 -155
- package/build/server/chunks/hooks.server-CwgeONEs.js.map +0 -1
- package/build/server/chunks/http-BzGcbSMh.js +0 -31
- package/build/server/chunks/http-BzGcbSMh.js.map +0 -1
- package/build/server/chunks/internal-CWT3-fy-.js +0 -915
- package/build/server/chunks/internal-CWT3-fy-.js.map +0 -1
- package/build/server/chunks/paths-D8yGDgAD.js +0 -17
- package/build/server/chunks/paths-D8yGDgAD.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-IMj1chTO.js +0 -74
- package/build/server/chunks/session-cookie-IMj1chTO.js.map +0 -1
- package/build/server/chunks/setup-deploy-DhMA_slP.js +0 -75
- package/build/server/chunks/setup-deploy-DhMA_slP.js.map +0 -1
- package/build/server/chunks/src-DBYue8Tb.js +0 -9682
- package/build/server/chunks/src-DBYue8Tb.js.map +0 -1
- package/build/server/chunks/state-Bpt5dC1X.js +0 -24
- package/build/server/chunks/state-Bpt5dC1X.js.map +0 -1
- package/build/server/chunks/state2-D20PkMjF.js +0 -62
- package/build/server/chunks/state2-D20PkMjF.js.map +0 -1
- package/build/server/chunks/theme-state.svelte-DPdcwIRf.js +0 -837
- package/build/server/chunks/theme-state.svelte-DPdcwIRf.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
|
@@ -0,0 +1,715 @@
|
|
|
1
|
+
import { aE as readStackEnv, c as annotateAddonProfileAvailability, a5 as getAddonProfiles, a4 as getAddonProfileSelection, b as addonProfileId, bc as writeVoiceVars, am as listEnabledAddonIds, F as composeStop, n as buildComposeOptions, a_ as setAddonProfileSelection, aZ as setAddonEnabled, a3 as getAddonProfileAvailability, Y as dockerHasNvidiaRuntime, U as detectRootlessDocker, $ as execFileNoThrow, a$ as stackDirFor, e as applyStack } from './src-CS2sSYOR.js';
|
|
2
|
+
import { g as getState } from './state-BRh7vs9j.js';
|
|
3
|
+
import { d as getRequestId, l as requireCapability, r as requireAdmin, k as jsonResponse, e as errorResponse } from './helpers-7BvhniSt.js';
|
|
4
|
+
import { w as withSerialQueue } from './serial-queue-D9FEpYVv.js';
|
|
5
|
+
import { existsSync } from 'node:fs';
|
|
6
|
+
import { join } from 'node:path';
|
|
7
|
+
import { connect } from 'node:net';
|
|
8
|
+
import './provider-constants-1s1k8kbj.js';
|
|
9
|
+
import './chunk-CLZ62Ad-.js';
|
|
10
|
+
import 'node:module';
|
|
11
|
+
import 'node:child_process';
|
|
12
|
+
import 'buffer';
|
|
13
|
+
import 'node:url';
|
|
14
|
+
import 'node:os';
|
|
15
|
+
import 'node:crypto';
|
|
16
|
+
import 'events';
|
|
17
|
+
import 'fs';
|
|
18
|
+
import 'node:events';
|
|
19
|
+
import 'node:stream';
|
|
20
|
+
import 'node:string_decoder';
|
|
21
|
+
import 'path';
|
|
22
|
+
import 'assert';
|
|
23
|
+
import 'zlib';
|
|
24
|
+
import 'node:assert';
|
|
25
|
+
import 'node:fs/promises';
|
|
26
|
+
import './endpoints-CU3ehglV.js';
|
|
27
|
+
import './features-DLGlNjZX.js';
|
|
28
|
+
|
|
29
|
+
//#region src/lib/server/voice-errors.ts
|
|
30
|
+
/**
|
|
31
|
+
* Translate raw docker / compose stderr into operator-actionable copy.
|
|
32
|
+
*
|
|
33
|
+
* Lives in $lib/server so the route can import it without violating
|
|
34
|
+
* SvelteKit's +server.ts export rules (handlers + `_`-prefixed only).
|
|
35
|
+
*
|
|
36
|
+
* Pattern matches are intentionally case-insensitive and tolerant of
|
|
37
|
+
* compose-CLI prefix decoration. Order matters: more specific patterns
|
|
38
|
+
* first.
|
|
39
|
+
*/
|
|
40
|
+
function translateDockerError(stderr) {
|
|
41
|
+
const raw = (stderr ?? "").trim();
|
|
42
|
+
if (!raw) return "Docker reported an unknown error (no stderr).";
|
|
43
|
+
if (/spawn .*docker.*ENOENT|no such file or directory.*docker|docker:\s*command not found/i.test(raw)) return "Docker isn't installed on this host. Install Docker Engine or Docker Desktop, then retry.";
|
|
44
|
+
if (/pull access denied|manifest unknown|repository does not exist|not found: manifest unknown/i.test(raw)) return "The voice image for this profile isn't published yet. Try the CPU profile.";
|
|
45
|
+
if (/failed to resolve reference|dial tcp.*lookup .+docker\.io|i\/o timeout.*registry|connection refused.*registry/i.test(raw)) return "Can't reach Docker Hub. Check your internet connection, corporate firewall, or configure a registry mirror.";
|
|
46
|
+
if (/no space left on device|insufficient.*disk space|ENOSPC|write.*disk full/i.test(raw)) return "Out of disk space. Free space and try again, or run `docker image prune -a` to reclaim unused images.";
|
|
47
|
+
if (/port is already allocated|bind.*address already in use|address already in use|failed to bind host port/i.test(raw)) return "Port 8880 is already in use on this host. Free it or change the host port (set OP_VOICE_PORT_HOST).";
|
|
48
|
+
if (/unknown[^\n]*runtime[^\n]*nvidia|runtime\s+"nvidia"\s+not\s+found|nvidia.*runtime.*not[^a-z]+(found|registered)/i.test(raw)) return "The NVIDIA Docker runtime isn't registered on this machine. Try the CPU profile, or install nvidia-container-toolkit.";
|
|
49
|
+
if (/invoking the NVIDIA Container Runtime Hook/i.test(raw)) return "Docker is in CDI mode but no CDI spec is registered. Try the CPU profile.";
|
|
50
|
+
return raw.length > 300 ? `${raw.slice(0, 297)}…` : raw;
|
|
51
|
+
}
|
|
52
|
+
//#endregion
|
|
53
|
+
//#region src/lib/server/voice/bring-up.ts
|
|
54
|
+
/**
|
|
55
|
+
* Voice addon bring-up engine — the Docker/compose infrastructure behind
|
|
56
|
+
* PUT /admin/voice. Extracted from the route so the HTTP handler stays a
|
|
57
|
+
* thin request-validation + delegation layer (mirrors the
|
|
58
|
+
* lib/server/endpoints.ts ↔ admin/endpoints/+server.ts split).
|
|
59
|
+
*
|
|
60
|
+
* Responsibilities:
|
|
61
|
+
* - Docker image inspection + resolution (dockerImagePresent / resolveServiceImage)
|
|
62
|
+
* - UI-local host probes (TCP port, container health) — the rootless /
|
|
63
|
+
* nvidia-runtime host-fact probes live in lib (control-plane/voice-host-probes.ts)
|
|
64
|
+
* beside hardware-detect.ts, since they inspect the host, not addon/UI state.
|
|
65
|
+
* - Fallback-overlay SELECTION only: voice.compose.cdi.yml and
|
|
66
|
+
* voice.compose.rootless.yml ship as static files in the skeleton's
|
|
67
|
+
* managed system/stack/ tree (packages/skeleton/system/stack/) — nothing
|
|
68
|
+
* here generates compose YAML.
|
|
69
|
+
* - The in-memory background-job registry (activeJobs)
|
|
70
|
+
* - The engageVoiceAddon orchestration that the route delegates to; the
|
|
71
|
+
* actual compose-up + health-wait lifecycle (runBringUp) is a thin
|
|
72
|
+
* shim over `@openpalm/lib`'s single `applyStack` driver (plan 2.2) —
|
|
73
|
+
* this file keeps only job registry + progress-step rendering, plus the
|
|
74
|
+
* "warming" re-probe and voice-specific error-copy translation that
|
|
75
|
+
* applyStack's generic result doesn't carry.
|
|
76
|
+
*
|
|
77
|
+
* Everything here is server-only (uses node:child_process / node:net /
|
|
78
|
+
* node:fs) and returns plain data — the route maps the results to HTTP
|
|
79
|
+
* responses.
|
|
80
|
+
*/
|
|
81
|
+
var VOICE_ADDON = "voice";
|
|
82
|
+
var VOICE_PROBE_TIMEOUT_MS = 18e4;
|
|
83
|
+
var PORT_PROBE_TIMEOUT_MS = 750;
|
|
84
|
+
var JOB_RETAIN_MS = 5 * 6e4;
|
|
85
|
+
var activeJobs = /* @__PURE__ */ new Map();
|
|
86
|
+
function setJob(addon, patch) {
|
|
87
|
+
const existing = activeJobs.get(addon);
|
|
88
|
+
const next = existing ? {
|
|
89
|
+
...existing,
|
|
90
|
+
...patch
|
|
91
|
+
} : {
|
|
92
|
+
state: "pulling",
|
|
93
|
+
steps: [],
|
|
94
|
+
startedAt: Date.now(),
|
|
95
|
+
...patch
|
|
96
|
+
};
|
|
97
|
+
activeJobs.set(addon, next);
|
|
98
|
+
return next;
|
|
99
|
+
}
|
|
100
|
+
function getActiveJob(addon) {
|
|
101
|
+
const job = activeJobs.get(addon);
|
|
102
|
+
if (!job) return void 0;
|
|
103
|
+
if (Date.now() - (job.finishedAt ?? job.startedAt) > JOB_RETAIN_MS) {
|
|
104
|
+
activeJobs.delete(addon);
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
return job;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Pick the best profile for this host. Prefers the first available GPU
|
|
111
|
+
* profile (anything that isn't the canonical CPU profile) so operators with NVIDIA/AMD hardware
|
|
112
|
+
* get the accelerated variant auto-selected. Falls back to the labelled
|
|
113
|
+
* default, then first available, then first profile.
|
|
114
|
+
*/
|
|
115
|
+
function resolveDefaultProfile(profiles) {
|
|
116
|
+
if (profiles.length === 0) return null;
|
|
117
|
+
const availableGpu = profiles.find((p) => p.id !== addonProfileId("voice", "cpu") && p.available !== false);
|
|
118
|
+
if (availableGpu) return availableGpu.id;
|
|
119
|
+
const labelledDefault = profiles.find((p) => p.default);
|
|
120
|
+
if (labelledDefault && labelledDefault.available !== false) return labelledDefault.id;
|
|
121
|
+
const firstAvailable = profiles.find((p) => p.available !== false);
|
|
122
|
+
if (firstAvailable) return firstAvailable.id;
|
|
123
|
+
return profiles[0].id;
|
|
124
|
+
}
|
|
125
|
+
function voiceHostPort() {
|
|
126
|
+
const raw = process.env.OP_VOICE_PORT_HOST?.trim();
|
|
127
|
+
const n = raw ? Number(raw) : NaN;
|
|
128
|
+
return Number.isFinite(n) && n > 0 ? n : 8880;
|
|
129
|
+
}
|
|
130
|
+
function openpalmVoiceBaseURL() {
|
|
131
|
+
return `http://127.0.0.1:${voiceHostPort()}`;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* True when the local docker daemon already has the named image cached.
|
|
135
|
+
* `docker image inspect` exits 0 only when the image is present locally.
|
|
136
|
+
*/
|
|
137
|
+
async function dockerImagePresent(imageRef) {
|
|
138
|
+
if (!imageRef) return true;
|
|
139
|
+
return (await execFileNoThrow("docker", [
|
|
140
|
+
"image",
|
|
141
|
+
"inspect",
|
|
142
|
+
imageRef
|
|
143
|
+
], 5e3)).ok;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Heuristic: image tags that include `-cu121` / `-rocm6` / `-cpu` are the
|
|
147
|
+
* multi-GB voice images. Show the "this may take a few minutes" toast for
|
|
148
|
+
* first pulls so the operator knows the upcoming compose-up isn't stuck.
|
|
149
|
+
*/
|
|
150
|
+
function isLargeImageTag(imageRef) {
|
|
151
|
+
return /(-cu\d+|-rocm\d+|-cpu)(\s|$|@|\b)/i.test(imageRef);
|
|
152
|
+
}
|
|
153
|
+
function resolveProjectName() {
|
|
154
|
+
return process.env.OP_PROJECT_NAME?.trim() || process.env.COMPOSE_PROJECT_NAME?.trim() || "openpalm";
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Read the resolved image for a service from the merged compose config.
|
|
158
|
+
* Best-effort — returns "" on any failure so callers can skip the pre-pull
|
|
159
|
+
* check rather than blocking save.
|
|
160
|
+
*/
|
|
161
|
+
async function resolveServiceImage(composeFiles, service) {
|
|
162
|
+
const args = ["compose"];
|
|
163
|
+
for (const f of composeFiles) args.push("-f", f);
|
|
164
|
+
args.push("--project-name", resolveProjectName(), "config", "--format", "json");
|
|
165
|
+
const res = await execFileNoThrow("docker", args, 15e3);
|
|
166
|
+
if (!res.ok) return "";
|
|
167
|
+
try {
|
|
168
|
+
return JSON.parse(res.stdout).services?.[service]?.image ?? "";
|
|
169
|
+
} catch {
|
|
170
|
+
return "";
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Probe a TCP port on 127.0.0.1. Resolves true when the connect succeeds
|
|
175
|
+
* within PORT_PROBE_TIMEOUT_MS — meaning something is already listening.
|
|
176
|
+
*/
|
|
177
|
+
function isPortListening(port) {
|
|
178
|
+
return new Promise((resolve) => {
|
|
179
|
+
const socket = connect({
|
|
180
|
+
host: "127.0.0.1",
|
|
181
|
+
port
|
|
182
|
+
});
|
|
183
|
+
let done = false;
|
|
184
|
+
const finish = (listening) => {
|
|
185
|
+
if (done) return;
|
|
186
|
+
done = true;
|
|
187
|
+
try {
|
|
188
|
+
socket.destroy();
|
|
189
|
+
} catch {}
|
|
190
|
+
resolve(listening);
|
|
191
|
+
};
|
|
192
|
+
socket.setTimeout(PORT_PROBE_TIMEOUT_MS, () => finish(false));
|
|
193
|
+
socket.once("connect", () => finish(true));
|
|
194
|
+
socket.once("error", () => finish(false));
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* True when a docker container whose name matches openpalm-voice* is
|
|
199
|
+
* already running and presumably owns the host port. Used by the port
|
|
200
|
+
* pre-flight to avoid false positives when our own voice container is
|
|
201
|
+
* the listener.
|
|
202
|
+
*/
|
|
203
|
+
async function ourVoiceContainerRunning() {
|
|
204
|
+
const res = await execFileNoThrow("docker", [
|
|
205
|
+
"ps",
|
|
206
|
+
"--filter",
|
|
207
|
+
"name=openpalm-voice",
|
|
208
|
+
"--format",
|
|
209
|
+
"{{.Names}}"
|
|
210
|
+
], 5e3);
|
|
211
|
+
if (!res.ok) return false;
|
|
212
|
+
return res.stdout.trim().length > 0;
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Read the Docker healthcheck state of a container.
|
|
216
|
+
* Returns "starting" while compose's start_period grace window is in
|
|
217
|
+
* effect; "healthy" / "unhealthy" / "none" / "" otherwise.
|
|
218
|
+
*/
|
|
219
|
+
async function readContainerHealthStatus(containerNamePrefix) {
|
|
220
|
+
const name = (await execFileNoThrow("docker", [
|
|
221
|
+
"ps",
|
|
222
|
+
"--filter",
|
|
223
|
+
`name=${containerNamePrefix}`,
|
|
224
|
+
"--format",
|
|
225
|
+
"{{.Names}}"
|
|
226
|
+
], 5e3)).stdout.split("\n").map((s) => s.trim()).find(Boolean);
|
|
227
|
+
if (!name) return "";
|
|
228
|
+
return (await execFileNoThrow("docker", [
|
|
229
|
+
"inspect",
|
|
230
|
+
name,
|
|
231
|
+
"--format",
|
|
232
|
+
"{{if .State.Health}}{{.State.Health.Status}}{{else}}none{{end}}"
|
|
233
|
+
], 5e3)).stdout.trim();
|
|
234
|
+
}
|
|
235
|
+
/** Path of the static CDI overlay, or null when the managed tree isn't seeded yet. */
|
|
236
|
+
function voiceCdiOverlayPath(homeDir) {
|
|
237
|
+
const overlayPath = join(stackDirFor(homeDir), "voice.compose.cdi.yml");
|
|
238
|
+
return existsSync(overlayPath) ? overlayPath : null;
|
|
239
|
+
}
|
|
240
|
+
/** Path of the static rootless overlay, or null when the managed tree isn't seeded yet. */
|
|
241
|
+
function voiceRootlessOverlayPath(homeDir) {
|
|
242
|
+
const overlayPath = join(stackDirFor(homeDir), "voice.compose.rootless.yml");
|
|
243
|
+
return existsSync(overlayPath) ? overlayPath : null;
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Stops services from OTHER profiles, then routes the actual compose-up +
|
|
247
|
+
* health-wait through `@openpalm/lib`'s single {@link applyStack} driver
|
|
248
|
+
* (plan 2.2) — this function no longer runs its own composeUp or /health
|
|
249
|
+
* poll. `applyStack`'s health-wait reads the SAME docker HEALTHCHECK every
|
|
250
|
+
* voice compose service already declares (`curl .../health` inside the
|
|
251
|
+
* container, `start_period: 180s`), so it observes exactly what the removed
|
|
252
|
+
* manual HTTP poll observed, just via `docker inspect` instead of a
|
|
253
|
+
* host-side fetch loop.
|
|
254
|
+
*
|
|
255
|
+
* Returns the terminal state. Pushed `steps` get mutated in place so the
|
|
256
|
+
* caller (sync or background) can read progress as it happens.
|
|
257
|
+
*/
|
|
258
|
+
async function runBringUp(input) {
|
|
259
|
+
const { state, services, activeProfile, extraFiles, availableProfiles, steps } = input;
|
|
260
|
+
let composeOk;
|
|
261
|
+
let composeErr;
|
|
262
|
+
let healthy = false;
|
|
263
|
+
try {
|
|
264
|
+
const otherProfileServices = availableProfiles.filter((p) => p.id !== activeProfile).flatMap((p) => p.services).filter((svc) => !services.includes(svc));
|
|
265
|
+
if (otherProfileServices.length > 0) try {
|
|
266
|
+
await composeStop(otherProfileServices, buildComposeOptions(state));
|
|
267
|
+
} catch (e) {
|
|
268
|
+
console.warn("[voice] composeStop other profiles failed:", e);
|
|
269
|
+
}
|
|
270
|
+
const baseOpts = buildComposeOptions(state);
|
|
271
|
+
const result = await applyStack({
|
|
272
|
+
kind: "services",
|
|
273
|
+
services
|
|
274
|
+
}, {
|
|
275
|
+
files: [...baseOpts.files, ...extraFiles],
|
|
276
|
+
envFiles: baseOpts.envFiles,
|
|
277
|
+
profiles: activeProfile ? [activeProfile] : baseOpts.profiles
|
|
278
|
+
}, void 0, { healthTimeoutMs: VOICE_PROBE_TIMEOUT_MS });
|
|
279
|
+
if (result.upFailed) {
|
|
280
|
+
composeOk = false;
|
|
281
|
+
composeErr = translateDockerError(result.rawStderr || result.error || "compose up failed");
|
|
282
|
+
} else {
|
|
283
|
+
composeOk = true;
|
|
284
|
+
healthy = result.ok;
|
|
285
|
+
}
|
|
286
|
+
} catch (e) {
|
|
287
|
+
composeOk = false;
|
|
288
|
+
composeErr = translateDockerError(e instanceof Error ? e.message : String(e));
|
|
289
|
+
}
|
|
290
|
+
steps.push({
|
|
291
|
+
step: "compose-up",
|
|
292
|
+
ok: composeOk,
|
|
293
|
+
...composeErr ? { detail: composeErr.slice(0, 500) } : {}
|
|
294
|
+
});
|
|
295
|
+
if (!composeOk) return {
|
|
296
|
+
composeOk,
|
|
297
|
+
composeErr,
|
|
298
|
+
healthy: false,
|
|
299
|
+
warming: false,
|
|
300
|
+
steps
|
|
301
|
+
};
|
|
302
|
+
let warming = false;
|
|
303
|
+
if (!healthy) try {
|
|
304
|
+
if (await readContainerHealthStatus("openpalm-voice") === "starting") warming = true;
|
|
305
|
+
} catch {}
|
|
306
|
+
steps.push({
|
|
307
|
+
step: "healthy",
|
|
308
|
+
ok: healthy || warming,
|
|
309
|
+
...healthy ? {} : warming ? { detail: "still warming up — refresh in a moment" } : { detail: `did not become healthy within ${VOICE_PROBE_TIMEOUT_MS / 1e3}s` }
|
|
310
|
+
});
|
|
311
|
+
return {
|
|
312
|
+
composeOk,
|
|
313
|
+
healthy,
|
|
314
|
+
warming,
|
|
315
|
+
steps
|
|
316
|
+
};
|
|
317
|
+
}
|
|
318
|
+
/**
|
|
319
|
+
* Background variant: runs runBringUp and persists state transitions
|
|
320
|
+
* into the activeJobs map. Returns nothing — the UI polls GET
|
|
321
|
+
* /admin/voice to observe completion.
|
|
322
|
+
*/
|
|
323
|
+
async function runBringUpJob(input) {
|
|
324
|
+
const steps = [...input.baseSteps];
|
|
325
|
+
try {
|
|
326
|
+
setJob(VOICE_ADDON, {
|
|
327
|
+
state: "starting",
|
|
328
|
+
steps
|
|
329
|
+
});
|
|
330
|
+
const outcome = await runBringUp({
|
|
331
|
+
...input,
|
|
332
|
+
steps
|
|
333
|
+
});
|
|
334
|
+
if (!outcome.composeOk) {
|
|
335
|
+
setJob(VOICE_ADDON, {
|
|
336
|
+
state: "error",
|
|
337
|
+
steps: outcome.steps,
|
|
338
|
+
error: `Voice addon failed to start: ${outcome.composeErr ?? "unknown error"}`,
|
|
339
|
+
finishedAt: Date.now()
|
|
340
|
+
});
|
|
341
|
+
return;
|
|
342
|
+
}
|
|
343
|
+
setJob(VOICE_ADDON, {
|
|
344
|
+
state: outcome.healthy ? "healthy" : outcome.warming ? "starting" : "error",
|
|
345
|
+
steps: outcome.steps,
|
|
346
|
+
...outcome.healthy || outcome.warming ? { error: void 0 } : { error: "Voice addon is starting but did not become healthy in time." },
|
|
347
|
+
finishedAt: Date.now()
|
|
348
|
+
});
|
|
349
|
+
} catch (e) {
|
|
350
|
+
setJob(VOICE_ADDON, {
|
|
351
|
+
state: "error",
|
|
352
|
+
steps,
|
|
353
|
+
error: e instanceof Error ? e.message : String(e),
|
|
354
|
+
finishedAt: Date.now()
|
|
355
|
+
});
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
/**
|
|
359
|
+
* The full PUT /admin/voice bring-up lifecycle after request validation:
|
|
360
|
+
* auto-stop when disengaging, else resolve profile → enable addon →
|
|
361
|
+
* port pre-flight → image inspect → host fallback overlays → background
|
|
362
|
+
* short-circuit or synchronous compose-up + /health poll.
|
|
363
|
+
*/
|
|
364
|
+
async function engageVoiceAddon(input) {
|
|
365
|
+
const { state, wantsVoiceAddon, requestedProfile } = input;
|
|
366
|
+
if (!wantsVoiceAddon) {
|
|
367
|
+
if (listEnabledAddonIds(state.homeDir).includes("voice")) try {
|
|
368
|
+
const voiceServiceNames = getAddonProfiles(state.homeDir, VOICE_ADDON).flatMap((p) => p.services);
|
|
369
|
+
const unique = Array.from(new Set(voiceServiceNames));
|
|
370
|
+
if (unique.length > 0) await composeStop(unique, buildComposeOptions(state));
|
|
371
|
+
} catch (e) {
|
|
372
|
+
console.warn("[voice] composeStop on disengage failed:", e);
|
|
373
|
+
}
|
|
374
|
+
return { status: "disengaged" };
|
|
375
|
+
}
|
|
376
|
+
const availableProfiles = await annotateAddonProfileAvailability(getAddonProfiles(state.homeDir, VOICE_ADDON));
|
|
377
|
+
let activeProfile = null;
|
|
378
|
+
if (requestedProfile) {
|
|
379
|
+
if (!availableProfiles.some((p) => p.id === requestedProfile)) return {
|
|
380
|
+
status: "invalid_profile",
|
|
381
|
+
message: `Unknown voice profile "${requestedProfile}". Available: ${availableProfiles.map((p) => p.id).join(", ") || "(none)"}`
|
|
382
|
+
};
|
|
383
|
+
activeProfile = requestedProfile;
|
|
384
|
+
setAddonProfileSelection(state.homeDir, VOICE_ADDON, activeProfile);
|
|
385
|
+
} else activeProfile = getAddonProfileSelection(state.homeDir, "voice") ?? resolveDefaultProfile(availableProfiles);
|
|
386
|
+
const wasAlreadyEnabled = listEnabledAddonIds(state.homeDir).includes(VOICE_ADDON);
|
|
387
|
+
const steps = [];
|
|
388
|
+
if (!wasAlreadyEnabled) try {
|
|
389
|
+
setAddonEnabled(state.homeDir, VOICE_ADDON, true, state);
|
|
390
|
+
steps.push({
|
|
391
|
+
step: "enable",
|
|
392
|
+
ok: true
|
|
393
|
+
});
|
|
394
|
+
} catch (e) {
|
|
395
|
+
const detail = e instanceof Error ? e.message : String(e);
|
|
396
|
+
steps.push({
|
|
397
|
+
step: "enable",
|
|
398
|
+
ok: false,
|
|
399
|
+
detail
|
|
400
|
+
});
|
|
401
|
+
return {
|
|
402
|
+
status: "error",
|
|
403
|
+
wasAlreadyEnabled,
|
|
404
|
+
steps,
|
|
405
|
+
error: `Could not enable voice addon: ${detail}`
|
|
406
|
+
};
|
|
407
|
+
}
|
|
408
|
+
else steps.push({
|
|
409
|
+
step: "enable",
|
|
410
|
+
ok: true,
|
|
411
|
+
detail: "already enabled"
|
|
412
|
+
});
|
|
413
|
+
const hostPort = voiceHostPort();
|
|
414
|
+
const inVitest = !!process.env.VITEST;
|
|
415
|
+
if (inVitest ? false : await isPortListening(hostPort)) {
|
|
416
|
+
if (!await ourVoiceContainerRunning()) {
|
|
417
|
+
const msg = translateDockerError(`Bind for 127.0.0.1:${hostPort} failed: port is already allocated`);
|
|
418
|
+
steps.push({
|
|
419
|
+
step: "port-check",
|
|
420
|
+
ok: false,
|
|
421
|
+
detail: msg
|
|
422
|
+
});
|
|
423
|
+
return {
|
|
424
|
+
status: "error",
|
|
425
|
+
wasAlreadyEnabled,
|
|
426
|
+
steps,
|
|
427
|
+
error: msg
|
|
428
|
+
};
|
|
429
|
+
}
|
|
430
|
+
steps.push({
|
|
431
|
+
step: "port-check",
|
|
432
|
+
ok: true,
|
|
433
|
+
detail: "our container is the listener"
|
|
434
|
+
});
|
|
435
|
+
} else steps.push({
|
|
436
|
+
step: "port-check",
|
|
437
|
+
ok: true
|
|
438
|
+
});
|
|
439
|
+
const profileServices = activeProfile ? availableProfiles.find((p) => p.id === activeProfile)?.services ?? [] : [];
|
|
440
|
+
const services = profileServices.length > 0 ? profileServices : [VOICE_ADDON];
|
|
441
|
+
const composeFilesBase = buildComposeOptions(state).files;
|
|
442
|
+
const primaryService = services[0];
|
|
443
|
+
let backgroundPull = false;
|
|
444
|
+
if (primaryService && !inVitest) {
|
|
445
|
+
const imageRef = await resolveServiceImage(composeFilesBase, primaryService);
|
|
446
|
+
if (imageRef && isLargeImageTag(imageRef)) {
|
|
447
|
+
if (!await dockerImagePresent(imageRef)) {
|
|
448
|
+
backgroundPull = true;
|
|
449
|
+
steps.push({
|
|
450
|
+
step: "pulling",
|
|
451
|
+
ok: true,
|
|
452
|
+
detail: "first-time download — several minutes for several GB"
|
|
453
|
+
});
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
const extraFiles = [];
|
|
458
|
+
const cdiFallbackSupported = process.platform !== "win32";
|
|
459
|
+
if (activeProfile === addonProfileId("voice", "cuda") && !inVitest && cdiFallbackSupported) {
|
|
460
|
+
const runtimeMissing = (await getAddonProfileAvailability({ id: addonProfileId("voice", "cuda") })).available === false || !await dockerHasNvidiaRuntime();
|
|
461
|
+
const cdiSpecPresent = existsSync("/etc/cdi/nvidia.yaml");
|
|
462
|
+
if (runtimeMissing && cdiSpecPresent) {
|
|
463
|
+
const overlay = voiceCdiOverlayPath(state.homeDir);
|
|
464
|
+
if (overlay) {
|
|
465
|
+
extraFiles.push(overlay);
|
|
466
|
+
steps.push({
|
|
467
|
+
step: "cdi-fallback",
|
|
468
|
+
ok: true,
|
|
469
|
+
detail: "using CDI device reservation"
|
|
470
|
+
});
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
if (!inVitest) try {
|
|
475
|
+
if (await detectRootlessDocker()) {
|
|
476
|
+
const overlay = voiceRootlessOverlayPath(state.homeDir);
|
|
477
|
+
if (overlay) {
|
|
478
|
+
extraFiles.push(overlay);
|
|
479
|
+
steps.push({
|
|
480
|
+
step: "rootless-fallback",
|
|
481
|
+
ok: true,
|
|
482
|
+
detail: "dropping user: directive for rootless Docker"
|
|
483
|
+
});
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
} catch (e) {
|
|
487
|
+
console.warn("[voice] rootless detection failed:", e);
|
|
488
|
+
}
|
|
489
|
+
if (backgroundPull) {
|
|
490
|
+
setJob(VOICE_ADDON, {
|
|
491
|
+
state: "pulling",
|
|
492
|
+
steps: [...steps],
|
|
493
|
+
startedAt: Date.now(),
|
|
494
|
+
profile: activeProfile ?? void 0,
|
|
495
|
+
finishedAt: void 0,
|
|
496
|
+
error: void 0
|
|
497
|
+
});
|
|
498
|
+
runBringUpJob({
|
|
499
|
+
state,
|
|
500
|
+
services,
|
|
501
|
+
activeProfile,
|
|
502
|
+
extraFiles,
|
|
503
|
+
availableProfiles,
|
|
504
|
+
baseSteps: [...steps]
|
|
505
|
+
});
|
|
506
|
+
return {
|
|
507
|
+
status: "background",
|
|
508
|
+
wasAlreadyEnabled,
|
|
509
|
+
steps,
|
|
510
|
+
message: "Voice image is downloading in the background (~2–8 GB). Poll GET /admin/voice for progress; UI auto-refreshes."
|
|
511
|
+
};
|
|
512
|
+
}
|
|
513
|
+
const outcome = await runBringUp({
|
|
514
|
+
state,
|
|
515
|
+
services,
|
|
516
|
+
activeProfile,
|
|
517
|
+
extraFiles,
|
|
518
|
+
availableProfiles,
|
|
519
|
+
steps
|
|
520
|
+
});
|
|
521
|
+
if (!outcome.composeOk) return {
|
|
522
|
+
status: "error",
|
|
523
|
+
wasAlreadyEnabled,
|
|
524
|
+
steps: outcome.steps,
|
|
525
|
+
error: `Voice addon failed to start: ${outcome.composeErr ?? "unknown error"}`
|
|
526
|
+
};
|
|
527
|
+
return {
|
|
528
|
+
status: "final",
|
|
529
|
+
wasAlreadyEnabled,
|
|
530
|
+
steps: outcome.steps,
|
|
531
|
+
healthy: outcome.healthy,
|
|
532
|
+
warming: outcome.warming
|
|
533
|
+
};
|
|
534
|
+
}
|
|
535
|
+
//#endregion
|
|
536
|
+
//#region src/routes/api/host/voice/+server.ts
|
|
537
|
+
var REACHABILITY_TIMEOUT_MS = 1500;
|
|
538
|
+
async function probeReachable(baseURL) {
|
|
539
|
+
if (!baseURL) return false;
|
|
540
|
+
const url = `${baseURL.replace(/\/+$/, "")}/v1/models`;
|
|
541
|
+
try {
|
|
542
|
+
return (await fetch(url, {
|
|
543
|
+
method: "GET",
|
|
544
|
+
signal: AbortSignal.timeout(REACHABILITY_TIMEOUT_MS)
|
|
545
|
+
})).status < 500;
|
|
546
|
+
} catch {
|
|
547
|
+
return false;
|
|
548
|
+
}
|
|
549
|
+
}
|
|
550
|
+
var GET = async (event) => {
|
|
551
|
+
const requestId = getRequestId(event);
|
|
552
|
+
const capabilityError = requireCapability(event, "host:stack:read", requestId);
|
|
553
|
+
if (capabilityError) return capabilityError;
|
|
554
|
+
const authError = requireAdmin(event, requestId);
|
|
555
|
+
if (authError) return authError;
|
|
556
|
+
const state = getState();
|
|
557
|
+
const env = readStackEnv(state.homeDir);
|
|
558
|
+
const ttsBaseURL = env.OP_TTS_BASE_URL ?? "";
|
|
559
|
+
const sttBaseURL = env.OP_STT_BASE_URL ?? "";
|
|
560
|
+
const profiles = await annotateAddonProfileAvailability(getAddonProfiles(state.homeDir, VOICE_ADDON));
|
|
561
|
+
const selectedProfile = getAddonProfileSelection(state.homeDir, "voice") ?? resolveDefaultProfile(profiles);
|
|
562
|
+
const [sttReachable, ttsReachable] = await Promise.all([probeReachable(sttBaseURL), probeReachable(ttsBaseURL)]);
|
|
563
|
+
return jsonResponse(200, {
|
|
564
|
+
tts: {
|
|
565
|
+
enabled: true,
|
|
566
|
+
engine: env.OP_TTS_ENGINE ?? "",
|
|
567
|
+
provider: env.OP_TTS_PROVIDER ?? "",
|
|
568
|
+
baseURL: ttsBaseURL,
|
|
569
|
+
model: env.OP_TTS_MODEL ?? "",
|
|
570
|
+
voice: env.OP_TTS_VOICE ?? ""
|
|
571
|
+
},
|
|
572
|
+
stt: {
|
|
573
|
+
enabled: true,
|
|
574
|
+
engine: env.OP_STT_ENGINE ?? "",
|
|
575
|
+
provider: env.OP_STT_PROVIDER ?? "",
|
|
576
|
+
baseURL: sttBaseURL,
|
|
577
|
+
model: env.OP_STT_MODEL ?? "",
|
|
578
|
+
language: env.OP_STT_LANGUAGE ?? ""
|
|
579
|
+
},
|
|
580
|
+
availability: {
|
|
581
|
+
stt: {
|
|
582
|
+
remoteConfigured: Boolean(sttBaseURL),
|
|
583
|
+
remoteReachable: sttReachable
|
|
584
|
+
},
|
|
585
|
+
tts: {
|
|
586
|
+
remoteConfigured: Boolean(ttsBaseURL),
|
|
587
|
+
remoteReachable: ttsReachable
|
|
588
|
+
}
|
|
589
|
+
},
|
|
590
|
+
addon: {
|
|
591
|
+
profiles,
|
|
592
|
+
selectedProfile,
|
|
593
|
+
...getActiveJob("voice") ? { activeJob: getActiveJob(VOICE_ADDON) } : {}
|
|
594
|
+
}
|
|
595
|
+
}, requestId);
|
|
596
|
+
};
|
|
597
|
+
function readSection(raw, kind) {
|
|
598
|
+
if (!raw || typeof raw !== "object") return null;
|
|
599
|
+
const section = {
|
|
600
|
+
enabled: raw.enabled !== false,
|
|
601
|
+
engine: typeof raw.engine === "string" ? raw.engine : void 0,
|
|
602
|
+
provider: typeof raw.provider === "string" ? raw.provider : void 0,
|
|
603
|
+
baseURL: typeof raw.baseURL === "string" ? raw.baseURL : void 0,
|
|
604
|
+
model: typeof raw.model === "string" ? raw.model : void 0
|
|
605
|
+
};
|
|
606
|
+
if (kind === "tts" && typeof raw.voice === "string") section.voice = raw.voice;
|
|
607
|
+
if (kind === "stt" && typeof raw.language === "string") section.language = raw.language;
|
|
608
|
+
return section;
|
|
609
|
+
}
|
|
610
|
+
var OPENPALM_VOICE_TTS_MODEL = "kokoro";
|
|
611
|
+
var OPENPALM_VOICE_STT_MODEL = "whisper-1";
|
|
612
|
+
var OPENPALM_VOICE_DEFAULT_VOICE = "bf_isabella";
|
|
613
|
+
/**
|
|
614
|
+
* For `engine === 'openpalm-voice'`, fill in baseURL/model with the addon's
|
|
615
|
+
* preset values when the user didn't provide them. This is the auto-config
|
|
616
|
+
* that makes "select OpenPalm Voice → Save" Just Work as long as the addon
|
|
617
|
+
* is enabled. The user can still override (e.g. point at a different
|
|
618
|
+
* voice host on the LAN).
|
|
619
|
+
*/
|
|
620
|
+
function applyOpenPalmVoicePreset(section, kind) {
|
|
621
|
+
if (section.engine !== "openpalm-voice") return;
|
|
622
|
+
if (!section.baseURL?.trim()) section.baseURL = openpalmVoiceBaseURL();
|
|
623
|
+
if (!section.model?.trim()) section.model = kind === "tts" ? OPENPALM_VOICE_TTS_MODEL : OPENPALM_VOICE_STT_MODEL;
|
|
624
|
+
if (kind === "tts" && !section.voice?.trim()) section.voice = OPENPALM_VOICE_DEFAULT_VOICE;
|
|
625
|
+
}
|
|
626
|
+
function validateSection(section, kind) {
|
|
627
|
+
if (!section?.engine) return null;
|
|
628
|
+
if (section.engine === "browser" || section.engine === "browser-stt" || section.engine === "browser-tts") return null;
|
|
629
|
+
if (section.engine.startsWith("skip-")) return null;
|
|
630
|
+
if (!section.baseURL?.trim()) return `Remote ${kind.toUpperCase()} requires an endpoint URL.`;
|
|
631
|
+
return null;
|
|
632
|
+
}
|
|
633
|
+
var PUT = (event) => {
|
|
634
|
+
return withSerialQueue("admin:voice:put", () => handlePut(event));
|
|
635
|
+
};
|
|
636
|
+
async function handlePut(event) {
|
|
637
|
+
const requestId = getRequestId(event);
|
|
638
|
+
const capabilityError = requireCapability(event, "host:stack:write", requestId);
|
|
639
|
+
if (capabilityError) return capabilityError;
|
|
640
|
+
const authError = requireAdmin(event, requestId);
|
|
641
|
+
if (authError) return authError;
|
|
642
|
+
const state = getState();
|
|
643
|
+
let body;
|
|
644
|
+
try {
|
|
645
|
+
body = await event.request.json();
|
|
646
|
+
} catch {
|
|
647
|
+
return errorResponse(400, "Bad Request", "Invalid JSON body", {}, requestId);
|
|
648
|
+
}
|
|
649
|
+
if (!body || typeof body !== "object") return errorResponse(400, "Bad Request", "Body must be an object", {}, requestId);
|
|
650
|
+
const b = body;
|
|
651
|
+
const ttsSection = readSection(b.tts, "tts");
|
|
652
|
+
const sttSection = readSection(b.stt, "stt");
|
|
653
|
+
if (ttsSection) applyOpenPalmVoicePreset(ttsSection, "tts");
|
|
654
|
+
if (sttSection) applyOpenPalmVoicePreset(sttSection, "stt");
|
|
655
|
+
const ttsErr = validateSection(ttsSection, "tts");
|
|
656
|
+
if (ttsErr) return errorResponse(400, "invalid_tts", ttsErr, {}, requestId);
|
|
657
|
+
const sttErr = validateSection(sttSection, "stt");
|
|
658
|
+
if (sttErr) return errorResponse(400, "invalid_stt", sttErr, {}, requestId);
|
|
659
|
+
const config = {};
|
|
660
|
+
if (ttsSection) config.tts = {
|
|
661
|
+
enabled: ttsSection.enabled,
|
|
662
|
+
engine: ttsSection.engine,
|
|
663
|
+
provider: ttsSection.provider,
|
|
664
|
+
baseURL: ttsSection.baseURL,
|
|
665
|
+
model: ttsSection.model,
|
|
666
|
+
voice: ttsSection.voice
|
|
667
|
+
};
|
|
668
|
+
if (sttSection) config.stt = {
|
|
669
|
+
enabled: sttSection.enabled,
|
|
670
|
+
engine: sttSection.engine,
|
|
671
|
+
provider: sttSection.provider,
|
|
672
|
+
baseURL: sttSection.baseURL,
|
|
673
|
+
model: sttSection.model,
|
|
674
|
+
language: sttSection.language
|
|
675
|
+
};
|
|
676
|
+
writeVoiceVars(config, state.homeDir);
|
|
677
|
+
const result = await engageVoiceAddon({
|
|
678
|
+
state,
|
|
679
|
+
wantsVoiceAddon: ttsSection?.engine === "openpalm-voice" || sttSection?.engine === "openpalm-voice",
|
|
680
|
+
requestedProfile: typeof b.profile === "string" ? b.profile.trim() : ""
|
|
681
|
+
});
|
|
682
|
+
switch (result.status) {
|
|
683
|
+
case "disengaged": return jsonResponse(200, { ok: true }, requestId);
|
|
684
|
+
case "invalid_profile": return errorResponse(400, "invalid_profile", result.message, {}, requestId);
|
|
685
|
+
case "error": return jsonResponse(502, {
|
|
686
|
+
ok: false,
|
|
687
|
+
voiceAddon: {
|
|
688
|
+
wasAlreadyEnabled: result.wasAlreadyEnabled,
|
|
689
|
+
steps: result.steps,
|
|
690
|
+
error: result.error
|
|
691
|
+
}
|
|
692
|
+
}, requestId);
|
|
693
|
+
case "background": return jsonResponse(202, {
|
|
694
|
+
ok: true,
|
|
695
|
+
voiceAddon: {
|
|
696
|
+
wasAlreadyEnabled: result.wasAlreadyEnabled,
|
|
697
|
+
status: "pulling",
|
|
698
|
+
steps: result.steps,
|
|
699
|
+
message: result.message
|
|
700
|
+
}
|
|
701
|
+
}, requestId);
|
|
702
|
+
case "final": return jsonResponse(result.healthy || result.warming ? 200 : 502, {
|
|
703
|
+
ok: result.healthy || result.warming,
|
|
704
|
+
voiceAddon: {
|
|
705
|
+
wasAlreadyEnabled: result.wasAlreadyEnabled,
|
|
706
|
+
steps: result.steps,
|
|
707
|
+
...result.warming ? { warming: true } : {},
|
|
708
|
+
...result.healthy || result.warming ? {} : { error: "Voice addon is starting but did not become healthy in time." }
|
|
709
|
+
}
|
|
710
|
+
}, requestId);
|
|
711
|
+
}
|
|
712
|
+
}
|
|
713
|
+
|
|
714
|
+
export { GET, PUT };
|
|
715
|
+
//# sourceMappingURL=_server.ts-CYY3W2qh.js.map
|