@openpalm/ui 0.12.0-rc.2 → 0.12.0-rc.3
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.4BLkUSeP.css +1 -0
- package/build/client/_app/immutable/assets/4.4BLkUSeP.css.br +0 -0
- package/build/client/_app/immutable/assets/4.4BLkUSeP.css.gz +0 -0
- package/build/client/_app/immutable/chunks/{DOWJsT_T.js → 37oeDbOM.js} +1 -1
- package/build/client/_app/immutable/chunks/37oeDbOM.js.br +0 -0
- package/build/client/_app/immutable/chunks/{DOWJsT_T.js.gz → 37oeDbOM.js.gz} +0 -0
- package/build/client/_app/immutable/chunks/{DHRKaBFV.js → BMMTxmQF.js} +2 -2
- package/build/client/_app/immutable/chunks/BMMTxmQF.js.br +0 -0
- package/build/client/_app/immutable/chunks/BMMTxmQF.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D7U2TZGX.js +5 -0
- package/build/client/_app/immutable/chunks/D7U2TZGX.js.br +0 -0
- package/build/client/_app/immutable/chunks/D7U2TZGX.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{BEuC-NYT.js → DhPCzSpa.js} +1 -1
- package/build/client/_app/immutable/chunks/DhPCzSpa.js.br +0 -0
- package/build/client/_app/immutable/chunks/DhPCzSpa.js.gz +0 -0
- package/build/client/_app/immutable/chunks/HlgKB0Yv.js +1 -0
- package/build/client/_app/immutable/chunks/HlgKB0Yv.js.br +2 -0
- package/build/client/_app/immutable/chunks/HlgKB0Yv.js.gz +0 -0
- package/build/client/_app/immutable/chunks/qjfxE7Kl.js +1 -0
- package/build/client/_app/immutable/chunks/qjfxE7Kl.js.br +0 -0
- package/build/client/_app/immutable/chunks/qjfxE7Kl.js.gz +0 -0
- package/build/client/_app/immutable/entry/{app.Dgd8Sqiz.js → app.D_h1885H.js} +2 -2
- package/build/client/_app/immutable/entry/app.D_h1885H.js.br +0 -0
- package/build/client/_app/immutable/entry/app.D_h1885H.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.KkDWne9K.js +1 -0
- package/build/client/_app/immutable/entry/start.KkDWne9K.js.br +0 -0
- package/build/client/_app/immutable/entry/start.KkDWne9K.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{0.DEcud9DA.js → 0.CoKytf3n.js} +1 -1
- package/build/client/_app/immutable/nodes/0.CoKytf3n.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.CoKytf3n.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{1.DiTVmAJ4.js → 1.m2br4sx_.js} +1 -1
- package/build/client/_app/immutable/nodes/1.m2br4sx_.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.m2br4sx_.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.C6POwnGO.js +130 -0
- package/build/client/_app/immutable/nodes/4.C6POwnGO.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.C6POwnGO.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{5.WMP0f8pf.js → 5.BoZ0ezyr.js} +2 -2
- package/build/client/_app/immutable/nodes/5.BoZ0ezyr.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.BoZ0ezyr.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{6.9o6Bephx.js → 6.D3HpNODC.js} +1 -1
- package/build/client/_app/immutable/nodes/6.D3HpNODC.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.D3HpNODC.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{7._N3I_xWy.js → 7.Cldb-l42.js} +1 -1
- package/build/client/_app/immutable/nodes/7.Cldb-l42.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.Cldb-l42.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{8.aWZ5mSKB.js → 8.BWkb2W3i.js} +1 -1
- package/build/client/_app/immutable/nodes/8.BWkb2W3i.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.BWkb2W3i.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-u2E6UMPO.js → 0-_Ek7fSWr.js} +3 -3
- package/build/server/chunks/{0-u2E6UMPO.js.map → 0-_Ek7fSWr.js.map} +1 -1
- package/build/server/chunks/1-CvpyJciZ.js +9 -0
- package/build/server/chunks/{1-BdcHiFUZ.js.map → 1-CvpyJciZ.js.map} +1 -1
- package/build/server/chunks/{10-DMi_4x3S.js → 10-CX8_71GH.js} +4 -4
- package/build/server/chunks/{10-DMi_4x3S.js.map → 10-CX8_71GH.js.map} +1 -1
- package/build/server/chunks/4-CGNm9qY9.js +9 -0
- package/build/server/chunks/{4-siztlnPA.js.map → 4-CGNm9qY9.js.map} +1 -1
- package/build/server/chunks/5-CCrG3Zq1.js +9 -0
- package/build/server/chunks/{5-DR1iBcbj.js.map → 5-CCrG3Zq1.js.map} +1 -1
- package/build/server/chunks/6-CJd5ozaP.js +9 -0
- package/build/server/chunks/{6-BdZadUUO.js.map → 6-CJd5ozaP.js.map} +1 -1
- package/build/server/chunks/7-Bh7s1hZ3.js +9 -0
- package/build/server/chunks/{7-CjmZOzkF.js.map → 7-Bh7s1hZ3.js.map} +1 -1
- package/build/server/chunks/{8-DVpEHTHq.js → 8-CbIypXYv.js} +3 -3
- package/build/server/chunks/{8-DVpEHTHq.js.map → 8-CbIypXYv.js.map} +1 -1
- package/build/server/chunks/{ChatMessage-BNxQgrRW.js → ChatMessage-BAWjgbc_.js} +2 -2
- package/build/server/chunks/{ChatMessage-BNxQgrRW.js.map → ChatMessage-BAWjgbc_.js.map} +1 -1
- package/build/server/chunks/{Navbar-UVOusnw-.js → Navbar-Bdk7TDAb.js} +4 -4
- package/build/server/chunks/{Navbar-UVOusnw-.js.map → Navbar-Bdk7TDAb.js.map} +1 -1
- package/build/server/chunks/{_layout.svelte-DKvvz-xQ.js → _layout.svelte-CFKjimed.js} +2 -2
- package/build/server/chunks/{_layout.svelte-DKvvz-xQ.js.map → _layout.svelte-CFKjimed.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-B7FQDg28.js → _page.svelte-2gtLQdWF.js} +6 -6
- package/build/server/chunks/{_page.svelte-B7FQDg28.js.map → _page.svelte-2gtLQdWF.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-B5xh8SJ5.js → _page.svelte-CUeuGP5U.js} +7 -7
- package/build/server/chunks/{_page.svelte-B5xh8SJ5.js.map → _page.svelte-CUeuGP5U.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-D4Zivreu.js → _page.svelte-Cjok9-7E.js} +3 -3
- package/build/server/chunks/{_page.svelte-D4Zivreu.js.map → _page.svelte-Cjok9-7E.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-CMyq-t3Q.js → _page.svelte-F2VqpLAW.js} +185 -32
- package/build/server/chunks/_page.svelte-F2VqpLAW.js.map +1 -0
- package/build/server/chunks/{_page.svelte-w4SS3sVN.js → _page.svelte-bfGTUogD.js} +6 -6
- package/build/server/chunks/{_page.svelte-w4SS3sVN.js.map → _page.svelte-bfGTUogD.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CTKPnd64.js → _server.ts-0fJZ0VmG.js} +7 -7
- package/build/server/chunks/{_server.ts-CTKPnd64.js.map → _server.ts-0fJZ0VmG.js.map} +1 -1
- package/build/server/chunks/{_server.ts-B25xvhiX.js → _server.ts-2jjEL-tJ.js} +5 -5
- package/build/server/chunks/{_server.ts-B25xvhiX.js.map → _server.ts-2jjEL-tJ.js.map} +1 -1
- package/build/server/chunks/{_server.ts-bClum6wa.js → _server.ts-2qYNEWJW.js} +5 -5
- package/build/server/chunks/{_server.ts-bClum6wa.js.map → _server.ts-2qYNEWJW.js.map} +1 -1
- package/build/server/chunks/{_server.ts-D2tkCP8q.js → _server.ts-44XLCjje.js} +5 -5
- package/build/server/chunks/{_server.ts-D2tkCP8q.js.map → _server.ts-44XLCjje.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BaTXv_bR.js → _server.ts-5x4EV4ZH.js} +5 -5
- package/build/server/chunks/{_server.ts-BaTXv_bR.js.map → _server.ts-5x4EV4ZH.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Ts6pcZ0d.js → _server.ts-70mUxM22.js} +5 -5
- package/build/server/chunks/{_server.ts-Ts6pcZ0d.js.map → _server.ts-70mUxM22.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DPw4QRWb.js → _server.ts-7YO0AJyT.js} +5 -5
- package/build/server/chunks/{_server.ts-DPw4QRWb.js.map → _server.ts-7YO0AJyT.js.map} +1 -1
- package/build/server/chunks/_server.ts-B0cdV0wH.js +89 -0
- package/build/server/chunks/_server.ts-B0cdV0wH.js.map +1 -0
- package/build/server/chunks/{_server.ts-BCKweCGM.js → _server.ts-B0f-lyzD.js} +4 -4
- package/build/server/chunks/{_server.ts-BCKweCGM.js.map → _server.ts-B0f-lyzD.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DFhNnn-G.js → _server.ts-B8ExhGgO.js} +5 -5
- package/build/server/chunks/{_server.ts-DFhNnn-G.js.map → _server.ts-B8ExhGgO.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Dv7xll_B.js → _server.ts-B8l8YmXh.js} +6 -6
- package/build/server/chunks/{_server.ts-Dv7xll_B.js.map → _server.ts-B8l8YmXh.js.map} +1 -1
- package/build/server/chunks/{_server.ts-B4WEAp6B.js → _server.ts-BBHICsQa.js} +18 -6
- package/build/server/chunks/_server.ts-BBHICsQa.js.map +1 -0
- package/build/server/chunks/{_server.ts-DjJu23jV.js → _server.ts-BFfdVNpH.js} +5 -5
- package/build/server/chunks/{_server.ts-DjJu23jV.js.map → _server.ts-BFfdVNpH.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BR_JejQG.js → _server.ts-BI0oEp2m.js} +5 -5
- package/build/server/chunks/{_server.ts-BR_JejQG.js.map → _server.ts-BI0oEp2m.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Bf3mh1Vw.js → _server.ts-BJPmYqJQ.js} +5 -5
- package/build/server/chunks/{_server.ts-Bf3mh1Vw.js.map → _server.ts-BJPmYqJQ.js.map} +1 -1
- package/build/server/chunks/{_server.ts-MJdHZvPF.js → _server.ts-BLqWydCg.js} +5 -5
- package/build/server/chunks/_server.ts-BLqWydCg.js.map +1 -0
- package/build/server/chunks/{_server.ts-BFp9Fobi.js → _server.ts-BPEwLxUz.js} +4 -4
- package/build/server/chunks/{_server.ts-BFp9Fobi.js.map → _server.ts-BPEwLxUz.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BiwKKu1y.js → _server.ts-BQSuiMBy.js} +5 -5
- package/build/server/chunks/{_server.ts-BiwKKu1y.js.map → _server.ts-BQSuiMBy.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BdN5NtL4.js → _server.ts-BRzEk9EI.js} +5 -5
- package/build/server/chunks/{_server.ts-BdN5NtL4.js.map → _server.ts-BRzEk9EI.js.map} +1 -1
- package/build/server/chunks/{_server.ts-zUZknmZx.js → _server.ts-BTw50Sge.js} +6 -6
- package/build/server/chunks/{_server.ts-zUZknmZx.js.map → _server.ts-BTw50Sge.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CfAx4ndA.js → _server.ts-BVLeyPrV.js} +5 -5
- package/build/server/chunks/{_server.ts-CfAx4ndA.js.map → _server.ts-BVLeyPrV.js.map} +1 -1
- package/build/server/chunks/{_server.ts-RagJb3I4.js → _server.ts-Ba3Y8mZb.js} +5 -5
- package/build/server/chunks/{_server.ts-RagJb3I4.js.map → _server.ts-Ba3Y8mZb.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DMTF4KjV.js → _server.ts-BbXRF71R.js} +2 -2
- package/build/server/chunks/{_server.ts-DMTF4KjV.js.map → _server.ts-BbXRF71R.js.map} +1 -1
- package/build/server/chunks/{_server.ts-4Pwhm5iv.js → _server.ts-BgZqc9BJ.js} +5 -5
- package/build/server/chunks/{_server.ts-4Pwhm5iv.js.map → _server.ts-BgZqc9BJ.js.map} +1 -1
- package/build/server/chunks/{_server.ts-9zKJx2eV.js → _server.ts-BkgABCm4.js} +5 -5
- package/build/server/chunks/{_server.ts-9zKJx2eV.js.map → _server.ts-BkgABCm4.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Cs7f-gaR.js → _server.ts-BqNV9SKY.js} +6 -6
- package/build/server/chunks/{_server.ts-Cs7f-gaR.js.map → _server.ts-BqNV9SKY.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BkxwpAv2.js → _server.ts-Br8Q79vg.js} +5 -5
- package/build/server/chunks/{_server.ts-BkxwpAv2.js.map → _server.ts-Br8Q79vg.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DRpXmKSI.js → _server.ts-BsCi8U0T.js} +6 -6
- package/build/server/chunks/{_server.ts-DRpXmKSI.js.map → _server.ts-BsCi8U0T.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BHIqLHCr.js → _server.ts-BtzqRqdc.js} +2 -2
- package/build/server/chunks/{_server.ts-BHIqLHCr.js.map → _server.ts-BtzqRqdc.js.map} +1 -1
- package/build/server/chunks/{_server.ts-D5WwDggN.js → _server.ts-BuvcU_rd.js} +5 -5
- package/build/server/chunks/{_server.ts-D5WwDggN.js.map → _server.ts-BuvcU_rd.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CzTX8a_p.js → _server.ts-BvYQG4dt.js} +5 -5
- package/build/server/chunks/{_server.ts-CzTX8a_p.js.map → _server.ts-BvYQG4dt.js.map} +1 -1
- package/build/server/chunks/{_server.ts-B1Ka3iiX.js → _server.ts-Bvv8P8O9.js} +6 -6
- package/build/server/chunks/{_server.ts-B1Ka3iiX.js.map → _server.ts-Bvv8P8O9.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BEgkYvNh.js → _server.ts-ByNLf-MM.js} +5 -5
- package/build/server/chunks/{_server.ts-BEgkYvNh.js.map → _server.ts-ByNLf-MM.js.map} +1 -1
- package/build/server/chunks/{_server.ts-C3ic1HZf.js → _server.ts-C1P---qO.js} +5 -5
- package/build/server/chunks/{_server.ts-C3ic1HZf.js.map → _server.ts-C1P---qO.js.map} +1 -1
- package/build/server/chunks/_server.ts-C6_HX3EG.js +81 -0
- package/build/server/chunks/_server.ts-C6_HX3EG.js.map +1 -0
- package/build/server/chunks/{_server.ts-5cUQFkT_.js → _server.ts-CGk9ZLGa.js} +2 -2
- package/build/server/chunks/{_server.ts-5cUQFkT_.js.map → _server.ts-CGk9ZLGa.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DEV3GiN8.js → _server.ts-CIoiPQyf.js} +5 -5
- package/build/server/chunks/{_server.ts-DEV3GiN8.js.map → _server.ts-CIoiPQyf.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Djimbzpw.js → _server.ts-CRzIDkX8.js} +7 -7
- package/build/server/chunks/{_server.ts-Djimbzpw.js.map → _server.ts-CRzIDkX8.js.map} +1 -1
- package/build/server/chunks/{_server.ts-C_c_15ac.js → _server.ts-CSZ5Wh6G.js} +5 -5
- package/build/server/chunks/{_server.ts-C_c_15ac.js.map → _server.ts-CSZ5Wh6G.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CZ9rxA09.js → _server.ts-CT1eXDu-.js} +5 -5
- package/build/server/chunks/{_server.ts-CZ9rxA09.js.map → _server.ts-CT1eXDu-.js.map} +1 -1
- package/build/server/chunks/{_server.ts-op5C3XGb.js → _server.ts-CUuJlm00.js} +6 -6
- package/build/server/chunks/{_server.ts-op5C3XGb.js.map → _server.ts-CUuJlm00.js.map} +1 -1
- package/build/server/chunks/{_server.ts-748DtXrC.js → _server.ts-CZ-DRZvp.js} +5 -5
- package/build/server/chunks/{_server.ts-748DtXrC.js.map → _server.ts-CZ-DRZvp.js.map} +1 -1
- package/build/server/chunks/{_server.ts-MORzCMU7.js → _server.ts-Cc3N9css.js} +5 -5
- package/build/server/chunks/{_server.ts-MORzCMU7.js.map → _server.ts-Cc3N9css.js.map} +1 -1
- package/build/server/chunks/{_server.ts-D4B9IkKh.js → _server.ts-Cf65eLqq.js} +5 -5
- package/build/server/chunks/{_server.ts-D4B9IkKh.js.map → _server.ts-Cf65eLqq.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CDLW9TPG.js → _server.ts-Cg6XEPy2.js} +6 -6
- package/build/server/chunks/{_server.ts-CDLW9TPG.js.map → _server.ts-Cg6XEPy2.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Cc-c2ehY.js → _server.ts-CnP0tOCJ.js} +5 -5
- package/build/server/chunks/{_server.ts-Cc-c2ehY.js.map → _server.ts-CnP0tOCJ.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Dr6ShsbQ.js → _server.ts-CrJINkX_.js} +5 -5
- package/build/server/chunks/{_server.ts-Dr6ShsbQ.js.map → _server.ts-CrJINkX_.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BMeLIoiB.js → _server.ts-Crjjd765.js} +6 -6
- package/build/server/chunks/{_server.ts-BMeLIoiB.js.map → _server.ts-Crjjd765.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Dpk6ddyU.js → _server.ts-Cv8ofBVh.js} +7 -7
- package/build/server/chunks/{_server.ts-Dpk6ddyU.js.map → _server.ts-Cv8ofBVh.js.map} +1 -1
- package/build/server/chunks/{_server.ts-C9E9tYAO.js → _server.ts-CvjW0prw.js} +5 -5
- package/build/server/chunks/{_server.ts-C9E9tYAO.js.map → _server.ts-CvjW0prw.js.map} +1 -1
- package/build/server/chunks/{_server.ts-B2kJ3mfg.js → _server.ts-CzJEYcNT.js} +7 -7
- package/build/server/chunks/{_server.ts-B2kJ3mfg.js.map → _server.ts-CzJEYcNT.js.map} +1 -1
- package/build/server/chunks/{_server.ts-QdyZiBuA.js → _server.ts-CzxUP04Y.js} +5 -5
- package/build/server/chunks/{_server.ts-QdyZiBuA.js.map → _server.ts-CzxUP04Y.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CILn0WEi.js → _server.ts-D01NZcYW.js} +5 -5
- package/build/server/chunks/{_server.ts-CILn0WEi.js.map → _server.ts-D01NZcYW.js.map} +1 -1
- package/build/server/chunks/_server.ts-D1AbREnq.js +78 -0
- package/build/server/chunks/_server.ts-D1AbREnq.js.map +1 -0
- package/build/server/chunks/{_server.ts-Cwuo2EyS.js → _server.ts-D7Jx0nis.js} +5 -5
- package/build/server/chunks/{_server.ts-Cwuo2EyS.js.map → _server.ts-D7Jx0nis.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Byc_SyKx.js → _server.ts-D81qWfpG.js} +5 -5
- package/build/server/chunks/{_server.ts-Byc_SyKx.js.map → _server.ts-D81qWfpG.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DT8fIE9B.js → _server.ts-D8cTdweQ.js} +5 -5
- package/build/server/chunks/{_server.ts-DT8fIE9B.js.map → _server.ts-D8cTdweQ.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CN8iu9En.js → _server.ts-DAyVdLae.js} +5 -5
- package/build/server/chunks/{_server.ts-CN8iu9En.js.map → _server.ts-DAyVdLae.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DY4maxIB.js → _server.ts-DG6X2pCM.js} +6 -6
- package/build/server/chunks/{_server.ts-DY4maxIB.js.map → _server.ts-DG6X2pCM.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CxWx02dy.js → _server.ts-DIot9Cws.js} +5 -5
- package/build/server/chunks/_server.ts-DIot9Cws.js.map +1 -0
- package/build/server/chunks/{_server.ts-BSxbdNXo.js → _server.ts-DLN16A-H.js} +5 -5
- package/build/server/chunks/{_server.ts-BSxbdNXo.js.map → _server.ts-DLN16A-H.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DQP6uEx5.js → _server.ts-DNnk_Zxf.js} +5 -5
- package/build/server/chunks/{_server.ts-DQP6uEx5.js.map → _server.ts-DNnk_Zxf.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Cscu5y6A.js → _server.ts-DRtWVz82.js} +6 -6
- package/build/server/chunks/{_server.ts-Cscu5y6A.js.map → _server.ts-DRtWVz82.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CCtCwyZb.js → _server.ts-DWLgZ0Yv.js} +6 -6
- package/build/server/chunks/{_server.ts-CCtCwyZb.js.map → _server.ts-DWLgZ0Yv.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CgPqNf7-.js → _server.ts-DWWvdqIf.js} +5 -5
- package/build/server/chunks/{_server.ts-CgPqNf7-.js.map → _server.ts-DWWvdqIf.js.map} +1 -1
- package/build/server/chunks/{_server.ts-6sLoCHl6.js → _server.ts-DeYTt0bJ.js} +5 -5
- package/build/server/chunks/{_server.ts-6sLoCHl6.js.map → _server.ts-DeYTt0bJ.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BhzFTv-h.js → _server.ts-DmJBOTT2.js} +6 -6
- package/build/server/chunks/{_server.ts-BhzFTv-h.js.map → _server.ts-DmJBOTT2.js.map} +1 -1
- package/build/server/chunks/{_server.ts-JPsLUf_g.js → _server.ts-DrOOY95Q.js} +5 -5
- package/build/server/chunks/{_server.ts-JPsLUf_g.js.map → _server.ts-DrOOY95Q.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CSN60plL.js → _server.ts-DtH3KC6o.js} +2 -2
- package/build/server/chunks/{_server.ts-CSN60plL.js.map → _server.ts-DtH3KC6o.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DPpj-ZUv.js → _server.ts-DwkMC38U.js} +5 -5
- package/build/server/chunks/{_server.ts-DPpj-ZUv.js.map → _server.ts-DwkMC38U.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DE_dFybU.js → _server.ts-DxG52eeA.js} +7 -7
- package/build/server/chunks/{_server.ts-DE_dFybU.js.map → _server.ts-DxG52eeA.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CCEnPIKA.js → _server.ts-Dxuqlt4R.js} +5 -5
- package/build/server/chunks/{_server.ts-CCEnPIKA.js.map → _server.ts-Dxuqlt4R.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DsbN7dr7.js → _server.ts-DyCjXY9f.js} +5 -5
- package/build/server/chunks/{_server.ts-DsbN7dr7.js.map → _server.ts-DyCjXY9f.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Ieve8Oxl.js → _server.ts-FfM2gx8M.js} +8 -8
- package/build/server/chunks/{_server.ts-Ieve8Oxl.js.map → _server.ts-FfM2gx8M.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CMytohFo.js → _server.ts-FgmSApxO.js} +5 -5
- package/build/server/chunks/{_server.ts-CMytohFo.js.map → _server.ts-FgmSApxO.js.map} +1 -1
- package/build/server/chunks/{_server.ts-gLH0uvQH.js → _server.ts-LoYAi4N3.js} +6 -6
- package/build/server/chunks/{_server.ts-gLH0uvQH.js.map → _server.ts-LoYAi4N3.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BXOIslIH.js → _server.ts-UX21CkDV.js} +5 -5
- package/build/server/chunks/{_server.ts-BXOIslIH.js.map → _server.ts-UX21CkDV.js.map} +1 -1
- package/build/server/chunks/{_server.ts-lmfAKx6b.js → _server.ts-bY2IL1Nj.js} +7 -7
- package/build/server/chunks/{_server.ts-lmfAKx6b.js.map → _server.ts-bY2IL1Nj.js.map} +1 -1
- package/build/server/chunks/_server.ts-fMGCvAmz.js +64 -0
- package/build/server/chunks/_server.ts-fMGCvAmz.js.map +1 -0
- package/build/server/chunks/{_server.ts-CV30eOSb.js → _server.ts-jmKRuOrt.js} +6 -6
- package/build/server/chunks/{_server.ts-CV30eOSb.js.map → _server.ts-jmKRuOrt.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DAv3C7oW.js → _server.ts-nxWIvPny.js} +5 -5
- package/build/server/chunks/{_server.ts-DAv3C7oW.js.map → _server.ts-nxWIvPny.js.map} +1 -1
- package/build/server/chunks/{_server.ts-VuZwBycD.js → _server.ts-plme8zrC.js} +5 -5
- package/build/server/chunks/{_server.ts-VuZwBycD.js.map → _server.ts-plme8zrC.js.map} +1 -1
- package/build/server/chunks/{_server.ts-B_du9gRB.js → _server.ts-sTPNb2pN.js} +5 -5
- package/build/server/chunks/{_server.ts-B_du9gRB.js.map → _server.ts-sTPNb2pN.js.map} +1 -1
- package/build/server/chunks/{_server.ts-B7Fkprd8.js → _server.ts-t27XF1J7.js} +2 -2
- package/build/server/chunks/{_server.ts-B7Fkprd8.js.map → _server.ts-t27XF1J7.js.map} +1 -1
- package/build/server/chunks/{addon-helpers-CoPzjA3s.js → addon-helpers-DY4O9SZB.js} +3 -3
- package/build/server/chunks/{addon-helpers-CoPzjA3s.js.map → addon-helpers-DY4O9SZB.js.map} +1 -1
- package/build/server/chunks/{akm-BS59M7h3.js → akm-BSih7eOh.js} +2 -2
- package/build/server/chunks/{akm-BS59M7h3.js.map → akm-BSih7eOh.js.map} +1 -1
- package/build/server/chunks/{catalog-DAQWike4.js → catalog-DyHJ6nBW.js} +5 -5
- package/build/server/chunks/{catalog-DAQWike4.js.map → catalog-DyHJ6nBW.js.map} +1 -1
- package/build/server/chunks/{client-B3vN-Uvc.js → client-CnOg1BpV.js} +2 -2
- package/build/server/chunks/{client-B3vN-Uvc.js.map → client-CnOg1BpV.js.map} +1 -1
- package/build/server/chunks/{config-Bdb4ZTos.js → config-BVnL1-S6.js} +2 -2
- package/build/server/chunks/{config-Bdb4ZTos.js.map → config-BVnL1-S6.js.map} +1 -1
- package/build/server/chunks/{docker-DaU_SNhi.js → docker-QQYBC8du.js} +2 -2
- package/build/server/chunks/{docker-DaU_SNhi.js.map → docker-QQYBC8du.js.map} +1 -1
- package/build/server/chunks/{endpoints-1byh0xs8.js → endpoints-BOzm3TR9.js} +2 -2
- package/build/server/chunks/{endpoints-1byh0xs8.js.map → endpoints-BOzm3TR9.js.map} +1 -1
- package/build/server/chunks/{environment-BQh6a8iU.js → environment-DevEAj_M.js} +2 -2
- package/build/server/chunks/{environment-BQh6a8iU.js.map → environment-DevEAj_M.js.map} +1 -1
- package/build/server/chunks/{error.svelte-CEj0_dRA.js → error.svelte-OEdYqdGu.js} +4 -4
- package/build/server/chunks/{error.svelte-CEj0_dRA.js.map → error.svelte-OEdYqdGu.js.map} +1 -1
- package/build/server/chunks/{helpers-Be-wOei2.js → helpers-lf-w8dFi.js} +3 -3
- package/build/server/chunks/{helpers-Be-wOei2.js.map → helpers-lf-w8dFi.js.map} +1 -1
- package/build/server/chunks/{hooks.server-DlA1ck_e.js → hooks.server-yeur1GCR.js} +6 -6
- package/build/server/chunks/{hooks.server-DlA1ck_e.js.map → hooks.server-yeur1GCR.js.map} +1 -1
- package/build/server/chunks/{http-BbFgukqs.js → http-Bv92EpMx.js} +2 -2
- package/build/server/chunks/{http-BbFgukqs.js.map → http-Bv92EpMx.js.map} +1 -1
- package/build/server/chunks/{internal-CP-qQJfY.js → internal-CQdgWpT6.js} +3 -3
- package/build/server/chunks/{internal-CP-qQJfY.js.map → internal-CQdgWpT6.js.map} +1 -1
- package/build/server/chunks/{session-cookie-C-kIy9pI.js → session-cookie-DhA3swUc.js} +2 -2
- package/build/server/chunks/{session-cookie-C-kIy9pI.js.map → session-cookie-DhA3swUc.js.map} +1 -1
- package/build/server/chunks/{setup-deploy-BL_wmz6j.js → setup-deploy-C0hLjImh.js} +2 -2
- package/build/server/chunks/{setup-deploy-BL_wmz6j.js.map → setup-deploy-C0hLjImh.js.map} +1 -1
- package/build/server/chunks/{src-BEj0DuSB.js → src-B7oqi9q_.js} +353 -16
- package/build/server/chunks/src-B7oqi9q_.js.map +1 -0
- package/build/server/chunks/{state-DAPDF26p.js → state-iFW46-kW.js} +2 -2
- package/build/server/chunks/{state-DAPDF26p.js.map → state-iFW46-kW.js.map} +1 -1
- package/build/server/chunks/{state2-3fEu-ReG.js → state2-DkQitSl6.js} +2 -2
- package/build/server/chunks/{state2-3fEu-ReG.js.map → state2-DkQitSl6.js.map} +1 -1
- package/build/server/chunks/{theme-state.svelte-CUVpUHOv.js → theme-state.svelte-8qSluhfu.js} +35 -4
- package/build/server/chunks/theme-state.svelte-8qSluhfu.js.map +1 -0
- package/build/server/index.js +2 -2
- package/build/server/manifest.js +117 -89
- package/build/server/manifest.js.map +1 -1
- package/package.json +2 -2
- package/build/client/_app/immutable/assets/4.D-9LGiQD.css +0 -1
- package/build/client/_app/immutable/assets/4.D-9LGiQD.css.br +0 -0
- package/build/client/_app/immutable/assets/4.D-9LGiQD.css.gz +0 -0
- package/build/client/_app/immutable/chunks/B7L0wlSY.js +0 -1
- package/build/client/_app/immutable/chunks/B7L0wlSY.js.br +0 -2
- package/build/client/_app/immutable/chunks/B7L0wlSY.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BEuC-NYT.js.br +0 -0
- package/build/client/_app/immutable/chunks/BEuC-NYT.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BXh0hlRI.js +0 -1
- package/build/client/_app/immutable/chunks/BXh0hlRI.js.br +0 -0
- package/build/client/_app/immutable/chunks/BXh0hlRI.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DHRKaBFV.js.br +0 -0
- package/build/client/_app/immutable/chunks/DHRKaBFV.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DOWJsT_T.js.br +0 -0
- package/build/client/_app/immutable/chunks/DkCRM8d5.js +0 -5
- package/build/client/_app/immutable/chunks/DkCRM8d5.js.br +0 -0
- package/build/client/_app/immutable/chunks/DkCRM8d5.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.Dgd8Sqiz.js.br +0 -0
- package/build/client/_app/immutable/entry/app.Dgd8Sqiz.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.DN4LafZw.js +0 -1
- package/build/client/_app/immutable/entry/start.DN4LafZw.js.br +0 -1
- package/build/client/_app/immutable/entry/start.DN4LafZw.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.DEcud9DA.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.DEcud9DA.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.DiTVmAJ4.js.br +0 -3
- package/build/client/_app/immutable/nodes/1.DiTVmAJ4.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.C-pAk-ut.js +0 -121
- package/build/client/_app/immutable/nodes/4.C-pAk-ut.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.C-pAk-ut.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.WMP0f8pf.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.WMP0f8pf.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.9o6Bephx.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.9o6Bephx.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7._N3I_xWy.js.br +0 -0
- package/build/client/_app/immutable/nodes/7._N3I_xWy.js.gz +0 -0
- package/build/client/_app/immutable/nodes/8.aWZ5mSKB.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.aWZ5mSKB.js.gz +0 -0
- package/build/server/chunks/1-BdcHiFUZ.js +0 -9
- package/build/server/chunks/4-siztlnPA.js +0 -9
- package/build/server/chunks/5-DR1iBcbj.js +0 -9
- package/build/server/chunks/6-BdZadUUO.js +0 -9
- package/build/server/chunks/7-CjmZOzkF.js +0 -9
- package/build/server/chunks/_page.svelte-CMyq-t3Q.js.map +0 -1
- package/build/server/chunks/_server.ts-B4WEAp6B.js.map +0 -1
- package/build/server/chunks/_server.ts-CxWx02dy.js.map +0 -1
- package/build/server/chunks/_server.ts-MJdHZvPF.js.map +0 -1
- package/build/server/chunks/src-BEj0DuSB.js.map +0 -1
- package/build/server/chunks/theme-state.svelte-CUVpUHOv.js.map +0 -1
package/build/server/chunks/{session-cookie-C-kIy9pI.js.map → session-cookie-DhA3swUc.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-cookie-
|
|
1
|
+
{"version":3,"file":"session-cookie-DhA3swUc.js","sources":["../../../.svelte-kit/adapter-node/chunks/session-cookie.js"],"sourcesContent":["import { m as SESSION_TTL_SECONDS } from \"./helpers.js\";\n//#region src/lib/server/session-cookie.ts\n/**\n* Single source of truth for the `op_session` cookie's Set-Cookie attributes.\n*\n* Every issuer (login, session, setup/complete) and the sliding-renewal path in\n* hooks.server.ts builds the cookie through these helpers so the attributes can\n* never drift apart. Logout uses `clearSessionCookie()` with the SAME path so\n* the browser actually drops the cookie.\n*\n* Attribute rationale:\n* - HttpOnly — the cookie is the only credential the browser holds; XSS\n* must not be able to read it.\n* - SameSite=Lax — the cookie must ride along on top-level GET navigations\n* (typing the admin URL, following a bookmark) so a valid\n* session loads admin with no prompt. SameSite=Strict drops\n* the cookie on cross-site top-level GETs (e.g. opening the\n* console from a link in another app on the LAN), which\n* would force a needless re-prompt. State-mutating requests\n* are independently CSRF-guarded by the Origin check\n* (SEC-2) in hooks.server.ts, so Lax is safe here.\n* - Secure — set ONLY when the request arrived over HTTPS. LAN installs\n* are commonly plain HTTP; hardcoding Secure would make the\n* browser refuse to send the cookie and break login entirely\n* on those deployments. We honour `x-forwarded-proto` first\n* (reverse-proxy TLS termination) then the request URL.\n* - Path=/ — valid for the whole app; matched by the clear on logout.\n* - Max-Age — SESSION_TTL_SECONDS (14 days), in lockstep with the token expiry.\n*/\nvar SESSION_COOKIE_NAME = \"op_session\";\n/** True when the request reached us over HTTPS (direct or via TLS-terminating proxy). */\nfunction isSecureRequest(request) {\n\tconst forwarded = request.headers.get(\"x-forwarded-proto\");\n\tif (forwarded) return forwarded.split(\",\")[0].trim().toLowerCase() === \"https\";\n\ttry {\n\t\treturn new URL(request.url).protocol === \"https:\";\n\t} catch {\n\t\treturn false;\n\t}\n}\n/**\n* Build the `Set-Cookie` value that issues/renews the session cookie.\n* `secure` is derived from the request so LAN-over-HTTP installs still work.\n*/\nfunction sessionCookieHeader(token, request) {\n\tconst parts = [\n\t\t`${SESSION_COOKIE_NAME}=${token}`,\n\t\t\"HttpOnly\",\n\t\t\"SameSite=Lax\",\n\t\t\"Path=/\",\n\t\t`Max-Age=${SESSION_TTL_SECONDS}`\n\t];\n\tif (isSecureRequest(request)) parts.push(\"Secure\");\n\treturn parts.join(\"; \");\n}\n/**\n* Build the `Set-Cookie` value that clears the session cookie (logout).\n* Must mirror name/path/attributes of the issued cookie so the browser deletes it.\n*/\nfunction clearSessionCookieHeader(request) {\n\tconst parts = [\n\t\t`${SESSION_COOKIE_NAME}=`,\n\t\t\"HttpOnly\",\n\t\t\"SameSite=Lax\",\n\t\t\"Path=/\",\n\t\t\"Max-Age=0\"\n\t];\n\tif (isSecureRequest(request)) parts.push(\"Secure\");\n\treturn parts.join(\"; \");\n}\n//#endregion\nexport { clearSessionCookieHeader as n, sessionCookieHeader as r, SESSION_COOKIE_NAME as t };\n"],"names":[],"mappings":";;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACG,IAAC,mBAAmB,GAAG;AAC1B;AACA,SAAS,eAAe,CAAC,OAAO,EAAE;AAClC,CAAC,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;AAC3D,CAAC,IAAI,SAAS,EAAE,OAAO,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,OAAO;AAC/E,CAAC,IAAI;AACL,EAAE,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,QAAQ;AACnD,CAAC,CAAC,CAAC,MAAM;AACT,EAAE,OAAO,KAAK;AACd,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,SAAS,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE;AAC7C,CAAC,MAAM,KAAK,GAAG;AACf,EAAE,CAAC,EAAE,mBAAmB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACnC,EAAE,UAAU;AACZ,EAAE,cAAc;AAChB,EAAE,QAAQ;AACV,EAAE,CAAC,QAAQ,EAAE,mBAAmB,CAAC;AACjC,EAAE;AACF,CAAC,IAAI,eAAe,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;AACnD,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AACxB;AACA;AACA;AACA;AACA;AACA,SAAS,wBAAwB,CAAC,OAAO,EAAE;AAC3C,CAAC,MAAM,KAAK,GAAG;AACf,EAAE,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC;AAC3B,EAAE,UAAU;AACZ,EAAE,cAAc;AAChB,EAAE,QAAQ;AACV,EAAE;AACF,EAAE;AACF,CAAC,IAAI,eAAe,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;AACnD,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AACxB;;;;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { j as backupSetupInputs,
|
|
1
|
+
import { j as backupSetupInputs, aR as runDeploy, aO as resolveDeployJournalPath, aj as isSetupComplete, aQ as resolveStackDir, az as readDeployJournal, ar as markSetupComplete } from './src-B7oqi9q_.js';
|
|
2
2
|
|
|
3
3
|
//#region src/lib/server/setup-deploy.ts
|
|
4
4
|
var _state = {
|
|
@@ -72,4 +72,4 @@ function prepareSetupRestorePoint(state) {
|
|
|
72
72
|
}
|
|
73
73
|
|
|
74
74
|
export { getDeployState as g, prepareSetupRestorePoint as p, resetDeployState as r, startDeploy as s };
|
|
75
|
-
//# sourceMappingURL=setup-deploy-
|
|
75
|
+
//# sourceMappingURL=setup-deploy-C0hLjImh.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup-deploy-
|
|
1
|
+
{"version":3,"file":"setup-deploy-C0hLjImh.js","sources":["../../../.svelte-kit/adapter-node/chunks/setup-deploy.js"],"sourcesContent":["import { $t as resolveStackDir, A as readDeployJournal, M as runDeploy, O as backupSetupInputs, ft as isSetupComplete, j as resolveDeployJournalPath, k as markSetupComplete } from \"./src.js\";\n//#region src/lib/server/setup-deploy.ts\nvar _state = {\n\tdeploying: false,\n\tsetupComplete: false,\n\tdeployStatus: [],\n\tdeployError: null,\n\timageWarning: null,\n\tphase: \"writing-config\"\n};\nvar _deployPromise = null;\nfunction deployStateFromJournal(state) {\n\tconst journal = readDeployJournal(resolveDeployJournalPath(state));\n\treturn {\n\t\tdeploying: journal.deploying,\n\t\tinterrupted: journal.interrupted,\n\t\tsetupComplete: journal.setupComplete || isSetupComplete(resolveStackDir()),\n\t\tdeployStatus: journal.deployStatus,\n\t\tdeployError: journal.deployError,\n\t\timageWarning: journal.imageWarning,\n\t\tphase: journal.phase\n\t};\n}\nfunction getDeployState(state) {\n\tif (state) _state = deployStateFromJournal(state);\n\telse if (!_state.setupComplete && !_state.deploying && isSetupComplete(resolveStackDir())) _state.setupComplete = true;\n\treturn {\n\t\t..._state,\n\t\tdeployStatus: _state.deployStatus.map((entry) => ({ ...entry }))\n\t};\n}\nfunction resetDeployState() {\n\t_state = {\n\t\tdeploying: false,\n\t\tsetupComplete: false,\n\t\tdeployStatus: [],\n\t\tdeployError: null,\n\t\timageWarning: null,\n\t\tphase: \"writing-config\"\n\t};\n}\nfunction startDeploy(state) {\n\tif (_deployPromise) {\n\t\t_state.deployError = \"install_in_progress: A deploy is already running. Wait for it to finish.\";\n\t\treturn;\n\t}\n\t_deployPromise = (async () => {\n\t\tawait runDeploy(state, {\n\t\t\tjournalPath: resolveDeployJournalPath(state),\n\t\t\tonUpdate(progress) {\n\t\t\t\t_state = {\n\t\t\t\t\tdeploying: progress.deploying,\n\t\t\t\t\tinterrupted: progress.interrupted,\n\t\t\t\t\tsetupComplete: progress.setupComplete,\n\t\t\t\t\tdeployStatus: progress.deployStatus,\n\t\t\t\t\tdeployError: progress.deployError,\n\t\t\t\t\timageWarning: progress.imageWarning,\n\t\t\t\t\tphase: progress.phase\n\t\t\t\t};\n\t\t\t},\n\t\t\tmarkSetupComplete() {\n\t\t\t\tmarkSetupComplete(state);\n\t\t\t}\n\t\t});\n\t})().finally(() => {\n\t\t_deployPromise = null;\n\t});\n}\nfunction prepareSetupRestorePoint(state) {\n\treturn backupSetupInputs(state);\n}\n//#endregion\nexport { startDeploy as i, prepareSetupRestorePoint as n, resetDeployState as r, getDeployState as t };\n"],"names":[],"mappings":";;AACA;AACA,IAAI,MAAM,GAAG;AACb,CAAC,SAAS,EAAE,KAAK;AACjB,CAAC,aAAa,EAAE,KAAK;AACrB,CAAC,YAAY,EAAE,EAAE;AACjB,CAAC,WAAW,EAAE,IAAI;AAClB,CAAC,YAAY,EAAE,IAAI;AACnB,CAAC,KAAK,EAAE;AACR,CAAC;AACD,IAAI,cAAc,GAAG,IAAI;AACzB,SAAS,sBAAsB,CAAC,KAAK,EAAE;AACvC,CAAC,MAAM,OAAO,GAAG,iBAAiB,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;AACnE,CAAC,OAAO;AACR,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS;AAC9B,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW;AAClC,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,eAAe,CAAC,eAAe,EAAE,CAAC;AAC5E,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY;AACpC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW;AAClC,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY;AACpC,EAAE,KAAK,EAAE,OAAO,CAAC;AACjB,EAAE;AACF;AACA,SAAS,cAAc,CAAC,KAAK,EAAE;AAC/B,CAAC,IAAI,KAAK,EAAE,MAAM,GAAG,sBAAsB,CAAC,KAAK,CAAC;AAClD,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,eAAe,CAAC,eAAe,EAAE,CAAC,EAAE,MAAM,CAAC,aAAa,GAAG,IAAI;AACvH,CAAC,OAAO;AACR,EAAE,GAAG,MAAM;AACX,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;AACjE,EAAE;AACF;AACA,SAAS,gBAAgB,GAAG;AAC5B,CAAC,MAAM,GAAG;AACV,EAAE,SAAS,EAAE,KAAK;AAClB,EAAE,aAAa,EAAE,KAAK;AACtB,EAAE,YAAY,EAAE,EAAE;AAClB,EAAE,WAAW,EAAE,IAAI;AACnB,EAAE,YAAY,EAAE,IAAI;AACpB,EAAE,KAAK,EAAE;AACT,EAAE;AACF;AACA,SAAS,WAAW,CAAC,KAAK,EAAE;AAC5B,CAAC,IAAI,cAAc,EAAE;AACrB,EAAE,MAAM,CAAC,WAAW,GAAG,0EAA0E;AACjG,EAAE;AACF,CAAC;AACD,CAAC,cAAc,GAAG,CAAC,YAAY;AAC/B,EAAE,MAAM,SAAS,CAAC,KAAK,EAAE;AACzB,GAAG,WAAW,EAAE,wBAAwB,CAAC,KAAK,CAAC;AAC/C,GAAG,QAAQ,CAAC,QAAQ,EAAE;AACtB,IAAI,MAAM,GAAG;AACb,KAAK,SAAS,EAAE,QAAQ,CAAC,SAAS;AAClC,KAAK,WAAW,EAAE,QAAQ,CAAC,WAAW;AACtC,KAAK,aAAa,EAAE,QAAQ,CAAC,aAAa;AAC1C,KAAK,YAAY,EAAE,QAAQ,CAAC,YAAY;AACxC,KAAK,WAAW,EAAE,QAAQ,CAAC,WAAW;AACtC,KAAK,YAAY,EAAE,QAAQ,CAAC,YAAY;AACxC,KAAK,KAAK,EAAE,QAAQ,CAAC;AACrB,KAAK;AACL,GAAG,CAAC;AACJ,GAAG,iBAAiB,GAAG;AACvB,IAAI,iBAAiB,CAAC,KAAK,CAAC;AAC5B,GAAG;AACH,GAAG,CAAC;AACJ,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM;AACpB,EAAE,cAAc,GAAG,IAAI;AACvB,CAAC,CAAC,CAAC;AACH;AACA,SAAS,wBAAwB,CAAC,KAAK,EAAE;AACzC,CAAC,OAAO,iBAAiB,CAAC,KAAK,CAAC;AAChC;;;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { _ as __commonJSMin, b as __require } from './chunk-CLZ62Ad-.js';
|
|
2
2
|
import { P as PROVIDER_DEFAULT_URLS, a as PROVIDER_KEY_MAP } from './provider-constants-DPrj3yBX.js';
|
|
3
3
|
import { r as require_dist } from './dist-DOFcG0Zp.js';
|
|
4
|
-
import Vt, { existsSync, readFileSync, copyFileSync, chmodSync, mkdirSync, lstatSync, rmSync, readdirSync, writeFileSync, renameSync, statSync, cpSync, openSync, constants, writeSync, closeSync, chownSync, realpathSync } from 'node:fs';
|
|
4
|
+
import Vt, { existsSync, readFileSync, copyFileSync, chmodSync, mkdirSync, lstatSync, rmSync, readdirSync, writeFileSync, renameSync, statSync, statfsSync, cpSync, openSync, constants, writeSync, closeSync, chownSync, realpathSync } from 'node:fs';
|
|
5
5
|
import or, { join, basename, dirname, resolve, win32, posix } from 'node:path';
|
|
6
6
|
import { Buffer as Buffer$1 } from 'buffer';
|
|
7
7
|
import I from 'fs';
|
|
@@ -96,6 +96,84 @@ function timestampDirName(now = /* @__PURE__ */ new Date()) {
|
|
|
96
96
|
return now.toISOString().replace(/[:.]/g, "-");
|
|
97
97
|
}
|
|
98
98
|
/**
|
|
99
|
+
* Recursively sum the apparent size (in bytes) of every file under `path`,
|
|
100
|
+
* excluding the existing backups directory (we never back up backups).
|
|
101
|
+
*
|
|
102
|
+
* Cheap enough for a pre-backup estimate; errors on individual entries are
|
|
103
|
+
* skipped (a transient unreadable file should not block the safety copy).
|
|
104
|
+
*/
|
|
105
|
+
function estimateHomeBackupBytes(homeDir) {
|
|
106
|
+
if (!existsSync(homeDir)) return 0;
|
|
107
|
+
const backupsDir = join(homeDir, "data", "backups");
|
|
108
|
+
let total = 0;
|
|
109
|
+
const walk = (dir) => {
|
|
110
|
+
let entries;
|
|
111
|
+
try {
|
|
112
|
+
entries = readdirSync(dir, { withFileTypes: true });
|
|
113
|
+
} catch {
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
for (const entry of entries) {
|
|
117
|
+
const full = join(dir, entry.name);
|
|
118
|
+
if (full === backupsDir) continue;
|
|
119
|
+
if (entry.isDirectory()) walk(full);
|
|
120
|
+
else if (entry.isFile()) try {
|
|
121
|
+
total += statSync(full).size;
|
|
122
|
+
} catch {}
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
walk(homeDir);
|
|
126
|
+
return total;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Estimate whether a full-home backup would fit safely on disk.
|
|
130
|
+
*
|
|
131
|
+
* Returns a structured result; the caller decides whether to warn, block, or
|
|
132
|
+
* (with explicit confirmation) proceed. This NEVER deletes anything — it only
|
|
133
|
+
* measures. `threshold` is the fraction of currently-free space the backup may
|
|
134
|
+
* consume before it is flagged `insufficient` (default 80%).
|
|
135
|
+
*/
|
|
136
|
+
function checkBackupFreeSpace(homeDir, threshold = .8) {
|
|
137
|
+
const estimatedBytes = estimateHomeBackupBytes(homeDir);
|
|
138
|
+
let freeBytes = Number.POSITIVE_INFINITY;
|
|
139
|
+
try {
|
|
140
|
+
const stat = statfsSync(homeDir);
|
|
141
|
+
freeBytes = stat.bavail * stat.bsize;
|
|
142
|
+
} catch {}
|
|
143
|
+
const ratio = freeBytes > 0 ? estimatedBytes / freeBytes : Number.POSITIVE_INFINITY;
|
|
144
|
+
return {
|
|
145
|
+
estimatedBytes,
|
|
146
|
+
freeBytes,
|
|
147
|
+
ratio,
|
|
148
|
+
insufficient: estimatedBytes > freeBytes * threshold,
|
|
149
|
+
threshold
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
function formatBytes(bytes) {
|
|
153
|
+
if (!Number.isFinite(bytes)) return "unknown";
|
|
154
|
+
const units = [
|
|
155
|
+
"B",
|
|
156
|
+
"KB",
|
|
157
|
+
"MB",
|
|
158
|
+
"GB",
|
|
159
|
+
"TB"
|
|
160
|
+
];
|
|
161
|
+
let value = bytes;
|
|
162
|
+
let i = 0;
|
|
163
|
+
while (value >= 1024 && i < units.length - 1) {
|
|
164
|
+
value /= 1024;
|
|
165
|
+
i += 1;
|
|
166
|
+
}
|
|
167
|
+
return `${value.toFixed(value >= 10 || i === 0 ? 0 : 1)} ${units[i]}`;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Human-readable, plain-language explanation of a low-free-space situation,
|
|
171
|
+
* suitable for a CLI warning or a UI notice.
|
|
172
|
+
*/
|
|
173
|
+
function describeBackupSpaceShortfall(check) {
|
|
174
|
+
return `The safety backup is estimated at ${formatBytes(check.estimatedBytes)}, but only ${formatBytes(check.freeBytes)} is free on this disk. Backing up could fill the disk. Free up space (your old backups are under data/backups/ — review them with \`openpalm backups list\`), or re-run with confirmation to proceed anyway. Nothing was changed or deleted.`;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
99
177
|
* Create a durable backup snapshot of the current OP_HOME contents.
|
|
100
178
|
*
|
|
101
179
|
* The backup is written under OP_HOME/data/backups/<timestamp>/ and excludes
|
|
@@ -123,6 +201,62 @@ function backupOpenPalmHome(homeDir) {
|
|
|
123
201
|
}
|
|
124
202
|
return copiedAny ? backupDir : null;
|
|
125
203
|
}
|
|
204
|
+
function listBackupDirs(homeDir) {
|
|
205
|
+
const backupsDir = join(homeDir, "data", "backups");
|
|
206
|
+
if (!existsSync(backupsDir)) return [];
|
|
207
|
+
return readdirSync(backupsDir, { withFileTypes: true }).filter((entry) => entry.isDirectory()).map((entry) => join(backupsDir, entry.name)).sort((a, b) => b.localeCompare(a));
|
|
208
|
+
}
|
|
209
|
+
function dirSizeBytes(dir) {
|
|
210
|
+
let total = 0;
|
|
211
|
+
let entries;
|
|
212
|
+
try {
|
|
213
|
+
entries = readdirSync(dir, { withFileTypes: true });
|
|
214
|
+
} catch {
|
|
215
|
+
return 0;
|
|
216
|
+
}
|
|
217
|
+
for (const entry of entries) {
|
|
218
|
+
const full = join(dir, entry.name);
|
|
219
|
+
if (entry.isDirectory()) total += dirSizeBytes(full);
|
|
220
|
+
else if (entry.isFile()) try {
|
|
221
|
+
total += statSync(full).size;
|
|
222
|
+
} catch {}
|
|
223
|
+
}
|
|
224
|
+
return total;
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Summarize the upgrade backup snapshots for UI visibility (count, total size,
|
|
228
|
+
* last-backup time, per-backup sizes). Read-only — never deletes anything.
|
|
229
|
+
*/
|
|
230
|
+
function summarizeBackups(homeDir) {
|
|
231
|
+
const backups = listBackupDirs(homeDir).map((path) => {
|
|
232
|
+
let createdAt = "";
|
|
233
|
+
try {
|
|
234
|
+
createdAt = statSync(path).mtime.toISOString();
|
|
235
|
+
} catch {}
|
|
236
|
+
return {
|
|
237
|
+
path,
|
|
238
|
+
name: path.slice(path.lastIndexOf("/") + 1),
|
|
239
|
+
sizeBytes: dirSizeBytes(path),
|
|
240
|
+
createdAt
|
|
241
|
+
};
|
|
242
|
+
});
|
|
243
|
+
const totalBytes = backups.reduce((sum, b) => sum + b.sizeBytes, 0);
|
|
244
|
+
return {
|
|
245
|
+
count: backups.length,
|
|
246
|
+
totalBytes,
|
|
247
|
+
lastBackupAt: backups[0]?.createdAt || null,
|
|
248
|
+
backups
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
function pruneBackupDirs(homeDir, keep) {
|
|
252
|
+
if (!Number.isInteger(keep) || keep < 0) throw new Error("keep must be a non-negative integer");
|
|
253
|
+
const toDelete = listBackupDirs(homeDir).slice(keep);
|
|
254
|
+
for (const backupDir of toDelete) rmSync(backupDir, {
|
|
255
|
+
recursive: true,
|
|
256
|
+
force: true
|
|
257
|
+
});
|
|
258
|
+
return toDelete;
|
|
259
|
+
}
|
|
126
260
|
//#endregion
|
|
127
261
|
//#region ../lib/src/control-plane/install-lock.ts
|
|
128
262
|
var import_dist = require_dist();
|
|
@@ -249,6 +383,79 @@ function acquireInstallLock(dataDir) {
|
|
|
249
383
|
}
|
|
250
384
|
return null;
|
|
251
385
|
}
|
|
386
|
+
var INSTALL_LOCK_STALE_AFTER_MS = STALE_AFTER_MS;
|
|
387
|
+
/**
|
|
388
|
+
* Inspect the install lock under `dataDir` without modifying it. Used by the
|
|
389
|
+
* `openpalm unlock` command and the UI "operation stuck?" affordance to decide
|
|
390
|
+
* whether a removal is safe.
|
|
391
|
+
*/
|
|
392
|
+
function inspectInstallLock(dataDir) {
|
|
393
|
+
const path = join(dataDir, ".install.lock");
|
|
394
|
+
let content;
|
|
395
|
+
try {
|
|
396
|
+
content = readFileSync(path, "utf-8");
|
|
397
|
+
} catch (err) {
|
|
398
|
+
if (err.code === "ENOENT") return {
|
|
399
|
+
present: false,
|
|
400
|
+
path
|
|
401
|
+
};
|
|
402
|
+
let ageMs = null;
|
|
403
|
+
try {
|
|
404
|
+
ageMs = Date.now() - statSync(path).mtimeMs;
|
|
405
|
+
} catch {}
|
|
406
|
+
return {
|
|
407
|
+
present: true,
|
|
408
|
+
path,
|
|
409
|
+
pid: null,
|
|
410
|
+
timestamp: null,
|
|
411
|
+
ageMs,
|
|
412
|
+
stale: isStale(path)
|
|
413
|
+
};
|
|
414
|
+
}
|
|
415
|
+
const { pid, timestamp } = parseLockContent(content);
|
|
416
|
+
return {
|
|
417
|
+
present: true,
|
|
418
|
+
path,
|
|
419
|
+
pid,
|
|
420
|
+
timestamp,
|
|
421
|
+
ageMs: timestamp !== null ? Date.now() - timestamp : null,
|
|
422
|
+
stale: isStale(path)
|
|
423
|
+
};
|
|
424
|
+
}
|
|
425
|
+
/**
|
|
426
|
+
* Remove the install lock ONLY if it is stale (dead holder PID or older than
|
|
427
|
+
* the 30-minute staleness window). Never blind-removes a lock held by a live,
|
|
428
|
+
* recent install. Returns `{ ok: false, reason: "live" }` when the lock is
|
|
429
|
+
* still active so the caller can surface a clear message instead of forcing.
|
|
430
|
+
*/
|
|
431
|
+
function unlockInstallLock(dataDir) {
|
|
432
|
+
const status = inspectInstallLock(dataDir);
|
|
433
|
+
if (!status.present) return {
|
|
434
|
+
ok: true,
|
|
435
|
+
removed: false,
|
|
436
|
+
status
|
|
437
|
+
};
|
|
438
|
+
if (!status.stale) return {
|
|
439
|
+
ok: false,
|
|
440
|
+
reason: "live",
|
|
441
|
+
status
|
|
442
|
+
};
|
|
443
|
+
try {
|
|
444
|
+
rmSync(status.path, { force: true });
|
|
445
|
+
logger$11.info("removed stale install lock via unlock", { path: status.path });
|
|
446
|
+
} catch (err) {
|
|
447
|
+
logger$11.warn("failed to remove stale install lock during unlock", {
|
|
448
|
+
path: status.path,
|
|
449
|
+
error: err instanceof Error ? err.message : String(err)
|
|
450
|
+
});
|
|
451
|
+
throw err;
|
|
452
|
+
}
|
|
453
|
+
return {
|
|
454
|
+
ok: true,
|
|
455
|
+
removed: true,
|
|
456
|
+
status
|
|
457
|
+
};
|
|
458
|
+
}
|
|
252
459
|
function releaseInstallLock(handle) {
|
|
253
460
|
if (!handle) return;
|
|
254
461
|
try {
|
|
@@ -530,7 +737,7 @@ var import_main = (/* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
|
530
737
|
module.exports = DotenvModule;
|
|
531
738
|
})))();
|
|
532
739
|
var package_default = {
|
|
533
|
-
version: "0.12.0-rc.
|
|
740
|
+
version: "0.12.0-rc.3"};
|
|
534
741
|
//#endregion
|
|
535
742
|
//#region ../lib/src/control-plane/versioning.ts
|
|
536
743
|
var SEMVER_RE = /^v?\d+\.\d+\.\d+(?:[-+].*)?$/;
|
|
@@ -822,6 +1029,22 @@ var MigrationError = class extends Error {
|
|
|
822
1029
|
this.name = "MigrationError";
|
|
823
1030
|
}
|
|
824
1031
|
};
|
|
1032
|
+
/**
|
|
1033
|
+
* Thrown when the pre-backup free-space check estimates the safety backup would
|
|
1034
|
+
* exceed a safe fraction of free disk. Surfaced so callers (CLI/UI) can present
|
|
1035
|
+
* a plain-language warning and re-run with explicit confirmation. NOTHING is
|
|
1036
|
+
* deleted — the migration aborts cleanly with no changes made.
|
|
1037
|
+
*/
|
|
1038
|
+
var BackupSpaceError = class extends MigrationError {
|
|
1039
|
+
estimatedBytes;
|
|
1040
|
+
freeBytes;
|
|
1041
|
+
constructor(message, guidance, estimatedBytes, freeBytes) {
|
|
1042
|
+
super(message, guidance, null);
|
|
1043
|
+
this.estimatedBytes = estimatedBytes;
|
|
1044
|
+
this.freeBytes = freeBytes;
|
|
1045
|
+
this.name = "BackupSpaceError";
|
|
1046
|
+
}
|
|
1047
|
+
};
|
|
825
1048
|
var RELEASE_VERSION_KEY = "OP_RELEASE_VERSION";
|
|
826
1049
|
function resolveMigrationPaths(homeDir) {
|
|
827
1050
|
return {
|
|
@@ -1273,7 +1496,7 @@ var RELEASE_MIGRATIONS = [
|
|
|
1273
1496
|
verify(ctx) {}
|
|
1274
1497
|
}
|
|
1275
1498
|
];
|
|
1276
|
-
var RECOVERY_GUIDANCE = "Your original files were left untouched and a full backup was taken first.
|
|
1499
|
+
var RECOVERY_GUIDANCE = "Your original files were left untouched and a full backup was taken first. If something went wrong, run `openpalm rollback` to restore your previous state, or restore the backup manually (see docs/operations/backup-restore.md). You can also run `openpalm migrate --dry-run` to preview the current copy-only migration. Full guide: docs/operations/upgrade-0.10-to-0.11.md";
|
|
1277
1500
|
function resolveComparableReleaseTarget(rawVersion) {
|
|
1278
1501
|
if (!rawVersion) return null;
|
|
1279
1502
|
return isComparableSemver(rawVersion) ? rawVersion : null;
|
|
@@ -1311,6 +1534,7 @@ function runReleaseMigrations(ctxBase, releaseFrom, targetVersion) {
|
|
|
1311
1534
|
function ensureMigrated(opts = {}) {
|
|
1312
1535
|
const homeDir = opts.homeDir ? resolve(opts.homeDir) : process.env.OP_HOME ? resolve(process.env.OP_HOME) : resolve(process.env.HOME ?? "", ".openpalm");
|
|
1313
1536
|
const dryRun = opts.dryRun ?? false;
|
|
1537
|
+
const confirmLowSpace = opts.confirmLowSpace ?? false;
|
|
1314
1538
|
const log = opts.log ?? (() => {});
|
|
1315
1539
|
const ctxBase = {
|
|
1316
1540
|
...resolveMigrationPaths(homeDir),
|
|
@@ -1354,6 +1578,8 @@ function ensureMigrated(opts = {}) {
|
|
|
1354
1578
|
}
|
|
1355
1579
|
lock = acquireInstallLock(ctxBase.dataDir);
|
|
1356
1580
|
if (!lock) throw new MigrationError("Another install/upgrade is in progress.", RECOVERY_GUIDANCE, null);
|
|
1581
|
+
const spaceCheck = checkBackupFreeSpace(homeDir);
|
|
1582
|
+
if (spaceCheck.insufficient && !confirmLowSpace) throw new BackupSpaceError(describeBackupSpaceShortfall(spaceCheck), RECOVERY_GUIDANCE, spaceCheck.estimatedBytes, spaceCheck.freeBytes);
|
|
1357
1583
|
log("Taking a full backup before migrating…");
|
|
1358
1584
|
try {
|
|
1359
1585
|
backupDir = backupOpenPalmHome(homeDir);
|
|
@@ -5336,20 +5562,84 @@ function writeSystemEnv(state) {
|
|
|
5336
5562
|
if (!hasUsableOperatorId(parsed, "OP_GID")) adminManaged.OP_GID = String(ids.gid);
|
|
5337
5563
|
}
|
|
5338
5564
|
if (!parsed.OP_HOME) adminManaged.OP_HOME = state.homeDir;
|
|
5339
|
-
|
|
5565
|
+
const { content: strippedBase, removed } = stripSecretLikeEnvKeys(base);
|
|
5566
|
+
base = strippedBase;
|
|
5567
|
+
if (removed.length > 0) {
|
|
5568
|
+
logger$7.warn("Removed secret-looking keys from stack.env (they belong in Connections/secrets)", {
|
|
5569
|
+
removedKeys: removed,
|
|
5570
|
+
stackEnvPath: systemEnvPath
|
|
5571
|
+
});
|
|
5572
|
+
recordSecretStripNotice(state, removed);
|
|
5573
|
+
}
|
|
5340
5574
|
assertNoSecretLikeStackEnvKeys(parseEnvContent(base));
|
|
5341
5575
|
assertNoSecretLikeStackEnvKeys(adminManaged);
|
|
5342
5576
|
writeFileSync(systemEnvPath, mergeEnvContent(base, adminManaged, { sectionHeader: "# ── Admin-managed ──────────────────────────────────────────────────" }), { mode: 384 });
|
|
5343
5577
|
chmodSync(systemEnvPath, 384);
|
|
5344
5578
|
}
|
|
5345
5579
|
function stripSecretLikeEnvKeys(content) {
|
|
5346
|
-
|
|
5347
|
-
|
|
5348
|
-
|
|
5349
|
-
|
|
5350
|
-
|
|
5351
|
-
|
|
5352
|
-
|
|
5580
|
+
const removed = [];
|
|
5581
|
+
return {
|
|
5582
|
+
content: content.split("\n").filter((line) => {
|
|
5583
|
+
let trimmed = line.trim();
|
|
5584
|
+
if (trimmed.startsWith("export ")) trimmed = trimmed.slice(7).trimStart();
|
|
5585
|
+
const eq = trimmed.indexOf("=");
|
|
5586
|
+
if (eq <= 0) return true;
|
|
5587
|
+
const key = trimmed.slice(0, eq).trim();
|
|
5588
|
+
if (isSecretLikeStackEnvKey(key)) {
|
|
5589
|
+
removed.push(key);
|
|
5590
|
+
return false;
|
|
5591
|
+
}
|
|
5592
|
+
return true;
|
|
5593
|
+
}).join("\n"),
|
|
5594
|
+
removed
|
|
5595
|
+
};
|
|
5596
|
+
}
|
|
5597
|
+
/**
|
|
5598
|
+
* Path of the one-time "secret-looking values were removed from stack.env"
|
|
5599
|
+
* notice the UI reads and dismisses.
|
|
5600
|
+
*/
|
|
5601
|
+
function secretStripNoticePath(state) {
|
|
5602
|
+
return `${state.dataDir}/secret-strip-notice.json`;
|
|
5603
|
+
}
|
|
5604
|
+
function recordSecretStripNotice(state, newlyRemoved) {
|
|
5605
|
+
const path = secretStripNoticePath(state);
|
|
5606
|
+
let keys = new Set(newlyRemoved);
|
|
5607
|
+
if (existsSync(path)) try {
|
|
5608
|
+
const prior = JSON.parse(readFileSync(path, "utf-8"));
|
|
5609
|
+
if (Array.isArray(prior.keys)) keys = new Set([...prior.keys, ...newlyRemoved]);
|
|
5610
|
+
} catch {}
|
|
5611
|
+
const notice = {
|
|
5612
|
+
keys: [...keys].sort(),
|
|
5613
|
+
at: (/* @__PURE__ */ new Date()).toISOString()
|
|
5614
|
+
};
|
|
5615
|
+
try {
|
|
5616
|
+
mkdirSync(state.dataDir, { recursive: true });
|
|
5617
|
+
writeFileSync(path, JSON.stringify(notice, null, 2));
|
|
5618
|
+
} catch (e) {
|
|
5619
|
+
logger$7.warn("Could not persist secret-strip notice", { error: e instanceof Error ? e.message : String(e) });
|
|
5620
|
+
}
|
|
5621
|
+
}
|
|
5622
|
+
/** Read the pending secret-strip notice, or null when there is none. */
|
|
5623
|
+
function readSecretStripNotice(state) {
|
|
5624
|
+
const path = secretStripNoticePath(state);
|
|
5625
|
+
if (!existsSync(path)) return null;
|
|
5626
|
+
try {
|
|
5627
|
+
const parsed = JSON.parse(readFileSync(path, "utf-8"));
|
|
5628
|
+
if (Array.isArray(parsed.keys) && parsed.keys.length > 0 && typeof parsed.at === "string") return {
|
|
5629
|
+
keys: parsed.keys,
|
|
5630
|
+
at: parsed.at
|
|
5631
|
+
};
|
|
5632
|
+
} catch {}
|
|
5633
|
+
return null;
|
|
5634
|
+
}
|
|
5635
|
+
/** Dismiss (delete) the pending secret-strip notice. */
|
|
5636
|
+
function dismissSecretStripNotice(state) {
|
|
5637
|
+
const path = secretStripNoticePath(state);
|
|
5638
|
+
if (existsSync(path)) try {
|
|
5639
|
+
rmSync(path);
|
|
5640
|
+
} catch (e) {
|
|
5641
|
+
logger$7.warn("Could not dismiss secret-strip notice", { error: e instanceof Error ? e.message : String(e) });
|
|
5642
|
+
}
|
|
5353
5643
|
}
|
|
5354
5644
|
function generateFallbackSystemEnv(state) {
|
|
5355
5645
|
const ids = resolveOperatorIds(state.homeDir);
|
|
@@ -6991,6 +7281,43 @@ function resolvePlatformVersionPolicyBaseTag(state) {
|
|
|
6991
7281
|
* Non-semver targets (a moving `latest`/`dev` tag) are not comparable and are
|
|
6992
7282
|
* left to the resolver paths that turn them into a concrete release first.
|
|
6993
7283
|
*/
|
|
7284
|
+
/**
|
|
7285
|
+
* Downgrade-needs-confirmation signal (#501).
|
|
7286
|
+
*
|
|
7287
|
+
* Release migrations are forward-only (copy-only, additive); they do NOT run
|
|
7288
|
+
* backward. Pointing the stack at an OLDER tag than the one currently running is
|
|
7289
|
+
* therefore a data-safety event, not a routine version change: the older images
|
|
7290
|
+
* may not understand files the newer release already migrated. We don't block it
|
|
7291
|
+
* (a user may legitimately need to roll back), but we require an explicit
|
|
7292
|
+
* confirmation so it can't happen by a stray dropdown selection. The UI catches
|
|
7293
|
+
* this by `code` and shows a plain warning + confirm; the CLI surfaces the
|
|
7294
|
+
* message and a `--confirm`/`--yes` path.
|
|
7295
|
+
*/
|
|
7296
|
+
var DowngradeConfirmationRequired = class extends Error {
|
|
7297
|
+
code = "downgrade_confirmation_required";
|
|
7298
|
+
currentVersion;
|
|
7299
|
+
targetVersion;
|
|
7300
|
+
constructor(currentVersion, targetVersion) {
|
|
7301
|
+
super(`Version ${formatForDisplay(targetVersion)} is older than the version you're running (${formatForDisplay(currentVersion)}). This is a downgrade. Release migrations don't run backward; your data may not be compatible — restore from backup if needed. Re-run with confirmation to proceed. Nothing was changed.`);
|
|
7302
|
+
this.name = "DowngradeConfirmationRequired";
|
|
7303
|
+
this.currentVersion = currentVersion;
|
|
7304
|
+
this.targetVersion = targetVersion;
|
|
7305
|
+
}
|
|
7306
|
+
};
|
|
7307
|
+
/**
|
|
7308
|
+
* Throw {@link DowngradeConfirmationRequired} when `targetTag` is strictly older
|
|
7309
|
+
* than the version currently configured in stack.env, unless the caller passed
|
|
7310
|
+
* an explicit confirmation. Non-semver tags (a moving `latest`/`dev` ref, or a
|
|
7311
|
+
* first install with no current tag) are not comparable and pass through — the
|
|
7312
|
+
* resolver paths turn `latest` into a concrete release before this runs.
|
|
7313
|
+
*/
|
|
7314
|
+
function assertNotUnconfirmedDowngrade(state, targetTag, confirmDowngrade) {
|
|
7315
|
+
if (confirmDowngrade) return;
|
|
7316
|
+
const currentTag = resolvePlatformVersionPolicyBaseTag(state);
|
|
7317
|
+
if (!isComparableSemver(targetTag) || !isComparableSemver(currentTag)) return;
|
|
7318
|
+
if (compareComparableVersions(targetTag, currentTag) >= 0) return;
|
|
7319
|
+
throw new DowngradeConfirmationRequired(currentTag, targetTag);
|
|
7320
|
+
}
|
|
6994
7321
|
function assertTargetNotNewerThanPlatform(targetTag) {
|
|
6995
7322
|
if (!isComparableSemver(targetTag) || !isComparableSemver(PLATFORM_VERSION)) return;
|
|
6996
7323
|
if (compareComparableVersions(targetTag, PLATFORM_VERSION) <= 0) return;
|
|
@@ -7098,6 +7425,15 @@ async function resolveLatestPlatformTag(namespace) {
|
|
|
7098
7425
|
if (!latestTag) throw new Error("No usable Docker image tag found");
|
|
7099
7426
|
return latestTag;
|
|
7100
7427
|
}
|
|
7428
|
+
/**
|
|
7429
|
+
* Resolve the default target version for `openpalm migrate --dry-run`: the
|
|
7430
|
+
* newest published platform tag in the current major. Mirrors the resolver the
|
|
7431
|
+
* upgrade path uses (same namespace, same base tag, same prerelease policy) so a
|
|
7432
|
+
* dry-run preview reflects the exact version `openpalm update` would move to.
|
|
7433
|
+
*/
|
|
7434
|
+
async function resolveDefaultMigrateTarget(state, opts = {}) {
|
|
7435
|
+
return resolveLatestPlatformTagForCurrentMajor(resolveImageNamespace(state), resolvePlatformVersionPolicyBaseTag(state), { allowPrerelease: opts.allowPrerelease });
|
|
7436
|
+
}
|
|
7101
7437
|
async function resolveLatestPlatformTagForCurrentMajor(namespace, currentTag, opts = {}) {
|
|
7102
7438
|
const skipPrerelease = !opts.allowPrerelease && !isPrerelease(currentTag);
|
|
7103
7439
|
const latestTag = resolveNewestDockerTag(await fetchDockerTagsPayload(namespace, "assistant"), {
|
|
@@ -7198,7 +7534,7 @@ async function performUpgrade(state, opts = {}) {
|
|
|
7198
7534
|
* Set a specific image tag in stack.env then pull images and restart containers.
|
|
7199
7535
|
* Used by the admin "set version" action — skips the auto-detect step in performUpgrade.
|
|
7200
7536
|
*/
|
|
7201
|
-
async function applyTagChange(state, tag) {
|
|
7537
|
+
async function applyTagChange(state, tag, opts = {}) {
|
|
7202
7538
|
return withStackEnvRollback(state, async () => {
|
|
7203
7539
|
const namespace = resolveImageNamespace(state);
|
|
7204
7540
|
const requested = tag.trim();
|
|
@@ -7210,6 +7546,7 @@ async function applyTagChange(state, tag) {
|
|
|
7210
7546
|
throw new Error(`Cannot resolve "latest" to a concrete release: ${msg}. Check your network connection or select a specific version.`);
|
|
7211
7547
|
}
|
|
7212
7548
|
assertTargetNotNewerThanPlatform(resolvedTag);
|
|
7549
|
+
assertNotUnconfirmedDowngrade(state, resolvedTag, opts.confirmDowngrade ?? false);
|
|
7213
7550
|
const stackEnvPath = `${state.stashDir}/env/stack.env`;
|
|
7214
7551
|
const currentEnv = parseEnvFile(stackEnvPath);
|
|
7215
7552
|
const pinnedImages = parsePinnedImages(currentEnv.OP_PINNED_IMAGES);
|
|
@@ -7695,7 +8032,7 @@ async function runDeploy(state, options = {}) {
|
|
|
7695
8032
|
const lock = acquireInstallLock(state.dataDir);
|
|
7696
8033
|
if (!lock) {
|
|
7697
8034
|
progress.deploying = false;
|
|
7698
|
-
progress.deployError = "install_in_progress: A deploy is already running. Wait for it to finish.";
|
|
8035
|
+
progress.deployError = "install_in_progress: A deploy is already running. Wait for it to finish (the lock clears itself automatically after 30 minutes). If you're sure nothing is running, run 'openpalm unlock' to clear a stale lock.";
|
|
7699
8036
|
emitProgress(options, progress);
|
|
7700
8037
|
return progress;
|
|
7701
8038
|
}
|
|
@@ -9369,7 +9706,7 @@ async function performSetup(input, opts) {
|
|
|
9369
9706
|
const lockHandle = acquireInstallLock(state.dataDir);
|
|
9370
9707
|
if (lockHandle === null) return {
|
|
9371
9708
|
ok: false,
|
|
9372
|
-
error: "install_in_progress: Another install is in progress. Wait for it to finish
|
|
9709
|
+
error: "install_in_progress: Another install is in progress. Wait for it to finish (the lock clears itself automatically after 30 minutes). If you're sure nothing is running, run 'openpalm unlock' to clear a stale lock."
|
|
9373
9710
|
};
|
|
9374
9711
|
logger.info("performing setup", { connectionCount: connections.length });
|
|
9375
9712
|
const updates = buildOwnerEnvFromSetup(owner);
|
|
@@ -9855,5 +10192,5 @@ function collectBindAddressWarnings(env) {
|
|
|
9855
10192
|
return warnings;
|
|
9856
10193
|
}
|
|
9857
10194
|
|
|
9858
|
-
export {
|
|
9859
|
-
//# sourceMappingURL=src-
|
|
10195
|
+
export { ensureReleaseMigrated as $, AKM_USER_ENV_REF as A, composeStats as B, CORE_SERVICES as C, DowngradeConfirmationRequired as D, composeStop as E, composeUp as F, createLogger as G, createOpenCodeClient as H, INSTALL_LOCK_STALE_AFTER_MS as I, createState as J, deleteUserEnvKey as K, deriveLaunchStatus as L, MigrationError as M, deriveLocalStackState as N, detectGpu as O, PLATFORM_VERSION as P, detectHostOpenCode as Q, detectLocalProviders as R, detectRuntime as S, disableHostAkmSharing as T, dismissSecretStripNotice as U, enableHostAkmSharing as V, ensureAkmUserEnv as W, ensureHomeDirs as X, ensureMigrated as Y, ensureOpenCodeConfig as Z, ensureOpenCodeSystemConfig as _, addonProfileId as a, writeRuntimeFiles as a$, ensureSecrets as a0, executeAutomation as a1, fetchProviderModels as a2, formatForDisplay as a3, getAddonProfileAvailability as a4, getAddonProfileSelection as a5, getAddonProfiles as a6, getAddonServiceNames as a7, getAkmStats as a8, getDockerEvents as a9, readSecret as aA, readSecretFile as aB, readSecretStripNotice as aC, readStackEnv as aD, readStackRuntimeEnv as aE, readStackSecretEnv as aF, readTaskFile as aG, readUserEnvFile as aH, recommendSetup as aI, removeSecretFile as aJ, removeTaskFile as aK, resolveComposeProjectName as aL, resolveDataDir as aM, resolveDefaultMigrateTarget as aN, resolveDeployJournalPath as aO, resolveRuntimeFiles as aP, resolveStackDir as aQ, runDeploy as aR, seedUiBuild as aS, setAddonEnabled as aT, setAddonProfileSelection as aU, summarizeBackups as aV, summarizeComposeStderr as aW, unlockInstallLock as aX, useExistingProviderForAssistantCli as aY, validateProposedState as aZ, writeFileAtomic as a_, getHostAkmSharingStatus as aa, getRegistryAddonConfig as ab, hostAkmStashPath as ac, importHostOpenCode as ad, initializeStateSecrets as ae, inspectInstallLock as af, isAllowedService as ag, isComparableSemver as ah, isHostAkmAvailable as ai, isSetupComplete as aj, listAssistantCliTools as ak, listAvailableAddonIds as al, listBackupDirs as am, listEnabledAddonIds as an, listSecretFiles as ao, loadAutomations as ap, mapDockerError as aq, markSetupComplete as ar, parseComposeStderr as as, parseEnvFile as at, patchSecretsEnvFile as au, performSetup as av, performUpgrade as aw, pruneBackupDirs as ax, readAutomationLogs as ay, readDeployJournal as az, annotateAddonProfileAvailability as b, writeSecretFile as b0, writeStackSecretEnv as b1, writeTaskFile as b2, writeUserEnvKey as b3, writeVoiceVars as b4, applyInstall as c, applyTagChange as d, applyUninstall as e, applyUpdate as f, assertSafeSecretFilename as g, assertSafeTaskFilename as h, authJsonPath as i, backupSetupInputs as j, buildAkmEndpoint as k, buildAkmEnv as l, buildComposeOptions as m, buildManagedServices as n, checkDocker as o, checkDockerCompose as p, classifyLocalInstall as q, collectBindAddressWarnings as r, compareComparableVersions as s, composeDown as t, composeLogs as u, composePreflight as v, composePs as w, composePull as x, composeRestart as y, composeStart as z };
|
|
10196
|
+
//# sourceMappingURL=src-B7oqi9q_.js.map
|