@openpalm/ui 0.11.0-rc.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +160 -0
- package/build/.openpalm-ui-version +1 -0
- package/build/client/_app/immutable/assets/0.p3iHeEvq.css +1 -0
- package/build/client/_app/immutable/assets/0.p3iHeEvq.css.br +0 -0
- package/build/client/_app/immutable/assets/0.p3iHeEvq.css.gz +0 -0
- package/build/client/_app/immutable/assets/4.BakrtzGF.css +1 -0
- package/build/client/_app/immutable/assets/4.BakrtzGF.css.br +0 -0
- package/build/client/_app/immutable/assets/4.BakrtzGF.css.gz +0 -0
- package/build/client/_app/immutable/assets/5.Cj0Mk9Gn.css +1 -0
- package/build/client/_app/immutable/assets/5.Cj0Mk9Gn.css.br +0 -0
- package/build/client/_app/immutable/assets/5.Cj0Mk9Gn.css.gz +0 -0
- package/build/client/_app/immutable/assets/6.B0Z8tVIH.css +1 -0
- package/build/client/_app/immutable/assets/6.B0Z8tVIH.css.br +1 -0
- package/build/client/_app/immutable/assets/6.B0Z8tVIH.css.gz +0 -0
- package/build/client/_app/immutable/assets/7.Cucah5cY.css +1 -0
- package/build/client/_app/immutable/assets/7.Cucah5cY.css.br +0 -0
- package/build/client/_app/immutable/assets/7.Cucah5cY.css.gz +0 -0
- package/build/client/_app/immutable/assets/8.DjrHy5wu.css +1 -0
- package/build/client/_app/immutable/assets/8.DjrHy5wu.css.br +0 -0
- package/build/client/_app/immutable/assets/8.DjrHy5wu.css.gz +0 -0
- package/build/client/_app/immutable/assets/AuthGate.B8fOC_pJ.css +1 -0
- package/build/client/_app/immutable/assets/AuthGate.B8fOC_pJ.css.br +0 -0
- package/build/client/_app/immutable/assets/AuthGate.B8fOC_pJ.css.gz +0 -0
- package/build/client/_app/immutable/assets/ModeSwitch.RmRIDur-.css +1 -0
- package/build/client/_app/immutable/assets/ModeSwitch.RmRIDur-.css.br +0 -0
- package/build/client/_app/immutable/assets/ModeSwitch.RmRIDur-.css.gz +0 -0
- package/build/client/_app/immutable/assets/VoiceProfileSelector.CM_o2XIa.css +1 -0
- package/build/client/_app/immutable/assets/VoiceProfileSelector.CM_o2XIa.css.br +0 -0
- package/build/client/_app/immutable/assets/VoiceProfileSelector.CM_o2XIa.css.gz +0 -0
- package/build/client/_app/immutable/chunks/BDFsK-cU.js +5 -0
- package/build/client/_app/immutable/chunks/BDFsK-cU.js.br +0 -0
- package/build/client/_app/immutable/chunks/BDFsK-cU.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BOq4Y36A.js +1 -0
- package/build/client/_app/immutable/chunks/BOq4Y36A.js.br +0 -0
- package/build/client/_app/immutable/chunks/BOq4Y36A.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Bdvti_5C.js +1 -0
- package/build/client/_app/immutable/chunks/Bdvti_5C.js.br +0 -0
- package/build/client/_app/immutable/chunks/Bdvti_5C.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BuFlayix.js +1 -0
- package/build/client/_app/immutable/chunks/BuFlayix.js.br +0 -0
- package/build/client/_app/immutable/chunks/BuFlayix.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BwTF6U35.js +3 -0
- package/build/client/_app/immutable/chunks/BwTF6U35.js.br +0 -0
- package/build/client/_app/immutable/chunks/BwTF6U35.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CJkMgfFh.js +1 -0
- package/build/client/_app/immutable/chunks/CJkMgfFh.js.br +0 -0
- package/build/client/_app/immutable/chunks/CJkMgfFh.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DQCVeARi.js +1 -0
- package/build/client/_app/immutable/chunks/DQCVeARi.js.br +0 -0
- package/build/client/_app/immutable/chunks/DQCVeARi.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DpdFx-ph.js +1 -0
- package/build/client/_app/immutable/chunks/DpdFx-ph.js.br +0 -0
- package/build/client/_app/immutable/chunks/DpdFx-ph.js.gz +0 -0
- package/build/client/_app/immutable/chunks/kNaey6uv.js +1 -0
- package/build/client/_app/immutable/chunks/kNaey6uv.js.br +0 -0
- package/build/client/_app/immutable/chunks/kNaey6uv.js.gz +0 -0
- package/build/client/_app/immutable/chunks/os2NZ37U.js +1 -0
- package/build/client/_app/immutable/chunks/os2NZ37U.js.br +1 -0
- package/build/client/_app/immutable/chunks/os2NZ37U.js.gz +0 -0
- package/build/client/_app/immutable/chunks/xihTtKlq.js +1 -0
- package/build/client/_app/immutable/chunks/xihTtKlq.js.br +1 -0
- package/build/client/_app/immutable/chunks/xihTtKlq.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.Coaz9qVz.js +2 -0
- package/build/client/_app/immutable/entry/app.Coaz9qVz.js.br +0 -0
- package/build/client/_app/immutable/entry/app.Coaz9qVz.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.CaHQB6hU.js +1 -0
- package/build/client/_app/immutable/entry/start.CaHQB6hU.js.br +1 -0
- package/build/client/_app/immutable/entry/start.CaHQB6hU.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.BUaVTC13.js +1 -0
- package/build/client/_app/immutable/nodes/0.BUaVTC13.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.BUaVTC13.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.DpM9NN8J.js +1 -0
- package/build/client/_app/immutable/nodes/1.DpM9NN8J.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.DpM9NN8J.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.ojh8oE7F.js +1 -0
- package/build/client/_app/immutable/nodes/2.ojh8oE7F.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.ojh8oE7F.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.DeAC3yVJ.js +1 -0
- package/build/client/_app/immutable/nodes/3.DeAC3yVJ.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.DeAC3yVJ.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.8L-_wsn9.js +18 -0
- package/build/client/_app/immutable/nodes/4.8L-_wsn9.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.8L-_wsn9.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.kb9iVd3S.js +4 -0
- package/build/client/_app/immutable/nodes/5.kb9iVd3S.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.kb9iVd3S.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.DtmDzmki.js +1 -0
- package/build/client/_app/immutable/nodes/6.DtmDzmki.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.DtmDzmki.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.-Pv5Qce0.js +15 -0
- package/build/client/_app/immutable/nodes/7.-Pv5Qce0.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.-Pv5Qce0.js.gz +0 -0
- package/build/client/_app/immutable/nodes/8.Rc3xcFgu.js +2 -0
- package/build/client/_app/immutable/nodes/8.Rc3xcFgu.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.Rc3xcFgu.js.gz +0 -0
- package/build/client/_app/version.json +1 -0
- package/build/client/_app/version.json.br +1 -0
- package/build/client/_app/version.json.gz +0 -0
- package/build/client/banner.png +0 -0
- package/build/client/fu-128.png +0 -0
- package/build/client/fu.png +0 -0
- package/build/client/logo-128.png +0 -0
- package/build/client/logo.png +0 -0
- package/build/client/setup/wizard.css +1639 -0
- package/build/client/setup/wizard.css.br +0 -0
- package/build/client/setup/wizard.css.gz +0 -0
- package/build/client/wizard-128.png +0 -0
- package/build/client/wizard.png +0 -0
- package/build/env.js +94 -0
- package/build/handler.js +1494 -0
- package/build/index.js +345 -0
- package/build/server/chunks/0-TTdZdv8o.js +9 -0
- package/build/server/chunks/0-TTdZdv8o.js.map +1 -0
- package/build/server/chunks/1-XPMbcj69.js +9 -0
- package/build/server/chunks/1-XPMbcj69.js.map +1 -0
- package/build/server/chunks/2-C2y4ydWU.js +9 -0
- package/build/server/chunks/2-C2y4ydWU.js.map +1 -0
- package/build/server/chunks/3-BgeGdVvT.js +23 -0
- package/build/server/chunks/3-BgeGdVvT.js.map +1 -0
- package/build/server/chunks/4-v8u4eatk.js +9 -0
- package/build/server/chunks/4-v8u4eatk.js.map +1 -0
- package/build/server/chunks/5-BkUoZ2K4.js +9 -0
- package/build/server/chunks/5-BkUoZ2K4.js.map +1 -0
- package/build/server/chunks/6-Cep4AGS2.js +9 -0
- package/build/server/chunks/6-Cep4AGS2.js.map +1 -0
- package/build/server/chunks/7-DOEFGynd.js +9 -0
- package/build/server/chunks/7-DOEFGynd.js.map +1 -0
- package/build/server/chunks/8-EJHw3wqt.js +9 -0
- package/build/server/chunks/8-EJHw3wqt.js.map +1 -0
- package/build/server/chunks/AuthGate-UhfWI3rb.js +741 -0
- package/build/server/chunks/AuthGate-UhfWI3rb.js.map +1 -0
- package/build/server/chunks/ModeSwitch-S3I-WINb.js +15 -0
- package/build/server/chunks/ModeSwitch-S3I-WINb.js.map +1 -0
- package/build/server/chunks/_helpers-B_lb4-jB.js +74 -0
- package/build/server/chunks/_helpers-B_lb4-jB.js.map +1 -0
- package/build/server/chunks/_layout.svelte-B93aaRP_.js +11 -0
- package/build/server/chunks/_layout.svelte-B93aaRP_.js.map +1 -0
- package/build/server/chunks/_layout.svelte-CcloHuB_.js +60 -0
- package/build/server/chunks/_layout.svelte-CcloHuB_.js.map +1 -0
- package/build/server/chunks/_page.svelte-9RQ3rYiU.js +69 -0
- package/build/server/chunks/_page.svelte-9RQ3rYiU.js.map +1 -0
- package/build/server/chunks/_page.svelte-BP2EdQl3.js +5 -0
- package/build/server/chunks/_page.svelte-BP2EdQl3.js.map +1 -0
- package/build/server/chunks/_page.svelte-CKARhLvT.js +408 -0
- package/build/server/chunks/_page.svelte-CKARhLvT.js.map +1 -0
- package/build/server/chunks/_page.svelte-CnZsPxgJ.js +5540 -0
- package/build/server/chunks/_page.svelte-CnZsPxgJ.js.map +1 -0
- package/build/server/chunks/_page.svelte-D0gMlmzQ.js +104 -0
- package/build/server/chunks/_page.svelte-D0gMlmzQ.js.map +1 -0
- package/build/server/chunks/_page.svelte-pxsCzB7-.js +106 -0
- package/build/server/chunks/_page.svelte-pxsCzB7-.js.map +1 -0
- package/build/server/chunks/_server.ts-33LuQvHu.js +19 -0
- package/build/server/chunks/_server.ts-33LuQvHu.js.map +1 -0
- package/build/server/chunks/_server.ts-5CjguYY3.js +514 -0
- package/build/server/chunks/_server.ts-5CjguYY3.js.map +1 -0
- package/build/server/chunks/_server.ts-B3tjtq2m.js +64 -0
- package/build/server/chunks/_server.ts-B3tjtq2m.js.map +1 -0
- package/build/server/chunks/_server.ts-B4N5gO26.js +70 -0
- package/build/server/chunks/_server.ts-B4N5gO26.js.map +1 -0
- package/build/server/chunks/_server.ts-B6FENZO7.js +82 -0
- package/build/server/chunks/_server.ts-B6FENZO7.js.map +1 -0
- package/build/server/chunks/_server.ts-B8JtVHLy.js +41 -0
- package/build/server/chunks/_server.ts-B8JtVHLy.js.map +1 -0
- package/build/server/chunks/_server.ts-BR9OrjcE.js +68 -0
- package/build/server/chunks/_server.ts-BR9OrjcE.js.map +1 -0
- package/build/server/chunks/_server.ts-BYVcXj0z.js +107 -0
- package/build/server/chunks/_server.ts-BYVcXj0z.js.map +1 -0
- package/build/server/chunks/_server.ts-BYdXdnje.js +97 -0
- package/build/server/chunks/_server.ts-BYdXdnje.js.map +1 -0
- package/build/server/chunks/_server.ts-BaxRyhZ8.js +44 -0
- package/build/server/chunks/_server.ts-BaxRyhZ8.js.map +1 -0
- package/build/server/chunks/_server.ts-BclZ3UFT.js +41 -0
- package/build/server/chunks/_server.ts-BclZ3UFT.js.map +1 -0
- package/build/server/chunks/_server.ts-Bd_I8GjG.js +60 -0
- package/build/server/chunks/_server.ts-Bd_I8GjG.js.map +1 -0
- package/build/server/chunks/_server.ts-Bdry_CdG.js +33 -0
- package/build/server/chunks/_server.ts-Bdry_CdG.js.map +1 -0
- package/build/server/chunks/_server.ts-Bg8OpPuA.js +65 -0
- package/build/server/chunks/_server.ts-Bg8OpPuA.js.map +1 -0
- package/build/server/chunks/_server.ts-BjrO7pvn.js +73 -0
- package/build/server/chunks/_server.ts-BjrO7pvn.js.map +1 -0
- package/build/server/chunks/_server.ts-BkoJOqrr.js +70 -0
- package/build/server/chunks/_server.ts-BkoJOqrr.js.map +1 -0
- package/build/server/chunks/_server.ts-Bl0YOh50.js +40 -0
- package/build/server/chunks/_server.ts-Bl0YOh50.js.map +1 -0
- package/build/server/chunks/_server.ts-BmZlEy27.js +55 -0
- package/build/server/chunks/_server.ts-BmZlEy27.js.map +1 -0
- package/build/server/chunks/_server.ts-Bq2S1OMq.js +163 -0
- package/build/server/chunks/_server.ts-Bq2S1OMq.js.map +1 -0
- package/build/server/chunks/_server.ts-BwHojI4i.js +59 -0
- package/build/server/chunks/_server.ts-BwHojI4i.js.map +1 -0
- package/build/server/chunks/_server.ts-C-lN2ZUO.js +33 -0
- package/build/server/chunks/_server.ts-C-lN2ZUO.js.map +1 -0
- package/build/server/chunks/_server.ts-C1DcK_rP.js +200 -0
- package/build/server/chunks/_server.ts-C1DcK_rP.js.map +1 -0
- package/build/server/chunks/_server.ts-C1y3X6iK.js +52 -0
- package/build/server/chunks/_server.ts-C1y3X6iK.js.map +1 -0
- package/build/server/chunks/_server.ts-C5s-OXCm.js +79 -0
- package/build/server/chunks/_server.ts-C5s-OXCm.js.map +1 -0
- package/build/server/chunks/_server.ts-CAKTZL2t.js +63 -0
- package/build/server/chunks/_server.ts-CAKTZL2t.js.map +1 -0
- package/build/server/chunks/_server.ts-CDtOOD3Q.js +83 -0
- package/build/server/chunks/_server.ts-CDtOOD3Q.js.map +1 -0
- package/build/server/chunks/_server.ts-CG409cWi.js +46 -0
- package/build/server/chunks/_server.ts-CG409cWi.js.map +1 -0
- package/build/server/chunks/_server.ts-CJL8da0o.js +56 -0
- package/build/server/chunks/_server.ts-CJL8da0o.js.map +1 -0
- package/build/server/chunks/_server.ts-CLBKpKeH.js +204 -0
- package/build/server/chunks/_server.ts-CLBKpKeH.js.map +1 -0
- package/build/server/chunks/_server.ts-CLiYOnOv.js +50 -0
- package/build/server/chunks/_server.ts-CLiYOnOv.js.map +1 -0
- package/build/server/chunks/_server.ts-CMvY0ZDz.js +101 -0
- package/build/server/chunks/_server.ts-CMvY0ZDz.js.map +1 -0
- package/build/server/chunks/_server.ts-CQqURrHY.js +41 -0
- package/build/server/chunks/_server.ts-CQqURrHY.js.map +1 -0
- package/build/server/chunks/_server.ts-CSgPjCYv.js +79 -0
- package/build/server/chunks/_server.ts-CSgPjCYv.js.map +1 -0
- package/build/server/chunks/_server.ts-C_fNO73y.js +44 -0
- package/build/server/chunks/_server.ts-C_fNO73y.js.map +1 -0
- package/build/server/chunks/_server.ts-CcTt5aAs.js +41 -0
- package/build/server/chunks/_server.ts-CcTt5aAs.js.map +1 -0
- package/build/server/chunks/_server.ts-CfLbEufw.js +53 -0
- package/build/server/chunks/_server.ts-CfLbEufw.js.map +1 -0
- package/build/server/chunks/_server.ts-CqHMhINi.js +53 -0
- package/build/server/chunks/_server.ts-CqHMhINi.js.map +1 -0
- package/build/server/chunks/_server.ts-CrU9r7-F.js +88 -0
- package/build/server/chunks/_server.ts-CrU9r7-F.js.map +1 -0
- package/build/server/chunks/_server.ts-CtZuKotA.js +70 -0
- package/build/server/chunks/_server.ts-CtZuKotA.js.map +1 -0
- package/build/server/chunks/_server.ts-D-sjM5kn.js +103 -0
- package/build/server/chunks/_server.ts-D-sjM5kn.js.map +1 -0
- package/build/server/chunks/_server.ts-D2wlMMJl.js +41 -0
- package/build/server/chunks/_server.ts-D2wlMMJl.js.map +1 -0
- package/build/server/chunks/_server.ts-D7L27_xI.js +65 -0
- package/build/server/chunks/_server.ts-D7L27_xI.js.map +1 -0
- package/build/server/chunks/_server.ts-DMKIHwKi.js +90 -0
- package/build/server/chunks/_server.ts-DMKIHwKi.js.map +1 -0
- package/build/server/chunks/_server.ts-DTyZan5L.js +33 -0
- package/build/server/chunks/_server.ts-DTyZan5L.js.map +1 -0
- package/build/server/chunks/_server.ts-DVekHgMN.js +96 -0
- package/build/server/chunks/_server.ts-DVekHgMN.js.map +1 -0
- package/build/server/chunks/_server.ts-DWLkr6Qg.js +54 -0
- package/build/server/chunks/_server.ts-DWLkr6Qg.js.map +1 -0
- package/build/server/chunks/_server.ts-DWN6TJv0.js +149 -0
- package/build/server/chunks/_server.ts-DWN6TJv0.js.map +1 -0
- package/build/server/chunks/_server.ts-D_dO8hvJ.js +56 -0
- package/build/server/chunks/_server.ts-D_dO8hvJ.js.map +1 -0
- package/build/server/chunks/_server.ts-Da9y6lio.js +82 -0
- package/build/server/chunks/_server.ts-Da9y6lio.js.map +1 -0
- package/build/server/chunks/_server.ts-DbO3cg55.js +54 -0
- package/build/server/chunks/_server.ts-DbO3cg55.js.map +1 -0
- package/build/server/chunks/_server.ts-DclRsTpW.js +44 -0
- package/build/server/chunks/_server.ts-DclRsTpW.js.map +1 -0
- package/build/server/chunks/_server.ts-DdlF1vjy.js +159 -0
- package/build/server/chunks/_server.ts-DdlF1vjy.js.map +1 -0
- package/build/server/chunks/_server.ts-De7IOs2z.js +759 -0
- package/build/server/chunks/_server.ts-De7IOs2z.js.map +1 -0
- package/build/server/chunks/_server.ts-DmyOp1yq.js +40 -0
- package/build/server/chunks/_server.ts-DmyOp1yq.js.map +1 -0
- package/build/server/chunks/_server.ts-DnKTcT9x.js +46 -0
- package/build/server/chunks/_server.ts-DnKTcT9x.js.map +1 -0
- package/build/server/chunks/_server.ts-Dq82kHyx.js +72 -0
- package/build/server/chunks/_server.ts-Dq82kHyx.js.map +1 -0
- package/build/server/chunks/_server.ts-DqVJ1NqI.js +55 -0
- package/build/server/chunks/_server.ts-DqVJ1NqI.js.map +1 -0
- package/build/server/chunks/_server.ts-DzWtvjem.js +46 -0
- package/build/server/chunks/_server.ts-DzWtvjem.js.map +1 -0
- package/build/server/chunks/_server.ts-EZS5Qan4.js +62 -0
- package/build/server/chunks/_server.ts-EZS5Qan4.js.map +1 -0
- package/build/server/chunks/_server.ts-I0iKpsyr.js +77 -0
- package/build/server/chunks/_server.ts-I0iKpsyr.js.map +1 -0
- package/build/server/chunks/_server.ts-P4pmd9NX.js +55 -0
- package/build/server/chunks/_server.ts-P4pmd9NX.js.map +1 -0
- package/build/server/chunks/_server.ts-UF_kxNaU.js +79 -0
- package/build/server/chunks/_server.ts-UF_kxNaU.js.map +1 -0
- package/build/server/chunks/_server.ts-b3mVtmkb.js +121 -0
- package/build/server/chunks/_server.ts-b3mVtmkb.js.map +1 -0
- package/build/server/chunks/_server.ts-dhkEt2p6.js +63 -0
- package/build/server/chunks/_server.ts-dhkEt2p6.js.map +1 -0
- package/build/server/chunks/_server.ts-eK_9jY-9.js +67 -0
- package/build/server/chunks/_server.ts-eK_9jY-9.js.map +1 -0
- package/build/server/chunks/_server.ts-fsEmx9mw.js +42 -0
- package/build/server/chunks/_server.ts-fsEmx9mw.js.map +1 -0
- package/build/server/chunks/_server.ts-l4CK3c4j.js +109 -0
- package/build/server/chunks/_server.ts-l4CK3c4j.js.map +1 -0
- package/build/server/chunks/_server.ts-otJRaSSq.js +139 -0
- package/build/server/chunks/_server.ts-otJRaSSq.js.map +1 -0
- package/build/server/chunks/_server.ts-rXhjnBtw.js +49 -0
- package/build/server/chunks/_server.ts-rXhjnBtw.js.map +1 -0
- package/build/server/chunks/_server.ts-wZ88P3nX.js +157 -0
- package/build/server/chunks/_server.ts-wZ88P3nX.js.map +1 -0
- package/build/server/chunks/_server.ts-xO4nhxDx.js +60 -0
- package/build/server/chunks/_server.ts-xO4nhxDx.js.map +1 -0
- package/build/server/chunks/_server.ts-yimewsjO.js +57 -0
- package/build/server/chunks/_server.ts-yimewsjO.js.map +1 -0
- package/build/server/chunks/addon-helpers-BpnH-GEc.js +49 -0
- package/build/server/chunks/addon-helpers-BpnH-GEc.js.map +1 -0
- package/build/server/chunks/chunk-CLZ62Ad-.js +18 -0
- package/build/server/chunks/chunk-CLZ62Ad-.js.map +1 -0
- package/build/server/chunks/coercion-TNFJisCC.js +34 -0
- package/build/server/chunks/coercion-TNFJisCC.js.map +1 -0
- package/build/server/chunks/config-0LFudKuE.js +121 -0
- package/build/server/chunks/config-0LFudKuE.js.map +1 -0
- package/build/server/chunks/dev-DjANv7AF.js +4389 -0
- package/build/server/chunks/dev-DjANv7AF.js.map +1 -0
- package/build/server/chunks/docker-B23w4kr6.js +20 -0
- package/build/server/chunks/docker-B23w4kr6.js.map +1 -0
- package/build/server/chunks/endpoints-Drq_J-2Z.js +340 -0
- package/build/server/chunks/endpoints-Drq_J-2Z.js.map +1 -0
- package/build/server/chunks/error.svelte-ByNznOuj.js +16 -0
- package/build/server/chunks/error.svelte-ByNznOuj.js.map +1 -0
- package/build/server/chunks/exports-D1quPX8S.js +124 -0
- package/build/server/chunks/exports-D1quPX8S.js.map +1 -0
- package/build/server/chunks/helpers-CX6xRBmt.js +226 -0
- package/build/server/chunks/helpers-CX6xRBmt.js.map +1 -0
- package/build/server/chunks/hooks.server-BEVMYNQ4.js +86 -0
- package/build/server/chunks/hooks.server-BEVMYNQ4.js.map +1 -0
- package/build/server/chunks/http-VqOG8hyj.js +31 -0
- package/build/server/chunks/http-VqOG8hyj.js.map +1 -0
- package/build/server/chunks/internal-CeK24Lte.js +1544 -0
- package/build/server/chunks/internal-CeK24Lte.js.map +1 -0
- package/build/server/chunks/serial-queue-D9FEpYVv.js +22 -0
- package/build/server/chunks/serial-queue-D9FEpYVv.js.map +1 -0
- package/build/server/chunks/setup-deploy-B4oSSFYi.js +529 -0
- package/build/server/chunks/setup-deploy-B4oSSFYi.js.map +1 -0
- package/build/server/chunks/src-BkvQ5Uuf.js +14082 -0
- package/build/server/chunks/src-BkvQ5Uuf.js.map +1 -0
- package/build/server/chunks/state-D7JS-l_D.js +203 -0
- package/build/server/chunks/state-D7JS-l_D.js.map +1 -0
- package/build/server/chunks/theme-state.svelte-PtPMmKGN.js +520 -0
- package/build/server/chunks/theme-state.svelte-PtPMmKGN.js.map +1 -0
- package/build/server/chunks/utils-BSRjJDrZ.js +150 -0
- package/build/server/chunks/utils-BSRjJDrZ.js.map +1 -0
- package/build/server/index.js +4389 -0
- package/build/server/index.js.map +1 -0
- package/build/server/manifest.js +584 -0
- package/build/server/manifest.js.map +1 -0
- package/build/shims.js +32 -0
- package/package.json +68 -0
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { j as json } from './exports-D1quPX8S.js';
|
|
2
|
+
import { X as importHostOpenCode, E as detectHostOpenCode, i as authJsonPath, m as checkDocker, k as buildComposeOptions } from './src-BkvQ5Uuf.js';
|
|
3
|
+
import { b as getState } from './endpoints-Drq_J-2Z.js';
|
|
4
|
+
import { o as opencodeFetch } from './http-VqOG8hyj.js';
|
|
5
|
+
import { c as composeRestart } from './docker-B23w4kr6.js';
|
|
6
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
7
|
+
import './utils-BSRjJDrZ.js';
|
|
8
|
+
import './chunk-CLZ62Ad-.js';
|
|
9
|
+
import 'node:module';
|
|
10
|
+
import 'node:path';
|
|
11
|
+
import 'node:child_process';
|
|
12
|
+
import 'node:os';
|
|
13
|
+
import 'buffer';
|
|
14
|
+
import 'node:url';
|
|
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
|
+
|
|
27
|
+
//#region src/routes/api/setup/import-host/+server.ts
|
|
28
|
+
/**
|
|
29
|
+
* POST /api/setup/import-host
|
|
30
|
+
*
|
|
31
|
+
* Setup-phase equivalent of POST /admin/providers/import-host.
|
|
32
|
+
* No admin auth required — the admin token hasn't been written yet during setup.
|
|
33
|
+
*
|
|
34
|
+
* Copies host OpenCode config + auth into OP_HOME and live-pushes credentials
|
|
35
|
+
* to the running OpenCode subprocess so providers appear connected immediately.
|
|
36
|
+
*/
|
|
37
|
+
async function pushAuthToOpenCode(authPath) {
|
|
38
|
+
let raw;
|
|
39
|
+
try {
|
|
40
|
+
raw = JSON.parse(readFileSync(authPath, "utf-8"));
|
|
41
|
+
} catch (err) {
|
|
42
|
+
return {
|
|
43
|
+
pushed: [],
|
|
44
|
+
errors: [{
|
|
45
|
+
provider: "*",
|
|
46
|
+
error: `Could not read auth.json: ${err instanceof Error ? err.message : String(err)}`
|
|
47
|
+
}]
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
if (!raw || typeof raw !== "object" || Array.isArray(raw)) return {
|
|
51
|
+
pushed: [],
|
|
52
|
+
errors: [{
|
|
53
|
+
provider: "*",
|
|
54
|
+
error: "auth.json is not a JSON object"
|
|
55
|
+
}]
|
|
56
|
+
};
|
|
57
|
+
const pushed = [];
|
|
58
|
+
const errors = [];
|
|
59
|
+
for (const [providerId, value] of Object.entries(raw)) try {
|
|
60
|
+
await opencodeFetch(`/auth/${encodeURIComponent(providerId)}`, {
|
|
61
|
+
method: "PUT",
|
|
62
|
+
body: JSON.stringify(value)
|
|
63
|
+
});
|
|
64
|
+
pushed.push(providerId);
|
|
65
|
+
} catch (err) {
|
|
66
|
+
errors.push({
|
|
67
|
+
provider: providerId,
|
|
68
|
+
error: err instanceof Error ? err.message : String(err)
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
return {
|
|
72
|
+
pushed,
|
|
73
|
+
errors
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
/** Restart provider-consuming services so they re-read imported startup config. */
|
|
77
|
+
async function restartProviderConsumers(state) {
|
|
78
|
+
const services = ["assistant"];
|
|
79
|
+
if (!(await checkDocker()).ok) return {
|
|
80
|
+
restarted: [],
|
|
81
|
+
failed: services.map((s) => ({
|
|
82
|
+
service: s,
|
|
83
|
+
error: "docker unavailable"
|
|
84
|
+
}))
|
|
85
|
+
};
|
|
86
|
+
const opts = buildComposeOptions(state);
|
|
87
|
+
const restarted = [];
|
|
88
|
+
const failed = [];
|
|
89
|
+
for (const service of services) try {
|
|
90
|
+
const r = await composeRestart([service], opts);
|
|
91
|
+
if (r.ok) restarted.push(service);
|
|
92
|
+
else failed.push({
|
|
93
|
+
service,
|
|
94
|
+
error: r.stderr || `exit ${r.code}`
|
|
95
|
+
});
|
|
96
|
+
} catch (err) {
|
|
97
|
+
failed.push({
|
|
98
|
+
service,
|
|
99
|
+
error: err instanceof Error ? err.message : String(err)
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
return {
|
|
103
|
+
restarted,
|
|
104
|
+
failed
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
var POST = async () => {
|
|
108
|
+
try {
|
|
109
|
+
const state = getState();
|
|
110
|
+
const result = importHostOpenCode(state, { overwriteConflicts: false });
|
|
111
|
+
const hostStatus = detectHostOpenCode();
|
|
112
|
+
let pushResult = {
|
|
113
|
+
pushed: [],
|
|
114
|
+
errors: []
|
|
115
|
+
};
|
|
116
|
+
const importedAuthPath = authJsonPath(state);
|
|
117
|
+
if (existsSync(importedAuthPath)) pushResult = await pushAuthToOpenCode(importedAuthPath);
|
|
118
|
+
else if (hostStatus.authPath) pushResult = await pushAuthToOpenCode(hostStatus.authPath);
|
|
119
|
+
const restart = await restartProviderConsumers(state);
|
|
120
|
+
return json({
|
|
121
|
+
ok: true,
|
|
122
|
+
imported: result.imported,
|
|
123
|
+
conflicts: result.conflicts.length,
|
|
124
|
+
livePushed: pushResult.pushed.length,
|
|
125
|
+
pushedProviders: pushResult.pushed,
|
|
126
|
+
errors: pushResult.errors,
|
|
127
|
+
restarted: restart.restarted,
|
|
128
|
+
restartFailed: restart.failed
|
|
129
|
+
});
|
|
130
|
+
} catch (err) {
|
|
131
|
+
return json({
|
|
132
|
+
ok: false,
|
|
133
|
+
error: err instanceof Error ? err.message : "Import failed"
|
|
134
|
+
}, { status: 500 });
|
|
135
|
+
}
|
|
136
|
+
};
|
|
137
|
+
|
|
138
|
+
export { POST };
|
|
139
|
+
//# sourceMappingURL=_server.ts-otJRaSSq.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_server.ts-otJRaSSq.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/setup/import-host/_server.ts.js"],"sourcesContent":["import { r as json } from \"../../../../../chunks/exports.js\";\nimport { Et as authJsonPath, T as checkDocker, n as importHostOpenCode, t as detectHostOpenCode, w as buildComposeOptions } from \"../../../../../chunks/src.js\";\nimport { c as getState } from \"../../../../../chunks/endpoints.js\";\nimport { t as opencodeFetch } from \"../../../../../chunks/http.js\";\nimport { t as composeRestart } from \"../../../../../chunks/docker.js\";\nimport { existsSync, readFileSync } from \"node:fs\";\n//#region src/routes/api/setup/import-host/+server.ts\n/**\n* POST /api/setup/import-host\n*\n* Setup-phase equivalent of POST /admin/providers/import-host.\n* No admin auth required — the admin token hasn't been written yet during setup.\n*\n* Copies host OpenCode config + auth into OP_HOME and live-pushes credentials\n* to the running OpenCode subprocess so providers appear connected immediately.\n*/\nasync function pushAuthToOpenCode(authPath) {\n\tlet raw;\n\ttry {\n\t\traw = JSON.parse(readFileSync(authPath, \"utf-8\"));\n\t} catch (err) {\n\t\treturn {\n\t\t\tpushed: [],\n\t\t\terrors: [{\n\t\t\t\tprovider: \"*\",\n\t\t\t\terror: `Could not read auth.json: ${err instanceof Error ? err.message : String(err)}`\n\t\t\t}]\n\t\t};\n\t}\n\tif (!raw || typeof raw !== \"object\" || Array.isArray(raw)) return {\n\t\tpushed: [],\n\t\terrors: [{\n\t\t\tprovider: \"*\",\n\t\t\terror: \"auth.json is not a JSON object\"\n\t\t}]\n\t};\n\tconst pushed = [];\n\tconst errors = [];\n\tfor (const [providerId, value] of Object.entries(raw)) try {\n\t\tawait opencodeFetch(`/auth/${encodeURIComponent(providerId)}`, {\n\t\t\tmethod: \"PUT\",\n\t\t\tbody: JSON.stringify(value)\n\t\t});\n\t\tpushed.push(providerId);\n\t} catch (err) {\n\t\terrors.push({\n\t\t\tprovider: providerId,\n\t\t\terror: err instanceof Error ? err.message : String(err)\n\t\t});\n\t}\n\treturn {\n\t\tpushed,\n\t\terrors\n\t};\n}\n/** Restart provider-consuming services so they re-read imported startup config. */\nasync function restartProviderConsumers(state) {\n\tconst services = [\"assistant\"];\n\tif (!(await checkDocker()).ok) return {\n\t\trestarted: [],\n\t\tfailed: services.map((s) => ({\n\t\t\tservice: s,\n\t\t\terror: \"docker unavailable\"\n\t\t}))\n\t};\n\tconst opts = buildComposeOptions(state);\n\tconst restarted = [];\n\tconst failed = [];\n\tfor (const service of services) try {\n\t\tconst r = await composeRestart([service], opts);\n\t\tif (r.ok) restarted.push(service);\n\t\telse failed.push({\n\t\t\tservice,\n\t\t\terror: r.stderr || `exit ${r.code}`\n\t\t});\n\t} catch (err) {\n\t\tfailed.push({\n\t\t\tservice,\n\t\t\terror: err instanceof Error ? err.message : String(err)\n\t\t});\n\t}\n\treturn {\n\t\trestarted,\n\t\tfailed\n\t};\n}\nvar POST = async () => {\n\ttry {\n\t\tconst state = getState();\n\t\tconst result = importHostOpenCode(state, { overwriteConflicts: false });\n\t\tconst hostStatus = detectHostOpenCode();\n\t\tlet pushResult = {\n\t\t\tpushed: [],\n\t\t\terrors: []\n\t\t};\n\t\tconst importedAuthPath = authJsonPath(state);\n\t\tif (existsSync(importedAuthPath)) pushResult = await pushAuthToOpenCode(importedAuthPath);\n\t\telse if (hostStatus.authPath) pushResult = await pushAuthToOpenCode(hostStatus.authPath);\n\t\tconst restart = await restartProviderConsumers(state);\n\t\treturn json({\n\t\t\tok: true,\n\t\t\timported: result.imported,\n\t\t\tconflicts: result.conflicts.length,\n\t\t\tlivePushed: pushResult.pushed.length,\n\t\t\tpushedProviders: pushResult.pushed,\n\t\t\terrors: pushResult.errors,\n\t\t\trestarted: restart.restarted,\n\t\t\trestartFailed: restart.failed\n\t\t});\n\t} catch (err) {\n\t\treturn json({\n\t\t\tok: false,\n\t\t\terror: err instanceof Error ? err.message : \"Import failed\"\n\t\t}, { status: 500 });\n\t}\n};\n//#endregion\nexport { POST };\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { j as json } from './exports-D1quPX8S.js';
|
|
2
|
+
import { g as getOpenCodeClient } from './helpers-CX6xRBmt.js';
|
|
3
|
+
import './utils-BSRjJDrZ.js';
|
|
4
|
+
import './src-BkvQ5Uuf.js';
|
|
5
|
+
import './chunk-CLZ62Ad-.js';
|
|
6
|
+
import 'node:module';
|
|
7
|
+
import 'node:fs';
|
|
8
|
+
import 'node:path';
|
|
9
|
+
import 'node:child_process';
|
|
10
|
+
import 'node:os';
|
|
11
|
+
import 'buffer';
|
|
12
|
+
import 'node:url';
|
|
13
|
+
import 'node:crypto';
|
|
14
|
+
import 'events';
|
|
15
|
+
import 'fs';
|
|
16
|
+
import 'node:events';
|
|
17
|
+
import 'node:stream';
|
|
18
|
+
import 'node:string_decoder';
|
|
19
|
+
import 'path';
|
|
20
|
+
import 'assert';
|
|
21
|
+
import 'zlib';
|
|
22
|
+
import 'node:assert';
|
|
23
|
+
import 'node:fs/promises';
|
|
24
|
+
import './endpoints-Drq_J-2Z.js';
|
|
25
|
+
|
|
26
|
+
//#region src/routes/api/setup/opencode/auth/[provider]/+server.ts
|
|
27
|
+
var PROVIDER_ID_RE = /^[a-zA-Z0-9_-]{1,64}$/;
|
|
28
|
+
var PUT = async ({ params, request }) => {
|
|
29
|
+
if (!PROVIDER_ID_RE.test(params.provider)) return json({
|
|
30
|
+
ok: false,
|
|
31
|
+
message: "Invalid provider"
|
|
32
|
+
}, { status: 400 });
|
|
33
|
+
try {
|
|
34
|
+
const { key } = await request.json();
|
|
35
|
+
if (!(await getOpenCodeClient().setProviderApiKey(params.provider, typeof key === "string" ? key : "")).ok) return json({
|
|
36
|
+
ok: false,
|
|
37
|
+
message: "Failed to set provider credentials"
|
|
38
|
+
}, { status: 400 });
|
|
39
|
+
return json({ ok: true });
|
|
40
|
+
} catch {
|
|
41
|
+
return json({
|
|
42
|
+
ok: false,
|
|
43
|
+
message: "Failed to set provider credentials"
|
|
44
|
+
}, { status: 500 });
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
export { PUT };
|
|
49
|
+
//# sourceMappingURL=_server.ts-rXhjnBtw.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_server.ts-rXhjnBtw.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/setup/opencode/auth/_provider_/_server.ts.js"],"sourcesContent":["import { r as json } from \"../../../../../../../chunks/exports.js\";\nimport { a as getOpenCodeClient } from \"../../../../../../../chunks/helpers.js\";\n//#region src/routes/api/setup/opencode/auth/[provider]/+server.ts\nvar PROVIDER_ID_RE = /^[a-zA-Z0-9_-]{1,64}$/;\nvar PUT = async ({ params, request }) => {\n\tif (!PROVIDER_ID_RE.test(params.provider)) return json({\n\t\tok: false,\n\t\tmessage: \"Invalid provider\"\n\t}, { status: 400 });\n\ttry {\n\t\tconst { key } = await request.json();\n\t\tif (!(await getOpenCodeClient().setProviderApiKey(params.provider, typeof key === \"string\" ? key : \"\")).ok) return json({\n\t\t\tok: false,\n\t\t\tmessage: \"Failed to set provider credentials\"\n\t\t}, { status: 400 });\n\t\treturn json({ ok: true });\n\t} catch {\n\t\treturn json({\n\t\t\tok: false,\n\t\t\tmessage: \"Failed to set provider credentials\"\n\t\t}, { status: 500 });\n\t}\n};\n//#endregion\nexport { PUT };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAEA;AACA,IAAI,cAAc,GAAG,uBAAuB;AACzC,IAAC,GAAG,GAAG,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK;AACzC,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,OAAO,IAAI,CAAC;AACxD,EAAE,EAAE,EAAE,KAAK;AACX,EAAE,OAAO,EAAE;AACX,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACpB,CAAC,IAAI;AACL,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE;AACtC,EAAE,IAAI,CAAC,CAAC,MAAM,iBAAiB,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,GAAG,KAAK,QAAQ,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,OAAO,IAAI,CAAC;AAC1H,GAAG,EAAE,EAAE,KAAK;AACZ,GAAG,OAAO,EAAE;AACZ,GAAG,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACrB,EAAE,OAAO,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAC,CAAC,CAAC,MAAM;AACT,EAAE,OAAO,IAAI,CAAC;AACd,GAAG,EAAE,EAAE,KAAK;AACZ,GAAG,OAAO,EAAE;AACZ,GAAG,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACrB,CAAC;AACD;;;;"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import { X as importHostOpenCode, E as detectHostOpenCode, i as authJsonPath, m as checkDocker, k as buildComposeOptions } from './src-BkvQ5Uuf.js';
|
|
2
|
+
import { b as getState } from './endpoints-Drq_J-2Z.js';
|
|
3
|
+
import { d as getRequestId, r as requireAdmin, p as parseJsonBody, e as errorResponse, h as jsonResponse } from './helpers-CX6xRBmt.js';
|
|
4
|
+
import { w as withSerialQueue } from './serial-queue-D9FEpYVv.js';
|
|
5
|
+
import { o as opencodeFetch } from './http-VqOG8hyj.js';
|
|
6
|
+
import { c as composeRestart } from './docker-B23w4kr6.js';
|
|
7
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
8
|
+
import './chunk-CLZ62Ad-.js';
|
|
9
|
+
import 'node:module';
|
|
10
|
+
import 'node:path';
|
|
11
|
+
import 'node:child_process';
|
|
12
|
+
import 'node:os';
|
|
13
|
+
import 'buffer';
|
|
14
|
+
import 'node:url';
|
|
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
|
+
|
|
27
|
+
//#region src/routes/admin/providers/import-host/+server.ts
|
|
28
|
+
/**
|
|
29
|
+
* POST /admin/providers/import-host
|
|
30
|
+
*
|
|
31
|
+
* Copies host OpenCode config + auth into OP_HOME, then pushes each
|
|
32
|
+
* imported credential to the running OpenCode server so the providers
|
|
33
|
+
* appear connected immediately (no restart required).
|
|
34
|
+
*
|
|
35
|
+
* - opencode.json: stripped of plugin/mcp/permission keys, merged with
|
|
36
|
+
* existing OP_HOME config. Provider conflicts preserved by default.
|
|
37
|
+
* - auth.json: byte-copied and chmodded 0o600. Never logged.
|
|
38
|
+
* - Live push: best-effort PUT to OpenCode /auth/{id} per credential.
|
|
39
|
+
* If OpenCode is unreachable, the file copy still applies and OpenCode
|
|
40
|
+
* will pick up the credentials on next restart.
|
|
41
|
+
* - Service restart: assistant is restarted after the import so opencode.json
|
|
42
|
+
* provider blocks are re-read (live push only updates the auth store, not
|
|
43
|
+
* config).
|
|
44
|
+
*
|
|
45
|
+
* Body (optional JSON):
|
|
46
|
+
* { overwriteConflicts?: boolean } — default false
|
|
47
|
+
*
|
|
48
|
+
* Auth: admin token required.
|
|
49
|
+
*/
|
|
50
|
+
/**
|
|
51
|
+
* Restart services that hold provider state in startup config.
|
|
52
|
+
* Best-effort: the file-level import is the durable part; this is the polish
|
|
53
|
+
* that makes the change visible without the user having to bounce things by hand.
|
|
54
|
+
* OpenCode caches opencode.json provider blocks at startup, so imported
|
|
55
|
+
* provider config needs a fresh assistant process.
|
|
56
|
+
*/
|
|
57
|
+
async function restartProviderConsumers() {
|
|
58
|
+
const services = ["assistant"];
|
|
59
|
+
if (!(await checkDocker()).ok) return {
|
|
60
|
+
restarted: [],
|
|
61
|
+
failed: services.map((s) => ({
|
|
62
|
+
service: s,
|
|
63
|
+
error: "docker unavailable"
|
|
64
|
+
}))
|
|
65
|
+
};
|
|
66
|
+
const opts = buildComposeOptions(getState());
|
|
67
|
+
const restarted = [];
|
|
68
|
+
const failed = [];
|
|
69
|
+
for (const service of services) try {
|
|
70
|
+
const r = await composeRestart([service], opts);
|
|
71
|
+
if (r.ok) restarted.push(service);
|
|
72
|
+
else failed.push({
|
|
73
|
+
service,
|
|
74
|
+
error: r.stderr || `exit ${r.code}`
|
|
75
|
+
});
|
|
76
|
+
} catch (err) {
|
|
77
|
+
failed.push({
|
|
78
|
+
service,
|
|
79
|
+
error: err instanceof Error ? err.message : String(err)
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
return {
|
|
83
|
+
restarted,
|
|
84
|
+
failed
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
/** Push each auth.json entry to OpenCode's /auth/{id} so the running process sees them. */
|
|
88
|
+
async function pushAuthToOpenCode(authPath) {
|
|
89
|
+
let raw;
|
|
90
|
+
try {
|
|
91
|
+
raw = JSON.parse(readFileSync(authPath, "utf-8"));
|
|
92
|
+
} catch {
|
|
93
|
+
return {
|
|
94
|
+
pushed: 0,
|
|
95
|
+
failed: []
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
if (!raw || typeof raw !== "object" || Array.isArray(raw)) return {
|
|
99
|
+
pushed: 0,
|
|
100
|
+
failed: []
|
|
101
|
+
};
|
|
102
|
+
let pushed = 0;
|
|
103
|
+
const failed = [];
|
|
104
|
+
for (const [providerId, value] of Object.entries(raw)) try {
|
|
105
|
+
await opencodeFetch(`/auth/${encodeURIComponent(providerId)}`, {
|
|
106
|
+
method: "PUT",
|
|
107
|
+
body: JSON.stringify(value)
|
|
108
|
+
});
|
|
109
|
+
pushed++;
|
|
110
|
+
} catch {
|
|
111
|
+
failed.push(providerId);
|
|
112
|
+
}
|
|
113
|
+
return {
|
|
114
|
+
pushed,
|
|
115
|
+
failed
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
var POST = async (event) => {
|
|
119
|
+
const requestId = getRequestId(event);
|
|
120
|
+
const authError = requireAdmin(event, requestId);
|
|
121
|
+
if (authError) return authError;
|
|
122
|
+
return withSerialQueue("admin:providers:import-host", async () => {
|
|
123
|
+
const state = getState();
|
|
124
|
+
let overwriteConflicts = false;
|
|
125
|
+
if ((event.request.headers.get("content-type") ?? "").includes("application/json")) {
|
|
126
|
+
const parsed = await parseJsonBody(event.request);
|
|
127
|
+
if (!("error" in parsed)) overwriteConflicts = parsed.data.overwriteConflicts === true;
|
|
128
|
+
}
|
|
129
|
+
let result;
|
|
130
|
+
try {
|
|
131
|
+
result = importHostOpenCode(state, { overwriteConflicts });
|
|
132
|
+
} catch (err) {
|
|
133
|
+
return errorResponse(500, "import_failed", err instanceof Error ? err.message : "Import failed", {}, requestId);
|
|
134
|
+
}
|
|
135
|
+
const hostStatus = detectHostOpenCode();
|
|
136
|
+
let livePush = {
|
|
137
|
+
pushed: 0,
|
|
138
|
+
failed: []
|
|
139
|
+
};
|
|
140
|
+
const importedAuthPath = authJsonPath(state);
|
|
141
|
+
if (existsSync(importedAuthPath)) livePush = await pushAuthToOpenCode(importedAuthPath);
|
|
142
|
+
else if (hostStatus.authPath) livePush = await pushAuthToOpenCode(hostStatus.authPath);
|
|
143
|
+
const restart = await restartProviderConsumers();
|
|
144
|
+
return jsonResponse(200, {
|
|
145
|
+
ok: true,
|
|
146
|
+
imported: result.imported,
|
|
147
|
+
conflicts: result.conflicts,
|
|
148
|
+
livePushed: livePush.pushed,
|
|
149
|
+
livePushFailed: livePush.failed,
|
|
150
|
+
restarted: restart.restarted,
|
|
151
|
+
restartFailed: restart.failed
|
|
152
|
+
}, requestId);
|
|
153
|
+
});
|
|
154
|
+
};
|
|
155
|
+
|
|
156
|
+
export { POST };
|
|
157
|
+
//# sourceMappingURL=_server.ts-wZ88P3nX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_server.ts-wZ88P3nX.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/admin/providers/import-host/_server.ts.js"],"sourcesContent":["import { Et as authJsonPath, T as checkDocker, n as importHostOpenCode, t as detectHostOpenCode, w as buildComposeOptions } from \"../../../../../chunks/src.js\";\nimport { c as getState } from \"../../../../../chunks/endpoints.js\";\nimport { d as requireAdmin, i as errorResponse, l as jsonResponse, o as getRequestId, u as parseJsonBody } from \"../../../../../chunks/helpers.js\";\nimport { t as withSerialQueue } from \"../../../../../chunks/serial-queue.js\";\nimport { t as opencodeFetch } from \"../../../../../chunks/http.js\";\nimport { t as composeRestart } from \"../../../../../chunks/docker.js\";\nimport { existsSync, readFileSync } from \"node:fs\";\n//#region src/routes/admin/providers/import-host/+server.ts\n/**\n* POST /admin/providers/import-host\n*\n* Copies host OpenCode config + auth into OP_HOME, then pushes each\n* imported credential to the running OpenCode server so the providers\n* appear connected immediately (no restart required).\n*\n* - opencode.json: stripped of plugin/mcp/permission keys, merged with\n* existing OP_HOME config. Provider conflicts preserved by default.\n* - auth.json: byte-copied and chmodded 0o600. Never logged.\n* - Live push: best-effort PUT to OpenCode /auth/{id} per credential.\n* If OpenCode is unreachable, the file copy still applies and OpenCode\n* will pick up the credentials on next restart.\n* - Service restart: assistant is restarted after the import so opencode.json\n* provider blocks are re-read (live push only updates the auth store, not\n* config).\n*\n* Body (optional JSON):\n* { overwriteConflicts?: boolean } — default false\n*\n* Auth: admin token required.\n*/\n/**\n* Restart services that hold provider state in startup config.\n* Best-effort: the file-level import is the durable part; this is the polish\n* that makes the change visible without the user having to bounce things by hand.\n* OpenCode caches opencode.json provider blocks at startup, so imported\n* provider config needs a fresh assistant process.\n*/\nasync function restartProviderConsumers() {\n\tconst services = [\"assistant\"];\n\tif (!(await checkDocker()).ok) return {\n\t\trestarted: [],\n\t\tfailed: services.map((s) => ({\n\t\t\tservice: s,\n\t\t\terror: \"docker unavailable\"\n\t\t}))\n\t};\n\tconst opts = buildComposeOptions(getState());\n\tconst restarted = [];\n\tconst failed = [];\n\tfor (const service of services) try {\n\t\tconst r = await composeRestart([service], opts);\n\t\tif (r.ok) restarted.push(service);\n\t\telse failed.push({\n\t\t\tservice,\n\t\t\terror: r.stderr || `exit ${r.code}`\n\t\t});\n\t} catch (err) {\n\t\tfailed.push({\n\t\t\tservice,\n\t\t\terror: err instanceof Error ? err.message : String(err)\n\t\t});\n\t}\n\treturn {\n\t\trestarted,\n\t\tfailed\n\t};\n}\n/** Push each auth.json entry to OpenCode's /auth/{id} so the running process sees them. */\nasync function pushAuthToOpenCode(authPath) {\n\tlet raw;\n\ttry {\n\t\traw = JSON.parse(readFileSync(authPath, \"utf-8\"));\n\t} catch {\n\t\treturn {\n\t\t\tpushed: 0,\n\t\t\tfailed: []\n\t\t};\n\t}\n\tif (!raw || typeof raw !== \"object\" || Array.isArray(raw)) return {\n\t\tpushed: 0,\n\t\tfailed: []\n\t};\n\tlet pushed = 0;\n\tconst failed = [];\n\tfor (const [providerId, value] of Object.entries(raw)) try {\n\t\tawait opencodeFetch(`/auth/${encodeURIComponent(providerId)}`, {\n\t\t\tmethod: \"PUT\",\n\t\t\tbody: JSON.stringify(value)\n\t\t});\n\t\tpushed++;\n\t} catch {\n\t\tfailed.push(providerId);\n\t}\n\treturn {\n\t\tpushed,\n\t\tfailed\n\t};\n}\nvar POST = async (event) => {\n\tconst requestId = getRequestId(event);\n\tconst authError = requireAdmin(event, requestId);\n\tif (authError) return authError;\n\treturn withSerialQueue(\"admin:providers:import-host\", async () => {\n\t\tconst state = getState();\n\t\tlet overwriteConflicts = false;\n\t\tif ((event.request.headers.get(\"content-type\") ?? \"\").includes(\"application/json\")) {\n\t\t\tconst parsed = await parseJsonBody(event.request);\n\t\t\tif (!(\"error\" in parsed)) overwriteConflicts = parsed.data.overwriteConflicts === true;\n\t\t}\n\t\tlet result;\n\t\ttry {\n\t\t\tresult = importHostOpenCode(state, { overwriteConflicts });\n\t\t} catch (err) {\n\t\t\treturn errorResponse(500, \"import_failed\", err instanceof Error ? err.message : \"Import failed\", {}, requestId);\n\t\t}\n\t\tconst hostStatus = detectHostOpenCode();\n\t\tlet livePush = {\n\t\t\tpushed: 0,\n\t\t\tfailed: []\n\t\t};\n\t\tconst importedAuthPath = authJsonPath(state);\n\t\tif (existsSync(importedAuthPath)) livePush = await pushAuthToOpenCode(importedAuthPath);\n\t\telse if (hostStatus.authPath) livePush = await pushAuthToOpenCode(hostStatus.authPath);\n\t\tconst restart = await restartProviderConsumers();\n\t\treturn jsonResponse(200, {\n\t\t\tok: true,\n\t\t\timported: result.imported,\n\t\t\tconflicts: result.conflicts,\n\t\t\tlivePushed: livePush.pushed,\n\t\t\tlivePushFailed: livePush.failed,\n\t\t\trestarted: restart.restarted,\n\t\t\trestartFailed: restart.failed\n\t\t}, requestId);\n\t});\n};\n//#endregion\nexport { POST };\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { d as getRequestId, e as errorResponse, f as getUiLoginPassword, s as safeTokenCompare, b as createSession } from './helpers-CX6xRBmt.js';
|
|
2
|
+
import './src-BkvQ5Uuf.js';
|
|
3
|
+
import './chunk-CLZ62Ad-.js';
|
|
4
|
+
import 'node:module';
|
|
5
|
+
import 'node:fs';
|
|
6
|
+
import 'node:path';
|
|
7
|
+
import 'node:child_process';
|
|
8
|
+
import 'node:os';
|
|
9
|
+
import 'buffer';
|
|
10
|
+
import 'node:url';
|
|
11
|
+
import 'node:crypto';
|
|
12
|
+
import 'events';
|
|
13
|
+
import 'fs';
|
|
14
|
+
import 'node:events';
|
|
15
|
+
import 'node:stream';
|
|
16
|
+
import 'node:string_decoder';
|
|
17
|
+
import 'path';
|
|
18
|
+
import 'assert';
|
|
19
|
+
import 'zlib';
|
|
20
|
+
import 'node:assert';
|
|
21
|
+
import 'node:fs/promises';
|
|
22
|
+
import './endpoints-Drq_J-2Z.js';
|
|
23
|
+
|
|
24
|
+
//#region src/routes/admin/auth/session/+server.ts
|
|
25
|
+
/**
|
|
26
|
+
* POST /admin/auth/session
|
|
27
|
+
*
|
|
28
|
+
* Issues an `op_session` cookie after verifying the operator-supplied password
|
|
29
|
+
* against `process.env.OP_UI_LOGIN_PASSWORD`.
|
|
30
|
+
*
|
|
31
|
+
* The cookie value is a random UUID session token — NOT the plaintext password.
|
|
32
|
+
* Kept alongside `/admin/auth/login` as an alias; both verify the same
|
|
33
|
+
* `password` body field and issue the `op_session` cookie.
|
|
34
|
+
*/
|
|
35
|
+
var POST = async (event) => {
|
|
36
|
+
const requestId = getRequestId(event);
|
|
37
|
+
let body;
|
|
38
|
+
try {
|
|
39
|
+
body = await event.request.json();
|
|
40
|
+
} catch {
|
|
41
|
+
return errorResponse(400, "bad_request", "Invalid JSON body", {}, requestId);
|
|
42
|
+
}
|
|
43
|
+
const password = typeof body.password === "string" ? body.password : "";
|
|
44
|
+
if (!password) return errorResponse(400, "bad_request", "password is required", {}, requestId);
|
|
45
|
+
const configured = getUiLoginPassword();
|
|
46
|
+
if (!configured) return errorResponse(503, "admin_not_configured", "OP_UI_LOGIN_PASSWORD has not been set. Complete setup first.", {}, requestId);
|
|
47
|
+
if (!safeTokenCompare(password, configured)) return errorResponse(401, "unauthorized", "Invalid password", {}, requestId);
|
|
48
|
+
const sessionToken = createSession();
|
|
49
|
+
return new Response(JSON.stringify({ ok: true }), {
|
|
50
|
+
status: 200,
|
|
51
|
+
headers: {
|
|
52
|
+
"content-type": "application/json",
|
|
53
|
+
"set-cookie": `op_session=${sessionToken}; HttpOnly; SameSite=Strict; Path=/; Max-Age=86400`,
|
|
54
|
+
"x-request-id": requestId
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
export { POST };
|
|
60
|
+
//# sourceMappingURL=_server.ts-xO4nhxDx.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_server.ts-xO4nhxDx.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/admin/auth/session/_server.ts.js"],"sourcesContent":["import { f as safeTokenCompare, i as errorResponse, m as createSession, o as getRequestId, s as getUiLoginPassword } from \"../../../../../chunks/helpers.js\";\n//#region src/routes/admin/auth/session/+server.ts\n/**\n* POST /admin/auth/session\n*\n* Issues an `op_session` cookie after verifying the operator-supplied password\n* against `process.env.OP_UI_LOGIN_PASSWORD`.\n*\n* The cookie value is a random UUID session token — NOT the plaintext password.\n* Kept alongside `/admin/auth/login` as an alias; both verify the same\n* `password` body field and issue the `op_session` cookie.\n*/\nvar POST = async (event) => {\n\tconst requestId = getRequestId(event);\n\tlet body;\n\ttry {\n\t\tbody = await event.request.json();\n\t} catch {\n\t\treturn errorResponse(400, \"bad_request\", \"Invalid JSON body\", {}, requestId);\n\t}\n\tconst password = typeof body.password === \"string\" ? body.password : \"\";\n\tif (!password) return errorResponse(400, \"bad_request\", \"password is required\", {}, requestId);\n\tconst configured = getUiLoginPassword();\n\tif (!configured) return errorResponse(503, \"admin_not_configured\", \"OP_UI_LOGIN_PASSWORD has not been set. Complete setup first.\", {}, requestId);\n\tif (!safeTokenCompare(password, configured)) return errorResponse(401, \"unauthorized\", \"Invalid password\", {}, requestId);\n\tconst sessionToken = createSession();\n\treturn new Response(JSON.stringify({ ok: true }), {\n\t\tstatus: 200,\n\t\theaders: {\n\t\t\t\"content-type\": \"application/json\",\n\t\t\t\"set-cookie\": `op_session=${sessionToken}; HttpOnly; SameSite=Strict; Path=/; Max-Age=86400`,\n\t\t\t\"x-request-id\": requestId\n\t\t}\n\t});\n};\n//#endregion\nexport { POST };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACG,IAAC,IAAI,GAAG,OAAO,KAAK,KAAK;AAC5B,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC;AACtC,CAAC,IAAI,IAAI;AACT,CAAC,IAAI;AACL,EAAE,IAAI,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE;AACnC,CAAC,CAAC,CAAC,MAAM;AACT,EAAE,OAAO,aAAa,CAAC,GAAG,EAAE,aAAa,EAAE,mBAAmB,EAAE,EAAE,EAAE,SAAS,CAAC;AAC9E,CAAC;AACD,CAAC,MAAM,QAAQ,GAAG,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,EAAE;AACxE,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,aAAa,CAAC,GAAG,EAAE,aAAa,EAAE,sBAAsB,EAAE,EAAE,EAAE,SAAS,CAAC;AAC/F,CAAC,MAAM,UAAU,GAAG,kBAAkB,EAAE;AACxC,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,aAAa,CAAC,GAAG,EAAE,sBAAsB,EAAE,8DAA8D,EAAE,EAAE,EAAE,SAAS,CAAC;AAClJ,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,OAAO,aAAa,CAAC,GAAG,EAAE,cAAc,EAAE,kBAAkB,EAAE,EAAE,EAAE,SAAS,CAAC;AAC1H,CAAC,MAAM,YAAY,GAAG,aAAa,EAAE;AACrC,CAAC,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;AACnD,EAAE,MAAM,EAAE,GAAG;AACb,EAAE,OAAO,EAAE;AACX,GAAG,cAAc,EAAE,kBAAkB;AACrC,GAAG,YAAY,EAAE,CAAC,WAAW,EAAE,YAAY,CAAC,kDAAkD,CAAC;AAC/F,GAAG,cAAc,EAAE;AACnB;AACA,EAAE,CAAC;AACH;;;;"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { m as checkDocker, r as composePs, k as buildComposeOptions } from './src-BkvQ5Uuf.js';
|
|
2
|
+
import { b as getState } from './endpoints-Drq_J-2Z.js';
|
|
3
|
+
import { d as getRequestId, r as requireAdmin, h as jsonResponse } from './helpers-CX6xRBmt.js';
|
|
4
|
+
import './chunk-CLZ62Ad-.js';
|
|
5
|
+
import 'node:module';
|
|
6
|
+
import 'node:fs';
|
|
7
|
+
import 'node:path';
|
|
8
|
+
import 'node:child_process';
|
|
9
|
+
import 'node:os';
|
|
10
|
+
import 'buffer';
|
|
11
|
+
import 'node:url';
|
|
12
|
+
import 'node:crypto';
|
|
13
|
+
import 'events';
|
|
14
|
+
import 'fs';
|
|
15
|
+
import 'node:events';
|
|
16
|
+
import 'node:stream';
|
|
17
|
+
import 'node:string_decoder';
|
|
18
|
+
import 'path';
|
|
19
|
+
import 'assert';
|
|
20
|
+
import 'zlib';
|
|
21
|
+
import 'node:assert';
|
|
22
|
+
import 'node:fs/promises';
|
|
23
|
+
|
|
24
|
+
//#region src/routes/admin/containers/list/+server.ts
|
|
25
|
+
var GET = async (event) => {
|
|
26
|
+
const requestId = getRequestId(event);
|
|
27
|
+
const authError = requireAdmin(event, requestId);
|
|
28
|
+
if (authError) return authError;
|
|
29
|
+
const state = getState();
|
|
30
|
+
const dockerCheck = await checkDocker();
|
|
31
|
+
let dockerContainers = null;
|
|
32
|
+
if (dockerCheck.ok) {
|
|
33
|
+
const ps = await composePs(buildComposeOptions(state));
|
|
34
|
+
if (ps.ok && ps.stdout.trim()) try {
|
|
35
|
+
dockerContainers = ps.stdout.trim().split("\n").filter((l) => l.startsWith("{")).map((l) => JSON.parse(l));
|
|
36
|
+
} catch (e) {
|
|
37
|
+
console.warn("[containers.list] Failed to parse docker compose ps output", e);
|
|
38
|
+
dockerContainers = null;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
if (dockerContainers) {
|
|
42
|
+
const dockerStateByService = /* @__PURE__ */ new Map();
|
|
43
|
+
for (const c of dockerContainers) if (c.Service && c.State) dockerStateByService.set(c.Service, c.State);
|
|
44
|
+
for (const service of Object.keys(state.services)) {
|
|
45
|
+
const dockerState = dockerStateByService.get(service);
|
|
46
|
+
if (dockerState) state.services[service] = dockerState === "running" ? "running" : "stopped";
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return jsonResponse(200, {
|
|
50
|
+
containers: state.services,
|
|
51
|
+
dockerContainers,
|
|
52
|
+
dockerAvailable: dockerCheck.ok
|
|
53
|
+
}, requestId);
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
export { GET };
|
|
57
|
+
//# sourceMappingURL=_server.ts-yimewsjO.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_server.ts-yimewsjO.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/admin/containers/list/_server.ts.js"],"sourcesContent":["import { A as composePs, T as checkDocker, w as buildComposeOptions } from \"../../../../../chunks/src.js\";\nimport { c as getState } from \"../../../../../chunks/endpoints.js\";\nimport { d as requireAdmin, l as jsonResponse, o as getRequestId } from \"../../../../../chunks/helpers.js\";\n//#region src/routes/admin/containers/list/+server.ts\nvar GET = async (event) => {\n\tconst requestId = getRequestId(event);\n\tconst authError = requireAdmin(event, requestId);\n\tif (authError) return authError;\n\tconst state = getState();\n\tconst dockerCheck = await checkDocker();\n\tlet dockerContainers = null;\n\tif (dockerCheck.ok) {\n\t\tconst ps = await composePs(buildComposeOptions(state));\n\t\tif (ps.ok && ps.stdout.trim()) try {\n\t\t\tdockerContainers = ps.stdout.trim().split(\"\\n\").filter((l) => l.startsWith(\"{\")).map((l) => JSON.parse(l));\n\t\t} catch (e) {\n\t\t\tconsole.warn(\"[containers.list] Failed to parse docker compose ps output\", e);\n\t\t\tdockerContainers = null;\n\t\t}\n\t}\n\tif (dockerContainers) {\n\t\tconst dockerStateByService = /* @__PURE__ */ new Map();\n\t\tfor (const c of dockerContainers) if (c.Service && c.State) dockerStateByService.set(c.Service, c.State);\n\t\tfor (const service of Object.keys(state.services)) {\n\t\t\tconst dockerState = dockerStateByService.get(service);\n\t\t\tif (dockerState) state.services[service] = dockerState === \"running\" ? \"running\" : \"stopped\";\n\t\t}\n\t}\n\treturn jsonResponse(200, {\n\t\tcontainers: state.services,\n\t\tdockerContainers,\n\t\tdockerAvailable: dockerCheck.ok\n\t}, requestId);\n};\n//#endregion\nexport { GET };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAGA;AACG,IAAC,GAAG,GAAG,OAAO,KAAK,KAAK;AAC3B,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC;AACtC,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC;AACjD,CAAC,IAAI,SAAS,EAAE,OAAO,SAAS;AAChC,CAAC,MAAM,KAAK,GAAG,QAAQ,EAAE;AACzB,CAAC,MAAM,WAAW,GAAG,MAAM,WAAW,EAAE;AACxC,CAAC,IAAI,gBAAgB,GAAG,IAAI;AAC5B,CAAC,IAAI,WAAW,CAAC,EAAE,EAAE;AACrB,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;AACxD,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,IAAI;AACrC,GAAG,gBAAgB,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC7G,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE;AACd,GAAG,OAAO,CAAC,IAAI,CAAC,4DAA4D,EAAE,CAAC,CAAC;AAChF,GAAG,gBAAgB,GAAG,IAAI;AAC1B,EAAE;AACF,CAAC;AACD,CAAC,IAAI,gBAAgB,EAAE;AACvB,EAAE,MAAM,oBAAoB,mBAAmB,IAAI,GAAG,EAAE;AACxD,EAAE,KAAK,MAAM,CAAC,IAAI,gBAAgB,EAAE,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,KAAK,EAAE,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC;AAC1G,EAAE,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;AACrD,GAAG,MAAM,WAAW,GAAG,oBAAoB,CAAC,GAAG,CAAC,OAAO,CAAC;AACxD,GAAG,IAAI,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,WAAW,KAAK,SAAS,GAAG,SAAS,GAAG,SAAS;AAC/F,EAAE;AACF,CAAC;AACD,CAAC,OAAO,YAAY,CAAC,GAAG,EAAE;AAC1B,EAAE,UAAU,EAAE,KAAK,CAAC,QAAQ;AAC5B,EAAE,gBAAgB;AAClB,EAAE,eAAe,EAAE,WAAW,CAAC;AAC/B,EAAE,EAAE,SAAS,CAAC;AACd;;;;"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { a0 as listEnabledAddonIds, S as getAddonServiceNames, m as checkDocker, w as composeStop, k as buildComposeOptions, am as setAddonEnabled, y as createLogger } from './src-BkvQ5Uuf.js';
|
|
2
|
+
|
|
3
|
+
//#region src/lib/server/addon-helpers.ts
|
|
4
|
+
/**
|
|
5
|
+
* Shared addon enable/disable logic for admin route handlers.
|
|
6
|
+
*
|
|
7
|
+
* Both /admin/addons and /admin/addons/:name share the same POST flow:
|
|
8
|
+
* validate → stop running services if disabling → mutate state → audit.
|
|
9
|
+
* This module houses the shared mutation step so neither route duplicates it.
|
|
10
|
+
*/
|
|
11
|
+
var logger = createLogger("addon-helpers");
|
|
12
|
+
/**
|
|
13
|
+
* Stop running services if disabling, then call setAddonEnabled.
|
|
14
|
+
* Returns the mutation result with the final enabled state.
|
|
15
|
+
*/
|
|
16
|
+
async function performAddonToggle(state, name, requestedEnabled, requestId) {
|
|
17
|
+
const wasEnabled = listEnabledAddonIds(state.homeDir).includes(name);
|
|
18
|
+
const nextEnabled = requestedEnabled !== void 0 ? requestedEnabled : wasEnabled;
|
|
19
|
+
if (!nextEnabled && wasEnabled) {
|
|
20
|
+
const serviceNames = getAddonServiceNames(state.homeDir, name);
|
|
21
|
+
if (serviceNames.length > 0) {
|
|
22
|
+
if ((await checkDocker()).ok) try {
|
|
23
|
+
await composeStop(serviceNames, buildComposeOptions(state));
|
|
24
|
+
logger.info("stopped addon services before disable", {
|
|
25
|
+
name,
|
|
26
|
+
services: serviceNames,
|
|
27
|
+
requestId
|
|
28
|
+
});
|
|
29
|
+
} catch (err) {
|
|
30
|
+
logger.warn("failed to stop addon services before disable", {
|
|
31
|
+
name,
|
|
32
|
+
services: serviceNames,
|
|
33
|
+
error: String(err),
|
|
34
|
+
requestId
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
const mutation = setAddonEnabled(state.homeDir, state.stackDir, name, nextEnabled);
|
|
40
|
+
if (!mutation.ok) return mutation;
|
|
41
|
+
return {
|
|
42
|
+
ok: true,
|
|
43
|
+
enabled: listEnabledAddonIds(state.homeDir).includes(name),
|
|
44
|
+
changed: mutation.changed
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export { performAddonToggle as p };
|
|
49
|
+
//# sourceMappingURL=addon-helpers-BpnH-GEc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addon-helpers-BpnH-GEc.js","sources":["../../../.svelte-kit/adapter-node/chunks/addon-helpers.js"],"sourcesContent":["import { F as composeStop, Nt as createLogger, T as checkDocker, ct as setAddonEnabled, it as getAddonServiceNames, st as listEnabledAddonIds, w as buildComposeOptions } from \"./src.js\";\n//#region src/lib/server/addon-helpers.ts\n/**\n* Shared addon enable/disable logic for admin route handlers.\n*\n* Both /admin/addons and /admin/addons/:name share the same POST flow:\n* validate → stop running services if disabling → mutate state → audit.\n* This module houses the shared mutation step so neither route duplicates it.\n*/\nvar logger = createLogger(\"addon-helpers\");\n/**\n* Stop running services if disabling, then call setAddonEnabled.\n* Returns the mutation result with the final enabled state.\n*/\nasync function performAddonToggle(state, name, requestedEnabled, requestId) {\n\tconst wasEnabled = listEnabledAddonIds(state.homeDir).includes(name);\n\tconst nextEnabled = requestedEnabled !== void 0 ? requestedEnabled : wasEnabled;\n\tif (!nextEnabled && wasEnabled) {\n\t\tconst serviceNames = getAddonServiceNames(state.homeDir, name);\n\t\tif (serviceNames.length > 0) {\n\t\t\tif ((await checkDocker()).ok) try {\n\t\t\t\tawait composeStop(serviceNames, buildComposeOptions(state));\n\t\t\t\tlogger.info(\"stopped addon services before disable\", {\n\t\t\t\t\tname,\n\t\t\t\t\tservices: serviceNames,\n\t\t\t\t\trequestId\n\t\t\t\t});\n\t\t\t} catch (err) {\n\t\t\t\tlogger.warn(\"failed to stop addon services before disable\", {\n\t\t\t\t\tname,\n\t\t\t\t\tservices: serviceNames,\n\t\t\t\t\terror: String(err),\n\t\t\t\t\trequestId\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\tconst mutation = setAddonEnabled(state.homeDir, state.stackDir, name, nextEnabled, state);\n\tif (!mutation.ok) return mutation;\n\treturn {\n\t\tok: true,\n\t\tenabled: listEnabledAddonIds(state.homeDir).includes(name),\n\t\tchanged: mutation.changed\n\t};\n}\n//#endregion\nexport { performAddonToggle as t };\n"],"names":[],"mappings":";;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,GAAG,YAAY,CAAC,eAAe,CAAC;AAC1C;AACA;AACA;AACA;AACA,eAAe,kBAAkB,CAAC,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE;AAC5E,CAAC,MAAM,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;AACrE,CAAC,MAAM,WAAW,GAAG,gBAAgB,KAAK,MAAM,GAAG,gBAAgB,GAAG,UAAU;AAChF,CAAC,IAAI,CAAC,WAAW,IAAI,UAAU,EAAE;AACjC,EAAE,MAAM,YAAY,GAAG,oBAAoB,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;AAChE,EAAE,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/B,GAAG,IAAI,CAAC,MAAM,WAAW,EAAE,EAAE,EAAE,EAAE,IAAI;AACrC,IAAI,MAAM,WAAW,CAAC,YAAY,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC;AAC/D,IAAI,MAAM,CAAC,IAAI,CAAC,uCAAuC,EAAE;AACzD,KAAK,IAAI;AACT,KAAK,QAAQ,EAAE,YAAY;AAC3B,KAAK;AACL,KAAK,CAAC;AACN,GAAG,CAAC,CAAC,OAAO,GAAG,EAAE;AACjB,IAAI,MAAM,CAAC,IAAI,CAAC,8CAA8C,EAAE;AAChE,KAAK,IAAI;AACT,KAAK,QAAQ,EAAE,YAAY;AAC3B,KAAK,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC;AACvB,KAAK;AACL,KAAK,CAAC;AACN,GAAG;AACH,EAAE;AACF,CAAC;AACD,CAAC,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,WAAkB,CAAC;AAC1F,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,QAAQ;AAClC,CAAC,OAAO;AACR,EAAE,EAAE,EAAE,IAAI;AACV,EAAE,OAAO,EAAE,mBAAmB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC5D,EAAE,OAAO,EAAE,QAAQ,CAAC;AACpB,EAAE;AACF;;;;"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';
|
|
2
|
+
|
|
3
|
+
//#region \0rolldown/runtime.js
|
|
4
|
+
var __defProp = Object.defineProperty;
|
|
5
|
+
var __commonJSMin = (cb, mod) => () => (mod || (cb((mod = { exports: {} }).exports, mod), cb = null), mod.exports);
|
|
6
|
+
var __exportAll = (all, no_symbols) => {
|
|
7
|
+
let target = {};
|
|
8
|
+
for (var name in all) __defProp(target, name, {
|
|
9
|
+
get: all[name],
|
|
10
|
+
enumerable: true
|
|
11
|
+
});
|
|
12
|
+
__defProp(target, Symbol.toStringTag, { value: "Module" });
|
|
13
|
+
return target;
|
|
14
|
+
};
|
|
15
|
+
var __require = /* @__PURE__ */ createRequire(import.meta.url);
|
|
16
|
+
|
|
17
|
+
export { __commonJSMin as _, __exportAll as a, __require as b };
|
|
18
|
+
//# sourceMappingURL=chunk-CLZ62Ad-.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunk-CLZ62Ad-.js","sources":["../../../.svelte-kit/adapter-node/chunks/chunk.js"],"sourcesContent":["import { createRequire } from \"node:module\";\n//#region \\0rolldown/runtime.js\nvar __defProp = Object.defineProperty;\nvar __commonJSMin = (cb, mod) => () => (mod || (cb((mod = { exports: {} }).exports, mod), cb = null), mod.exports);\nvar __exportAll = (all, no_symbols) => {\n\tlet target = {};\n\tfor (var name in all) __defProp(target, name, {\n\t\tget: all[name],\n\t\tenumerable: true\n\t});\n\tif (!no_symbols) __defProp(target, Symbol.toStringTag, { value: \"Module\" });\n\treturn target;\n};\nvar __require = /* @__PURE__ */ createRequire(import.meta.url);\n//#endregion\nexport { __exportAll as n, __require as r, __commonJSMin as t };\n"],"names":[],"mappings":";;AACA;AACA,IAAI,SAAS,GAAG,MAAM,CAAC,cAAc;AAClC,IAAC,aAAa,GAAG,CAAC,EAAE,EAAE,GAAG,KAAK,OAAO,GAAG,KAAK,EAAE,CAAC,CAAC,GAAG,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,OAAO;AAC9G,IAAC,WAAW,GAAG,CAAC,GAAG,EAAE,UAAU,KAAK;AACvC,CAAC,IAAI,MAAM,GAAG,EAAE;AAChB,CAAC,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE;AAC/C,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC;AAChB,EAAE,UAAU,EAAE;AACd,EAAE,CAAC;AACH,CAAkB,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AAC5E,CAAC,OAAO,MAAM;AACd;AACG,IAAC,SAAS,mBAAmB,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG;;;;"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
//#region src/lib/server/coercion.ts
|
|
2
|
+
/**
|
|
3
|
+
* Shared `unknown` -> typed coercion helpers used by API routes and
|
|
4
|
+
* server-side logic that consumes opaque JSON (e.g. OpenCode config blobs).
|
|
5
|
+
*
|
|
6
|
+
* Each helper returns `undefined` when the value does not match the expected
|
|
7
|
+
* shape. Object helpers shallow-clone so callers can mutate without leaking
|
|
8
|
+
* back into shared state.
|
|
9
|
+
*/
|
|
10
|
+
/** Narrow `unknown` to a plain-object record. Returns a shallow clone. */
|
|
11
|
+
function asRecord(value) {
|
|
12
|
+
return value && typeof value === "object" && !Array.isArray(value) ? { ...value } : void 0;
|
|
13
|
+
}
|
|
14
|
+
/** Narrow `unknown` to a string. */
|
|
15
|
+
function asString(value) {
|
|
16
|
+
return typeof value === "string" ? value : void 0;
|
|
17
|
+
}
|
|
18
|
+
/** Narrow `unknown` to a number. */
|
|
19
|
+
function asNumber(value) {
|
|
20
|
+
return typeof value === "number" ? value : void 0;
|
|
21
|
+
}
|
|
22
|
+
/** Narrow `unknown` to an array of strings. Drops non-string entries. */
|
|
23
|
+
function asStringArray(value) {
|
|
24
|
+
return Array.isArray(value) ? value.filter((e) => typeof e === "string") : void 0;
|
|
25
|
+
}
|
|
26
|
+
/** Narrow `unknown` to a `Record<string, string>`. Returns `undefined` when empty. */
|
|
27
|
+
function asStringRecord(value) {
|
|
28
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) return void 0;
|
|
29
|
+
const entries = Object.entries(value).filter((e) => typeof e[1] === "string");
|
|
30
|
+
return entries.length > 0 ? Object.fromEntries(entries) : void 0;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export { asNumber as a, asRecord as b, asString as c, asStringArray as d, asStringRecord as e };
|
|
34
|
+
//# sourceMappingURL=coercion-TNFJisCC.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coercion-TNFJisCC.js","sources":["../../../.svelte-kit/adapter-node/chunks/coercion.js"],"sourcesContent":["//#region src/lib/server/coercion.ts\n/**\n* Shared `unknown` -> typed coercion helpers used by API routes and\n* server-side logic that consumes opaque JSON (e.g. OpenCode config blobs).\n*\n* Each helper returns `undefined` when the value does not match the expected\n* shape. Object helpers shallow-clone so callers can mutate without leaking\n* back into shared state.\n*/\n/** Narrow `unknown` to a plain-object record. Returns a shallow clone. */\nfunction asRecord(value) {\n\treturn value && typeof value === \"object\" && !Array.isArray(value) ? { ...value } : void 0;\n}\n/** Narrow `unknown` to a string. */\nfunction asString(value) {\n\treturn typeof value === \"string\" ? value : void 0;\n}\n/** Narrow `unknown` to a number. */\nfunction asNumber(value) {\n\treturn typeof value === \"number\" ? value : void 0;\n}\n/** Narrow `unknown` to an array of strings. Drops non-string entries. */\nfunction asStringArray(value) {\n\treturn Array.isArray(value) ? value.filter((e) => typeof e === \"string\") : void 0;\n}\n/** Narrow `unknown` to a `Record<string, string>`. Returns `undefined` when empty. */\nfunction asStringRecord(value) {\n\tif (!value || typeof value !== \"object\" || Array.isArray(value)) return void 0;\n\tconst entries = Object.entries(value).filter((e) => typeof e[1] === \"string\");\n\treturn entries.length > 0 ? Object.fromEntries(entries) : void 0;\n}\n//#endregion\nexport { asStringRecord as a, asStringArray as i, asRecord as n, asString as r, asNumber as t };\n"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,QAAQ,CAAC,KAAK,EAAE;AACzB,CAAC,OAAO,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,MAAM;AAC3F;AACA;AACA,SAAS,QAAQ,CAAC,KAAK,EAAE;AACzB,CAAC,OAAO,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,GAAG,MAAM;AAClD;AACA;AACA,SAAS,QAAQ,CAAC,KAAK,EAAE;AACzB,CAAC,OAAO,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,GAAG,MAAM;AAClD;AACA;AACA,SAAS,aAAa,CAAC,KAAK,EAAE;AAC9B,CAAC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,KAAK,QAAQ,CAAC,GAAG,MAAM;AAClF;AACA;AACA,SAAS,cAAc,CAAC,KAAK,EAAE;AAC/B,CAAC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,MAAM;AAC/E,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC;AAC9E,CAAC,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,MAAM;AACjE;;;;"}
|