@openpalm/ui 0.12.44 → 0.12.46
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/.openpalm-ui-version +1 -1
- package/build/client/_app/immutable/chunks/2ZAFZoVB.js +1 -0
- package/build/client/_app/immutable/chunks/2ZAFZoVB.js.br +2 -0
- package/build/client/_app/immutable/chunks/2ZAFZoVB.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{C263EwX8.js → BL3_TyMa.js} +1 -1
- package/build/client/_app/immutable/chunks/BL3_TyMa.js.br +0 -0
- package/build/client/_app/immutable/chunks/BL3_TyMa.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{BOfhzsO0.js → Drpj1z9_.js} +1 -1
- package/build/client/_app/immutable/chunks/Drpj1z9_.js.br +0 -0
- package/build/client/_app/immutable/chunks/Drpj1z9_.js.gz +0 -0
- package/build/client/_app/immutable/chunks/mcRX5VE_.js +3 -0
- package/build/client/_app/immutable/chunks/mcRX5VE_.js.br +0 -0
- package/build/client/_app/immutable/chunks/mcRX5VE_.js.gz +0 -0
- package/build/client/_app/immutable/entry/{app.kSnQAR_r.js → app.BX4WOOkJ.js} +2 -2
- package/build/client/_app/immutable/entry/app.BX4WOOkJ.js.br +0 -0
- package/build/client/_app/immutable/entry/app.BX4WOOkJ.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.CzUnjAo8.js +1 -0
- package/build/client/_app/immutable/entry/start.CzUnjAo8.js.br +0 -0
- package/build/client/_app/immutable/entry/start.CzUnjAo8.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{1.BsVZFCPI.js → 1.3Ita1ei0.js} +1 -1
- package/build/client/_app/immutable/nodes/1.3Ita1ei0.js.br +2 -0
- package/build/client/_app/immutable/nodes/1.3Ita1ei0.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{10.f9V6641a.js → 10.Dc8NvV1g.js} +1 -1
- package/build/client/_app/immutable/nodes/10.Dc8NvV1g.js.br +0 -0
- package/build/client/_app/immutable/nodes/10.Dc8NvV1g.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{4.7q4gRwAu.js → 4.DvG4V4HI.js} +1 -1
- package/build/client/_app/immutable/nodes/4.DvG4V4HI.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.DvG4V4HI.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{5.0eWsC6Gy.js → 5.CkT1_Qjv.js} +1 -1
- package/build/client/_app/immutable/nodes/5.CkT1_Qjv.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.CkT1_Qjv.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{6.BhH4GsOD.js → 6.DrKhP9TL.js} +1 -1
- package/build/client/_app/immutable/nodes/6.DrKhP9TL.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.DrKhP9TL.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{7.DxSYgHDg.js → 7.B2pS_1t8.js} +1 -1
- package/build/client/_app/immutable/nodes/7.B2pS_1t8.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.B2pS_1t8.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{8._je1c8Vn.js → 8.C3Y0Lc8c.js} +1 -1
- package/build/client/_app/immutable/nodes/8.C3Y0Lc8c.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.C3Y0Lc8c.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{9.CX1687Ng.js → 9.DG10fYPM.js} +1 -1
- package/build/client/_app/immutable/nodes/9.DG10fYPM.js.br +0 -0
- package/build/client/_app/immutable/nodes/9.DG10fYPM.js.gz +0 -0
- package/build/client/_app/version.json +1 -1
- package/build/client/_app/version.json.br +1 -1
- package/build/client/_app/version.json.gz +0 -0
- package/build/server/chunks/1-CglqVQcN.js +9 -0
- package/build/server/chunks/{1-D1gNV4OA.js.map → 1-CglqVQcN.js.map} +1 -1
- package/build/server/chunks/{10-C1p2XJG4.js → 10-qMZlSh5O.js} +6 -6
- package/build/server/chunks/{10-C1p2XJG4.js.map → 10-qMZlSh5O.js.map} +1 -1
- package/build/server/chunks/{4-CoWnFM_n.js → 4-EE6ASb5C.js} +3 -3
- package/build/server/chunks/{4-CoWnFM_n.js.map → 4-EE6ASb5C.js.map} +1 -1
- package/build/server/chunks/{5-BoOkg3j-.js → 5-BGuvGGqS.js} +3 -3
- package/build/server/chunks/{5-BoOkg3j-.js.map → 5-BGuvGGqS.js.map} +1 -1
- package/build/server/chunks/{6-C2CYPs5n.js → 6-DrPAGM-5.js} +3 -3
- package/build/server/chunks/{6-C2CYPs5n.js.map → 6-DrPAGM-5.js.map} +1 -1
- package/build/server/chunks/{7-CD4RFM-K.js → 7-Cx9yQLgO.js} +3 -3
- package/build/server/chunks/{7-CD4RFM-K.js.map → 7-Cx9yQLgO.js.map} +1 -1
- package/build/server/chunks/{8-CGK5TPxb.js → 8-AUF_cwb9.js} +3 -3
- package/build/server/chunks/{8-CGK5TPxb.js.map → 8-AUF_cwb9.js.map} +1 -1
- package/build/server/chunks/{9-CwsLxJkm.js → 9-6nFv30kF.js} +3 -3
- package/build/server/chunks/{9-CwsLxJkm.js.map → 9-6nFv30kF.js.map} +1 -1
- package/build/server/chunks/{Navbar-BR0J8rAC.js → Navbar-CLVFD8Ra.js} +4 -4
- package/build/server/chunks/{Navbar-BR0J8rAC.js.map → Navbar-CLVFD8Ra.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-CgIVqoEs.js → _page.svelte-BcFefKrM.js} +4 -4
- package/build/server/chunks/{_page.svelte-CgIVqoEs.js.map → _page.svelte-BcFefKrM.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-Bg8heLoI.js → _page.svelte-BmHOd4nU.js} +2 -2
- package/build/server/chunks/{_page.svelte-Bg8heLoI.js.map → _page.svelte-BmHOd4nU.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-CJaj_qOx.js → _page.svelte-C1OWQdmF.js} +3 -3
- package/build/server/chunks/{_page.svelte-CJaj_qOx.js.map → _page.svelte-C1OWQdmF.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-DjJOojFy.js → _page.svelte-C6kPwBIh.js} +3 -3
- package/build/server/chunks/{_page.svelte-DjJOojFy.js.map → _page.svelte-C6kPwBIh.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-Dc1I8reh.js → _page.svelte-DH-SZecr.js} +6 -6
- package/build/server/chunks/{_page.svelte-Dc1I8reh.js.map → _page.svelte-DH-SZecr.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-8cQtZj7v.js → _page.svelte-DhvooKGO.js} +6 -6
- package/build/server/chunks/{_page.svelte-8cQtZj7v.js.map → _page.svelte-DhvooKGO.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-CGyQoVDs.js → _page.svelte-JOxVtK8e.js} +6 -6
- package/build/server/chunks/{_page.svelte-CGyQoVDs.js.map → _page.svelte-JOxVtK8e.js.map} +1 -1
- package/build/server/chunks/{_server.ts-UYJEwCq8.js → _server.ts-3oB6eZi1.js} +5 -5
- package/build/server/chunks/{_server.ts-UYJEwCq8.js.map → _server.ts-3oB6eZi1.js.map} +1 -1
- package/build/server/chunks/{_server.ts-t8LgqnI8.js → _server.ts-80FvB3ny.js} +2 -2
- package/build/server/chunks/{_server.ts-t8LgqnI8.js.map → _server.ts-80FvB3ny.js.map} +1 -1
- package/build/server/chunks/{_server.ts-N1-CACT6.js → _server.ts-B-7JXWi-.js} +6 -6
- package/build/server/chunks/{_server.ts-N1-CACT6.js.map → _server.ts-B-7JXWi-.js.map} +1 -1
- package/build/server/chunks/{_server.ts-rwpADfIr.js → _server.ts-B-Kv-9-A.js} +5 -5
- package/build/server/chunks/{_server.ts-rwpADfIr.js.map → _server.ts-B-Kv-9-A.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BGR9YdsG.js → _server.ts-B0FT4XmQ.js} +5 -5
- package/build/server/chunks/{_server.ts-BGR9YdsG.js.map → _server.ts-B0FT4XmQ.js.map} +1 -1
- package/build/server/chunks/{_server.ts-D_QxAyAv.js → _server.ts-B1ailtGc.js} +5 -5
- package/build/server/chunks/{_server.ts-D_QxAyAv.js.map → _server.ts-B1ailtGc.js.map} +1 -1
- package/build/server/chunks/{_server.ts-D2QecBSj.js → _server.ts-B2QiPHNM.js} +7 -7
- package/build/server/chunks/{_server.ts-D2QecBSj.js.map → _server.ts-B2QiPHNM.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Dzt_2LfE.js → _server.ts-B3J2wNRL.js} +5 -5
- package/build/server/chunks/{_server.ts-Dzt_2LfE.js.map → _server.ts-B3J2wNRL.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DlRhaMZr.js → _server.ts-B4CwtPzs.js} +5 -5
- package/build/server/chunks/{_server.ts-DlRhaMZr.js.map → _server.ts-B4CwtPzs.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DsK5y38H.js → _server.ts-B4T__0VK.js} +5 -5
- package/build/server/chunks/{_server.ts-DsK5y38H.js.map → _server.ts-B4T__0VK.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DZ7G-dxe.js → _server.ts-B7Cc_0iX.js} +5 -5
- package/build/server/chunks/{_server.ts-DZ7G-dxe.js.map → _server.ts-B7Cc_0iX.js.map} +1 -1
- package/build/server/chunks/{_server.ts-FgPiO6C7.js → _server.ts-B7ClHUYi.js} +5 -5
- package/build/server/chunks/{_server.ts-FgPiO6C7.js.map → _server.ts-B7ClHUYi.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BadRoa1z.js → _server.ts-BBT19gaK.js} +5 -5
- package/build/server/chunks/{_server.ts-BadRoa1z.js.map → _server.ts-BBT19gaK.js.map} +1 -1
- package/build/server/chunks/{_server.ts-mVIXOXz8.js → _server.ts-BDTBuEt8.js} +6 -6
- package/build/server/chunks/{_server.ts-mVIXOXz8.js.map → _server.ts-BDTBuEt8.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CUwTItmT.js → _server.ts-BFbQQBxZ.js} +7 -7
- package/build/server/chunks/{_server.ts-CUwTItmT.js.map → _server.ts-BFbQQBxZ.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Bvd-ia9u.js → _server.ts-BMZpZwg5.js} +7 -7
- package/build/server/chunks/{_server.ts-Bvd-ia9u.js.map → _server.ts-BMZpZwg5.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BWo-OyxA.js → _server.ts-BP6gM9xM.js} +6 -6
- package/build/server/chunks/{_server.ts-BWo-OyxA.js.map → _server.ts-BP6gM9xM.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Cbgo5wRt.js → _server.ts-BUfcUzM9.js} +6 -6
- package/build/server/chunks/{_server.ts-Cbgo5wRt.js.map → _server.ts-BUfcUzM9.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CgzPyTwl.js → _server.ts-BW4apWXS.js} +5 -5
- package/build/server/chunks/{_server.ts-CgzPyTwl.js.map → _server.ts-BW4apWXS.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CWz_Oxl8.js → _server.ts-BZvL-Q4Z.js} +6 -6
- package/build/server/chunks/{_server.ts-CWz_Oxl8.js.map → _server.ts-BZvL-Q4Z.js.map} +1 -1
- package/build/server/chunks/{_server.ts-GrWc2_wY.js → _server.ts-BdQBTHQG.js} +5 -5
- package/build/server/chunks/{_server.ts-GrWc2_wY.js.map → _server.ts-BdQBTHQG.js.map} +1 -1
- package/build/server/chunks/{_server.ts-D13Tjtky.js → _server.ts-BoFEfCKf.js} +2 -2
- package/build/server/chunks/{_server.ts-D13Tjtky.js.map → _server.ts-BoFEfCKf.js.map} +1 -1
- package/build/server/chunks/{_server.ts-SUokTCB8.js → _server.ts-BpQq6Tra.js} +5 -5
- package/build/server/chunks/{_server.ts-SUokTCB8.js.map → _server.ts-BpQq6Tra.js.map} +1 -1
- package/build/server/chunks/{_server.ts-D0VED1uF.js → _server.ts-BqY-xaZZ.js} +2 -2
- package/build/server/chunks/{_server.ts-D0VED1uF.js.map → _server.ts-BqY-xaZZ.js.map} +1 -1
- package/build/server/chunks/{_server.ts-B8ckfBOc.js → _server.ts-C1LKBpj0.js} +5 -5
- package/build/server/chunks/{_server.ts-B8ckfBOc.js.map → _server.ts-C1LKBpj0.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DFzmbpC_.js → _server.ts-C7x6L6tk.js} +5 -5
- package/build/server/chunks/{_server.ts-DFzmbpC_.js.map → _server.ts-C7x6L6tk.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BQ3TKJuk.js → _server.ts-CE0SYtkK.js} +2 -2
- package/build/server/chunks/{_server.ts-BQ3TKJuk.js.map → _server.ts-CE0SYtkK.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BVN3CaiN.js → _server.ts-CF0qco5A.js} +5 -5
- package/build/server/chunks/{_server.ts-BVN3CaiN.js.map → _server.ts-CF0qco5A.js.map} +1 -1
- package/build/server/chunks/{_server.ts-7lvswLUR.js → _server.ts-CGmeG_kw.js} +5 -5
- package/build/server/chunks/{_server.ts-7lvswLUR.js.map → _server.ts-CGmeG_kw.js.map} +1 -1
- package/build/server/chunks/{_server.ts-XnThb0jk.js → _server.ts-CHSYgfGm.js} +8 -8
- package/build/server/chunks/{_server.ts-XnThb0jk.js.map → _server.ts-CHSYgfGm.js.map} +1 -1
- package/build/server/chunks/{_server.ts-ConZrEff.js → _server.ts-CIFzw-xF.js} +5 -5
- package/build/server/chunks/{_server.ts-ConZrEff.js.map → _server.ts-CIFzw-xF.js.map} +1 -1
- package/build/server/chunks/{_server.ts-UZlOmrXI.js → _server.ts-CMbxd-HU.js} +5 -5
- package/build/server/chunks/{_server.ts-UZlOmrXI.js.map → _server.ts-CMbxd-HU.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BjRpt-15.js → _server.ts-CR1X5u30.js} +5 -5
- package/build/server/chunks/{_server.ts-BjRpt-15.js.map → _server.ts-CR1X5u30.js.map} +1 -1
- package/build/server/chunks/{_server.ts-uK5g2dwE.js → _server.ts-CX3lXZH5.js} +7 -7
- package/build/server/chunks/{_server.ts-uK5g2dwE.js.map → _server.ts-CX3lXZH5.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DymagmXD.js → _server.ts-CXKkMKQ4.js} +5 -5
- package/build/server/chunks/{_server.ts-DymagmXD.js.map → _server.ts-CXKkMKQ4.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BAwI28Af.js → _server.ts-CZJtGGSI.js} +2 -2
- package/build/server/chunks/{_server.ts-BAwI28Af.js.map → _server.ts-CZJtGGSI.js.map} +1 -1
- package/build/server/chunks/{_server.ts-gEMbfdbQ.js → _server.ts-CZn0lwem.js} +5 -5
- package/build/server/chunks/{_server.ts-gEMbfdbQ.js.map → _server.ts-CZn0lwem.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BpHYyIAQ.js → _server.ts-CdJYCrLs.js} +5 -5
- package/build/server/chunks/{_server.ts-BpHYyIAQ.js.map → _server.ts-CdJYCrLs.js.map} +1 -1
- package/build/server/chunks/{_server.ts-D5zW4x4G.js → _server.ts-CdZt-JNg.js} +7 -7
- package/build/server/chunks/{_server.ts-D5zW4x4G.js.map → _server.ts-CdZt-JNg.js.map} +1 -1
- package/build/server/chunks/{_server.ts-D-jybdjv.js → _server.ts-Ce3s5PXy.js} +6 -9
- package/build/server/chunks/_server.ts-Ce3s5PXy.js.map +1 -0
- package/build/server/chunks/{_server.ts-xlsvzVfi.js → _server.ts-CgsOXZNV.js} +5 -5
- package/build/server/chunks/{_server.ts-xlsvzVfi.js.map → _server.ts-CgsOXZNV.js.map} +1 -1
- package/build/server/chunks/{_server.ts-ZaEesYhm.js → _server.ts-CnQh9RiS.js} +4 -4
- package/build/server/chunks/{_server.ts-ZaEesYhm.js.map → _server.ts-CnQh9RiS.js.map} +1 -1
- package/build/server/chunks/{_server.ts-C654vCNg.js → _server.ts-Cp8ocpRl.js} +5 -5
- package/build/server/chunks/{_server.ts-C654vCNg.js.map → _server.ts-Cp8ocpRl.js.map} +1 -1
- package/build/server/chunks/{_server.ts-D9pV4tLm.js → _server.ts-CsXLIKHi.js} +5 -5
- package/build/server/chunks/{_server.ts-D9pV4tLm.js.map → _server.ts-CsXLIKHi.js.map} +1 -1
- package/build/server/chunks/{_server.ts-B8PEGtZu.js → _server.ts-CtoK9w9g.js} +5 -5
- package/build/server/chunks/{_server.ts-B8PEGtZu.js.map → _server.ts-CtoK9w9g.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CDRiwnDy.js → _server.ts-D2KMdWo8.js} +5 -5
- package/build/server/chunks/{_server.ts-CDRiwnDy.js.map → _server.ts-D2KMdWo8.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BuwilXIo.js → _server.ts-D9lzOGAs.js} +5 -5
- package/build/server/chunks/{_server.ts-BuwilXIo.js.map → _server.ts-D9lzOGAs.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BuZUw21A.js → _server.ts-DApkklCw.js} +5 -5
- package/build/server/chunks/{_server.ts-BuZUw21A.js.map → _server.ts-DApkklCw.js.map} +1 -1
- package/build/server/chunks/{_server.ts-4Xr9h6Pa.js → _server.ts-DJIcnF85.js} +5 -5
- package/build/server/chunks/{_server.ts-4Xr9h6Pa.js.map → _server.ts-DJIcnF85.js.map} +1 -1
- package/build/server/chunks/{_server.ts-0QNGItBX.js → _server.ts-DKbAZCDd.js} +5 -5
- package/build/server/chunks/{_server.ts-0QNGItBX.js.map → _server.ts-DKbAZCDd.js.map} +1 -1
- package/build/server/chunks/{_server.ts-nOXme96k.js → _server.ts-DSqb4vX3.js} +5 -5
- package/build/server/chunks/{_server.ts-nOXme96k.js.map → _server.ts-DSqb4vX3.js.map} +1 -1
- package/build/server/chunks/{_server.ts-D2tB04Uo.js → _server.ts-DWki-8e0.js} +6 -9
- package/build/server/chunks/_server.ts-DWki-8e0.js.map +1 -0
- package/build/server/chunks/{_server.ts-DoGLNPhD.js → _server.ts-D_He4n7X.js} +5 -5
- package/build/server/chunks/{_server.ts-DoGLNPhD.js.map → _server.ts-D_He4n7X.js.map} +1 -1
- package/build/server/chunks/{_server.ts-D-tp2zQP.js → _server.ts-DaSVDkGq.js} +6 -6
- package/build/server/chunks/{_server.ts-D-tp2zQP.js.map → _server.ts-DaSVDkGq.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Buq94QaZ.js → _server.ts-DdBxYqjt.js} +5 -5
- package/build/server/chunks/{_server.ts-Buq94QaZ.js.map → _server.ts-DdBxYqjt.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Du2mXeIc.js → _server.ts-DiRmbVsw.js} +6 -6
- package/build/server/chunks/{_server.ts-Du2mXeIc.js.map → _server.ts-DiRmbVsw.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Cq_S1dN_.js → _server.ts-Djw660AM.js} +5 -5
- package/build/server/chunks/{_server.ts-Cq_S1dN_.js.map → _server.ts-Djw660AM.js.map} +1 -1
- package/build/server/chunks/{_server.ts-F0itNDlp.js → _server.ts-DkPXHSDH.js} +7 -7
- package/build/server/chunks/{_server.ts-F0itNDlp.js.map → _server.ts-DkPXHSDH.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CnKA-6OD.js → _server.ts-DlMMGbKO.js} +5 -5
- package/build/server/chunks/{_server.ts-CnKA-6OD.js.map → _server.ts-DlMMGbKO.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CJLdr-ks.js → _server.ts-DnmPUsE2.js} +5 -5
- package/build/server/chunks/{_server.ts-CJLdr-ks.js.map → _server.ts-DnmPUsE2.js.map} +1 -1
- package/build/server/chunks/{_server.ts-WqCDAJIr.js → _server.ts-Dofrjtb5.js} +5 -5
- package/build/server/chunks/{_server.ts-WqCDAJIr.js.map → _server.ts-Dofrjtb5.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CtaNnF4U.js → _server.ts-DpROn0ij.js} +6 -6
- package/build/server/chunks/{_server.ts-CtaNnF4U.js.map → _server.ts-DpROn0ij.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BqdrhN6T.js → _server.ts-DsllAcG6.js} +6 -6
- package/build/server/chunks/{_server.ts-BqdrhN6T.js.map → _server.ts-DsllAcG6.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CuGyrveA.js → _server.ts-DwFNvZgO.js} +5 -5
- package/build/server/chunks/{_server.ts-CuGyrveA.js.map → _server.ts-DwFNvZgO.js.map} +1 -1
- package/build/server/chunks/{_server.ts-D0hW9gvU.js → _server.ts-DxJc4i6x.js} +5 -5
- package/build/server/chunks/{_server.ts-D0hW9gvU.js.map → _server.ts-DxJc4i6x.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CELMsabp.js → _server.ts-DytxnAbh.js} +5 -5
- package/build/server/chunks/{_server.ts-CELMsabp.js.map → _server.ts-DytxnAbh.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BIdmvsMv.js → _server.ts-DzRgPyYY.js} +5 -5
- package/build/server/chunks/{_server.ts-BIdmvsMv.js.map → _server.ts-DzRgPyYY.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CsrnhmTb.js → _server.ts-Gpoove_D.js} +5 -5
- package/build/server/chunks/{_server.ts-CsrnhmTb.js.map → _server.ts-Gpoove_D.js.map} +1 -1
- package/build/server/chunks/{_server.ts-C7FAbT1j.js → _server.ts-HbmEc_dp.js} +5 -5
- package/build/server/chunks/{_server.ts-C7FAbT1j.js.map → _server.ts-HbmEc_dp.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DH0mwAYJ.js → _server.ts-LmSoWbJL.js} +5 -5
- package/build/server/chunks/{_server.ts-DH0mwAYJ.js.map → _server.ts-LmSoWbJL.js.map} +1 -1
- package/build/server/chunks/{_server.ts-fJtSOt2l.js → _server.ts-Qd4jSnEC.js} +6 -6
- package/build/server/chunks/{_server.ts-fJtSOt2l.js.map → _server.ts-Qd4jSnEC.js.map} +1 -1
- package/build/server/chunks/{_server.ts-8QPo43Xf.js → _server.ts-U-836iow.js} +5 -5
- package/build/server/chunks/{_server.ts-8QPo43Xf.js.map → _server.ts-U-836iow.js.map} +1 -1
- package/build/server/chunks/{_server.ts-SeumU7RQ.js → _server.ts-UpsHFuWx.js} +5 -5
- package/build/server/chunks/{_server.ts-SeumU7RQ.js.map → _server.ts-UpsHFuWx.js.map} +1 -1
- package/build/server/chunks/{_server.ts-D4_tom-k.js → _server.ts-V6-_75NH.js} +5 -5
- package/build/server/chunks/{_server.ts-D4_tom-k.js.map → _server.ts-V6-_75NH.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CRTwAa3N.js → _server.ts-Wmpdk4bo.js} +5 -5
- package/build/server/chunks/{_server.ts-CRTwAa3N.js.map → _server.ts-Wmpdk4bo.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DIvIb0la.js → _server.ts-clb7Zu10.js} +6 -6
- package/build/server/chunks/{_server.ts-DIvIb0la.js.map → _server.ts-clb7Zu10.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DhAVjiUd.js → _server.ts-eJmJQRgW.js} +6 -6
- package/build/server/chunks/{_server.ts-DhAVjiUd.js.map → _server.ts-eJmJQRgW.js.map} +1 -1
- package/build/server/chunks/{_server.ts-4G38ZiPm.js → _server.ts-l3d3S-_A.js} +5 -5
- package/build/server/chunks/{_server.ts-4G38ZiPm.js.map → _server.ts-l3d3S-_A.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CbwHb5ED.js → _server.ts-lqHOWGTq.js} +4 -4
- package/build/server/chunks/{_server.ts-CbwHb5ED.js.map → _server.ts-lqHOWGTq.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CGAgOt_d.js → _server.ts-mH9aP1pi.js} +5 -5
- package/build/server/chunks/{_server.ts-CGAgOt_d.js.map → _server.ts-mH9aP1pi.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BPOWpbse.js → _server.ts-qnaPCXUA.js} +5 -5
- package/build/server/chunks/{_server.ts-BPOWpbse.js.map → _server.ts-qnaPCXUA.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BGDMBqlE.js → _server.ts-sStn8JSV.js} +5 -5
- package/build/server/chunks/{_server.ts-BGDMBqlE.js.map → _server.ts-sStn8JSV.js.map} +1 -1
- package/build/server/chunks/{addon-helpers-CpnCoaX5.js → addon-helpers-Cg15Dp5L.js} +3 -3
- package/build/server/chunks/{addon-helpers-CpnCoaX5.js.map → addon-helpers-Cg15Dp5L.js.map} +1 -1
- package/build/server/chunks/{akm-DS8qIY08.js → akm-RIWhKevU.js} +2 -2
- package/build/server/chunks/{akm-DS8qIY08.js.map → akm-RIWhKevU.js.map} +1 -1
- package/build/server/chunks/{catalog-BRAGF5mT.js → catalog-BfbWTnyr.js} +5 -5
- package/build/server/chunks/{catalog-BRAGF5mT.js.map → catalog-BfbWTnyr.js.map} +1 -1
- package/build/server/chunks/{client-WNC_rTIi.js → client-LEri8MRi.js} +2 -2
- package/build/server/chunks/{client-WNC_rTIi.js.map → client-LEri8MRi.js.map} +1 -1
- package/build/server/chunks/{config-DaoatST3.js → config-CAU3dGmV.js} +2 -2
- package/build/server/chunks/{config-DaoatST3.js.map → config-CAU3dGmV.js.map} +1 -1
- package/build/server/chunks/{docker-CwxqEp_G.js → docker-BG3px4tX.js} +2 -2
- package/build/server/chunks/{docker-CwxqEp_G.js.map → docker-BG3px4tX.js.map} +1 -1
- package/build/server/chunks/{endpoints-BltANYH6.js → endpoints-CM0QyBW3.js} +5 -33
- package/build/server/chunks/endpoints-CM0QyBW3.js.map +1 -0
- package/build/server/chunks/environment-DqfL567G.js.map +1 -1
- package/build/server/chunks/{error.svelte-Cepq36_V.js → error.svelte-BB4D98wn.js} +4 -4
- package/build/server/chunks/{error.svelte-Cepq36_V.js.map → error.svelte-BB4D98wn.js.map} +1 -1
- package/build/server/chunks/{helpers-13WhVOMk.js → helpers-Du6wAFM1.js} +3 -3
- package/build/server/chunks/{helpers-13WhVOMk.js.map → helpers-Du6wAFM1.js.map} +1 -1
- package/build/server/chunks/{hooks.server-ChI0JhLw.js → hooks.server-WbZdXFB1.js} +6 -6
- package/build/server/chunks/{hooks.server-ChI0JhLw.js.map → hooks.server-WbZdXFB1.js.map} +1 -1
- package/build/server/chunks/{http-4BaLbiCJ.js → http-DMBsHHDN.js} +2 -2
- package/build/server/chunks/{http-4BaLbiCJ.js.map → http-DMBsHHDN.js.map} +1 -1
- package/build/server/chunks/{internal-l3EWtEye.js → internal-Dxoo2R05.js} +3 -3
- package/build/server/chunks/{internal-l3EWtEye.js.map → internal-Dxoo2R05.js.map} +1 -1
- package/build/server/chunks/{paths-BFRLnvBp.js → paths-B-UhMFIL.js} +2 -2
- package/build/server/chunks/{paths-BFRLnvBp.js.map → paths-B-UhMFIL.js.map} +1 -1
- package/build/server/chunks/{session-cookie-DErsjR7e.js → session-cookie-Dpvcmedh.js} +2 -2
- package/build/server/chunks/{session-cookie-DErsjR7e.js.map → session-cookie-Dpvcmedh.js.map} +1 -1
- package/build/server/chunks/{setup-deploy-D9VREk8i.js → setup-deploy-CqKISPMu.js} +2 -2
- package/build/server/chunks/{setup-deploy-D9VREk8i.js.map → setup-deploy-CqKISPMu.js.map} +1 -1
- package/build/server/chunks/{src-NhUHZOQF.js → src-DfLnu33Z.js} +167 -9
- package/build/server/chunks/src-DfLnu33Z.js.map +1 -0
- package/build/server/chunks/{state-BateNC-M.js → state-BH8Kvc-z.js} +2 -2
- package/build/server/chunks/{state-BateNC-M.js.map → state-BH8Kvc-z.js.map} +1 -1
- package/build/server/chunks/{state2-D5q73U2E.js → state2-hYkvBX2o.js} +2 -2
- package/build/server/chunks/{state2-D5q73U2E.js.map → state2-hYkvBX2o.js.map} +1 -1
- package/build/server/index.js +1 -1
- package/build/server/manifest.js +91 -91
- package/build/server/manifest.js.map +1 -1
- package/package.json +2 -2
- package/build/client/_app/immutable/chunks/BK-tywES.js +0 -1
- package/build/client/_app/immutable/chunks/BK-tywES.js.br +0 -2
- package/build/client/_app/immutable/chunks/BK-tywES.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BOfhzsO0.js.br +0 -0
- package/build/client/_app/immutable/chunks/BOfhzsO0.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C263EwX8.js.br +0 -0
- package/build/client/_app/immutable/chunks/C263EwX8.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CLensmFQ.js +0 -3
- package/build/client/_app/immutable/chunks/CLensmFQ.js.br +0 -0
- package/build/client/_app/immutable/chunks/CLensmFQ.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.kSnQAR_r.js.br +0 -0
- package/build/client/_app/immutable/entry/app.kSnQAR_r.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.CjknpNta.js +0 -1
- package/build/client/_app/immutable/entry/start.CjknpNta.js.br +0 -0
- package/build/client/_app/immutable/entry/start.CjknpNta.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.BsVZFCPI.js.br +0 -1
- package/build/client/_app/immutable/nodes/1.BsVZFCPI.js.gz +0 -0
- package/build/client/_app/immutable/nodes/10.f9V6641a.js.br +0 -0
- package/build/client/_app/immutable/nodes/10.f9V6641a.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.7q4gRwAu.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.7q4gRwAu.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.0eWsC6Gy.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.0eWsC6Gy.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.BhH4GsOD.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.BhH4GsOD.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.DxSYgHDg.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.DxSYgHDg.js.gz +0 -0
- package/build/client/_app/immutable/nodes/8._je1c8Vn.js.br +0 -0
- package/build/client/_app/immutable/nodes/8._je1c8Vn.js.gz +0 -0
- package/build/client/_app/immutable/nodes/9.CX1687Ng.js.br +0 -0
- package/build/client/_app/immutable/nodes/9.CX1687Ng.js.gz +0 -0
- package/build/server/chunks/1-D1gNV4OA.js +0 -9
- package/build/server/chunks/_server.ts-D-jybdjv.js.map +0 -1
- package/build/server/chunks/_server.ts-D2tB04Uo.js.map +0 -1
- package/build/server/chunks/endpoints-BltANYH6.js.map +0 -1
- package/build/server/chunks/src-NhUHZOQF.js.map +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { j as json } from './exports-D1quPX8S.js';
|
|
2
2
|
import { a as PROVIDER_KEY_MAP } from './provider-constants-DPrj3yBX.js';
|
|
3
|
-
import { aa as isSetupComplete, aK as resolveOpenPalmHome, M as detectGpu, O as detectLocalProviders, N as detectHostOpenCode, aE as recommendSetup, i as authJsonPath } from './src-
|
|
4
|
-
import { g as getState } from './state-
|
|
5
|
-
import { r as requireAdmin, d as getRequestId, g as getOpenCodeClient } from './helpers-
|
|
3
|
+
import { aa as isSetupComplete, aK as resolveOpenPalmHome, M as detectGpu, O as detectLocalProviders, N as detectHostOpenCode, aE as recommendSetup, i as authJsonPath } from './src-DfLnu33Z.js';
|
|
4
|
+
import { g as getState } from './state-BH8Kvc-z.js';
|
|
5
|
+
import { r as requireAdmin, d as getRequestId, g as getOpenCodeClient } from './helpers-Du6wAFM1.js';
|
|
6
6
|
import { existsSync, readFileSync } from 'node:fs';
|
|
7
7
|
import './utils-BSRjJDrZ.js';
|
|
8
8
|
import './chunk-CLZ62Ad-.js';
|
|
@@ -24,7 +24,7 @@ import 'zlib';
|
|
|
24
24
|
import 'node:assert';
|
|
25
25
|
import 'node:fs/promises';
|
|
26
26
|
import 'node:os';
|
|
27
|
-
import './endpoints-
|
|
27
|
+
import './endpoints-CM0QyBW3.js';
|
|
28
28
|
|
|
29
29
|
//#region src/routes/api/setup/recommend/+server.ts
|
|
30
30
|
/** Local providers are detected separately as host providers — exclude from "cloud". */
|
|
@@ -97,4 +97,4 @@ var GET = async (event) => {
|
|
|
97
97
|
};
|
|
98
98
|
|
|
99
99
|
export { GET };
|
|
100
|
-
//# sourceMappingURL=_server.ts-
|
|
100
|
+
//# sourceMappingURL=_server.ts-B3J2wNRL.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_server.ts-
|
|
1
|
+
{"version":3,"file":"_server.ts-B3J2wNRL.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/setup/recommend/_server.ts.js"],"sourcesContent":["import { r as json } from \"../../../../../chunks/exports.js\";\nimport { i as PROVIDER_KEY_MAP } from \"../../../../../chunks/provider-constants.js\";\nimport { Qt as authJsonPath, c as recommendSetup, dt as isSetupComplete, i as detectHostOpenCode, l as detectGpu, sn as resolveOpenPalmHome, u as detectLocalProviders } from \"../../../../../chunks/src.js\";\nimport { t as getState } from \"../../../../../chunks/state.js\";\nimport { a as getOpenCodeClient, d as requireAdmin, o as getRequestId } from \"../../../../../chunks/helpers.js\";\nimport { existsSync, readFileSync } from \"node:fs\";\n//#region src/routes/api/setup/recommend/+server.ts\n/** Local providers are detected separately as host providers — exclude from \"cloud\". */\nvar LOCAL_PROVIDER_IDS = new Set([\n\t\"ollama\",\n\t\"lmstudio\",\n\t\"model-runner\",\n\t\"openai-compatible\"\n]);\n/** Providers that have credentials stored in OP_HOME auth.json (API key or OAuth). */\nfunction authJsonConnected() {\n\ttry {\n\t\tconst path = authJsonPath(getState());\n\t\tif (!existsSync(path)) return [];\n\t\tconst data = JSON.parse(readFileSync(path, \"utf-8\"));\n\t\treturn Object.keys(data ?? {});\n\t} catch {\n\t\treturn [];\n\t}\n}\n/** Fallback: providers whose API-key env var is present in the process env. */\nfunction envKeyConnected() {\n\tconst out = [];\n\tfor (const [provider, envVar] of Object.entries(PROVIDER_KEY_MAP)) if (process.env[envVar]) out.push(provider);\n\treturn out;\n}\n/** Cloud providers = OpenCode connected[] ∪ auth.json credentials, minus locals.\n* Falls back to env-key detection when OpenCode is unavailable. */\nasync function detectCloudProviders() {\n\tlet connected;\n\ttry {\n\t\tconst client = getOpenCodeClient();\n\t\tif (await client.isAvailable()) {\n\t\t\tconst catalog = await client.proxy(\"/provider\");\n\t\t\tconst raw = catalog.ok ? catalog.data : {};\n\t\t\tconnected = Array.from(new Set([...raw.connected ?? [], ...authJsonConnected()]));\n\t\t} else connected = Array.from(new Set([...authJsonConnected(), ...envKeyConnected()]));\n\t} catch {\n\t\tconnected = Array.from(new Set([...authJsonConnected(), ...envKeyConnected()]));\n\t}\n\treturn connected.filter((id) => !LOCAL_PROVIDER_IDS.has(id));\n}\nvar GET = async (event) => {\n\tif (isSetupComplete(resolveOpenPalmHome())) {\n\t\tconst authError = requireAdmin(event, getRequestId(event));\n\t\tif (authError) return authError;\n\t}\n\tconst [cloudProviders, gpu, localDetections, hostOpenCode] = await Promise.all([\n\t\tdetectCloudProviders(),\n\t\tdetectGpu(),\n\t\tdetectLocalProviders(),\n\t\tPromise.resolve(detectHostOpenCode())\n\t]);\n\tconst hostProviders = localDetections.filter((p) => p.available).map((p) => ({\n\t\tprovider: p.provider,\n\t\turl: p.url\n\t}));\n\treturn json({\n\t\tok: true,\n\t\trecommendation: recommendSetup({\n\t\t\tcloudProviders,\n\t\t\thostProviders,\n\t\t\tgpu,\n\t\t\thostCredentialCount: hostOpenCode.credentialCount\n\t\t}),\n\t\tgpu,\n\t\tcloudProviders,\n\t\thostProviders\n\t});\n};\n//#endregion\nexport { GET };\n"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { aV as validateProposedState, F as createLogger } from './src-
|
|
2
|
-
import { g as getState } from './state-
|
|
3
|
-
import { d as getRequestId, r as requireAdmin, k as jsonResponse } from './helpers-
|
|
1
|
+
import { aV as validateProposedState, F as createLogger } from './src-DfLnu33Z.js';
|
|
2
|
+
import { g as getState } from './state-BH8Kvc-z.js';
|
|
3
|
+
import { d as getRequestId, r as requireAdmin, k as jsonResponse } from './helpers-Du6wAFM1.js';
|
|
4
4
|
import './chunk-CLZ62Ad-.js';
|
|
5
5
|
import 'node:module';
|
|
6
6
|
import './provider-constants-DPrj3yBX.js';
|
|
@@ -22,7 +22,7 @@ import 'zlib';
|
|
|
22
22
|
import 'node:assert';
|
|
23
23
|
import 'node:fs/promises';
|
|
24
24
|
import 'node:os';
|
|
25
|
-
import './endpoints-
|
|
25
|
+
import './endpoints-CM0QyBW3.js';
|
|
26
26
|
|
|
27
27
|
//#region src/routes/admin/config/validate/+server.ts
|
|
28
28
|
var logger = createLogger("admin.config.validate");
|
|
@@ -40,4 +40,4 @@ var GET = async (event) => {
|
|
|
40
40
|
};
|
|
41
41
|
|
|
42
42
|
export { GET };
|
|
43
|
-
//# sourceMappingURL=_server.ts-
|
|
43
|
+
//# sourceMappingURL=_server.ts-B4CwtPzs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_server.ts-
|
|
1
|
+
{"version":3,"file":"_server.ts-B4CwtPzs.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/admin/config/validate/_server.ts.js"],"sourcesContent":["import { b as validateProposedState, fn as createLogger } from \"../../../../../chunks/src.js\";\nimport { t as getState } from \"../../../../../chunks/state.js\";\nimport { d as requireAdmin, l as jsonResponse, o as getRequestId } from \"../../../../../chunks/helpers.js\";\n//#region src/routes/admin/config/validate/+server.ts\nvar logger = createLogger(\"admin.config.validate\");\nvar GET = async (event) => {\n\tconst requestId = getRequestId(event);\n\tconst authErr = requireAdmin(event, requestId);\n\tif (authErr) return authErr;\n\tconst result = await validateProposedState(getState());\n\tif (!result.ok) logger.warn(\"config validation failed\", {\n\t\trequestId,\n\t\terrors: result.errors,\n\t\twarnings: result.warnings\n\t});\n\treturn jsonResponse(200, result, requestId);\n};\n//#endregion\nexport { GET };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAGA;AACA,IAAI,MAAM,GAAG,YAAY,CAAC,uBAAuB,CAAC;AAC/C,IAAC,GAAG,GAAG,OAAO,KAAK,KAAK;AAC3B,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC;AACtC,CAAC,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC;AAC/C,CAAC,IAAI,OAAO,EAAE,OAAO,OAAO;AAC5B,CAAC,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,QAAQ,EAAE,CAAC;AACvD,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,0BAA0B,EAAE;AACzD,EAAE,SAAS;AACX,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM;AACvB,EAAE,QAAQ,EAAE,MAAM,CAAC;AACnB,EAAE,CAAC;AACH,CAAC,OAAO,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC;AAC5C;;;;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { F as createLogger } from './src-
|
|
2
|
-
import { d as getRequestId, r as requireAdmin, e as errorResponse, g as getOpenCodeClient, k as jsonResponse, p as parseJsonBody, j as jsonBodyError } from './helpers-
|
|
1
|
+
import { F as createLogger } from './src-DfLnu33Z.js';
|
|
2
|
+
import { d as getRequestId, r as requireAdmin, e as errorResponse, g as getOpenCodeClient, k as jsonResponse, p as parseJsonBody, j as jsonBodyError } from './helpers-Du6wAFM1.js';
|
|
3
3
|
import './chunk-CLZ62Ad-.js';
|
|
4
4
|
import 'node:module';
|
|
5
5
|
import './provider-constants-DPrj3yBX.js';
|
|
@@ -21,8 +21,8 @@ import 'zlib';
|
|
|
21
21
|
import 'node:assert';
|
|
22
22
|
import 'node:fs/promises';
|
|
23
23
|
import 'node:os';
|
|
24
|
-
import './endpoints-
|
|
25
|
-
import './state-
|
|
24
|
+
import './endpoints-CM0QyBW3.js';
|
|
25
|
+
import './state-BH8Kvc-z.js';
|
|
26
26
|
|
|
27
27
|
//#region src/routes/admin/opencode/providers/[id]/auth/+server.ts
|
|
28
28
|
var logger = createLogger("opencode.auth");
|
|
@@ -163,4 +163,4 @@ var DELETE = async (event) => {
|
|
|
163
163
|
};
|
|
164
164
|
|
|
165
165
|
export { DELETE, GET, POST };
|
|
166
|
-
//# sourceMappingURL=_server.ts-
|
|
166
|
+
//# sourceMappingURL=_server.ts-B4T__0VK.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_server.ts-DsK5y38H.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/admin/opencode/providers/_id_/auth/_server.ts.js"],"sourcesContent":["import { fn as createLogger } from \"../../../../../../../chunks/src.js\";\nimport { a as getOpenCodeClient, c as jsonBodyError, d as requireAdmin, i as errorResponse, l as jsonResponse, o as getRequestId, u as parseJsonBody } from \"../../../../../../../chunks/helpers.js\";\n//#region src/routes/admin/opencode/providers/[id]/auth/+server.ts\nvar logger = createLogger(\"opencode.auth\");\nvar MAX_API_KEY_LENGTH = 512;\nvar API_KEY_PATTERN = /^[\\x20-\\x7E]+$/;\nvar OAUTH_SESSION_TTL_MS = 6e5;\nvar MAX_PROVIDER_ID_LENGTH = 128;\nvar PROVIDER_ID_PATTERN = /^[a-zA-Z0-9_.-]+$/;\nfunction validateApiKey(key) {\n\tif (key.length > MAX_API_KEY_LENGTH) return \"API key exceeds maximum length\";\n\tif (!API_KEY_PATTERN.test(key)) return \"API key contains invalid characters\";\n\treturn null;\n}\nvar oauthSessions = /* @__PURE__ */ new Map();\nfunction purgeExpiredSessions() {\n\tconst now = Date.now();\n\tfor (const [token, session] of oauthSessions) if (now - session.createdAt > OAUTH_SESSION_TTL_MS) oauthSessions.delete(token);\n}\nvar GET = async (event) => {\n\tconst requestId = getRequestId(event);\n\tconst authError = requireAdmin(event, requestId);\n\tif (authError) return authError;\n\tconst pollToken = event.url.searchParams.get(\"pollToken\");\n\tif (!pollToken) return errorResponse(400, \"bad_request\", \"pollToken query parameter is required\", {}, requestId);\n\tpurgeExpiredSessions();\n\tconst session = oauthSessions.get(pollToken);\n\tif (!session) return errorResponse(404, \"not_found\", \"Poll session not found or expired\", {}, requestId);\n\tif (event.params.id !== session.providerId) return errorResponse(400, \"bad_request\", \"Provider ID does not match poll session\", {}, requestId);\n\tif ((await getOpenCodeClient().completeProviderOAuth(session.providerId, session.methodIndex)).ok) {\n\t\toauthSessions.delete(pollToken);\n\t\tlogger.info(\"oauth authorization completed\", {\n\t\t\tproviderId: session.providerId,\n\t\t\trequestId\n\t\t});\n\t\treturn jsonResponse(200, {\n\t\t\tstatus: \"complete\",\n\t\t\tmessage: \"Authorization successful\"\n\t\t}, requestId);\n\t}\n\tif (Date.now() - session.createdAt > OAUTH_SESSION_TTL_MS) {\n\t\toauthSessions.delete(pollToken);\n\t\treturn jsonResponse(200, {\n\t\t\tstatus: \"error\",\n\t\t\tmessage: \"Authorization session expired\"\n\t\t}, requestId);\n\t}\n\treturn jsonResponse(200, {\n\t\tstatus: \"pending\",\n\t\tmessage: \"Waiting for authorization...\"\n\t}, requestId);\n};\nvar POST = async (event) => {\n\tconst requestId = getRequestId(event);\n\tconst authError = requireAdmin(event, requestId);\n\tif (authError) return authError;\n\tconst result = await parseJsonBody(event.request);\n\tif (\"error\" in result) return jsonBodyError(result, requestId);\n\tconst body = result.data;\n\tconst providerId = event.params.id;\n\tconst mode = typeof body.mode === \"string\" ? body.mode : \"\";\n\tif (!providerId || providerId.length > MAX_PROVIDER_ID_LENGTH || !PROVIDER_ID_PATTERN.test(providerId)) return errorResponse(400, \"bad_request\", \"Invalid provider ID\", {}, requestId);\n\tpurgeExpiredSessions();\n\tif (mode === \"api_key\") {\n\t\tconst apiKey = typeof body.apiKey === \"string\" ? body.apiKey.trim() : \"\";\n\t\tif (!apiKey) return errorResponse(400, \"bad_request\", \"apiKey is required for api_key mode\", {}, requestId);\n\t\tconst keyError = validateApiKey(apiKey);\n\t\tif (keyError) return errorResponse(400, \"bad_request\", keyError, {}, requestId);\n\t\tconst result = await getOpenCodeClient().setProviderApiKey(providerId, apiKey);\n\t\tif (!result.ok) {\n\t\t\tlogger.warn(\"provider api key save failed\", {\n\t\t\t\tproviderId,\n\t\t\t\trequestId,\n\t\t\t\terror: result.code\n\t\t\t});\n\t\t\treturn errorResponse(result.status, result.code, result.message, {}, requestId);\n\t\t}\n\t\tlogger.info(\"provider API key saved to OpenCode auth.json\", {\n\t\t\tproviderId,\n\t\t\trequestId\n\t\t});\n\t\treturn jsonResponse(200, {\n\t\t\tok: true,\n\t\t\tmode: \"api_key\"\n\t\t}, requestId);\n\t}\n\tif (mode === \"oauth\") {\n\t\tif (typeof body.methodIndex !== \"undefined\" && (typeof body.methodIndex !== \"number\" || !Number.isInteger(body.methodIndex) || body.methodIndex < 0)) return errorResponse(400, \"bad_request\", \"methodIndex must be a non-negative integer\", {}, requestId);\n\t\tconst methodIndex = typeof body.methodIndex === \"number\" ? body.methodIndex : 0;\n\t\tconst result = await getOpenCodeClient().startProviderOAuth(providerId, methodIndex);\n\t\tif (!result.ok) return errorResponse(result.status, result.code, result.message, {}, requestId);\n\t\tconst data = result.data;\n\t\tconst pollToken = crypto.randomUUID();\n\t\toauthSessions.set(pollToken, {\n\t\t\tproviderId,\n\t\t\tmethodIndex,\n\t\t\tcreatedAt: Date.now()\n\t\t});\n\t\tlogger.info(\"oauth authorization started\", {\n\t\t\tproviderId,\n\t\t\tmethodIndex,\n\t\t\trequestId\n\t\t});\n\t\treturn jsonResponse(200, {\n\t\t\tok: true,\n\t\t\tmode: \"oauth\",\n\t\t\tpollToken,\n\t\t\turl: data.url,\n\t\t\tmethod: data.method,\n\t\t\tinstructions: data.instructions\n\t\t}, requestId);\n\t}\n\treturn errorResponse(400, \"bad_request\", \"mode must be api_key or oauth\", {}, requestId);\n};\n/**\n* DELETE /admin/opencode/providers/:id/auth — Disconnect a provider by\n* removing its credential from OpenCode's auth.json.\n*/\nvar DELETE = async (event) => {\n\tconst requestId = getRequestId(event);\n\tconst authError = requireAdmin(event, requestId);\n\tif (authError) return authError;\n\tconst providerId = event.params.id ?? \"\";\n\tif (!providerId || providerId.length > MAX_PROVIDER_ID_LENGTH || !PROVIDER_ID_PATTERN.test(providerId)) return errorResponse(400, \"bad_request\", \"Invalid provider ID\", {}, requestId);\n\tconst result = await getOpenCodeClient().proxy(`/auth/${encodeURIComponent(providerId)}`, { method: \"DELETE\" });\n\tif (!result.ok) {\n\t\tlogger.warn(\"provider disconnect failed\", {\n\t\t\tproviderId,\n\t\t\trequestId,\n\t\t\terror: result.code\n\t\t});\n\t\treturn errorResponse(result.status, result.code, result.message, {}, requestId);\n\t}\n\tlogger.info(\"provider credential removed via OpenCode /auth DELETE\", {\n\t\tproviderId,\n\t\trequestId\n\t});\n\treturn jsonResponse(200, { ok: true }, requestId);\n};\n//#endregion\nexport { DELETE, GET, POST };\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"_server.ts-B4T__0VK.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/admin/opencode/providers/_id_/auth/_server.ts.js"],"sourcesContent":["import { fn as createLogger } from \"../../../../../../../chunks/src.js\";\nimport { a as getOpenCodeClient, c as jsonBodyError, d as requireAdmin, i as errorResponse, l as jsonResponse, o as getRequestId, u as parseJsonBody } from \"../../../../../../../chunks/helpers.js\";\n//#region src/routes/admin/opencode/providers/[id]/auth/+server.ts\nvar logger = createLogger(\"opencode.auth\");\nvar MAX_API_KEY_LENGTH = 512;\nvar API_KEY_PATTERN = /^[\\x20-\\x7E]+$/;\nvar OAUTH_SESSION_TTL_MS = 6e5;\nvar MAX_PROVIDER_ID_LENGTH = 128;\nvar PROVIDER_ID_PATTERN = /^[a-zA-Z0-9_.-]+$/;\nfunction validateApiKey(key) {\n\tif (key.length > MAX_API_KEY_LENGTH) return \"API key exceeds maximum length\";\n\tif (!API_KEY_PATTERN.test(key)) return \"API key contains invalid characters\";\n\treturn null;\n}\nvar oauthSessions = /* @__PURE__ */ new Map();\nfunction purgeExpiredSessions() {\n\tconst now = Date.now();\n\tfor (const [token, session] of oauthSessions) if (now - session.createdAt > OAUTH_SESSION_TTL_MS) oauthSessions.delete(token);\n}\nvar GET = async (event) => {\n\tconst requestId = getRequestId(event);\n\tconst authError = requireAdmin(event, requestId);\n\tif (authError) return authError;\n\tconst pollToken = event.url.searchParams.get(\"pollToken\");\n\tif (!pollToken) return errorResponse(400, \"bad_request\", \"pollToken query parameter is required\", {}, requestId);\n\tpurgeExpiredSessions();\n\tconst session = oauthSessions.get(pollToken);\n\tif (!session) return errorResponse(404, \"not_found\", \"Poll session not found or expired\", {}, requestId);\n\tif (event.params.id !== session.providerId) return errorResponse(400, \"bad_request\", \"Provider ID does not match poll session\", {}, requestId);\n\tif ((await getOpenCodeClient().completeProviderOAuth(session.providerId, session.methodIndex)).ok) {\n\t\toauthSessions.delete(pollToken);\n\t\tlogger.info(\"oauth authorization completed\", {\n\t\t\tproviderId: session.providerId,\n\t\t\trequestId\n\t\t});\n\t\treturn jsonResponse(200, {\n\t\t\tstatus: \"complete\",\n\t\t\tmessage: \"Authorization successful\"\n\t\t}, requestId);\n\t}\n\tif (Date.now() - session.createdAt > OAUTH_SESSION_TTL_MS) {\n\t\toauthSessions.delete(pollToken);\n\t\treturn jsonResponse(200, {\n\t\t\tstatus: \"error\",\n\t\t\tmessage: \"Authorization session expired\"\n\t\t}, requestId);\n\t}\n\treturn jsonResponse(200, {\n\t\tstatus: \"pending\",\n\t\tmessage: \"Waiting for authorization...\"\n\t}, requestId);\n};\nvar POST = async (event) => {\n\tconst requestId = getRequestId(event);\n\tconst authError = requireAdmin(event, requestId);\n\tif (authError) return authError;\n\tconst result = await parseJsonBody(event.request);\n\tif (\"error\" in result) return jsonBodyError(result, requestId);\n\tconst body = result.data;\n\tconst providerId = event.params.id;\n\tconst mode = typeof body.mode === \"string\" ? body.mode : \"\";\n\tif (!providerId || providerId.length > MAX_PROVIDER_ID_LENGTH || !PROVIDER_ID_PATTERN.test(providerId)) return errorResponse(400, \"bad_request\", \"Invalid provider ID\", {}, requestId);\n\tpurgeExpiredSessions();\n\tif (mode === \"api_key\") {\n\t\tconst apiKey = typeof body.apiKey === \"string\" ? body.apiKey.trim() : \"\";\n\t\tif (!apiKey) return errorResponse(400, \"bad_request\", \"apiKey is required for api_key mode\", {}, requestId);\n\t\tconst keyError = validateApiKey(apiKey);\n\t\tif (keyError) return errorResponse(400, \"bad_request\", keyError, {}, requestId);\n\t\tconst result = await getOpenCodeClient().setProviderApiKey(providerId, apiKey);\n\t\tif (!result.ok) {\n\t\t\tlogger.warn(\"provider api key save failed\", {\n\t\t\t\tproviderId,\n\t\t\t\trequestId,\n\t\t\t\terror: result.code\n\t\t\t});\n\t\t\treturn errorResponse(result.status, result.code, result.message, {}, requestId);\n\t\t}\n\t\tlogger.info(\"provider API key saved to OpenCode auth.json\", {\n\t\t\tproviderId,\n\t\t\trequestId\n\t\t});\n\t\treturn jsonResponse(200, {\n\t\t\tok: true,\n\t\t\tmode: \"api_key\"\n\t\t}, requestId);\n\t}\n\tif (mode === \"oauth\") {\n\t\tif (typeof body.methodIndex !== \"undefined\" && (typeof body.methodIndex !== \"number\" || !Number.isInteger(body.methodIndex) || body.methodIndex < 0)) return errorResponse(400, \"bad_request\", \"methodIndex must be a non-negative integer\", {}, requestId);\n\t\tconst methodIndex = typeof body.methodIndex === \"number\" ? body.methodIndex : 0;\n\t\tconst result = await getOpenCodeClient().startProviderOAuth(providerId, methodIndex);\n\t\tif (!result.ok) return errorResponse(result.status, result.code, result.message, {}, requestId);\n\t\tconst data = result.data;\n\t\tconst pollToken = crypto.randomUUID();\n\t\toauthSessions.set(pollToken, {\n\t\t\tproviderId,\n\t\t\tmethodIndex,\n\t\t\tcreatedAt: Date.now()\n\t\t});\n\t\tlogger.info(\"oauth authorization started\", {\n\t\t\tproviderId,\n\t\t\tmethodIndex,\n\t\t\trequestId\n\t\t});\n\t\treturn jsonResponse(200, {\n\t\t\tok: true,\n\t\t\tmode: \"oauth\",\n\t\t\tpollToken,\n\t\t\turl: data.url,\n\t\t\tmethod: data.method,\n\t\t\tinstructions: data.instructions\n\t\t}, requestId);\n\t}\n\treturn errorResponse(400, \"bad_request\", \"mode must be api_key or oauth\", {}, requestId);\n};\n/**\n* DELETE /admin/opencode/providers/:id/auth — Disconnect a provider by\n* removing its credential from OpenCode's auth.json.\n*/\nvar DELETE = async (event) => {\n\tconst requestId = getRequestId(event);\n\tconst authError = requireAdmin(event, requestId);\n\tif (authError) return authError;\n\tconst providerId = event.params.id ?? \"\";\n\tif (!providerId || providerId.length > MAX_PROVIDER_ID_LENGTH || !PROVIDER_ID_PATTERN.test(providerId)) return errorResponse(400, \"bad_request\", \"Invalid provider ID\", {}, requestId);\n\tconst result = await getOpenCodeClient().proxy(`/auth/${encodeURIComponent(providerId)}`, { method: \"DELETE\" });\n\tif (!result.ok) {\n\t\tlogger.warn(\"provider disconnect failed\", {\n\t\t\tproviderId,\n\t\t\trequestId,\n\t\t\terror: result.code\n\t\t});\n\t\treturn errorResponse(result.status, result.code, result.message, {}, requestId);\n\t}\n\tlogger.info(\"provider credential removed via OpenCode /auth DELETE\", {\n\t\tproviderId,\n\t\trequestId\n\t});\n\treturn jsonResponse(200, { ok: true }, requestId);\n};\n//#endregion\nexport { DELETE, GET, POST };\n"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { ar as readAutomationLogs } from './src-
|
|
2
|
-
import { g as getState } from './state-
|
|
3
|
-
import { d as getRequestId, r as requireAdmin, e as errorResponse, k as jsonResponse } from './helpers-
|
|
1
|
+
import { ar as readAutomationLogs } from './src-DfLnu33Z.js';
|
|
2
|
+
import { g as getState } from './state-BH8Kvc-z.js';
|
|
3
|
+
import { d as getRequestId, r as requireAdmin, e as errorResponse, k as jsonResponse } from './helpers-Du6wAFM1.js';
|
|
4
4
|
import './chunk-CLZ62Ad-.js';
|
|
5
5
|
import 'node:module';
|
|
6
6
|
import './provider-constants-DPrj3yBX.js';
|
|
@@ -22,7 +22,7 @@ import 'zlib';
|
|
|
22
22
|
import 'node:assert';
|
|
23
23
|
import 'node:fs/promises';
|
|
24
24
|
import 'node:os';
|
|
25
|
-
import './endpoints-
|
|
25
|
+
import './endpoints-CM0QyBW3.js';
|
|
26
26
|
|
|
27
27
|
//#region src/routes/admin/automations/[name]/log/+server.ts
|
|
28
28
|
var SAFE_NAME_RE = /^[a-zA-Z0-9._-]+(?:\.ya?ml)?$/;
|
|
@@ -50,4 +50,4 @@ var GET = async (event) => {
|
|
|
50
50
|
};
|
|
51
51
|
|
|
52
52
|
export { GET };
|
|
53
|
-
//# sourceMappingURL=_server.ts-
|
|
53
|
+
//# sourceMappingURL=_server.ts-B7Cc_0iX.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_server.ts-
|
|
1
|
+
{"version":3,"file":"_server.ts-B7Cc_0iX.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/admin/automations/_name_/log/_server.ts.js"],"sourcesContent":["import { p as readAutomationLogs } from \"../../../../../../chunks/src.js\";\nimport { t as getState } from \"../../../../../../chunks/state.js\";\nimport { d as requireAdmin, i as errorResponse, l as jsonResponse, o as getRequestId } from \"../../../../../../chunks/helpers.js\";\n//#region src/routes/admin/automations/[name]/log/+server.ts\nvar SAFE_NAME_RE = /^[a-zA-Z0-9._-]+(?:\\.ya?ml)?$/;\nvar DEFAULT_LIMIT = 50;\nvar MAX_LIMIT = 500;\nvar GET = async (event) => {\n\tconst requestId = getRequestId(event);\n\tconst authErr = requireAdmin(event, requestId);\n\tif (authErr) return authErr;\n\tconst state = getState();\n\tconst rawName = event.params.name ?? \"\";\n\tconst taskId = rawName.replace(/\\.ya?ml$/, \"\");\n\tif (!SAFE_NAME_RE.test(rawName) || rawName.includes(\"..\") || rawName.includes(\"/\")) return errorResponse(400, \"invalid_input\", \"name must match /^[a-zA-Z0-9._-]+$/\", {}, requestId);\n\tconst limitParam = event.url.searchParams.get(\"limit\");\n\tlet limit = DEFAULT_LIMIT;\n\tif (limitParam !== null) {\n\t\tconst parsed = Number.parseInt(limitParam, 10);\n\t\tif (!Number.isFinite(parsed) || parsed <= 0) return errorResponse(400, \"invalid_input\", \"limit must be a positive integer\", {}, requestId);\n\t\tlimit = Math.min(parsed, MAX_LIMIT);\n\t}\n\treturn jsonResponse(200, {\n\t\tname: taskId,\n\t\tlines: readAutomationLogs(taskId, state.dataDir, limit)\n\t}, requestId);\n};\n//#endregion\nexport { GET };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAGA;AACA,IAAI,YAAY,GAAG,+BAA+B;AAClD,IAAI,aAAa,GAAG,EAAE;AACtB,IAAI,SAAS,GAAG,GAAG;AAChB,IAAC,GAAG,GAAG,OAAO,KAAK,KAAK;AAC3B,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC;AACtC,CAAC,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC;AAC/C,CAAC,IAAI,OAAO,EAAE,OAAO,OAAO;AAC5B,CAAC,MAAM,KAAK,GAAG,QAAQ,EAAE;AACzB,CAAC,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE;AACxC,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;AAC/C,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,aAAa,CAAC,GAAG,EAAE,eAAe,EAAE,qCAAqC,EAAE,EAAE,EAAE,SAAS,CAAC;AACrL,CAAC,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC;AACvD,CAAC,IAAI,KAAK,GAAG,aAAa;AAC1B,CAAC,IAAI,UAAU,KAAK,IAAI,EAAE;AAC1B,EAAE,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC;AAChD,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,OAAO,aAAa,CAAC,GAAG,EAAE,eAAe,EAAE,kCAAkC,EAAE,EAAE,EAAE,SAAS,CAAC;AAC5I,EAAE,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC;AACrC,CAAC;AACD,CAAC,OAAO,YAAY,CAAC,GAAG,EAAE;AAC1B,EAAE,IAAI,EAAE,MAAM;AACd,EAAE,KAAK,EAAE,kBAAkB,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK;AACxD,EAAE,EAAE,SAAS,CAAC;AACd;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { aL as runAssistantAkmCommand } from './src-
|
|
2
|
-
import { g as getState } from './state-
|
|
3
|
-
import { d as getRequestId, r as requireAdmin } from './helpers-
|
|
1
|
+
import { aL as runAssistantAkmCommand } from './src-DfLnu33Z.js';
|
|
2
|
+
import { g as getState } from './state-BH8Kvc-z.js';
|
|
3
|
+
import { d as getRequestId, r as requireAdmin } from './helpers-Du6wAFM1.js';
|
|
4
4
|
import './chunk-CLZ62Ad-.js';
|
|
5
5
|
import 'node:module';
|
|
6
6
|
import './provider-constants-DPrj3yBX.js';
|
|
@@ -22,7 +22,7 @@ import 'zlib';
|
|
|
22
22
|
import 'node:assert';
|
|
23
23
|
import 'node:fs/promises';
|
|
24
24
|
import 'node:os';
|
|
25
|
-
import './endpoints-
|
|
25
|
+
import './endpoints-CM0QyBW3.js';
|
|
26
26
|
|
|
27
27
|
//#region src/lib/server/akm-health-report.ts
|
|
28
28
|
var AKM_HEALTH_REPORT_WINDOWS = [
|
|
@@ -102,4 +102,4 @@ var GET = async (event) => {
|
|
|
102
102
|
};
|
|
103
103
|
|
|
104
104
|
export { GET };
|
|
105
|
-
//# sourceMappingURL=_server.ts-
|
|
105
|
+
//# sourceMappingURL=_server.ts-B7ClHUYi.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_server.ts-
|
|
1
|
+
{"version":3,"file":"_server.ts-B7ClHUYi.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/admin/akm/health-report/_server.ts.js"],"sourcesContent":["import { r as runAssistantAkmCommand } from \"../../../../../chunks/src.js\";\nimport { t as getState } from \"../../../../../chunks/state.js\";\nimport { d as requireAdmin, o as getRequestId } from \"../../../../../chunks/helpers.js\";\n//#region src/lib/server/akm-health-report.ts\nvar AKM_HEALTH_REPORT_WINDOWS = [\n\t\"24h\",\n\t\"72h\",\n\t\"7d\",\n\t\"14d\",\n\t\"30d\"\n];\nfunction clampWindow(value) {\n\treturn AKM_HEALTH_REPORT_WINDOWS.includes(value ?? \"\") ? value : \"72h\";\n}\nfunction errorHtml(window, missing, detail) {\n\treturn `<!doctype html><html lang=\"en\"><head><meta charset=\"utf-8\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"><title>AKM Health Report</title><style>body{margin:0;font-family:Inter,system-ui,sans-serif;background:#07111f;color:#e5eefc;padding:24px}main{max-width:860px;margin:0 auto;background:#101b2d;border:1px solid rgba(148,163,184,.18);border-radius:18px;padding:24px}pre{white-space:pre-wrap;background:#15233a;padding:16px;border-radius:12px;overflow:auto}code{font-family:ui-monospace,SFMono-Regular,monospace}</style></head><body><main><h1>${missing ? \"AKM is not available\" : \"AKM health report unavailable\"}</h1><p>${missing ? \"The <code>akm</code> CLI was not found in the running assistant container.\" : `The admin UI could not build the report from <code>akm health</code> for window <code>${window}</code>.`}</p>${detail ? `<pre>${detail.replace(/&/g, \"&\").replace(/</g, \"<\").replace(/>/g, \">\")}</pre>` : \"\"}</main></body></html>`;\n}\nasync function buildAkmHealthReport(state, requestedWindow) {\n\tconst window = clampWindow(requestedWindow);\n\tconst result = await runAssistantAkmCommand(state, [\n\t\t\"health\",\n\t\t`--since=${window}`,\n\t\t\"--format\",\n\t\t\"html\"\n\t], 3e4);\n\tif (result.missing) return {\n\t\twindow,\n\t\thtml: errorHtml(window, true, \"\")\n\t};\n\tif (!result.ok || !result.stdout.trim()) return {\n\t\twindow,\n\t\thtml: errorHtml(window, false, [result.stderr.trim(), result.stdout.trim()].filter(Boolean).join(\"\\n\\n\"))\n\t};\n\treturn {\n\t\thtml: result.stdout,\n\t\twindow\n\t};\n}\n//#endregion\n//#region src/routes/admin/akm/health-report/+server.ts\nvar REPORT_CSP = [\n\t\"default-src 'none'\",\n\t\"script-src 'self' 'unsafe-inline'\",\n\t\"style-src 'unsafe-inline'\",\n\t\"img-src 'self' data:\",\n\t\"font-src 'self' data:\",\n\t\"connect-src 'none'\",\n\t\"object-src 'none'\",\n\t\"base-uri 'none'\",\n\t\"form-action 'none'\",\n\t\"frame-ancestors 'self'\"\n].join(\"; \");\nvar GET = async (event) => {\n\tconst requestId = getRequestId(event);\n\tconst denied = requireAdmin(event, requestId);\n\tif (denied) return denied;\n\ttry {\n\t\tconst { html } = await buildAkmHealthReport(getState(), event.url.searchParams.get(\"since\"));\n\t\treturn new Response(html, {\n\t\t\tstatus: 200,\n\t\t\theaders: {\n\t\t\t\t\"content-type\": \"text/html; charset=utf-8\",\n\t\t\t\t\"cache-control\": \"no-store\",\n\t\t\t\t\"content-security-policy\": REPORT_CSP,\n\t\t\t\t\"x-request-id\": requestId\n\t\t\t}\n\t\t});\n\t} catch (error) {\n\t\tconst message = error instanceof Error ? error.message : \"Failed to build AKM health report.\";\n\t\treturn new Response(message, {\n\t\t\tstatus: 500,\n\t\t\theaders: {\n\t\t\t\t\"content-type\": \"text/plain; charset=utf-8\",\n\t\t\t\t\"cache-control\": \"no-store\",\n\t\t\t\t\"x-request-id\": requestId\n\t\t\t}\n\t\t});\n\t}\n};\n//#endregion\nexport { GET };\n"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { j as json } from './exports-D1quPX8S.js';
|
|
2
|
-
import { aD as readVersions, au as readPinnedVersions, as as readChannelPreference, a5 as getRunningImages, m as buildComposeOptions, an as parseEnvFile, S as SERVICE_VERSION_KEYS, aR as stripVoiceVariantSuffix, Y as formatForDisplay, b0 as writeVersions, aW as writeChannelPreference, ak as mergeEnvContent, D as DOCKER_IMAGE_NAMES, s as compareComparableVersions, P as PLATFORM_VERSION } from './src-
|
|
3
|
-
import { g as getState } from './state-
|
|
4
|
-
import { d as getRequestId, r as requireAdmin, e as errorResponse } from './helpers-
|
|
2
|
+
import { aD as readVersions, au as readPinnedVersions, as as readChannelPreference, a5 as getRunningImages, m as buildComposeOptions, an as parseEnvFile, S as SERVICE_VERSION_KEYS, aR as stripVoiceVariantSuffix, Y as formatForDisplay, b0 as writeVersions, aW as writeChannelPreference, ak as mergeEnvContent, D as DOCKER_IMAGE_NAMES, s as compareComparableVersions, P as PLATFORM_VERSION } from './src-DfLnu33Z.js';
|
|
3
|
+
import { g as getState } from './state-BH8Kvc-z.js';
|
|
4
|
+
import { d as getRequestId, r as requireAdmin, e as errorResponse } from './helpers-Du6wAFM1.js';
|
|
5
5
|
import { existsSync, writeFileSync, readFileSync } from 'node:fs';
|
|
6
6
|
import './utils-BSRjJDrZ.js';
|
|
7
7
|
import './chunk-CLZ62Ad-.js';
|
|
@@ -24,7 +24,7 @@ import 'zlib';
|
|
|
24
24
|
import 'node:assert';
|
|
25
25
|
import 'node:fs/promises';
|
|
26
26
|
import 'node:os';
|
|
27
|
-
import './endpoints-
|
|
27
|
+
import './endpoints-CM0QyBW3.js';
|
|
28
28
|
|
|
29
29
|
//#region src/routes/admin/versions/+server.ts
|
|
30
30
|
/**
|
|
@@ -241,4 +241,4 @@ var PATCH = async (event) => {
|
|
|
241
241
|
};
|
|
242
242
|
|
|
243
243
|
export { GET, PATCH };
|
|
244
|
-
//# sourceMappingURL=_server.ts-
|
|
244
|
+
//# sourceMappingURL=_server.ts-BBT19gaK.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_server.ts-BadRoa1z.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/admin/versions/_server.ts.js"],"sourcesContent":["import { r as json } from \"../../../../chunks/exports.js\";\nimport { $t as mergeEnvContent, Bt as writeVersions, Ft as readChannelPreference, It as readPinnedVersions, Lt as readVersions, Mt as DOCKER_IMAGE_NAMES, N as buildComposeOptions, Nt as SERVICE_VERSION_KEYS, Rt as stripVoiceVariantSuffix, en as parseEnvFile, in as formatForDisplay, nn as PLATFORM_VERSION, rn as compareComparableVersions, st as getRunningImages, zt as writeChannelPreference } from \"../../../../chunks/src.js\";\nimport { t as getState } from \"../../../../chunks/state.js\";\nimport { d as requireAdmin, i as errorResponse, o as getRequestId } from \"../../../../chunks/helpers.js\";\nimport { existsSync, readFileSync, writeFileSync } from \"node:fs\";\n//#region src/routes/admin/versions/+server.ts\n/**\n* GET /admin/versions — truthful version state (constitution §4.2, §5)\n* PATCH /admin/versions — write pins to state file\n*\n* GET returns THREE distinct values per component (§5 / Phase 5):\n* running — the digest + tag the currently running container was CREATED FROM\n* (read from `docker inspect`, never from a pin file). Null when not running.\n* pinned — the explicit version lock from state/stack.state.env, or null = track latest.\n* Moving tags (\"latest\", \"next\") are normalized to null (they express channel\n* preference, not a lock).\n* available — the resolved latest version on the active channel (silent null on registry down).\n*\n* Backward compatibility for the mixed-version window (old UI + new API or vice versa):\n* - The legacy top-level `versions` field is preserved. Old UIs that read only\n* `body.versions[key]` continue to get the same string they always did (the stored\n* pin value / default). New UIs read `body.components[key].{running,pinned,available}`.\n* - Old UIs cannot see `running` (never could — it's new). They may show a stale pin\n* as \"current\", which was the pre-Phase-5 behaviour. That is acceptable for the\n* transition window; Phase 6 (UpdatesTab rebuild) is where the new shape is consumed.\n*\n* Registry-down asymmetry (§4, compliance G2):\n* Background \"available?\" resolution degrades SILENTLY — a registry outage just\n* leaves `available` null; the stack keeps running what it has.\n* A user-pressed update that can't reach the registry FAILS LOUDLY (handled in\n* /admin/update via applyStack pull-before-up + fatal pull failure).\n*\n* Voice variant on display (§4.2, compliance G3):\n* `running.tag` for the voice service will include the hardware suffix (e.g.\n* \"openpalm/voice:0.12.0-cpu\"). The `running.plainVersion` field strips it for\n* use in the pinning control. `pinned` never carries the suffix (compose adds it).\n*\n* Service-name vs image-name (§5 truthful state):\n* getRunningImages() keys its result by compose SERVICE name, not image name.\n* OP_PORTAL_VERSION images run under services discord/slack/guardian/api/chat/gateway.\n* OP_VOICE_VERSION may run as voice (cpu), voice-cuda, or voice-rocm.\n* We therefore scan runningImages by matching the image tag against the expected\n* image name, not by looking up the image name as a service name.\n*\n* upToDate field removed (§8, Phase-5-item-3):\n* Tag-string equality cannot determine up-to-date status (tags can point to different\n* digests). Phase 6 decides up-to-date by digest comparison after a pull. The route\n* surfaces running.digest, running.plainVersion, pinned, and available as separate\n* truthful values for Phase 6 to use.\n*/\nvar ALLOWED_KEYS = new Set([\n\t...SERVICE_VERSION_KEYS,\n\t\"OP_AUTO_UPDATE\",\n\t\"OP_CHANNEL\"\n]);\nfunction stackEnvPath() {\n\treturn `${getState().stashDir}/env/stack.env`;\n}\nvar STABLE_SEMVER = /^v?(\\d+\\.\\d+\\.\\d+)$/;\nvar PRERELEASE_SEMVER = /^v?(\\d+\\.\\d+\\.\\d+-(?:rc|alpha|beta|next)\\.\\d+)$/;\nvar VOICE_STABLE = /^v?(\\d+\\.\\d+\\.\\d+)-\\w+$/;\n/**\n* Read the Docker Hub namespace from the stack env (OP_IMAGE_NAMESPACE), defaulting to\n* \"openpalm\". Compose uses the same default: ${OP_IMAGE_NAMESPACE:-openpalm}.\n*/\nfunction imageNamespace(stackEnvContent) {\n\treturn (stackEnvContent.OP_IMAGE_NAMESPACE ?? process.env.OP_IMAGE_NAMESPACE ?? \"openpalm\").trim() || \"openpalm\";\n}\nasync function resolveDockerLatestSilent(image, namespace, channel) {\n\ttry {\n\t\tconst res = await fetch(`https://hub.docker.com/v2/repositories/${namespace}/${image}/tags?page_size=100&ordering=last_updated`, {\n\t\t\theaders: { Accept: \"application/json\" },\n\t\t\tsignal: AbortSignal.timeout(5e3)\n\t\t});\n\t\tif (!res.ok) return null;\n\t\tconst data = await res.json();\n\t\tconst isVoice = image === \"voice\";\n\t\tconst candidates = [];\n\t\tfor (const tag of data.results ?? []) {\n\t\t\tconst plain = tag.name.match(STABLE_SEMVER);\n\t\t\tif (plain) {\n\t\t\t\tcandidates.push(plain[1]);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (isVoice) {\n\t\t\t\tconst voice = tag.name.match(VOICE_STABLE);\n\t\t\t\tif (voice) {\n\t\t\t\t\tcandidates.push(voice[1]);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (channel === \"next\") {\n\t\t\t\tconst pre = tag.name.match(PRERELEASE_SEMVER);\n\t\t\t\tif (pre) candidates.push(pre[1]);\n\t\t\t}\n\t\t}\n\t\tif (candidates.length === 0) return null;\n\t\treturn candidates.sort(compareComparableVersions).at(-1) ?? null;\n\t} catch {\n\t\treturn null;\n\t}\n}\nvar _availableCache = /* @__PURE__ */ new Map();\nvar CACHE_TTL_MS = 5 * 6e4;\nasync function resolveAvailableVersions(channel, namespace) {\n\tconst cacheKey = `${channel}:${namespace}`;\n\tconst cached = _availableCache.get(cacheKey);\n\tif (cached && Date.now() - cached.fetchedAt < CACHE_TTL_MS) return cached.versions;\n\tconst results = await Promise.all(SERVICE_VERSION_KEYS.map(async (key) => {\n\t\tconst image = DOCKER_IMAGE_NAMES[key];\n\t\treturn [key, await resolveDockerLatestSilent(image, namespace, channel)];\n\t}));\n\tconst versions = {};\n\tfor (const [k, v] of results) versions[k] = v;\n\t_availableCache.set(cacheKey, {\n\t\tversions,\n\t\tfetchedAt: Date.now()\n\t});\n\treturn versions;\n}\n/**\n* Find the first running (non-not_installed) container whose image tag contains\n* the given image name (e.g. \"/portal:\" or \"/voice:\"). Returns null if none found.\n*/\nfunction findRunningByImage(runningImages, imageName) {\n\tconst needle = `/${imageName}:`;\n\tfor (const ri of Object.values(runningImages)) if (ri.state !== \"not_installed\" && ri.tag.includes(needle)) return ri;\n\treturn null;\n}\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\tif (!state.stackDir) return errorResponse(503, \"not_initialized\", \"Stack directory not configured\", {}, requestId);\n\tconst versions = readVersions(state);\n\tconst pinned = readPinnedVersions(state);\n\tconst channel = readChannelPreference(state);\n\tlet runningImages = {};\n\ttry {\n\t\trunningImages = await getRunningImages(buildComposeOptions(state));\n\t} catch {}\n\tconst path = stackEnvPath();\n\tconst env = existsSync(path) ? parseEnvFile(path) : {};\n\tconst available = await resolveAvailableVersions(channel, imageNamespace(env));\n\tconst components = {};\n\tfor (const key of SERVICE_VERSION_KEYS) {\n\t\tconst imageName = DOCKER_IMAGE_NAMES[key];\n\t\tconst ri = findRunningByImage(runningImages, imageName);\n\t\tlet runningEntry = null;\n\t\tif (ri) {\n\t\t\tconst rawTag = ri.tag.split(\":\").pop() ?? ri.tag;\n\t\t\tconst plainVersion = key === \"OP_VOICE_VERSION\" ? stripVoiceVariantSuffix(rawTag) : rawTag;\n\t\t\trunningEntry = {\n\t\t\t\tdigest: ri.digest,\n\t\t\t\ttag: ri.tag,\n\t\t\t\tplainVersion,\n\t\t\t\thealthStatus: ri.healthStatus,\n\t\t\t\tcontainerState: ri.state\n\t\t\t};\n\t\t}\n\t\tcomponents[key] = {\n\t\t\trunning: runningEntry,\n\t\t\tpinned: pinned[key],\n\t\t\tavailable: available[key] ?? null\n\t\t};\n\t}\n\treturn json({\n\t\tcomponents,\n\t\tchannel,\n\t\tplatformVersion: formatForDisplay(PLATFORM_VERSION),\n\t\tversions,\n\t\tautoUpdate: env[\"OP_AUTO_UPDATE\"] !== \"false\"\n\t});\n};\nvar PATCH = async (event) => {\n\tconst requestId = getRequestId(event);\n\tconst authError = requireAdmin(event, requestId);\n\tif (authError) return authError;\n\tconst state = getState();\n\tif (!state.stackDir) return errorResponse(503, \"not_initialized\", \"Stack directory not configured\", {}, requestId);\n\tlet body;\n\ttry {\n\t\tbody = await event.request.json();\n\t} catch {\n\t\treturn errorResponse(400, \"invalid_body\", \"Request body must be JSON\", {}, requestId);\n\t}\n\tconst versions = body?.versions;\n\tif (!versions || typeof versions !== \"object\") return errorResponse(400, \"invalid_body\", \"Body must include a versions object\", {}, requestId);\n\tconst versionUpdates = {};\n\tconst settingUpdates = {};\n\tlet channelUpdate;\n\tfor (const [key, value] of Object.entries(versions)) {\n\t\tif (!ALLOWED_KEYS.has(key)) return errorResponse(400, \"unknown_version_key\", `Unknown key: ${key}`, {}, requestId);\n\t\tif (typeof value !== \"string\") return errorResponse(400, \"invalid_version_value\", `Value for ${key} must be a string`, {}, requestId);\n\t\tif (key === \"OP_CHANNEL\") channelUpdate = value;\n\t\telse if (key === \"OP_AUTO_UPDATE\") settingUpdates[key] = value;\n\t\telse versionUpdates[key] = value;\n\t}\n\tif (Object.keys(versionUpdates).length > 0) {\n\t\twriteVersions(state, versionUpdates);\n\t\t_availableCache.clear();\n\t}\n\tif (channelUpdate !== void 0) try {\n\t\twriteChannelPreference(state, channelUpdate);\n\t\t_availableCache.clear();\n\t} catch (e) {\n\t\treturn errorResponse(400, \"invalid_channel\", e instanceof Error ? e.message : String(e), {}, requestId);\n\t}\n\tif (Object.keys(settingUpdates).length > 0) {\n\t\tconst path = stackEnvPath();\n\t\twriteFileSync(path, mergeEnvContent(existsSync(path) ? readFileSync(path, \"utf-8\") : \"\", settingUpdates), { mode: 384 });\n\t}\n\treturn json({\n\t\tok: true,\n\t\tversions: readVersions(state)\n\t});\n};\n//#endregion\nexport { GET, PATCH };\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"_server.ts-BBT19gaK.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/admin/versions/_server.ts.js"],"sourcesContent":["import { r as json } from \"../../../../chunks/exports.js\";\nimport { $t as mergeEnvContent, Bt as writeVersions, Ft as readChannelPreference, It as readPinnedVersions, Lt as readVersions, Mt as DOCKER_IMAGE_NAMES, N as buildComposeOptions, Nt as SERVICE_VERSION_KEYS, Rt as stripVoiceVariantSuffix, en as parseEnvFile, in as formatForDisplay, nn as PLATFORM_VERSION, rn as compareComparableVersions, st as getRunningImages, zt as writeChannelPreference } from \"../../../../chunks/src.js\";\nimport { t as getState } from \"../../../../chunks/state.js\";\nimport { d as requireAdmin, i as errorResponse, o as getRequestId } from \"../../../../chunks/helpers.js\";\nimport { existsSync, readFileSync, writeFileSync } from \"node:fs\";\n//#region src/routes/admin/versions/+server.ts\n/**\n* GET /admin/versions — truthful version state (constitution §4.2, §5)\n* PATCH /admin/versions — write pins to state file\n*\n* GET returns THREE distinct values per component (§5 / Phase 5):\n* running — the digest + tag the currently running container was CREATED FROM\n* (read from `docker inspect`, never from a pin file). Null when not running.\n* pinned — the explicit version lock from state/stack.state.env, or null = track latest.\n* Moving tags (\"latest\", \"next\") are normalized to null (they express channel\n* preference, not a lock).\n* available — the resolved latest version on the active channel (silent null on registry down).\n*\n* Backward compatibility for the mixed-version window (old UI + new API or vice versa):\n* - The legacy top-level `versions` field is preserved. Old UIs that read only\n* `body.versions[key]` continue to get the same string they always did (the stored\n* pin value / default). New UIs read `body.components[key].{running,pinned,available}`.\n* - Old UIs cannot see `running` (never could — it's new). They may show a stale pin\n* as \"current\", which was the pre-Phase-5 behaviour. That is acceptable for the\n* transition window; Phase 6 (UpdatesTab rebuild) is where the new shape is consumed.\n*\n* Registry-down asymmetry (§4, compliance G2):\n* Background \"available?\" resolution degrades SILENTLY — a registry outage just\n* leaves `available` null; the stack keeps running what it has.\n* A user-pressed update that can't reach the registry FAILS LOUDLY (handled in\n* /admin/update via applyStack pull-before-up + fatal pull failure).\n*\n* Voice variant on display (§4.2, compliance G3):\n* `running.tag` for the voice service will include the hardware suffix (e.g.\n* \"openpalm/voice:0.12.0-cpu\"). The `running.plainVersion` field strips it for\n* use in the pinning control. `pinned` never carries the suffix (compose adds it).\n*\n* Service-name vs image-name (§5 truthful state):\n* getRunningImages() keys its result by compose SERVICE name, not image name.\n* OP_PORTAL_VERSION images run under services discord/slack/guardian/api/chat/gateway.\n* OP_VOICE_VERSION may run as voice (cpu), voice-cuda, or voice-rocm.\n* We therefore scan runningImages by matching the image tag against the expected\n* image name, not by looking up the image name as a service name.\n*\n* upToDate field removed (§8, Phase-5-item-3):\n* Tag-string equality cannot determine up-to-date status (tags can point to different\n* digests). Phase 6 decides up-to-date by digest comparison after a pull. The route\n* surfaces running.digest, running.plainVersion, pinned, and available as separate\n* truthful values for Phase 6 to use.\n*/\nvar ALLOWED_KEYS = new Set([\n\t...SERVICE_VERSION_KEYS,\n\t\"OP_AUTO_UPDATE\",\n\t\"OP_CHANNEL\"\n]);\nfunction stackEnvPath() {\n\treturn `${getState().stashDir}/env/stack.env`;\n}\nvar STABLE_SEMVER = /^v?(\\d+\\.\\d+\\.\\d+)$/;\nvar PRERELEASE_SEMVER = /^v?(\\d+\\.\\d+\\.\\d+-(?:rc|alpha|beta|next)\\.\\d+)$/;\nvar VOICE_STABLE = /^v?(\\d+\\.\\d+\\.\\d+)-\\w+$/;\n/**\n* Read the Docker Hub namespace from the stack env (OP_IMAGE_NAMESPACE), defaulting to\n* \"openpalm\". Compose uses the same default: ${OP_IMAGE_NAMESPACE:-openpalm}.\n*/\nfunction imageNamespace(stackEnvContent) {\n\treturn (stackEnvContent.OP_IMAGE_NAMESPACE ?? process.env.OP_IMAGE_NAMESPACE ?? \"openpalm\").trim() || \"openpalm\";\n}\nasync function resolveDockerLatestSilent(image, namespace, channel) {\n\ttry {\n\t\tconst res = await fetch(`https://hub.docker.com/v2/repositories/${namespace}/${image}/tags?page_size=100&ordering=last_updated`, {\n\t\t\theaders: { Accept: \"application/json\" },\n\t\t\tsignal: AbortSignal.timeout(5e3)\n\t\t});\n\t\tif (!res.ok) return null;\n\t\tconst data = await res.json();\n\t\tconst isVoice = image === \"voice\";\n\t\tconst candidates = [];\n\t\tfor (const tag of data.results ?? []) {\n\t\t\tconst plain = tag.name.match(STABLE_SEMVER);\n\t\t\tif (plain) {\n\t\t\t\tcandidates.push(plain[1]);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (isVoice) {\n\t\t\t\tconst voice = tag.name.match(VOICE_STABLE);\n\t\t\t\tif (voice) {\n\t\t\t\t\tcandidates.push(voice[1]);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (channel === \"next\") {\n\t\t\t\tconst pre = tag.name.match(PRERELEASE_SEMVER);\n\t\t\t\tif (pre) candidates.push(pre[1]);\n\t\t\t}\n\t\t}\n\t\tif (candidates.length === 0) return null;\n\t\treturn candidates.sort(compareComparableVersions).at(-1) ?? null;\n\t} catch {\n\t\treturn null;\n\t}\n}\nvar _availableCache = /* @__PURE__ */ new Map();\nvar CACHE_TTL_MS = 5 * 6e4;\nasync function resolveAvailableVersions(channel, namespace) {\n\tconst cacheKey = `${channel}:${namespace}`;\n\tconst cached = _availableCache.get(cacheKey);\n\tif (cached && Date.now() - cached.fetchedAt < CACHE_TTL_MS) return cached.versions;\n\tconst results = await Promise.all(SERVICE_VERSION_KEYS.map(async (key) => {\n\t\tconst image = DOCKER_IMAGE_NAMES[key];\n\t\treturn [key, await resolveDockerLatestSilent(image, namespace, channel)];\n\t}));\n\tconst versions = {};\n\tfor (const [k, v] of results) versions[k] = v;\n\t_availableCache.set(cacheKey, {\n\t\tversions,\n\t\tfetchedAt: Date.now()\n\t});\n\treturn versions;\n}\n/**\n* Find the first running (non-not_installed) container whose image tag contains\n* the given image name (e.g. \"/portal:\" or \"/voice:\"). Returns null if none found.\n*/\nfunction findRunningByImage(runningImages, imageName) {\n\tconst needle = `/${imageName}:`;\n\tfor (const ri of Object.values(runningImages)) if (ri.state !== \"not_installed\" && ri.tag.includes(needle)) return ri;\n\treturn null;\n}\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\tif (!state.stackDir) return errorResponse(503, \"not_initialized\", \"Stack directory not configured\", {}, requestId);\n\tconst versions = readVersions(state);\n\tconst pinned = readPinnedVersions(state);\n\tconst channel = readChannelPreference(state);\n\tlet runningImages = {};\n\ttry {\n\t\trunningImages = await getRunningImages(buildComposeOptions(state));\n\t} catch {}\n\tconst path = stackEnvPath();\n\tconst env = existsSync(path) ? parseEnvFile(path) : {};\n\tconst available = await resolveAvailableVersions(channel, imageNamespace(env));\n\tconst components = {};\n\tfor (const key of SERVICE_VERSION_KEYS) {\n\t\tconst imageName = DOCKER_IMAGE_NAMES[key];\n\t\tconst ri = findRunningByImage(runningImages, imageName);\n\t\tlet runningEntry = null;\n\t\tif (ri) {\n\t\t\tconst rawTag = ri.tag.split(\":\").pop() ?? ri.tag;\n\t\t\tconst plainVersion = key === \"OP_VOICE_VERSION\" ? stripVoiceVariantSuffix(rawTag) : rawTag;\n\t\t\trunningEntry = {\n\t\t\t\tdigest: ri.digest,\n\t\t\t\ttag: ri.tag,\n\t\t\t\tplainVersion,\n\t\t\t\thealthStatus: ri.healthStatus,\n\t\t\t\tcontainerState: ri.state\n\t\t\t};\n\t\t}\n\t\tcomponents[key] = {\n\t\t\trunning: runningEntry,\n\t\t\tpinned: pinned[key],\n\t\t\tavailable: available[key] ?? null\n\t\t};\n\t}\n\treturn json({\n\t\tcomponents,\n\t\tchannel,\n\t\tplatformVersion: formatForDisplay(PLATFORM_VERSION),\n\t\tversions,\n\t\tautoUpdate: env[\"OP_AUTO_UPDATE\"] !== \"false\"\n\t});\n};\nvar PATCH = async (event) => {\n\tconst requestId = getRequestId(event);\n\tconst authError = requireAdmin(event, requestId);\n\tif (authError) return authError;\n\tconst state = getState();\n\tif (!state.stackDir) return errorResponse(503, \"not_initialized\", \"Stack directory not configured\", {}, requestId);\n\tlet body;\n\ttry {\n\t\tbody = await event.request.json();\n\t} catch {\n\t\treturn errorResponse(400, \"invalid_body\", \"Request body must be JSON\", {}, requestId);\n\t}\n\tconst versions = body?.versions;\n\tif (!versions || typeof versions !== \"object\") return errorResponse(400, \"invalid_body\", \"Body must include a versions object\", {}, requestId);\n\tconst versionUpdates = {};\n\tconst settingUpdates = {};\n\tlet channelUpdate;\n\tfor (const [key, value] of Object.entries(versions)) {\n\t\tif (!ALLOWED_KEYS.has(key)) return errorResponse(400, \"unknown_version_key\", `Unknown key: ${key}`, {}, requestId);\n\t\tif (typeof value !== \"string\") return errorResponse(400, \"invalid_version_value\", `Value for ${key} must be a string`, {}, requestId);\n\t\tif (key === \"OP_CHANNEL\") channelUpdate = value;\n\t\telse if (key === \"OP_AUTO_UPDATE\") settingUpdates[key] = value;\n\t\telse versionUpdates[key] = value;\n\t}\n\tif (Object.keys(versionUpdates).length > 0) {\n\t\twriteVersions(state, versionUpdates);\n\t\t_availableCache.clear();\n\t}\n\tif (channelUpdate !== void 0) try {\n\t\twriteChannelPreference(state, channelUpdate);\n\t\t_availableCache.clear();\n\t} catch (e) {\n\t\treturn errorResponse(400, \"invalid_channel\", e instanceof Error ? e.message : String(e), {}, requestId);\n\t}\n\tif (Object.keys(settingUpdates).length > 0) {\n\t\tconst path = stackEnvPath();\n\t\twriteFileSync(path, mergeEnvContent(existsSync(path) ? readFileSync(path, \"utf-8\") : \"\", settingUpdates), { mode: 384 });\n\t}\n\treturn json({\n\t\tok: true,\n\t\tversions: readVersions(state)\n\t});\n};\n//#endregion\nexport { GET, PATCH };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,YAAY,GAAG,IAAI,GAAG,CAAC;AAC3B,CAAC,GAAG,oBAAoB;AACxB,CAAC,gBAAgB;AACjB,CAAC;AACD,CAAC,CAAC;AACF,SAAS,YAAY,GAAG;AACxB,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;AAC9C;AACA,IAAI,aAAa,GAAG,qBAAqB;AACzC,IAAI,iBAAiB,GAAG,iDAAiD;AACzE,IAAI,YAAY,GAAG,yBAAyB;AAC5C;AACA;AACA;AACA;AACA,SAAS,cAAc,CAAC,eAAe,EAAE;AACzC,CAAC,OAAO,CAAC,eAAe,CAAC,kBAAkB,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,UAAU,EAAE,IAAI,EAAE,IAAI,UAAU;AACjH;AACA,eAAe,yBAAyB,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE;AACpE,CAAC,IAAI;AACL,EAAE,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,CAAC,uCAAuC,EAAE,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,yCAAyC,CAAC,EAAE;AACnI,GAAG,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE;AAC1C,GAAG,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG;AAClC,GAAG,CAAC;AACJ,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,IAAI;AAC1B,EAAE,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE;AAC/B,EAAE,MAAM,OAAO,GAAG,KAAK,KAAK,OAAO;AACnC,EAAE,MAAM,UAAU,GAAG,EAAE;AACvB,EAAE,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE;AACxC,GAAG,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;AAC9C,GAAG,IAAI,KAAK,EAAE;AACd,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC7B,IAAI;AACJ,GAAG;AACH,GAAG,IAAI,OAAO,EAAE;AAChB,IAAI,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;AAC9C,IAAI,IAAI,KAAK,EAAE;AACf,KAAK,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9B,KAAK;AACL,IAAI;AACJ,GAAG;AACH,GAAG,IAAI,OAAO,KAAK,MAAM,EAAE;AAC3B,IAAI,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;AACjD,IAAI,IAAI,GAAG,EAAE,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACpC,GAAG;AACH,EAAE;AACF,EAAE,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,IAAI;AAC1C,EAAE,OAAO,UAAU,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI;AAClE,CAAC,CAAC,CAAC,MAAM;AACT,EAAE,OAAO,IAAI;AACb,CAAC;AACD;AACA,IAAI,eAAe,mBAAmB,IAAI,GAAG,EAAE;AAC/C,IAAI,YAAY,GAAG,CAAC,GAAG,GAAG;AAC1B,eAAe,wBAAwB,CAAC,OAAO,EAAE,SAAS,EAAE;AAC5D,CAAC,MAAM,QAAQ,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;AAC3C,CAAC,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC7C,CAAC,IAAI,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,SAAS,GAAG,YAAY,EAAE,OAAO,MAAM,CAAC,QAAQ;AACnF,CAAC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,GAAG,CAAC,OAAO,GAAG,KAAK;AAC3E,EAAE,MAAM,KAAK,GAAG,kBAAkB,CAAC,GAAG,CAAC;AACvC,EAAE,OAAO,CAAC,GAAG,EAAE,MAAM,yBAAyB,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AAC1E,CAAC,CAAC,CAAC,CAAC;AACJ,CAAC,MAAM,QAAQ,GAAG,EAAE;AACpB,CAAC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;AAC9C,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,EAAE;AAC/B,EAAE,QAAQ;AACV,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG;AACrB,EAAE,CAAC;AACH,CAAC,OAAO,QAAQ;AAChB;AACA;AACA;AACA;AACA;AACA,SAAS,kBAAkB,CAAC,aAAa,EAAE,SAAS,EAAE;AACtD,CAAC,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;AAChC,CAAC,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,KAAK,eAAe,IAAI,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE;AACtH,CAAC,OAAO,IAAI;AACZ;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,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,aAAa,CAAC,GAAG,EAAE,iBAAiB,EAAE,gCAAgC,EAAE,EAAE,EAAE,SAAS,CAAC;AACnH,CAAC,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC;AACrC,CAAC,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,CAAC;AACzC,CAAC,MAAM,OAAO,GAAG,qBAAqB,CAAC,KAAK,CAAC;AAC7C,CAAC,IAAI,aAAa,GAAG,EAAE;AACvB,CAAC,IAAI;AACL,EAAE,aAAa,GAAG,MAAM,gBAAgB,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;AACpE,CAAC,CAAC,CAAC,MAAM,CAAC;AACV,CAAC,MAAM,IAAI,GAAG,YAAY,EAAE;AAC5B,CAAC,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE;AACvD,CAAC,MAAM,SAAS,GAAG,MAAM,wBAAwB,CAAC,OAAO,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC;AAC/E,CAAC,MAAM,UAAU,GAAG,EAAE;AACtB,CAAC,KAAK,MAAM,GAAG,IAAI,oBAAoB,EAAE;AACzC,EAAE,MAAM,SAAS,GAAG,kBAAkB,CAAC,GAAG,CAAC;AAC3C,EAAE,MAAM,EAAE,GAAG,kBAAkB,CAAC,aAAa,EAAE,SAAS,CAAC;AACzD,EAAE,IAAI,YAAY,GAAG,IAAI;AACzB,EAAE,IAAI,EAAE,EAAE;AACV,GAAG,MAAM,MAAM,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,GAAG;AACnD,GAAG,MAAM,YAAY,GAAG,GAAG,KAAK,kBAAkB,GAAG,uBAAuB,CAAC,MAAM,CAAC,GAAG,MAAM;AAC7F,GAAG,YAAY,GAAG;AAClB,IAAI,MAAM,EAAE,EAAE,CAAC,MAAM;AACrB,IAAI,GAAG,EAAE,EAAE,CAAC,GAAG;AACf,IAAI,YAAY;AAChB,IAAI,YAAY,EAAE,EAAE,CAAC,YAAY;AACjC,IAAI,cAAc,EAAE,EAAE,CAAC;AACvB,IAAI;AACJ,EAAE;AACF,EAAE,UAAU,CAAC,GAAG,CAAC,GAAG;AACpB,GAAG,OAAO,EAAE,YAAY;AACxB,GAAG,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC;AACtB,GAAG,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,IAAI;AAChC,GAAG;AACH,CAAC;AACD,CAAC,OAAO,IAAI,CAAC;AACb,EAAE,UAAU;AACZ,EAAE,OAAO;AACT,EAAE,eAAe,EAAE,gBAAgB,CAAC,gBAAgB,CAAC;AACrD,EAAE,QAAQ;AACV,EAAE,UAAU,EAAE,GAAG,CAAC,gBAAgB,CAAC,KAAK;AACxC,EAAE,CAAC;AACH;AACG,IAAC,KAAK,GAAG,OAAO,KAAK,KAAK;AAC7B,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,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,aAAa,CAAC,GAAG,EAAE,iBAAiB,EAAE,gCAAgC,EAAE,EAAE,EAAE,SAAS,CAAC;AACnH,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,cAAc,EAAE,2BAA2B,EAAE,EAAE,EAAE,SAAS,CAAC;AACvF,CAAC;AACD,CAAC,MAAM,QAAQ,GAAG,IAAI,EAAE,QAAQ;AAChC,CAAC,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,OAAO,aAAa,CAAC,GAAG,EAAE,cAAc,EAAE,qCAAqC,EAAE,EAAE,EAAE,SAAS,CAAC;AAC/I,CAAC,MAAM,cAAc,GAAG,EAAE;AAC1B,CAAC,MAAM,cAAc,GAAG,EAAE;AAC1B,CAAC,IAAI,aAAa;AAClB,CAAC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;AACtD,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,aAAa,CAAC,GAAG,EAAE,qBAAqB,EAAE,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,CAAC;AACpH,EAAE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,OAAO,aAAa,CAAC,GAAG,EAAE,uBAAuB,EAAE,CAAC,UAAU,EAAE,GAAG,CAAC,iBAAiB,CAAC,EAAE,EAAE,EAAE,SAAS,CAAC;AACvI,EAAE,IAAI,GAAG,KAAK,YAAY,EAAE,aAAa,GAAG,KAAK;AACjD,OAAO,IAAI,GAAG,KAAK,gBAAgB,EAAE,cAAc,CAAC,GAAG,CAAC,GAAG,KAAK;AAChE,OAAO,cAAc,CAAC,GAAG,CAAC,GAAG,KAAK;AAClC,CAAC;AACD,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7C,EAAE,aAAa,CAAC,KAAK,EAAE,cAAc,CAAC;AACtC,EAAE,eAAe,CAAC,KAAK,EAAE;AACzB,CAAC;AACD,CAAC,IAAI,aAAa,KAAK,MAAM,EAAE,IAAI;AACnC,EAAE,sBAAsB,CAAC,KAAK,EAAE,aAAa,CAAC;AAC9C,EAAE,eAAe,CAAC,KAAK,EAAE;AACzB,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE;AACb,EAAE,OAAO,aAAa,CAAC,GAAG,EAAE,iBAAiB,EAAE,CAAC,YAAY,KAAK,GAAG,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,CAAC;AACzG,CAAC;AACD,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7C,EAAE,MAAM,IAAI,GAAG,YAAY,EAAE;AAC7B,EAAE,aAAa,CAAC,IAAI,EAAE,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;AAC1H,CAAC;AACD,CAAC,OAAO,IAAI,CAAC;AACb,EAAE,EAAE,EAAE,IAAI;AACV,EAAE,QAAQ,EAAE,YAAY,CAAC,KAAK;AAC9B,EAAE,CAAC;AACH;;;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { g as getState } from './state-
|
|
2
|
-
import { d as getRequestId, r as requireAdmin, e as errorResponse, k as jsonResponse } from './helpers-
|
|
3
|
-
import { d as detectEmbeddingSettings } from './akm-
|
|
4
|
-
import './src-
|
|
1
|
+
import { g as getState } from './state-BH8Kvc-z.js';
|
|
2
|
+
import { d as getRequestId, r as requireAdmin, e as errorResponse, k as jsonResponse } from './helpers-Du6wAFM1.js';
|
|
3
|
+
import { d as detectEmbeddingSettings } from './akm-RIWhKevU.js';
|
|
4
|
+
import './src-DfLnu33Z.js';
|
|
5
5
|
import './chunk-CLZ62Ad-.js';
|
|
6
6
|
import 'node:module';
|
|
7
7
|
import './provider-constants-DPrj3yBX.js';
|
|
@@ -23,7 +23,7 @@ import 'zlib';
|
|
|
23
23
|
import 'node:assert';
|
|
24
24
|
import 'node:fs/promises';
|
|
25
25
|
import 'node:os';
|
|
26
|
-
import './endpoints-
|
|
26
|
+
import './endpoints-CM0QyBW3.js';
|
|
27
27
|
|
|
28
28
|
//#region src/routes/admin/akm/embedding/detect/+server.ts
|
|
29
29
|
var POST = async (event) => {
|
|
@@ -36,4 +36,4 @@ var POST = async (event) => {
|
|
|
36
36
|
};
|
|
37
37
|
|
|
38
38
|
export { POST };
|
|
39
|
-
//# sourceMappingURL=_server.ts-
|
|
39
|
+
//# sourceMappingURL=_server.ts-BDTBuEt8.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_server.ts-
|
|
1
|
+
{"version":3,"file":"_server.ts-BDTBuEt8.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/admin/akm/embedding/detect/_server.ts.js"],"sourcesContent":["import { t as getState } from \"../../../../../../chunks/state.js\";\nimport { d as requireAdmin, i as errorResponse, l as jsonResponse, o as getRequestId } from \"../../../../../../chunks/helpers.js\";\nimport { t as detectEmbeddingSettings } from \"../../../../../../chunks/akm.js\";\n//#region src/routes/admin/akm/embedding/detect/+server.ts\nvar POST = async (event) => {\n\tconst requestId = getRequestId(event);\n\tconst authError = requireAdmin(event, requestId);\n\tif (authError) return authError;\n\tconst detected = await detectEmbeddingSettings(getState());\n\tif (!detected.ok) return errorResponse(404, \"embedding_not_detected\", detected.message, {}, requestId);\n\treturn jsonResponse(200, detected, requestId);\n};\n//#endregion\nexport { POST };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA;AACG,IAAC,IAAI,GAAG,OAAO,KAAK,KAAK;AAC5B,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,QAAQ,GAAG,MAAM,uBAAuB,CAAC,QAAQ,EAAE,CAAC;AAC3D,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,aAAa,CAAC,GAAG,EAAE,wBAAwB,EAAE,QAAQ,CAAC,OAAO,EAAE,EAAE,EAAE,SAAS,CAAC;AACvG,CAAC,OAAO,YAAY,CAAC,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC;AAC9C;;;;"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { ay as readStackEnv } from './src-
|
|
2
|
-
import { g as getState } from './state-
|
|
3
|
-
import { d as getRequestId, r as requireAdmin, e as errorResponse } from './helpers-
|
|
4
|
-
import { o as opencodeFetch } from './http-
|
|
5
|
-
import { g as getCurrentConfig } from './config-
|
|
1
|
+
import { ay as readStackEnv } from './src-DfLnu33Z.js';
|
|
2
|
+
import { g as getState } from './state-BH8Kvc-z.js';
|
|
3
|
+
import { d as getRequestId, r as requireAdmin, e as errorResponse } from './helpers-Du6wAFM1.js';
|
|
4
|
+
import { o as opencodeFetch } from './http-DMBsHHDN.js';
|
|
5
|
+
import { g as getCurrentConfig } from './config-CAU3dGmV.js';
|
|
6
6
|
import { existsSync, readFileSync } from 'node:fs';
|
|
7
7
|
import { join } from 'node:path';
|
|
8
8
|
import './chunk-CLZ62Ad-.js';
|
|
@@ -24,7 +24,7 @@ import 'zlib';
|
|
|
24
24
|
import 'node:assert';
|
|
25
25
|
import 'node:fs/promises';
|
|
26
26
|
import 'node:os';
|
|
27
|
-
import './endpoints-
|
|
27
|
+
import './endpoints-CM0QyBW3.js';
|
|
28
28
|
import './coercion-TNFJisCC.js';
|
|
29
29
|
|
|
30
30
|
//#region src/lib/server/speech-prep.ts
|
|
@@ -205,4 +205,4 @@ var POST = async (event) => {
|
|
|
205
205
|
};
|
|
206
206
|
|
|
207
207
|
export { POST };
|
|
208
|
-
//# sourceMappingURL=_server.ts-
|
|
208
|
+
//# sourceMappingURL=_server.ts-BFbQQBxZ.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_server.ts-CUwTItmT.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/speak/_server.ts.js"],"sourcesContent":["import { Ht as readStackEnv } from \"../../../../chunks/src.js\";\nimport { t as getState } from \"../../../../chunks/state.js\";\nimport { d as requireAdmin, i as errorResponse, o as getRequestId } from \"../../../../chunks/helpers.js\";\nimport { t as opencodeFetch } from \"../../../../chunks/http.js\";\nimport { t as getCurrentConfig } from \"../../../../chunks/config.js\";\nimport { existsSync, readFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\n//#region src/lib/server/speech-prep.ts\nfunction personaPath() {\n\treturn join(getState().configDir, \"assistant\", \"persona.md\");\n}\nfunction readPersona() {\n\tconst path = personaPath();\n\tif (!existsSync(path)) return \"\";\n\ttry {\n\t\treturn readFileSync(path, \"utf-8\").trim();\n\t} catch {\n\t\treturn \"\";\n\t}\n}\nfunction extractText(response) {\n\treturn (response.parts ?? []).filter((part) => part.type === \"text\" && typeof part.text === \"string\").map((part) => part.text?.trim() ?? \"\").join(\" \").trim();\n}\nfunction buildPrompt(input) {\n\tconst personaBlock = input.persona ? input.persona : \"No persona markdown is configured. Use a neutral, helpful, conversational tone.\";\n\tif (input.mode === \"chat_ack\") return [\n\t\t\"You are preparing a short spoken acknowledgement for text-to-speech.\",\n\t\t\"Return only the exact words to speak.\",\n\t\t\"Keep it to one brief sentence.\",\n\t\t\"Sound conversational and aligned with the persona context.\",\n\t\t\"Do not use markdown, lists, or quotes.\",\n\t\t\"Do not answer the full request. Just acknowledge that you are working on it.\",\n\t\t\"\",\n\t\t\"Persona markdown:\",\n\t\tpersonaBlock,\n\t\t\"\",\n\t\t\"User request:\",\n\t\tinput.userText\n\t].join(\"\\n\");\n\treturn [\n\t\t\"You are preparing a spoken summary for text-to-speech.\",\n\t\t\"Return only the exact words to speak.\",\n\t\t\"Rewrite the final assistant reply into a concise, natural, conversational response.\",\n\t\t\"Preserve the meaning and important caveats.\",\n\t\t\"Keep it brief enough for audio playback.\",\n\t\t\"Do not use markdown, lists, or quotes.\",\n\t\t\"\",\n\t\t\"Persona markdown:\",\n\t\tpersonaBlock,\n\t\t\"\",\n\t\t\"User request:\",\n\t\tinput.userText,\n\t\t\"\",\n\t\t\"Final assistant reply:\",\n\t\tinput.assistantText ?? \"\"\n\t].join(\"\\n\");\n}\nfunction resolveSpeechModel(config) {\n\tconst small = typeof config.small_model === \"string\" ? config.small_model.trim() : \"\";\n\tif (small) return small;\n\treturn (typeof config.model === \"string\" ? config.model.trim() : \"\") || null;\n}\nasync function loadSpeechConfig() {\n\ttry {\n\t\treturn await opencodeFetch(\"/config\");\n\t} catch {\n\t\treturn getCurrentConfig();\n\t}\n}\nasync function prepareSpeechText(input) {\n\tconst userText = input.userText.trim();\n\tif (!userText) return null;\n\tif (input.mode === \"chat_reply\" && !input.assistantText?.trim()) return null;\n\tconst persona = readPersona();\n\tconst model = resolveSpeechModel(await loadSpeechConfig());\n\tconst prompt = buildPrompt({\n\t\tmode: input.mode,\n\t\tuserText,\n\t\tassistantText: input.assistantText?.trim(),\n\t\tpersona\n\t});\n\tlet sessionId = \"\";\n\ttry {\n\t\tconst created = await opencodeFetch(\"/session\", {\n\t\t\tmethod: \"POST\",\n\t\t\tbody: JSON.stringify({})\n\t\t});\n\t\tsessionId = typeof created.id === \"string\" ? created.id : \"\";\n\t\tif (!sessionId) return null;\n\t\treturn extractText(await opencodeFetch(`/session/${encodeURIComponent(sessionId)}/message`, {\n\t\t\tmethod: \"POST\",\n\t\t\tbody: JSON.stringify({\n\t\t\t\tparts: [{\n\t\t\t\t\ttype: \"text\",\n\t\t\t\t\ttext: prompt\n\t\t\t\t}],\n\t\t\t\t...model ? { model } : {}\n\t\t\t})\n\t\t})) || null;\n\t} finally {\n\t\tif (sessionId) await opencodeFetch(`/session/${encodeURIComponent(sessionId)}`, { method: \"DELETE\" }).catch(() => {});\n\t}\n}\n//#endregion\n//#region src/routes/api/speak/+server.ts\nvar DEFAULT_MODEL = \"kokoro\";\nvar DEFAULT_VOICE = \"bf_isabella\";\nvar DEFAULT_FORMAT = \"wav\";\nvar UPSTREAM_TIMEOUT_MS = 6e4;\nfunction redactKey(s) {\n\treturn s.replace(/(sk-[A-Za-z0-9_-]{4,})/g, \"sk-***\").replace(/(Bearer\\s+)[A-Za-z0-9._-]+/gi, \"$1***\");\n}\nvar POST = async (event) => {\n\tconst requestId = getRequestId(event);\n\tconst authError = requireAdmin(event, requestId);\n\tif (authError) return authError;\n\tconst stackEnv = readStackEnv(getState().homeDir);\n\tconst ttsBaseURL = (stackEnv.OP_TTS_BASE_URL || process.env.OP_TTS_BASE_URL || \"\").trim();\n\tconst ttsModel = (stackEnv.OP_TTS_MODEL || process.env.OP_TTS_MODEL || \"\").trim() || DEFAULT_MODEL;\n\tconst ttsVoice = (stackEnv.OP_TTS_VOICE || process.env.OP_TTS_VOICE || \"\").trim() || DEFAULT_VOICE;\n\tconst ttsApiKey = (process.env.OP_TTS_API_KEY ?? \"\").trim();\n\tif (!ttsBaseURL) return errorResponse(503, \"tts_not_configured\", \"Configure a TTS engine in Admin → Voice settings.\", {}, requestId);\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 b = body ?? {};\n\tconst text = typeof b.text === \"string\" ? b.text.trim() : \"\";\n\tif (!text) return errorResponse(400, \"bad_request\", \"\\\"text\\\" is required\", {}, requestId);\n\tconst mode = b.mode === \"chat_ack\" || b.mode === \"chat_reply\" ? b.mode : null;\n\tconst userText = typeof b.userText === \"string\" ? b.userText.trim() : \"\";\n\tconst assistantText = typeof b.assistantText === \"string\" ? b.assistantText.trim() : \"\";\n\tconst voice = typeof b.voice === \"string\" && b.voice.trim() ? b.voice.trim() : ttsVoice;\n\tconst format = typeof b.format === \"string\" && b.format.trim() ? b.format.trim() : DEFAULT_FORMAT;\n\tlet speechText = text;\n\tif (mode) try {\n\t\tconst prepared = await prepareSpeechText({\n\t\t\tmode,\n\t\t\tuserText,\n\t\t\tassistantText\n\t\t});\n\t\tif (prepared) speechText = prepared;\n\t} catch (err) {\n\t\tconsole.warn(\"[api/speak] speech prep failed; falling back to raw text\", err);\n\t}\n\tconst upstreamUrl = ttsBaseURL.replace(/\\/+$/, \"\") + \"/v1/audio/speech\";\n\tconst headers = { \"content-type\": \"application/json\" };\n\tif (ttsApiKey) headers[\"authorization\"] = `Bearer ${ttsApiKey}`;\n\tlet upstream;\n\ttry {\n\t\tupstream = await fetch(upstreamUrl, {\n\t\t\tmethod: \"POST\",\n\t\t\theaders,\n\t\t\tbody: JSON.stringify({\n\t\t\t\tmodel: ttsModel,\n\t\t\t\tvoice,\n\t\t\t\tinput: speechText,\n\t\t\t\tresponse_format: format\n\t\t\t}),\n\t\t\tsignal: AbortSignal.timeout(UPSTREAM_TIMEOUT_MS)\n\t\t});\n\t} catch (err) {\n\t\treturn errorResponse(502, \"upstream_error\", `Could not reach TTS endpoint: ${redactKey(err instanceof Error ? err.message : String(err))}`, { upstream: upstreamUrl }, requestId);\n\t}\n\tif (!upstream.ok) {\n\t\tconst body = await upstream.text().catch(() => \"\");\n\t\treturn errorResponse(502, \"upstream_error\", `TTS endpoint returned ${upstream.status}`, {\n\t\t\tupstreamStatus: upstream.status,\n\t\t\tbody: redactKey(body).slice(0, 500)\n\t\t}, requestId);\n\t}\n\tconst responseHeaders = new Headers();\n\tresponseHeaders.set(\"content-type\", upstream.headers.get(\"content-type\") ?? \"audio/wav\");\n\tconst contentLength = upstream.headers.get(\"content-length\");\n\tif (contentLength) responseHeaders.set(\"content-length\", contentLength);\n\tresponseHeaders.set(\"x-request-id\", requestId);\n\treturn new Response(upstream.body, {\n\t\tstatus: 200,\n\t\theaders: responseHeaders\n\t});\n};\n//#endregion\nexport { POST };\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"_server.ts-BFbQQBxZ.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/speak/_server.ts.js"],"sourcesContent":["import { Ht as readStackEnv } from \"../../../../chunks/src.js\";\nimport { t as getState } from \"../../../../chunks/state.js\";\nimport { d as requireAdmin, i as errorResponse, o as getRequestId } from \"../../../../chunks/helpers.js\";\nimport { t as opencodeFetch } from \"../../../../chunks/http.js\";\nimport { t as getCurrentConfig } from \"../../../../chunks/config.js\";\nimport { existsSync, readFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\n//#region src/lib/server/speech-prep.ts\nfunction personaPath() {\n\treturn join(getState().configDir, \"assistant\", \"persona.md\");\n}\nfunction readPersona() {\n\tconst path = personaPath();\n\tif (!existsSync(path)) return \"\";\n\ttry {\n\t\treturn readFileSync(path, \"utf-8\").trim();\n\t} catch {\n\t\treturn \"\";\n\t}\n}\nfunction extractText(response) {\n\treturn (response.parts ?? []).filter((part) => part.type === \"text\" && typeof part.text === \"string\").map((part) => part.text?.trim() ?? \"\").join(\" \").trim();\n}\nfunction buildPrompt(input) {\n\tconst personaBlock = input.persona ? input.persona : \"No persona markdown is configured. Use a neutral, helpful, conversational tone.\";\n\tif (input.mode === \"chat_ack\") return [\n\t\t\"You are preparing a short spoken acknowledgement for text-to-speech.\",\n\t\t\"Return only the exact words to speak.\",\n\t\t\"Keep it to one brief sentence.\",\n\t\t\"Sound conversational and aligned with the persona context.\",\n\t\t\"Do not use markdown, lists, or quotes.\",\n\t\t\"Do not answer the full request. Just acknowledge that you are working on it.\",\n\t\t\"\",\n\t\t\"Persona markdown:\",\n\t\tpersonaBlock,\n\t\t\"\",\n\t\t\"User request:\",\n\t\tinput.userText\n\t].join(\"\\n\");\n\treturn [\n\t\t\"You are preparing a spoken summary for text-to-speech.\",\n\t\t\"Return only the exact words to speak.\",\n\t\t\"Rewrite the final assistant reply into a concise, natural, conversational response.\",\n\t\t\"Preserve the meaning and important caveats.\",\n\t\t\"Keep it brief enough for audio playback.\",\n\t\t\"Do not use markdown, lists, or quotes.\",\n\t\t\"\",\n\t\t\"Persona markdown:\",\n\t\tpersonaBlock,\n\t\t\"\",\n\t\t\"User request:\",\n\t\tinput.userText,\n\t\t\"\",\n\t\t\"Final assistant reply:\",\n\t\tinput.assistantText ?? \"\"\n\t].join(\"\\n\");\n}\nfunction resolveSpeechModel(config) {\n\tconst small = typeof config.small_model === \"string\" ? config.small_model.trim() : \"\";\n\tif (small) return small;\n\treturn (typeof config.model === \"string\" ? config.model.trim() : \"\") || null;\n}\nasync function loadSpeechConfig() {\n\ttry {\n\t\treturn await opencodeFetch(\"/config\");\n\t} catch {\n\t\treturn getCurrentConfig();\n\t}\n}\nasync function prepareSpeechText(input) {\n\tconst userText = input.userText.trim();\n\tif (!userText) return null;\n\tif (input.mode === \"chat_reply\" && !input.assistantText?.trim()) return null;\n\tconst persona = readPersona();\n\tconst model = resolveSpeechModel(await loadSpeechConfig());\n\tconst prompt = buildPrompt({\n\t\tmode: input.mode,\n\t\tuserText,\n\t\tassistantText: input.assistantText?.trim(),\n\t\tpersona\n\t});\n\tlet sessionId = \"\";\n\ttry {\n\t\tconst created = await opencodeFetch(\"/session\", {\n\t\t\tmethod: \"POST\",\n\t\t\tbody: JSON.stringify({})\n\t\t});\n\t\tsessionId = typeof created.id === \"string\" ? created.id : \"\";\n\t\tif (!sessionId) return null;\n\t\treturn extractText(await opencodeFetch(`/session/${encodeURIComponent(sessionId)}/message`, {\n\t\t\tmethod: \"POST\",\n\t\t\tbody: JSON.stringify({\n\t\t\t\tparts: [{\n\t\t\t\t\ttype: \"text\",\n\t\t\t\t\ttext: prompt\n\t\t\t\t}],\n\t\t\t\t...model ? { model } : {}\n\t\t\t})\n\t\t})) || null;\n\t} finally {\n\t\tif (sessionId) await opencodeFetch(`/session/${encodeURIComponent(sessionId)}`, { method: \"DELETE\" }).catch(() => {});\n\t}\n}\n//#endregion\n//#region src/routes/api/speak/+server.ts\nvar DEFAULT_MODEL = \"kokoro\";\nvar DEFAULT_VOICE = \"bf_isabella\";\nvar DEFAULT_FORMAT = \"wav\";\nvar UPSTREAM_TIMEOUT_MS = 6e4;\nfunction redactKey(s) {\n\treturn s.replace(/(sk-[A-Za-z0-9_-]{4,})/g, \"sk-***\").replace(/(Bearer\\s+)[A-Za-z0-9._-]+/gi, \"$1***\");\n}\nvar POST = async (event) => {\n\tconst requestId = getRequestId(event);\n\tconst authError = requireAdmin(event, requestId);\n\tif (authError) return authError;\n\tconst stackEnv = readStackEnv(getState().homeDir);\n\tconst ttsBaseURL = (stackEnv.OP_TTS_BASE_URL || process.env.OP_TTS_BASE_URL || \"\").trim();\n\tconst ttsModel = (stackEnv.OP_TTS_MODEL || process.env.OP_TTS_MODEL || \"\").trim() || DEFAULT_MODEL;\n\tconst ttsVoice = (stackEnv.OP_TTS_VOICE || process.env.OP_TTS_VOICE || \"\").trim() || DEFAULT_VOICE;\n\tconst ttsApiKey = (process.env.OP_TTS_API_KEY ?? \"\").trim();\n\tif (!ttsBaseURL) return errorResponse(503, \"tts_not_configured\", \"Configure a TTS engine in Admin → Voice settings.\", {}, requestId);\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 b = body ?? {};\n\tconst text = typeof b.text === \"string\" ? b.text.trim() : \"\";\n\tif (!text) return errorResponse(400, \"bad_request\", \"\\\"text\\\" is required\", {}, requestId);\n\tconst mode = b.mode === \"chat_ack\" || b.mode === \"chat_reply\" ? b.mode : null;\n\tconst userText = typeof b.userText === \"string\" ? b.userText.trim() : \"\";\n\tconst assistantText = typeof b.assistantText === \"string\" ? b.assistantText.trim() : \"\";\n\tconst voice = typeof b.voice === \"string\" && b.voice.trim() ? b.voice.trim() : ttsVoice;\n\tconst format = typeof b.format === \"string\" && b.format.trim() ? b.format.trim() : DEFAULT_FORMAT;\n\tlet speechText = text;\n\tif (mode) try {\n\t\tconst prepared = await prepareSpeechText({\n\t\t\tmode,\n\t\t\tuserText,\n\t\t\tassistantText\n\t\t});\n\t\tif (prepared) speechText = prepared;\n\t} catch (err) {\n\t\tconsole.warn(\"[api/speak] speech prep failed; falling back to raw text\", err);\n\t}\n\tconst upstreamUrl = ttsBaseURL.replace(/\\/+$/, \"\") + \"/v1/audio/speech\";\n\tconst headers = { \"content-type\": \"application/json\" };\n\tif (ttsApiKey) headers[\"authorization\"] = `Bearer ${ttsApiKey}`;\n\tlet upstream;\n\ttry {\n\t\tupstream = await fetch(upstreamUrl, {\n\t\t\tmethod: \"POST\",\n\t\t\theaders,\n\t\t\tbody: JSON.stringify({\n\t\t\t\tmodel: ttsModel,\n\t\t\t\tvoice,\n\t\t\t\tinput: speechText,\n\t\t\t\tresponse_format: format\n\t\t\t}),\n\t\t\tsignal: AbortSignal.timeout(UPSTREAM_TIMEOUT_MS)\n\t\t});\n\t} catch (err) {\n\t\treturn errorResponse(502, \"upstream_error\", `Could not reach TTS endpoint: ${redactKey(err instanceof Error ? err.message : String(err))}`, { upstream: upstreamUrl }, requestId);\n\t}\n\tif (!upstream.ok) {\n\t\tconst body = await upstream.text().catch(() => \"\");\n\t\treturn errorResponse(502, \"upstream_error\", `TTS endpoint returned ${upstream.status}`, {\n\t\t\tupstreamStatus: upstream.status,\n\t\t\tbody: redactKey(body).slice(0, 500)\n\t\t}, requestId);\n\t}\n\tconst responseHeaders = new Headers();\n\tresponseHeaders.set(\"content-type\", upstream.headers.get(\"content-type\") ?? \"audio/wav\");\n\tconst contentLength = upstream.headers.get(\"content-length\");\n\tif (contentLength) responseHeaders.set(\"content-length\", contentLength);\n\tresponseHeaders.set(\"x-request-id\", requestId);\n\treturn new Response(upstream.body, {\n\t\tstatus: 200,\n\t\theaders: responseHeaders\n\t});\n};\n//#endregion\nexport { POST };\n"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { d as getRequestId, r as requireAdmin, g as getOpenCodeClient, e as errorResponse, k as jsonResponse, p as parseJsonBody, j as jsonBodyError } from './helpers-
|
|
2
|
-
import { u as unsetMainModel, s as setMainModel } from './config-
|
|
3
|
-
import './src-
|
|
1
|
+
import { d as getRequestId, r as requireAdmin, g as getOpenCodeClient, e as errorResponse, k as jsonResponse, p as parseJsonBody, j as jsonBodyError } from './helpers-Du6wAFM1.js';
|
|
2
|
+
import { u as unsetMainModel, s as setMainModel } from './config-CAU3dGmV.js';
|
|
3
|
+
import './src-DfLnu33Z.js';
|
|
4
4
|
import './chunk-CLZ62Ad-.js';
|
|
5
5
|
import 'node:module';
|
|
6
6
|
import './provider-constants-DPrj3yBX.js';
|
|
@@ -22,10 +22,10 @@ import 'zlib';
|
|
|
22
22
|
import 'node:assert';
|
|
23
23
|
import 'node:fs/promises';
|
|
24
24
|
import 'node:os';
|
|
25
|
-
import './endpoints-
|
|
26
|
-
import './state-
|
|
25
|
+
import './endpoints-CM0QyBW3.js';
|
|
26
|
+
import './state-BH8Kvc-z.js';
|
|
27
27
|
import './coercion-TNFJisCC.js';
|
|
28
|
-
import './http-
|
|
28
|
+
import './http-DMBsHHDN.js';
|
|
29
29
|
|
|
30
30
|
//#region src/routes/admin/opencode/model/+server.ts
|
|
31
31
|
var GET = async (event) => {
|
|
@@ -82,4 +82,4 @@ var POST = async (event) => {
|
|
|
82
82
|
};
|
|
83
83
|
|
|
84
84
|
export { GET, POST };
|
|
85
|
-
//# sourceMappingURL=_server.ts-
|
|
85
|
+
//# sourceMappingURL=_server.ts-BMZpZwg5.js.map
|