@openpalm/ui 0.11.5-rc.3 → 0.11.5-rc.7
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.BzioASK3.css +1 -0
- package/build/client/_app/immutable/assets/7.BzioASK3.css.br +0 -0
- package/build/client/_app/immutable/assets/7.BzioASK3.css.gz +0 -0
- package/build/client/_app/immutable/assets/ChatMessage.nPUEFb-s.css +1 -0
- package/build/client/_app/immutable/assets/ChatMessage.nPUEFb-s.css.br +0 -0
- package/build/client/_app/immutable/assets/ChatMessage.nPUEFb-s.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/{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/BTrxgLOM.js +1 -0
- package/build/client/_app/immutable/chunks/BTrxgLOM.js.br +2 -0
- package/build/client/_app/immutable/chunks/BTrxgLOM.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/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/CVWppHrm.js +16 -0
- package/build/client/_app/immutable/chunks/CVWppHrm.js.br +0 -0
- package/build/client/_app/immutable/chunks/CVWppHrm.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DYcHS_qY.js +5 -0
- package/build/client/_app/immutable/chunks/DYcHS_qY.js.br +0 -0
- package/build/client/_app/immutable/chunks/DYcHS_qY.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{CDS1U3lf.js → HsxQhp5A.js} +2 -2
- package/build/client/_app/immutable/chunks/HsxQhp5A.js.br +0 -0
- package/build/client/_app/immutable/chunks/HsxQhp5A.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{BTsRblfw.js → hgikw-Qd.js} +1 -1
- package/build/client/_app/immutable/chunks/hgikw-Qd.js.br +0 -0
- package/build/client/_app/immutable/chunks/hgikw-Qd.js.gz +0 -0
- package/build/client/_app/immutable/chunks/xtI7_jDL.js +1 -0
- package/build/client/_app/immutable/chunks/xtI7_jDL.js.br +0 -0
- package/build/client/_app/immutable/chunks/xtI7_jDL.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.DtY5C9pR.js +2 -0
- package/build/client/_app/immutable/entry/app.DtY5C9pR.js.br +0 -0
- package/build/client/_app/immutable/entry/app.DtY5C9pR.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.CmS1dlrE.js +1 -0
- package/build/client/_app/immutable/entry/start.CmS1dlrE.js.br +0 -0
- package/build/client/_app/immutable/entry/start.CmS1dlrE.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.CeRyHcWC.js +1 -0
- package/build/client/_app/immutable/nodes/0.CeRyHcWC.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.CeRyHcWC.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.BIqfJFCb.js +1 -0
- package/build/client/_app/immutable/nodes/1.BIqfJFCb.js.br +1 -1
- package/build/client/_app/immutable/nodes/1.BIqfJFCb.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.h8N33vpx.js +19 -0
- package/build/client/_app/immutable/nodes/4.h8N33vpx.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.h8N33vpx.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.B2qtGelf.js +4 -0
- package/build/client/_app/immutable/nodes/5.B2qtGelf.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.B2qtGelf.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.DrYb30Cc.js +1 -0
- package/build/client/_app/immutable/nodes/6.DrYb30Cc.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.DrYb30Cc.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.CrDhK7am.js +1 -0
- package/build/client/_app/immutable/nodes/7.CrDhK7am.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.CrDhK7am.js.gz +0 -0
- package/build/client/_app/immutable/nodes/8.CKAtL-gx.js +1 -0
- package/build/client/_app/immutable/nodes/8.CKAtL-gx.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.CKAtL-gx.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-sfmVs00_.js +9 -0
- package/build/server/chunks/{0-BGsPZcaQ.js.map → 0-sfmVs00_.js.map} +1 -1
- package/build/server/chunks/1-BQlukPTN.js +9 -0
- package/build/server/chunks/{1-Daoybjaw.js.map → 1-BQlukPTN.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-C79a4Yto.js +9 -0
- package/build/server/chunks/4-C79a4Yto.js.map +1 -0
- package/build/server/chunks/5-D7eeN25a.js +9 -0
- package/build/server/chunks/{5-BfmhtNP9.js.map → 5-D7eeN25a.js.map} +1 -1
- package/build/server/chunks/6-Dg79fiQc.js +9 -0
- package/build/server/chunks/{6-AcylLX8-.js.map → 6-Dg79fiQc.js.map} +1 -1
- package/build/server/chunks/7-DTavGKhw.js +9 -0
- package/build/server/chunks/7-DTavGKhw.js.map +1 -0
- package/build/server/chunks/{8-DMgWQQBm.js → 8-B0FQ5gh5.js} +3 -3
- package/build/server/chunks/{8-DMgWQQBm.js.map → 8-B0FQ5gh5.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-CzW3dV57.js} +73 -105
- package/build/server/chunks/ChatMessage-CzW3dV57.js.map +1 -0
- package/build/server/chunks/{Navbar-C9kE6wR-.js → Navbar-EBUPxUnS.js} +670 -142
- package/build/server/chunks/Navbar-EBUPxUnS.js.map +1 -0
- package/build/server/chunks/{_layout.svelte-DCfzq18z.js → _layout.svelte-e5vEwOWj.js} +2 -2
- package/build/server/chunks/{_layout.svelte-DCfzq18z.js.map → _layout.svelte-e5vEwOWj.js.map} +1 -1
- package/build/server/chunks/_page.svelte-CScIJqid.js +252 -0
- package/build/server/chunks/_page.svelte-CScIJqid.js.map +1 -0
- package/build/server/chunks/{_page.svelte-Dl3WoXNo.js → _page.svelte-CXGT7iVI.js} +251 -15
- package/build/server/chunks/_page.svelte-CXGT7iVI.js.map +1 -0
- package/build/server/chunks/{_page.svelte-B3FJ13Ci.js → _page.svelte-Dc9YczvY.js} +6 -6
- package/build/server/chunks/{_page.svelte-B3FJ13Ci.js.map → _page.svelte-Dc9YczvY.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-Dnt12F6c.js → _page.svelte-Dq0B2wTX.js} +9 -7
- package/build/server/chunks/_page.svelte-Dq0B2wTX.js.map +1 -0
- package/build/server/chunks/{_page.svelte-BA7DptUV.js → _page.svelte-Du_FGvId.js} +3 -3
- package/build/server/chunks/{_page.svelte-BA7DptUV.js.map → _page.svelte-Du_FGvId.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CVxiERfc.js → _server.ts--ajZwgpx.js} +4 -4
- package/build/server/chunks/{_server.ts-CVxiERfc.js.map → _server.ts--ajZwgpx.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Gbkg-oto.js → _server.ts-B-YtpFZv.js} +4 -4
- package/build/server/chunks/{_server.ts-Gbkg-oto.js.map → _server.ts-B-YtpFZv.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CbOKfJ3v.js → _server.ts-B3n_KrVi.js} +6 -6
- package/build/server/chunks/{_server.ts-CbOKfJ3v.js.map → _server.ts-B3n_KrVi.js.map} +1 -1
- package/build/server/chunks/{_server.ts-D3QPUpDc.js → _server.ts-B8JGa5NB.js} +4 -4
- package/build/server/chunks/{_server.ts-D3QPUpDc.js.map → _server.ts-B8JGa5NB.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DsTUwnu1.js → _server.ts-B8vW8q3-.js} +4 -4
- package/build/server/chunks/{_server.ts-DsTUwnu1.js.map → _server.ts-B8vW8q3-.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CreuvDch.js → _server.ts-BCivjDa1.js} +4 -4
- package/build/server/chunks/{_server.ts-CreuvDch.js.map → _server.ts-BCivjDa1.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BGqa6Laa.js → _server.ts-BGMXMZ3f.js} +4 -4
- package/build/server/chunks/_server.ts-BGMXMZ3f.js.map +1 -0
- package/build/server/chunks/{_server.ts-B8YF9aVx.js → _server.ts-BG_3Aam5.js} +4 -4
- package/build/server/chunks/{_server.ts-B8YF9aVx.js.map → _server.ts-BG_3Aam5.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CqH3nv-S.js → _server.ts-BQlauqG7.js} +5 -5
- package/build/server/chunks/{_server.ts-CqH3nv-S.js.map → _server.ts-BQlauqG7.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Dd4Mh0JV.js → _server.ts-BQtDb5rW.js} +4 -4
- package/build/server/chunks/{_server.ts-Dd4Mh0JV.js.map → _server.ts-BQtDb5rW.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BdLKHRnY.js → _server.ts-BTFsY3ns.js} +6 -6
- package/build/server/chunks/{_server.ts-BdLKHRnY.js.map → _server.ts-BTFsY3ns.js.map} +1 -1
- package/build/server/chunks/{_server.ts-3JO3CKsE.js → _server.ts-BUuhZLQW.js} +4 -4
- package/build/server/chunks/{_server.ts-3JO3CKsE.js.map → _server.ts-BUuhZLQW.js.map} +1 -1
- package/build/server/chunks/{_server.ts-D8cp-Em3.js → _server.ts-BYHQLzIU.js} +4 -4
- package/build/server/chunks/{_server.ts-D8cp-Em3.js.map → _server.ts-BYHQLzIU.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DzIilMO5.js → _server.ts-BYNejrbv.js} +2 -2
- package/build/server/chunks/{_server.ts-DzIilMO5.js.map → _server.ts-BYNejrbv.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CdB1K2M6.js → _server.ts-BZNECWdo.js} +2 -2
- package/build/server/chunks/{_server.ts-CdB1K2M6.js.map → _server.ts-BZNECWdo.js.map} +1 -1
- package/build/server/chunks/{_server.ts-B31I037d.js → _server.ts-Bd95fWI2.js} +6 -6
- package/build/server/chunks/{_server.ts-B31I037d.js.map → _server.ts-Bd95fWI2.js.map} +1 -1
- package/build/server/chunks/{_server.ts-SLlbT28g.js → _server.ts-BdyV0_Is.js} +2 -2
- package/build/server/chunks/{_server.ts-SLlbT28g.js.map → _server.ts-BdyV0_Is.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CH8uRkxq.js → _server.ts-BfXe8M8I.js} +4 -4
- package/build/server/chunks/{_server.ts-CH8uRkxq.js.map → _server.ts-BfXe8M8I.js.map} +1 -1
- package/build/server/chunks/{_server.ts-B8EZxkK3.js → _server.ts-BglWcbgl.js} +5 -5
- package/build/server/chunks/{_server.ts-B8EZxkK3.js.map → _server.ts-BglWcbgl.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BvbnbZsl.js → _server.ts-BhduAFwe.js} +4 -4
- package/build/server/chunks/{_server.ts-BvbnbZsl.js.map → _server.ts-BhduAFwe.js.map} +1 -1
- package/build/server/chunks/{_server.ts-C8BrkC8T.js → _server.ts-Bi7Kdi9Z.js} +5 -5
- package/build/server/chunks/{_server.ts-C8BrkC8T.js.map → _server.ts-Bi7Kdi9Z.js.map} +1 -1
- package/build/server/chunks/{_server.ts-pQ9okj_b.js → _server.ts-BnCNI_5v.js} +6 -6
- package/build/server/chunks/{_server.ts-pQ9okj_b.js.map → _server.ts-BnCNI_5v.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CtltE_T-.js → _server.ts-Bttq5XEc.js} +2 -2
- package/build/server/chunks/{_server.ts-CtltE_T-.js.map → _server.ts-Bttq5XEc.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CpJ08_Lw.js → _server.ts-C0gphQE8.js} +4 -4
- package/build/server/chunks/{_server.ts-CpJ08_Lw.js.map → _server.ts-C0gphQE8.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DL9hlvL8.js → _server.ts-C0p_epYa.js} +4 -4
- package/build/server/chunks/{_server.ts-DL9hlvL8.js.map → _server.ts-C0p_epYa.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CXI7k8hl.js → _server.ts-CBW-iSGY.js} +4 -4
- package/build/server/chunks/{_server.ts-CXI7k8hl.js.map → _server.ts-CBW-iSGY.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BhRtn8Xn.js → _server.ts-CBYhHA1_.js} +4 -4
- package/build/server/chunks/{_server.ts-BhRtn8Xn.js.map → _server.ts-CBYhHA1_.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CX2sHcZR.js → _server.ts-CFjN9JNk.js} +4 -4
- package/build/server/chunks/{_server.ts-CX2sHcZR.js.map → _server.ts-CFjN9JNk.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CIEz-ybk.js → _server.ts-CHd9_WPs.js} +4 -4
- package/build/server/chunks/{_server.ts-CIEz-ybk.js.map → _server.ts-CHd9_WPs.js.map} +1 -1
- package/build/server/chunks/{_server.ts-4HorMS2R.js → _server.ts-CKqIuso7.js} +4 -4
- package/build/server/chunks/{_server.ts-4HorMS2R.js.map → _server.ts-CKqIuso7.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DLVGDzlE.js → _server.ts-CObmPmDw.js} +4 -4
- package/build/server/chunks/{_server.ts-DLVGDzlE.js.map → _server.ts-CObmPmDw.js.map} +1 -1
- package/build/server/chunks/{_server.ts-MGn-MXr5.js → _server.ts-CQn6OWsw.js} +4 -4
- package/build/server/chunks/{_server.ts-MGn-MXr5.js.map → _server.ts-CQn6OWsw.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BWtTOsFi.js → _server.ts-CQucsScY.js} +4 -4
- package/build/server/chunks/{_server.ts-BWtTOsFi.js.map → _server.ts-CQucsScY.js.map} +1 -1
- package/build/server/chunks/{_server.ts-B3ntDGZM.js → _server.ts-CZMBEF_P.js} +5 -5
- package/build/server/chunks/{_server.ts-B3ntDGZM.js.map → _server.ts-CZMBEF_P.js.map} +1 -1
- package/build/server/chunks/_server.ts-Cay6JJmu.js +205 -0
- package/build/server/chunks/_server.ts-Cay6JJmu.js.map +1 -0
- package/build/server/chunks/_server.ts-Cdq-yzqP.js +627 -0
- package/build/server/chunks/_server.ts-Cdq-yzqP.js.map +1 -0
- package/build/server/chunks/{_server.ts-1mdOjWEN.js → _server.ts-Ch8LouSG.js} +5 -5
- package/build/server/chunks/{_server.ts-1mdOjWEN.js.map → _server.ts-Ch8LouSG.js.map} +1 -1
- package/build/server/chunks/{_server.ts-B1Jl9Grz.js → _server.ts-Cmi0m_Ec.js} +4 -4
- package/build/server/chunks/{_server.ts-B1Jl9Grz.js.map → _server.ts-Cmi0m_Ec.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Bq4Oko-2.js → _server.ts-CmshKmzd.js} +4 -4
- package/build/server/chunks/{_server.ts-Bq4Oko-2.js.map → _server.ts-CmshKmzd.js.map} +1 -1
- package/build/server/chunks/{_server.ts-C7K7bv8w.js → _server.ts-CoIWXJLt.js} +5 -5
- package/build/server/chunks/{_server.ts-C7K7bv8w.js.map → _server.ts-CoIWXJLt.js.map} +1 -1
- package/build/server/chunks/{_server.ts-E5YqcwqQ.js → _server.ts-CqviakL3.js} +4 -4
- package/build/server/chunks/{_server.ts-E5YqcwqQ.js.map → _server.ts-CqviakL3.js.map} +1 -1
- package/build/server/chunks/_server.ts-CrK5Xjnh.js +86 -0
- package/build/server/chunks/_server.ts-CrK5Xjnh.js.map +1 -0
- package/build/server/chunks/{_server.ts-BLUm8wAq.js → _server.ts-CsUJia-4.js} +4 -4
- package/build/server/chunks/{_server.ts-BLUm8wAq.js.map → _server.ts-CsUJia-4.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BY7nR9Ev.js → _server.ts-CtqksBun.js} +4 -4
- package/build/server/chunks/{_server.ts-BY7nR9Ev.js.map → _server.ts-CtqksBun.js.map} +1 -1
- package/build/server/chunks/{_server.ts-IzD0bafW.js → _server.ts-CuFSHsdA.js} +5 -5
- package/build/server/chunks/{_server.ts-IzD0bafW.js.map → _server.ts-CuFSHsdA.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CzoE8edN.js → _server.ts-CvBgeFp9.js} +5 -5
- package/build/server/chunks/{_server.ts-CzoE8edN.js.map → _server.ts-CvBgeFp9.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DY3ZDXdA.js → _server.ts-CxOokd6P.js} +4 -4
- package/build/server/chunks/{_server.ts-DY3ZDXdA.js.map → _server.ts-CxOokd6P.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Bu_7eQaL.js → _server.ts-CxpkPdkw.js} +5 -5
- package/build/server/chunks/{_server.ts-Bu_7eQaL.js.map → _server.ts-CxpkPdkw.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BUIWPYRF.js → _server.ts-D-hh_BTK.js} +4 -4
- package/build/server/chunks/{_server.ts-BUIWPYRF.js.map → _server.ts-D-hh_BTK.js.map} +1 -1
- package/build/server/chunks/{_server.ts-D-Vwef5C.js → _server.ts-D064BG7i.js} +4 -4
- package/build/server/chunks/{_server.ts-D-Vwef5C.js.map → _server.ts-D064BG7i.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DVRyf5BI.js → _server.ts-D0fThJEL.js} +4 -4
- package/build/server/chunks/{_server.ts-DVRyf5BI.js.map → _server.ts-D0fThJEL.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CExwMomX.js → _server.ts-D4QpYVnk.js} +4 -4
- package/build/server/chunks/{_server.ts-CExwMomX.js.map → _server.ts-D4QpYVnk.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DHBX6Ary.js → _server.ts-DABvBtNg.js} +5 -5
- package/build/server/chunks/{_server.ts-DHBX6Ary.js.map → _server.ts-DABvBtNg.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BHmCir74.js → _server.ts-DBD7W3nM.js} +4 -4
- package/build/server/chunks/{_server.ts-BHmCir74.js.map → _server.ts-DBD7W3nM.js.map} +1 -1
- package/build/server/chunks/{_server.ts-C_EnHMEu.js → _server.ts-DDhNa_X1.js} +4 -4
- package/build/server/chunks/{_server.ts-C_EnHMEu.js.map → _server.ts-DDhNa_X1.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Dc9XEMmF.js → _server.ts-DFBxMXVv.js} +4 -4
- package/build/server/chunks/{_server.ts-Dc9XEMmF.js.map → _server.ts-DFBxMXVv.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DlwXpopR.js → _server.ts-DLS_wObr.js} +3 -3
- package/build/server/chunks/{_server.ts-DlwXpopR.js.map → _server.ts-DLS_wObr.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Lzz9ashZ.js → _server.ts-DTlXzoMP.js} +4 -4
- package/build/server/chunks/{_server.ts-Lzz9ashZ.js.map → _server.ts-DTlXzoMP.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Do5L_4tt.js → _server.ts-Dicprv7A.js} +4 -4
- package/build/server/chunks/{_server.ts-Do5L_4tt.js.map → _server.ts-Dicprv7A.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CD-Cddqe.js → _server.ts-DooshvGc.js} +5 -5
- package/build/server/chunks/{_server.ts-CD-Cddqe.js.map → _server.ts-DooshvGc.js.map} +1 -1
- package/build/server/chunks/{_server.ts-j5xF-dJX.js → _server.ts-DpnQQsEi.js} +4 -4
- package/build/server/chunks/{_server.ts-j5xF-dJX.js.map → _server.ts-DpnQQsEi.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CXmwf1pu.js → _server.ts-DqnxZoKV.js} +2 -2
- package/build/server/chunks/{_server.ts-CXmwf1pu.js.map → _server.ts-DqnxZoKV.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DPC8qYUD.js → _server.ts-DwH287WQ.js} +4 -4
- package/build/server/chunks/{_server.ts-DPC8qYUD.js.map → _server.ts-DwH287WQ.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CHQmAGEC.js → _server.ts-SA9d0x_K.js} +5 -5
- package/build/server/chunks/{_server.ts-CHQmAGEC.js.map → _server.ts-SA9d0x_K.js.map} +1 -1
- package/build/server/chunks/{_server.ts-C4pf3VKi.js → _server.ts-TS_ttjdr.js} +4 -4
- package/build/server/chunks/{_server.ts-C4pf3VKi.js.map → _server.ts-TS_ttjdr.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BEjyvkVV.js → _server.ts-VtDFzmOm.js} +4 -4
- package/build/server/chunks/{_server.ts-BEjyvkVV.js.map → _server.ts-VtDFzmOm.js.map} +1 -1
- package/build/server/chunks/_server.ts-Y57oqscW.js +48 -0
- package/build/server/chunks/_server.ts-Y57oqscW.js.map +1 -0
- package/build/server/chunks/{_server.ts-CeeR1W32.js → _server.ts-YHGTRtDD.js} +4 -4
- package/build/server/chunks/{_server.ts-CeeR1W32.js.map → _server.ts-YHGTRtDD.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CciSVwzg.js → _server.ts-Zu8ZTux3.js} +5 -5
- package/build/server/chunks/{_server.ts-CciSVwzg.js.map → _server.ts-Zu8ZTux3.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CNLz6iJ7.js → _server.ts-_lxrLHOI.js} +4 -4
- package/build/server/chunks/{_server.ts-CNLz6iJ7.js.map → _server.ts-_lxrLHOI.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BTvZB-WH.js → _server.ts-dBLS5OxC.js} +4 -4
- package/build/server/chunks/{_server.ts-BTvZB-WH.js.map → _server.ts-dBLS5OxC.js.map} +1 -1
- package/build/server/chunks/{_server.ts-ykNeG8km.js → _server.ts-jUybF0F9.js} +4 -4
- package/build/server/chunks/{_server.ts-ykNeG8km.js.map → _server.ts-jUybF0F9.js.map} +1 -1
- package/build/server/chunks/{_server.ts-C8zFV8J3.js → _server.ts-mFCCnU2f.js} +4 -4
- package/build/server/chunks/{_server.ts-C8zFV8J3.js.map → _server.ts-mFCCnU2f.js.map} +1 -1
- package/build/server/chunks/{_server.ts-yWBMi6sn.js → _server.ts-nOJLfmaj.js} +6 -6
- package/build/server/chunks/{_server.ts-yWBMi6sn.js.map → _server.ts-nOJLfmaj.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DAW24-9-.js → _server.ts-pJgm08Ns.js} +4 -4
- package/build/server/chunks/{_server.ts-DAW24-9-.js.map → _server.ts-pJgm08Ns.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BNJn20vV.js → _server.ts-vuXd3nrT.js} +4 -4
- package/build/server/chunks/{_server.ts-BNJn20vV.js.map → _server.ts-vuXd3nrT.js.map} +1 -1
- package/build/server/chunks/{_server.ts-QvBpEIYu.js → _server.ts-wKN3c9Bs.js} +4 -4
- package/build/server/chunks/{_server.ts-QvBpEIYu.js.map → _server.ts-wKN3c9Bs.js.map} +1 -1
- package/build/server/chunks/{addon-helpers-DBJL8kvq.js → addon-helpers-D3GJCulD.js} +3 -3
- package/build/server/chunks/{addon-helpers-DBJL8kvq.js.map → addon-helpers-D3GJCulD.js.map} +1 -1
- package/build/server/chunks/{akm-hO0p79ZE.js → akm-B_BIZJJv.js} +2 -2
- package/build/server/chunks/{akm-hO0p79ZE.js.map → akm-B_BIZJJv.js.map} +1 -1
- package/build/server/chunks/{client-DchoQXpW.js → client-DuNIsVic.js} +2 -2
- package/build/server/chunks/{client-DchoQXpW.js.map → client-DuNIsVic.js.map} +1 -1
- package/build/server/chunks/{config-5vfdWPGq.js → config-UnF5M7J6.js} +2 -2
- package/build/server/chunks/{config-5vfdWPGq.js.map → config-UnF5M7J6.js.map} +1 -1
- package/build/server/chunks/{docker-DYeytgDI.js → docker-DmrYwY_e.js} +2 -2
- package/build/server/chunks/{docker-DYeytgDI.js.map → docker-DmrYwY_e.js.map} +1 -1
- package/build/server/chunks/{endpoints-pIoXJCW6.js → endpoints-D6uoesB9.js} +19 -6
- package/build/server/chunks/endpoints-D6uoesB9.js.map +1 -0
- package/build/server/chunks/{environment-B0PbsX5P.js → environment-C9HyCxX9.js} +2 -2
- package/build/server/chunks/{environment-B0PbsX5P.js.map → environment-C9HyCxX9.js.map} +1 -1
- package/build/server/chunks/{error.svelte-Cmr7gpdL.js → error.svelte-BajT8v3i.js} +4 -4
- package/build/server/chunks/{error.svelte-Cmr7gpdL.js.map → error.svelte-BajT8v3i.js.map} +1 -1
- package/build/server/chunks/{helpers-CVirrNSz.js → helpers-zCNRvZpT.js} +3 -3
- package/build/server/chunks/{helpers-CVirrNSz.js.map → helpers-zCNRvZpT.js.map} +1 -1
- package/build/server/chunks/{hooks.server-pc-TSpQy.js → hooks.server-BKK-8Ct6.js} +6 -6
- package/build/server/chunks/hooks.server-BKK-8Ct6.js.map +1 -0
- package/build/server/chunks/{http-DGsfa0DV.js → http-Cm-sRzTa.js} +2 -2
- package/build/server/chunks/{http-DGsfa0DV.js.map → http-Cm-sRzTa.js.map} +1 -1
- package/build/server/chunks/{internal-DriC3vi3.js → internal-LXD6a4Om.js} +3 -3
- package/build/server/chunks/{internal-DriC3vi3.js.map → internal-LXD6a4Om.js.map} +1 -1
- package/build/server/chunks/{session-cookie-DEuOwtHY.js → session-cookie-CoF3FU_0.js} +2 -2
- package/build/server/chunks/{session-cookie-DEuOwtHY.js.map → session-cookie-CoF3FU_0.js.map} +1 -1
- package/build/server/chunks/{setup-deploy-D4bnmfpV.js → setup-deploy-CVYxUJZD.js} +2 -2
- package/build/server/chunks/{setup-deploy-D4bnmfpV.js.map → setup-deploy-CVYxUJZD.js.map} +1 -1
- package/build/server/chunks/{src-CyeWH4Df.js → src-efp8mb8-.js} +567 -81
- package/build/server/chunks/src-efp8mb8-.js.map +1 -0
- package/build/server/chunks/{state-BcUnjLg5.js → state-z9dl5k8n.js} +2 -2
- package/build/server/chunks/{state-BcUnjLg5.js.map → state-z9dl5k8n.js.map} +1 -1
- package/build/server/chunks/{theme-state.svelte-CeABRes-.js → theme-state.svelte-BNtUaCD7.js} +119 -20
- package/build/server/chunks/theme-state.svelte-BNtUaCD7.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/_page.svelte-Dnt12F6c.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
|
@@ -181,6 +181,8 @@ function backupOpenPalmHome(homeDir) {
|
|
|
181
181
|
}
|
|
182
182
|
return copiedAny ? backupDir : null;
|
|
183
183
|
}
|
|
184
|
+
var package_default = {
|
|
185
|
+
version: "0.11.5-rc.5"};
|
|
184
186
|
//#endregion
|
|
185
187
|
//#region ../../node_modules/.bun/yaml@2.9.0/node_modules/yaml/dist/nodes/identity.js
|
|
186
188
|
var require_identity = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
@@ -7378,6 +7380,87 @@ function mergeEnvContent(content, updates, options = {}) {
|
|
|
7378
7380
|
return lines.join("\n");
|
|
7379
7381
|
}
|
|
7380
7382
|
//#endregion
|
|
7383
|
+
//#region ../lib/src/control-plane/image-tags.ts
|
|
7384
|
+
var PLATFORM_IMAGE_TAG_KEYS = [
|
|
7385
|
+
"OP_ASSISTANT_IMAGE_TAG",
|
|
7386
|
+
"OP_GUARDIAN_IMAGE_TAG",
|
|
7387
|
+
"OP_CHANNEL_IMAGE_TAG"
|
|
7388
|
+
];
|
|
7389
|
+
/**
|
|
7390
|
+
* Build the stack.env image-tag entries for a platform release.
|
|
7391
|
+
*
|
|
7392
|
+
* `tag` is the platform version-of-record (the assistant tag). Per-image
|
|
7393
|
+
* overrides let guardian/channel ride an older published tag when a release
|
|
7394
|
+
* shipped only a subset of images (#477). OP_IMAGE_TAG stays as the compose
|
|
7395
|
+
* fallback for pre-per-image installs.
|
|
7396
|
+
*/
|
|
7397
|
+
function buildPlatformImageTagEnv(tag, perImage) {
|
|
7398
|
+
return {
|
|
7399
|
+
OP_IMAGE_TAG: tag,
|
|
7400
|
+
OP_ASSISTANT_IMAGE_TAG: perImage?.OP_ASSISTANT_IMAGE_TAG ?? tag,
|
|
7401
|
+
OP_GUARDIAN_IMAGE_TAG: perImage?.OP_GUARDIAN_IMAGE_TAG ?? tag,
|
|
7402
|
+
OP_CHANNEL_IMAGE_TAG: perImage?.OP_CHANNEL_IMAGE_TAG ?? tag
|
|
7403
|
+
};
|
|
7404
|
+
}
|
|
7405
|
+
//#endregion
|
|
7406
|
+
//#region ../lib/src/control-plane/versioning.ts
|
|
7407
|
+
var SEMVER_RE = /^v?\d+\.\d+\.\d+(?:[-+].*)?$/;
|
|
7408
|
+
function isComparableSemver(version) {
|
|
7409
|
+
return !!version && SEMVER_RE.test(version.trim());
|
|
7410
|
+
}
|
|
7411
|
+
function parseComparableVersion(version) {
|
|
7412
|
+
const clean = version.trim().replace(/^v/, "").split("+")[0];
|
|
7413
|
+
const dashIdx = clean.indexOf("-");
|
|
7414
|
+
const main = dashIdx === -1 ? clean : clean.slice(0, dashIdx);
|
|
7415
|
+
const prerelease = dashIdx === -1 ? null : clean.slice(dashIdx + 1);
|
|
7416
|
+
const [major = 0, minor = 0, patch = 0] = main.split(".").map(Number);
|
|
7417
|
+
return {
|
|
7418
|
+
major,
|
|
7419
|
+
minor,
|
|
7420
|
+
patch,
|
|
7421
|
+
prerelease
|
|
7422
|
+
};
|
|
7423
|
+
}
|
|
7424
|
+
function comparePrerelease(a, b) {
|
|
7425
|
+
const aParts = a.split(".");
|
|
7426
|
+
const bParts = b.split(".");
|
|
7427
|
+
for (let i = 0; i < Math.max(aParts.length, bParts.length); i++) {
|
|
7428
|
+
if (i >= aParts.length) return -1;
|
|
7429
|
+
if (i >= bParts.length) return 1;
|
|
7430
|
+
const aNum = Number(aParts[i]);
|
|
7431
|
+
const bNum = Number(bParts[i]);
|
|
7432
|
+
const aIsNum = !Number.isNaN(aNum);
|
|
7433
|
+
const bIsNum = !Number.isNaN(bNum);
|
|
7434
|
+
if (aIsNum && bIsNum) {
|
|
7435
|
+
if (aNum !== bNum) return aNum > bNum ? 1 : -1;
|
|
7436
|
+
continue;
|
|
7437
|
+
}
|
|
7438
|
+
if (aIsNum !== bIsNum) return aIsNum ? -1 : 1;
|
|
7439
|
+
if (aParts[i] !== bParts[i]) return aParts[i] > bParts[i] ? 1 : -1;
|
|
7440
|
+
}
|
|
7441
|
+
return 0;
|
|
7442
|
+
}
|
|
7443
|
+
function compareComparableVersions(a, b) {
|
|
7444
|
+
const aParsed = parseComparableVersion(a);
|
|
7445
|
+
const bParsed = parseComparableVersion(b);
|
|
7446
|
+
if (aParsed.major !== bParsed.major) return aParsed.major > bParsed.major ? 1 : -1;
|
|
7447
|
+
if (aParsed.minor !== bParsed.minor) return aParsed.minor > bParsed.minor ? 1 : -1;
|
|
7448
|
+
if (aParsed.patch !== bParsed.patch) return aParsed.patch > bParsed.patch ? 1 : -1;
|
|
7449
|
+
if (aParsed.prerelease === null && bParsed.prerelease !== null) return 1;
|
|
7450
|
+
if (aParsed.prerelease !== null && bParsed.prerelease === null) return -1;
|
|
7451
|
+
if (aParsed.prerelease !== null && bParsed.prerelease !== null) return comparePrerelease(aParsed.prerelease, bParsed.prerelease);
|
|
7452
|
+
return 0;
|
|
7453
|
+
}
|
|
7454
|
+
function majorVersionOf(version) {
|
|
7455
|
+
if (!isComparableSemver(version)) return null;
|
|
7456
|
+
return parseComparableVersion(version).major;
|
|
7457
|
+
}
|
|
7458
|
+
function isSameMajorVersion(a, b) {
|
|
7459
|
+
const aMajor = majorVersionOf(a);
|
|
7460
|
+
const bMajor = majorVersionOf(b);
|
|
7461
|
+
return aMajor !== null && bMajor !== null && aMajor === bMajor;
|
|
7462
|
+
}
|
|
7463
|
+
//#endregion
|
|
7381
7464
|
//#region ../lib/src/control-plane/migrations.ts
|
|
7382
7465
|
/**
|
|
7383
7466
|
* On-disk layout migration harness.
|
|
@@ -7412,6 +7495,17 @@ var MigrationError = class extends Error {
|
|
|
7412
7495
|
this.name = "MigrationError";
|
|
7413
7496
|
}
|
|
7414
7497
|
};
|
|
7498
|
+
var RELEASE_VERSION_KEY = "OP_RELEASE_VERSION";
|
|
7499
|
+
var CURRENT_RELEASE_VERSION = `v${package_default.version}`;
|
|
7500
|
+
function selectPendingReleaseMigrations(releaseFrom, targetVersion) {
|
|
7501
|
+
if (!isComparableSemver(targetVersion)) return [];
|
|
7502
|
+
return RELEASE_MIGRATIONS.filter((migration) => {
|
|
7503
|
+
if (!isComparableSemver(migration.version)) return false;
|
|
7504
|
+
if (compareComparableVersions(migration.version, targetVersion) > 0) return false;
|
|
7505
|
+
if (releaseFrom === null || !isComparableSemver(releaseFrom)) return true;
|
|
7506
|
+
return compareComparableVersions(migration.version, releaseFrom) > 0;
|
|
7507
|
+
}).sort((a, b) => compareComparableVersions(a.version, b.version));
|
|
7508
|
+
}
|
|
7415
7509
|
function stackEnvFile(stashDir) {
|
|
7416
7510
|
return join(stashDir, "env", "stack.env");
|
|
7417
7511
|
}
|
|
@@ -7435,6 +7529,26 @@ function stampLayoutVersion(stashDir, version) {
|
|
|
7435
7529
|
if (!existsSync(envPath)) return;
|
|
7436
7530
|
writeFileSync(envPath, upsertEnvValue(readFileSync(envPath, "utf-8"), LAYOUT_VERSION_KEY, String(version)));
|
|
7437
7531
|
}
|
|
7532
|
+
function readReleaseVersion(stashDir) {
|
|
7533
|
+
const envPath = stackEnvFile(stashDir);
|
|
7534
|
+
if (!existsSync(envPath)) return null;
|
|
7535
|
+
let imageTagFallback = null;
|
|
7536
|
+
for (const line of readFileSync(envPath, "utf-8").split("\n")) {
|
|
7537
|
+
const releaseMatch = line.match(/^OP_RELEASE_VERSION=(.+)\s*$/);
|
|
7538
|
+
if (releaseMatch) return releaseMatch[1].trim();
|
|
7539
|
+
const imageTagMatch = line.match(/^OP_IMAGE_TAG=(.+)\s*$/);
|
|
7540
|
+
if (imageTagMatch && !imageTagFallback) imageTagFallback = imageTagMatch[1].trim();
|
|
7541
|
+
}
|
|
7542
|
+
return imageTagFallback;
|
|
7543
|
+
}
|
|
7544
|
+
function stampReleaseVersion(stashDir, version) {
|
|
7545
|
+
const envPath = stackEnvFile(stashDir);
|
|
7546
|
+
if (!existsSync(envPath)) return;
|
|
7547
|
+
writeFileSync(envPath, upsertEnvValue(readFileSync(envPath, "utf-8"), RELEASE_VERSION_KEY, version));
|
|
7548
|
+
}
|
|
7549
|
+
function upsertMany(content, values) {
|
|
7550
|
+
return Object.entries(values).reduce((next, [key, value]) => upsertEnvValue(next, key, value), content);
|
|
7551
|
+
}
|
|
7438
7552
|
function ensureDir(ctx, dir) {
|
|
7439
7553
|
if (ctx.dryRun) {
|
|
7440
7554
|
ctx.log(`[dry-run] mkdir ${rel(ctx, dir)}`);
|
|
@@ -7476,6 +7590,20 @@ function writeFile600(ctx, path, content) {
|
|
|
7476
7590
|
chmodSync(path, 384);
|
|
7477
7591
|
} catch {}
|
|
7478
7592
|
}
|
|
7593
|
+
function seedPerImageTagVars(ctx) {
|
|
7594
|
+
const envPath = stackEnvFile(ctx.stashDir);
|
|
7595
|
+
if (!existsSync(envPath)) return;
|
|
7596
|
+
const current = readFileSync(envPath, "utf-8");
|
|
7597
|
+
const imageTag = current.match(/^OP_IMAGE_TAG=(.+)$/m)?.[1]?.trim();
|
|
7598
|
+
if (!imageTag) return;
|
|
7599
|
+
if (PLATFORM_IMAGE_TAG_KEYS.filter((key) => !new RegExp(`^${key}=`, "m").test(current)).length === 0) return;
|
|
7600
|
+
if (ctx.dryRun) {
|
|
7601
|
+
ctx.log(`[dry-run] seed per-image tag vars from OP_IMAGE_TAG=${imageTag}`);
|
|
7602
|
+
return;
|
|
7603
|
+
}
|
|
7604
|
+
writeFile600(ctx, envPath, upsertMany(current, buildPlatformImageTagEnv(imageTag)));
|
|
7605
|
+
ctx.log(`seeded per-image tag vars from OP_IMAGE_TAG=${imageTag}`);
|
|
7606
|
+
}
|
|
7479
7607
|
var SECRET_KEY_RE = /(_API_KEY|_TOKEN|_SECRET|_PASSWORD)$/;
|
|
7480
7608
|
var CONFIG_KEY_RE = /^(OP_CAP_|SYSTEM_LLM_|EMBEDDING_)/;
|
|
7481
7609
|
function migrate010to011(ctx) {
|
|
@@ -7631,6 +7759,19 @@ var MIGRATIONS = [{
|
|
|
7631
7759
|
if (!existsSync(stackEnvFile(ctx.stashDir))) throw new Error("post-migration check failed: knowledge/env/stack.env is missing");
|
|
7632
7760
|
}
|
|
7633
7761
|
}];
|
|
7762
|
+
var RELEASE_MIGRATIONS = [{
|
|
7763
|
+
version: "v0.11.5-rc.1",
|
|
7764
|
+
describe: "seed per-image platform tags from OP_IMAGE_TAG",
|
|
7765
|
+
apply: seedPerImageTagVars,
|
|
7766
|
+
verify(ctx) {
|
|
7767
|
+
if (ctx.dryRun) return;
|
|
7768
|
+
const envPath = stackEnvFile(ctx.stashDir);
|
|
7769
|
+
if (!existsSync(envPath)) return;
|
|
7770
|
+
const content = readFileSync(envPath, "utf-8");
|
|
7771
|
+
if (!/^OP_IMAGE_TAG=/m.test(content)) return;
|
|
7772
|
+
for (const key of PLATFORM_IMAGE_TAG_KEYS) if (!new RegExp(`^${key}=`, "m").test(content)) throw new Error(`post-migration check failed: ${key} is missing`);
|
|
7773
|
+
}
|
|
7774
|
+
}];
|
|
7634
7775
|
var RECOVERY_GUIDANCE = "Your original files were left untouched and a full backup was taken first. To recover, restore the backup (see docs/operations/backup-restore.md) or run the standalone migrator with --dry-run (scripts/migrate-0.10-to-0.11.sh / .ps1). Full guide: docs/operations/upgrade-0.10-to-0.11.md";
|
|
7635
7776
|
/**
|
|
7636
7777
|
* Ensure the home directory is migrated to the current layout. Safe to call at
|
|
@@ -7653,24 +7794,25 @@ function ensureMigrated(opts = {}) {
|
|
|
7653
7794
|
notes: []
|
|
7654
7795
|
};
|
|
7655
7796
|
const from = readLayoutVersion(ctxBase);
|
|
7797
|
+
const releaseFrom = readReleaseVersion(stashDir);
|
|
7656
7798
|
const empty = {
|
|
7657
7799
|
migrated: false,
|
|
7658
7800
|
from,
|
|
7659
7801
|
to: from,
|
|
7660
7802
|
applied: [],
|
|
7661
7803
|
backupDir: null,
|
|
7662
|
-
notes: []
|
|
7804
|
+
notes: [],
|
|
7805
|
+
releaseFrom,
|
|
7806
|
+
releaseTo: CURRENT_RELEASE_VERSION,
|
|
7807
|
+
releaseApplied: []
|
|
7663
7808
|
};
|
|
7664
|
-
|
|
7665
|
-
|
|
7666
|
-
|
|
7667
|
-
|
|
7668
|
-
|
|
7669
|
-
|
|
7670
|
-
|
|
7671
|
-
const pending = MIGRATIONS.filter((m) => m.from >= from && m.to <= 1).sort((a, b) => a.from - b.from);
|
|
7672
|
-
if (pending.length === 0) {
|
|
7673
|
-
if (!dryRun) stampLayoutVersion(stashDir, 1);
|
|
7809
|
+
const pending = MIGRATIONS.filter((m) => m.from >= from && m.from < 1).sort((a, b) => a.from - b.from);
|
|
7810
|
+
const pendingRelease = selectPendingReleaseMigrations(releaseFrom, CURRENT_RELEASE_VERSION);
|
|
7811
|
+
if (pending.length === 0 && pendingRelease.length === 0) {
|
|
7812
|
+
if (!dryRun) {
|
|
7813
|
+
stampLayoutVersion(stashDir, 1);
|
|
7814
|
+
stampReleaseVersion(stashDir, CURRENT_RELEASE_VERSION);
|
|
7815
|
+
}
|
|
7674
7816
|
return {
|
|
7675
7817
|
...empty,
|
|
7676
7818
|
to: 1
|
|
@@ -7697,6 +7839,7 @@ function ensureMigrated(opts = {}) {
|
|
|
7697
7839
|
log(`Backup: ${backupDir}`);
|
|
7698
7840
|
}
|
|
7699
7841
|
const applied = [];
|
|
7842
|
+
const releaseApplied = [];
|
|
7700
7843
|
const notes = [];
|
|
7701
7844
|
for (const m of pending) {
|
|
7702
7845
|
const ctx = {
|
|
@@ -7708,13 +7851,107 @@ function ensureMigrated(opts = {}) {
|
|
|
7708
7851
|
m.verify(ctx);
|
|
7709
7852
|
applied.push(`${m.from}->${m.to}`);
|
|
7710
7853
|
}
|
|
7711
|
-
|
|
7854
|
+
for (const migration of pendingRelease) {
|
|
7855
|
+
const ctx = {
|
|
7856
|
+
...ctxBase,
|
|
7857
|
+
notes
|
|
7858
|
+
};
|
|
7859
|
+
log(`Migrating release ${releaseFrom ?? "unknown"} → ${migration.version}: ${migration.describe}`);
|
|
7860
|
+
migration.apply(ctx);
|
|
7861
|
+
migration.verify(ctx);
|
|
7862
|
+
releaseApplied.push(migration.version);
|
|
7863
|
+
}
|
|
7864
|
+
if (!dryRun) {
|
|
7865
|
+
stampLayoutVersion(stashDir, 1);
|
|
7866
|
+
stampReleaseVersion(stashDir, CURRENT_RELEASE_VERSION);
|
|
7867
|
+
}
|
|
7712
7868
|
return {
|
|
7713
7869
|
migrated: true,
|
|
7714
7870
|
from,
|
|
7715
7871
|
to: 1,
|
|
7716
7872
|
applied,
|
|
7717
7873
|
backupDir,
|
|
7874
|
+
notes,
|
|
7875
|
+
releaseFrom,
|
|
7876
|
+
releaseTo: CURRENT_RELEASE_VERSION,
|
|
7877
|
+
releaseApplied
|
|
7878
|
+
};
|
|
7879
|
+
} catch (e) {
|
|
7880
|
+
if (e instanceof MigrationError) throw e;
|
|
7881
|
+
throw new MigrationError(`Migration failed: ${e instanceof Error ? e.message : String(e)}`, RECOVERY_GUIDANCE, backupDir);
|
|
7882
|
+
} finally {
|
|
7883
|
+
releaseInstallLock(lock);
|
|
7884
|
+
}
|
|
7885
|
+
}
|
|
7886
|
+
function ensureReleaseMigrated(opts) {
|
|
7887
|
+
const homeDir = opts.homeDir ?? resolveOpenPalmHome();
|
|
7888
|
+
const dryRun = opts.dryRun ?? false;
|
|
7889
|
+
const log = opts.log ?? (() => {});
|
|
7890
|
+
const stashDir = resolveStashDir();
|
|
7891
|
+
const targetVersion = opts.targetVersion.trim();
|
|
7892
|
+
const releaseFrom = readReleaseVersion(stashDir);
|
|
7893
|
+
const pendingRelease = selectPendingReleaseMigrations(releaseFrom, targetVersion);
|
|
7894
|
+
const empty = {
|
|
7895
|
+
migrated: false,
|
|
7896
|
+
from: releaseFrom,
|
|
7897
|
+
to: targetVersion,
|
|
7898
|
+
applied: [],
|
|
7899
|
+
backupDir: null,
|
|
7900
|
+
notes: []
|
|
7901
|
+
};
|
|
7902
|
+
if (pendingRelease.length === 0) {
|
|
7903
|
+
if (!dryRun && releaseFrom !== targetVersion) stampReleaseVersion(stashDir, targetVersion);
|
|
7904
|
+
return empty;
|
|
7905
|
+
}
|
|
7906
|
+
const ctxBase = {
|
|
7907
|
+
homeDir,
|
|
7908
|
+
dataDir: resolveDataDir(),
|
|
7909
|
+
stackDir: resolveStackDir(),
|
|
7910
|
+
stashDir,
|
|
7911
|
+
configDir: resolveConfigDir(),
|
|
7912
|
+
dryRun,
|
|
7913
|
+
log,
|
|
7914
|
+
notes: []
|
|
7915
|
+
};
|
|
7916
|
+
let lock = null;
|
|
7917
|
+
let backupDir = null;
|
|
7918
|
+
try {
|
|
7919
|
+
if (!dryRun) {
|
|
7920
|
+
try {
|
|
7921
|
+
mkdirSync(ctxBase.dataDir, { recursive: true });
|
|
7922
|
+
} catch (e) {
|
|
7923
|
+
throw new MigrationError(`Could not prepare the data directory: ${e instanceof Error ? e.message : String(e)}`, RECOVERY_GUIDANCE, null);
|
|
7924
|
+
}
|
|
7925
|
+
lock = acquireInstallLock(ctxBase.dataDir);
|
|
7926
|
+
if (!lock) throw new MigrationError("Another install/upgrade is in progress.", RECOVERY_GUIDANCE, null);
|
|
7927
|
+
log("Taking a full backup before migrating…");
|
|
7928
|
+
try {
|
|
7929
|
+
backupDir = backupOpenPalmHome(homeDir);
|
|
7930
|
+
} catch (e) {
|
|
7931
|
+
throw new MigrationError(`Could not create a safety backup; upgrade aborted (no changes made): ${e instanceof Error ? e.message : String(e)}`, RECOVERY_GUIDANCE, null);
|
|
7932
|
+
}
|
|
7933
|
+
if (!backupDir) throw new MigrationError("Could not create a safety backup; upgrade aborted (no changes made).", RECOVERY_GUIDANCE, null);
|
|
7934
|
+
log(`Backup: ${backupDir}`);
|
|
7935
|
+
}
|
|
7936
|
+
const applied = [];
|
|
7937
|
+
const notes = [];
|
|
7938
|
+
for (const migration of pendingRelease) {
|
|
7939
|
+
const ctx = {
|
|
7940
|
+
...ctxBase,
|
|
7941
|
+
notes
|
|
7942
|
+
};
|
|
7943
|
+
log(`Migrating release ${releaseFrom ?? "unknown"} → ${migration.version}: ${migration.describe}`);
|
|
7944
|
+
migration.apply(ctx);
|
|
7945
|
+
migration.verify(ctx);
|
|
7946
|
+
applied.push(migration.version);
|
|
7947
|
+
}
|
|
7948
|
+
if (!dryRun) stampReleaseVersion(stashDir, targetVersion);
|
|
7949
|
+
return {
|
|
7950
|
+
migrated: true,
|
|
7951
|
+
from: releaseFrom,
|
|
7952
|
+
to: targetVersion,
|
|
7953
|
+
applied,
|
|
7954
|
+
backupDir,
|
|
7718
7955
|
notes
|
|
7719
7956
|
};
|
|
7720
7957
|
} catch (e) {
|
|
@@ -11419,7 +11656,7 @@ function generateFallbackSystemEnv(state) {
|
|
|
11419
11656
|
"",
|
|
11420
11657
|
"# ── Images ──────────────────────────────────────────────────────────",
|
|
11421
11658
|
`OP_IMAGE_NAMESPACE=${process.env.OP_IMAGE_NAMESPACE ?? "openpalm"}`,
|
|
11422
|
-
|
|
11659
|
+
...Object.entries(buildPlatformImageTagEnv(DEFAULT_IMAGE_TAG)).map(([key, value]) => `${key}=${value}`),
|
|
11423
11660
|
"",
|
|
11424
11661
|
"# ── Layout (on-disk schema version; managed by the migration harness) ──",
|
|
11425
11662
|
`OP_LAYOUT_VERSION=1`,
|
|
@@ -12804,7 +13041,7 @@ function buildAkmEndpoint(provider, baseUrl, suffix) {
|
|
|
12804
13041
|
*/
|
|
12805
13042
|
function writeFileAtomic(path, content, mode) {
|
|
12806
13043
|
const tmp = `${path}.tmp`;
|
|
12807
|
-
writeFileSync(tmp, content, { mode } );
|
|
13044
|
+
writeFileSync(tmp, content, mode !== void 0 ? { mode } : {});
|
|
12808
13045
|
renameSync(tmp, path);
|
|
12809
13046
|
}
|
|
12810
13047
|
//#endregion
|
|
@@ -13343,6 +13580,11 @@ function buildComposeOptions(state) {
|
|
|
13343
13580
|
/** Lifecycle helpers — state factory, apply transitions, compose file list. */
|
|
13344
13581
|
var IMAGE_NAMESPACE_RE = /^[a-z0-9]+(?:[._-][a-z0-9]+)*$/;
|
|
13345
13582
|
var SEMVER_TAG_RE = /^v\d+\.\d+\.\d+(?:[-+][0-9A-Za-z.-]+)?$/;
|
|
13583
|
+
var PLATFORM_IMAGE_NAMES = [
|
|
13584
|
+
"assistant",
|
|
13585
|
+
"guardian",
|
|
13586
|
+
"channel"
|
|
13587
|
+
];
|
|
13346
13588
|
function createState() {
|
|
13347
13589
|
const homeDir = resolveOpenPalmHome();
|
|
13348
13590
|
const configDir = resolveConfigDir();
|
|
@@ -13442,39 +13684,122 @@ function resolveNewestDockerTag(payload) {
|
|
|
13442
13684
|
}
|
|
13443
13685
|
return fallback;
|
|
13444
13686
|
}
|
|
13687
|
+
function resolvePlatformVersionPolicyBaseTag(state) {
|
|
13688
|
+
const configured = parseEnvFile(`${state.stashDir}/env/stack.env`).OP_IMAGE_TAG?.trim();
|
|
13689
|
+
if (isComparableSemver(configured)) return configured;
|
|
13690
|
+
return `v${package_default.version}`;
|
|
13691
|
+
}
|
|
13692
|
+
function resolveNewestDockerTagForCurrentMajor(payload, currentTag) {
|
|
13693
|
+
const results = payload?.results;
|
|
13694
|
+
if (!Array.isArray(results)) return null;
|
|
13695
|
+
let best = null;
|
|
13696
|
+
for (const entry of results) {
|
|
13697
|
+
const name = typeof entry?.name === "string" ? entry.name.trim() : "";
|
|
13698
|
+
if (!isComparableSemver(name) || !isSameMajorVersion(name, currentTag)) continue;
|
|
13699
|
+
if (!best || compareComparableVersions(name, best) > 0) best = name;
|
|
13700
|
+
}
|
|
13701
|
+
return best;
|
|
13702
|
+
}
|
|
13445
13703
|
function resolveImageNamespace(state) {
|
|
13446
13704
|
const namespace = (parseEnvFile(`${state.stashDir}/env/stack.env`).OP_IMAGE_NAMESPACE ?? process.env.OP_IMAGE_NAMESPACE ?? "openpalm").trim().toLowerCase();
|
|
13447
13705
|
if (!IMAGE_NAMESPACE_RE.test(namespace)) throw new Error(`Invalid image namespace in system.env: ${namespace}`);
|
|
13448
13706
|
return namespace;
|
|
13449
13707
|
}
|
|
13708
|
+
function resolveRequiredPlatformImages(state) {
|
|
13709
|
+
const required = new Set(["assistant"]);
|
|
13710
|
+
if (hasEnabledChannel(listEnabledAddonIds(state.homeDir))) {
|
|
13711
|
+
required.add("guardian");
|
|
13712
|
+
required.add("channel");
|
|
13713
|
+
}
|
|
13714
|
+
return PLATFORM_IMAGE_NAMES.filter((name) => required.has(name));
|
|
13715
|
+
}
|
|
13716
|
+
async function isDockerImageTagPublished(namespace, imageName, tag) {
|
|
13717
|
+
let response;
|
|
13718
|
+
try {
|
|
13719
|
+
response = await fetch(`https://registry.hub.docker.com/v2/repositories/${namespace}/${imageName}/tags/${tag}`, { headers: { Accept: "application/json" } });
|
|
13720
|
+
} catch (e) {
|
|
13721
|
+
throw new Error(`Failed to verify Docker image tag ${namespace}/${imageName}:${tag}: ${e instanceof Error ? e.message : String(e)}`);
|
|
13722
|
+
}
|
|
13723
|
+
if (response.status === 404) return false;
|
|
13724
|
+
if (!response.ok) throw new Error(`Docker tag verification failed for ${namespace}/${imageName}:${tag} (${response.status})`);
|
|
13725
|
+
return true;
|
|
13726
|
+
}
|
|
13727
|
+
async function fetchDockerTagsPayload(namespace, imageName) {
|
|
13728
|
+
let response;
|
|
13729
|
+
try {
|
|
13730
|
+
response = await fetch(`https://registry.hub.docker.com/v2/repositories/${namespace}/${imageName}/tags?page_size=25&ordering=last_updated`, { headers: { Accept: "application/json" } });
|
|
13731
|
+
} catch (e) {
|
|
13732
|
+
throw new Error(`Failed to query Docker tags: ${e instanceof Error ? e.message : String(e)}`);
|
|
13733
|
+
}
|
|
13734
|
+
if (!response.ok) throw new Error(`Docker tag lookup failed (${response.status})`);
|
|
13735
|
+
return response.json();
|
|
13736
|
+
}
|
|
13737
|
+
/** Newest comparable semver tag for an image that is <= ceilingTag in the same major. */
|
|
13738
|
+
function resolveNewestDockerTagAtOrBelow(payload, ceilingTag) {
|
|
13739
|
+
const results = payload?.results;
|
|
13740
|
+
if (!Array.isArray(results)) return null;
|
|
13741
|
+
let best = null;
|
|
13742
|
+
for (const entry of results) {
|
|
13743
|
+
const name = typeof entry?.name === "string" ? entry.name.trim() : "";
|
|
13744
|
+
if (!isComparableSemver(name) || !isSameMajorVersion(name, ceilingTag)) continue;
|
|
13745
|
+
if (compareComparableVersions(name, ceilingTag) > 0) continue;
|
|
13746
|
+
if (!best || compareComparableVersions(name, best) > 0) best = name;
|
|
13747
|
+
}
|
|
13748
|
+
return best;
|
|
13749
|
+
}
|
|
13750
|
+
/**
|
|
13751
|
+
* Resolve the per-image tag env for a target platform tag (#477).
|
|
13752
|
+
*
|
|
13753
|
+
* `assistant` is the version-of-record image and must be published at the
|
|
13754
|
+
* platform tag. Guardian/channel may lag: a release that ships only a subset
|
|
13755
|
+
* of images leaves them at an older tag, so each falls back to its newest
|
|
13756
|
+
* published tag <= the platform tag in the same major. Fail closed only when
|
|
13757
|
+
* a REQUIRED image (guardian/channel with a channel addon enabled) has no
|
|
13758
|
+
* usable tag at all.
|
|
13759
|
+
*/
|
|
13760
|
+
async function resolvePlatformImageTags(state, namespace, platformTag) {
|
|
13761
|
+
if (namespace !== "openpalm") return buildPlatformImageTagEnv(platformTag);
|
|
13762
|
+
if (!await isDockerImageTagPublished(namespace, "assistant", platformTag)) throw new Error(`Refusing to update to ${namespace}/assistant:${platformTag}: tag is not published. stack.env was left unchanged.`);
|
|
13763
|
+
const required = new Set(resolveRequiredPlatformImages(state));
|
|
13764
|
+
const perImage = {};
|
|
13765
|
+
for (const imageName of ["guardian", "channel"]) {
|
|
13766
|
+
if (await isDockerImageTagPublished(namespace, imageName, platformTag)) continue;
|
|
13767
|
+
const fallbackTag = resolveNewestDockerTagAtOrBelow(await fetchDockerTagsPayload(namespace, imageName), platformTag);
|
|
13768
|
+
if (fallbackTag) {
|
|
13769
|
+
perImage[`OP_${imageName.toUpperCase()}_IMAGE_TAG`] = fallbackTag;
|
|
13770
|
+
continue;
|
|
13771
|
+
}
|
|
13772
|
+
if (required.has(imageName)) throw new Error(`Refusing to update to ${namespace}/*:${platformTag}: no published tag found for ${imageName} at or below ${platformTag}. This release is incomplete for the enabled services; stack.env was left unchanged.`);
|
|
13773
|
+
}
|
|
13774
|
+
return buildPlatformImageTagEnv(platformTag, perImage);
|
|
13775
|
+
}
|
|
13450
13776
|
/**
|
|
13451
13777
|
* Resolve the newest published platform tag from the Docker registry.
|
|
13452
13778
|
*
|
|
13453
|
-
* `assistant` is the version-of-record image:
|
|
13454
|
-
*
|
|
13455
|
-
*
|
|
13779
|
+
* `assistant` is the version-of-record image: its newest tag is the canonical
|
|
13780
|
+
* platform version. Guardian/channel may lag behind it when a release shipped
|
|
13781
|
+
* only a subset of images — see resolvePlatformImageTags.
|
|
13456
13782
|
*
|
|
13457
13783
|
* Used both to auto-detect during "Update now" and to resolve a requested
|
|
13458
13784
|
* `latest` selection into a concrete release tag before fetching stack assets
|
|
13459
13785
|
* (GitHub has no asset tree at a `latest` ref).
|
|
13460
13786
|
*/
|
|
13461
13787
|
async function resolveLatestPlatformTag(namespace) {
|
|
13462
|
-
|
|
13463
|
-
try {
|
|
13464
|
-
response = await fetch(`https://registry.hub.docker.com/v2/repositories/${namespace}/assistant/tags?page_size=25&ordering=last_updated`, { headers: { Accept: "application/json" } });
|
|
13465
|
-
} catch (e) {
|
|
13466
|
-
throw new Error(`Failed to query Docker tags: ${e instanceof Error ? e.message : String(e)}`);
|
|
13467
|
-
}
|
|
13468
|
-
if (!response.ok) throw new Error(`Docker tag lookup failed (${response.status})`);
|
|
13469
|
-
const latestTag = resolveNewestDockerTag(await response.json());
|
|
13788
|
+
const latestTag = resolveNewestDockerTag(await fetchDockerTagsPayload(namespace, "assistant"));
|
|
13470
13789
|
if (!latestTag) throw new Error("No usable Docker image tag found");
|
|
13471
13790
|
return latestTag;
|
|
13472
13791
|
}
|
|
13473
|
-
async function
|
|
13792
|
+
async function resolveLatestPlatformTagForCurrentMajor(namespace, currentTag) {
|
|
13793
|
+
const latestTag = resolveNewestDockerTagForCurrentMajor(await fetchDockerTagsPayload(namespace, "assistant"), currentTag);
|
|
13794
|
+
if (!latestTag) throw new Error(`No usable Docker image tag found in major ${currentTag.replace(/^v/, "").split(".")[0]}`);
|
|
13795
|
+
return latestTag;
|
|
13796
|
+
}
|
|
13797
|
+
async function updateStackEnvToLatestImageTag(state, resolvedTag) {
|
|
13474
13798
|
const systemEnvPath = `${state.stashDir}/env/stack.env`;
|
|
13475
13799
|
const namespace = resolveImageNamespace(state);
|
|
13476
|
-
const latestTag = await
|
|
13477
|
-
|
|
13800
|
+
const latestTag = resolvedTag ?? await resolveLatestPlatformTagForCurrentMajor(namespace, resolvePlatformVersionPolicyBaseTag(state));
|
|
13801
|
+
const imageTagEnv = await resolvePlatformImageTags(state, namespace, latestTag);
|
|
13802
|
+
writeFileSync(systemEnvPath, mergeEnvContent(existsSync(systemEnvPath) ? readFileSync(systemEnvPath, "utf-8") : "", imageTagEnv, { uncomment: true }));
|
|
13478
13803
|
return {
|
|
13479
13804
|
namespace,
|
|
13480
13805
|
tag: latestTag
|
|
@@ -13494,75 +13819,88 @@ async function applyUpgrade(state, version) {
|
|
|
13494
13819
|
releaseInstallLock(lock);
|
|
13495
13820
|
}
|
|
13496
13821
|
}
|
|
13497
|
-
|
|
13498
|
-
* Full upgrade: resolve latest image tag, refresh assets, pull images,
|
|
13499
|
-
* and recreate containers. Used by both the admin endpoint and CLI.
|
|
13500
|
-
*
|
|
13501
|
-
* Callers handle their own audit logging and admin self-recreation.
|
|
13502
|
-
*/
|
|
13503
|
-
async function performUpgrade(state) {
|
|
13504
|
-
const composeOpts = buildComposeOptions(state);
|
|
13822
|
+
async function withStackEnvRollback(state, run) {
|
|
13505
13823
|
const stackEnvPath = `${state.stashDir}/env/stack.env`;
|
|
13506
13824
|
let originalStackEnv = null;
|
|
13507
13825
|
try {
|
|
13508
13826
|
originalStackEnv = readFileSync(stackEnvPath, "utf-8");
|
|
13509
13827
|
} catch {}
|
|
13510
|
-
let imageTag;
|
|
13511
|
-
let namespace;
|
|
13512
|
-
let upgradeResult;
|
|
13513
13828
|
try {
|
|
13514
|
-
|
|
13515
|
-
imageTag = tagResult.tag;
|
|
13516
|
-
namespace = tagResult.namespace;
|
|
13517
|
-
upgradeResult = await applyUpgrade(state, imageTag);
|
|
13829
|
+
return await run();
|
|
13518
13830
|
} catch (e) {
|
|
13519
13831
|
if (originalStackEnv !== null) try {
|
|
13520
13832
|
writeFileSync(stackEnvPath, originalStackEnv);
|
|
13521
13833
|
} catch {}
|
|
13522
13834
|
throw e;
|
|
13523
13835
|
}
|
|
13524
|
-
|
|
13525
|
-
|
|
13526
|
-
|
|
13527
|
-
|
|
13528
|
-
|
|
13529
|
-
|
|
13530
|
-
|
|
13531
|
-
|
|
13836
|
+
}
|
|
13837
|
+
/**
|
|
13838
|
+
* Full upgrade: resolve latest image tag, refresh assets, pull images,
|
|
13839
|
+
* and recreate containers. Used by both the admin endpoint and CLI.
|
|
13840
|
+
*
|
|
13841
|
+
* Callers handle their own audit logging and admin self-recreation.
|
|
13842
|
+
*/
|
|
13843
|
+
async function performUpgrade(state) {
|
|
13844
|
+
return withStackEnvRollback(state, async () => {
|
|
13845
|
+
const composeOpts = buildComposeOptions(state);
|
|
13846
|
+
const namespace = resolveImageNamespace(state);
|
|
13847
|
+
const imageTag = await resolveLatestPlatformTagForCurrentMajor(namespace, resolvePlatformVersionPolicyBaseTag(state));
|
|
13848
|
+
ensureReleaseMigrated({
|
|
13849
|
+
homeDir: state.homeDir,
|
|
13850
|
+
targetVersion: imageTag
|
|
13851
|
+
});
|
|
13852
|
+
const { tag: confirmedImageTag } = await updateStackEnvToLatestImageTag(state, imageTag);
|
|
13853
|
+
const upgradeResult = await applyUpgrade(state, confirmedImageTag);
|
|
13854
|
+
const pullResult = await composePull(composeOpts);
|
|
13855
|
+
if (!pullResult.ok) throw new Error(`Failed to pull images: ${pullResult.stderr}`);
|
|
13856
|
+
const services = await buildManagedServices(state);
|
|
13857
|
+
const upResult = await composeUp({
|
|
13858
|
+
...composeOpts,
|
|
13859
|
+
services,
|
|
13860
|
+
forceRecreate: true,
|
|
13861
|
+
removeOrphans: true
|
|
13862
|
+
});
|
|
13863
|
+
if (!upResult.ok) throw new Error(`Images pulled but failed to recreate containers: ${upResult.stderr}`);
|
|
13864
|
+
return {
|
|
13865
|
+
imageTag: confirmedImageTag,
|
|
13866
|
+
namespace,
|
|
13867
|
+
backupDir: upgradeResult.backupDir,
|
|
13868
|
+
assetsUpdated: upgradeResult.updated,
|
|
13869
|
+
restarted: upgradeResult.restarted
|
|
13870
|
+
};
|
|
13532
13871
|
});
|
|
13533
|
-
if (!upResult.ok) throw new Error(`Images pulled but failed to recreate containers: ${upResult.stderr}`);
|
|
13534
|
-
return {
|
|
13535
|
-
imageTag,
|
|
13536
|
-
namespace,
|
|
13537
|
-
backupDir: upgradeResult.backupDir,
|
|
13538
|
-
assetsUpdated: upgradeResult.updated,
|
|
13539
|
-
restarted: upgradeResult.restarted
|
|
13540
|
-
};
|
|
13541
13872
|
}
|
|
13542
13873
|
/**
|
|
13543
13874
|
* Set a specific image tag in stack.env then pull images and restart containers.
|
|
13544
13875
|
* Used by the admin "set version" action — skips the auto-detect step in performUpgrade.
|
|
13545
13876
|
*/
|
|
13546
13877
|
async function applyTagChange(state, tag) {
|
|
13547
|
-
|
|
13548
|
-
|
|
13549
|
-
|
|
13550
|
-
|
|
13551
|
-
|
|
13552
|
-
|
|
13553
|
-
|
|
13554
|
-
|
|
13555
|
-
|
|
13556
|
-
|
|
13557
|
-
|
|
13558
|
-
|
|
13559
|
-
|
|
13560
|
-
|
|
13561
|
-
|
|
13562
|
-
|
|
13563
|
-
|
|
13564
|
-
|
|
13565
|
-
|
|
13878
|
+
return withStackEnvRollback(state, async () => {
|
|
13879
|
+
const namespace = resolveImageNamespace(state);
|
|
13880
|
+
const requested = tag.trim();
|
|
13881
|
+
let resolvedTag = requested;
|
|
13882
|
+
if (requested === "" || requested.toLowerCase() === "latest") try {
|
|
13883
|
+
resolvedTag = await resolveLatestPlatformTag(namespace);
|
|
13884
|
+
} catch (e) {
|
|
13885
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
13886
|
+
throw new Error(`Cannot resolve "latest" to a concrete release: ${msg}. Check your network connection or select a specific version.`);
|
|
13887
|
+
}
|
|
13888
|
+
const imageTagEnv = await resolvePlatformImageTags(state, namespace, resolvedTag);
|
|
13889
|
+
ensureReleaseMigrated({
|
|
13890
|
+
homeDir: state.homeDir,
|
|
13891
|
+
targetVersion: resolvedTag
|
|
13892
|
+
});
|
|
13893
|
+
const stackEnvPath = `${state.stashDir}/env/stack.env`;
|
|
13894
|
+
writeFileSync(stackEnvPath, mergeEnvContent(existsSync(stackEnvPath) ? readFileSync(stackEnvPath, "utf-8") : "", imageTagEnv, { uncomment: true }));
|
|
13895
|
+
const upgradeResult = await applyUpgrade(state, resolvedTag);
|
|
13896
|
+
return {
|
|
13897
|
+
imageTag: resolvedTag,
|
|
13898
|
+
namespace,
|
|
13899
|
+
backupDir: upgradeResult.backupDir,
|
|
13900
|
+
assetsUpdated: upgradeResult.updated,
|
|
13901
|
+
restarted: upgradeResult.restarted
|
|
13902
|
+
};
|
|
13903
|
+
});
|
|
13566
13904
|
}
|
|
13567
13905
|
function buildComposeFileList(state) {
|
|
13568
13906
|
return discoverStackOverlays(state.stackDir, state.homeDir);
|
|
@@ -14692,7 +15030,7 @@ async function performSetup(input, opts) {
|
|
|
14692
15030
|
try {
|
|
14693
15031
|
const systemEnvForAkm = existsSync(`${state.stashDir}/env/stack.env`) ? readFileSync(`${state.stashDir}/env/stack.env`, "utf-8") : "";
|
|
14694
15032
|
const akmUpdates = {};
|
|
14695
|
-
akmUpdates
|
|
15033
|
+
Object.assign(akmUpdates, buildPlatformImageTagEnv(imageTag && imageTag.trim() ? imageTag.trim() : DEFAULT_IMAGE_TAG));
|
|
14696
15034
|
if (Object.keys(akmUpdates).length > 0) writeFileAtomic(`${state.stashDir}/env/stack.env`, mergeEnvContent(systemEnvForAkm, akmUpdates), 384);
|
|
14697
15035
|
if (llm || embedding) {
|
|
14698
15036
|
const akmConfigDir = join(state.configDir, "akm");
|
|
@@ -14953,6 +15291,154 @@ function importHostOpenCode(state, options = {}) {
|
|
|
14953
15291
|
conflicts
|
|
14954
15292
|
};
|
|
14955
15293
|
}
|
|
15294
|
+
//#endregion
|
|
15295
|
+
//#region ../lib/src/control-plane/akm-stats.ts
|
|
15296
|
+
function asRecord(value) {
|
|
15297
|
+
return value && typeof value === "object" && !Array.isArray(value) ? value : null;
|
|
15298
|
+
}
|
|
15299
|
+
function asArray(value) {
|
|
15300
|
+
return Array.isArray(value) ? value : [];
|
|
15301
|
+
}
|
|
15302
|
+
function asString(value) {
|
|
15303
|
+
return typeof value === "string" && value.trim() ? value : null;
|
|
15304
|
+
}
|
|
15305
|
+
function asNumber(value) {
|
|
15306
|
+
return typeof value === "number" && Number.isFinite(value) ? value : null;
|
|
15307
|
+
}
|
|
15308
|
+
function asBoolean(value) {
|
|
15309
|
+
return typeof value === "boolean" ? value : null;
|
|
15310
|
+
}
|
|
15311
|
+
function parseJsonObject(stdout) {
|
|
15312
|
+
try {
|
|
15313
|
+
return asRecord(JSON.parse(stdout));
|
|
15314
|
+
} catch {
|
|
15315
|
+
return null;
|
|
15316
|
+
}
|
|
15317
|
+
}
|
|
15318
|
+
function runAkmJsonCommand(state, args, timeoutMs, options = {}) {
|
|
15319
|
+
const akmEnv = buildAkmEnv(state);
|
|
15320
|
+
assertAkmEnvComplete(akmEnv);
|
|
15321
|
+
return new Promise((resolve) => {
|
|
15322
|
+
execFile("akm", [
|
|
15323
|
+
...args,
|
|
15324
|
+
"--format",
|
|
15325
|
+
"json",
|
|
15326
|
+
"--quiet"
|
|
15327
|
+
], {
|
|
15328
|
+
env: {
|
|
15329
|
+
...process.env,
|
|
15330
|
+
...akmEnv
|
|
15331
|
+
},
|
|
15332
|
+
timeout: timeoutMs,
|
|
15333
|
+
maxBuffer: 4 * 1024 * 1024
|
|
15334
|
+
}, (error, stdout, stderr) => {
|
|
15335
|
+
const execError = error;
|
|
15336
|
+
const exitCode = typeof execError?.code === "number" ? execError.code : null;
|
|
15337
|
+
const errorCode = typeof execError?.code === "string" ? execError.code : null;
|
|
15338
|
+
const allowed = exitCode !== null && (options.allowExitCodes ?? []).includes(exitCode);
|
|
15339
|
+
resolve({
|
|
15340
|
+
ok: !error || allowed,
|
|
15341
|
+
stdout: stdout?.toString() ?? "",
|
|
15342
|
+
stderr: stderr?.toString() ?? "",
|
|
15343
|
+
exitCode,
|
|
15344
|
+
errorCode
|
|
15345
|
+
});
|
|
15346
|
+
});
|
|
15347
|
+
});
|
|
15348
|
+
}
|
|
15349
|
+
function readAssetCount(info, type) {
|
|
15350
|
+
if (!info) return null;
|
|
15351
|
+
const candidates = [
|
|
15352
|
+
asRecord(info.assetCounts),
|
|
15353
|
+
asRecord(info.assetTypeCounts),
|
|
15354
|
+
asRecord(info.assetsByType),
|
|
15355
|
+
asRecord(info.counts)
|
|
15356
|
+
];
|
|
15357
|
+
for (const candidate of candidates) {
|
|
15358
|
+
const value = asNumber(candidate?.[type]);
|
|
15359
|
+
if (value !== null) return value;
|
|
15360
|
+
}
|
|
15361
|
+
return null;
|
|
15362
|
+
}
|
|
15363
|
+
function advisoryMessage(value) {
|
|
15364
|
+
if (typeof value === "string" && value.trim()) return value.trim();
|
|
15365
|
+
const record = asRecord(value);
|
|
15366
|
+
if (!record) return null;
|
|
15367
|
+
return asString(record.message) ?? asString(record.name);
|
|
15368
|
+
}
|
|
15369
|
+
function parseAkmStats(healthStdout, infoStdout, proposalsStdout) {
|
|
15370
|
+
const health = parseJsonObject(healthStdout);
|
|
15371
|
+
const info = parseJsonObject(infoStdout);
|
|
15372
|
+
const proposalsPayload = parseJsonObject(proposalsStdout);
|
|
15373
|
+
if (!health && !info) return {
|
|
15374
|
+
available: false,
|
|
15375
|
+
reason: "AKM stats unavailable on this host."
|
|
15376
|
+
};
|
|
15377
|
+
const indexStats = asRecord(info?.indexStats);
|
|
15378
|
+
const improve = asRecord(health?.improve);
|
|
15379
|
+
const reflect = asRecord(improve?.reflect);
|
|
15380
|
+
const consolidation = asRecord(improve?.consolidation);
|
|
15381
|
+
const proposals = asArray(proposalsPayload?.proposals).map((entry) => asRecord(entry)).filter((entry) => entry !== null).map((entry) => ({
|
|
15382
|
+
ref: asString(entry.ref),
|
|
15383
|
+
generator: asString(entry.generator) ?? asString(entry.source),
|
|
15384
|
+
createdAt: asString(entry.createdAt),
|
|
15385
|
+
status: asString(entry.status)
|
|
15386
|
+
}));
|
|
15387
|
+
const rawStatus = asString(health?.status)?.toLowerCase();
|
|
15388
|
+
const status = rawStatus === "pass" || rawStatus === "ok" ? "pass" : rawStatus === "warn" ? "warn" : "unknown";
|
|
15389
|
+
return {
|
|
15390
|
+
available: true,
|
|
15391
|
+
version: asString(info?.version),
|
|
15392
|
+
health: {
|
|
15393
|
+
status,
|
|
15394
|
+
advisories: asArray(health?.advisories).map((entry) => advisoryMessage(entry)).filter((entry) => entry !== null)
|
|
15395
|
+
},
|
|
15396
|
+
index: {
|
|
15397
|
+
entryCount: asNumber(indexStats?.entryCount),
|
|
15398
|
+
lastBuiltAt: asString(indexStats?.lastBuiltAt),
|
|
15399
|
+
hasEmbeddings: asBoolean(indexStats?.hasEmbeddings),
|
|
15400
|
+
vecAvailable: asBoolean(indexStats?.vecAvailable)
|
|
15401
|
+
},
|
|
15402
|
+
assetCounts: {
|
|
15403
|
+
memory: readAssetCount(info, "memory"),
|
|
15404
|
+
skill: readAssetCount(info, "skill"),
|
|
15405
|
+
lesson: readAssetCount(info, "lesson")
|
|
15406
|
+
},
|
|
15407
|
+
improve: {
|
|
15408
|
+
invoked: asNumber(improve?.invoked),
|
|
15409
|
+
completed: asNumber(improve?.completed),
|
|
15410
|
+
skipped: asNumber(improve?.skipped),
|
|
15411
|
+
reflectOk: asNumber(reflect?.ok),
|
|
15412
|
+
reflectCooldown: asNumber(reflect?.cooldown),
|
|
15413
|
+
consolidation: {
|
|
15414
|
+
promoted: asNumber(consolidation?.promoted),
|
|
15415
|
+
merged: asNumber(consolidation?.merged),
|
|
15416
|
+
deleted: asNumber(consolidation?.deleted)
|
|
15417
|
+
}
|
|
15418
|
+
},
|
|
15419
|
+
proposals: {
|
|
15420
|
+
pending: proposals.length,
|
|
15421
|
+
items: proposals
|
|
15422
|
+
}
|
|
15423
|
+
};
|
|
15424
|
+
}
|
|
15425
|
+
async function getAkmStats(state) {
|
|
15426
|
+
const [healthResult, infoResult, proposalsResult] = await Promise.all([
|
|
15427
|
+
runAkmJsonCommand(state, ["health"], 8e3, { allowExitCodes: [4] }),
|
|
15428
|
+
runAkmJsonCommand(state, ["info"], 8e3),
|
|
15429
|
+
runAkmJsonCommand(state, [
|
|
15430
|
+
"proposal",
|
|
15431
|
+
"list",
|
|
15432
|
+
"--status",
|
|
15433
|
+
"pending"
|
|
15434
|
+
], 12e3)
|
|
15435
|
+
]);
|
|
15436
|
+
if (healthResult.errorCode === "ENOENT" || infoResult.errorCode === "ENOENT") return {
|
|
15437
|
+
available: false,
|
|
15438
|
+
reason: "The akm CLI is not installed on this host."
|
|
15439
|
+
};
|
|
15440
|
+
return parseAkmStats(healthResult.stdout, infoResult.stdout, proposalsResult.stdout);
|
|
15441
|
+
}
|
|
14956
15442
|
|
|
14957
|
-
export {
|
|
14958
|
-
//# sourceMappingURL=src-
|
|
15443
|
+
export { getHostAkmSharingStatus as $, AKM_USER_ENV_REF as A, createOpenCodeClient as B, CORE_SERVICES as C, createState as D, deleteUserEnvKey as E, detectExistingProject as F, detectGpu as G, detectHostOpenCode as H, detectLocalProviders as I, disableHostAkmSharing as J, enableHostAkmSharing as K, ensureAkmUserEnv as L, MigrationError as M, ensureHomeDirs as N, ensureMigrated as O, PROVIDER_KEY_MAP as P, ensureOpenCodeConfig as Q, ensureOpenCodeSystemConfig as R, ensureSecrets as S, executeAutomation as T, fetchProviderModels as U, getAddonProfileAvailability as V, getAddonProfileSelection as W, getAddonProfiles as X, getAddonServiceNames as Y, getAkmStats as Z, getDockerEvents as _, addonProfileId as a, getRegistryAddonConfig as a0, hostAkmStashPath as a1, importHostOpenCode as a2, isAllowedService as a3, isHostAkmAvailable as a4, isSetupComplete as a5, listAvailableAddonIds as a6, listEnabledAddonIds as a7, listSecretFiles as a8, loadAutomations as a9, writeFileAtomic as aA, writeRuntimeFiles as aB, writeSecretFile as aC, writeStackSecretEnv as aD, writeTaskFile as aE, writeUserEnvKey as aF, writeVoiceVars as aG, lookupEmbeddingDims as aa, parseComposeStderr as ab, parseEnvFile as ac, patchSecretsEnvFile as ad, performSetup as ae, performUpgrade as af, readAutomationLogs as ag, readSecret as ah, readSecretFile as ai, readStackEnv as aj, readStackRuntimeEnv as ak, readStackSecretEnv as al, readTaskFile as am, readUserEnvFile as an, recommendSetup as ao, removeSecretFile as ap, removeTaskFile as aq, resolveComposeProjectName as ar, resolveDataDir as as, resolveRuntimeFiles as at, resolveStackDir as au, seedUiBuild as av, setAddonEnabled as aw, setAddonProfileSelection as ax, summarizeComposeStderr as ay, validateProposedState as az, annotateAddonProfileAvailability as b, applyInstall as c, applyTagChange as d, applyUninstall as e, applyUpdate as f, assertSafeSecretFilename as g, assertSafeTaskFilename as h, authJsonPath as i, buildAkmEndpoint as j, buildAkmEnv as k, buildComposeOptions as l, buildManagedServices as m, checkDocker as n, checkDockerCompose as o, composeDown as p, composeLogs as q, composePreflight as r, composePs as s, composePull as t, composeRestart as u, composeStart as v, composeStats as w, composeStop as x, composeUp as y, createLogger as z };
|
|
15444
|
+
//# sourceMappingURL=src-efp8mb8-.js.map
|