@openpalm/ui 0.11.5-rc.3 → 0.11.5-rc.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/.openpalm-ui-version +1 -1
- package/build/client/_app/immutable/assets/4.Cg0DWfRJ.css +1 -0
- package/build/client/_app/immutable/assets/4.Cg0DWfRJ.css.br +0 -0
- package/build/client/_app/immutable/assets/4.Cg0DWfRJ.css.gz +0 -0
- package/build/client/_app/immutable/assets/7.CtszQVIX.css +1 -0
- package/build/client/_app/immutable/assets/7.CtszQVIX.css.br +0 -0
- package/build/client/_app/immutable/assets/7.CtszQVIX.css.gz +0 -0
- package/build/client/_app/immutable/assets/ChatMessage.09JQ9G_F.css +1 -0
- package/build/client/_app/immutable/assets/ChatMessage.09JQ9G_F.css.br +0 -0
- package/build/client/_app/immutable/assets/ChatMessage.09JQ9G_F.css.gz +0 -0
- package/build/client/_app/immutable/chunks/B0yFRekZ.js +3 -0
- package/build/client/_app/immutable/chunks/B0yFRekZ.js.br +0 -0
- package/build/client/_app/immutable/chunks/B0yFRekZ.js.gz +0 -0
- package/build/client/_app/immutable/chunks/B6TDOH9N.js +5 -0
- package/build/client/_app/immutable/chunks/B6TDOH9N.js.br +0 -0
- package/build/client/_app/immutable/chunks/B6TDOH9N.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{BQ0vnNWj.js → BAaXfhM-.js} +1 -1
- package/build/client/_app/immutable/chunks/BAaXfhM-.js.br +0 -0
- package/build/client/_app/immutable/chunks/BAaXfhM-.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BKYOLYrG.js +15 -0
- package/build/client/_app/immutable/chunks/BKYOLYrG.js.br +0 -0
- package/build/client/_app/immutable/chunks/BKYOLYrG.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{irujFCsS.js → B_FOicoS.js} +1 -1
- package/build/client/_app/immutable/chunks/B_FOicoS.js.br +0 -0
- package/build/client/_app/immutable/chunks/B_FOicoS.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Bc91qquS.js +1 -0
- package/build/client/_app/immutable/chunks/Bc91qquS.js.br +0 -0
- package/build/client/_app/immutable/chunks/Bc91qquS.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{CDS1U3lf.js → C0etjiv9.js} +2 -2
- package/build/client/_app/immutable/chunks/C0etjiv9.js.br +0 -0
- package/build/client/_app/immutable/chunks/C0etjiv9.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CDYZd3Dt.js +1 -0
- package/build/client/_app/immutable/chunks/CDYZd3Dt.js.br +1 -0
- package/build/client/_app/immutable/chunks/CDYZd3Dt.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{BTsRblfw.js → CghSfF6U.js} +1 -1
- package/build/client/_app/immutable/chunks/CghSfF6U.js.br +0 -0
- package/build/client/_app/immutable/chunks/CghSfF6U.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DTZmSm97.js +1 -0
- package/build/client/_app/immutable/chunks/DTZmSm97.js.br +2 -0
- package/build/client/_app/immutable/chunks/DTZmSm97.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.CIC2xFmj.js +2 -0
- package/build/client/_app/immutable/entry/app.CIC2xFmj.js.br +0 -0
- package/build/client/_app/immutable/entry/app.CIC2xFmj.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.PCdanKMO.js +1 -0
- package/build/client/_app/immutable/entry/start.PCdanKMO.js.br +0 -0
- package/build/client/_app/immutable/entry/start.PCdanKMO.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.CmaZoW6Y.js +1 -0
- package/build/client/_app/immutable/nodes/0.CmaZoW6Y.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.CmaZoW6Y.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.BhQMYP2N.js +1 -0
- package/build/client/_app/immutable/nodes/1.BhQMYP2N.js.br +3 -0
- package/build/client/_app/immutable/nodes/1.BhQMYP2N.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.C-MzgTuq.js +1 -0
- package/build/client/_app/immutable/nodes/2.C-MzgTuq.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.C-MzgTuq.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.DXmMKZyn.js +1 -0
- package/build/client/_app/immutable/nodes/3.DXmMKZyn.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.DXmMKZyn.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.B9yFE6HR.js +19 -0
- package/build/client/_app/immutable/nodes/4.B9yFE6HR.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.B9yFE6HR.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.BeNqQzJI.js +4 -0
- package/build/client/_app/immutable/nodes/5.BeNqQzJI.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.BeNqQzJI.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.t6Qb5QFT.js +1 -0
- package/build/client/_app/immutable/nodes/6.t6Qb5QFT.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.t6Qb5QFT.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.D4yXtdUW.js +1 -0
- package/build/client/_app/immutable/nodes/7.D4yXtdUW.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.D4yXtdUW.js.gz +0 -0
- package/build/client/_app/immutable/nodes/8.CaUTWkJ5.js +1 -0
- package/build/client/_app/immutable/nodes/8.CaUTWkJ5.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.CaUTWkJ5.js.gz +0 -0
- package/build/client/_app/immutable/nodes/9.B1IAKpfH.js +5 -0
- package/build/client/_app/immutable/nodes/9.B1IAKpfH.js.br +0 -0
- package/build/client/_app/immutable/nodes/9.B1IAKpfH.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/0-C0Wm0uh4.js +9 -0
- package/build/server/chunks/{0-BGsPZcaQ.js.map → 0-C0Wm0uh4.js.map} +1 -1
- package/build/server/chunks/1-BO1FboQo.js +9 -0
- package/build/server/chunks/{1-Daoybjaw.js.map → 1-BO1FboQo.js.map} +1 -1
- package/build/server/chunks/{2-DQWoUtW1.js → 2-wNOz2qR7.js} +2 -2
- package/build/server/chunks/{2-DQWoUtW1.js.map → 2-wNOz2qR7.js.map} +1 -1
- package/build/server/chunks/{3-COIGgysA.js → 3-CMcVVZ5t.js} +2 -2
- package/build/server/chunks/{3-COIGgysA.js.map → 3-CMcVVZ5t.js.map} +1 -1
- package/build/server/chunks/4-Cy42KZEq.js +9 -0
- package/build/server/chunks/4-Cy42KZEq.js.map +1 -0
- package/build/server/chunks/5-wTAacz_u.js +9 -0
- package/build/server/chunks/{5-BfmhtNP9.js.map → 5-wTAacz_u.js.map} +1 -1
- package/build/server/chunks/6-CwuJSZNK.js +9 -0
- package/build/server/chunks/{6-AcylLX8-.js.map → 6-CwuJSZNK.js.map} +1 -1
- package/build/server/chunks/7-BhucvAxb.js +9 -0
- package/build/server/chunks/7-BhucvAxb.js.map +1 -0
- package/build/server/chunks/{8-DMgWQQBm.js → 8-BbmPm5QQ.js} +3 -3
- package/build/server/chunks/{8-DMgWQQBm.js.map → 8-BbmPm5QQ.js.map} +1 -1
- package/build/server/chunks/{9-CGVsBC0_.js → 9-BCmr-315.js} +2 -2
- package/build/server/chunks/{9-CGVsBC0_.js.map → 9-BCmr-315.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-C0eMsRDk.js → ChatMessage-DV_A9qbU.js} +8 -105
- package/build/server/chunks/ChatMessage-DV_A9qbU.js.map +1 -0
- package/build/server/chunks/{Navbar-C9kE6wR-.js → Navbar-Djg-dawo.js} +490 -38
- package/build/server/chunks/Navbar-Djg-dawo.js.map +1 -0
- package/build/server/chunks/{_layout.svelte-DCfzq18z.js → _layout.svelte-DzBCdyUD.js} +2 -2
- package/build/server/chunks/{_layout.svelte-DCfzq18z.js.map → _layout.svelte-DzBCdyUD.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-BA7DptUV.js → _page.svelte-0Fseybo3.js} +3 -3
- package/build/server/chunks/{_page.svelte-BA7DptUV.js.map → _page.svelte-0Fseybo3.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-B3FJ13Ci.js → _page.svelte-C41AgWxR.js} +6 -6
- package/build/server/chunks/{_page.svelte-B3FJ13Ci.js.map → _page.svelte-C41AgWxR.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-Dnt12F6c.js → _page.svelte-CF0NIwNQ.js} +6 -6
- package/build/server/chunks/{_page.svelte-Dnt12F6c.js.map → _page.svelte-CF0NIwNQ.js.map} +1 -1
- package/build/server/chunks/_page.svelte-DHges4Pl.js +326 -0
- package/build/server/chunks/_page.svelte-DHges4Pl.js.map +1 -0
- package/build/server/chunks/{_page.svelte-Dl3WoXNo.js → _page.svelte-GBRvAIuJ.js} +229 -12
- package/build/server/chunks/_page.svelte-GBRvAIuJ.js.map +1 -0
- package/build/server/chunks/{_server.ts-3JO3CKsE.js → _server.ts-1QDB0bka.js} +4 -4
- package/build/server/chunks/{_server.ts-3JO3CKsE.js.map → _server.ts-1QDB0bka.js.map} +1 -1
- package/build/server/chunks/{_server.ts-D8cp-Em3.js → _server.ts-8gRao4pC.js} +4 -4
- package/build/server/chunks/{_server.ts-D8cp-Em3.js.map → _server.ts-8gRao4pC.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BNJn20vV.js → _server.ts-9P7a99w7.js} +4 -4
- package/build/server/chunks/{_server.ts-BNJn20vV.js.map → _server.ts-9P7a99w7.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CciSVwzg.js → _server.ts-AOvZbE_q.js} +5 -5
- package/build/server/chunks/{_server.ts-CciSVwzg.js.map → _server.ts-AOvZbE_q.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BvbnbZsl.js → _server.ts-B35VhBNb.js} +4 -4
- package/build/server/chunks/{_server.ts-BvbnbZsl.js.map → _server.ts-B35VhBNb.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CHQmAGEC.js → _server.ts-B3OHtJvn.js} +5 -5
- package/build/server/chunks/{_server.ts-CHQmAGEC.js.map → _server.ts-B3OHtJvn.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Do5L_4tt.js → _server.ts-BCLgKgV5.js} +4 -4
- package/build/server/chunks/{_server.ts-Do5L_4tt.js.map → _server.ts-BCLgKgV5.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DVRyf5BI.js → _server.ts-BCtRrhpo.js} +4 -4
- package/build/server/chunks/{_server.ts-DVRyf5BI.js.map → _server.ts-BCtRrhpo.js.map} +1 -1
- package/build/server/chunks/{_server.ts-QvBpEIYu.js → _server.ts-BEir1hXE.js} +4 -4
- package/build/server/chunks/{_server.ts-QvBpEIYu.js.map → _server.ts-BEir1hXE.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CeeR1W32.js → _server.ts-BGhuGAqU.js} +4 -4
- package/build/server/chunks/{_server.ts-CeeR1W32.js.map → _server.ts-BGhuGAqU.js.map} +1 -1
- package/build/server/chunks/{_server.ts-D3QPUpDc.js → _server.ts-BMpV32HH.js} +4 -4
- package/build/server/chunks/{_server.ts-D3QPUpDc.js.map → _server.ts-BMpV32HH.js.map} +1 -1
- package/build/server/chunks/{_server.ts-E5YqcwqQ.js → _server.ts-BNfKymFO.js} +4 -4
- package/build/server/chunks/{_server.ts-E5YqcwqQ.js.map → _server.ts-BNfKymFO.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DPC8qYUD.js → _server.ts-BPRY2j_2.js} +4 -4
- package/build/server/chunks/{_server.ts-DPC8qYUD.js.map → _server.ts-BPRY2j_2.js.map} +1 -1
- package/build/server/chunks/{_server.ts-C8zFV8J3.js → _server.ts-BPu3WMA2.js} +4 -4
- package/build/server/chunks/{_server.ts-C8zFV8J3.js.map → _server.ts-BPu3WMA2.js.map} +1 -1
- package/build/server/chunks/{_server.ts-D-Vwef5C.js → _server.ts-BTD23brV.js} +4 -4
- package/build/server/chunks/{_server.ts-D-Vwef5C.js.map → _server.ts-BTD23brV.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Gbkg-oto.js → _server.ts-BUexy9Bs.js} +4 -4
- package/build/server/chunks/{_server.ts-Gbkg-oto.js.map → _server.ts-BUexy9Bs.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CdB1K2M6.js → _server.ts-BWuDPAZI.js} +2 -2
- package/build/server/chunks/{_server.ts-CdB1K2M6.js.map → _server.ts-BWuDPAZI.js.map} +1 -1
- package/build/server/chunks/{_server.ts-MGn-MXr5.js → _server.ts-B_A1pH6i.js} +4 -4
- package/build/server/chunks/{_server.ts-MGn-MXr5.js.map → _server.ts-B_A1pH6i.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Dc9XEMmF.js → _server.ts-BbpEaFjU.js} +4 -4
- package/build/server/chunks/{_server.ts-Dc9XEMmF.js.map → _server.ts-BbpEaFjU.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DHBX6Ary.js → _server.ts-BiiFhOLE.js} +5 -5
- package/build/server/chunks/{_server.ts-DHBX6Ary.js.map → _server.ts-BiiFhOLE.js.map} +1 -1
- package/build/server/chunks/{_server.ts-ykNeG8km.js → _server.ts-Bq99b7U6.js} +4 -4
- package/build/server/chunks/{_server.ts-ykNeG8km.js.map → _server.ts-Bq99b7U6.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CreuvDch.js → _server.ts-BvCT6Mjh.js} +4 -4
- package/build/server/chunks/{_server.ts-CreuvDch.js.map → _server.ts-BvCT6Mjh.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DAW24-9-.js → _server.ts-Bw7wH5nP.js} +4 -4
- package/build/server/chunks/{_server.ts-DAW24-9-.js.map → _server.ts-Bw7wH5nP.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BEjyvkVV.js → _server.ts-C3Y82EbX.js} +4 -4
- package/build/server/chunks/{_server.ts-BEjyvkVV.js.map → _server.ts-C3Y82EbX.js.map} +1 -1
- package/build/server/chunks/{_server.ts-4HorMS2R.js → _server.ts-C58ziWGi.js} +4 -4
- package/build/server/chunks/{_server.ts-4HorMS2R.js.map → _server.ts-C58ziWGi.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DLVGDzlE.js → _server.ts-C8NNR7lm.js} +4 -4
- package/build/server/chunks/{_server.ts-DLVGDzlE.js.map → _server.ts-C8NNR7lm.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BTvZB-WH.js → _server.ts-CHvr_s0m.js} +4 -4
- package/build/server/chunks/{_server.ts-BTvZB-WH.js.map → _server.ts-CHvr_s0m.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CX2sHcZR.js → _server.ts-CPKa2U2F.js} +4 -4
- package/build/server/chunks/{_server.ts-CX2sHcZR.js.map → _server.ts-CPKa2U2F.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CH8uRkxq.js → _server.ts-CQmJIAUn.js} +4 -4
- package/build/server/chunks/{_server.ts-CH8uRkxq.js.map → _server.ts-CQmJIAUn.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Bu_7eQaL.js → _server.ts-CSzLOBbB.js} +5 -5
- package/build/server/chunks/{_server.ts-Bu_7eQaL.js.map → _server.ts-CSzLOBbB.js.map} +1 -1
- package/build/server/chunks/_server.ts-CWWHoyPz.js +48 -0
- package/build/server/chunks/_server.ts-CWWHoyPz.js.map +1 -0
- package/build/server/chunks/{_server.ts-DlwXpopR.js → _server.ts-CakB2g2B.js} +3 -3
- package/build/server/chunks/{_server.ts-DlwXpopR.js.map → _server.ts-CakB2g2B.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BdLKHRnY.js → _server.ts-CbB7X8WD.js} +6 -6
- package/build/server/chunks/{_server.ts-BdLKHRnY.js.map → _server.ts-CbB7X8WD.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BWtTOsFi.js → _server.ts-Ch5VrU5z.js} +4 -4
- package/build/server/chunks/{_server.ts-BWtTOsFi.js.map → _server.ts-Ch5VrU5z.js.map} +1 -1
- package/build/server/chunks/{_server.ts-C7K7bv8w.js → _server.ts-CmcgtPlf.js} +5 -5
- package/build/server/chunks/{_server.ts-C7K7bv8w.js.map → _server.ts-CmcgtPlf.js.map} +1 -1
- package/build/server/chunks/_server.ts-Cu3yIoGR.js +627 -0
- package/build/server/chunks/_server.ts-Cu3yIoGR.js.map +1 -0
- package/build/server/chunks/{_server.ts-CXI7k8hl.js → _server.ts-CuEcjgfs.js} +4 -4
- package/build/server/chunks/{_server.ts-CXI7k8hl.js.map → _server.ts-CuEcjgfs.js.map} +1 -1
- package/build/server/chunks/{_server.ts-pQ9okj_b.js → _server.ts-CyTEh-kp.js} +6 -6
- package/build/server/chunks/{_server.ts-pQ9okj_b.js.map → _server.ts-CyTEh-kp.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BhRtn8Xn.js → _server.ts-CyxjwCIW.js} +4 -4
- package/build/server/chunks/{_server.ts-BhRtn8Xn.js.map → _server.ts-CyxjwCIW.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CXmwf1pu.js → _server.ts-CzHLF3XJ.js} +2 -2
- package/build/server/chunks/{_server.ts-CXmwf1pu.js.map → _server.ts-CzHLF3XJ.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CqH3nv-S.js → _server.ts-CzcX98RF.js} +5 -5
- package/build/server/chunks/{_server.ts-CqH3nv-S.js.map → _server.ts-CzcX98RF.js.map} +1 -1
- package/build/server/chunks/{_server.ts-B31I037d.js → _server.ts-D4hS029K.js} +6 -6
- package/build/server/chunks/{_server.ts-B31I037d.js.map → _server.ts-D4hS029K.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DzIilMO5.js → _server.ts-D5KmG8Iz.js} +2 -2
- package/build/server/chunks/{_server.ts-DzIilMO5.js.map → _server.ts-D5KmG8Iz.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CbOKfJ3v.js → _server.ts-D6bq6_Fp.js} +6 -6
- package/build/server/chunks/{_server.ts-CbOKfJ3v.js.map → _server.ts-D6bq6_Fp.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BUIWPYRF.js → _server.ts-DEL6C5fs.js} +4 -4
- package/build/server/chunks/{_server.ts-BUIWPYRF.js.map → _server.ts-DEL6C5fs.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BGqa6Laa.js → _server.ts-DLMyOePt.js} +4 -4
- package/build/server/chunks/_server.ts-DLMyOePt.js.map +1 -0
- package/build/server/chunks/{_server.ts-CNLz6iJ7.js → _server.ts-DLkvAnm7.js} +4 -4
- package/build/server/chunks/{_server.ts-CNLz6iJ7.js.map → _server.ts-DLkvAnm7.js.map} +1 -1
- package/build/server/chunks/{_server.ts-B1Jl9Grz.js → _server.ts-DTVKXoI5.js} +4 -4
- package/build/server/chunks/{_server.ts-B1Jl9Grz.js.map → _server.ts-DTVKXoI5.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Bq4Oko-2.js → _server.ts-DZ7Ko_32.js} +4 -4
- package/build/server/chunks/{_server.ts-Bq4Oko-2.js.map → _server.ts-DZ7Ko_32.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DL9hlvL8.js → _server.ts-DZY0Qpnk.js} +4 -4
- package/build/server/chunks/{_server.ts-DL9hlvL8.js.map → _server.ts-DZY0Qpnk.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BY7nR9Ev.js → _server.ts-DcW9CTcB.js} +4 -4
- package/build/server/chunks/{_server.ts-BY7nR9Ev.js.map → _server.ts-DcW9CTcB.js.map} +1 -1
- package/build/server/chunks/{_server.ts-1mdOjWEN.js → _server.ts-Df17RBWC.js} +5 -5
- package/build/server/chunks/{_server.ts-1mdOjWEN.js.map → _server.ts-Df17RBWC.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DsTUwnu1.js → _server.ts-Dh9SJATt.js} +4 -4
- package/build/server/chunks/{_server.ts-DsTUwnu1.js.map → _server.ts-Dh9SJATt.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CIEz-ybk.js → _server.ts-DlDgeWtr.js} +4 -4
- package/build/server/chunks/{_server.ts-CIEz-ybk.js.map → _server.ts-DlDgeWtr.js.map} +1 -1
- package/build/server/chunks/{_server.ts-C8BrkC8T.js → _server.ts-Dmtbp8AT.js} +5 -5
- package/build/server/chunks/{_server.ts-C8BrkC8T.js.map → _server.ts-Dmtbp8AT.js.map} +1 -1
- package/build/server/chunks/_server.ts-Dnq1yxVI.js +205 -0
- package/build/server/chunks/_server.ts-Dnq1yxVI.js.map +1 -0
- package/build/server/chunks/{_server.ts-Dd4Mh0JV.js → _server.ts-DolRZ_5Z.js} +4 -4
- package/build/server/chunks/{_server.ts-Dd4Mh0JV.js.map → _server.ts-DolRZ_5Z.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CpJ08_Lw.js → _server.ts-DrccDqL8.js} +4 -4
- package/build/server/chunks/{_server.ts-CpJ08_Lw.js.map → _server.ts-DrccDqL8.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CD-Cddqe.js → _server.ts-Drxntihb.js} +5 -5
- package/build/server/chunks/{_server.ts-CD-Cddqe.js.map → _server.ts-Drxntihb.js.map} +1 -1
- package/build/server/chunks/{_server.ts-B3ntDGZM.js → _server.ts-Du4lTXoC.js} +5 -5
- package/build/server/chunks/{_server.ts-B3ntDGZM.js.map → _server.ts-Du4lTXoC.js.map} +1 -1
- package/build/server/chunks/{_server.ts-B8EZxkK3.js → _server.ts-Dvo786k1.js} +5 -5
- package/build/server/chunks/{_server.ts-B8EZxkK3.js.map → _server.ts-Dvo786k1.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Lzz9ashZ.js → _server.ts-DxE9zbbG.js} +4 -4
- package/build/server/chunks/{_server.ts-Lzz9ashZ.js.map → _server.ts-DxE9zbbG.js.map} +1 -1
- package/build/server/chunks/{_server.ts-C4pf3VKi.js → _server.ts-DzVt4tZV.js} +4 -4
- package/build/server/chunks/{_server.ts-C4pf3VKi.js.map → _server.ts-DzVt4tZV.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DY3ZDXdA.js → _server.ts-GnnvjDGL.js} +4 -4
- package/build/server/chunks/{_server.ts-DY3ZDXdA.js.map → _server.ts-GnnvjDGL.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CVxiERfc.js → _server.ts-H1fnqBYP.js} +4 -4
- package/build/server/chunks/{_server.ts-CVxiERfc.js.map → _server.ts-H1fnqBYP.js.map} +1 -1
- package/build/server/chunks/{_server.ts-yWBMi6sn.js → _server.ts-OVberUvp.js} +6 -6
- package/build/server/chunks/{_server.ts-yWBMi6sn.js.map → _server.ts-OVberUvp.js.map} +1 -1
- package/build/server/chunks/_server.ts-Oh6upxFv.js +86 -0
- package/build/server/chunks/_server.ts-Oh6upxFv.js.map +1 -0
- package/build/server/chunks/{_server.ts-j5xF-dJX.js → _server.ts-TkRG9AFn.js} +4 -4
- package/build/server/chunks/{_server.ts-j5xF-dJX.js.map → _server.ts-TkRG9AFn.js.map} +1 -1
- package/build/server/chunks/{_server.ts-SLlbT28g.js → _server.ts-UwHoFWx1.js} +2 -2
- package/build/server/chunks/{_server.ts-SLlbT28g.js.map → _server.ts-UwHoFWx1.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CtltE_T-.js → _server.ts-XArez5bY.js} +2 -2
- package/build/server/chunks/{_server.ts-CtltE_T-.js.map → _server.ts-XArez5bY.js.map} +1 -1
- package/build/server/chunks/{_server.ts-IzD0bafW.js → _server.ts-ZfDsuW2E.js} +5 -5
- package/build/server/chunks/{_server.ts-IzD0bafW.js.map → _server.ts-ZfDsuW2E.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CzoE8edN.js → _server.ts-chaYrNFx.js} +5 -5
- package/build/server/chunks/{_server.ts-CzoE8edN.js.map → _server.ts-chaYrNFx.js.map} +1 -1
- package/build/server/chunks/{_server.ts-B8YF9aVx.js → _server.ts-lZxRvx5G.js} +4 -4
- package/build/server/chunks/{_server.ts-B8YF9aVx.js.map → _server.ts-lZxRvx5G.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BHmCir74.js → _server.ts-v7meNBSR.js} +4 -4
- package/build/server/chunks/{_server.ts-BHmCir74.js.map → _server.ts-v7meNBSR.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CExwMomX.js → _server.ts-vSoEzokn.js} +4 -4
- package/build/server/chunks/{_server.ts-CExwMomX.js.map → _server.ts-vSoEzokn.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BLUm8wAq.js → _server.ts-x3-1Iy5T.js} +4 -4
- package/build/server/chunks/{_server.ts-BLUm8wAq.js.map → _server.ts-x3-1Iy5T.js.map} +1 -1
- package/build/server/chunks/{_server.ts-C_EnHMEu.js → _server.ts-z9JFYptL.js} +4 -4
- package/build/server/chunks/{_server.ts-C_EnHMEu.js.map → _server.ts-z9JFYptL.js.map} +1 -1
- package/build/server/chunks/{addon-helpers-DBJL8kvq.js → addon-helpers-o7ish5mE.js} +3 -3
- package/build/server/chunks/{addon-helpers-DBJL8kvq.js.map → addon-helpers-o7ish5mE.js.map} +1 -1
- package/build/server/chunks/{akm-hO0p79ZE.js → akm-W9nWVWkP.js} +2 -2
- package/build/server/chunks/{akm-hO0p79ZE.js.map → akm-W9nWVWkP.js.map} +1 -1
- package/build/server/chunks/{client-DchoQXpW.js → client-BxrkCo8A.js} +2 -2
- package/build/server/chunks/{client-DchoQXpW.js.map → client-BxrkCo8A.js.map} +1 -1
- package/build/server/chunks/{config-5vfdWPGq.js → config-DHWE6_Oh.js} +2 -2
- package/build/server/chunks/{config-5vfdWPGq.js.map → config-DHWE6_Oh.js.map} +1 -1
- package/build/server/chunks/{docker-DYeytgDI.js → docker-DTmz3vyS.js} +2 -2
- package/build/server/chunks/{docker-DYeytgDI.js.map → docker-DTmz3vyS.js.map} +1 -1
- package/build/server/chunks/{endpoints-pIoXJCW6.js → endpoints-DeqIjeS-.js} +19 -6
- package/build/server/chunks/endpoints-DeqIjeS-.js.map +1 -0
- package/build/server/chunks/{environment-B0PbsX5P.js → environment-eUM4Nrm3.js} +2 -2
- package/build/server/chunks/{environment-B0PbsX5P.js.map → environment-eUM4Nrm3.js.map} +1 -1
- package/build/server/chunks/{error.svelte-Cmr7gpdL.js → error.svelte-C1YZdXu0.js} +4 -4
- package/build/server/chunks/{error.svelte-Cmr7gpdL.js.map → error.svelte-C1YZdXu0.js.map} +1 -1
- package/build/server/chunks/{helpers-CVirrNSz.js → helpers-BxClonOR.js} +3 -3
- package/build/server/chunks/{helpers-CVirrNSz.js.map → helpers-BxClonOR.js.map} +1 -1
- package/build/server/chunks/{hooks.server-pc-TSpQy.js → hooks.server-BbqU1Xkl.js} +6 -6
- package/build/server/chunks/hooks.server-BbqU1Xkl.js.map +1 -0
- package/build/server/chunks/{http-DGsfa0DV.js → http-B4lcqCl2.js} +2 -2
- package/build/server/chunks/{http-DGsfa0DV.js.map → http-B4lcqCl2.js.map} +1 -1
- package/build/server/chunks/{internal-DriC3vi3.js → internal-BqydNqHi.js} +3 -3
- package/build/server/chunks/{internal-DriC3vi3.js.map → internal-BqydNqHi.js.map} +1 -1
- package/build/server/chunks/{session-cookie-DEuOwtHY.js → session-cookie-BhONF37G.js} +2 -2
- package/build/server/chunks/{session-cookie-DEuOwtHY.js.map → session-cookie-BhONF37G.js.map} +1 -1
- package/build/server/chunks/{setup-deploy-D4bnmfpV.js → setup-deploy-XJpbNV-N.js} +2 -2
- package/build/server/chunks/{setup-deploy-D4bnmfpV.js.map → setup-deploy-XJpbNV-N.js.map} +1 -1
- package/build/server/chunks/{src-CyeWH4Df.js → src-DGGmhx-_.js} +523 -69
- package/build/server/chunks/src-DGGmhx-_.js.map +1 -0
- package/build/server/chunks/{state-BcUnjLg5.js → state-Dd9gBPIF.js} +2 -2
- package/build/server/chunks/{state-BcUnjLg5.js.map → state-Dd9gBPIF.js.map} +1 -1
- package/build/server/chunks/{theme-state.svelte-CeABRes-.js → theme-state.svelte-_CMr5Hu9.js} +96 -24
- package/build/server/chunks/theme-state.svelte-_CMr5Hu9.js.map +1 -0
- package/build/server/index.js +2 -2
- package/build/server/manifest.js +106 -85
- package/build/server/manifest.js.map +1 -1
- package/package.json +3 -2
- package/build/client/_app/immutable/assets/4.BFLRjZM9.css +0 -1
- package/build/client/_app/immutable/assets/4.BFLRjZM9.css.br +0 -0
- package/build/client/_app/immutable/assets/4.BFLRjZM9.css.gz +0 -0
- package/build/client/_app/immutable/assets/7.DKl0e2Fb.css +0 -1
- package/build/client/_app/immutable/assets/7.DKl0e2Fb.css.br +0 -0
- package/build/client/_app/immutable/assets/7.DKl0e2Fb.css.gz +0 -0
- package/build/client/_app/immutable/chunks/0swOyi-5.js +0 -3
- package/build/client/_app/immutable/chunks/0swOyi-5.js.br +0 -0
- package/build/client/_app/immutable/chunks/0swOyi-5.js.gz +0 -0
- package/build/client/_app/immutable/chunks/B4LSIsxy.js +0 -1
- package/build/client/_app/immutable/chunks/B4LSIsxy.js.br +0 -2
- package/build/client/_app/immutable/chunks/B4LSIsxy.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BQ0vnNWj.js.br +0 -1
- package/build/client/_app/immutable/chunks/BQ0vnNWj.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BTsRblfw.js.br +0 -0
- package/build/client/_app/immutable/chunks/BTsRblfw.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Bmfn2m9N.js +0 -1
- package/build/client/_app/immutable/chunks/Bmfn2m9N.js.br +0 -1
- package/build/client/_app/immutable/chunks/Bmfn2m9N.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C-9oV3QK.js +0 -1
- package/build/client/_app/immutable/chunks/C-9oV3QK.js.br +0 -0
- package/build/client/_app/immutable/chunks/C-9oV3QK.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CDS1U3lf.js.br +0 -0
- package/build/client/_app/immutable/chunks/CDS1U3lf.js.gz +0 -0
- package/build/client/_app/immutable/chunks/TM1MyO6b.js +0 -5
- package/build/client/_app/immutable/chunks/TM1MyO6b.js.br +0 -0
- package/build/client/_app/immutable/chunks/TM1MyO6b.js.gz +0 -0
- package/build/client/_app/immutable/chunks/irujFCsS.js.br +0 -0
- package/build/client/_app/immutable/chunks/irujFCsS.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.j4FjlmJV.js +0 -2
- package/build/client/_app/immutable/entry/app.j4FjlmJV.js.br +0 -0
- package/build/client/_app/immutable/entry/app.j4FjlmJV.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.BG0VgQz3.js +0 -1
- package/build/client/_app/immutable/entry/start.BG0VgQz3.js.br +0 -1
- package/build/client/_app/immutable/entry/start.BG0VgQz3.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.C7eQ_ow9.js +0 -1
- package/build/client/_app/immutable/nodes/0.C7eQ_ow9.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.C7eQ_ow9.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.DOderKqv.js +0 -1
- package/build/client/_app/immutable/nodes/1.DOderKqv.js.br +0 -1
- package/build/client/_app/immutable/nodes/1.DOderKqv.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.B-8ehRO1.js +0 -1
- package/build/client/_app/immutable/nodes/2.B-8ehRO1.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.B-8ehRO1.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.B_FXzjZB.js +0 -1
- package/build/client/_app/immutable/nodes/3.B_FXzjZB.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.B_FXzjZB.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.CL9pbPfw.js +0 -19
- package/build/client/_app/immutable/nodes/4.CL9pbPfw.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.CL9pbPfw.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.By0afU0Y.js +0 -4
- package/build/client/_app/immutable/nodes/5.By0afU0Y.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.By0afU0Y.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.BnWmdf6t.js +0 -1
- package/build/client/_app/immutable/nodes/6.BnWmdf6t.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.BnWmdf6t.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.RAc8_3qJ.js +0 -15
- package/build/client/_app/immutable/nodes/7.RAc8_3qJ.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.RAc8_3qJ.js.gz +0 -0
- package/build/client/_app/immutable/nodes/8.Dytsowyk.js +0 -1
- package/build/client/_app/immutable/nodes/8.Dytsowyk.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.Dytsowyk.js.gz +0 -0
- package/build/client/_app/immutable/nodes/9.CFQabEMi.js +0 -5
- package/build/client/_app/immutable/nodes/9.CFQabEMi.js.br +0 -0
- package/build/client/_app/immutable/nodes/9.CFQabEMi.js.gz +0 -0
- package/build/server/chunks/0-BGsPZcaQ.js +0 -9
- package/build/server/chunks/1-Daoybjaw.js +0 -9
- package/build/server/chunks/4-Lm1O6Rmh.js +0 -9
- package/build/server/chunks/4-Lm1O6Rmh.js.map +0 -1
- package/build/server/chunks/5-BfmhtNP9.js +0 -9
- package/build/server/chunks/6-AcylLX8-.js +0 -9
- package/build/server/chunks/7-BT0zxD9E.js +0 -9
- package/build/server/chunks/7-BT0zxD9E.js.map +0 -1
- package/build/server/chunks/Navbar-C9kE6wR-.js.map +0 -1
- package/build/server/chunks/_page.svelte-C0eMsRDk.js.map +0 -1
- package/build/server/chunks/_page.svelte-Dl3WoXNo.js.map +0 -1
- package/build/server/chunks/_server.ts-B79PxL9c.js +0 -91
- package/build/server/chunks/_server.ts-B79PxL9c.js.map +0 -1
- package/build/server/chunks/_server.ts-BGqa6Laa.js.map +0 -1
- package/build/server/chunks/endpoints-pIoXJCW6.js.map +0 -1
- package/build/server/chunks/hooks.server-pc-TSpQy.js.map +0 -1
- package/build/server/chunks/src-CyeWH4Df.js.map +0 -1
- package/build/server/chunks/theme-state.svelte-CeABRes-.js.map +0 -1
|
@@ -0,0 +1,627 @@
|
|
|
1
|
+
import { b as getState } from './endpoints-DeqIjeS-.js';
|
|
2
|
+
import { d as getRequestId, r as requireAdmin } from './helpers-BxClonOR.js';
|
|
3
|
+
import { r as runAkmCommand, s as safeParseJsonObject } from './akm-W9nWVWkP.js';
|
|
4
|
+
import './src-DGGmhx-_.js';
|
|
5
|
+
import './chunk-CLZ62Ad-.js';
|
|
6
|
+
import 'node:module';
|
|
7
|
+
import 'node:fs';
|
|
8
|
+
import 'node:path';
|
|
9
|
+
import 'buffer';
|
|
10
|
+
import 'node:os';
|
|
11
|
+
import 'fs';
|
|
12
|
+
import 'path';
|
|
13
|
+
import 'node:child_process';
|
|
14
|
+
import 'node:url';
|
|
15
|
+
import 'node:crypto';
|
|
16
|
+
import 'events';
|
|
17
|
+
import 'node:events';
|
|
18
|
+
import 'node:stream';
|
|
19
|
+
import 'node:string_decoder';
|
|
20
|
+
import 'assert';
|
|
21
|
+
import 'zlib';
|
|
22
|
+
import 'node:assert';
|
|
23
|
+
import 'node:fs/promises';
|
|
24
|
+
|
|
25
|
+
//#region src/lib/server/akm-health-report.ts
|
|
26
|
+
var AKM_HEALTH_REPORT_WINDOWS = [
|
|
27
|
+
"24h",
|
|
28
|
+
"72h",
|
|
29
|
+
"7d",
|
|
30
|
+
"14d",
|
|
31
|
+
"30d"
|
|
32
|
+
];
|
|
33
|
+
function asRecord(value) {
|
|
34
|
+
return value && typeof value === "object" && !Array.isArray(value) ? value : null;
|
|
35
|
+
}
|
|
36
|
+
function asArray(value) {
|
|
37
|
+
return Array.isArray(value) ? value : [];
|
|
38
|
+
}
|
|
39
|
+
function asNumber(value) {
|
|
40
|
+
return typeof value === "number" && Number.isFinite(value) ? value : 0;
|
|
41
|
+
}
|
|
42
|
+
function asString(value) {
|
|
43
|
+
return typeof value === "string" ? value : "";
|
|
44
|
+
}
|
|
45
|
+
function asBoolean(value) {
|
|
46
|
+
return value === true;
|
|
47
|
+
}
|
|
48
|
+
function clampWindow(value) {
|
|
49
|
+
return AKM_HEALTH_REPORT_WINDOWS.includes(value ?? "") ? value : "72h";
|
|
50
|
+
}
|
|
51
|
+
function escapeHtml(value) {
|
|
52
|
+
return value.replaceAll("&", "&").replaceAll("<", "<").replaceAll(">", ">").replaceAll("\"", """).replaceAll("'", "'");
|
|
53
|
+
}
|
|
54
|
+
function scriptJson(value) {
|
|
55
|
+
return JSON.stringify(value).replaceAll("<", "\\u003c");
|
|
56
|
+
}
|
|
57
|
+
function fmtInt(value) {
|
|
58
|
+
return new Intl.NumberFormat("en-US", { maximumFractionDigits: 0 }).format(value);
|
|
59
|
+
}
|
|
60
|
+
function fmtPercent(value) {
|
|
61
|
+
return `${(value * 100).toFixed(value === 0 || value >= .1 ? 0 : 1)}%`;
|
|
62
|
+
}
|
|
63
|
+
function fmtDuration(ms) {
|
|
64
|
+
if (!Number.isFinite(ms) || ms <= 0) return "0s";
|
|
65
|
+
if (ms < 1e3) return `${Math.round(ms)}ms`;
|
|
66
|
+
const seconds = ms / 1e3;
|
|
67
|
+
if (seconds < 60) return `${seconds.toFixed(seconds >= 10 ? 0 : 1)}s`;
|
|
68
|
+
const minutes = Math.floor(seconds / 60);
|
|
69
|
+
const remSeconds = Math.round(seconds % 60);
|
|
70
|
+
if (minutes < 60) return `${minutes}m ${remSeconds}s`;
|
|
71
|
+
return `${Math.floor(minutes / 60)}h ${minutes % 60}m`;
|
|
72
|
+
}
|
|
73
|
+
function fmtUtc(value) {
|
|
74
|
+
if (!value) return "n/a";
|
|
75
|
+
const d = new Date(value);
|
|
76
|
+
if (Number.isNaN(d.getTime())) return "n/a";
|
|
77
|
+
return d.toLocaleString("en-US", {
|
|
78
|
+
dateStyle: "medium",
|
|
79
|
+
timeStyle: "short",
|
|
80
|
+
timeZone: "UTC"
|
|
81
|
+
}) + " UTC";
|
|
82
|
+
}
|
|
83
|
+
function metricDelta(current, prior) {
|
|
84
|
+
if (prior === current) return "flat vs prior window";
|
|
85
|
+
if (prior === 0) return current > 0 ? "new vs prior window" : "flat vs prior window";
|
|
86
|
+
const pct = (current - prior) / Math.abs(prior) * 100;
|
|
87
|
+
return `${pct > 0 ? "up" : "down"} ${Math.abs(pct).toFixed(Math.abs(pct) >= 10 ? 0 : 1)}% vs prior window`;
|
|
88
|
+
}
|
|
89
|
+
function statusClass(status) {
|
|
90
|
+
if (status === "ok" || status === "pass") return "ok";
|
|
91
|
+
if (status === "warn") return "warn";
|
|
92
|
+
return "fail";
|
|
93
|
+
}
|
|
94
|
+
function buildCards(current, prior, proposalCount) {
|
|
95
|
+
const invoked = asNumber(current.invoked);
|
|
96
|
+
const completed = asNumber(current.completed);
|
|
97
|
+
const completionRate = invoked > 0 ? completed / invoked : 0;
|
|
98
|
+
const failRate = asNumber(asRecord(current.actions)?.error) > 0 && invoked > 0 ? asNumber(asRecord(current.actions)?.error) / invoked : 0;
|
|
99
|
+
const promoted = asNumber(asRecord(current.consolidation)?.promoted);
|
|
100
|
+
const written = asNumber(asRecord(current.memoryInference)?.written);
|
|
101
|
+
const entities = asNumber(asRecord(current.graphExtraction)?.entities);
|
|
102
|
+
const medianMs = asNumber(asRecord(current.wallTime)?.medianMs);
|
|
103
|
+
const priorInvoked = asNumber(prior.invoked);
|
|
104
|
+
const priorCompleted = asNumber(prior.completed);
|
|
105
|
+
const priorCompletionRate = priorInvoked > 0 ? priorCompleted / priorInvoked : 0;
|
|
106
|
+
const priorFailRate = asNumber(asRecord(prior.actions)?.error) > 0 && priorInvoked > 0 ? asNumber(asRecord(prior.actions)?.error) / priorInvoked : 0;
|
|
107
|
+
return [
|
|
108
|
+
{
|
|
109
|
+
label: "Completion rate",
|
|
110
|
+
value: fmtPercent(completionRate),
|
|
111
|
+
sub: metricDelta(completionRate, priorCompletionRate)
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
label: "Fail rate",
|
|
115
|
+
value: fmtPercent(failRate),
|
|
116
|
+
sub: metricDelta(failRate, priorFailRate)
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
label: "Promoted",
|
|
120
|
+
value: fmtInt(promoted),
|
|
121
|
+
sub: metricDelta(promoted, asNumber(asRecord(prior.consolidation)?.promoted))
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
label: "MI written",
|
|
125
|
+
value: fmtInt(written),
|
|
126
|
+
sub: metricDelta(written, asNumber(asRecord(prior.memoryInference)?.written))
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
label: "Graph entities",
|
|
130
|
+
value: fmtInt(entities),
|
|
131
|
+
sub: metricDelta(entities, asNumber(asRecord(prior.graphExtraction)?.entities))
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
label: "Median duration",
|
|
135
|
+
value: fmtDuration(medianMs),
|
|
136
|
+
sub: metricDelta(medianMs, asNumber(asRecord(prior.wallTime)?.medianMs))
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
label: "Runs",
|
|
140
|
+
value: fmtInt(completed),
|
|
141
|
+
sub: metricDelta(completed, priorCompleted)
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
label: "Pending proposals",
|
|
145
|
+
value: fmtInt(proposalCount),
|
|
146
|
+
sub: proposalCount > 0 ? "review queue has pending items" : "no pending proposals"
|
|
147
|
+
}
|
|
148
|
+
].map((card) => `
|
|
149
|
+
<div class="card">
|
|
150
|
+
<div class="card-label">${escapeHtml(card.label)}</div>
|
|
151
|
+
<div class="card-value">${escapeHtml(card.value)}</div>
|
|
152
|
+
<div class="card-sub">${escapeHtml(card.sub)}</div>
|
|
153
|
+
</div>`).join("");
|
|
154
|
+
}
|
|
155
|
+
function buildAdvisories(health) {
|
|
156
|
+
const items = [...asArray(health.advisories), ...asArray(health.hardChecks).filter((item) => {
|
|
157
|
+
const status = asString(asRecord(item)?.status);
|
|
158
|
+
return status === "warn" || status === "fail";
|
|
159
|
+
})].map((item) => asRecord(item)).filter((item) => item !== null);
|
|
160
|
+
if (items.length === 0) return "<div class=\"notice ok\">No active advisories for this window.</div>";
|
|
161
|
+
return items.map((item) => {
|
|
162
|
+
const status = statusClass(asString(item.status));
|
|
163
|
+
const name = asString(item.name) || "advisory";
|
|
164
|
+
const message = asString(item.message) || "No details.";
|
|
165
|
+
return `<div class="notice ${status}"><strong>${escapeHtml(name)}</strong><span>${escapeHtml(message)}</span></div>`;
|
|
166
|
+
}).join("");
|
|
167
|
+
}
|
|
168
|
+
function buildProposalRows(proposals) {
|
|
169
|
+
if (proposals.length === 0) return "<tr><td colspan=\"4\" class=\"empty\">No pending proposals.</td></tr>";
|
|
170
|
+
return proposals.slice(0, 20).map((proposal) => `
|
|
171
|
+
<tr>
|
|
172
|
+
<td>${escapeHtml(proposal.ref || proposal.id || "unknown")}</td>
|
|
173
|
+
<td>${escapeHtml(proposal.source || "unknown")}</td>
|
|
174
|
+
<td>${escapeHtml(fmtUtc(proposal.createdAt))}</td>
|
|
175
|
+
<td>${escapeHtml(proposal.id || "")}</td>
|
|
176
|
+
</tr>`).join("");
|
|
177
|
+
}
|
|
178
|
+
function buildRunRows(runs) {
|
|
179
|
+
if (runs.length === 0) return "<tr><td colspan=\"6\" class=\"empty\">No improve runs in this window.</td></tr>";
|
|
180
|
+
return runs.slice(-10).reverse().map((run, index) => {
|
|
181
|
+
const consolidation = asRecord(run.consolidation);
|
|
182
|
+
const memoryInference = asRecord(run.memoryInference);
|
|
183
|
+
const graphExtraction = asRecord(run.graphExtraction);
|
|
184
|
+
const startedAt = asString(run.startedAt);
|
|
185
|
+
const durationMs = asNumber(run.wallTimeMs) || asNumber(run.durationMs);
|
|
186
|
+
return `
|
|
187
|
+
<tr>
|
|
188
|
+
<td>${escapeHtml(asString(run.runId) || asString(run.id) || `run-${index + 1}`)}</td>
|
|
189
|
+
<td>${escapeHtml(fmtUtc(startedAt))}</td>
|
|
190
|
+
<td>${escapeHtml(fmtDuration(durationMs))}</td>
|
|
191
|
+
<td>${escapeHtml(String(asBoolean(run.ok) ? "ok" : "fail"))}</td>
|
|
192
|
+
<td>${escapeHtml(fmtInt(asNumber(consolidation?.promoted)))}</td>
|
|
193
|
+
<td>${escapeHtml(fmtInt(asNumber(memoryInference?.written)))}</td>
|
|
194
|
+
<td>${escapeHtml(fmtInt(asNumber(graphExtraction?.entities)))}</td>
|
|
195
|
+
</tr>`;
|
|
196
|
+
}).join("");
|
|
197
|
+
}
|
|
198
|
+
function buildSummaryRows(current) {
|
|
199
|
+
return [
|
|
200
|
+
["Invoked", fmtInt(asNumber(current.invoked))],
|
|
201
|
+
["Completed", fmtInt(asNumber(current.completed))],
|
|
202
|
+
["Skipped", fmtInt(asNumber(current.skipped))],
|
|
203
|
+
["Promoted", fmtInt(asNumber(asRecord(current.consolidation)?.promoted))],
|
|
204
|
+
["Merged", fmtInt(asNumber(asRecord(current.consolidation)?.merged))],
|
|
205
|
+
["Deleted", fmtInt(asNumber(asRecord(current.consolidation)?.deleted))],
|
|
206
|
+
["Judged no action", fmtInt(asNumber(asRecord(current.consolidation)?.judgedNoAction))],
|
|
207
|
+
["Inference written", fmtInt(asNumber(asRecord(current.memoryInference)?.written))],
|
|
208
|
+
["Graph entities", fmtInt(asNumber(asRecord(current.graphExtraction)?.entities))],
|
|
209
|
+
["Median wall time", fmtDuration(asNumber(asRecord(current.wallTime)?.medianMs))]
|
|
210
|
+
].map(([label, value]) => `
|
|
211
|
+
<tr>
|
|
212
|
+
<th>${escapeHtml(label)}</th>
|
|
213
|
+
<td>${escapeHtml(value)}</td>
|
|
214
|
+
</tr>`).join("");
|
|
215
|
+
}
|
|
216
|
+
function renderHtml(window, health, proposals) {
|
|
217
|
+
const improve = asRecord(health.improve) ?? {};
|
|
218
|
+
const windows = asArray(health.windows).map((item) => asRecord(item)).filter((item) => item !== null);
|
|
219
|
+
const currentWindow = asRecord(windows.find((item) => asString(item.name) === "current")?.improve) ?? improve;
|
|
220
|
+
const priorWindow = asRecord(windows.find((item) => asString(item.name) === "prior")?.improve) ?? {};
|
|
221
|
+
const runs = asArray(health.runs).map((item) => asRecord(item)).filter((item) => item !== null);
|
|
222
|
+
const status = asString(health.status) || "unknown";
|
|
223
|
+
const since = asString(health.since);
|
|
224
|
+
const until = asString((windows.find((item) => asString(item.name) === "current") ?? {}).until);
|
|
225
|
+
const semanticStatus = asString(asRecord(asArray(health.advisories).map((item) => asRecord(item)).find((item) => asString(item?.name) === "semantic-search-runtime")?.evidence)?.status) || "unknown";
|
|
226
|
+
const payload = runs.map((run, index) => {
|
|
227
|
+
const consolidation = asRecord(run.consolidation);
|
|
228
|
+
const memoryInference = asRecord(run.memoryInference);
|
|
229
|
+
const graphExtraction = asRecord(run.graphExtraction);
|
|
230
|
+
return {
|
|
231
|
+
label: asString(run.startedAt) ? fmtUtc(asString(run.startedAt)).replace(" UTC", "") : `Run ${index + 1}`,
|
|
232
|
+
wallTimeMs: asNumber(run.wallTimeMs) || asNumber(run.durationMs),
|
|
233
|
+
promoted: asNumber(consolidation?.promoted),
|
|
234
|
+
merged: asNumber(consolidation?.merged),
|
|
235
|
+
deleted: asNumber(consolidation?.deleted),
|
|
236
|
+
judgedNoAction: asNumber(consolidation?.judgedNoAction),
|
|
237
|
+
written: asNumber(memoryInference?.written),
|
|
238
|
+
entities: asNumber(graphExtraction?.entities),
|
|
239
|
+
consolidationMs: asNumber(consolidation?.durationMs),
|
|
240
|
+
memoryInferenceMs: asNumber(memoryInference?.durationMs),
|
|
241
|
+
graphExtractionMs: asNumber(graphExtraction?.durationMs),
|
|
242
|
+
ok: asBoolean(run.ok)
|
|
243
|
+
};
|
|
244
|
+
});
|
|
245
|
+
return `<!doctype html>
|
|
246
|
+
<html lang="en">
|
|
247
|
+
<head>
|
|
248
|
+
<meta charset="utf-8">
|
|
249
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
250
|
+
<title>AKM Health Report (${escapeHtml(window)})</title>
|
|
251
|
+
<style>
|
|
252
|
+
:root {
|
|
253
|
+
color-scheme: dark;
|
|
254
|
+
--bg: #07111f;
|
|
255
|
+
--panel: #101b2d;
|
|
256
|
+
--panel-soft: #15233a;
|
|
257
|
+
--border: rgba(148, 163, 184, 0.18);
|
|
258
|
+
--text: #e5eefc;
|
|
259
|
+
--muted: #93a4bf;
|
|
260
|
+
--ok: #22c55e;
|
|
261
|
+
--warn: #f59e0b;
|
|
262
|
+
--fail: #ef4444;
|
|
263
|
+
--accent: #60a5fa;
|
|
264
|
+
}
|
|
265
|
+
* { box-sizing: border-box; }
|
|
266
|
+
body {
|
|
267
|
+
margin: 0;
|
|
268
|
+
font-family: Inter, ui-sans-serif, system-ui, sans-serif;
|
|
269
|
+
background: radial-gradient(circle at top, #14233d 0%, var(--bg) 55%);
|
|
270
|
+
color: var(--text);
|
|
271
|
+
padding: 24px;
|
|
272
|
+
}
|
|
273
|
+
.shell {
|
|
274
|
+
max-width: 1400px;
|
|
275
|
+
margin: 0 auto;
|
|
276
|
+
display: grid;
|
|
277
|
+
gap: 20px;
|
|
278
|
+
}
|
|
279
|
+
.hero, .panel {
|
|
280
|
+
background: rgba(16, 27, 45, 0.9);
|
|
281
|
+
border: 1px solid var(--border);
|
|
282
|
+
border-radius: 18px;
|
|
283
|
+
box-shadow: 0 12px 36px rgba(0, 0, 0, 0.28);
|
|
284
|
+
}
|
|
285
|
+
.hero {
|
|
286
|
+
padding: 24px;
|
|
287
|
+
display: grid;
|
|
288
|
+
gap: 16px;
|
|
289
|
+
}
|
|
290
|
+
.hero-top {
|
|
291
|
+
display: flex;
|
|
292
|
+
justify-content: space-between;
|
|
293
|
+
gap: 16px;
|
|
294
|
+
align-items: flex-start;
|
|
295
|
+
flex-wrap: wrap;
|
|
296
|
+
}
|
|
297
|
+
h1, h2, h3, p { margin: 0; }
|
|
298
|
+
.eyebrow { color: var(--muted); font-size: 12px; text-transform: uppercase; letter-spacing: 0.08em; }
|
|
299
|
+
.title { font-size: clamp(28px, 4vw, 40px); font-weight: 700; }
|
|
300
|
+
.subtitle { color: var(--muted); max-width: 80ch; }
|
|
301
|
+
.status {
|
|
302
|
+
border-radius: 999px;
|
|
303
|
+
padding: 8px 12px;
|
|
304
|
+
font-size: 12px;
|
|
305
|
+
font-weight: 700;
|
|
306
|
+
text-transform: uppercase;
|
|
307
|
+
letter-spacing: 0.08em;
|
|
308
|
+
border: 1px solid transparent;
|
|
309
|
+
}
|
|
310
|
+
.status.ok { color: #bbf7d0; background: rgba(34, 197, 94, 0.14); border-color: rgba(34, 197, 94, 0.32); }
|
|
311
|
+
.status.warn { color: #fde68a; background: rgba(245, 158, 11, 0.14); border-color: rgba(245, 158, 11, 0.32); }
|
|
312
|
+
.status.fail { color: #fecaca; background: rgba(239, 68, 68, 0.14); border-color: rgba(239, 68, 68, 0.32); }
|
|
313
|
+
.meta {
|
|
314
|
+
display: grid;
|
|
315
|
+
grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
|
|
316
|
+
gap: 12px;
|
|
317
|
+
}
|
|
318
|
+
.meta-item, .card {
|
|
319
|
+
background: var(--panel-soft);
|
|
320
|
+
border: 1px solid var(--border);
|
|
321
|
+
border-radius: 14px;
|
|
322
|
+
padding: 14px;
|
|
323
|
+
}
|
|
324
|
+
.meta-label, .card-label { color: var(--muted); font-size: 12px; text-transform: uppercase; letter-spacing: 0.06em; }
|
|
325
|
+
.meta-value, .card-value { margin-top: 8px; font-size: 22px; font-weight: 700; }
|
|
326
|
+
.card-sub { margin-top: 8px; color: var(--muted); font-size: 13px; }
|
|
327
|
+
.cards {
|
|
328
|
+
display: grid;
|
|
329
|
+
grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
|
|
330
|
+
gap: 12px;
|
|
331
|
+
}
|
|
332
|
+
.grid-two {
|
|
333
|
+
display: grid;
|
|
334
|
+
grid-template-columns: minmax(0, 2fr) minmax(320px, 1fr);
|
|
335
|
+
gap: 20px;
|
|
336
|
+
}
|
|
337
|
+
.panel { padding: 18px; }
|
|
338
|
+
.panel-title { font-size: 18px; font-weight: 700; margin-bottom: 14px; }
|
|
339
|
+
.chart-grid {
|
|
340
|
+
display: grid;
|
|
341
|
+
grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
|
|
342
|
+
gap: 16px;
|
|
343
|
+
}
|
|
344
|
+
.chart {
|
|
345
|
+
height: 320px;
|
|
346
|
+
background: linear-gradient(180deg, rgba(255,255,255,0.01), rgba(255,255,255,0));
|
|
347
|
+
border: 1px solid var(--border);
|
|
348
|
+
border-radius: 14px;
|
|
349
|
+
}
|
|
350
|
+
.notice-list {
|
|
351
|
+
display: grid;
|
|
352
|
+
gap: 10px;
|
|
353
|
+
}
|
|
354
|
+
.notice {
|
|
355
|
+
display: grid;
|
|
356
|
+
gap: 6px;
|
|
357
|
+
border-radius: 14px;
|
|
358
|
+
padding: 14px;
|
|
359
|
+
border: 1px solid var(--border);
|
|
360
|
+
background: var(--panel-soft);
|
|
361
|
+
}
|
|
362
|
+
.notice.ok { border-color: rgba(34, 197, 94, 0.32); }
|
|
363
|
+
.notice.warn { border-color: rgba(245, 158, 11, 0.32); }
|
|
364
|
+
.notice.fail { border-color: rgba(239, 68, 68, 0.32); }
|
|
365
|
+
.summary-table, .data-table {
|
|
366
|
+
width: 100%;
|
|
367
|
+
border-collapse: collapse;
|
|
368
|
+
}
|
|
369
|
+
.summary-table th, .summary-table td, .data-table th, .data-table td {
|
|
370
|
+
padding: 10px 12px;
|
|
371
|
+
border-bottom: 1px solid var(--border);
|
|
372
|
+
text-align: left;
|
|
373
|
+
vertical-align: top;
|
|
374
|
+
}
|
|
375
|
+
.summary-table th, .data-table th { color: var(--muted); font-weight: 600; }
|
|
376
|
+
.empty { color: var(--muted); text-align: center; }
|
|
377
|
+
.footer-note { color: var(--muted); font-size: 13px; }
|
|
378
|
+
@media (max-width: 900px) {
|
|
379
|
+
body { padding: 12px; }
|
|
380
|
+
.grid-two { grid-template-columns: 1fr; }
|
|
381
|
+
}
|
|
382
|
+
</style>
|
|
383
|
+
</head>
|
|
384
|
+
<body>
|
|
385
|
+
<div class="shell">
|
|
386
|
+
<section class="hero">
|
|
387
|
+
<div class="hero-top">
|
|
388
|
+
<div>
|
|
389
|
+
<div class="eyebrow">AKM Health Report</div>
|
|
390
|
+
<h1 class="title">Knowledge Health for ${escapeHtml(window)}</h1>
|
|
391
|
+
<p class="subtitle">Generated from live <code>akm health</code> data in the current stack stash. This mirrors the existing AKM report shape with KPI cards, ECharts trends, advisories, and queue visibility.</p>
|
|
392
|
+
</div>
|
|
393
|
+
<div class="status ${escapeHtml(statusClass(status))}">${escapeHtml(status)}</div>
|
|
394
|
+
</div>
|
|
395
|
+
<div class="meta">
|
|
396
|
+
<div class="meta-item">
|
|
397
|
+
<div class="meta-label">Window</div>
|
|
398
|
+
<div class="meta-value">${escapeHtml(window)}</div>
|
|
399
|
+
</div>
|
|
400
|
+
<div class="meta-item">
|
|
401
|
+
<div class="meta-label">Since</div>
|
|
402
|
+
<div class="meta-value">${escapeHtml(fmtUtc(since))}</div>
|
|
403
|
+
</div>
|
|
404
|
+
<div class="meta-item">
|
|
405
|
+
<div class="meta-label">Until</div>
|
|
406
|
+
<div class="meta-value">${escapeHtml(fmtUtc(until))}</div>
|
|
407
|
+
</div>
|
|
408
|
+
<div class="meta-item">
|
|
409
|
+
<div class="meta-label">Semantic search</div>
|
|
410
|
+
<div class="meta-value">${escapeHtml(semanticStatus)}</div>
|
|
411
|
+
</div>
|
|
412
|
+
</div>
|
|
413
|
+
<div class="cards">${buildCards(currentWindow, priorWindow, proposals.length)}</div>
|
|
414
|
+
</section>
|
|
415
|
+
|
|
416
|
+
<section class="panel">
|
|
417
|
+
<h2 class="panel-title">Run Trends</h2>
|
|
418
|
+
<div class="chart-grid">
|
|
419
|
+
<div id="chartWallTime" class="chart"></div>
|
|
420
|
+
<div id="chartPhases" class="chart"></div>
|
|
421
|
+
<div id="chartOutput" class="chart"></div>
|
|
422
|
+
<div id="chartKnowledge" class="chart"></div>
|
|
423
|
+
</div>
|
|
424
|
+
</section>
|
|
425
|
+
|
|
426
|
+
<section class="grid-two">
|
|
427
|
+
<div class="panel">
|
|
428
|
+
<h2 class="panel-title">Summary</h2>
|
|
429
|
+
<table class="summary-table">
|
|
430
|
+
<tbody>${buildSummaryRows(currentWindow)}</tbody>
|
|
431
|
+
</table>
|
|
432
|
+
</div>
|
|
433
|
+
<div class="panel">
|
|
434
|
+
<h2 class="panel-title">Advisories</h2>
|
|
435
|
+
<div class="notice-list">${buildAdvisories(health)}</div>
|
|
436
|
+
</div>
|
|
437
|
+
</section>
|
|
438
|
+
|
|
439
|
+
<section class="grid-two">
|
|
440
|
+
<div class="panel">
|
|
441
|
+
<h2 class="panel-title">Pending Proposals (${escapeHtml(fmtInt(proposals.length))})</h2>
|
|
442
|
+
<table class="data-table">
|
|
443
|
+
<thead>
|
|
444
|
+
<tr><th>Ref</th><th>Source</th><th>Created</th><th>ID</th></tr>
|
|
445
|
+
</thead>
|
|
446
|
+
<tbody>${buildProposalRows(proposals)}</tbody>
|
|
447
|
+
</table>
|
|
448
|
+
</div>
|
|
449
|
+
<div class="panel">
|
|
450
|
+
<h2 class="panel-title">Recent Runs</h2>
|
|
451
|
+
<table class="data-table">
|
|
452
|
+
<thead>
|
|
453
|
+
<tr><th>Run</th><th>Started</th><th>Duration</th><th>Status</th><th>Promoted</th><th>MI</th><th>Entities</th></tr>
|
|
454
|
+
</thead>
|
|
455
|
+
<tbody>${buildRunRows(runs)}</tbody>
|
|
456
|
+
</table>
|
|
457
|
+
</div>
|
|
458
|
+
</section>
|
|
459
|
+
|
|
460
|
+
<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>
|
|
461
|
+
</div>
|
|
462
|
+
|
|
463
|
+
<script>window.REPORT_DATA = ${scriptJson(payload)};<\/script>
|
|
464
|
+
<script src="https://cdn.jsdelivr.net/npm/echarts@5.5.1/dist/echarts.min.js"><\/script>
|
|
465
|
+
<script>
|
|
466
|
+
const runs = Array.isArray(window.REPORT_DATA) ? window.REPORT_DATA : [];
|
|
467
|
+
const textColor = '#dbe7ff';
|
|
468
|
+
const mutedColor = '#93a4bf';
|
|
469
|
+
const axisStyle = { axisLabel: { color: mutedColor }, axisLine: { lineStyle: { color: '#334155' } }, splitLine: { lineStyle: { color: 'rgba(148,163,184,0.12)' } } };
|
|
470
|
+
function baseChart(id) {
|
|
471
|
+
const el = document.getElementById(id);
|
|
472
|
+
if (!el || !window.echarts) return null;
|
|
473
|
+
return window.echarts.init(el, null, { renderer: 'canvas' });
|
|
474
|
+
}
|
|
475
|
+
function setEmpty(elId, label) {
|
|
476
|
+
const el = document.getElementById(elId);
|
|
477
|
+
if (!el) return;
|
|
478
|
+
el.innerHTML = '<div style="height:100%;display:grid;place-items:center;color:' + mutedColor + ';font-size:14px;">' + label + '</div>';
|
|
479
|
+
}
|
|
480
|
+
function labels() { return runs.map((run) => run.label); }
|
|
481
|
+
if (!window.echarts) {
|
|
482
|
+
['chartWallTime', 'chartPhases', 'chartOutput', 'chartKnowledge'].forEach((id) => setEmpty(id, 'ECharts failed to load.'));
|
|
483
|
+
} else if (runs.length === 0) {
|
|
484
|
+
['chartWallTime', 'chartPhases', 'chartOutput', 'chartKnowledge'].forEach((id) => setEmpty(id, 'No runs in this window.'));
|
|
485
|
+
} else {
|
|
486
|
+
const common = { textStyle: { color: textColor }, animation: false, grid: { left: 48, right: 18, top: 40, bottom: 36 }, tooltip: { trigger: 'axis' } };
|
|
487
|
+
const wallTime = baseChart('chartWallTime');
|
|
488
|
+
wallTime && wallTime.setOption({
|
|
489
|
+
...common,
|
|
490
|
+
title: { text: 'Wall Time Per Run', textStyle: { color: textColor, fontSize: 14 } },
|
|
491
|
+
xAxis: { type: 'category', data: labels(), ...axisStyle },
|
|
492
|
+
yAxis: { type: 'value', axisLabel: { color: mutedColor, formatter: (value) => Math.round(value / 1000) + 's' }, splitLine: axisStyle.splitLine },
|
|
493
|
+
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)' } }]
|
|
494
|
+
});
|
|
495
|
+
|
|
496
|
+
const phases = baseChart('chartPhases');
|
|
497
|
+
phases && phases.setOption({
|
|
498
|
+
...common,
|
|
499
|
+
title: { text: 'Phase Breakdown', textStyle: { color: textColor, fontSize: 14 } },
|
|
500
|
+
legend: { textStyle: { color: mutedColor } },
|
|
501
|
+
xAxis: { type: 'category', data: labels(), ...axisStyle },
|
|
502
|
+
yAxis: { type: 'value', axisLabel: { color: mutedColor, formatter: (value) => Math.round(value / 1000) + 's' }, splitLine: axisStyle.splitLine },
|
|
503
|
+
series: [
|
|
504
|
+
{ name: 'Consolidation', type: 'bar', stack: 'phases', data: runs.map((run) => run.consolidationMs), itemStyle: { color: '#60a5fa' } },
|
|
505
|
+
{ name: 'Memory Inference', type: 'bar', stack: 'phases', data: runs.map((run) => run.memoryInferenceMs), itemStyle: { color: '#a78bfa' } },
|
|
506
|
+
{ name: 'Graph Extraction', type: 'bar', stack: 'phases', data: runs.map((run) => run.graphExtractionMs), itemStyle: { color: '#34d399' } }
|
|
507
|
+
]
|
|
508
|
+
});
|
|
509
|
+
|
|
510
|
+
const output = baseChart('chartOutput');
|
|
511
|
+
output && output.setOption({
|
|
512
|
+
...common,
|
|
513
|
+
title: { text: 'Consolidation Output', textStyle: { color: textColor, fontSize: 14 } },
|
|
514
|
+
legend: { textStyle: { color: mutedColor } },
|
|
515
|
+
xAxis: { type: 'category', data: labels(), ...axisStyle },
|
|
516
|
+
yAxis: { type: 'value', axisLabel: { color: mutedColor }, splitLine: axisStyle.splitLine },
|
|
517
|
+
series: [
|
|
518
|
+
{ name: 'Promoted', type: 'bar', data: runs.map((run) => run.promoted), itemStyle: { color: '#22c55e' } },
|
|
519
|
+
{ name: 'Merged', type: 'bar', data: runs.map((run) => run.merged), itemStyle: { color: '#f59e0b' } },
|
|
520
|
+
{ name: 'Deleted', type: 'bar', data: runs.map((run) => run.deleted), itemStyle: { color: '#ef4444' } },
|
|
521
|
+
{ name: 'No action', type: 'bar', data: runs.map((run) => run.judgedNoAction), itemStyle: { color: '#94a3b8' } }
|
|
522
|
+
]
|
|
523
|
+
});
|
|
524
|
+
|
|
525
|
+
const knowledge = baseChart('chartKnowledge');
|
|
526
|
+
knowledge && knowledge.setOption({
|
|
527
|
+
...common,
|
|
528
|
+
title: { text: 'Knowledge Growth Signals', textStyle: { color: textColor, fontSize: 14 } },
|
|
529
|
+
legend: { textStyle: { color: mutedColor } },
|
|
530
|
+
xAxis: { type: 'category', data: labels(), ...axisStyle },
|
|
531
|
+
yAxis: { type: 'value', axisLabel: { color: mutedColor }, splitLine: axisStyle.splitLine },
|
|
532
|
+
series: [
|
|
533
|
+
{ name: 'MI written', type: 'line', smooth: true, data: runs.map((run) => run.written), itemStyle: { color: '#a78bfa' }, lineStyle: { color: '#a78bfa' } },
|
|
534
|
+
{ name: 'Entities', type: 'line', smooth: true, data: runs.map((run) => run.entities), itemStyle: { color: '#34d399' }, lineStyle: { color: '#34d399' } }
|
|
535
|
+
]
|
|
536
|
+
});
|
|
537
|
+
|
|
538
|
+
window.addEventListener('resize', () => {
|
|
539
|
+
wallTime && wallTime.resize();
|
|
540
|
+
phases && phases.resize();
|
|
541
|
+
output && output.resize();
|
|
542
|
+
knowledge && knowledge.resize();
|
|
543
|
+
});
|
|
544
|
+
}
|
|
545
|
+
<\/script>
|
|
546
|
+
</body>
|
|
547
|
+
</html>`;
|
|
548
|
+
}
|
|
549
|
+
async function buildAkmHealthReport(state, requestedWindow) {
|
|
550
|
+
const window = clampWindow(requestedWindow);
|
|
551
|
+
const [healthResult, proposalsResult] = await Promise.all([runAkmCommand(state, [
|
|
552
|
+
"health",
|
|
553
|
+
`--since=${window}`,
|
|
554
|
+
"--group-by",
|
|
555
|
+
"run",
|
|
556
|
+
`--window-compare=${window}`,
|
|
557
|
+
"--format",
|
|
558
|
+
"json"
|
|
559
|
+
], 2e4), runAkmCommand(state, [
|
|
560
|
+
"proposal",
|
|
561
|
+
"list",
|
|
562
|
+
"--format",
|
|
563
|
+
"json"
|
|
564
|
+
], 12e3)]);
|
|
565
|
+
const health = safeParseJsonObject(healthResult.stdout);
|
|
566
|
+
const proposalsPayload = safeParseJsonObject(proposalsResult.stdout);
|
|
567
|
+
if (!health) {
|
|
568
|
+
const detail = [healthResult.stderr.trim(), healthResult.stdout.trim()].filter(Boolean).join("\n\n");
|
|
569
|
+
return {
|
|
570
|
+
window,
|
|
571
|
+
html: `<!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>`
|
|
572
|
+
};
|
|
573
|
+
}
|
|
574
|
+
return {
|
|
575
|
+
html: renderHtml(window, health, asArray(proposalsPayload?.proposals).map((item) => asRecord(item)).filter((item) => item !== null).map((item) => ({
|
|
576
|
+
id: asString(item.id),
|
|
577
|
+
ref: asString(item.ref),
|
|
578
|
+
source: asString(item.source),
|
|
579
|
+
createdAt: asString(item.createdAt)
|
|
580
|
+
}))),
|
|
581
|
+
window
|
|
582
|
+
};
|
|
583
|
+
}
|
|
584
|
+
//#endregion
|
|
585
|
+
//#region src/routes/admin/akm/health-report/+server.ts
|
|
586
|
+
var REPORT_CSP = [
|
|
587
|
+
"default-src 'none'",
|
|
588
|
+
"script-src 'self' 'unsafe-inline' https://cdn.jsdelivr.net",
|
|
589
|
+
"style-src 'unsafe-inline'",
|
|
590
|
+
"img-src 'self' data:",
|
|
591
|
+
"font-src 'self' data:",
|
|
592
|
+
"connect-src 'none'",
|
|
593
|
+
"object-src 'none'",
|
|
594
|
+
"base-uri 'none'",
|
|
595
|
+
"form-action 'none'",
|
|
596
|
+
"frame-ancestors 'self'"
|
|
597
|
+
].join("; ");
|
|
598
|
+
var GET = async (event) => {
|
|
599
|
+
const requestId = getRequestId(event);
|
|
600
|
+
const denied = requireAdmin(event, requestId);
|
|
601
|
+
if (denied) return denied;
|
|
602
|
+
try {
|
|
603
|
+
const { html } = await buildAkmHealthReport(getState(), event.url.searchParams.get("since"));
|
|
604
|
+
return new Response(html, {
|
|
605
|
+
status: 200,
|
|
606
|
+
headers: {
|
|
607
|
+
"content-type": "text/html; charset=utf-8",
|
|
608
|
+
"cache-control": "no-store",
|
|
609
|
+
"content-security-policy": REPORT_CSP,
|
|
610
|
+
"x-request-id": requestId
|
|
611
|
+
}
|
|
612
|
+
});
|
|
613
|
+
} catch (error) {
|
|
614
|
+
const message = error instanceof Error ? error.message : "Failed to build AKM health report.";
|
|
615
|
+
return new Response(message, {
|
|
616
|
+
status: 500,
|
|
617
|
+
headers: {
|
|
618
|
+
"content-type": "text/plain; charset=utf-8",
|
|
619
|
+
"cache-control": "no-store",
|
|
620
|
+
"x-request-id": requestId
|
|
621
|
+
}
|
|
622
|
+
});
|
|
623
|
+
}
|
|
624
|
+
};
|
|
625
|
+
|
|
626
|
+
export { GET };
|
|
627
|
+
//# sourceMappingURL=_server.ts-Cu3yIoGR.js.map
|