@openpalm/ui 0.11.0 → 0.11.1
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/{0.DlIhzko8.css → 0.CFC7xzus.css} +1 -1
- package/build/client/_app/immutable/assets/0.CFC7xzus.css.br +0 -0
- package/build/client/_app/immutable/assets/0.CFC7xzus.css.gz +0 -0
- package/build/client/_app/immutable/assets/4.B_s_XYKm.css +1 -0
- package/build/client/_app/immutable/assets/4.B_s_XYKm.css.br +0 -0
- package/build/client/_app/immutable/assets/4.B_s_XYKm.css.gz +0 -0
- package/build/client/_app/immutable/assets/9.Bg2RXe3B.css +1 -0
- package/build/client/_app/immutable/assets/9.Bg2RXe3B.css.br +0 -0
- package/build/client/_app/immutable/assets/9.Bg2RXe3B.css.gz +0 -0
- package/build/client/_app/immutable/assets/VoiceProfileSelector.rd8K9qqK.css +1 -0
- package/build/client/_app/immutable/assets/VoiceProfileSelector.rd8K9qqK.css.br +0 -0
- package/build/client/_app/immutable/assets/VoiceProfileSelector.rd8K9qqK.css.gz +0 -0
- package/build/client/_app/immutable/chunks/BsFaG4Si.js +1 -0
- package/build/client/_app/immutable/chunks/BsFaG4Si.js.br +2 -0
- package/build/client/_app/immutable/chunks/BsFaG4Si.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{HJd0QhDi.js → C5xMso3V.js} +1 -1
- package/build/client/_app/immutable/chunks/C5xMso3V.js.br +0 -0
- package/build/client/_app/immutable/chunks/C5xMso3V.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{BNcdU8Ou.js → DPsWof9T.js} +2 -2
- package/build/client/_app/immutable/chunks/DPsWof9T.js.br +0 -0
- package/build/client/_app/immutable/chunks/DPsWof9T.js.gz +0 -0
- package/build/client/_app/immutable/chunks/jhtvkF_A.js +1 -0
- package/build/client/_app/immutable/chunks/jhtvkF_A.js.br +0 -0
- package/build/client/_app/immutable/chunks/jhtvkF_A.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{Mj3AXROx.js → s4upGypb.js} +1 -1
- package/build/client/_app/immutable/chunks/s4upGypb.js.br +0 -0
- package/build/client/_app/immutable/chunks/s4upGypb.js.gz +0 -0
- package/build/client/_app/immutable/entry/{app.8wJBndTj.js → app.BhaNzXRa.js} +2 -2
- package/build/client/_app/immutable/entry/app.BhaNzXRa.js.br +0 -0
- package/build/client/_app/immutable/entry/app.BhaNzXRa.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.mqdezZzO.js +1 -0
- package/build/client/_app/immutable/entry/start.mqdezZzO.js.br +0 -0
- package/build/client/_app/immutable/entry/start.mqdezZzO.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{1.BeVZsPun.js → 1.B8IsMtPo.js} +1 -1
- package/build/client/_app/immutable/nodes/1.B8IsMtPo.js.br +1 -0
- package/build/client/_app/immutable/nodes/1.B8IsMtPo.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{4.BAthCCnr.js → 4.Jf5TbLTF.js} +9 -9
- package/build/client/_app/immutable/nodes/4.Jf5TbLTF.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.Jf5TbLTF.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{5.Ci-IDy_L.js → 5.BXOM2W9q.js} +1 -1
- package/build/client/_app/immutable/nodes/5.BXOM2W9q.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.BXOM2W9q.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{6._GM9bF5h.js → 6.fVxTNYsE.js} +1 -1
- package/build/client/_app/immutable/nodes/6.fVxTNYsE.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.fVxTNYsE.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{7.Cx4EVpki.js → 7.E4FAL2cc.js} +1 -1
- package/build/client/_app/immutable/nodes/7.E4FAL2cc.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.E4FAL2cc.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{8.p0qRhws4.js → 8.By5-pJpM.js} +1 -1
- package/build/client/_app/immutable/nodes/8.By5-pJpM.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.By5-pJpM.js.gz +0 -0
- package/build/client/_app/immutable/nodes/9.HfUnLyFj.js +2 -0
- package/build/client/_app/immutable/nodes/9.HfUnLyFj.js.br +0 -0
- package/build/client/_app/immutable/nodes/9.HfUnLyFj.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/client/setup/wizard.css +134 -389
- package/build/client/setup/wizard.css.br +0 -0
- package/build/client/setup/wizard.css.gz +0 -0
- package/build/server/chunks/{0-CTzT7i_m.js → 0-BK7D9z9V.js} +3 -3
- package/build/server/chunks/{0-CTzT7i_m.js.map → 0-BK7D9z9V.js.map} +1 -1
- package/build/server/chunks/1-DiEYpQIN.js +9 -0
- package/build/server/chunks/{1-DTcDogB5.js.map → 1-DiEYpQIN.js.map} +1 -1
- package/build/server/chunks/4-pHqpXb3H.js +9 -0
- package/build/server/chunks/{4-Dn-0_RAr.js.map → 4-pHqpXb3H.js.map} +1 -1
- package/build/server/chunks/5-D48D_0uX.js +9 -0
- package/build/server/chunks/{5-Cbcb8WMr.js.map → 5-D48D_0uX.js.map} +1 -1
- package/build/server/chunks/{6-CUZpLn9e.js → 6-CQ5NktVc.js} +3 -3
- package/build/server/chunks/{6-CUZpLn9e.js.map → 6-CQ5NktVc.js.map} +1 -1
- package/build/server/chunks/7-Cbs2uIrU.js +9 -0
- package/build/server/chunks/{7-C0-ssq7j.js.map → 7-Cbs2uIrU.js.map} +1 -1
- package/build/server/chunks/{8-CIt0k_cP.js → 8-Cp8CGb0N.js} +3 -3
- package/build/server/chunks/{8-CIt0k_cP.js.map → 8-Cp8CGb0N.js.map} +1 -1
- package/build/server/chunks/9-BKnkc58p.js +9 -0
- package/build/server/chunks/{9-B8DzptsC.js.map → 9-BKnkc58p.js.map} +1 -1
- package/build/server/chunks/{Navbar-F9NE4GcT.js → Navbar-PVEly3CX.js} +3 -3
- package/build/server/chunks/{Navbar-F9NE4GcT.js.map → Navbar-PVEly3CX.js.map} +1 -1
- package/build/server/chunks/VoiceProfileSelector-CbOV_v5A.js.map +1 -1
- package/build/server/chunks/{_page.svelte-CqEu-vpE.js → _page.svelte-B1SlSu-R.js} +5 -5
- package/build/server/chunks/{_page.svelte-CqEu-vpE.js.map → _page.svelte-B1SlSu-R.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-DnwUHFZ8.js → _page.svelte-BY2APmQv.js} +5 -5
- package/build/server/chunks/{_page.svelte-DnwUHFZ8.js.map → _page.svelte-BY2APmQv.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-DLAHj-kk.js → _page.svelte-CDCe-J7o.js} +4 -2
- package/build/server/chunks/_page.svelte-CDCe-J7o.js.map +1 -0
- package/build/server/chunks/{_page.svelte-BgAgZqQA.js → _page.svelte-CF6Wb9iE.js} +6 -6
- package/build/server/chunks/_page.svelte-CF6Wb9iE.js.map +1 -0
- package/build/server/chunks/{_page.svelte-DeJqqBhp.js → _page.svelte-DadWXVrr.js} +5 -5
- package/build/server/chunks/{_page.svelte-DeJqqBhp.js.map → _page.svelte-DadWXVrr.js.map} +1 -1
- package/build/server/chunks/{_page.svelte--GbfGVnN.js → _page.svelte-DtrBTed5.js} +3 -3
- package/build/server/chunks/{_page.svelte--GbfGVnN.js.map → _page.svelte-DtrBTed5.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CPzbkayh.js → _server.ts-31Wp0zcV.js} +4 -4
- package/build/server/chunks/{_server.ts-CPzbkayh.js.map → _server.ts-31Wp0zcV.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DFL8Mq_R.js → _server.ts-8c17N53a.js} +4 -4
- package/build/server/chunks/{_server.ts-DFL8Mq_R.js.map → _server.ts-8c17N53a.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BD6Urice.js → _server.ts-B0CeVe_2.js} +4 -4
- package/build/server/chunks/{_server.ts-BD6Urice.js.map → _server.ts-B0CeVe_2.js.map} +1 -1
- package/build/server/chunks/{_server.ts-C8YMhHYj.js → _server.ts-B2vBBz6Q.js} +4 -4
- package/build/server/chunks/{_server.ts-C8YMhHYj.js.map → _server.ts-B2vBBz6Q.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DRxZJQd6.js → _server.ts-B3uweiKb.js} +6 -6
- package/build/server/chunks/{_server.ts-DRxZJQd6.js.map → _server.ts-B3uweiKb.js.map} +1 -1
- package/build/server/chunks/_server.ts-B8pCRdwo.js +95 -0
- package/build/server/chunks/_server.ts-B8pCRdwo.js.map +1 -0
- package/build/server/chunks/{_server.ts-IkgMCbAi.js → _server.ts-BBsksu6b.js} +6 -6
- package/build/server/chunks/{_server.ts-IkgMCbAi.js.map → _server.ts-BBsksu6b.js.map} +1 -1
- package/build/server/chunks/{_server.ts-B8sdNvW5.js → _server.ts-BDBz43vs.js} +4 -4
- package/build/server/chunks/{_server.ts-B8sdNvW5.js.map → _server.ts-BDBz43vs.js.map} +1 -1
- package/build/server/chunks/{_server.ts-sEc4S_v5.js → _server.ts-BLePivrN.js} +6 -6
- package/build/server/chunks/{_server.ts-sEc4S_v5.js.map → _server.ts-BLePivrN.js.map} +1 -1
- package/build/server/chunks/{_server.ts-D5Q5mczv.js → _server.ts-BMHPNIdu.js} +4 -4
- package/build/server/chunks/{_server.ts-D5Q5mczv.js.map → _server.ts-BMHPNIdu.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Bj_nJzpo.js → _server.ts-BN3w-iUI.js} +4 -4
- package/build/server/chunks/{_server.ts-Bj_nJzpo.js.map → _server.ts-BN3w-iUI.js.map} +1 -1
- package/build/server/chunks/{_server.ts-C5uu6b2a.js → _server.ts-BYUfQeRr.js} +6 -5
- package/build/server/chunks/_server.ts-BYUfQeRr.js.map +1 -0
- package/build/server/chunks/{_server.ts-DQE5fd19.js → _server.ts-BdEX6joM.js} +4 -4
- package/build/server/chunks/{_server.ts-DQE5fd19.js.map → _server.ts-BdEX6joM.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DjlikYHH.js → _server.ts-Bde_Pi6A.js} +5 -5
- package/build/server/chunks/{_server.ts-DjlikYHH.js.map → _server.ts-Bde_Pi6A.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DgIgXukK.js → _server.ts-Bh_r4-Vs.js} +5 -5
- package/build/server/chunks/{_server.ts-DgIgXukK.js.map → _server.ts-Bh_r4-Vs.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DbMkM72G.js → _server.ts-Big7vXEo.js} +4 -4
- package/build/server/chunks/{_server.ts-DbMkM72G.js.map → _server.ts-Big7vXEo.js.map} +1 -1
- package/build/server/chunks/{_server.ts-D0FZ3wh5.js → _server.ts-Bl-41j0D.js} +4 -4
- package/build/server/chunks/{_server.ts-D0FZ3wh5.js.map → _server.ts-Bl-41j0D.js.map} +1 -1
- package/build/server/chunks/{_server.ts-8iOMau6K.js → _server.ts-BnWc1lOg.js} +4 -4
- package/build/server/chunks/{_server.ts-8iOMau6K.js.map → _server.ts-BnWc1lOg.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BQZSWSLy.js → _server.ts-BoQ46bw9.js} +5 -5
- package/build/server/chunks/{_server.ts-BQZSWSLy.js.map → _server.ts-BoQ46bw9.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BlMOxGWA.js → _server.ts-BwgtyrgF.js} +7 -7
- package/build/server/chunks/_server.ts-BwgtyrgF.js.map +1 -0
- package/build/server/chunks/{_server.ts-Mycnkmlz.js → _server.ts-By47s5kb.js} +5 -5
- package/build/server/chunks/{_server.ts-Mycnkmlz.js.map → _server.ts-By47s5kb.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CsUi6NWt.js → _server.ts-C-9V_-cK.js} +4 -4
- package/build/server/chunks/{_server.ts-CsUi6NWt.js.map → _server.ts-C-9V_-cK.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DuBJyo4e.js → _server.ts-C-xID91b.js} +4 -4
- package/build/server/chunks/{_server.ts-DuBJyo4e.js.map → _server.ts-C-xID91b.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BkGQezlX.js → _server.ts-C1GoICVF.js} +6 -6
- package/build/server/chunks/{_server.ts-BkGQezlX.js.map → _server.ts-C1GoICVF.js.map} +1 -1
- package/build/server/chunks/{_server.ts-ypkZ9bJf.js → _server.ts-C25PdnDT.js} +2 -2
- package/build/server/chunks/{_server.ts-ypkZ9bJf.js.map → _server.ts-C25PdnDT.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BD0Jit8e.js → _server.ts-CCwIt_KL.js} +4 -4
- package/build/server/chunks/{_server.ts-BD0Jit8e.js.map → _server.ts-CCwIt_KL.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BVYIqRK2.js → _server.ts-CKNmPEUu.js} +4 -4
- package/build/server/chunks/{_server.ts-BVYIqRK2.js.map → _server.ts-CKNmPEUu.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DXOh4EZe.js → _server.ts-COMRHDN4.js} +7 -6
- package/build/server/chunks/_server.ts-COMRHDN4.js.map +1 -0
- package/build/server/chunks/{_server.ts-CC-mpNNj.js → _server.ts-CU1go_Ga.js} +4 -4
- package/build/server/chunks/{_server.ts-CC-mpNNj.js.map → _server.ts-CU1go_Ga.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CH8VLn03.js → _server.ts-CbZzxQR_.js} +4 -4
- package/build/server/chunks/{_server.ts-CH8VLn03.js.map → _server.ts-CbZzxQR_.js.map} +1 -1
- package/build/server/chunks/{_server.ts-vp9n_72N.js → _server.ts-Cm9oppJJ.js} +4 -4
- package/build/server/chunks/{_server.ts-vp9n_72N.js.map → _server.ts-Cm9oppJJ.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BG3UvxEU.js → _server.ts-CmMcnrpu.js} +2 -2
- package/build/server/chunks/{_server.ts-BG3UvxEU.js.map → _server.ts-CmMcnrpu.js.map} +1 -1
- package/build/server/chunks/{_server.ts-N6WIc0vw.js → _server.ts-CqkM3R41.js} +4 -4
- package/build/server/chunks/{_server.ts-N6WIc0vw.js.map → _server.ts-CqkM3R41.js.map} +1 -1
- package/build/server/chunks/{_server.ts-C7D2sok_.js → _server.ts-Cszg5Fas.js} +4 -4
- package/build/server/chunks/{_server.ts-C7D2sok_.js.map → _server.ts-Cszg5Fas.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BrExNZ-2.js → _server.ts-CxJxINit.js} +4 -4
- package/build/server/chunks/{_server.ts-BrExNZ-2.js.map → _server.ts-CxJxINit.js.map} +1 -1
- package/build/server/chunks/{_server.ts-C5wVttUW.js → _server.ts-D-9t8-nD.js} +3 -3
- package/build/server/chunks/{_server.ts-C5wVttUW.js.map → _server.ts-D-9t8-nD.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DtC0SjIr.js → _server.ts-D1bJgR3K.js} +4 -4
- package/build/server/chunks/{_server.ts-DtC0SjIr.js.map → _server.ts-D1bJgR3K.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CQPWD_WN.js → _server.ts-D2DzSUG5.js} +4 -4
- package/build/server/chunks/{_server.ts-CQPWD_WN.js.map → _server.ts-D2DzSUG5.js.map} +1 -1
- package/build/server/chunks/{_server.ts-D4zkfcxH.js → _server.ts-D2HqJdkr.js} +4 -4
- package/build/server/chunks/{_server.ts-D4zkfcxH.js.map → _server.ts-D2HqJdkr.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BZ8wMJ7l.js → _server.ts-D2QOo_fa.js} +4 -4
- package/build/server/chunks/{_server.ts-BZ8wMJ7l.js.map → _server.ts-D2QOo_fa.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BCcQdRne.js → _server.ts-D4Vu3KCM.js} +4 -4
- package/build/server/chunks/{_server.ts-BCcQdRne.js.map → _server.ts-D4Vu3KCM.js.map} +1 -1
- package/build/server/chunks/{_server.ts-l3A6IOvJ.js → _server.ts-D68iKpcP.js} +4 -4
- package/build/server/chunks/{_server.ts-l3A6IOvJ.js.map → _server.ts-D68iKpcP.js.map} +1 -1
- package/build/server/chunks/{_server.ts-B2RCiGeA.js → _server.ts-D7vymw_o.js} +4 -4
- package/build/server/chunks/{_server.ts-B2RCiGeA.js.map → _server.ts-D7vymw_o.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DrM8VAOS.js → _server.ts-DL9CCFsk.js} +4 -4
- package/build/server/chunks/{_server.ts-DrM8VAOS.js.map → _server.ts-DL9CCFsk.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CSs35mBJ.js → _server.ts-DSBUjxDK.js} +4 -4
- package/build/server/chunks/{_server.ts-CSs35mBJ.js.map → _server.ts-DSBUjxDK.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BVCET3CA.js → _server.ts-DSlYMYYk.js} +4 -4
- package/build/server/chunks/{_server.ts-BVCET3CA.js.map → _server.ts-DSlYMYYk.js.map} +1 -1
- package/build/server/chunks/{_server.ts-_o3Yebl6.js → _server.ts-DTJuIcDg.js} +4 -4
- package/build/server/chunks/{_server.ts-_o3Yebl6.js.map → _server.ts-DTJuIcDg.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DAb50kOu.js → _server.ts-DUmy4wsR.js} +5 -5
- package/build/server/chunks/{_server.ts-DAb50kOu.js.map → _server.ts-DUmy4wsR.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Ban3zjRc.js → _server.ts-DfFo95a7.js} +4 -4
- package/build/server/chunks/{_server.ts-Ban3zjRc.js.map → _server.ts-DfFo95a7.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BYTWLTxk.js → _server.ts-Dfx9HNlr.js} +6 -7
- package/build/server/chunks/_server.ts-Dfx9HNlr.js.map +1 -0
- package/build/server/chunks/{_server.ts-DcQTtmS3.js → _server.ts-DgQDDDEz.js} +4 -4
- package/build/server/chunks/{_server.ts-DcQTtmS3.js.map → _server.ts-DgQDDDEz.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DjnK1iz8.js → _server.ts-DgZ2d-BT.js} +4 -4
- package/build/server/chunks/{_server.ts-DjnK1iz8.js.map → _server.ts-DgZ2d-BT.js.map} +1 -1
- package/build/server/chunks/{_server.ts-ccd1enMp.js → _server.ts-DijnYBzX.js} +4 -4
- package/build/server/chunks/{_server.ts-ccd1enMp.js.map → _server.ts-DijnYBzX.js.map} +1 -1
- package/build/server/chunks/{_server.ts-COORKWSc.js → _server.ts-DlzI77bJ.js} +4 -4
- package/build/server/chunks/{_server.ts-COORKWSc.js.map → _server.ts-DlzI77bJ.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Me1rXUGo.js → _server.ts-DnBzi352.js} +4 -4
- package/build/server/chunks/{_server.ts-Me1rXUGo.js.map → _server.ts-DnBzi352.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CG1nihTT.js → _server.ts-Dnh6b7-J.js} +4 -4
- package/build/server/chunks/{_server.ts-CG1nihTT.js.map → _server.ts-Dnh6b7-J.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BTGThm9P.js → _server.ts-Dvh0Hoso.js} +4 -4
- package/build/server/chunks/{_server.ts-BTGThm9P.js.map → _server.ts-Dvh0Hoso.js.map} +1 -1
- package/build/server/chunks/{_server.ts-XOLGzzNk.js → _server.ts-DwB3oRpy.js} +4 -4
- package/build/server/chunks/{_server.ts-XOLGzzNk.js.map → _server.ts-DwB3oRpy.js.map} +1 -1
- package/build/server/chunks/{_server.ts-pLeJl6U2.js → _server.ts-DxGR3bmq.js} +4 -4
- package/build/server/chunks/{_server.ts-pLeJl6U2.js.map → _server.ts-DxGR3bmq.js.map} +1 -1
- package/build/server/chunks/{_server.ts-EBySP1Ew.js → _server.ts-DzbC2VQR.js} +2 -2
- package/build/server/chunks/{_server.ts-EBySP1Ew.js.map → _server.ts-DzbC2VQR.js.map} +1 -1
- package/build/server/chunks/{_server.ts-D9HJ0cWI.js → _server.ts-GxTTkaRQ.js} +4 -4
- package/build/server/chunks/{_server.ts-D9HJ0cWI.js.map → _server.ts-GxTTkaRQ.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Cw2YXWgK.js → _server.ts-K4R4Q6b_.js} +5 -5
- package/build/server/chunks/{_server.ts-Cw2YXWgK.js.map → _server.ts-K4R4Q6b_.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DQcL5wr_.js → _server.ts-MNOR6YaX.js} +4 -4
- package/build/server/chunks/{_server.ts-DQcL5wr_.js.map → _server.ts-MNOR6YaX.js.map} +1 -1
- package/build/server/chunks/{_server.ts-__xVWUvt.js → _server.ts-MtHT_432.js} +4 -4
- package/build/server/chunks/{_server.ts-__xVWUvt.js.map → _server.ts-MtHT_432.js.map} +1 -1
- package/build/server/chunks/{_server.ts-C44tS0KC.js → _server.ts-Om-m3OOe.js} +4 -4
- package/build/server/chunks/{_server.ts-C44tS0KC.js.map → _server.ts-Om-m3OOe.js.map} +1 -1
- package/build/server/chunks/{_server.ts-iAOP7FW1.js → _server.ts-URUUrX13.js} +4 -12
- package/build/server/chunks/_server.ts-URUUrX13.js.map +1 -0
- package/build/server/chunks/{_server.ts-ZE9PYnxj.js → _server.ts-__ul4l8J.js} +4 -4
- package/build/server/chunks/_server.ts-__ul4l8J.js.map +1 -0
- package/build/server/chunks/{_server.ts-DLHN_6MC.js → _server.ts-oqC79KoF.js} +4 -4
- package/build/server/chunks/{_server.ts-DLHN_6MC.js.map → _server.ts-oqC79KoF.js.map} +1 -1
- package/build/server/chunks/{_server.ts-C1CpbG3_.js → _server.ts-w34_y9d_.js} +4 -4
- package/build/server/chunks/{_server.ts-C1CpbG3_.js.map → _server.ts-w34_y9d_.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BaxB3oQq.js → _server.ts-yvQ-qjyI.js} +4 -4
- package/build/server/chunks/{_server.ts-BaxB3oQq.js.map → _server.ts-yvQ-qjyI.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BAsbrtjL.js → _server.ts-zHkS9Tnj.js} +2 -2
- package/build/server/chunks/{_server.ts-BAsbrtjL.js.map → _server.ts-zHkS9Tnj.js.map} +1 -1
- package/build/server/chunks/{addon-helpers-B0E6L7iO.js → addon-helpers-CZyPj8WN.js} +3 -3
- package/build/server/chunks/{addon-helpers-B0E6L7iO.js.map → addon-helpers-CZyPj8WN.js.map} +1 -1
- package/build/server/chunks/{client-D0taHWmu.js → client-CiyZ88m2.js} +2 -2
- package/build/server/chunks/{client-D0taHWmu.js.map → client-CiyZ88m2.js.map} +1 -1
- package/build/server/chunks/{config-2pnPob92.js → config-BKCgm_AV.js} +2 -2
- package/build/server/chunks/{config-2pnPob92.js.map → config-BKCgm_AV.js.map} +1 -1
- package/build/server/chunks/{docker-D17EjIlp.js → docker-8AuF7CwZ.js} +2 -2
- package/build/server/chunks/{docker-D17EjIlp.js.map → docker-8AuF7CwZ.js.map} +1 -1
- package/build/server/chunks/{endpoints-DoIeO5WL.js → endpoints-DaDle7pk.js} +2 -2
- package/build/server/chunks/{endpoints-DoIeO5WL.js.map → endpoints-DaDle7pk.js.map} +1 -1
- package/build/server/chunks/{environment-B38QRFKh.js → environment-Cp1uhq6U.js} +2 -2
- package/build/server/chunks/{environment-B38QRFKh.js.map → environment-Cp1uhq6U.js.map} +1 -1
- package/build/server/chunks/{error.svelte-DB6X8EVo.js → error.svelte-m6KMTHAJ.js} +4 -4
- package/build/server/chunks/{error.svelte-DB6X8EVo.js.map → error.svelte-m6KMTHAJ.js.map} +1 -1
- package/build/server/chunks/{helpers-CeQwqpAT.js → helpers-BACi22nU.js} +34 -8
- package/build/server/chunks/helpers-BACi22nU.js.map +1 -0
- package/build/server/chunks/{hooks.server-2io-2N7D.js → hooks.server-BdyM6mgJ.js} +13 -4
- package/build/server/chunks/hooks.server-BdyM6mgJ.js.map +1 -0
- package/build/server/chunks/{http-CHmjTVGA.js → http-B8eIxVUs.js} +2 -2
- package/build/server/chunks/{http-CHmjTVGA.js.map → http-B8eIxVUs.js.map} +1 -1
- package/build/server/chunks/{internal-ClL4rso0.js → internal-BxEwVWRz.js} +3 -3
- package/build/server/chunks/{internal-ClL4rso0.js.map → internal-BxEwVWRz.js.map} +1 -1
- package/build/server/chunks/session-cookie-CFbH9CoY.js +74 -0
- package/build/server/chunks/session-cookie-CFbH9CoY.js.map +1 -0
- package/build/server/chunks/{setup-deploy-53S0fflh.js → setup-deploy-Ck_d_qcE.js} +2 -2
- package/build/server/chunks/{setup-deploy-53S0fflh.js.map → setup-deploy-Ck_d_qcE.js.map} +1 -1
- package/build/server/chunks/{src-D9YnoOnU.js → src-CQbie-rx.js} +252 -67
- package/build/server/chunks/src-CQbie-rx.js.map +1 -0
- package/build/server/chunks/{state-CO78UOQH.js → state-oN2SUx4y.js} +2 -2
- package/build/server/chunks/{state-CO78UOQH.js.map → state-oN2SUx4y.js.map} +1 -1
- package/build/server/index.js +2 -2
- package/build/server/manifest.js +86 -79
- package/build/server/manifest.js.map +1 -1
- package/package.json +2 -2
- package/build/client/_app/immutable/assets/0.DlIhzko8.css.br +0 -0
- package/build/client/_app/immutable/assets/0.DlIhzko8.css.gz +0 -0
- package/build/client/_app/immutable/assets/4.CLTnoKrH.css +0 -1
- package/build/client/_app/immutable/assets/4.CLTnoKrH.css.br +0 -0
- package/build/client/_app/immutable/assets/4.CLTnoKrH.css.gz +0 -0
- package/build/client/_app/immutable/assets/9.cpz_TytB.css +0 -1
- package/build/client/_app/immutable/assets/9.cpz_TytB.css.br +0 -0
- package/build/client/_app/immutable/assets/9.cpz_TytB.css.gz +0 -0
- package/build/client/_app/immutable/assets/VoiceProfileSelector.B8FTffwl.css +0 -1
- package/build/client/_app/immutable/assets/VoiceProfileSelector.B8FTffwl.css.br +0 -0
- package/build/client/_app/immutable/assets/VoiceProfileSelector.B8FTffwl.css.gz +0 -0
- package/build/client/_app/immutable/chunks/1sXFUT7r.js +0 -1
- package/build/client/_app/immutable/chunks/1sXFUT7r.js.br +0 -2
- package/build/client/_app/immutable/chunks/1sXFUT7r.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BNcdU8Ou.js.br +0 -0
- package/build/client/_app/immutable/chunks/BNcdU8Ou.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BQrb5YOM.js +0 -1
- package/build/client/_app/immutable/chunks/BQrb5YOM.js.br +0 -0
- package/build/client/_app/immutable/chunks/BQrb5YOM.js.gz +0 -0
- package/build/client/_app/immutable/chunks/HJd0QhDi.js.br +0 -0
- package/build/client/_app/immutable/chunks/HJd0QhDi.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Mj3AXROx.js.br +0 -0
- package/build/client/_app/immutable/chunks/Mj3AXROx.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.8wJBndTj.js.br +0 -0
- package/build/client/_app/immutable/entry/app.8wJBndTj.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.B6QaWAof.js +0 -1
- package/build/client/_app/immutable/entry/start.B6QaWAof.js.br +0 -0
- package/build/client/_app/immutable/entry/start.B6QaWAof.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.BeVZsPun.js.br +0 -1
- package/build/client/_app/immutable/nodes/1.BeVZsPun.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.BAthCCnr.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.BAthCCnr.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.Ci-IDy_L.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.Ci-IDy_L.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6._GM9bF5h.js.br +0 -0
- package/build/client/_app/immutable/nodes/6._GM9bF5h.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.Cx4EVpki.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.Cx4EVpki.js.gz +0 -0
- package/build/client/_app/immutable/nodes/8.p0qRhws4.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.p0qRhws4.js.gz +0 -0
- package/build/client/_app/immutable/nodes/9.C1MP3zci.js +0 -2
- package/build/client/_app/immutable/nodes/9.C1MP3zci.js.br +0 -0
- package/build/client/_app/immutable/nodes/9.C1MP3zci.js.gz +0 -0
- package/build/server/chunks/1-DTcDogB5.js +0 -9
- package/build/server/chunks/4-Dn-0_RAr.js +0 -9
- package/build/server/chunks/5-Cbcb8WMr.js +0 -9
- package/build/server/chunks/7-C0-ssq7j.js +0 -9
- package/build/server/chunks/9-B8DzptsC.js +0 -9
- package/build/server/chunks/_page.svelte-BgAgZqQA.js.map +0 -1
- package/build/server/chunks/_page.svelte-DLAHj-kk.js.map +0 -1
- package/build/server/chunks/_server.ts-BYTWLTxk.js.map +0 -1
- package/build/server/chunks/_server.ts-BlMOxGWA.js.map +0 -1
- package/build/server/chunks/_server.ts-C5uu6b2a.js.map +0 -1
- package/build/server/chunks/_server.ts-DXOh4EZe.js.map +0 -1
- package/build/server/chunks/_server.ts-ZE9PYnxj.js.map +0 -1
- package/build/server/chunks/_server.ts-iAOP7FW1.js.map +0 -1
- package/build/server/chunks/helpers-CeQwqpAT.js.map +0 -1
- package/build/server/chunks/hooks.server-2io-2N7D.js.map +0 -1
- package/build/server/chunks/src-D9YnoOnU.js.map +0 -1
- /package/build/client/_app/immutable/nodes/{0.rwRC6zAi.js → 0.0pi4RS6G.js} +0 -0
- /package/build/client/_app/immutable/nodes/{0.rwRC6zAi.js.br → 0.0pi4RS6G.js.br} +0 -0
- /package/build/client/_app/immutable/nodes/{0.rwRC6zAi.js.gz → 0.0pi4RS6G.js.gz} +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { _ as __commonJSMin, b as __require } from './chunk-CLZ62Ad-.js';
|
|
2
|
-
import Vt, { existsSync, readFileSync, copyFileSync, chmodSync, mkdirSync, readdirSync, writeFileSync, renameSync, rmSync, statSync, cpSync, lstatSync, openSync, constants, writeSync, closeSync, realpathSync } from 'node:fs';
|
|
2
|
+
import Vt, { existsSync, readFileSync, copyFileSync, chmodSync, mkdirSync, readdirSync, writeFileSync, renameSync, rmSync, statSync, cpSync, lstatSync, openSync, constants, writeSync, closeSync, chownSync, realpathSync } from 'node:fs';
|
|
3
3
|
import or, { basename, dirname, resolve, join, win32, posix } from 'node:path';
|
|
4
4
|
import { Buffer as Buffer$1 } from 'buffer';
|
|
5
5
|
import { homedir, tmpdir } from 'node:os';
|
|
@@ -6864,7 +6864,7 @@ function ensureHomeDirs() {
|
|
|
6864
6864
|
* On any unexpected error (permissions, ENOSPC, etc.) we return null so the
|
|
6865
6865
|
* caller surfaces "install_in_progress" rather than silently fake-acquiring.
|
|
6866
6866
|
*/
|
|
6867
|
-
var logger$
|
|
6867
|
+
var logger$10 = createLogger("install-lock");
|
|
6868
6868
|
var STALE_AFTER_MS = 1800 * 1e3;
|
|
6869
6869
|
function isProcessAlive(pid) {
|
|
6870
6870
|
try {
|
|
@@ -6931,7 +6931,7 @@ function acquireInstallLock(dataDir) {
|
|
|
6931
6931
|
try {
|
|
6932
6932
|
mkdirSync(dataDir, { recursive: true });
|
|
6933
6933
|
} catch (err) {
|
|
6934
|
-
logger$
|
|
6934
|
+
logger$10.warn("failed to ensure data dir for install lock", {
|
|
6935
6935
|
dataDir,
|
|
6936
6936
|
error: err instanceof Error ? err.message : String(err)
|
|
6937
6937
|
});
|
|
@@ -6941,18 +6941,18 @@ function acquireInstallLock(dataDir) {
|
|
|
6941
6941
|
try {
|
|
6942
6942
|
if (tryCreate(path)) return { path };
|
|
6943
6943
|
} catch (err) {
|
|
6944
|
-
logger$
|
|
6944
|
+
logger$10.warn("unexpected error acquiring install lock", {
|
|
6945
6945
|
path,
|
|
6946
6946
|
error: err instanceof Error ? err.message : String(err)
|
|
6947
6947
|
});
|
|
6948
6948
|
return null;
|
|
6949
6949
|
}
|
|
6950
6950
|
if (!isStale(path)) return null;
|
|
6951
|
-
logger$
|
|
6951
|
+
logger$10.info("removing stale install lock and retrying acquire", { path });
|
|
6952
6952
|
try {
|
|
6953
6953
|
rmSync(path, { force: true });
|
|
6954
6954
|
} catch (err) {
|
|
6955
|
-
logger$
|
|
6955
|
+
logger$10.warn("failed to remove stale install lock", {
|
|
6956
6956
|
path,
|
|
6957
6957
|
error: err instanceof Error ? err.message : String(err)
|
|
6958
6958
|
});
|
|
@@ -6961,7 +6961,7 @@ function acquireInstallLock(dataDir) {
|
|
|
6961
6961
|
try {
|
|
6962
6962
|
if (tryCreate(path)) return { path };
|
|
6963
6963
|
} catch (err) {
|
|
6964
|
-
logger$
|
|
6964
|
+
logger$10.warn("unexpected error re-acquiring install lock", {
|
|
6965
6965
|
path,
|
|
6966
6966
|
error: err instanceof Error ? err.message : String(err)
|
|
6967
6967
|
});
|
|
@@ -6974,7 +6974,7 @@ function releaseInstallLock(handle) {
|
|
|
6974
6974
|
try {
|
|
6975
6975
|
rmSync(handle.path, { force: true });
|
|
6976
6976
|
} catch (err) {
|
|
6977
|
-
logger$
|
|
6977
|
+
logger$10.warn("failed to release install lock", {
|
|
6978
6978
|
path: handle.path,
|
|
6979
6979
|
error: err instanceof Error ? err.message : String(err)
|
|
6980
6980
|
});
|
|
@@ -10665,7 +10665,7 @@ var yo = (s) => {
|
|
|
10665
10665
|
* 4. null → remote download (the UI build from the @openpalm/ui npm registry
|
|
10666
10666
|
* tarball; the .openpalm skeleton from the GitHub repo tarball)
|
|
10667
10667
|
*/
|
|
10668
|
-
var logger$
|
|
10668
|
+
var logger$9 = createLogger("lib:ui-assets");
|
|
10669
10669
|
async function fetchWithRetry(url, retries = 3) {
|
|
10670
10670
|
for (let i = 0; i < retries; i++) try {
|
|
10671
10671
|
const res = await fetch(url, { signal: AbortSignal.timeout(6e4) });
|
|
@@ -10761,7 +10761,7 @@ async function downloadNpmUiBundle(manifest, uiDir, dataDir) {
|
|
|
10761
10761
|
const data = new Uint8Array(await res.arrayBuffer());
|
|
10762
10762
|
if (!manifest.integrity) throw new Error(`npm manifest for ${UI_PACKAGE}@${manifest.version} has no integrity hash — refusing to install unverified`);
|
|
10763
10763
|
verifyNpmIntegrity(data, manifest.integrity);
|
|
10764
|
-
logger$
|
|
10764
|
+
logger$9.debug("UI bundle integrity verified", { version: manifest.version });
|
|
10765
10765
|
const tmpTar = join(dataDir, ".ui-build.tgz.tmp");
|
|
10766
10766
|
const staging = join(dataDir, ".ui-build.staging");
|
|
10767
10767
|
try {
|
|
@@ -10804,7 +10804,7 @@ async function seedUiBuild(repoRef, dataDir, options) {
|
|
|
10804
10804
|
const uiDir = join(dataDir, "ui");
|
|
10805
10805
|
mkdirSync(uiDir, { recursive: true });
|
|
10806
10806
|
const manifest = await fetchNpmUiManifest(toNpmVersion(repoRef));
|
|
10807
|
-
logger$
|
|
10807
|
+
logger$9.debug("downloading UI build from npm", { version: manifest.version });
|
|
10808
10808
|
await downloadNpmUiBundle(manifest, uiDir, dataDir);
|
|
10809
10809
|
}
|
|
10810
10810
|
//#endregion
|
|
@@ -10925,7 +10925,7 @@ function removeSecretFile(stackDir, name) {
|
|
|
10925
10925
|
//#region ../lib/src/control-plane/secrets.ts
|
|
10926
10926
|
/** Secrets and capability key management. */
|
|
10927
10927
|
var OPENCODE_STARTER_CONFIG = JSON.stringify({ $schema: "https://opencode.ai/config.json" }, null, 2) + "\n";
|
|
10928
|
-
var logger$
|
|
10928
|
+
var logger$8 = createLogger("secrets");
|
|
10929
10929
|
var VAULT_DIR_MODE = 448;
|
|
10930
10930
|
var VAULT_FILE_MODE = 384;
|
|
10931
10931
|
var SECRET_ENV_KEY_RE = /(?:^OP_UI_LOGIN_PASSWORD$|^OP_OPENCODE_PASSWORD$|_API_KEY$|_TOKEN$|_SECRET$|_PASSWORD$)/;
|
|
@@ -10945,7 +10945,7 @@ function enforceVaultDirMode(vaultDir) {
|
|
|
10945
10945
|
try {
|
|
10946
10946
|
chmodSync(vaultDir, VAULT_DIR_MODE);
|
|
10947
10947
|
} catch (error) {
|
|
10948
|
-
logger$
|
|
10948
|
+
logger$8.warn("failed to enforce vault directory permissions", {
|
|
10949
10949
|
vaultDir,
|
|
10950
10950
|
error: error instanceof Error ? error.message : String(error)
|
|
10951
10951
|
});
|
|
@@ -10956,7 +10956,7 @@ function writeVaultFile(path, content) {
|
|
|
10956
10956
|
try {
|
|
10957
10957
|
chmodSync(path, VAULT_FILE_MODE);
|
|
10958
10958
|
} catch (error) {
|
|
10959
|
-
logger$
|
|
10959
|
+
logger$8.warn("failed to enforce vault file permissions", {
|
|
10960
10960
|
path,
|
|
10961
10961
|
error: error instanceof Error ? error.message : String(error)
|
|
10962
10962
|
});
|
|
@@ -11021,7 +11021,7 @@ function ensureAuthJson(state) {
|
|
|
11021
11021
|
return;
|
|
11022
11022
|
}
|
|
11023
11023
|
} catch (error) {
|
|
11024
|
-
logger$
|
|
11024
|
+
logger$8.warn("failed to repair auth.json path", {
|
|
11025
11025
|
path: authJsonPath$1,
|
|
11026
11026
|
error: error instanceof Error ? error.message : String(error)
|
|
11027
11027
|
});
|
|
@@ -11064,12 +11064,12 @@ function writeAuthJsonProviderKeys(state, providerKeys) {
|
|
|
11064
11064
|
const corruptPath = `${authJsonPath$2}.corrupt-${(/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-")}`;
|
|
11065
11065
|
try {
|
|
11066
11066
|
renameSync(authJsonPath$2, corruptPath);
|
|
11067
|
-
logger$
|
|
11067
|
+
logger$8.warn("corrupt auth.json renamed for recovery", {
|
|
11068
11068
|
original: authJsonPath$2,
|
|
11069
11069
|
renamed: corruptPath
|
|
11070
11070
|
});
|
|
11071
11071
|
} catch (renameErr) {
|
|
11072
|
-
logger$
|
|
11072
|
+
logger$8.warn("could not rename corrupt auth.json; starting fresh", {
|
|
11073
11073
|
path: authJsonPath$2,
|
|
11074
11074
|
error: renameErr instanceof Error ? renameErr.message : String(renameErr)
|
|
11075
11075
|
});
|
|
@@ -11301,6 +11301,7 @@ async function refreshCoreAssets(version) {
|
|
|
11301
11301
|
* the rollback module (snapshot to OP_HOME/data/rollback/).
|
|
11302
11302
|
*/
|
|
11303
11303
|
var DEFAULT_IMAGE_TAG = "latest";
|
|
11304
|
+
var logger$7 = createLogger("config-persistence");
|
|
11304
11305
|
/**
|
|
11305
11306
|
* Return the env files used for docker compose --env-file args.
|
|
11306
11307
|
*
|
|
@@ -11437,6 +11438,7 @@ function ensureChannelSecret(stackDir, addon) {
|
|
|
11437
11438
|
function ensureComposeVolumeTargets(state) {
|
|
11438
11439
|
const composeFiles = discoverStackOverlays(state.stackDir, state.homeDir);
|
|
11439
11440
|
if (composeFiles.length === 0) return;
|
|
11441
|
+
const operatorIds = resolveOperatorIds(state.homeDir);
|
|
11440
11442
|
const envVars = {
|
|
11441
11443
|
...process.env,
|
|
11442
11444
|
...parseEnvFile(`${state.stashDir}/env/stack.env`)
|
|
@@ -11464,13 +11466,36 @@ function ensureComposeVolumeTargets(state) {
|
|
|
11464
11466
|
if (!resolvedHostPath.startsWith(`${homeRoot}/`) && resolvedHostPath !== homeRoot) continue;
|
|
11465
11467
|
if (existsSync(resolvedHostPath)) continue;
|
|
11466
11468
|
if ((resolvedHostPath.split("/").pop() ?? "").includes(".")) {
|
|
11467
|
-
|
|
11469
|
+
const parent = dirname(resolvedHostPath);
|
|
11470
|
+
mkdirSync(parent, { recursive: true });
|
|
11468
11471
|
writeFileSync(resolvedHostPath, "");
|
|
11469
|
-
|
|
11472
|
+
chownVolumeTarget(parent, operatorIds);
|
|
11473
|
+
chownVolumeTarget(resolvedHostPath, operatorIds);
|
|
11474
|
+
} else {
|
|
11475
|
+
mkdirSync(resolvedHostPath, { recursive: true });
|
|
11476
|
+
chownVolumeTarget(resolvedHostPath, operatorIds);
|
|
11477
|
+
}
|
|
11470
11478
|
}
|
|
11471
11479
|
}
|
|
11472
11480
|
}
|
|
11473
11481
|
}
|
|
11482
|
+
/**
|
|
11483
|
+
* chown a just-created bind-mount target to the operator UID/GID so the
|
|
11484
|
+
* non-root container (`user: ${OP_UID}:${OP_GID}`) can write to it.
|
|
11485
|
+
*
|
|
11486
|
+
* No-op on Windows (chown is meaningless there) or when no operator can be
|
|
11487
|
+
* resolved. A failure (e.g. not the owner) is logged and swallowed — the
|
|
11488
|
+
* mkdir already succeeded and Docker Desktop's gRPC-FUSE masks ownership
|
|
11489
|
+
* anyway, so a chown failure must not abort the install.
|
|
11490
|
+
*/
|
|
11491
|
+
function chownVolumeTarget(path, operatorIds) {
|
|
11492
|
+
if (process.platform === "win32" || !operatorIds) return;
|
|
11493
|
+
try {
|
|
11494
|
+
chownSync(path, operatorIds.uid, operatorIds.gid);
|
|
11495
|
+
} catch (error) {
|
|
11496
|
+
logger$7.warn(`Could not chown volume target ${path} to ${operatorIds.uid}:${operatorIds.gid}: ${error instanceof Error ? error.message : String(error)}`);
|
|
11497
|
+
}
|
|
11498
|
+
}
|
|
11474
11499
|
function writeRuntimeFiles(state) {
|
|
11475
11500
|
mkdirSync(state.stackDir, { recursive: true });
|
|
11476
11501
|
const composePath = `${state.stackDir}/core.compose.yml`;
|
|
@@ -11527,7 +11552,7 @@ function canonicalAddonProfileSelection(addon, profile) {
|
|
|
11527
11552
|
* the runtime source of truth.
|
|
11528
11553
|
*/
|
|
11529
11554
|
var VALID_NAME_RE = /^[a-z0-9][a-z0-9-]{0,62}$/;
|
|
11530
|
-
var logger$
|
|
11555
|
+
var logger$6 = createLogger("registry");
|
|
11531
11556
|
var BUILTIN_ADDONS = [
|
|
11532
11557
|
"api",
|
|
11533
11558
|
"chat",
|
|
@@ -11728,7 +11753,7 @@ function readAddonServiceNamesFromContent(composeContent, composePath, addonName
|
|
|
11728
11753
|
return Array.isArray(profiles) && profiles.some((p) => typeof p === "string" && p.startsWith(`addon.${addonName}`));
|
|
11729
11754
|
}).map(([serviceName]) => serviceName);
|
|
11730
11755
|
} catch (error) {
|
|
11731
|
-
logger$
|
|
11756
|
+
logger$6.warn("failed to parse addon compose services", {
|
|
11732
11757
|
composePath,
|
|
11733
11758
|
error: error instanceof Error ? error.message : String(error)
|
|
11734
11759
|
});
|
|
@@ -11895,7 +11920,7 @@ function readAddonProfilesFromContent(composeContent, composePath) {
|
|
|
11895
11920
|
try {
|
|
11896
11921
|
parsed = (0, import_dist.parse)(composeContent);
|
|
11897
11922
|
} catch (error) {
|
|
11898
|
-
logger$
|
|
11923
|
+
logger$6.warn("failed to parse addon compose profiles", {
|
|
11899
11924
|
composePath,
|
|
11900
11925
|
error: error instanceof Error ? error.message : String(error)
|
|
11901
11926
|
});
|
|
@@ -12059,6 +12084,7 @@ function setAddonEnabled(homeDir, stackDir, name, enabled, state) {
|
|
|
12059
12084
|
"discord",
|
|
12060
12085
|
"slack"
|
|
12061
12086
|
]) ensureChannelSecret(stackDir, channel);
|
|
12087
|
+
if (state) ensureComposeVolumeTargets(state);
|
|
12062
12088
|
}
|
|
12063
12089
|
return {
|
|
12064
12090
|
ok: true,
|
|
@@ -12594,7 +12620,7 @@ function importHostProfiles(state, hostConfigPath) {
|
|
|
12594
12620
|
* We never write into the user's personal ~/.config/akm here. (Letting the host
|
|
12595
12621
|
* akm see OpenPalm's knowledge is a future, explicit opt-in.)
|
|
12596
12622
|
*/
|
|
12597
|
-
var logger$
|
|
12623
|
+
var logger$5 = createLogger("host-akm-sharing");
|
|
12598
12624
|
var ENV_KEY = "OP_HOST_AKM_STASH";
|
|
12599
12625
|
function userHome() {
|
|
12600
12626
|
return process.env.HOME ?? process.env.USERPROFILE ?? homedir();
|
|
@@ -12636,7 +12662,7 @@ function enableHostAkmSharing(state, opts = {}) {
|
|
|
12636
12662
|
addHostStashToOpenpalmConfig(state, opts.writable ?? true);
|
|
12637
12663
|
let profilesImported = [];
|
|
12638
12664
|
if (opts.importProfiles) profilesImported = importHostProfiles(state, hostAkmConfigPath()).imported;
|
|
12639
|
-
logger$
|
|
12665
|
+
logger$5.info("host akm sharing enabled", {
|
|
12640
12666
|
hostStashPath: hostAkmStashPath(),
|
|
12641
12667
|
profilesImported
|
|
12642
12668
|
});
|
|
@@ -12649,7 +12675,7 @@ function enableHostAkmSharing(state, opts = {}) {
|
|
|
12649
12675
|
*/
|
|
12650
12676
|
function disableHostAkmSharing(state) {
|
|
12651
12677
|
removeHostAkmSource(state);
|
|
12652
|
-
logger$
|
|
12678
|
+
logger$5.info("host akm sharing disabled");
|
|
12653
12679
|
}
|
|
12654
12680
|
/** Report availability + whether the host-akm source is currently configured. */
|
|
12655
12681
|
function getHostAkmSharingStatus(state) {
|
|
@@ -12870,7 +12896,7 @@ async function validateProposedState(state) {
|
|
|
12870
12896
|
};
|
|
12871
12897
|
}
|
|
12872
12898
|
/** Execute docker with an argument array — no shell interpolation. */
|
|
12873
|
-
function run(args, cwd, timeoutMs = 12e4, envOverrides) {
|
|
12899
|
+
function run$1(args, cwd, timeoutMs = 12e4, envOverrides) {
|
|
12874
12900
|
return new Promise((resolve) => {
|
|
12875
12901
|
execFile("docker", args, {
|
|
12876
12902
|
cwd,
|
|
@@ -12954,7 +12980,7 @@ function collectEnvOverrides(envFiles) {
|
|
|
12954
12980
|
async function composePreflight(options) {
|
|
12955
12981
|
const args = buildComposeArgs(options);
|
|
12956
12982
|
args.push("config", "--quiet");
|
|
12957
|
-
return run(args, void 0, 3e4, collectEnvOverrides(options.envFiles));
|
|
12983
|
+
return run$1(args, void 0, 3e4, collectEnvOverrides(options.envFiles));
|
|
12958
12984
|
}
|
|
12959
12985
|
/**
|
|
12960
12986
|
* Run compose config preflight validation before any mutation.
|
|
@@ -12974,7 +13000,7 @@ async function runPreflight(options) {
|
|
|
12974
13000
|
async function composeConfigServices(options) {
|
|
12975
13001
|
const args = buildComposeArgs(options);
|
|
12976
13002
|
args.push("config", "--services");
|
|
12977
|
-
const result = await run(args, void 0, 3e4, collectEnvOverrides(options.envFiles));
|
|
13003
|
+
const result = await run$1(args, void 0, 3e4, collectEnvOverrides(options.envFiles));
|
|
12978
13004
|
if (!result.ok) return {
|
|
12979
13005
|
ok: false,
|
|
12980
13006
|
services: []
|
|
@@ -13001,7 +13027,7 @@ async function composeUp(options) {
|
|
|
13001
13027
|
if (options.forceRecreate) args.push("--force-recreate");
|
|
13002
13028
|
if (options.removeOrphans) args.push("--remove-orphans");
|
|
13003
13029
|
if (options.services?.length) args.push(...options.services);
|
|
13004
|
-
return run(args, void 0, 3e5, collectEnvOverrides(options.envFiles));
|
|
13030
|
+
return run$1(args, void 0, 3e5, collectEnvOverrides(options.envFiles));
|
|
13005
13031
|
}
|
|
13006
13032
|
/**
|
|
13007
13033
|
* Run `docker compose down` to stop and remove containers.
|
|
@@ -13017,7 +13043,7 @@ async function composeDown(options) {
|
|
|
13017
13043
|
const args = buildComposeArgs(options);
|
|
13018
13044
|
args.push("down");
|
|
13019
13045
|
if (options.removeVolumes) args.push("-v");
|
|
13020
|
-
return run(args, void 0);
|
|
13046
|
+
return run$1(args, void 0);
|
|
13021
13047
|
}
|
|
13022
13048
|
/**
|
|
13023
13049
|
* Restart specific services.
|
|
@@ -13033,7 +13059,7 @@ async function composeRestart(services, options) {
|
|
|
13033
13059
|
};
|
|
13034
13060
|
const args = buildComposeArgs(options);
|
|
13035
13061
|
args.push("restart", ...services);
|
|
13036
|
-
return run(args, void 0);
|
|
13062
|
+
return run$1(args, void 0);
|
|
13037
13063
|
}
|
|
13038
13064
|
/**
|
|
13039
13065
|
* Stop specific services.
|
|
@@ -13042,7 +13068,7 @@ async function composeStop(services, options) {
|
|
|
13042
13068
|
await runPreflight(options);
|
|
13043
13069
|
const args = buildComposeArgs(options);
|
|
13044
13070
|
args.push("stop", ...services);
|
|
13045
|
-
return run(args, void 0);
|
|
13071
|
+
return run$1(args, void 0);
|
|
13046
13072
|
}
|
|
13047
13073
|
/**
|
|
13048
13074
|
* Start specific services (must already be created).
|
|
@@ -13051,14 +13077,14 @@ async function composeStart(services, options) {
|
|
|
13051
13077
|
await runPreflight(options);
|
|
13052
13078
|
const args = buildComposeArgs(options);
|
|
13053
13079
|
args.push("up", "-d", ...services);
|
|
13054
|
-
return run(args, void 0);
|
|
13080
|
+
return run$1(args, void 0);
|
|
13055
13081
|
}
|
|
13056
13082
|
/**
|
|
13057
13083
|
* Get the status of all containers in the project.
|
|
13058
13084
|
*/
|
|
13059
13085
|
async function composePs(options) {
|
|
13060
13086
|
const primaryFile = options.files[0];
|
|
13061
|
-
if (!existsSync(primaryFile)) return run([
|
|
13087
|
+
if (!existsSync(primaryFile)) return run$1([
|
|
13062
13088
|
"ps",
|
|
13063
13089
|
"--filter",
|
|
13064
13090
|
`label=com.docker.compose.project=${resolveComposeProjectName()}`,
|
|
@@ -13067,7 +13093,7 @@ async function composePs(options) {
|
|
|
13067
13093
|
], void 0);
|
|
13068
13094
|
const args = buildComposeArgs(options);
|
|
13069
13095
|
args.push("ps", "--format", "json");
|
|
13070
|
-
return run(args, void 0);
|
|
13096
|
+
return run$1(args, void 0);
|
|
13071
13097
|
}
|
|
13072
13098
|
/**
|
|
13073
13099
|
* Get logs for specific services or all services.
|
|
@@ -13077,14 +13103,14 @@ async function composeLogs(services, tail, options) {
|
|
|
13077
13103
|
args.push("logs", "--tail", String(tail));
|
|
13078
13104
|
if (options.since) args.push("--since", options.since);
|
|
13079
13105
|
if (services && services.length > 0) args.push(...services);
|
|
13080
|
-
return run(args, void 0);
|
|
13106
|
+
return run$1(args, void 0);
|
|
13081
13107
|
}
|
|
13082
13108
|
var PULL_TIMEOUT_MS = 60 * 6e4;
|
|
13083
13109
|
async function composePull(options) {
|
|
13084
13110
|
await runPreflight(options);
|
|
13085
13111
|
const args = buildComposeArgs(options);
|
|
13086
13112
|
args.push("pull");
|
|
13087
|
-
return run(args, void 0, PULL_TIMEOUT_MS, collectEnvOverrides(options.envFiles));
|
|
13113
|
+
return run$1(args, void 0, PULL_TIMEOUT_MS, collectEnvOverrides(options.envFiles));
|
|
13088
13114
|
}
|
|
13089
13115
|
/**
|
|
13090
13116
|
* Get resource usage stats for all containers in the project.
|
|
@@ -13092,13 +13118,13 @@ async function composePull(options) {
|
|
|
13092
13118
|
async function composeStats(options) {
|
|
13093
13119
|
const args = buildComposeArgs(options);
|
|
13094
13120
|
args.push("stats", "--no-stream", "--format", "json");
|
|
13095
|
-
return run(args, void 0);
|
|
13121
|
+
return run$1(args, void 0);
|
|
13096
13122
|
}
|
|
13097
13123
|
/**
|
|
13098
13124
|
* Get recent Docker events for the compose project.
|
|
13099
13125
|
*/
|
|
13100
13126
|
async function getDockerEvents(projectName, since = "1h") {
|
|
13101
|
-
return run([
|
|
13127
|
+
return run$1([
|
|
13102
13128
|
"events",
|
|
13103
13129
|
"--filter",
|
|
13104
13130
|
`label=com.docker.compose.project=${projectName}`,
|
|
@@ -13249,10 +13275,23 @@ function resolveNewestDockerTag(payload) {
|
|
|
13249
13275
|
}
|
|
13250
13276
|
return fallback;
|
|
13251
13277
|
}
|
|
13252
|
-
|
|
13253
|
-
const
|
|
13254
|
-
const namespace = (parseEnvFile(systemEnvPath).OP_IMAGE_NAMESPACE ?? process.env.OP_IMAGE_NAMESPACE ?? "openpalm").trim().toLowerCase();
|
|
13278
|
+
function resolveImageNamespace(state) {
|
|
13279
|
+
const namespace = (parseEnvFile(`${state.stashDir}/env/stack.env`).OP_IMAGE_NAMESPACE ?? process.env.OP_IMAGE_NAMESPACE ?? "openpalm").trim().toLowerCase();
|
|
13255
13280
|
if (!IMAGE_NAMESPACE_RE.test(namespace)) throw new Error(`Invalid image namespace in system.env: ${namespace}`);
|
|
13281
|
+
return namespace;
|
|
13282
|
+
}
|
|
13283
|
+
/**
|
|
13284
|
+
* Resolve the newest published platform tag from the Docker registry.
|
|
13285
|
+
*
|
|
13286
|
+
* `assistant` is the version-of-record image: all platform images
|
|
13287
|
+
* (assistant, guardian, channel, voice) are published in lockstep under the
|
|
13288
|
+
* same OP_IMAGE_TAG, so its newest tag is the canonical platform version.
|
|
13289
|
+
*
|
|
13290
|
+
* Used both to auto-detect during "Update now" and to resolve a requested
|
|
13291
|
+
* `latest` selection into a concrete release tag before fetching stack assets
|
|
13292
|
+
* (GitHub has no asset tree at a `latest` ref).
|
|
13293
|
+
*/
|
|
13294
|
+
async function resolveLatestPlatformTag(namespace) {
|
|
13256
13295
|
let response;
|
|
13257
13296
|
try {
|
|
13258
13297
|
response = await fetch(`https://registry.hub.docker.com/v2/repositories/${namespace}/assistant/tags?page_size=25&ordering=last_updated`, { headers: { Accept: "application/json" } });
|
|
@@ -13262,6 +13301,12 @@ async function updateStackEnvToLatestImageTag(state) {
|
|
|
13262
13301
|
if (!response.ok) throw new Error(`Docker tag lookup failed (${response.status})`);
|
|
13263
13302
|
const latestTag = resolveNewestDockerTag(await response.json());
|
|
13264
13303
|
if (!latestTag) throw new Error("No usable Docker image tag found");
|
|
13304
|
+
return latestTag;
|
|
13305
|
+
}
|
|
13306
|
+
async function updateStackEnvToLatestImageTag(state) {
|
|
13307
|
+
const systemEnvPath = `${state.stashDir}/env/stack.env`;
|
|
13308
|
+
const namespace = resolveImageNamespace(state);
|
|
13309
|
+
const latestTag = await resolveLatestPlatformTag(namespace);
|
|
13265
13310
|
writeFileSync(systemEnvPath, mergeEnvContent(existsSync(systemEnvPath) ? readFileSync(systemEnvPath, "utf-8") : "", { OP_IMAGE_TAG: latestTag }, { uncomment: true }));
|
|
13266
13311
|
return {
|
|
13267
13312
|
namespace,
|
|
@@ -13315,6 +13360,7 @@ async function performUpgrade(state) {
|
|
|
13315
13360
|
const upResult = await composeUp({
|
|
13316
13361
|
...composeOpts,
|
|
13317
13362
|
services,
|
|
13363
|
+
forceRecreate: true,
|
|
13318
13364
|
removeOrphans: true
|
|
13319
13365
|
});
|
|
13320
13366
|
if (!upResult.ok) throw new Error(`Images pulled but failed to recreate containers: ${upResult.stderr}`);
|
|
@@ -13331,12 +13377,21 @@ async function performUpgrade(state) {
|
|
|
13331
13377
|
* Used by the admin "set version" action — skips the auto-detect step in performUpgrade.
|
|
13332
13378
|
*/
|
|
13333
13379
|
async function applyTagChange(state, tag) {
|
|
13380
|
+
const namespace = resolveImageNamespace(state);
|
|
13381
|
+
const requested = tag.trim();
|
|
13382
|
+
let resolvedTag = requested;
|
|
13383
|
+
if (requested === "" || requested.toLowerCase() === "latest") try {
|
|
13384
|
+
resolvedTag = await resolveLatestPlatformTag(namespace);
|
|
13385
|
+
} catch (e) {
|
|
13386
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
13387
|
+
throw new Error(`Cannot resolve "latest" to a concrete release: ${msg}. Check your network connection or select a specific version.`);
|
|
13388
|
+
}
|
|
13334
13389
|
const stackEnvPath = `${state.stashDir}/env/stack.env`;
|
|
13335
|
-
writeFileSync(stackEnvPath, mergeEnvContent(existsSync(stackEnvPath) ? readFileSync(stackEnvPath, "utf-8") : "", { OP_IMAGE_TAG:
|
|
13336
|
-
const upgradeResult = await applyUpgrade(state,
|
|
13390
|
+
writeFileSync(stackEnvPath, mergeEnvContent(existsSync(stackEnvPath) ? readFileSync(stackEnvPath, "utf-8") : "", { OP_IMAGE_TAG: resolvedTag }, { uncomment: true }));
|
|
13391
|
+
const upgradeResult = await applyUpgrade(state, resolvedTag);
|
|
13337
13392
|
return {
|
|
13338
|
-
imageTag:
|
|
13339
|
-
namespace
|
|
13393
|
+
imageTag: resolvedTag,
|
|
13394
|
+
namespace,
|
|
13340
13395
|
backupDir: upgradeResult.backupDir,
|
|
13341
13396
|
assetsUpdated: upgradeResult.updated,
|
|
13342
13397
|
restarted: upgradeResult.restarted
|
|
@@ -13347,13 +13402,16 @@ function buildComposeFileList(state) {
|
|
|
13347
13402
|
}
|
|
13348
13403
|
async function buildManagedServices(state) {
|
|
13349
13404
|
const composeOpts = buildComposeOptions(state);
|
|
13405
|
+
const services = new Set(CORE_SERVICES);
|
|
13350
13406
|
if (composeOpts.files.length > 0 && !process.env.OP_SKIP_COMPOSE_PREFLIGHT) {
|
|
13351
13407
|
const result = await composeConfigServices(composeOpts);
|
|
13352
|
-
if (result.ok && result.services.length > 0)
|
|
13408
|
+
if (result.ok && result.services.length > 0) {
|
|
13409
|
+
for (const s of result.services) services.add(s);
|
|
13410
|
+
return [...services];
|
|
13411
|
+
}
|
|
13353
13412
|
}
|
|
13354
|
-
const
|
|
13355
|
-
|
|
13356
|
-
return services;
|
|
13413
|
+
for (const addon of listEnabledAddonIds(state.homeDir)) for (const s of getAddonServiceNames(state.homeDir, addon)) services.add(s);
|
|
13414
|
+
return [...services];
|
|
13357
13415
|
}
|
|
13358
13416
|
//#endregion
|
|
13359
13417
|
//#region ../lib/src/control-plane/markdown-task.ts
|
|
@@ -13365,14 +13423,14 @@ async function buildManagedServices(state) {
|
|
|
13365
13423
|
* prompt — `prompt: <text>` inline prompt text
|
|
13366
13424
|
* workflow — `workflow: workflow:<ref>` + optional `params` map
|
|
13367
13425
|
*/
|
|
13368
|
-
var logger$
|
|
13426
|
+
var logger$4 = createLogger("task-file");
|
|
13369
13427
|
function parseMarkdownTask(filePath) {
|
|
13370
13428
|
const id = basename(filePath).replace(/\.(?:ya?ml|md)$/, "");
|
|
13371
13429
|
let raw;
|
|
13372
13430
|
try {
|
|
13373
13431
|
raw = readFileSync(filePath, "utf-8");
|
|
13374
13432
|
} catch (err) {
|
|
13375
|
-
logger$
|
|
13433
|
+
logger$4.warn("failed to read task file", {
|
|
13376
13434
|
filePath,
|
|
13377
13435
|
error: String(err)
|
|
13378
13436
|
});
|
|
@@ -13383,12 +13441,12 @@ function parseMarkdownTask(filePath) {
|
|
|
13383
13441
|
try {
|
|
13384
13442
|
const parsed = (0, import_dist.parse)(frontmatter);
|
|
13385
13443
|
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
13386
|
-
logger$
|
|
13444
|
+
logger$4.warn("task YAML is not an object", { filePath });
|
|
13387
13445
|
return null;
|
|
13388
13446
|
}
|
|
13389
13447
|
fm = parsed;
|
|
13390
13448
|
} catch (err) {
|
|
13391
|
-
logger$
|
|
13449
|
+
logger$4.warn("failed to parse task YAML", {
|
|
13392
13450
|
filePath,
|
|
13393
13451
|
error: String(err)
|
|
13394
13452
|
});
|
|
@@ -13396,14 +13454,14 @@ function parseMarkdownTask(filePath) {
|
|
|
13396
13454
|
}
|
|
13397
13455
|
const schedule = fm.schedule;
|
|
13398
13456
|
if (typeof schedule !== "string" || !schedule.trim()) {
|
|
13399
|
-
logger$
|
|
13457
|
+
logger$4.warn("task missing or empty 'schedule'", { filePath });
|
|
13400
13458
|
return null;
|
|
13401
13459
|
}
|
|
13402
13460
|
let target;
|
|
13403
13461
|
if (fm.command !== void 0) {
|
|
13404
13462
|
const cmd = Array.isArray(fm.command) ? fm.command.map(String) : typeof fm.command === "string" ? [fm.command] : null;
|
|
13405
13463
|
if (!cmd || cmd.length === 0) {
|
|
13406
|
-
logger$
|
|
13464
|
+
logger$4.warn("task 'command' must be a non-empty array", { filePath });
|
|
13407
13465
|
return null;
|
|
13408
13466
|
}
|
|
13409
13467
|
target = {
|
|
@@ -13412,12 +13470,12 @@ function parseMarkdownTask(filePath) {
|
|
|
13412
13470
|
};
|
|
13413
13471
|
} else if (fm.prompt !== void 0) {
|
|
13414
13472
|
if (typeof fm.prompt !== "string" || !fm.prompt.trim()) {
|
|
13415
|
-
logger$
|
|
13473
|
+
logger$4.warn("task 'prompt' must be a non-empty string", { filePath });
|
|
13416
13474
|
return null;
|
|
13417
13475
|
}
|
|
13418
13476
|
const promptBody = fm.prompt.trim() === "inline" ? body.trim() : fm.prompt.trim();
|
|
13419
13477
|
if (!promptBody) {
|
|
13420
|
-
logger$
|
|
13478
|
+
logger$4.warn("task prompt body is empty", { filePath });
|
|
13421
13479
|
return null;
|
|
13422
13480
|
}
|
|
13423
13481
|
target = {
|
|
@@ -13427,7 +13485,7 @@ function parseMarkdownTask(filePath) {
|
|
|
13427
13485
|
};
|
|
13428
13486
|
} else if (fm.workflow !== void 0) {
|
|
13429
13487
|
if (typeof fm.workflow !== "string") {
|
|
13430
|
-
logger$
|
|
13488
|
+
logger$4.warn("task 'workflow' must be a string ref", { filePath });
|
|
13431
13489
|
return null;
|
|
13432
13490
|
}
|
|
13433
13491
|
target = {
|
|
@@ -13436,7 +13494,7 @@ function parseMarkdownTask(filePath) {
|
|
|
13436
13494
|
params: fm.params && typeof fm.params === "object" && !Array.isArray(fm.params) ? fm.params : {}
|
|
13437
13495
|
};
|
|
13438
13496
|
} else {
|
|
13439
|
-
logger$
|
|
13497
|
+
logger$4.warn("task must have one of: command, prompt, workflow", { filePath });
|
|
13440
13498
|
return null;
|
|
13441
13499
|
}
|
|
13442
13500
|
return {
|
|
@@ -13653,7 +13711,7 @@ function readUserEnvFile(envPath) {
|
|
|
13653
13711
|
* Scheduling is handled by the OS cron daemon (via `akm tasks sync`).
|
|
13654
13712
|
* Execution is handled by `akm tasks run <id>`.
|
|
13655
13713
|
*/
|
|
13656
|
-
var logger$
|
|
13714
|
+
var logger$3 = createLogger("scheduler");
|
|
13657
13715
|
function loadAutomations(stashDir) {
|
|
13658
13716
|
return loadMarkdownTasks(stashDir).map(taskToAutomationConfig);
|
|
13659
13717
|
}
|
|
@@ -13671,7 +13729,7 @@ async function executeAutomation(id, akmEnv) {
|
|
|
13671
13729
|
} }, (error, _stdout, stderr) => {
|
|
13672
13730
|
if (error) {
|
|
13673
13731
|
const msg = stderr?.trim() || error.message;
|
|
13674
|
-
logger$
|
|
13732
|
+
logger$3.warn("akm tasks run failed", {
|
|
13675
13733
|
id: taskId,
|
|
13676
13734
|
error: msg
|
|
13677
13735
|
});
|
|
@@ -13711,7 +13769,7 @@ function readAutomationLogs(id, dataDir, limit = 50) {
|
|
|
13711
13769
|
*
|
|
13712
13770
|
* Probes well-known endpoints for Docker Model Runner, Ollama, and LM Studio.
|
|
13713
13771
|
*/
|
|
13714
|
-
var logger$
|
|
13772
|
+
var logger$2 = createLogger("local-providers");
|
|
13715
13773
|
/** Ollama's root endpoint returns "Ollama is running" — use this to distinguish from other services on :11434. */
|
|
13716
13774
|
async function validateOllamaResponse(res) {
|
|
13717
13775
|
try {
|
|
@@ -13784,13 +13842,13 @@ async function detectLocalProviders() {
|
|
|
13784
13842
|
const res = await fetch(probeUrl, { signal: AbortSignal.timeout(3e3) });
|
|
13785
13843
|
if (res.ok) {
|
|
13786
13844
|
if (validate && !await validate(res)) {
|
|
13787
|
-
logger$
|
|
13845
|
+
logger$2.debug("provider probe response failed validation", {
|
|
13788
13846
|
provider,
|
|
13789
13847
|
url: baseUrl
|
|
13790
13848
|
});
|
|
13791
13849
|
continue;
|
|
13792
13850
|
}
|
|
13793
|
-
logger$
|
|
13851
|
+
logger$2.debug("detected local provider", {
|
|
13794
13852
|
provider,
|
|
13795
13853
|
url: baseUrl
|
|
13796
13854
|
});
|
|
@@ -13809,6 +13867,133 @@ async function detectLocalProviders() {
|
|
|
13809
13867
|
}));
|
|
13810
13868
|
}
|
|
13811
13869
|
//#endregion
|
|
13870
|
+
//#region ../lib/src/control-plane/hardware-detect.ts
|
|
13871
|
+
var logger$1 = createLogger("hardware-detect");
|
|
13872
|
+
/** Parse `nvidia-smi --query-gpu=name,memory.total --format=csv,noheader,nounits`. */
|
|
13873
|
+
function parseNvidiaSmi(stdout) {
|
|
13874
|
+
return stdout.split("\n").map((line) => line.trim()).filter(Boolean).map((line) => {
|
|
13875
|
+
const idx = line.lastIndexOf(",");
|
|
13876
|
+
if (idx === -1) return null;
|
|
13877
|
+
const name = line.slice(0, idx).trim();
|
|
13878
|
+
const vramMb = Number.parseInt(line.slice(idx + 1).trim(), 10);
|
|
13879
|
+
if (!name || !Number.isFinite(vramMb)) return null;
|
|
13880
|
+
return {
|
|
13881
|
+
vendor: "nvidia",
|
|
13882
|
+
name,
|
|
13883
|
+
vramMb
|
|
13884
|
+
};
|
|
13885
|
+
}).filter((g) => g !== null);
|
|
13886
|
+
}
|
|
13887
|
+
/** Parse `rocm-smi --showmeminfo vram --showproductname --json`. */
|
|
13888
|
+
function parseRocmSmi(stdout) {
|
|
13889
|
+
let doc;
|
|
13890
|
+
try {
|
|
13891
|
+
doc = JSON.parse(stdout);
|
|
13892
|
+
} catch {
|
|
13893
|
+
return [];
|
|
13894
|
+
}
|
|
13895
|
+
const out = [];
|
|
13896
|
+
for (const card of Object.values(doc)) {
|
|
13897
|
+
if (!card || typeof card !== "object") continue;
|
|
13898
|
+
const vramKey = Object.keys(card).find((k) => /vram total memory/i.test(k));
|
|
13899
|
+
const nameKey = Object.keys(card).find((k) => /product name|card series|gfx/i.test(k));
|
|
13900
|
+
const bytes = vramKey ? Number.parseInt(String(card[vramKey]).trim(), 10) : NaN;
|
|
13901
|
+
const vramMb = Number.isFinite(bytes) ? Math.round(bytes / (1024 * 1024)) : 0;
|
|
13902
|
+
out.push({
|
|
13903
|
+
vendor: "amd",
|
|
13904
|
+
name: nameKey ? String(card[nameKey]).trim() : "AMD GPU",
|
|
13905
|
+
vramMb
|
|
13906
|
+
});
|
|
13907
|
+
}
|
|
13908
|
+
return out;
|
|
13909
|
+
}
|
|
13910
|
+
var GPU_PROBES = [{
|
|
13911
|
+
vendor: "nvidia",
|
|
13912
|
+
command: "nvidia-smi",
|
|
13913
|
+
args: ["--query-gpu=name,memory.total", "--format=csv,noheader,nounits"],
|
|
13914
|
+
parse: parseNvidiaSmi
|
|
13915
|
+
}, {
|
|
13916
|
+
vendor: "amd",
|
|
13917
|
+
command: "rocm-smi",
|
|
13918
|
+
args: [
|
|
13919
|
+
"--showmeminfo",
|
|
13920
|
+
"vram",
|
|
13921
|
+
"--showproductname",
|
|
13922
|
+
"--json"
|
|
13923
|
+
],
|
|
13924
|
+
parse: parseRocmSmi
|
|
13925
|
+
}];
|
|
13926
|
+
function run(command, args, timeoutMs = 3e3) {
|
|
13927
|
+
return new Promise((resolve) => {
|
|
13928
|
+
execFile(command, args, { timeout: timeoutMs }, (err, stdout) => {
|
|
13929
|
+
resolve(err ? null : stdout?.toString() ?? "");
|
|
13930
|
+
});
|
|
13931
|
+
});
|
|
13932
|
+
}
|
|
13933
|
+
/**
|
|
13934
|
+
* Detect the host's best GPU. Returns the highest-VRAM adapter across all probes,
|
|
13935
|
+
* or null when none is found. Never throws.
|
|
13936
|
+
*/
|
|
13937
|
+
async function detectGpu() {
|
|
13938
|
+
const found = [];
|
|
13939
|
+
await Promise.all(GPU_PROBES.map(async (probe) => {
|
|
13940
|
+
const stdout = await run(probe.command, probe.args);
|
|
13941
|
+
if (stdout === null) return;
|
|
13942
|
+
try {
|
|
13943
|
+
found.push(...probe.parse(stdout));
|
|
13944
|
+
} catch (error) {
|
|
13945
|
+
logger$1.debug("gpu probe parse failed", {
|
|
13946
|
+
vendor: probe.vendor,
|
|
13947
|
+
error: String(error)
|
|
13948
|
+
});
|
|
13949
|
+
}
|
|
13950
|
+
}));
|
|
13951
|
+
if (found.length === 0) return null;
|
|
13952
|
+
return found.reduce((best, g) => g.vramMb > best.vramMb ? g : best);
|
|
13953
|
+
}
|
|
13954
|
+
/** Ollama hardware-profile variant chosen per GPU vendor. Extend per new vendor. */
|
|
13955
|
+
var VENDOR_PROFILE_VARIANT = {
|
|
13956
|
+
nvidia: "cuda",
|
|
13957
|
+
amd: "rocm",
|
|
13958
|
+
unknown: "cpu"
|
|
13959
|
+
};
|
|
13960
|
+
function gpuToProfileVariant(gpu) {
|
|
13961
|
+
return VENDOR_PROFILE_VARIANT[gpu.vendor] ?? "cpu";
|
|
13962
|
+
}
|
|
13963
|
+
var fmtGb = (mb) => (mb / 1024).toFixed(mb % 1024 === 0 ? 0 : 1);
|
|
13964
|
+
var labelHostProviders = (h) => h.map((p) => p.provider).join(" and ");
|
|
13965
|
+
/**
|
|
13966
|
+
* Decide what setup should do, given detected providers + hardware.
|
|
13967
|
+
*
|
|
13968
|
+
* Order (first match wins):
|
|
13969
|
+
* 1. cloud provider connected -> use it.
|
|
13970
|
+
* 2. host-local provider running -> add it, proceed.
|
|
13971
|
+
* 3. capable GPU (>= threshold) -> enable in-stack Ollama.
|
|
13972
|
+
* 4. otherwise -> ask the user to connect a provider.
|
|
13973
|
+
*/
|
|
13974
|
+
function recommendSetup(input) {
|
|
13975
|
+
const { cloudProviders, hostProviders, gpu } = input;
|
|
13976
|
+
if (cloudProviders.length > 0) return {
|
|
13977
|
+
action: "use-cloud",
|
|
13978
|
+
cloudProviders
|
|
13979
|
+
};
|
|
13980
|
+
if (hostProviders.length > 0) return {
|
|
13981
|
+
action: "use-host-providers",
|
|
13982
|
+
hostProviders,
|
|
13983
|
+
alert: `No cloud AI provider was detected, but ${labelHostProviders(hostProviders)} ${hostProviders.length > 1 ? "are" : "is"} running on your computer — added automatically. Pick your models on the next step.`
|
|
13984
|
+
};
|
|
13985
|
+
if (gpu && gpu.vramMb >= 8192) return {
|
|
13986
|
+
action: "enable-ollama",
|
|
13987
|
+
profileVariant: gpuToProfileVariant(gpu),
|
|
13988
|
+
gpu,
|
|
13989
|
+
alert: `No AI provider was detected, but a capable GPU was found (${gpu.name}, ${fmtGb(gpu.vramMb)} GB). Local models via Ollama have been enabled for you.`
|
|
13990
|
+
};
|
|
13991
|
+
return {
|
|
13992
|
+
action: "connect-manually",
|
|
13993
|
+
alert: "No AI provider was detected and no GPU with enough memory for local models was found. Connect a provider to continue — sign in to a provider on the next step, or add a custom OpenAI-compatible endpoint and key."
|
|
13994
|
+
};
|
|
13995
|
+
}
|
|
13996
|
+
//#endregion
|
|
13812
13997
|
//#region ../lib/src/control-plane/compose-errors.ts
|
|
13813
13998
|
/**
|
|
13814
13999
|
* Lines we recognise as per-service failure indicators. The compose CLI
|
|
@@ -14433,5 +14618,5 @@ function importHostOpenCode(state, options = {}) {
|
|
|
14433
14618
|
};
|
|
14434
14619
|
}
|
|
14435
14620
|
|
|
14436
|
-
export {
|
|
14437
|
-
//# sourceMappingURL=src-
|
|
14621
|
+
export { importHostOpenCode as $, AKM_USER_ENV_REF as A, createState as B, CORE_SERVICES as C, deleteUserEnvKey as D, detectGpu as E, detectHostOpenCode as F, detectLocalProviders as G, disableHostAkmSharing as H, enableHostAkmSharing as I, ensureAkmUserEnv as J, ensureHomeDirs as K, ensureMigrated as L, MigrationError as M, ensureOpenCodeConfig as N, ensureOpenCodeSystemConfig as O, PROVIDER_KEY_MAP as P, ensureSecrets as Q, executeAutomation as R, fetchProviderModels as S, getAddonProfileAvailability as T, getAddonProfileSelection as U, getAddonProfiles as V, getAddonServiceNames as W, getDockerEvents as X, getHostAkmSharingStatus as Y, getRegistryAddonConfig as Z, hostAkmStashPath as _, addonProfileId as a, isAllowedService as a0, isHostAkmAvailable as a1, isSetupComplete as a2, listAvailableAddonIds as a3, listEnabledAddonIds as a4, listSecretFiles as a5, loadAutomations as a6, parseComposeStderr as a7, parseEnvFile as a8, performSetup as a9, writeUserEnvKey as aA, writeVoiceVars as aB, performUpgrade as aa, readAutomationLogs as ab, readSecret as ac, readSecretFile as ad, readStackEnv as ae, readStackRuntimeEnv as af, readStackSecretEnv as ag, readTaskFile as ah, readUserEnvFile as ai, recommendSetup as aj, removeSecretFile as ak, removeTaskFile as al, resolveComposeProjectName as am, resolveDataDir as an, resolveRuntimeFiles as ao, resolveStackDir as ap, seedUiBuild as aq, setAddonEnabled as ar, setAddonProfileSelection as as, summarizeComposeStderr as at, validateProposedState as au, writeFileAtomic as av, writeRuntimeFiles as aw, writeSecretFile as ax, writeStackSecretEnv as ay, writeTaskFile 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, buildAkmEnv as j, buildComposeOptions as k, buildManagedServices as l, checkDocker as m, checkDockerCompose as n, composeDown as o, composeLogs as p, composePreflight as q, composePs as r, composePull as s, composeRestart as t, composeStart as u, composeStats as v, composeStop as w, composeUp as x, createLogger as y, createOpenCodeClient as z };
|
|
14622
|
+
//# sourceMappingURL=src-CQbie-rx.js.map
|