@openpalm/ui 0.12.27 → 0.12.28
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/BJ9MroEG.js +1 -0
- package/build/client/_app/immutable/chunks/BJ9MroEG.js.br +2 -0
- package/build/client/_app/immutable/chunks/BJ9MroEG.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{W6YpVSxZ.js → BwNZmVmU.js} +2 -2
- package/build/client/_app/immutable/chunks/BwNZmVmU.js.br +0 -0
- package/build/client/_app/immutable/chunks/BwNZmVmU.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{ChwgNfz8.js → CP8qSuuN.js} +1 -1
- package/build/client/_app/immutable/chunks/CP8qSuuN.js.br +0 -0
- package/build/client/_app/immutable/chunks/CP8qSuuN.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{CzLePOkV.js → DBfNs7Gy.js} +1 -1
- package/build/client/_app/immutable/chunks/DBfNs7Gy.js.br +0 -0
- package/build/client/_app/immutable/chunks/DBfNs7Gy.js.gz +0 -0
- package/build/client/_app/immutable/entry/{app.BmQ44Ghi.js → app.S6A9wW-K.js} +2 -2
- package/build/client/_app/immutable/entry/app.S6A9wW-K.js.br +0 -0
- package/build/client/_app/immutable/entry/app.S6A9wW-K.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.C02CKl67.js +1 -0
- package/build/client/_app/immutable/entry/start.C02CKl67.js.br +0 -0
- package/build/client/_app/immutable/entry/start.C02CKl67.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{1.PTMASHp_.js → 1.Cjobp8r-.js} +1 -1
- package/build/client/_app/immutable/nodes/{1.PTMASHp_.js.br → 1.Cjobp8r-.js.br} +1 -2
- package/build/client/_app/immutable/nodes/1.Cjobp8r-.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{4.CvfrdgHM.js → 4.kJoslktN.js} +1 -1
- package/build/client/_app/immutable/nodes/4.kJoslktN.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.kJoslktN.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{5.BozlgK9E.js → 5.Ct5FyLbf.js} +1 -1
- package/build/client/_app/immutable/nodes/5.Ct5FyLbf.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.Ct5FyLbf.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{6.CKp1YEGl.js → 6.zWbgiRDs.js} +1 -1
- package/build/client/_app/immutable/nodes/6.zWbgiRDs.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.zWbgiRDs.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{7.BPqs2k6F.js → 7.x2u9P5pr.js} +1 -1
- package/build/client/_app/immutable/nodes/7.x2u9P5pr.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.x2u9P5pr.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{8.CpC9hexb.js → 8.gw59ZpXB.js} +1 -1
- package/build/client/_app/immutable/nodes/8.gw59ZpXB.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.gw59ZpXB.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-7507bJa6.js +9 -0
- package/build/server/chunks/{1-BSWGJS3u.js.map → 1-7507bJa6.js.map} +1 -1
- package/build/server/chunks/{10-m7Rmfpii.js → 10-DRTBQR8A.js} +5 -5
- package/build/server/chunks/{10-m7Rmfpii.js.map → 10-DRTBQR8A.js.map} +1 -1
- package/build/server/chunks/{4-BLMSmgQK.js → 4-CL_7gqoe.js} +3 -3
- package/build/server/chunks/{4-BLMSmgQK.js.map → 4-CL_7gqoe.js.map} +1 -1
- package/build/server/chunks/{5-B9bscj_h.js → 5-DiwxFgan.js} +3 -3
- package/build/server/chunks/{5-B9bscj_h.js.map → 5-DiwxFgan.js.map} +1 -1
- package/build/server/chunks/{6-CK7XwSHA.js → 6-ZEX7r8JB.js} +3 -3
- package/build/server/chunks/{6-CK7XwSHA.js.map → 6-ZEX7r8JB.js.map} +1 -1
- package/build/server/chunks/{7-Ds7yAxPM.js → 7-clTpA_fQ.js} +3 -3
- package/build/server/chunks/{7-Ds7yAxPM.js.map → 7-clTpA_fQ.js.map} +1 -1
- package/build/server/chunks/{8-CYafMq6g.js → 8-CSvIWui7.js} +3 -3
- package/build/server/chunks/{8-CYafMq6g.js.map → 8-CSvIWui7.js.map} +1 -1
- package/build/server/chunks/{Navbar-DiIih9Zt.js → Navbar-BwjmLChT.js} +3 -3
- package/build/server/chunks/{Navbar-DiIih9Zt.js.map → Navbar-BwjmLChT.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-CJqQBLaV.js → _page.svelte-BbRX2hNU.js} +5 -5
- package/build/server/chunks/{_page.svelte-CJqQBLaV.js.map → _page.svelte-BbRX2hNU.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-xt79qbhA.js → _page.svelte-CPpRR5DY.js} +3 -3
- package/build/server/chunks/{_page.svelte-xt79qbhA.js.map → _page.svelte-CPpRR5DY.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-BCHoUzSU.js → _page.svelte-CkbaStTA.js} +3 -3
- package/build/server/chunks/{_page.svelte-BCHoUzSU.js.map → _page.svelte-CkbaStTA.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-CXS9E_gR.js → _page.svelte-n0azMPVZ.js} +5 -5
- package/build/server/chunks/{_page.svelte-CXS9E_gR.js.map → _page.svelte-n0azMPVZ.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-CE5i-EXb.js → _page.svelte-pbNlPLp1.js} +5 -5
- package/build/server/chunks/{_page.svelte-CE5i-EXb.js.map → _page.svelte-pbNlPLp1.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BFvpNgyE.js → _server.ts-3-YybANN.js} +5 -5
- package/build/server/chunks/{_server.ts-BFvpNgyE.js.map → _server.ts-3-YybANN.js.map} +1 -1
- package/build/server/chunks/{_server.ts-JaZmpTMc.js → _server.ts-4Y3pXUCQ.js} +7 -7
- package/build/server/chunks/{_server.ts-JaZmpTMc.js.map → _server.ts-4Y3pXUCQ.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BquT0egs.js → _server.ts-4paa7krX.js} +5 -5
- package/build/server/chunks/{_server.ts-BquT0egs.js.map → _server.ts-4paa7krX.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Cplp3kxA.js → _server.ts-5uCT3ldj.js} +5 -5
- package/build/server/chunks/{_server.ts-Cplp3kxA.js.map → _server.ts-5uCT3ldj.js.map} +1 -1
- package/build/server/chunks/{_server.ts-TIwlWQOK.js → _server.ts-BBLlrgcK.js} +6 -6
- package/build/server/chunks/{_server.ts-TIwlWQOK.js.map → _server.ts-BBLlrgcK.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BxWAaCBe.js → _server.ts-BDUyJV1x.js} +7 -7
- package/build/server/chunks/{_server.ts-BxWAaCBe.js.map → _server.ts-BDUyJV1x.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BV4xlR2A.js → _server.ts-BJ7CGTPk.js} +6 -6
- package/build/server/chunks/{_server.ts-BV4xlR2A.js.map → _server.ts-BJ7CGTPk.js.map} +1 -1
- package/build/server/chunks/{_server.ts-mAsXRvpu.js → _server.ts-BO7DRlgO.js} +5 -5
- package/build/server/chunks/{_server.ts-mAsXRvpu.js.map → _server.ts-BO7DRlgO.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DM7-Of-f.js → _server.ts-BQ5Ld5nj.js} +5 -5
- package/build/server/chunks/{_server.ts-DM7-Of-f.js.map → _server.ts-BQ5Ld5nj.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BTXVBOR5.js → _server.ts-BRi-qb_g.js} +6 -6
- package/build/server/chunks/{_server.ts-BTXVBOR5.js.map → _server.ts-BRi-qb_g.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DlCVYgk3.js → _server.ts-BWpv8Em8.js} +5 -5
- package/build/server/chunks/{_server.ts-DlCVYgk3.js.map → _server.ts-BWpv8Em8.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CA9duapl.js → _server.ts-Bd3egj0O.js} +7 -7
- package/build/server/chunks/{_server.ts-CA9duapl.js.map → _server.ts-Bd3egj0O.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CStAmRYw.js → _server.ts-BfMdyNxy.js} +5 -5
- package/build/server/chunks/{_server.ts-CStAmRYw.js.map → _server.ts-BfMdyNxy.js.map} +1 -1
- package/build/server/chunks/{_server.ts-v-yNZuAA.js → _server.ts-BjTG3MpF.js} +5 -5
- package/build/server/chunks/{_server.ts-v-yNZuAA.js.map → _server.ts-BjTG3MpF.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BytFAqv5.js → _server.ts-BjuUsJn2.js} +6 -6
- package/build/server/chunks/{_server.ts-BytFAqv5.js.map → _server.ts-BjuUsJn2.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DvLMWub7.js → _server.ts-Bn5TWd33.js} +5 -5
- package/build/server/chunks/{_server.ts-DvLMWub7.js.map → _server.ts-Bn5TWd33.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DEtyhkkr.js → _server.ts-Bo-_pQan.js} +5 -5
- package/build/server/chunks/{_server.ts-DEtyhkkr.js.map → _server.ts-Bo-_pQan.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BiRC6-qS.js → _server.ts-BxCMi5Oj.js} +5 -5
- package/build/server/chunks/{_server.ts-BiRC6-qS.js.map → _server.ts-BxCMi5Oj.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DPyW4shd.js → _server.ts-C-DnuNGv.js} +5 -5
- package/build/server/chunks/{_server.ts-DPyW4shd.js.map → _server.ts-C-DnuNGv.js.map} +1 -1
- package/build/server/chunks/{_server.ts-C0YCTVgt.js → _server.ts-C0WrNqIr.js} +5 -5
- package/build/server/chunks/{_server.ts-C0YCTVgt.js.map → _server.ts-C0WrNqIr.js.map} +1 -1
- package/build/server/chunks/{_server.ts-S7-jUZhL.js → _server.ts-C0jLdfpS.js} +7 -7
- package/build/server/chunks/{_server.ts-S7-jUZhL.js.map → _server.ts-C0jLdfpS.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Dln9O6C3.js → _server.ts-C0rGMciP.js} +5 -5
- package/build/server/chunks/{_server.ts-Dln9O6C3.js.map → _server.ts-C0rGMciP.js.map} +1 -1
- package/build/server/chunks/{_server.ts-C_TVqV3_.js → _server.ts-C1Hbt6bI.js} +5 -5
- package/build/server/chunks/{_server.ts-C_TVqV3_.js.map → _server.ts-C1Hbt6bI.js.map} +1 -1
- package/build/server/chunks/{_server.ts-B-gVUSTK.js → _server.ts-C3Nz0Fq6.js} +7 -7
- package/build/server/chunks/{_server.ts-B-gVUSTK.js.map → _server.ts-C3Nz0Fq6.js.map} +1 -1
- package/build/server/chunks/{_server.ts-2ZpVOWVP.js → _server.ts-C5eyOgcf.js} +6 -6
- package/build/server/chunks/{_server.ts-2ZpVOWVP.js.map → _server.ts-C5eyOgcf.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DO995XBw.js → _server.ts-C82Piu-b.js} +5 -5
- package/build/server/chunks/{_server.ts-DO995XBw.js.map → _server.ts-C82Piu-b.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CPTAGyiq.js → _server.ts-CDuzkv4Q.js} +2 -2
- package/build/server/chunks/{_server.ts-CPTAGyiq.js.map → _server.ts-CDuzkv4Q.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DsyQWCvP.js → _server.ts-CIhMPE8d.js} +2 -2
- package/build/server/chunks/{_server.ts-DsyQWCvP.js.map → _server.ts-CIhMPE8d.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CBb_FMdC.js → _server.ts-CMkwNhDl.js} +5 -5
- package/build/server/chunks/{_server.ts-CBb_FMdC.js.map → _server.ts-CMkwNhDl.js.map} +1 -1
- package/build/server/chunks/{_server.ts-D1HhfOPj.js → _server.ts-CNJwzYTK.js} +5 -5
- package/build/server/chunks/{_server.ts-D1HhfOPj.js.map → _server.ts-CNJwzYTK.js.map} +1 -1
- package/build/server/chunks/{_server.ts-C5e4-yv_.js → _server.ts-CRxSjRmH.js} +5 -5
- package/build/server/chunks/{_server.ts-C5e4-yv_.js.map → _server.ts-CRxSjRmH.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DjFOzAOJ.js → _server.ts-CSZm6b1s.js} +7 -7
- package/build/server/chunks/{_server.ts-DjFOzAOJ.js.map → _server.ts-CSZm6b1s.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BtEgnNZg.js → _server.ts-CTGprNfK.js} +6 -6
- package/build/server/chunks/{_server.ts-BtEgnNZg.js.map → _server.ts-CTGprNfK.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Co4sdN66.js → _server.ts-CX6onqDO.js} +5 -5
- package/build/server/chunks/{_server.ts-Co4sdN66.js.map → _server.ts-CX6onqDO.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DT_4TJ-I.js → _server.ts-CZiU9u-p.js} +5 -5
- package/build/server/chunks/{_server.ts-DT_4TJ-I.js.map → _server.ts-CZiU9u-p.js.map} +1 -1
- package/build/server/chunks/{_server.ts-4wkEs1kg.js → _server.ts-CamCBMtH.js} +5 -5
- package/build/server/chunks/{_server.ts-4wkEs1kg.js.map → _server.ts-CamCBMtH.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CnRDd45S.js → _server.ts-Cg04QGjP.js} +5 -5
- package/build/server/chunks/{_server.ts-CnRDd45S.js.map → _server.ts-Cg04QGjP.js.map} +1 -1
- package/build/server/chunks/{_server.ts-dRPVtDdX.js → _server.ts-Cg9S2fez.js} +5 -5
- package/build/server/chunks/{_server.ts-dRPVtDdX.js.map → _server.ts-Cg9S2fez.js.map} +1 -1
- package/build/server/chunks/{_server.ts-D_q_b84c.js → _server.ts-ClGL59Hx.js} +5 -5
- package/build/server/chunks/{_server.ts-D_q_b84c.js.map → _server.ts-ClGL59Hx.js.map} +1 -1
- package/build/server/chunks/{_server.ts-2-evThCb.js → _server.ts-Clo6a462.js} +5 -5
- package/build/server/chunks/{_server.ts-2-evThCb.js.map → _server.ts-Clo6a462.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DqtQ7U_7.js → _server.ts-Co5JKmfW.js} +5 -5
- package/build/server/chunks/{_server.ts-DqtQ7U_7.js.map → _server.ts-Co5JKmfW.js.map} +1 -1
- package/build/server/chunks/{_server.ts-C616BYTJ.js → _server.ts-CreehM0I.js} +5 -5
- package/build/server/chunks/{_server.ts-C616BYTJ.js.map → _server.ts-CreehM0I.js.map} +1 -1
- package/build/server/chunks/{_server.ts-D5BUjkZp.js → _server.ts-Cw19e37F.js} +5 -5
- package/build/server/chunks/{_server.ts-D5BUjkZp.js.map → _server.ts-Cw19e37F.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DKo8BArl.js → _server.ts-CyAPOdLF.js} +2 -2
- package/build/server/chunks/{_server.ts-DKo8BArl.js.map → _server.ts-CyAPOdLF.js.map} +1 -1
- package/build/server/chunks/{_server.ts-C9QFUqtn.js → _server.ts-CyPc2ma7.js} +5 -5
- package/build/server/chunks/{_server.ts-C9QFUqtn.js.map → _server.ts-CyPc2ma7.js.map} +1 -1
- package/build/server/chunks/{_server.ts-B08RqRrE.js → _server.ts-D0x6UF-T.js} +5 -5
- package/build/server/chunks/{_server.ts-B08RqRrE.js.map → _server.ts-D0x6UF-T.js.map} +1 -1
- package/build/server/chunks/{_server.ts-0b92gcFb.js → _server.ts-D2AtDPpw.js} +5 -5
- package/build/server/chunks/{_server.ts-0b92gcFb.js.map → _server.ts-D2AtDPpw.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BTbAhE98.js → _server.ts-D3Yac_nt.js} +5 -5
- package/build/server/chunks/{_server.ts-BTbAhE98.js.map → _server.ts-D3Yac_nt.js.map} +1 -1
- package/build/server/chunks/{_server.ts-AOWkipos.js → _server.ts-D65qUnTo.js} +5 -5
- package/build/server/chunks/{_server.ts-AOWkipos.js.map → _server.ts-D65qUnTo.js.map} +1 -1
- package/build/server/chunks/{_server.ts-B_srP0Mg.js → _server.ts-D6ruuXqR.js} +5 -5
- package/build/server/chunks/{_server.ts-B_srP0Mg.js.map → _server.ts-D6ruuXqR.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Bu78xIyF.js → _server.ts-DCET42Fp.js} +5 -5
- package/build/server/chunks/{_server.ts-Bu78xIyF.js.map → _server.ts-DCET42Fp.js.map} +1 -1
- package/build/server/chunks/{_server.ts--xAn4uEP.js → _server.ts-DK1F--9I.js} +5 -5
- package/build/server/chunks/{_server.ts--xAn4uEP.js.map → _server.ts-DK1F--9I.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Bl0aht-Y.js → _server.ts-DKOOZRkS.js} +5 -5
- package/build/server/chunks/{_server.ts-Bl0aht-Y.js.map → _server.ts-DKOOZRkS.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DowiLG28.js → _server.ts-DREbeP0L.js} +6 -6
- package/build/server/chunks/{_server.ts-DowiLG28.js.map → _server.ts-DREbeP0L.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Cl3tpJJP.js → _server.ts-DXxG4mKE.js} +5 -5
- package/build/server/chunks/{_server.ts-Cl3tpJJP.js.map → _server.ts-DXxG4mKE.js.map} +1 -1
- package/build/server/chunks/{_server.ts-bS9-RO69.js → _server.ts-Db8rsVlU.js} +4 -4
- package/build/server/chunks/{_server.ts-bS9-RO69.js.map → _server.ts-Db8rsVlU.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DPtsvTMa.js → _server.ts-Dqobz5u4.js} +5 -5
- package/build/server/chunks/{_server.ts-DPtsvTMa.js.map → _server.ts-Dqobz5u4.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DNgVoGCq.js → _server.ts-Dr-kzAme.js} +5 -5
- package/build/server/chunks/{_server.ts-DNgVoGCq.js.map → _server.ts-Dr-kzAme.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CkcL94wI.js → _server.ts-DrcDPBMF.js} +5 -5
- package/build/server/chunks/{_server.ts-CkcL94wI.js.map → _server.ts-DrcDPBMF.js.map} +1 -1
- package/build/server/chunks/{_server.ts-D2E_cFBw.js → _server.ts-DxA49_Ff.js} +9 -9
- package/build/server/chunks/_server.ts-DxA49_Ff.js.map +1 -0
- package/build/server/chunks/{_server.ts-D4MSDGRI.js → _server.ts-GQVBG5Jb.js} +5 -5
- package/build/server/chunks/{_server.ts-D4MSDGRI.js.map → _server.ts-GQVBG5Jb.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DwEU_wqd.js → _server.ts-ItE-dGnU.js} +5 -5
- package/build/server/chunks/{_server.ts-DwEU_wqd.js.map → _server.ts-ItE-dGnU.js.map} +1 -1
- package/build/server/chunks/{_server.ts-RUyr7rUh.js → _server.ts-KQyLNXyK.js} +5 -5
- package/build/server/chunks/{_server.ts-RUyr7rUh.js.map → _server.ts-KQyLNXyK.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BR_Bospi.js → _server.ts-Kz2VUup0.js} +5 -5
- package/build/server/chunks/{_server.ts-BR_Bospi.js.map → _server.ts-Kz2VUup0.js.map} +1 -1
- package/build/server/chunks/{_server.ts-0RaiRYj6.js → _server.ts-L5TinIXj.js} +5 -5
- package/build/server/chunks/{_server.ts-0RaiRYj6.js.map → _server.ts-L5TinIXj.js.map} +1 -1
- package/build/server/chunks/{_server.ts-B3o-sqWb.js → _server.ts-N5NV72Hf.js} +2 -2
- package/build/server/chunks/{_server.ts-B3o-sqWb.js.map → _server.ts-N5NV72Hf.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CP7nHEdw.js → _server.ts-O7ah5vx6.js} +5 -5
- package/build/server/chunks/{_server.ts-CP7nHEdw.js.map → _server.ts-O7ah5vx6.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CVnpfDXC.js → _server.ts-OvbELaYs.js} +8 -8
- package/build/server/chunks/{_server.ts-CVnpfDXC.js.map → _server.ts-OvbELaYs.js.map} +1 -1
- package/build/server/chunks/{_server.ts-KFAJyI4S.js → _server.ts-SteNZC4A.js} +5 -5
- package/build/server/chunks/{_server.ts-KFAJyI4S.js.map → _server.ts-SteNZC4A.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Dtu8Rzz8.js → _server.ts-UHdPmfe5.js} +5 -5
- package/build/server/chunks/{_server.ts-Dtu8Rzz8.js.map → _server.ts-UHdPmfe5.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DXgc1wSC.js → _server.ts-drF_5o3n.js} +5 -5
- package/build/server/chunks/{_server.ts-DXgc1wSC.js.map → _server.ts-drF_5o3n.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CnqflPHz.js → _server.ts-duvHUtii.js} +5 -5
- package/build/server/chunks/{_server.ts-CnqflPHz.js.map → _server.ts-duvHUtii.js.map} +1 -1
- package/build/server/chunks/{_server.ts-0CnOdenu.js → _server.ts-frgoARnH.js} +5 -5
- package/build/server/chunks/{_server.ts-0CnOdenu.js.map → _server.ts-frgoARnH.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CqUAr4Es.js → _server.ts-hMEG74d4.js} +6 -6
- package/build/server/chunks/{_server.ts-CqUAr4Es.js.map → _server.ts-hMEG74d4.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Dn7I1iX2.js → _server.ts-hzksO4eC.js} +5 -5
- package/build/server/chunks/{_server.ts-Dn7I1iX2.js.map → _server.ts-hzksO4eC.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DiZ7lrKx.js → _server.ts-mm8-Domh.js} +6 -6
- package/build/server/chunks/{_server.ts-DiZ7lrKx.js.map → _server.ts-mm8-Domh.js.map} +1 -1
- package/build/server/chunks/{_server.ts-cf6gkbu9.js → _server.ts-pNpcKQuZ.js} +4 -4
- package/build/server/chunks/{_server.ts-cf6gkbu9.js.map → _server.ts-pNpcKQuZ.js.map} +1 -1
- package/build/server/chunks/{_server.ts-D-VL71jy.js → _server.ts-sSk0IBLI.js} +6 -6
- package/build/server/chunks/{_server.ts-D-VL71jy.js.map → _server.ts-sSk0IBLI.js.map} +1 -1
- package/build/server/chunks/{_server.ts-To_aRG7u.js → _server.ts-s_8Em7sh.js} +2 -2
- package/build/server/chunks/{_server.ts-To_aRG7u.js.map → _server.ts-s_8Em7sh.js.map} +1 -1
- package/build/server/chunks/{_server.ts-ClhPU3zy.js → _server.ts-urkeKYZq.js} +6 -6
- package/build/server/chunks/{_server.ts-ClhPU3zy.js.map → _server.ts-urkeKYZq.js.map} +1 -1
- package/build/server/chunks/{_server.ts-C_0RYjwV.js → _server.ts-uvTfo6l3.js} +6 -6
- package/build/server/chunks/{_server.ts-C_0RYjwV.js.map → _server.ts-uvTfo6l3.js.map} +1 -1
- package/build/server/chunks/{_server.ts-3ClTuxfT.js → _server.ts-wM3VHr1T.js} +5 -5
- package/build/server/chunks/{_server.ts-3ClTuxfT.js.map → _server.ts-wM3VHr1T.js.map} +1 -1
- package/build/server/chunks/{_server.ts-D8SpxLHx.js → _server.ts-wg5Z6HOs.js} +5 -5
- package/build/server/chunks/{_server.ts-D8SpxLHx.js.map → _server.ts-wg5Z6HOs.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DuWTOcZu.js → _server.ts-x5irgpAt.js} +6 -6
- package/build/server/chunks/{_server.ts-DuWTOcZu.js.map → _server.ts-x5irgpAt.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CSgdKNgg.js → _server.ts-yLSNRQYS.js} +5 -5
- package/build/server/chunks/{_server.ts-CSgdKNgg.js.map → _server.ts-yLSNRQYS.js.map} +1 -1
- package/build/server/chunks/{addon-helpers-BQvO--V4.js → addon-helpers-7mlx24fe.js} +3 -3
- package/build/server/chunks/{addon-helpers-BQvO--V4.js.map → addon-helpers-7mlx24fe.js.map} +1 -1
- package/build/server/chunks/{akm-BEzX_xdE.js → akm-CrfUw4yy.js} +2 -2
- package/build/server/chunks/{akm-BEzX_xdE.js.map → akm-CrfUw4yy.js.map} +1 -1
- package/build/server/chunks/{catalog-BzKX6e3G.js → catalog-BwFee_sD.js} +5 -5
- package/build/server/chunks/{catalog-BzKX6e3G.js.map → catalog-BwFee_sD.js.map} +1 -1
- package/build/server/chunks/{client-B0yrpLU0.js → client-XpaVgXGM.js} +2 -2
- package/build/server/chunks/{client-B0yrpLU0.js.map → client-XpaVgXGM.js.map} +1 -1
- package/build/server/chunks/{config-DctzDAyo.js → config-Y_CPcMBz.js} +2 -2
- package/build/server/chunks/{config-DctzDAyo.js.map → config-Y_CPcMBz.js.map} +1 -1
- package/build/server/chunks/{docker-BTq8NRnR.js → docker-DxR2QaSq.js} +2 -2
- package/build/server/chunks/{docker-BTq8NRnR.js.map → docker-DxR2QaSq.js.map} +1 -1
- package/build/server/chunks/{endpoints-w4CnVyDj.js → endpoints-C0-bmtqX.js} +2 -2
- package/build/server/chunks/{endpoints-w4CnVyDj.js.map → endpoints-C0-bmtqX.js.map} +1 -1
- package/build/server/chunks/{error.svelte-Cei5uqgj.js → error.svelte-DfjJziio.js} +4 -4
- package/build/server/chunks/{error.svelte-Cei5uqgj.js.map → error.svelte-DfjJziio.js.map} +1 -1
- package/build/server/chunks/{helpers-ClgqEhMq.js → helpers-DInkNOLc.js} +3 -3
- package/build/server/chunks/{helpers-ClgqEhMq.js.map → helpers-DInkNOLc.js.map} +1 -1
- package/build/server/chunks/{hooks.server-BfXCdE7o.js → hooks.server-Rxu6hprY.js} +7 -7
- package/build/server/chunks/{hooks.server-BfXCdE7o.js.map → hooks.server-Rxu6hprY.js.map} +1 -1
- package/build/server/chunks/{http-BhM9gwjs.js → http-BBekmS7G.js} +2 -2
- package/build/server/chunks/{http-BhM9gwjs.js.map → http-BBekmS7G.js.map} +1 -1
- package/build/server/chunks/{internal-C2uoAu8I.js → internal-ZDW7OGM2.js} +3 -3
- package/build/server/chunks/{internal-C2uoAu8I.js.map → internal-ZDW7OGM2.js.map} +1 -1
- package/build/server/chunks/{migration-status-Dk24o2jx.js → migration-status-DYOJd2zJ.js} +2 -2
- package/build/server/chunks/{migration-status-Dk24o2jx.js.map → migration-status-DYOJd2zJ.js.map} +1 -1
- package/build/server/chunks/{session-cookie-2DCJvM5c.js → session-cookie-Fk3z6zXU.js} +2 -2
- package/build/server/chunks/{session-cookie-2DCJvM5c.js.map → session-cookie-Fk3z6zXU.js.map} +1 -1
- package/build/server/chunks/{setup-deploy-CF4rZiIQ.js → setup-deploy-DiujTjmt.js} +2 -2
- package/build/server/chunks/{setup-deploy-CF4rZiIQ.js.map → setup-deploy-DiujTjmt.js.map} +1 -1
- package/build/server/chunks/{src-DyxXxR34.js → src-CUQ7IJUr.js} +2 -2
- package/build/server/chunks/{src-DyxXxR34.js.map → src-CUQ7IJUr.js.map} +1 -1
- package/build/server/chunks/{state-D1YEUYNU.js → state-ClUH4b0u.js} +2 -2
- package/build/server/chunks/{state-D1YEUYNU.js.map → state-ClUH4b0u.js.map} +1 -1
- package/build/server/chunks/{state2-D_da3VaM.js → state2-4pMdWNab.js} +2 -2
- package/build/server/chunks/{state2-D_da3VaM.js.map → state2-4pMdWNab.js.map} +1 -1
- package/build/server/index.js +1 -1
- package/build/server/index.js.map +1 -1
- package/build/server/manifest.js +93 -93
- package/build/server/manifest.js.map +1 -1
- package/package.json +2 -2
- package/build/client/_app/immutable/chunks/C7l0FgUb.js +0 -1
- package/build/client/_app/immutable/chunks/C7l0FgUb.js.br +0 -2
- package/build/client/_app/immutable/chunks/C7l0FgUb.js.gz +0 -0
- package/build/client/_app/immutable/chunks/ChwgNfz8.js.br +0 -0
- package/build/client/_app/immutable/chunks/ChwgNfz8.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CzLePOkV.js.br +0 -0
- package/build/client/_app/immutable/chunks/CzLePOkV.js.gz +0 -0
- package/build/client/_app/immutable/chunks/W6YpVSxZ.js.br +0 -0
- package/build/client/_app/immutable/chunks/W6YpVSxZ.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.BmQ44Ghi.js.br +0 -0
- package/build/client/_app/immutable/entry/app.BmQ44Ghi.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.CXaufB0M.js +0 -1
- package/build/client/_app/immutable/entry/start.CXaufB0M.js.br +0 -0
- package/build/client/_app/immutable/entry/start.CXaufB0M.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.PTMASHp_.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.CvfrdgHM.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.CvfrdgHM.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.BozlgK9E.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.BozlgK9E.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.CKp1YEGl.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.CKp1YEGl.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.BPqs2k6F.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.BPqs2k6F.js.gz +0 -0
- package/build/client/_app/immutable/nodes/8.CpC9hexb.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.CpC9hexb.js.gz +0 -0
- package/build/server/chunks/1-BSWGJS3u.js +0 -9
- package/build/server/chunks/_server.ts-D2E_cFBw.js.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { X as dismissSecretStripNotice, aG as readSecretStripNotice, H as createLogger } from './src-
|
|
2
|
-
import { g as getState } from './state-
|
|
3
|
-
import { d as getRequestId, r as requireAdmin, k as jsonResponse, e as errorResponse } from './helpers-
|
|
1
|
+
import { X as dismissSecretStripNotice, aG as readSecretStripNotice, H as createLogger } from './src-CUQ7IJUr.js';
|
|
2
|
+
import { g as getState } from './state-ClUH4b0u.js';
|
|
3
|
+
import { d as getRequestId, r as requireAdmin, k as jsonResponse, e as errorResponse } from './helpers-DInkNOLc.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-C0-bmtqX.js';
|
|
26
26
|
|
|
27
27
|
//#region src/routes/admin/secret-notice/+server.ts
|
|
28
28
|
var logger = createLogger("secret-notice");
|
|
@@ -61,4 +61,4 @@ var DELETE = async (event) => {
|
|
|
61
61
|
};
|
|
62
62
|
|
|
63
63
|
export { DELETE, GET };
|
|
64
|
-
//# sourceMappingURL=_server.ts-
|
|
64
|
+
//# sourceMappingURL=_server.ts-BWpv8Em8.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_server.ts-
|
|
1
|
+
{"version":3,"file":"_server.ts-BWpv8Em8.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/admin/secret-notice/_server.ts.js"],"sourcesContent":["import { At as readSecretStripNotice, kt as dismissSecretStripNotice, xn as createLogger } 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/secret-notice/+server.ts\nvar logger = createLogger(\"secret-notice\");\n/**\n* #502 — one-time notice that secret-looking keys were removed from stack.env.\n* The strip itself is correct per the secret-boundary contract; this surfaces\n* it so the user knows where their value went and how to re-add it.\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\ttry {\n\t\treturn jsonResponse(200, {\n\t\t\tok: true,\n\t\t\tnotice: readSecretStripNotice(state)\n\t\t}, requestId);\n\t} catch (e) {\n\t\treturn errorResponse(500, \"secret_notice_failed\", e instanceof Error ? e.message : String(e), {}, requestId);\n\t}\n};\n/** Dismiss the one-time notice. */\nvar DELETE = async (event) => {\n\tconst requestId = getRequestId(event);\n\tconst authError = requireAdmin(event, requestId);\n\tif (authError) return authError;\n\tconst state = getState();\n\ttry {\n\t\tdismissSecretStripNotice(state);\n\t\tlogger.info(\"secret-strip notice dismissed\", { requestId });\n\t\treturn jsonResponse(200, { ok: true }, requestId);\n\t} catch (e) {\n\t\treturn errorResponse(500, \"secret_notice_dismiss_failed\", e instanceof Error ? e.message : String(e), {}, requestId);\n\t}\n};\n//#endregion\nexport { DELETE, GET };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAGA;AACA,IAAI,MAAM,GAAG,YAAY,CAAC,eAAe,CAAC;AAC1C;AACA;AACA;AACA;AACA;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;AACL,EAAE,OAAO,YAAY,CAAC,GAAG,EAAE;AAC3B,GAAG,EAAE,EAAE,IAAI;AACX,GAAG,MAAM,EAAE,qBAAqB,CAAC,KAAK;AACtC,GAAG,EAAE,SAAS,CAAC;AACf,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE;AACb,EAAE,OAAO,aAAa,CAAC,GAAG,EAAE,sBAAsB,EAAE,CAAC,YAAY,KAAK,GAAG,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,CAAC;AAC9G,CAAC;AACD;AACA;AACG,IAAC,MAAM,GAAG,OAAO,KAAK,KAAK;AAC9B,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;AACL,EAAE,wBAAwB,CAAC,KAAK,CAAC;AACjC,EAAE,MAAM,CAAC,IAAI,CAAC,+BAA+B,EAAE,EAAE,SAAS,EAAE,CAAC;AAC7D,EAAE,OAAO,YAAY,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,SAAS,CAAC;AACnD,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE;AACb,EAAE,OAAO,aAAa,CAAC,GAAG,EAAE,8BAA8B,EAAE,CAAC,YAAY,KAAK,GAAG,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,CAAC;AACtH,CAAC;AACD;;;;"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { j as json } from './exports-D1quPX8S.js';
|
|
2
|
-
import { am as isSetupComplete, aU as resolveStackDir, az as performSetup, at as mapDockerError, p as checkDocker } from './src-
|
|
3
|
-
import { g as getState, r as resetState } from './state-
|
|
4
|
-
import { r as requireAdmin, d as getRequestId, f as getUiLoginPassword, b as createSession } from './helpers-
|
|
5
|
-
import { s as sessionCookieHeader } from './session-cookie-
|
|
6
|
-
import { p as prepareSetupRestorePoint, s as startDeploy, r as resetDeployState } from './setup-deploy-
|
|
2
|
+
import { am as isSetupComplete, aU as resolveStackDir, az as performSetup, at as mapDockerError, p as checkDocker } from './src-CUQ7IJUr.js';
|
|
3
|
+
import { g as getState, r as resetState } from './state-ClUH4b0u.js';
|
|
4
|
+
import { r as requireAdmin, d as getRequestId, f as getUiLoginPassword, b as createSession } from './helpers-DInkNOLc.js';
|
|
5
|
+
import { s as sessionCookieHeader } from './session-cookie-Fk3z6zXU.js';
|
|
6
|
+
import { p as prepareSetupRestorePoint, s as startDeploy, r as resetDeployState } from './setup-deploy-DiujTjmt.js';
|
|
7
7
|
import './utils-BSRjJDrZ.js';
|
|
8
8
|
import './chunk-CLZ62Ad-.js';
|
|
9
9
|
import 'node:module';
|
|
@@ -26,7 +26,7 @@ import 'zlib';
|
|
|
26
26
|
import 'node:assert';
|
|
27
27
|
import 'node:fs/promises';
|
|
28
28
|
import 'node:os';
|
|
29
|
-
import './endpoints-
|
|
29
|
+
import './endpoints-C0-bmtqX.js';
|
|
30
30
|
|
|
31
31
|
//#region src/routes/api/setup/complete/+server.ts
|
|
32
32
|
var POST = async (event) => {
|
|
@@ -91,4 +91,4 @@ var POST = async (event) => {
|
|
|
91
91
|
};
|
|
92
92
|
|
|
93
93
|
export { POST };
|
|
94
|
-
//# sourceMappingURL=_server.ts-
|
|
94
|
+
//# sourceMappingURL=_server.ts-Bd3egj0O.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_server.ts-
|
|
1
|
+
{"version":3,"file":"_server.ts-Bd3egj0O.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/setup/complete/_server.ts.js"],"sourcesContent":["import { r as json } from \"../../../../../chunks/exports.js\";\nimport { P as mapDockerError, X as checkDocker, in as resolveStackDir, o as performSetup, ut as isSetupComplete } from \"../../../../../chunks/src.js\";\nimport { n as resetState, t as getState } from \"../../../../../chunks/state.js\";\nimport { d as requireAdmin, g as getUiLoginPassword, h as createSession, o as getRequestId } from \"../../../../../chunks/helpers.js\";\nimport { r as sessionCookieHeader } from \"../../../../../chunks/session-cookie.js\";\nimport { i as startDeploy, n as prepareSetupRestorePoint, r as resetDeployState } from \"../../../../../chunks/setup-deploy.js\";\n//#region src/routes/api/setup/complete/+server.ts\nvar POST = async (event) => {\n\tif (isSetupComplete(resolveStackDir())) {\n\t\tconst authError = requireAdmin(event, getRequestId(event));\n\t\tif (authError) return authError;\n\t}\n\tconst { request } = event;\n\tlet body;\n\ttry {\n\t\tbody = await request.json();\n\t} catch {\n\t\treturn json({\n\t\t\tok: false,\n\t\t\terror: \"invalid_json\",\n\t\t\tmessage: \"Request body must be valid JSON\"\n\t\t}, { status: 400 });\n\t}\n\tconst dryRun = body.dryRun === true;\n\tlet result;\n\ttry {\n\t\tprepareSetupRestorePoint(getState());\n\t\tresult = await performSetup(body);\n\t} catch (err) {\n\t\tconst mapped = mapDockerError(String(err));\n\t\treturn json({\n\t\t\tok: false,\n\t\t\terror: mapped.code,\n\t\t\tmessage: mapped.message\n\t\t}, { status: 500 });\n\t}\n\tif (!result.ok) return json(result, { status: 400 });\n\tresetState();\n\tconst state = getState();\n\tresetDeployState();\n\tlet dockerCheck = null;\n\tif (!dryRun) {\n\t\tdockerCheck = await checkDocker();\n\t\tif (dockerCheck.ok) startDeploy(state);\n\t\telse return json({\n\t\t\tok: false,\n\t\t\terror: \"docker_unavailable\",\n\t\t\tmessage: \"Docker isn't running. Start Docker Desktop or OrbStack, then try again.\"\n\t\t}, {\n\t\t\tstatus: 503,\n\t\t\theaders: { \"content-type\": \"application/json\" }\n\t\t});\n\t}\n\tconst headers = new Headers({ \"content-type\": \"application/json\" });\n\tif (typeof body.security?.uiLoginPassword === \"string\" && body.security.uiLoginPassword || getUiLoginPassword()) {\n\t\tconst sessionToken = createSession();\n\t\theaders.set(\"set-cookie\", sessionCookieHeader(sessionToken, event.request));\n\t}\n\treturn new Response(JSON.stringify({\n\t\tok: true,\n\t\tdockerAvailable: dockerCheck?.ok ?? false,\n\t\tdryRun\n\t}), {\n\t\tstatus: 200,\n\t\theaders\n\t});\n};\n//#endregion\nexport { POST };\n"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { a_ as summarizeBackups, ap as listBackupDirs, aB as pruneBackupDirs, H as createLogger } from './src-
|
|
2
|
-
import { g as getState } from './state-
|
|
3
|
-
import { d as getRequestId, r as requireAdmin, k as jsonResponse, e as errorResponse } from './helpers-
|
|
1
|
+
import { a_ as summarizeBackups, ap as listBackupDirs, aB as pruneBackupDirs, H as createLogger } from './src-CUQ7IJUr.js';
|
|
2
|
+
import { g as getState } from './state-ClUH4b0u.js';
|
|
3
|
+
import { d as getRequestId, r as requireAdmin, k as jsonResponse, e as errorResponse } from './helpers-DInkNOLc.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-C0-bmtqX.js';
|
|
26
26
|
|
|
27
27
|
//#region src/routes/admin/backups/+server.ts
|
|
28
28
|
var logger = createLogger("backups-admin");
|
|
@@ -86,4 +86,4 @@ var POST = async (event) => {
|
|
|
86
86
|
};
|
|
87
87
|
|
|
88
88
|
export { GET, POST };
|
|
89
|
-
//# sourceMappingURL=_server.ts-
|
|
89
|
+
//# sourceMappingURL=_server.ts-BfMdyNxy.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_server.ts-
|
|
1
|
+
{"version":3,"file":"_server.ts-BfMdyNxy.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/admin/backups/_server.ts.js"],"sourcesContent":["import { _n as listBackupDirs, vn as pruneBackupDirs, xn as createLogger, yn as summarizeBackups } 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/backups/+server.ts\nvar logger = createLogger(\"backups-admin\");\n/**\n* #499 — backup visibility. Returns count, total size, last-backup time and a\n* per-backup list (newest first) so the UI can surface the recovery net.\n* Read-only.\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\ttry {\n\t\treturn jsonResponse(200, {\n\t\t\tok: true,\n\t\t\t...summarizeBackups(state.homeDir)\n\t\t}, requestId);\n\t} catch (e) {\n\t\treturn errorResponse(500, \"backups_list_failed\", e instanceof Error ? e.message : String(e), {}, requestId);\n\t}\n};\n/**\n* #499 — drives the EXISTING confirm-gated prune. The UI must pass an explicit\n* `keep` count (the confirmation is the UI's modal); this NEVER auto-prunes and\n* keeps the newest `keep` snapshots, deleting only the older ones.\n*/\nvar POST = async (event) => {\n\tconst requestId = getRequestId(event);\n\tconst authError = requireAdmin(event, requestId);\n\tif (authError) return authError;\n\tlet body;\n\ttry {\n\t\tbody = await event.request.json();\n\t} catch {\n\t\tbody = {};\n\t}\n\tconst keep = Number(body.keep);\n\tif (!Number.isInteger(keep) || keep < 0) return errorResponse(400, \"invalid_keep\", \"`keep` must be a non-negative integer\", {}, requestId);\n\tconst state = getState();\n\ttry {\n\t\tif (listBackupDirs(state.homeDir).slice(keep).length === 0) return jsonResponse(200, {\n\t\t\tok: true,\n\t\t\tdeleted: [],\n\t\t\tkept: keep\n\t\t}, requestId);\n\t\tconst deleted = pruneBackupDirs(state.homeDir, keep);\n\t\tlogger.info(\"pruned backups via admin\", {\n\t\t\trequestId,\n\t\t\tdeleted: deleted.length,\n\t\t\tkept: keep\n\t\t});\n\t\treturn jsonResponse(200, {\n\t\t\tok: true,\n\t\t\tdeleted,\n\t\t\tkept: keep\n\t\t}, requestId);\n\t} catch (e) {\n\t\treturn errorResponse(500, \"backups_prune_failed\", e instanceof Error ? e.message : String(e), {}, requestId);\n\t}\n};\n//#endregion\nexport { GET, POST };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAGA;AACA,IAAI,MAAM,GAAG,YAAY,CAAC,eAAe,CAAC;AAC1C;AACA;AACA;AACA;AACA;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;AACL,EAAE,OAAO,YAAY,CAAC,GAAG,EAAE;AAC3B,GAAG,EAAE,EAAE,IAAI;AACX,GAAG,GAAG,gBAAgB,CAAC,KAAK,CAAC,OAAO;AACpC,GAAG,EAAE,SAAS,CAAC;AACf,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE;AACb,EAAE,OAAO,aAAa,CAAC,GAAG,EAAE,qBAAqB,EAAE,CAAC,YAAY,KAAK,GAAG,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,CAAC;AAC7G,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;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,IAAI,IAAI;AACT,CAAC,IAAI;AACL,EAAE,IAAI,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE;AACnC,CAAC,CAAC,CAAC,MAAM;AACT,EAAE,IAAI,GAAG,EAAE;AACX,CAAC;AACD,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/B,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,OAAO,aAAa,CAAC,GAAG,EAAE,cAAc,EAAE,uCAAuC,EAAE,EAAE,EAAE,SAAS,CAAC;AAC3I,CAAC,MAAM,KAAK,GAAG,QAAQ,EAAE;AACzB,CAAC,IAAI;AACL,EAAE,IAAI,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,YAAY,CAAC,GAAG,EAAE;AACvF,GAAG,EAAE,EAAE,IAAI;AACX,GAAG,OAAO,EAAE,EAAE;AACd,GAAG,IAAI,EAAE;AACT,GAAG,EAAE,SAAS,CAAC;AACf,EAAE,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;AACtD,EAAE,MAAM,CAAC,IAAI,CAAC,0BAA0B,EAAE;AAC1C,GAAG,SAAS;AACZ,GAAG,OAAO,EAAE,OAAO,CAAC,MAAM;AAC1B,GAAG,IAAI,EAAE;AACT,GAAG,CAAC;AACJ,EAAE,OAAO,YAAY,CAAC,GAAG,EAAE;AAC3B,GAAG,EAAE,EAAE,IAAI;AACX,GAAG,OAAO;AACV,GAAG,IAAI,EAAE;AACT,GAAG,EAAE,SAAS,CAAC;AACf,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE;AACb,EAAE,OAAO,aAAa,CAAC,GAAG,EAAE,sBAAsB,EAAE,CAAC,YAAY,KAAK,GAAG,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,CAAC;AAC9G,CAAC;AACD;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { aj as isAllowedService, p as checkDocker, u as composeLogs, n as buildComposeOptions } 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 { aj as isAllowedService, p as checkDocker, u as composeLogs, n as buildComposeOptions } from './src-CUQ7IJUr.js';
|
|
2
|
+
import { g as getState } from './state-ClUH4b0u.js';
|
|
3
|
+
import { d as getRequestId, r as requireAdmin, e as errorResponse, k as jsonResponse } from './helpers-DInkNOLc.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-C0-bmtqX.js';
|
|
26
26
|
|
|
27
27
|
//#region src/routes/admin/logs/+server.ts
|
|
28
28
|
var GET = async (event) => {
|
|
@@ -60,4 +60,4 @@ var GET = async (event) => {
|
|
|
60
60
|
};
|
|
61
61
|
|
|
62
62
|
export { GET };
|
|
63
|
-
//# sourceMappingURL=_server.ts-
|
|
63
|
+
//# sourceMappingURL=_server.ts-BjTG3MpF.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_server.ts-
|
|
1
|
+
{"version":3,"file":"_server.ts-BjTG3MpF.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/admin/logs/_server.ts.js"],"sourcesContent":["import { $ as composeLogs, L as buildComposeOptions, O as isAllowedService, X as checkDocker } 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/logs/+server.ts\nvar GET = async (event) => {\n\tconst requestId = getRequestId(event);\n\tconst authError = requireAdmin(event, requestId);\n\tif (authError) return authError;\n\tconst state = getState();\n\tconst url = new URL(event.request.url);\n\tconst serviceParam = url.searchParams.get(\"service\");\n\tconst tailParam = url.searchParams.get(\"tail\");\n\tconst sinceParam = url.searchParams.get(\"since\");\n\tconst tail = tailParam ? Number(tailParam) : 100;\n\tif (tailParam && (!Number.isInteger(tail) || tail < 1 || tail > 1e4)) return errorResponse(400, \"invalid_parameter\", \"tail must be an integer between 1 and 10000\", {}, requestId);\n\tlet services;\n\tif (serviceParam) {\n\t\tservices = serviceParam.split(\",\").map((s) => s.trim()).filter(Boolean);\n\t\tconst invalid = services.filter((s) => !isAllowedService(s, state.configDir));\n\t\tif (invalid.length > 0) return errorResponse(400, \"invalid_service\", `Invalid service name(s): ${invalid.join(\", \")}`, { invalid }, requestId);\n\t}\n\tif (sinceParam && !/^[a-zA-Z0-9.:+\\-T]+$/.test(sinceParam)) return errorResponse(400, \"invalid_parameter\", \"since contains invalid characters\", {}, requestId);\n\tif (!(await checkDocker()).ok) return errorResponse(503, \"docker_unavailable\", \"Docker is not available\", {}, requestId);\n\tconst result = await composeLogs(services, tail, {\n\t\t...buildComposeOptions(state),\n\t\tsince: sinceParam ?? void 0\n\t});\n\tif (!result.ok) return jsonResponse(500, {\n\t\tok: false,\n\t\tlogs: \"\",\n\t\terror: result.stderr\n\t}, requestId);\n\treturn jsonResponse(200, {\n\t\tok: true,\n\t\tlogs: (result.stdout + result.stderr).trim()\n\t}, requestId);\n};\n//#endregion\nexport { GET };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAGA;AACG,IAAC,GAAG,GAAG,OAAO,KAAK,KAAK;AAC3B,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC;AACtC,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC;AACjD,CAAC,IAAI,SAAS,EAAE,OAAO,SAAS;AAChC,CAAC,MAAM,KAAK,GAAG,QAAQ,EAAE;AACzB,CAAC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;AACvC,CAAC,MAAM,YAAY,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC;AACrD,CAAC,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC;AAC/C,CAAC,MAAM,UAAU,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC;AACjD,CAAC,MAAM,IAAI,GAAG,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG;AACjD,CAAC,IAAI,SAAS,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,GAAG,CAAC,EAAE,OAAO,aAAa,CAAC,GAAG,EAAE,mBAAmB,EAAE,6CAA6C,EAAE,EAAE,EAAE,SAAS,CAAC;AACnL,CAAC,IAAI,QAAQ;AACb,CAAC,IAAI,YAAY,EAAE;AACnB,EAAE,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;AACzE,EAAE,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;AAC/E,EAAE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,OAAO,aAAa,CAAC,GAAG,EAAE,iBAAiB,EAAE,CAAC,yBAAyB,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,SAAS,CAAC;AAChJ,CAAC;AACD,CAAC,IAAI,UAAU,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,OAAO,aAAa,CAAC,GAAG,EAAE,mBAAmB,EAAE,mCAAmC,EAAE,EAAE,EAAE,SAAS,CAAC;AAC/J,CAAC,IAAI,CAAC,CAAC,MAAM,WAAW,EAAE,EAAE,EAAE,EAAE,OAAO,aAAa,CAAC,GAAG,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,EAAE,EAAE,SAAS,CAAC;AACzH,CAAC,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,QAAQ,EAAE,IAAI,EAAE;AAClD,EAAE,GAAG,mBAAmB,CAAC,KAAK,CAAC;AAC/B,EAAE,KAAK,EAAE,UAAU,IAAI;AACvB,EAAE,CAAC;AACH,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,YAAY,CAAC,GAAG,EAAE;AAC1C,EAAE,EAAE,EAAE,KAAK;AACX,EAAE,IAAI,EAAE,EAAE;AACV,EAAE,KAAK,EAAE,MAAM,CAAC;AAChB,EAAE,EAAE,SAAS,CAAC;AACd,CAAC,OAAO,YAAY,CAAC,GAAG,EAAE;AAC1B,EAAE,EAAE,EAAE,IAAI;AACV,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI;AAC5C,EAAE,EAAE,SAAS,CAAC;AACd;;;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { aV as runAssistantAkmCommand } from './src-
|
|
2
|
-
import { g as getState } from './state-
|
|
3
|
-
import { d as getRequestId, r as requireAdmin } from './helpers-
|
|
4
|
-
import { s as safeParseJsonObject } from './akm-
|
|
1
|
+
import { aV as runAssistantAkmCommand } from './src-CUQ7IJUr.js';
|
|
2
|
+
import { g as getState } from './state-ClUH4b0u.js';
|
|
3
|
+
import { d as getRequestId, r as requireAdmin } from './helpers-DInkNOLc.js';
|
|
4
|
+
import { s as safeParseJsonObject } from './akm-CrfUw4yy.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-C0-bmtqX.js';
|
|
27
27
|
|
|
28
28
|
//#region src/lib/server/akm-health-report.ts
|
|
29
29
|
var AKM_HEALTH_REPORT_WINDOWS = [
|
|
@@ -653,4 +653,4 @@ var GET = async (event) => {
|
|
|
653
653
|
};
|
|
654
654
|
|
|
655
655
|
export { GET };
|
|
656
|
-
//# sourceMappingURL=_server.ts-
|
|
656
|
+
//# sourceMappingURL=_server.ts-BjuUsJn2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_server.ts-BytFAqv5.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\";\nimport { n as safeParseJsonObject } from \"../../../../../chunks/akm.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 asRecord(value) {\n\treturn value && typeof value === \"object\" && !Array.isArray(value) ? value : null;\n}\nfunction asArray(value) {\n\treturn Array.isArray(value) ? value : [];\n}\nfunction asNumber(value) {\n\treturn typeof value === \"number\" && Number.isFinite(value) ? value : 0;\n}\nfunction asString(value) {\n\treturn typeof value === \"string\" ? value : \"\";\n}\nfunction asBoolean(value) {\n\treturn value === true;\n}\nfunction clampWindow(value) {\n\treturn AKM_HEALTH_REPORT_WINDOWS.includes(value ?? \"\") ? value : \"72h\";\n}\nfunction escapeHtml(value) {\n\treturn value.replaceAll(\"&\", \"&\").replaceAll(\"<\", \"<\").replaceAll(\">\", \">\").replaceAll(\"\\\"\", \""\").replaceAll(\"'\", \"'\");\n}\nfunction scriptJson(value) {\n\treturn JSON.stringify(value).replaceAll(\"<\", \"\\\\u003c\");\n}\nfunction fmtInt(value) {\n\treturn new Intl.NumberFormat(\"en-US\", { maximumFractionDigits: 0 }).format(value);\n}\nfunction fmtPercent(value) {\n\treturn `${(value * 100).toFixed(value === 0 || value >= .1 ? 0 : 1)}%`;\n}\nfunction fmtDuration(ms) {\n\tif (!Number.isFinite(ms) || ms <= 0) return \"0s\";\n\tif (ms < 1e3) return `${Math.round(ms)}ms`;\n\tconst seconds = ms / 1e3;\n\tif (seconds < 60) return `${seconds.toFixed(seconds >= 10 ? 0 : 1)}s`;\n\tconst minutes = Math.floor(seconds / 60);\n\tconst remSeconds = Math.round(seconds % 60);\n\tif (minutes < 60) return `${minutes}m ${remSeconds}s`;\n\treturn `${Math.floor(minutes / 60)}h ${minutes % 60}m`;\n}\nfunction fmtUtc(value) {\n\tif (!value) return \"n/a\";\n\tconst d = new Date(value);\n\tif (Number.isNaN(d.getTime())) return \"n/a\";\n\treturn d.toLocaleString(\"en-US\", {\n\t\tdateStyle: \"medium\",\n\t\ttimeStyle: \"short\",\n\t\ttimeZone: \"UTC\"\n\t}) + \" UTC\";\n}\nfunction metricDelta(current, prior) {\n\tif (prior === current) return \"flat vs prior window\";\n\tif (prior === 0) return current > 0 ? \"new vs prior window\" : \"flat vs prior window\";\n\tconst pct = (current - prior) / Math.abs(prior) * 100;\n\treturn `${pct > 0 ? \"up\" : \"down\"} ${Math.abs(pct).toFixed(Math.abs(pct) >= 10 ? 0 : 1)}% vs prior window`;\n}\nfunction statusClass(status) {\n\tif (status === \"ok\" || status === \"pass\") return \"ok\";\n\tif (status === \"warn\") return \"warn\";\n\treturn \"fail\";\n}\nfunction buildCards(current, prior, proposalCount) {\n\tconst invoked = asNumber(current.invoked);\n\tconst completed = asNumber(current.completed);\n\tconst completionRate = invoked > 0 ? completed / invoked : 0;\n\tconst failRate = asNumber(asRecord(current.actions)?.error) > 0 && invoked > 0 ? asNumber(asRecord(current.actions)?.error) / invoked : 0;\n\tconst promoted = asNumber(asRecord(current.consolidation)?.promoted);\n\tconst written = asNumber(asRecord(current.memoryInference)?.written);\n\tconst entities = asNumber(asRecord(current.graphExtraction)?.entities);\n\tconst medianMs = asNumber(asRecord(current.wallTime)?.medianMs);\n\tconst priorInvoked = asNumber(prior.invoked);\n\tconst priorCompleted = asNumber(prior.completed);\n\tconst priorCompletionRate = priorInvoked > 0 ? priorCompleted / priorInvoked : 0;\n\tconst priorFailRate = asNumber(asRecord(prior.actions)?.error) > 0 && priorInvoked > 0 ? asNumber(asRecord(prior.actions)?.error) / priorInvoked : 0;\n\treturn [\n\t\t{\n\t\t\tlabel: \"Completion rate\",\n\t\t\tvalue: fmtPercent(completionRate),\n\t\t\tsub: metricDelta(completionRate, priorCompletionRate)\n\t\t},\n\t\t{\n\t\t\tlabel: \"Fail rate\",\n\t\t\tvalue: fmtPercent(failRate),\n\t\t\tsub: metricDelta(failRate, priorFailRate)\n\t\t},\n\t\t{\n\t\t\tlabel: \"Promoted\",\n\t\t\tvalue: fmtInt(promoted),\n\t\t\tsub: metricDelta(promoted, asNumber(asRecord(prior.consolidation)?.promoted))\n\t\t},\n\t\t{\n\t\t\tlabel: \"MI written\",\n\t\t\tvalue: fmtInt(written),\n\t\t\tsub: metricDelta(written, asNumber(asRecord(prior.memoryInference)?.written))\n\t\t},\n\t\t{\n\t\t\tlabel: \"Graph entities\",\n\t\t\tvalue: fmtInt(entities),\n\t\t\tsub: metricDelta(entities, asNumber(asRecord(prior.graphExtraction)?.entities))\n\t\t},\n\t\t{\n\t\t\tlabel: \"Median duration\",\n\t\t\tvalue: fmtDuration(medianMs),\n\t\t\tsub: metricDelta(medianMs, asNumber(asRecord(prior.wallTime)?.medianMs))\n\t\t},\n\t\t{\n\t\t\tlabel: \"Runs\",\n\t\t\tvalue: fmtInt(completed),\n\t\t\tsub: metricDelta(completed, priorCompleted)\n\t\t},\n\t\t{\n\t\t\tlabel: \"Pending proposals\",\n\t\t\tvalue: fmtInt(proposalCount),\n\t\t\tsub: proposalCount > 0 ? \"review queue has pending items\" : \"no pending proposals\"\n\t\t}\n\t].map((card) => `\n <div class=\"card\">\n <div class=\"card-label\">${escapeHtml(card.label)}</div>\n <div class=\"card-value\">${escapeHtml(card.value)}</div>\n <div class=\"card-sub\">${escapeHtml(card.sub)}</div>\n </div>`).join(\"\");\n}\nfunction buildAdvisories(health) {\n\tconst items = [...asArray(health.advisories), ...asArray(health.hardChecks).filter((item) => {\n\t\tconst status = asString(asRecord(item)?.status);\n\t\treturn status === \"warn\" || status === \"fail\";\n\t})].map((item) => asRecord(item)).filter((item) => item !== null);\n\tif (items.length === 0) return \"<div class=\\\"notice ok\\\">No active advisories for this window.</div>\";\n\treturn items.map((item) => {\n\t\tconst status = statusClass(asString(item.status));\n\t\tconst name = asString(item.name) || \"advisory\";\n\t\tconst message = asString(item.message) || \"No details.\";\n\t\treturn `<div class=\"notice ${status}\"><strong>${escapeHtml(name)}</strong><span>${escapeHtml(message)}</span></div>`;\n\t}).join(\"\");\n}\nfunction buildProposalRows(proposals) {\n\tif (proposals.length === 0) return \"<tr><td colspan=\\\"4\\\" class=\\\"empty\\\">No pending proposals.</td></tr>\";\n\treturn proposals.slice(0, 20).map((proposal) => `\n <tr>\n <td>${escapeHtml(proposal.ref || proposal.id || \"unknown\")}</td>\n <td>${escapeHtml(proposal.source || \"unknown\")}</td>\n <td>${escapeHtml(fmtUtc(proposal.createdAt))}</td>\n <td>${escapeHtml(proposal.id || \"\")}</td>\n </tr>`).join(\"\");\n}\nfunction buildRunRows(runs) {\n\tif (runs.length === 0) return \"<tr><td colspan=\\\"6\\\" class=\\\"empty\\\">No improve runs in this window.</td></tr>\";\n\treturn runs.slice(-10).reverse().map((run, index) => {\n\t\tconst consolidation = asRecord(run.consolidation);\n\t\tconst memoryInference = asRecord(run.memoryInference);\n\t\tconst graphExtraction = asRecord(run.graphExtraction);\n\t\tconst startedAt = asString(run.startedAt);\n\t\tconst durationMs = asNumber(run.wallTimeMs) || asNumber(run.durationMs);\n\t\treturn `\n <tr>\n <td>${escapeHtml(asString(run.runId) || asString(run.id) || `run-${index + 1}`)}</td>\n <td>${escapeHtml(fmtUtc(startedAt))}</td>\n <td>${escapeHtml(fmtDuration(durationMs))}</td>\n <td>${escapeHtml(String(asBoolean(run.ok) ? \"ok\" : \"fail\"))}</td>\n <td>${escapeHtml(fmtInt(asNumber(consolidation?.promoted)))}</td>\n <td>${escapeHtml(fmtInt(asNumber(memoryInference?.written)))}</td>\n <td>${escapeHtml(fmtInt(asNumber(graphExtraction?.entities)))}</td>\n </tr>`;\n\t}).join(\"\");\n}\nfunction buildSummaryRows(current) {\n\treturn [\n\t\t[\"Invoked\", fmtInt(asNumber(current.invoked))],\n\t\t[\"Completed\", fmtInt(asNumber(current.completed))],\n\t\t[\"Skipped\", fmtInt(asNumber(current.skipped))],\n\t\t[\"Promoted\", fmtInt(asNumber(asRecord(current.consolidation)?.promoted))],\n\t\t[\"Merged\", fmtInt(asNumber(asRecord(current.consolidation)?.merged))],\n\t\t[\"Deleted\", fmtInt(asNumber(asRecord(current.consolidation)?.deleted))],\n\t\t[\"Judged no action\", fmtInt(asNumber(asRecord(current.consolidation)?.judgedNoAction))],\n\t\t[\"Inference written\", fmtInt(asNumber(asRecord(current.memoryInference)?.written))],\n\t\t[\"Graph entities\", fmtInt(asNumber(asRecord(current.graphExtraction)?.entities))],\n\t\t[\"Median wall time\", fmtDuration(asNumber(asRecord(current.wallTime)?.medianMs))]\n\t].map(([label, value]) => `\n <tr>\n <th>${escapeHtml(label)}</th>\n <td>${escapeHtml(value)}</td>\n </tr>`).join(\"\");\n}\nfunction renderHtml(window, health, proposals) {\n\tconst improve = asRecord(health.improve) ?? {};\n\tconst windows = asArray(health.windows).map((item) => asRecord(item)).filter((item) => item !== null);\n\tconst currentWindow = asRecord(windows.find((item) => asString(item.name) === \"current\")?.improve) ?? improve;\n\tconst priorWindow = asRecord(windows.find((item) => asString(item.name) === \"prior\")?.improve) ?? {};\n\tconst runs = asArray(health.runs).map((item) => asRecord(item)).filter((item) => item !== null);\n\tconst status = asString(health.status) || \"unknown\";\n\tconst since = asString(health.since);\n\tconst until = asString((windows.find((item) => asString(item.name) === \"current\") ?? {}).until);\n\tconst semanticStatus = asString(asRecord(asArray(health.advisories).map((item) => asRecord(item)).find((item) => asString(item?.name) === \"semantic-search-runtime\")?.evidence)?.status) || \"unknown\";\n\tconst payload = runs.map((run, index) => {\n\t\tconst consolidation = asRecord(run.consolidation);\n\t\tconst memoryInference = asRecord(run.memoryInference);\n\t\tconst graphExtraction = asRecord(run.graphExtraction);\n\t\treturn {\n\t\t\tlabel: asString(run.startedAt) ? fmtUtc(asString(run.startedAt)).replace(\" UTC\", \"\") : `Run ${index + 1}`,\n\t\t\twallTimeMs: asNumber(run.wallTimeMs) || asNumber(run.durationMs),\n\t\t\tpromoted: asNumber(consolidation?.promoted),\n\t\t\tmerged: asNumber(consolidation?.merged),\n\t\t\tdeleted: asNumber(consolidation?.deleted),\n\t\t\tjudgedNoAction: asNumber(consolidation?.judgedNoAction),\n\t\t\twritten: asNumber(memoryInference?.written),\n\t\t\tentities: asNumber(graphExtraction?.entities),\n\t\t\tconsolidationMs: asNumber(consolidation?.durationMs),\n\t\t\tmemoryInferenceMs: asNumber(memoryInference?.durationMs),\n\t\t\tgraphExtractionMs: asNumber(graphExtraction?.durationMs),\n\t\t\tok: asBoolean(run.ok)\n\t\t};\n\t});\n\treturn `<!doctype html>\n<html lang=\"en\">\n<head>\n <meta charset=\"utf-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n <title>AKM Health Report (${escapeHtml(window)})</title>\n <style>\n :root {\n color-scheme: dark;\n --bg: #07111f;\n --panel: #101b2d;\n --panel-soft: #15233a;\n --border: rgba(148, 163, 184, 0.18);\n --text: #e5eefc;\n --muted: #93a4bf;\n --ok: #22c55e;\n --warn: #f59e0b;\n --fail: #ef4444;\n --accent: #60a5fa;\n }\n * { box-sizing: border-box; }\n body {\n margin: 0;\n font-family: Inter, ui-sans-serif, system-ui, sans-serif;\n background: radial-gradient(circle at top, #14233d 0%, var(--bg) 55%);\n color: var(--text);\n padding: 24px;\n }\n .shell {\n max-width: 1400px;\n margin: 0 auto;\n display: grid;\n gap: 20px;\n }\n .hero, .panel {\n background: rgba(16, 27, 45, 0.9);\n border: 1px solid var(--border);\n border-radius: 18px;\n box-shadow: 0 12px 36px rgba(0, 0, 0, 0.28);\n }\n .hero {\n padding: 24px;\n display: grid;\n gap: 16px;\n }\n .hero-top {\n display: flex;\n justify-content: space-between;\n gap: 16px;\n align-items: flex-start;\n flex-wrap: wrap;\n }\n h1, h2, h3, p { margin: 0; }\n .eyebrow { color: var(--muted); font-size: 12px; text-transform: uppercase; letter-spacing: 0.08em; }\n .title { font-size: clamp(28px, 4vw, 40px); font-weight: 700; }\n .subtitle { color: var(--muted); max-width: 80ch; }\n .status {\n border-radius: 999px;\n padding: 8px 12px;\n font-size: 12px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.08em;\n border: 1px solid transparent;\n }\n .status.ok { color: #bbf7d0; background: rgba(34, 197, 94, 0.14); border-color: rgba(34, 197, 94, 0.32); }\n .status.warn { color: #fde68a; background: rgba(245, 158, 11, 0.14); border-color: rgba(245, 158, 11, 0.32); }\n .status.fail { color: #fecaca; background: rgba(239, 68, 68, 0.14); border-color: rgba(239, 68, 68, 0.32); }\n .meta {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));\n gap: 12px;\n }\n .meta-item, .card {\n background: var(--panel-soft);\n border: 1px solid var(--border);\n border-radius: 14px;\n padding: 14px;\n }\n .meta-label, .card-label { color: var(--muted); font-size: 12px; text-transform: uppercase; letter-spacing: 0.06em; }\n .meta-value, .card-value { margin-top: 8px; font-size: 22px; font-weight: 700; }\n .card-sub { margin-top: 8px; color: var(--muted); font-size: 13px; }\n .cards {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));\n gap: 12px;\n }\n .grid-two {\n display: grid;\n grid-template-columns: minmax(0, 2fr) minmax(320px, 1fr);\n gap: 20px;\n }\n .panel { padding: 18px; }\n .panel-title { font-size: 18px; font-weight: 700; margin-bottom: 14px; }\n .chart-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));\n gap: 16px;\n }\n .chart {\n height: 320px;\n background: linear-gradient(180deg, rgba(255,255,255,0.01), rgba(255,255,255,0));\n border: 1px solid var(--border);\n border-radius: 14px;\n }\n .notice-list {\n display: grid;\n gap: 10px;\n }\n .notice {\n display: grid;\n gap: 6px;\n border-radius: 14px;\n padding: 14px;\n border: 1px solid var(--border);\n background: var(--panel-soft);\n }\n .notice.ok { border-color: rgba(34, 197, 94, 0.32); }\n .notice.warn { border-color: rgba(245, 158, 11, 0.32); }\n .notice.fail { border-color: rgba(239, 68, 68, 0.32); }\n .summary-table, .data-table {\n width: 100%;\n border-collapse: collapse;\n }\n .summary-table th, .summary-table td, .data-table th, .data-table td {\n padding: 10px 12px;\n border-bottom: 1px solid var(--border);\n text-align: left;\n vertical-align: top;\n }\n .summary-table th, .data-table th { color: var(--muted); font-weight: 600; }\n .empty { color: var(--muted); text-align: center; }\n .footer-note { color: var(--muted); font-size: 13px; }\n @media (max-width: 900px) {\n body { padding: 12px; }\n .grid-two { grid-template-columns: 1fr; }\n }\n @media (prefers-color-scheme: light) {\n :root {\n color-scheme: light;\n --bg: #f9fafb;\n --panel: #ffffff;\n --panel-soft: #f3f4f6;\n --border: rgba(0, 0, 0, 0.1);\n --text: #111827;\n --muted: #6b7280;\n --ok: #16a34a;\n --warn: #d97706;\n --fail: #dc2626;\n --accent: #2563eb;\n }\n body {\n background: radial-gradient(circle at top, #e9f0ff 0%, var(--bg) 55%);\n color: var(--text);\n }\n .hero, .panel {\n background: rgba(255, 255, 255, 0.95);\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08);\n }\n .status.ok { color: #15803d; background: rgba(22, 163, 74, 0.1); border-color: rgba(22, 163, 74, 0.3); }\n .status.warn { color: #b45309; background: rgba(217, 119, 6, 0.1); border-color: rgba(217, 119, 6, 0.3); }\n .status.fail { color: #b91c1c; background: rgba(220, 38, 38, 0.1); border-color: rgba(220, 38, 38, 0.3); }\n }\n </style>\n</head>\n<body>\n <div class=\"shell\">\n <section class=\"hero\">\n <div class=\"hero-top\">\n <div>\n <div class=\"eyebrow\">AKM Health Report</div>\n <h1 class=\"title\">Knowledge Health for ${escapeHtml(window)}</h1>\n <p class=\"subtitle\">Generated from live <code>akm health</code> data inside the running assistant container. This mirrors the existing AKM report shape with KPI cards, ECharts trends, advisories, and queue visibility.</p>\n </div>\n <div class=\"status ${escapeHtml(statusClass(status))}\">${escapeHtml(status)}</div>\n </div>\n <div class=\"meta\">\n <div class=\"meta-item\">\n <div class=\"meta-label\">Window</div>\n <div class=\"meta-value\">${escapeHtml(window)}</div>\n </div>\n <div class=\"meta-item\">\n <div class=\"meta-label\">Since</div>\n <div class=\"meta-value\">${escapeHtml(fmtUtc(since))}</div>\n </div>\n <div class=\"meta-item\">\n <div class=\"meta-label\">Until</div>\n <div class=\"meta-value\">${escapeHtml(fmtUtc(until))}</div>\n </div>\n <div class=\"meta-item\">\n <div class=\"meta-label\">Semantic search</div>\n <div class=\"meta-value\">${escapeHtml(semanticStatus)}</div>\n </div>\n </div>\n <div class=\"cards\">${buildCards(currentWindow, priorWindow, proposals.length)}</div>\n </section>\n\n <section class=\"panel\">\n <h2 class=\"panel-title\">Run Trends</h2>\n <div class=\"chart-grid\">\n <div id=\"chartWallTime\" class=\"chart\"></div>\n <div id=\"chartPhases\" class=\"chart\"></div>\n <div id=\"chartOutput\" class=\"chart\"></div>\n <div id=\"chartKnowledge\" class=\"chart\"></div>\n </div>\n </section>\n\n <section class=\"grid-two\">\n <div class=\"panel\">\n <h2 class=\"panel-title\">Summary</h2>\n <table class=\"summary-table\">\n <tbody>${buildSummaryRows(currentWindow)}</tbody>\n </table>\n </div>\n <div class=\"panel\">\n <h2 class=\"panel-title\">Advisories</h2>\n <div class=\"notice-list\">${buildAdvisories(health)}</div>\n </div>\n </section>\n\n <section class=\"grid-two\">\n <div class=\"panel\">\n <h2 class=\"panel-title\">Pending Proposals (${escapeHtml(fmtInt(proposals.length))})</h2>\n <table class=\"data-table\">\n <thead>\n <tr><th>Ref</th><th>Source</th><th>Created</th><th>ID</th></tr>\n </thead>\n <tbody>${buildProposalRows(proposals)}</tbody>\n </table>\n </div>\n <div class=\"panel\">\n <h2 class=\"panel-title\">Recent Runs</h2>\n <table class=\"data-table\">\n <thead>\n <tr><th>Run</th><th>Started</th><th>Duration</th><th>Status</th><th>Promoted</th><th>MI</th><th>Entities</th></tr>\n </thead>\n <tbody>${buildRunRows(runs)}</tbody>\n </table>\n </div>\n </section>\n\n <div class=\"footer-note\">Charts use Apache ECharts from jsDelivr. If the browser blocks external assets, the summary tables above remain the source of truth.</div>\n </div>\n\n <script>window.REPORT_DATA = ${scriptJson(payload)};<\\/script>\n <script src=\"https://cdn.jsdelivr.net/npm/echarts@5.5.1/dist/echarts.min.js\"><\\/script>\n <script>\n const runs = Array.isArray(window.REPORT_DATA) ? window.REPORT_DATA : [];\n const textColor = '#dbe7ff';\n const mutedColor = '#93a4bf';\n const axisStyle = { axisLabel: { color: mutedColor }, axisLine: { lineStyle: { color: '#334155' } }, splitLine: { lineStyle: { color: 'rgba(148,163,184,0.12)' } } };\n function baseChart(id) {\n const el = document.getElementById(id);\n if (!el || !window.echarts) return null;\n return window.echarts.init(el, null, { renderer: 'canvas' });\n }\n function setEmpty(elId, label) {\n const el = document.getElementById(elId);\n if (!el) return;\n el.innerHTML = '<div style=\"height:100%;display:grid;place-items:center;color:' + mutedColor + ';font-size:14px;\">' + label + '</div>';\n }\n function labels() { return runs.map((run) => run.label); }\n if (!window.echarts) {\n ['chartWallTime', 'chartPhases', 'chartOutput', 'chartKnowledge'].forEach((id) => setEmpty(id, 'ECharts failed to load.'));\n } else if (runs.length === 0) {\n ['chartWallTime', 'chartPhases', 'chartOutput', 'chartKnowledge'].forEach((id) => setEmpty(id, 'No runs in this window.'));\n } else {\n const common = { textStyle: { color: textColor }, animation: false, grid: { left: 48, right: 18, top: 40, bottom: 36 }, tooltip: { trigger: 'axis' } };\n const wallTime = baseChart('chartWallTime');\n wallTime && wallTime.setOption({\n ...common,\n title: { text: 'Wall Time Per Run', textStyle: { color: textColor, fontSize: 14 } },\n xAxis: { type: 'category', data: labels(), ...axisStyle },\n yAxis: { type: 'value', axisLabel: { color: mutedColor, formatter: (value) => Math.round(value / 1000) + 's' }, splitLine: axisStyle.splitLine },\n series: [{ type: 'line', smooth: true, data: runs.map((run) => run.wallTimeMs), lineStyle: { color: '#60a5fa' }, itemStyle: { color: '#60a5fa' }, areaStyle: { color: 'rgba(96,165,250,0.14)' } }]\n });\n\n const phases = baseChart('chartPhases');\n phases && phases.setOption({\n ...common,\n title: { text: 'Phase Breakdown', textStyle: { color: textColor, fontSize: 14 } },\n legend: { textStyle: { color: mutedColor } },\n xAxis: { type: 'category', data: labels(), ...axisStyle },\n yAxis: { type: 'value', axisLabel: { color: mutedColor, formatter: (value) => Math.round(value / 1000) + 's' }, splitLine: axisStyle.splitLine },\n series: [\n { name: 'Consolidation', type: 'bar', stack: 'phases', data: runs.map((run) => run.consolidationMs), itemStyle: { color: '#60a5fa' } },\n { name: 'Memory Inference', type: 'bar', stack: 'phases', data: runs.map((run) => run.memoryInferenceMs), itemStyle: { color: '#a78bfa' } },\n { name: 'Graph Extraction', type: 'bar', stack: 'phases', data: runs.map((run) => run.graphExtractionMs), itemStyle: { color: '#34d399' } }\n ]\n });\n\n const output = baseChart('chartOutput');\n output && output.setOption({\n ...common,\n title: { text: 'Consolidation Output', textStyle: { color: textColor, fontSize: 14 } },\n legend: { textStyle: { color: mutedColor } },\n xAxis: { type: 'category', data: labels(), ...axisStyle },\n yAxis: { type: 'value', axisLabel: { color: mutedColor }, splitLine: axisStyle.splitLine },\n series: [\n { name: 'Promoted', type: 'bar', data: runs.map((run) => run.promoted), itemStyle: { color: '#22c55e' } },\n { name: 'Merged', type: 'bar', data: runs.map((run) => run.merged), itemStyle: { color: '#f59e0b' } },\n { name: 'Deleted', type: 'bar', data: runs.map((run) => run.deleted), itemStyle: { color: '#ef4444' } },\n { name: 'No action', type: 'bar', data: runs.map((run) => run.judgedNoAction), itemStyle: { color: '#94a3b8' } }\n ]\n });\n\n const knowledge = baseChart('chartKnowledge');\n knowledge && knowledge.setOption({\n ...common,\n title: { text: 'Knowledge Growth Signals', textStyle: { color: textColor, fontSize: 14 } },\n legend: { textStyle: { color: mutedColor } },\n xAxis: { type: 'category', data: labels(), ...axisStyle },\n yAxis: { type: 'value', axisLabel: { color: mutedColor }, splitLine: axisStyle.splitLine },\n series: [\n { name: 'MI written', type: 'line', smooth: true, data: runs.map((run) => run.written), itemStyle: { color: '#a78bfa' }, lineStyle: { color: '#a78bfa' } },\n { name: 'Entities', type: 'line', smooth: true, data: runs.map((run) => run.entities), itemStyle: { color: '#34d399' }, lineStyle: { color: '#34d399' } }\n ]\n });\n\n window.addEventListener('resize', () => {\n wallTime && wallTime.resize();\n phases && phases.resize();\n output && output.resize();\n knowledge && knowledge.resize();\n });\n }\n <\\/script>\n</body>\n</html>`;\n}\nasync function buildAkmHealthReport(state, requestedWindow) {\n\tconst window = clampWindow(requestedWindow);\n\tconst [healthResult, proposalsResult] = await Promise.all([runAssistantAkmCommand(state, [\n\t\t\"health\",\n\t\t`--since=${window}`,\n\t\t\"--group-by\",\n\t\t\"run\",\n\t\t`--window-compare=${window}`,\n\t\t\"--format\",\n\t\t\"json\"\n\t], 2e4), runAssistantAkmCommand(state, [\n\t\t\"proposal\",\n\t\t\"list\",\n\t\t\"--format\",\n\t\t\"json\"\n\t], 12e3)]);\n\tconst health = safeParseJsonObject(healthResult.stdout);\n\tconst proposalsPayload = safeParseJsonObject(proposalsResult.stdout);\n\tif (!health) {\n\t\tconst detail = [healthResult.stderr.trim(), healthResult.stdout.trim()].filter(Boolean).join(\"\\n\\n\");\n\t\treturn {\n\t\t\twindow,\n\t\t\thtml: `<!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>AKM health report unavailable</h1><p>The admin UI could not build the report from <code>akm health</code> for window <code>${escapeHtml(window)}</code>.</p><pre>${escapeHtml(detail || \"The AKM CLI returned no parseable JSON output.\")}</pre></main></body></html>`\n\t\t};\n\t}\n\treturn {\n\t\thtml: renderHtml(window, health, asArray(proposalsPayload?.proposals).map((item) => asRecord(item)).filter((item) => item !== null).map((item) => ({\n\t\t\tid: asString(item.id),\n\t\t\tref: asString(item.ref),\n\t\t\tsource: asString(item.source),\n\t\t\tcreatedAt: asString(item.createdAt)\n\t\t}))),\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' https://cdn.jsdelivr.net\",\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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A;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;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;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;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,iDAAiD,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;AACtE;AACA;AACA,2BAA2B,EAAE,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;AACpF;AACA;AACA;AACA;AACA,kCAAkC,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;AACvD;AACA;AACA;AACA,kCAAkC,EAAE,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9D;AACA;AACA;AACA,kCAAkC,EAAE,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9D;AACA;AACA;AACA,kCAAkC,EAAE,UAAU,CAAC,cAAc,CAAC,CAAC;AAC/D;AACA;AACA,yBAAyB,EAAE,UAAU,CAAC,aAAa,EAAE,WAAW,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;AACpF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB,EAAE,gBAAgB,CAAC,aAAa,CAAC,CAAC;AACnD;AACA;AACA;AACA;AACA,iCAAiC,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;AAC3D;AACA;;AAEA;AACA;AACA,mDAAmD,EAAE,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;AAC1F;AACA;AACA;AACA;AACA,iBAAiB,EAAE,iBAAiB,CAAC,SAAS,CAAC,CAAC;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;AACtC;AACA;AACA;;AAEA;AACA;;AAEA,+BAA+B,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;AACrD;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;AACR;AACA,eAAe,oBAAoB,CAAC,KAAK,EAAE,eAAe,EAAE;AAC5D,CAAC,MAAM,MAAM,GAAG,WAAW,CAAC,eAAe,CAAC;AAC5C,CAAC,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,sBAAsB,CAAC,KAAK,EAAE;AAC1F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"}
|
|
1
|
+
{"version":3,"file":"_server.ts-BjuUsJn2.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\";\nimport { n as safeParseJsonObject } from \"../../../../../chunks/akm.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 asRecord(value) {\n\treturn value && typeof value === \"object\" && !Array.isArray(value) ? value : null;\n}\nfunction asArray(value) {\n\treturn Array.isArray(value) ? value : [];\n}\nfunction asNumber(value) {\n\treturn typeof value === \"number\" && Number.isFinite(value) ? value : 0;\n}\nfunction asString(value) {\n\treturn typeof value === \"string\" ? value : \"\";\n}\nfunction asBoolean(value) {\n\treturn value === true;\n}\nfunction clampWindow(value) {\n\treturn AKM_HEALTH_REPORT_WINDOWS.includes(value ?? \"\") ? value : \"72h\";\n}\nfunction escapeHtml(value) {\n\treturn value.replaceAll(\"&\", \"&\").replaceAll(\"<\", \"<\").replaceAll(\">\", \">\").replaceAll(\"\\\"\", \""\").replaceAll(\"'\", \"'\");\n}\nfunction scriptJson(value) {\n\treturn JSON.stringify(value).replaceAll(\"<\", \"\\\\u003c\");\n}\nfunction fmtInt(value) {\n\treturn new Intl.NumberFormat(\"en-US\", { maximumFractionDigits: 0 }).format(value);\n}\nfunction fmtPercent(value) {\n\treturn `${(value * 100).toFixed(value === 0 || value >= .1 ? 0 : 1)}%`;\n}\nfunction fmtDuration(ms) {\n\tif (!Number.isFinite(ms) || ms <= 0) return \"0s\";\n\tif (ms < 1e3) return `${Math.round(ms)}ms`;\n\tconst seconds = ms / 1e3;\n\tif (seconds < 60) return `${seconds.toFixed(seconds >= 10 ? 0 : 1)}s`;\n\tconst minutes = Math.floor(seconds / 60);\n\tconst remSeconds = Math.round(seconds % 60);\n\tif (minutes < 60) return `${minutes}m ${remSeconds}s`;\n\treturn `${Math.floor(minutes / 60)}h ${minutes % 60}m`;\n}\nfunction fmtUtc(value) {\n\tif (!value) return \"n/a\";\n\tconst d = new Date(value);\n\tif (Number.isNaN(d.getTime())) return \"n/a\";\n\treturn d.toLocaleString(\"en-US\", {\n\t\tdateStyle: \"medium\",\n\t\ttimeStyle: \"short\",\n\t\ttimeZone: \"UTC\"\n\t}) + \" UTC\";\n}\nfunction metricDelta(current, prior) {\n\tif (prior === current) return \"flat vs prior window\";\n\tif (prior === 0) return current > 0 ? \"new vs prior window\" : \"flat vs prior window\";\n\tconst pct = (current - prior) / Math.abs(prior) * 100;\n\treturn `${pct > 0 ? \"up\" : \"down\"} ${Math.abs(pct).toFixed(Math.abs(pct) >= 10 ? 0 : 1)}% vs prior window`;\n}\nfunction statusClass(status) {\n\tif (status === \"ok\" || status === \"pass\") return \"ok\";\n\tif (status === \"warn\") return \"warn\";\n\treturn \"fail\";\n}\nfunction buildCards(current, prior, proposalCount) {\n\tconst invoked = asNumber(current.invoked);\n\tconst completed = asNumber(current.completed);\n\tconst completionRate = invoked > 0 ? completed / invoked : 0;\n\tconst failRate = asNumber(asRecord(current.actions)?.error) > 0 && invoked > 0 ? asNumber(asRecord(current.actions)?.error) / invoked : 0;\n\tconst promoted = asNumber(asRecord(current.consolidation)?.promoted);\n\tconst written = asNumber(asRecord(current.memoryInference)?.written);\n\tconst entities = asNumber(asRecord(current.graphExtraction)?.entities);\n\tconst medianMs = asNumber(asRecord(current.wallTime)?.medianMs);\n\tconst priorInvoked = asNumber(prior.invoked);\n\tconst priorCompleted = asNumber(prior.completed);\n\tconst priorCompletionRate = priorInvoked > 0 ? priorCompleted / priorInvoked : 0;\n\tconst priorFailRate = asNumber(asRecord(prior.actions)?.error) > 0 && priorInvoked > 0 ? asNumber(asRecord(prior.actions)?.error) / priorInvoked : 0;\n\treturn [\n\t\t{\n\t\t\tlabel: \"Completion rate\",\n\t\t\tvalue: fmtPercent(completionRate),\n\t\t\tsub: metricDelta(completionRate, priorCompletionRate)\n\t\t},\n\t\t{\n\t\t\tlabel: \"Fail rate\",\n\t\t\tvalue: fmtPercent(failRate),\n\t\t\tsub: metricDelta(failRate, priorFailRate)\n\t\t},\n\t\t{\n\t\t\tlabel: \"Promoted\",\n\t\t\tvalue: fmtInt(promoted),\n\t\t\tsub: metricDelta(promoted, asNumber(asRecord(prior.consolidation)?.promoted))\n\t\t},\n\t\t{\n\t\t\tlabel: \"MI written\",\n\t\t\tvalue: fmtInt(written),\n\t\t\tsub: metricDelta(written, asNumber(asRecord(prior.memoryInference)?.written))\n\t\t},\n\t\t{\n\t\t\tlabel: \"Graph entities\",\n\t\t\tvalue: fmtInt(entities),\n\t\t\tsub: metricDelta(entities, asNumber(asRecord(prior.graphExtraction)?.entities))\n\t\t},\n\t\t{\n\t\t\tlabel: \"Median duration\",\n\t\t\tvalue: fmtDuration(medianMs),\n\t\t\tsub: metricDelta(medianMs, asNumber(asRecord(prior.wallTime)?.medianMs))\n\t\t},\n\t\t{\n\t\t\tlabel: \"Runs\",\n\t\t\tvalue: fmtInt(completed),\n\t\t\tsub: metricDelta(completed, priorCompleted)\n\t\t},\n\t\t{\n\t\t\tlabel: \"Pending proposals\",\n\t\t\tvalue: fmtInt(proposalCount),\n\t\t\tsub: proposalCount > 0 ? \"review queue has pending items\" : \"no pending proposals\"\n\t\t}\n\t].map((card) => `\n <div class=\"card\">\n <div class=\"card-label\">${escapeHtml(card.label)}</div>\n <div class=\"card-value\">${escapeHtml(card.value)}</div>\n <div class=\"card-sub\">${escapeHtml(card.sub)}</div>\n </div>`).join(\"\");\n}\nfunction buildAdvisories(health) {\n\tconst items = [...asArray(health.advisories), ...asArray(health.hardChecks).filter((item) => {\n\t\tconst status = asString(asRecord(item)?.status);\n\t\treturn status === \"warn\" || status === \"fail\";\n\t})].map((item) => asRecord(item)).filter((item) => item !== null);\n\tif (items.length === 0) return \"<div class=\\\"notice ok\\\">No active advisories for this window.</div>\";\n\treturn items.map((item) => {\n\t\tconst status = statusClass(asString(item.status));\n\t\tconst name = asString(item.name) || \"advisory\";\n\t\tconst message = asString(item.message) || \"No details.\";\n\t\treturn `<div class=\"notice ${status}\"><strong>${escapeHtml(name)}</strong><span>${escapeHtml(message)}</span></div>`;\n\t}).join(\"\");\n}\nfunction buildProposalRows(proposals) {\n\tif (proposals.length === 0) return \"<tr><td colspan=\\\"4\\\" class=\\\"empty\\\">No pending proposals.</td></tr>\";\n\treturn proposals.slice(0, 20).map((proposal) => `\n <tr>\n <td>${escapeHtml(proposal.ref || proposal.id || \"unknown\")}</td>\n <td>${escapeHtml(proposal.source || \"unknown\")}</td>\n <td>${escapeHtml(fmtUtc(proposal.createdAt))}</td>\n <td>${escapeHtml(proposal.id || \"\")}</td>\n </tr>`).join(\"\");\n}\nfunction buildRunRows(runs) {\n\tif (runs.length === 0) return \"<tr><td colspan=\\\"6\\\" class=\\\"empty\\\">No improve runs in this window.</td></tr>\";\n\treturn runs.slice(-10).reverse().map((run, index) => {\n\t\tconst consolidation = asRecord(run.consolidation);\n\t\tconst memoryInference = asRecord(run.memoryInference);\n\t\tconst graphExtraction = asRecord(run.graphExtraction);\n\t\tconst startedAt = asString(run.startedAt);\n\t\tconst durationMs = asNumber(run.wallTimeMs) || asNumber(run.durationMs);\n\t\treturn `\n <tr>\n <td>${escapeHtml(asString(run.runId) || asString(run.id) || `run-${index + 1}`)}</td>\n <td>${escapeHtml(fmtUtc(startedAt))}</td>\n <td>${escapeHtml(fmtDuration(durationMs))}</td>\n <td>${escapeHtml(String(asBoolean(run.ok) ? \"ok\" : \"fail\"))}</td>\n <td>${escapeHtml(fmtInt(asNumber(consolidation?.promoted)))}</td>\n <td>${escapeHtml(fmtInt(asNumber(memoryInference?.written)))}</td>\n <td>${escapeHtml(fmtInt(asNumber(graphExtraction?.entities)))}</td>\n </tr>`;\n\t}).join(\"\");\n}\nfunction buildSummaryRows(current) {\n\treturn [\n\t\t[\"Invoked\", fmtInt(asNumber(current.invoked))],\n\t\t[\"Completed\", fmtInt(asNumber(current.completed))],\n\t\t[\"Skipped\", fmtInt(asNumber(current.skipped))],\n\t\t[\"Promoted\", fmtInt(asNumber(asRecord(current.consolidation)?.promoted))],\n\t\t[\"Merged\", fmtInt(asNumber(asRecord(current.consolidation)?.merged))],\n\t\t[\"Deleted\", fmtInt(asNumber(asRecord(current.consolidation)?.deleted))],\n\t\t[\"Judged no action\", fmtInt(asNumber(asRecord(current.consolidation)?.judgedNoAction))],\n\t\t[\"Inference written\", fmtInt(asNumber(asRecord(current.memoryInference)?.written))],\n\t\t[\"Graph entities\", fmtInt(asNumber(asRecord(current.graphExtraction)?.entities))],\n\t\t[\"Median wall time\", fmtDuration(asNumber(asRecord(current.wallTime)?.medianMs))]\n\t].map(([label, value]) => `\n <tr>\n <th>${escapeHtml(label)}</th>\n <td>${escapeHtml(value)}</td>\n </tr>`).join(\"\");\n}\nfunction renderHtml(window, health, proposals) {\n\tconst improve = asRecord(health.improve) ?? {};\n\tconst windows = asArray(health.windows).map((item) => asRecord(item)).filter((item) => item !== null);\n\tconst currentWindow = asRecord(windows.find((item) => asString(item.name) === \"current\")?.improve) ?? improve;\n\tconst priorWindow = asRecord(windows.find((item) => asString(item.name) === \"prior\")?.improve) ?? {};\n\tconst runs = asArray(health.runs).map((item) => asRecord(item)).filter((item) => item !== null);\n\tconst status = asString(health.status) || \"unknown\";\n\tconst since = asString(health.since);\n\tconst until = asString((windows.find((item) => asString(item.name) === \"current\") ?? {}).until);\n\tconst semanticStatus = asString(asRecord(asArray(health.advisories).map((item) => asRecord(item)).find((item) => asString(item?.name) === \"semantic-search-runtime\")?.evidence)?.status) || \"unknown\";\n\tconst payload = runs.map((run, index) => {\n\t\tconst consolidation = asRecord(run.consolidation);\n\t\tconst memoryInference = asRecord(run.memoryInference);\n\t\tconst graphExtraction = asRecord(run.graphExtraction);\n\t\treturn {\n\t\t\tlabel: asString(run.startedAt) ? fmtUtc(asString(run.startedAt)).replace(\" UTC\", \"\") : `Run ${index + 1}`,\n\t\t\twallTimeMs: asNumber(run.wallTimeMs) || asNumber(run.durationMs),\n\t\t\tpromoted: asNumber(consolidation?.promoted),\n\t\t\tmerged: asNumber(consolidation?.merged),\n\t\t\tdeleted: asNumber(consolidation?.deleted),\n\t\t\tjudgedNoAction: asNumber(consolidation?.judgedNoAction),\n\t\t\twritten: asNumber(memoryInference?.written),\n\t\t\tentities: asNumber(graphExtraction?.entities),\n\t\t\tconsolidationMs: asNumber(consolidation?.durationMs),\n\t\t\tmemoryInferenceMs: asNumber(memoryInference?.durationMs),\n\t\t\tgraphExtractionMs: asNumber(graphExtraction?.durationMs),\n\t\t\tok: asBoolean(run.ok)\n\t\t};\n\t});\n\treturn `<!doctype html>\n<html lang=\"en\">\n<head>\n <meta charset=\"utf-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n <title>AKM Health Report (${escapeHtml(window)})</title>\n <style>\n :root {\n color-scheme: dark;\n --bg: #07111f;\n --panel: #101b2d;\n --panel-soft: #15233a;\n --border: rgba(148, 163, 184, 0.18);\n --text: #e5eefc;\n --muted: #93a4bf;\n --ok: #22c55e;\n --warn: #f59e0b;\n --fail: #ef4444;\n --accent: #60a5fa;\n }\n * { box-sizing: border-box; }\n body {\n margin: 0;\n font-family: Inter, ui-sans-serif, system-ui, sans-serif;\n background: radial-gradient(circle at top, #14233d 0%, var(--bg) 55%);\n color: var(--text);\n padding: 24px;\n }\n .shell {\n max-width: 1400px;\n margin: 0 auto;\n display: grid;\n gap: 20px;\n }\n .hero, .panel {\n background: rgba(16, 27, 45, 0.9);\n border: 1px solid var(--border);\n border-radius: 18px;\n box-shadow: 0 12px 36px rgba(0, 0, 0, 0.28);\n }\n .hero {\n padding: 24px;\n display: grid;\n gap: 16px;\n }\n .hero-top {\n display: flex;\n justify-content: space-between;\n gap: 16px;\n align-items: flex-start;\n flex-wrap: wrap;\n }\n h1, h2, h3, p { margin: 0; }\n .eyebrow { color: var(--muted); font-size: 12px; text-transform: uppercase; letter-spacing: 0.08em; }\n .title { font-size: clamp(28px, 4vw, 40px); font-weight: 700; }\n .subtitle { color: var(--muted); max-width: 80ch; }\n .status {\n border-radius: 999px;\n padding: 8px 12px;\n font-size: 12px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.08em;\n border: 1px solid transparent;\n }\n .status.ok { color: #bbf7d0; background: rgba(34, 197, 94, 0.14); border-color: rgba(34, 197, 94, 0.32); }\n .status.warn { color: #fde68a; background: rgba(245, 158, 11, 0.14); border-color: rgba(245, 158, 11, 0.32); }\n .status.fail { color: #fecaca; background: rgba(239, 68, 68, 0.14); border-color: rgba(239, 68, 68, 0.32); }\n .meta {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));\n gap: 12px;\n }\n .meta-item, .card {\n background: var(--panel-soft);\n border: 1px solid var(--border);\n border-radius: 14px;\n padding: 14px;\n }\n .meta-label, .card-label { color: var(--muted); font-size: 12px; text-transform: uppercase; letter-spacing: 0.06em; }\n .meta-value, .card-value { margin-top: 8px; font-size: 22px; font-weight: 700; }\n .card-sub { margin-top: 8px; color: var(--muted); font-size: 13px; }\n .cards {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));\n gap: 12px;\n }\n .grid-two {\n display: grid;\n grid-template-columns: minmax(0, 2fr) minmax(320px, 1fr);\n gap: 20px;\n }\n .panel { padding: 18px; }\n .panel-title { font-size: 18px; font-weight: 700; margin-bottom: 14px; }\n .chart-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));\n gap: 16px;\n }\n .chart {\n height: 320px;\n background: linear-gradient(180deg, rgba(255,255,255,0.01), rgba(255,255,255,0));\n border: 1px solid var(--border);\n border-radius: 14px;\n }\n .notice-list {\n display: grid;\n gap: 10px;\n }\n .notice {\n display: grid;\n gap: 6px;\n border-radius: 14px;\n padding: 14px;\n border: 1px solid var(--border);\n background: var(--panel-soft);\n }\n .notice.ok { border-color: rgba(34, 197, 94, 0.32); }\n .notice.warn { border-color: rgba(245, 158, 11, 0.32); }\n .notice.fail { border-color: rgba(239, 68, 68, 0.32); }\n .summary-table, .data-table {\n width: 100%;\n border-collapse: collapse;\n }\n .summary-table th, .summary-table td, .data-table th, .data-table td {\n padding: 10px 12px;\n border-bottom: 1px solid var(--border);\n text-align: left;\n vertical-align: top;\n }\n .summary-table th, .data-table th { color: var(--muted); font-weight: 600; }\n .empty { color: var(--muted); text-align: center; }\n .footer-note { color: var(--muted); font-size: 13px; }\n @media (max-width: 900px) {\n body { padding: 12px; }\n .grid-two { grid-template-columns: 1fr; }\n }\n @media (prefers-color-scheme: light) {\n :root {\n color-scheme: light;\n --bg: #f9fafb;\n --panel: #ffffff;\n --panel-soft: #f3f4f6;\n --border: rgba(0, 0, 0, 0.1);\n --text: #111827;\n --muted: #6b7280;\n --ok: #16a34a;\n --warn: #d97706;\n --fail: #dc2626;\n --accent: #2563eb;\n }\n body {\n background: radial-gradient(circle at top, #e9f0ff 0%, var(--bg) 55%);\n color: var(--text);\n }\n .hero, .panel {\n background: rgba(255, 255, 255, 0.95);\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08);\n }\n .status.ok { color: #15803d; background: rgba(22, 163, 74, 0.1); border-color: rgba(22, 163, 74, 0.3); }\n .status.warn { color: #b45309; background: rgba(217, 119, 6, 0.1); border-color: rgba(217, 119, 6, 0.3); }\n .status.fail { color: #b91c1c; background: rgba(220, 38, 38, 0.1); border-color: rgba(220, 38, 38, 0.3); }\n }\n </style>\n</head>\n<body>\n <div class=\"shell\">\n <section class=\"hero\">\n <div class=\"hero-top\">\n <div>\n <div class=\"eyebrow\">AKM Health Report</div>\n <h1 class=\"title\">Knowledge Health for ${escapeHtml(window)}</h1>\n <p class=\"subtitle\">Generated from live <code>akm health</code> data inside the running assistant container. This mirrors the existing AKM report shape with KPI cards, ECharts trends, advisories, and queue visibility.</p>\n </div>\n <div class=\"status ${escapeHtml(statusClass(status))}\">${escapeHtml(status)}</div>\n </div>\n <div class=\"meta\">\n <div class=\"meta-item\">\n <div class=\"meta-label\">Window</div>\n <div class=\"meta-value\">${escapeHtml(window)}</div>\n </div>\n <div class=\"meta-item\">\n <div class=\"meta-label\">Since</div>\n <div class=\"meta-value\">${escapeHtml(fmtUtc(since))}</div>\n </div>\n <div class=\"meta-item\">\n <div class=\"meta-label\">Until</div>\n <div class=\"meta-value\">${escapeHtml(fmtUtc(until))}</div>\n </div>\n <div class=\"meta-item\">\n <div class=\"meta-label\">Semantic search</div>\n <div class=\"meta-value\">${escapeHtml(semanticStatus)}</div>\n </div>\n </div>\n <div class=\"cards\">${buildCards(currentWindow, priorWindow, proposals.length)}</div>\n </section>\n\n <section class=\"panel\">\n <h2 class=\"panel-title\">Run Trends</h2>\n <div class=\"chart-grid\">\n <div id=\"chartWallTime\" class=\"chart\"></div>\n <div id=\"chartPhases\" class=\"chart\"></div>\n <div id=\"chartOutput\" class=\"chart\"></div>\n <div id=\"chartKnowledge\" class=\"chart\"></div>\n </div>\n </section>\n\n <section class=\"grid-two\">\n <div class=\"panel\">\n <h2 class=\"panel-title\">Summary</h2>\n <table class=\"summary-table\">\n <tbody>${buildSummaryRows(currentWindow)}</tbody>\n </table>\n </div>\n <div class=\"panel\">\n <h2 class=\"panel-title\">Advisories</h2>\n <div class=\"notice-list\">${buildAdvisories(health)}</div>\n </div>\n </section>\n\n <section class=\"grid-two\">\n <div class=\"panel\">\n <h2 class=\"panel-title\">Pending Proposals (${escapeHtml(fmtInt(proposals.length))})</h2>\n <table class=\"data-table\">\n <thead>\n <tr><th>Ref</th><th>Source</th><th>Created</th><th>ID</th></tr>\n </thead>\n <tbody>${buildProposalRows(proposals)}</tbody>\n </table>\n </div>\n <div class=\"panel\">\n <h2 class=\"panel-title\">Recent Runs</h2>\n <table class=\"data-table\">\n <thead>\n <tr><th>Run</th><th>Started</th><th>Duration</th><th>Status</th><th>Promoted</th><th>MI</th><th>Entities</th></tr>\n </thead>\n <tbody>${buildRunRows(runs)}</tbody>\n </table>\n </div>\n </section>\n\n <div class=\"footer-note\">Charts use Apache ECharts from jsDelivr. If the browser blocks external assets, the summary tables above remain the source of truth.</div>\n </div>\n\n <script>window.REPORT_DATA = ${scriptJson(payload)};<\\/script>\n <script src=\"https://cdn.jsdelivr.net/npm/echarts@5.5.1/dist/echarts.min.js\"><\\/script>\n <script>\n const runs = Array.isArray(window.REPORT_DATA) ? window.REPORT_DATA : [];\n const textColor = '#dbe7ff';\n const mutedColor = '#93a4bf';\n const axisStyle = { axisLabel: { color: mutedColor }, axisLine: { lineStyle: { color: '#334155' } }, splitLine: { lineStyle: { color: 'rgba(148,163,184,0.12)' } } };\n function baseChart(id) {\n const el = document.getElementById(id);\n if (!el || !window.echarts) return null;\n return window.echarts.init(el, null, { renderer: 'canvas' });\n }\n function setEmpty(elId, label) {\n const el = document.getElementById(elId);\n if (!el) return;\n el.innerHTML = '<div style=\"height:100%;display:grid;place-items:center;color:' + mutedColor + ';font-size:14px;\">' + label + '</div>';\n }\n function labels() { return runs.map((run) => run.label); }\n if (!window.echarts) {\n ['chartWallTime', 'chartPhases', 'chartOutput', 'chartKnowledge'].forEach((id) => setEmpty(id, 'ECharts failed to load.'));\n } else if (runs.length === 0) {\n ['chartWallTime', 'chartPhases', 'chartOutput', 'chartKnowledge'].forEach((id) => setEmpty(id, 'No runs in this window.'));\n } else {\n const common = { textStyle: { color: textColor }, animation: false, grid: { left: 48, right: 18, top: 40, bottom: 36 }, tooltip: { trigger: 'axis' } };\n const wallTime = baseChart('chartWallTime');\n wallTime && wallTime.setOption({\n ...common,\n title: { text: 'Wall Time Per Run', textStyle: { color: textColor, fontSize: 14 } },\n xAxis: { type: 'category', data: labels(), ...axisStyle },\n yAxis: { type: 'value', axisLabel: { color: mutedColor, formatter: (value) => Math.round(value / 1000) + 's' }, splitLine: axisStyle.splitLine },\n series: [{ type: 'line', smooth: true, data: runs.map((run) => run.wallTimeMs), lineStyle: { color: '#60a5fa' }, itemStyle: { color: '#60a5fa' }, areaStyle: { color: 'rgba(96,165,250,0.14)' } }]\n });\n\n const phases = baseChart('chartPhases');\n phases && phases.setOption({\n ...common,\n title: { text: 'Phase Breakdown', textStyle: { color: textColor, fontSize: 14 } },\n legend: { textStyle: { color: mutedColor } },\n xAxis: { type: 'category', data: labels(), ...axisStyle },\n yAxis: { type: 'value', axisLabel: { color: mutedColor, formatter: (value) => Math.round(value / 1000) + 's' }, splitLine: axisStyle.splitLine },\n series: [\n { name: 'Consolidation', type: 'bar', stack: 'phases', data: runs.map((run) => run.consolidationMs), itemStyle: { color: '#60a5fa' } },\n { name: 'Memory Inference', type: 'bar', stack: 'phases', data: runs.map((run) => run.memoryInferenceMs), itemStyle: { color: '#a78bfa' } },\n { name: 'Graph Extraction', type: 'bar', stack: 'phases', data: runs.map((run) => run.graphExtractionMs), itemStyle: { color: '#34d399' } }\n ]\n });\n\n const output = baseChart('chartOutput');\n output && output.setOption({\n ...common,\n title: { text: 'Consolidation Output', textStyle: { color: textColor, fontSize: 14 } },\n legend: { textStyle: { color: mutedColor } },\n xAxis: { type: 'category', data: labels(), ...axisStyle },\n yAxis: { type: 'value', axisLabel: { color: mutedColor }, splitLine: axisStyle.splitLine },\n series: [\n { name: 'Promoted', type: 'bar', data: runs.map((run) => run.promoted), itemStyle: { color: '#22c55e' } },\n { name: 'Merged', type: 'bar', data: runs.map((run) => run.merged), itemStyle: { color: '#f59e0b' } },\n { name: 'Deleted', type: 'bar', data: runs.map((run) => run.deleted), itemStyle: { color: '#ef4444' } },\n { name: 'No action', type: 'bar', data: runs.map((run) => run.judgedNoAction), itemStyle: { color: '#94a3b8' } }\n ]\n });\n\n const knowledge = baseChart('chartKnowledge');\n knowledge && knowledge.setOption({\n ...common,\n title: { text: 'Knowledge Growth Signals', textStyle: { color: textColor, fontSize: 14 } },\n legend: { textStyle: { color: mutedColor } },\n xAxis: { type: 'category', data: labels(), ...axisStyle },\n yAxis: { type: 'value', axisLabel: { color: mutedColor }, splitLine: axisStyle.splitLine },\n series: [\n { name: 'MI written', type: 'line', smooth: true, data: runs.map((run) => run.written), itemStyle: { color: '#a78bfa' }, lineStyle: { color: '#a78bfa' } },\n { name: 'Entities', type: 'line', smooth: true, data: runs.map((run) => run.entities), itemStyle: { color: '#34d399' }, lineStyle: { color: '#34d399' } }\n ]\n });\n\n window.addEventListener('resize', () => {\n wallTime && wallTime.resize();\n phases && phases.resize();\n output && output.resize();\n knowledge && knowledge.resize();\n });\n }\n <\\/script>\n</body>\n</html>`;\n}\nasync function buildAkmHealthReport(state, requestedWindow) {\n\tconst window = clampWindow(requestedWindow);\n\tconst [healthResult, proposalsResult] = await Promise.all([runAssistantAkmCommand(state, [\n\t\t\"health\",\n\t\t`--since=${window}`,\n\t\t\"--group-by\",\n\t\t\"run\",\n\t\t`--window-compare=${window}`,\n\t\t\"--format\",\n\t\t\"json\"\n\t], 2e4), runAssistantAkmCommand(state, [\n\t\t\"proposal\",\n\t\t\"list\",\n\t\t\"--format\",\n\t\t\"json\"\n\t], 12e3)]);\n\tconst health = safeParseJsonObject(healthResult.stdout);\n\tconst proposalsPayload = safeParseJsonObject(proposalsResult.stdout);\n\tif (!health) {\n\t\tconst detail = [healthResult.stderr.trim(), healthResult.stdout.trim()].filter(Boolean).join(\"\\n\\n\");\n\t\treturn {\n\t\t\twindow,\n\t\t\thtml: `<!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>AKM health report unavailable</h1><p>The admin UI could not build the report from <code>akm health</code> for window <code>${escapeHtml(window)}</code>.</p><pre>${escapeHtml(detail || \"The AKM CLI returned no parseable JSON output.\")}</pre></main></body></html>`\n\t\t};\n\t}\n\treturn {\n\t\thtml: renderHtml(window, health, asArray(proposalsPayload?.proposals).map((item) => asRecord(item)).filter((item) => item !== null).map((item) => ({\n\t\t\tid: asString(item.id),\n\t\t\tref: asString(item.ref),\n\t\t\tsource: asString(item.source),\n\t\t\tcreatedAt: asString(item.createdAt)\n\t\t}))),\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' https://cdn.jsdelivr.net\",\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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A;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;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;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;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,iDAAiD,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;AACtE;AACA;AACA,2BAA2B,EAAE,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;AACpF;AACA;AACA;AACA;AACA,kCAAkC,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;AACvD;AACA;AACA;AACA,kCAAkC,EAAE,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9D;AACA;AACA;AACA,kCAAkC,EAAE,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9D;AACA;AACA;AACA,kCAAkC,EAAE,UAAU,CAAC,cAAc,CAAC,CAAC;AAC/D;AACA;AACA,yBAAyB,EAAE,UAAU,CAAC,aAAa,EAAE,WAAW,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;AACpF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB,EAAE,gBAAgB,CAAC,aAAa,CAAC,CAAC;AACnD;AACA;AACA;AACA;AACA,iCAAiC,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;AAC3D;AACA;;AAEA;AACA;AACA,mDAAmD,EAAE,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;AAC1F;AACA;AACA;AACA;AACA,iBAAiB,EAAE,iBAAiB,CAAC,SAAS,CAAC,CAAC;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;AACtC;AACA;AACA;;AAEA;AACA;;AAEA,+BAA+B,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;AACrD;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;AACR;AACA,eAAe,oBAAoB,CAAC,KAAK,EAAE,eAAe,EAAE;AAC5D,CAAC,MAAM,MAAM,GAAG,WAAW,CAAC,eAAe,CAAC;AAC5C,CAAC,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,sBAAsB,CAAC,KAAK,EAAE;AAC1F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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { aR as resolveDataDir, aX as seedUiBuild, H as createLogger } from './src-
|
|
2
|
-
import { d as getRequestId, r as requireAdmin, e as errorResponse, k as jsonResponse } from './helpers-
|
|
1
|
+
import { aR as resolveDataDir, aX as seedUiBuild, H as createLogger } from './src-CUQ7IJUr.js';
|
|
2
|
+
import { d as getRequestId, r as requireAdmin, e as errorResponse, k as jsonResponse } from './helpers-DInkNOLc.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-C0-bmtqX.js';
|
|
25
|
+
import './state-ClUH4b0u.js';
|
|
26
26
|
|
|
27
27
|
//#region src/routes/admin/ui-version/+server.ts
|
|
28
28
|
var logger = createLogger("ui-version");
|
|
@@ -89,4 +89,4 @@ var POST = async (event) => {
|
|
|
89
89
|
};
|
|
90
90
|
|
|
91
91
|
export { POST };
|
|
92
|
-
//# sourceMappingURL=_server.ts-
|
|
92
|
+
//# sourceMappingURL=_server.ts-Bn5TWd33.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_server.ts-
|
|
1
|
+
{"version":3,"file":"_server.ts-Bn5TWd33.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/admin/ui-version/_server.ts.js"],"sourcesContent":["import { en as seedUiBuild, rn as resolveDataDir, xn as createLogger } from \"../../../../chunks/src.js\";\nimport { d as requireAdmin, i as errorResponse, l as jsonResponse, o as getRequestId } from \"../../../../chunks/helpers.js\";\n//#region src/routes/admin/ui-version/+server.ts\nvar logger = createLogger(\"ui-version\");\nvar POST = async (event) => {\n\tconst requestId = getRequestId(event);\n\tconst authError = requireAdmin(event, requestId);\n\tif (authError) return authError;\n\tlet body;\n\ttry {\n\t\tbody = await event.request.json();\n\t} catch {\n\t\treturn errorResponse(400, \"invalid_json\", \"Request body must be valid JSON\", {}, requestId);\n\t}\n\tconst tag = typeof body.tag === \"string\" ? body.tag.trim() : \"\";\n\tif (!tag) return errorResponse(400, \"tag_required\", \"tag is required\", {}, requestId);\n\tif (!/^[a-zA-Z0-9._\\-]+$/.test(tag)) return errorResponse(400, \"invalid_tag\", \"Tag must be alphanumeric with . _ or - only\", {}, requestId);\n\tconst dataDir = resolveDataDir();\n\tconst repoRef = tag.startsWith(\"v\") ? tag : `v${tag}`;\n\ttry {\n\t\tawait seedUiBuild(repoRef, dataDir, { forceRemote: true });\n\t} catch (e) {\n\t\tconst msg = e instanceof Error ? e.message : String(e);\n\t\tlogger.error(\"ui-version download failed\", {\n\t\t\trequestId,\n\t\t\terror: msg\n\t\t});\n\t\treturn errorResponse(502, \"download_failed\", msg, { message: msg }, requestId);\n\t}\n\tconst supervisor = process.env.OP_UI_SUPERVISOR ?? \"\";\n\tlet restarting = false;\n\tlet pendingRestart = false;\n\tif (supervisor === \"electron\") {\n\t\tpendingRestart = true;\n\t\tlogger.info(\"ui-version downloaded (electron — client will restart via IPC)\", {\n\t\t\trequestId,\n\t\t\ttag\n\t\t});\n\t} else if (supervisor && process.ppid && process.ppid > 1) try {\n\t\tprocess.kill(process.ppid, \"SIGUSR2\");\n\t\trestarting = true;\n\t\tlogger.info(\"ui-version restart signalled\", {\n\t\t\trequestId,\n\t\t\tsupervisor,\n\t\t\tppid: process.ppid\n\t\t});\n\t} catch (e) {\n\t\tlogger.warn(\"ui-version restart signal failed\", {\n\t\t\trequestId,\n\t\t\terror: e instanceof Error ? e.message : String(e)\n\t\t});\n\t}\n\tlogger.info(\"ui-version downloaded\", {\n\t\trequestId,\n\t\ttag,\n\t\trestarting,\n\t\tpendingRestart\n\t});\n\treturn jsonResponse(200, {\n\t\tok: true,\n\t\ttag,\n\t\trestarting,\n\t\tpendingRestart\n\t}, requestId);\n};\n//#endregion\nexport { POST };\n"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { H as createLogger, _ as ensureHomeDirs, a0 as ensureOpenCodeConfig, a1 as ensureOpenCodeSystemConfig, g as applyUpdate, p as checkDocker, o as buildManagedServices, n as buildComposeOptions, x as composePull, G as composeUp, aw as parseComposeStderr, a$ as summarizeComposeStderr } from './src-
|
|
2
|
-
import { g as getState } from './state-
|
|
3
|
-
import { d as getRequestId, r as requireAdmin, k as jsonResponse, e as errorResponse } from './helpers-
|
|
1
|
+
import { H as createLogger, _ as ensureHomeDirs, a0 as ensureOpenCodeConfig, a1 as ensureOpenCodeSystemConfig, g as applyUpdate, p as checkDocker, o as buildManagedServices, n as buildComposeOptions, x as composePull, G as composeUp, aw as parseComposeStderr, a$ as summarizeComposeStderr } from './src-CUQ7IJUr.js';
|
|
2
|
+
import { g as getState } from './state-ClUH4b0u.js';
|
|
3
|
+
import { d as getRequestId, r as requireAdmin, k as jsonResponse, e as errorResponse } from './helpers-DInkNOLc.js';
|
|
4
4
|
import { w as withSerialQueue } from './serial-queue-D9FEpYVv.js';
|
|
5
5
|
import './chunk-CLZ62Ad-.js';
|
|
6
6
|
import 'node:module';
|
|
@@ -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-C0-bmtqX.js';
|
|
27
27
|
|
|
28
28
|
//#region src/routes/admin/update/+server.ts
|
|
29
29
|
var logger = createLogger("update");
|
|
@@ -110,4 +110,4 @@ var POST = async (event) => {
|
|
|
110
110
|
};
|
|
111
111
|
|
|
112
112
|
export { POST };
|
|
113
|
-
//# sourceMappingURL=_server.ts-
|
|
113
|
+
//# sourceMappingURL=_server.ts-Bo-_pQan.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_server.ts-
|
|
1
|
+
{"version":3,"file":"_server.ts-Bo-_pQan.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/admin/update/_server.ts.js"],"sourcesContent":["import { B as applyUpdate, Bt as ensureOpenCodeConfig, F as parseComposeStderr, I as summarizeComposeStderr, L as buildComposeOptions, V as buildManagedServices, X as checkDocker, nn as ensureHomeDirs, nt as composePull, st as composeUp, tn as ensureOpenCodeSystemConfig, xn as createLogger } 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\";\nimport { t as withSerialQueue } from \"../../../../chunks/serial-queue.js\";\n//#region src/routes/admin/update/+server.ts\nvar logger = createLogger(\"update\");\nvar POST = async (event) => {\n\tconst requestId = getRequestId(event);\n\tlogger.info(\"update request received\", { requestId });\n\tconst authError = requireAdmin(event, requestId);\n\tif (authError) return authError;\n\treturn withSerialQueue(\"admin:update\", async () => {\n\t\ttry {\n\t\t\tconst state = getState();\n\t\t\tensureHomeDirs();\n\t\t\tensureOpenCodeConfig();\n\t\t\tensureOpenCodeSystemConfig();\n\t\t\tconst result = await applyUpdate(state);\n\t\t\tlogger.info(\"update applied, re-running compose\", {\n\t\t\t\trequestId,\n\t\t\t\tintended: result.restarted\n\t\t\t});\n\t\t\tconst dockerCheck = await checkDocker();\n\t\t\tconst intendedServices = await buildManagedServices(state);\n\t\t\tlet restarted = [];\n\t\t\tlet failed = [];\n\t\t\tlet dockerError;\n\t\t\tif (dockerCheck.ok) {\n\t\t\t\tconst composeOpts = buildComposeOptions(state);\n\t\t\t\tconst pullResult = await composePull(composeOpts);\n\t\t\t\tif (!pullResult.ok) logger.warn(\"update: image pull failed — recreating from local images\", {\n\t\t\t\t\trequestId,\n\t\t\t\t\tstderr: pullResult.stderr?.slice(0, 300)\n\t\t\t\t});\n\t\t\t\tconst composeResult = await composeUp({\n\t\t\t\t\t...composeOpts,\n\t\t\t\t\tservices: intendedServices,\n\t\t\t\t\tforceRecreate: true\n\t\t\t\t});\n\t\t\t\tif (composeResult.ok) restarted = intendedServices;\n\t\t\t\telse {\n\t\t\t\t\tfailed = parseComposeStderr(composeResult.stderr);\n\t\t\t\t\tconst failedNames = new Set(failed.map((f) => f.service));\n\t\t\t\t\trestarted = intendedServices.filter((s) => !failedNames.has(s));\n\t\t\t\t\tif (failed.length === 0) {\n\t\t\t\t\t\tfailed = [{\n\t\t\t\t\t\t\tservice: \"stack\",\n\t\t\t\t\t\t\treason: summarizeComposeStderr(composeResult.stderr) || `docker compose exited with code ${composeResult.code}`\n\t\t\t\t\t\t}];\n\t\t\t\t\t\trestarted = [];\n\t\t\t\t\t}\n\t\t\t\t\tdockerError = summarizeComposeStderr(composeResult.stderr);\n\t\t\t\t\tlogger.warn(\"compose up reported failures\", {\n\t\t\t\t\t\trequestId,\n\t\t\t\t\t\tcode: composeResult.code,\n\t\t\t\t\t\tfailed,\n\t\t\t\t\t\trestarted\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst overallSuccess = dockerCheck.ok && failed.length === 0;\n\t\t\tconst status = failed.length > 0 ? 502 : 200;\n\t\t\tlogger.info(\"update completed\", {\n\t\t\t\trequestId,\n\t\t\t\tdockerAvailable: dockerCheck.ok,\n\t\t\t\toverallSuccess,\n\t\t\t\trestartedCount: restarted.length,\n\t\t\t\tfailedCount: failed.length\n\t\t\t});\n\t\t\treturn jsonResponse(status, {\n\t\t\t\tok: overallSuccess,\n\t\t\t\trestarted,\n\t\t\t\tfailed,\n\t\t\t\tdockerAvailable: dockerCheck.ok,\n\t\t\t\toverallSuccess,\n\t\t\t\t...dockerError ? { error: dockerError } : {}\n\t\t\t}, requestId);\n\t\t} catch (err) {\n\t\t\tconst msg = err instanceof Error ? err.message : String(err);\n\t\t\tlogger.error(\"update failed\", {\n\t\t\t\trequestId,\n\t\t\t\terror: msg\n\t\t\t});\n\t\t\treturn errorResponse(500, \"update_failed\", msg, {}, requestId);\n\t\t}\n\t});\n};\n//#endregion\nexport { POST };\n"],"names":[],"mappings":"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"}
|