@openpalm/ui 0.11.2-rc.1 → 0.11.2-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.
Files changed (291) hide show
  1. package/build/.openpalm-ui-version +1 -1
  2. package/build/client/_app/immutable/chunks/BlN3ZnFx.js +1 -0
  3. package/build/client/_app/immutable/chunks/BlN3ZnFx.js.br +2 -0
  4. package/build/client/_app/immutable/chunks/BlN3ZnFx.js.gz +0 -0
  5. package/build/client/_app/immutable/chunks/{BbsmUDEz.js → BwYwOgL0.js} +1 -1
  6. package/build/client/_app/immutable/chunks/BwYwOgL0.js.br +0 -0
  7. package/build/client/_app/immutable/chunks/BwYwOgL0.js.gz +0 -0
  8. package/build/client/_app/immutable/chunks/{BxIEEPV3.js → CtJ15aFE.js} +1 -1
  9. package/build/client/_app/immutable/chunks/CtJ15aFE.js.br +0 -0
  10. package/build/client/_app/immutable/chunks/CtJ15aFE.js.gz +0 -0
  11. package/build/client/_app/immutable/chunks/irujFCsS.js +1 -0
  12. package/build/client/_app/immutable/chunks/irujFCsS.js.br +0 -0
  13. package/build/client/_app/immutable/chunks/irujFCsS.js.gz +0 -0
  14. package/build/client/_app/immutable/chunks/{7Y-z2Cs4.js → m3raSwuG.js} +2 -2
  15. package/build/client/_app/immutable/chunks/m3raSwuG.js.br +0 -0
  16. package/build/client/_app/immutable/chunks/m3raSwuG.js.gz +0 -0
  17. package/build/client/_app/immutable/entry/{app.DamaMvOo.js → app.fUaI2Rdo.js} +2 -2
  18. package/build/client/_app/immutable/entry/app.fUaI2Rdo.js.br +0 -0
  19. package/build/client/_app/immutable/entry/app.fUaI2Rdo.js.gz +0 -0
  20. package/build/client/_app/immutable/entry/start.BG6N_rOt.js +1 -0
  21. package/build/client/_app/immutable/entry/start.BG6N_rOt.js.br +0 -0
  22. package/build/client/_app/immutable/entry/start.BG6N_rOt.js.gz +0 -0
  23. package/build/client/_app/immutable/nodes/{1.D_t9eVLg.js → 1.BeBAXMiv.js} +1 -1
  24. package/build/client/_app/immutable/nodes/1.BeBAXMiv.js.br +1 -0
  25. package/build/client/_app/immutable/nodes/1.BeBAXMiv.js.gz +0 -0
  26. package/build/client/_app/immutable/nodes/{4.rszAmyBN.js → 4.CB9FU9Zm.js} +1 -1
  27. package/build/client/_app/immutable/nodes/4.CB9FU9Zm.js.br +0 -0
  28. package/build/client/_app/immutable/nodes/4.CB9FU9Zm.js.gz +0 -0
  29. package/build/client/_app/immutable/nodes/{5.B5KOuICr.js → 5.DelM-dx-.js} +1 -1
  30. package/build/client/_app/immutable/nodes/5.DelM-dx-.js.br +0 -0
  31. package/build/client/_app/immutable/nodes/5.DelM-dx-.js.gz +0 -0
  32. package/build/client/_app/immutable/nodes/{6.Bw69iLts.js → 6.DYi42DKV.js} +1 -1
  33. package/build/client/_app/immutable/nodes/6.DYi42DKV.js.br +0 -0
  34. package/build/client/_app/immutable/nodes/6.DYi42DKV.js.gz +0 -0
  35. package/build/client/_app/immutable/nodes/{7.ockxnYPK.js → 7.D5MYpjxc.js} +1 -1
  36. package/build/client/_app/immutable/nodes/7.D5MYpjxc.js.br +0 -0
  37. package/build/client/_app/immutable/nodes/7.D5MYpjxc.js.gz +0 -0
  38. package/build/client/_app/immutable/nodes/{8.Bt2Nswbt.js → 8.BU_Xoiqy.js} +1 -1
  39. package/build/client/_app/immutable/nodes/8.BU_Xoiqy.js.br +0 -0
  40. package/build/client/_app/immutable/nodes/8.BU_Xoiqy.js.gz +0 -0
  41. package/build/client/_app/immutable/nodes/9.DKf5O9Bu.js +5 -0
  42. package/build/client/_app/immutable/nodes/9.DKf5O9Bu.js.br +0 -0
  43. package/build/client/_app/immutable/nodes/9.DKf5O9Bu.js.gz +0 -0
  44. package/build/client/_app/version.json +1 -1
  45. package/build/client/_app/version.json.br +1 -1
  46. package/build/client/_app/version.json.gz +0 -0
  47. package/build/server/chunks/1-23p5SROZ.js +9 -0
  48. package/build/server/chunks/{1-BTD70sT7.js.map → 1-23p5SROZ.js.map} +1 -1
  49. package/build/server/chunks/4-CuMCCnXO.js +9 -0
  50. package/build/server/chunks/{4-CubOOlWA.js.map → 4-CuMCCnXO.js.map} +1 -1
  51. package/build/server/chunks/5-tS9KZizI.js +9 -0
  52. package/build/server/chunks/{5-C5D5O8w1.js.map → 5-tS9KZizI.js.map} +1 -1
  53. package/build/server/chunks/{6-DCNMSRHJ.js → 6-CA1-Hqsr.js} +3 -3
  54. package/build/server/chunks/{6-DCNMSRHJ.js.map → 6-CA1-Hqsr.js.map} +1 -1
  55. package/build/server/chunks/7-CV_8QMrU.js +9 -0
  56. package/build/server/chunks/{7-jdfP4oIc.js.map → 7-CV_8QMrU.js.map} +1 -1
  57. package/build/server/chunks/{8-Dd434AgX.js → 8-D2EzFser.js} +3 -3
  58. package/build/server/chunks/{8-Dd434AgX.js.map → 8-D2EzFser.js.map} +1 -1
  59. package/build/server/chunks/{9-Dj1CAYUs.js → 9-BvZnD9GJ.js} +2 -2
  60. package/build/server/chunks/{9-Dj1CAYUs.js.map → 9-BvZnD9GJ.js.map} +1 -1
  61. package/build/server/chunks/{Navbar-Bbr28xK9.js → Navbar-Dm7pkDhZ.js} +3 -3
  62. package/build/server/chunks/{Navbar-Bbr28xK9.js.map → Navbar-Dm7pkDhZ.js.map} +1 -1
  63. package/build/server/chunks/VoiceProfileSelector-CbOV_v5A.js.map +1 -1
  64. package/build/server/chunks/_page.svelte-B0M8mXzs.js.map +1 -1
  65. package/build/server/chunks/{_page.svelte-D-uhfsj5.js → _page.svelte-CYUINSKQ.js} +6 -6
  66. package/build/server/chunks/{_page.svelte-D-uhfsj5.js.map → _page.svelte-CYUINSKQ.js.map} +1 -1
  67. package/build/server/chunks/{_page.svelte-D7VlbGXj.js → _page.svelte-CrclcTXV.js} +5 -5
  68. package/build/server/chunks/{_page.svelte-D7VlbGXj.js.map → _page.svelte-CrclcTXV.js.map} +1 -1
  69. package/build/server/chunks/{_page.svelte-Dfe5FJdv.js → _page.svelte-DPqiqjFF.js} +5 -5
  70. package/build/server/chunks/{_page.svelte-Dfe5FJdv.js.map → _page.svelte-DPqiqjFF.js.map} +1 -1
  71. package/build/server/chunks/{_page.svelte-4qKAK6Tb.js → _page.svelte-DVLQpkdr.js} +5 -5
  72. package/build/server/chunks/{_page.svelte-4qKAK6Tb.js.map → _page.svelte-DVLQpkdr.js.map} +1 -1
  73. package/build/server/chunks/{_page.svelte-fkfNgz2M.js → _page.svelte-Dvp-f5ix.js} +3 -3
  74. package/build/server/chunks/{_page.svelte-fkfNgz2M.js.map → _page.svelte-Dvp-f5ix.js.map} +1 -1
  75. package/build/server/chunks/{_server.ts-BAmfRgDu.js → _server.ts--Tudx42m.js} +4 -4
  76. package/build/server/chunks/{_server.ts-BAmfRgDu.js.map → _server.ts--Tudx42m.js.map} +1 -1
  77. package/build/server/chunks/{_server.ts-C3UA92-P.js → _server.ts-B7LzOane.js} +4 -4
  78. package/build/server/chunks/{_server.ts-C3UA92-P.js.map → _server.ts-B7LzOane.js.map} +1 -1
  79. package/build/server/chunks/{_server.ts-oLxKZF14.js → _server.ts-B9yc2ML4.js} +6 -6
  80. package/build/server/chunks/{_server.ts-oLxKZF14.js.map → _server.ts-B9yc2ML4.js.map} +1 -1
  81. package/build/server/chunks/{_server.ts--N8krQnw.js → _server.ts-BAjDXL3K.js} +4 -4
  82. package/build/server/chunks/{_server.ts--N8krQnw.js.map → _server.ts-BAjDXL3K.js.map} +1 -1
  83. package/build/server/chunks/{_server.ts-D3isWFzo.js → _server.ts-BBWA8_9x.js} +5 -5
  84. package/build/server/chunks/{_server.ts-D3isWFzo.js.map → _server.ts-BBWA8_9x.js.map} +1 -1
  85. package/build/server/chunks/{_server.ts-BjsoTMxt.js → _server.ts-BGbMzbjh.js} +4 -4
  86. package/build/server/chunks/{_server.ts-BjsoTMxt.js.map → _server.ts-BGbMzbjh.js.map} +1 -1
  87. package/build/server/chunks/{_server.ts-Bkz7Vyl7.js → _server.ts-BJkQZiVJ.js} +5 -5
  88. package/build/server/chunks/{_server.ts-Bkz7Vyl7.js.map → _server.ts-BJkQZiVJ.js.map} +1 -1
  89. package/build/server/chunks/{_server.ts-CpO4xFnt.js → _server.ts-BK2dZlWy.js} +4 -4
  90. package/build/server/chunks/{_server.ts-CpO4xFnt.js.map → _server.ts-BK2dZlWy.js.map} +1 -1
  91. package/build/server/chunks/{_server.ts-rP8pYqeQ.js → _server.ts-BNo_nEnF.js} +4 -4
  92. package/build/server/chunks/{_server.ts-rP8pYqeQ.js.map → _server.ts-BNo_nEnF.js.map} +1 -1
  93. package/build/server/chunks/{_server.ts-CRUfNiEL.js → _server.ts-BU2Csa8a.js} +4 -4
  94. package/build/server/chunks/{_server.ts-CRUfNiEL.js.map → _server.ts-BU2Csa8a.js.map} +1 -1
  95. package/build/server/chunks/{_server.ts-DYuZIg9l.js → _server.ts-BXsAwlao.js} +4 -4
  96. package/build/server/chunks/{_server.ts-DYuZIg9l.js.map → _server.ts-BXsAwlao.js.map} +1 -1
  97. package/build/server/chunks/{_server.ts-upBZRwnP.js → _server.ts-Be6Kl9rP.js} +5 -5
  98. package/build/server/chunks/{_server.ts-upBZRwnP.js.map → _server.ts-Be6Kl9rP.js.map} +1 -1
  99. package/build/server/chunks/{_server.ts-DCg7u0gt.js → _server.ts-Bis7rnjz.js} +4 -4
  100. package/build/server/chunks/{_server.ts-DCg7u0gt.js.map → _server.ts-Bis7rnjz.js.map} +1 -1
  101. package/build/server/chunks/{_server.ts-CAycEHO4.js → _server.ts-BrgZnEle.js} +9 -7
  102. package/build/server/chunks/_server.ts-BrgZnEle.js.map +1 -0
  103. package/build/server/chunks/{_server.ts-swRf_u3E.js → _server.ts-Brt3m5KU.js} +5 -5
  104. package/build/server/chunks/{_server.ts-swRf_u3E.js.map → _server.ts-Brt3m5KU.js.map} +1 -1
  105. package/build/server/chunks/{_server.ts-BZV8kPh-.js → _server.ts-BwxOKYTk.js} +4 -4
  106. package/build/server/chunks/{_server.ts-BZV8kPh-.js.map → _server.ts-BwxOKYTk.js.map} +1 -1
  107. package/build/server/chunks/{_server.ts-CcLqY7mC.js → _server.ts-Bx6eOsLl.js} +4 -4
  108. package/build/server/chunks/{_server.ts-CcLqY7mC.js.map → _server.ts-Bx6eOsLl.js.map} +1 -1
  109. package/build/server/chunks/{_server.ts-DguLVMDx.js → _server.ts-C0OF4qqE.js} +5 -5
  110. package/build/server/chunks/{_server.ts-DguLVMDx.js.map → _server.ts-C0OF4qqE.js.map} +1 -1
  111. package/build/server/chunks/{_server.ts-D9xZdloN.js → _server.ts-C2PQ26X3.js} +2 -2
  112. package/build/server/chunks/{_server.ts-D9xZdloN.js.map → _server.ts-C2PQ26X3.js.map} +1 -1
  113. package/build/server/chunks/{_server.ts-MJxff6j1.js → _server.ts-C5AnpFOz.js} +4 -4
  114. package/build/server/chunks/{_server.ts-MJxff6j1.js.map → _server.ts-C5AnpFOz.js.map} +1 -1
  115. package/build/server/chunks/{_server.ts-BJYAW2v_.js → _server.ts-C5NB5xZE.js} +4 -4
  116. package/build/server/chunks/{_server.ts-BJYAW2v_.js.map → _server.ts-C5NB5xZE.js.map} +1 -1
  117. package/build/server/chunks/{_server.ts-kVbBWaDD.js → _server.ts-C9iX3nUS.js} +27 -5
  118. package/build/server/chunks/_server.ts-C9iX3nUS.js.map +1 -0
  119. package/build/server/chunks/{_server.ts-BTwVVUpt.js → _server.ts-CAeDaD7e.js} +4 -4
  120. package/build/server/chunks/{_server.ts-BTwVVUpt.js.map → _server.ts-CAeDaD7e.js.map} +1 -1
  121. package/build/server/chunks/{_server.ts-B7ST2I1g.js → _server.ts-CEmds0rX.js} +2 -2
  122. package/build/server/chunks/{_server.ts-B7ST2I1g.js.map → _server.ts-CEmds0rX.js.map} +1 -1
  123. package/build/server/chunks/{_server.ts-KOGE5rzJ.js → _server.ts-CFEdmX9O.js} +2 -2
  124. package/build/server/chunks/{_server.ts-KOGE5rzJ.js.map → _server.ts-CFEdmX9O.js.map} +1 -1
  125. package/build/server/chunks/{_server.ts-cFNIAAvs.js → _server.ts-CHQUBWgz.js} +3 -3
  126. package/build/server/chunks/{_server.ts-cFNIAAvs.js.map → _server.ts-CHQUBWgz.js.map} +1 -1
  127. package/build/server/chunks/{_server.ts-DrZeLUaT.js → _server.ts-CNEr2nOA.js} +4 -4
  128. package/build/server/chunks/{_server.ts-DrZeLUaT.js.map → _server.ts-CNEr2nOA.js.map} +1 -1
  129. package/build/server/chunks/{_server.ts-C_o9u8JZ.js → _server.ts-CQTfOG8q.js} +4 -4
  130. package/build/server/chunks/{_server.ts-C_o9u8JZ.js.map → _server.ts-CQTfOG8q.js.map} +1 -1
  131. package/build/server/chunks/{_server.ts-D20tceEK.js → _server.ts-CR6PWQ9E.js} +6 -6
  132. package/build/server/chunks/{_server.ts-D20tceEK.js.map → _server.ts-CR6PWQ9E.js.map} +1 -1
  133. package/build/server/chunks/{_server.ts-D39hF3fC.js → _server.ts-CVu6RERr.js} +2 -2
  134. package/build/server/chunks/{_server.ts-D39hF3fC.js.map → _server.ts-CVu6RERr.js.map} +1 -1
  135. package/build/server/chunks/{_server.ts-DUa6bwDM.js → _server.ts-CZBiMENq.js} +4 -4
  136. package/build/server/chunks/{_server.ts-DUa6bwDM.js.map → _server.ts-CZBiMENq.js.map} +1 -1
  137. package/build/server/chunks/{_server.ts-DZyh2rB9.js → _server.ts-CaoSYMPb.js} +5 -5
  138. package/build/server/chunks/{_server.ts-DZyh2rB9.js.map → _server.ts-CaoSYMPb.js.map} +1 -1
  139. package/build/server/chunks/{_server.ts-BimilJxw.js → _server.ts-Cg7kX2II.js} +4 -4
  140. package/build/server/chunks/{_server.ts-BimilJxw.js.map → _server.ts-Cg7kX2II.js.map} +1 -1
  141. package/build/server/chunks/{_server.ts-Cw-3n_ep.js → _server.ts-Cj3hl-ah.js} +4 -4
  142. package/build/server/chunks/{_server.ts-Cw-3n_ep.js.map → _server.ts-Cj3hl-ah.js.map} +1 -1
  143. package/build/server/chunks/{_server.ts-BGBkyRka.js → _server.ts-ClMHQppV.js} +4 -4
  144. package/build/server/chunks/{_server.ts-BGBkyRka.js.map → _server.ts-ClMHQppV.js.map} +1 -1
  145. package/build/server/chunks/{_server.ts-67vw7faX.js → _server.ts-Co2WE64Q.js} +4 -4
  146. package/build/server/chunks/{_server.ts-67vw7faX.js.map → _server.ts-Co2WE64Q.js.map} +1 -1
  147. package/build/server/chunks/{_server.ts-Dw9IUnbc.js → _server.ts-CuGJmNj0.js} +4 -4
  148. package/build/server/chunks/{_server.ts-Dw9IUnbc.js.map → _server.ts-CuGJmNj0.js.map} +1 -1
  149. package/build/server/chunks/{_server.ts-rGaZfdIc.js → _server.ts-CuS_hbXP.js} +4 -4
  150. package/build/server/chunks/{_server.ts-rGaZfdIc.js.map → _server.ts-CuS_hbXP.js.map} +1 -1
  151. package/build/server/chunks/{_server.ts-BAlnprxv.js → _server.ts-CxrjaV2H.js} +4 -4
  152. package/build/server/chunks/{_server.ts-BAlnprxv.js.map → _server.ts-CxrjaV2H.js.map} +1 -1
  153. package/build/server/chunks/{_server.ts-Dbqne9eY.js → _server.ts-D0rMsi8N.js} +6 -6
  154. package/build/server/chunks/{_server.ts-Dbqne9eY.js.map → _server.ts-D0rMsi8N.js.map} +1 -1
  155. package/build/server/chunks/{_server.ts-SFkX7VFb.js → _server.ts-D4BdBHKt.js} +6 -6
  156. package/build/server/chunks/{_server.ts-SFkX7VFb.js.map → _server.ts-D4BdBHKt.js.map} +1 -1
  157. package/build/server/chunks/{_server.ts-BDGqI5pR.js → _server.ts-D6qUkf_W.js} +4 -4
  158. package/build/server/chunks/{_server.ts-BDGqI5pR.js.map → _server.ts-D6qUkf_W.js.map} +1 -1
  159. package/build/server/chunks/{_server.ts-CgkGvTF0.js → _server.ts-D80lQ1GO.js} +5 -5
  160. package/build/server/chunks/{_server.ts-CgkGvTF0.js.map → _server.ts-D80lQ1GO.js.map} +1 -1
  161. package/build/server/chunks/{_server.ts-DhXmrQhc.js → _server.ts-D82YBUWk.js} +4 -4
  162. package/build/server/chunks/{_server.ts-DhXmrQhc.js.map → _server.ts-D82YBUWk.js.map} +1 -1
  163. package/build/server/chunks/{_server.ts-B1J6gmcu.js → _server.ts-D9l9ppd4.js} +4 -4
  164. package/build/server/chunks/{_server.ts-B1J6gmcu.js.map → _server.ts-D9l9ppd4.js.map} +1 -1
  165. package/build/server/chunks/{_server.ts-DniIPBxO.js → _server.ts-DHs1td1E.js} +2 -2
  166. package/build/server/chunks/{_server.ts-DniIPBxO.js.map → _server.ts-DHs1td1E.js.map} +1 -1
  167. package/build/server/chunks/{_server.ts-DXBrPiAj.js → _server.ts-DM7Geg4p.js} +4 -4
  168. package/build/server/chunks/{_server.ts-DXBrPiAj.js.map → _server.ts-DM7Geg4p.js.map} +1 -1
  169. package/build/server/chunks/{_server.ts-B3uS0ABl.js → _server.ts-DOJDSjcf.js} +4 -4
  170. package/build/server/chunks/{_server.ts-B3uS0ABl.js.map → _server.ts-DOJDSjcf.js.map} +1 -1
  171. package/build/server/chunks/{_server.ts-B4p_jHqU.js → _server.ts-DRG78qQW.js} +24 -8
  172. package/build/server/chunks/_server.ts-DRG78qQW.js.map +1 -0
  173. package/build/server/chunks/{_server.ts-DVdrht9C.js → _server.ts-DSRF_ctF.js} +4 -4
  174. package/build/server/chunks/{_server.ts-DVdrht9C.js.map → _server.ts-DSRF_ctF.js.map} +1 -1
  175. package/build/server/chunks/{_server.ts-fRYbSpUy.js → _server.ts-DV9SyClz.js} +4 -4
  176. package/build/server/chunks/{_server.ts-fRYbSpUy.js.map → _server.ts-DV9SyClz.js.map} +1 -1
  177. package/build/server/chunks/{_server.ts-Co5auLt6.js → _server.ts-DaG6LOEN.js} +4 -4
  178. package/build/server/chunks/{_server.ts-Co5auLt6.js.map → _server.ts-DaG6LOEN.js.map} +1 -1
  179. package/build/server/chunks/{_server.ts-BtIfXnk8.js → _server.ts-Dg-7OAks.js} +4 -4
  180. package/build/server/chunks/{_server.ts-BtIfXnk8.js.map → _server.ts-Dg-7OAks.js.map} +1 -1
  181. package/build/server/chunks/{_server.ts-vr1wDdjl.js → _server.ts-Dks6ByeB.js} +4 -4
  182. package/build/server/chunks/{_server.ts-vr1wDdjl.js.map → _server.ts-Dks6ByeB.js.map} +1 -1
  183. package/build/server/chunks/{_server.ts-CRgQ6JvE.js → _server.ts-DlwUat_3.js} +4 -4
  184. package/build/server/chunks/{_server.ts-CRgQ6JvE.js.map → _server.ts-DlwUat_3.js.map} +1 -1
  185. package/build/server/chunks/{_server.ts-CVnGEGgz.js → _server.ts-DqoC6tG4.js} +4 -4
  186. package/build/server/chunks/{_server.ts-CVnGEGgz.js.map → _server.ts-DqoC6tG4.js.map} +1 -1
  187. package/build/server/chunks/{_server.ts-Dw7_J4x-.js → _server.ts-Dv1fYg8u.js} +4 -4
  188. package/build/server/chunks/{_server.ts-Dw7_J4x-.js.map → _server.ts-Dv1fYg8u.js.map} +1 -1
  189. package/build/server/chunks/{_server.ts-DS6wkfxg.js → _server.ts-DyZduXuM.js} +4 -4
  190. package/build/server/chunks/{_server.ts-DS6wkfxg.js.map → _server.ts-DyZduXuM.js.map} +1 -1
  191. package/build/server/chunks/{_server.ts-CBYvFEVS.js → _server.ts-GRF0jIBP.js} +6 -6
  192. package/build/server/chunks/{_server.ts-CBYvFEVS.js.map → _server.ts-GRF0jIBP.js.map} +1 -1
  193. package/build/server/chunks/{_server.ts-Bb62UkjI.js → _server.ts-LTTzMy5r.js} +4 -4
  194. package/build/server/chunks/{_server.ts-Bb62UkjI.js.map → _server.ts-LTTzMy5r.js.map} +1 -1
  195. package/build/server/chunks/{_server.ts-C2jZDeoI.js → _server.ts-LlVUPkA-.js} +4 -4
  196. package/build/server/chunks/{_server.ts-C2jZDeoI.js.map → _server.ts-LlVUPkA-.js.map} +1 -1
  197. package/build/server/chunks/{_server.ts-DteVoyg4.js → _server.ts-SfA_h18s.js} +4 -4
  198. package/build/server/chunks/{_server.ts-DteVoyg4.js.map → _server.ts-SfA_h18s.js.map} +1 -1
  199. package/build/server/chunks/{_server.ts-DSUpiCQo.js → _server.ts-U4d8V13c.js} +4 -4
  200. package/build/server/chunks/{_server.ts-DSUpiCQo.js.map → _server.ts-U4d8V13c.js.map} +1 -1
  201. package/build/server/chunks/{_server.ts-DEB9v5s4.js → _server.ts-fal-vBAP.js} +4 -4
  202. package/build/server/chunks/{_server.ts-DEB9v5s4.js.map → _server.ts-fal-vBAP.js.map} +1 -1
  203. package/build/server/chunks/{_server.ts-CKkuDSSM.js → _server.ts-jlpvDebn.js} +4 -4
  204. package/build/server/chunks/{_server.ts-CKkuDSSM.js.map → _server.ts-jlpvDebn.js.map} +1 -1
  205. package/build/server/chunks/{_server.ts-DDNv0MDu.js → _server.ts-lsR99Q_m.js} +4 -4
  206. package/build/server/chunks/{_server.ts-DDNv0MDu.js.map → _server.ts-lsR99Q_m.js.map} +1 -1
  207. package/build/server/chunks/{_server.ts-BXQH4Qlt.js → _server.ts-rQO3-6HN.js} +4 -4
  208. package/build/server/chunks/{_server.ts-BXQH4Qlt.js.map → _server.ts-rQO3-6HN.js.map} +1 -1
  209. package/build/server/chunks/{_server.ts-BC7_zqMR.js → _server.ts-tKTOoUMC.js} +4 -4
  210. package/build/server/chunks/{_server.ts-BC7_zqMR.js.map → _server.ts-tKTOoUMC.js.map} +1 -1
  211. package/build/server/chunks/{_server.ts-DFBCN73l.js → _server.ts-thmtguqf.js} +5 -5
  212. package/build/server/chunks/{_server.ts-DFBCN73l.js.map → _server.ts-thmtguqf.js.map} +1 -1
  213. package/build/server/chunks/{_server.ts-BLWYsGx3.js → _server.ts-uBQ8YoZW.js} +4 -4
  214. package/build/server/chunks/{_server.ts-BLWYsGx3.js.map → _server.ts-uBQ8YoZW.js.map} +1 -1
  215. package/build/server/chunks/{_server.ts-CaIBfM3d.js → _server.ts-y50mKW5c.js} +4 -4
  216. package/build/server/chunks/{_server.ts-CaIBfM3d.js.map → _server.ts-y50mKW5c.js.map} +1 -1
  217. package/build/server/chunks/{addon-helpers-DU7K-Jl-.js → addon-helpers-Dunj8c6A.js} +2 -2
  218. package/build/server/chunks/{addon-helpers-DU7K-Jl-.js.map → addon-helpers-Dunj8c6A.js.map} +1 -1
  219. package/build/server/chunks/{client-DlIaBp3l.js → client-DMo7Z7Jc.js} +2 -2
  220. package/build/server/chunks/{client-DlIaBp3l.js.map → client-DMo7Z7Jc.js.map} +1 -1
  221. package/build/server/chunks/{config-DuMmS4Kk.js → config-DSa36Eo6.js} +2 -2
  222. package/build/server/chunks/{config-DuMmS4Kk.js.map → config-DSa36Eo6.js.map} +1 -1
  223. package/build/server/chunks/{docker-YA68OZn5.js → docker-BwaLWWJt.js} +2 -2
  224. package/build/server/chunks/{docker-YA68OZn5.js.map → docker-BwaLWWJt.js.map} +1 -1
  225. package/build/server/chunks/{endpoints-CGm4oVfk.js → endpoints-CBqzuY3J.js} +2 -2
  226. package/build/server/chunks/{endpoints-CGm4oVfk.js.map → endpoints-CBqzuY3J.js.map} +1 -1
  227. package/build/server/chunks/{environment-WrKoCzje.js → environment-D3mzrTn2.js} +2 -2
  228. package/build/server/chunks/{environment-WrKoCzje.js.map → environment-D3mzrTn2.js.map} +1 -1
  229. package/build/server/chunks/{error.svelte-D4IIBHJA.js → error.svelte-CuqBgWI4.js} +4 -4
  230. package/build/server/chunks/{error.svelte-D4IIBHJA.js.map → error.svelte-CuqBgWI4.js.map} +1 -1
  231. package/build/server/chunks/{helpers-h_Fq1SBb.js → helpers-jeU7hTwa.js} +3 -3
  232. package/build/server/chunks/{helpers-h_Fq1SBb.js.map → helpers-jeU7hTwa.js.map} +1 -1
  233. package/build/server/chunks/{hooks.server-SbPoC8s4.js → hooks.server-CJIxI-By.js} +5 -5
  234. package/build/server/chunks/{hooks.server-SbPoC8s4.js.map → hooks.server-CJIxI-By.js.map} +1 -1
  235. package/build/server/chunks/{http-DbpsBgUe.js → http-D0MPlwlW.js} +2 -2
  236. package/build/server/chunks/{http-DbpsBgUe.js.map → http-D0MPlwlW.js.map} +1 -1
  237. package/build/server/chunks/{internal-DtdC4O8s.js → internal-S5ECTKiA.js} +3 -3
  238. package/build/server/chunks/{internal-DtdC4O8s.js.map → internal-S5ECTKiA.js.map} +1 -1
  239. package/build/server/chunks/{session-cookie-C61HbJV5.js → session-cookie-DUBC6gaA.js} +2 -2
  240. package/build/server/chunks/{session-cookie-C61HbJV5.js.map → session-cookie-DUBC6gaA.js.map} +1 -1
  241. package/build/server/chunks/{setup-deploy-D0Om28m3.js → setup-deploy-DnfUIlT1.js} +4 -3
  242. package/build/server/chunks/setup-deploy-DnfUIlT1.js.map +1 -0
  243. package/build/server/chunks/{src-DJv-Q_k2.js → src-Bg3Hw0f8.js} +231 -85
  244. package/build/server/chunks/src-Bg3Hw0f8.js.map +1 -0
  245. package/build/server/chunks/{state-DGpfeO6d.js → state-BGEr-v7Z.js} +2 -2
  246. package/build/server/chunks/{state-DGpfeO6d.js.map → state-BGEr-v7Z.js.map} +1 -1
  247. package/build/server/index.js +2 -2
  248. package/build/server/manifest.js +79 -79
  249. package/build/server/manifest.js.map +1 -1
  250. package/package.json +2 -2
  251. package/build/client/_app/immutable/chunks/7Y-z2Cs4.js.br +0 -0
  252. package/build/client/_app/immutable/chunks/7Y-z2Cs4.js.gz +0 -0
  253. package/build/client/_app/immutable/chunks/BbsmUDEz.js.br +0 -0
  254. package/build/client/_app/immutable/chunks/BbsmUDEz.js.gz +0 -0
  255. package/build/client/_app/immutable/chunks/BxIEEPV3.js.br +0 -0
  256. package/build/client/_app/immutable/chunks/BxIEEPV3.js.gz +0 -0
  257. package/build/client/_app/immutable/chunks/DBtofX2R.js +0 -1
  258. package/build/client/_app/immutable/chunks/DBtofX2R.js.br +0 -2
  259. package/build/client/_app/immutable/chunks/DBtofX2R.js.gz +0 -0
  260. package/build/client/_app/immutable/chunks/jhtvkF_A.js +0 -1
  261. package/build/client/_app/immutable/chunks/jhtvkF_A.js.br +0 -0
  262. package/build/client/_app/immutable/chunks/jhtvkF_A.js.gz +0 -0
  263. package/build/client/_app/immutable/entry/app.DamaMvOo.js.br +0 -0
  264. package/build/client/_app/immutable/entry/app.DamaMvOo.js.gz +0 -0
  265. package/build/client/_app/immutable/entry/start.CiFTF0Id.js +0 -1
  266. package/build/client/_app/immutable/entry/start.CiFTF0Id.js.br +0 -0
  267. package/build/client/_app/immutable/entry/start.CiFTF0Id.js.gz +0 -0
  268. package/build/client/_app/immutable/nodes/1.D_t9eVLg.js.br +0 -1
  269. package/build/client/_app/immutable/nodes/1.D_t9eVLg.js.gz +0 -0
  270. package/build/client/_app/immutable/nodes/4.rszAmyBN.js.br +0 -0
  271. package/build/client/_app/immutable/nodes/4.rszAmyBN.js.gz +0 -0
  272. package/build/client/_app/immutable/nodes/5.B5KOuICr.js.br +0 -0
  273. package/build/client/_app/immutable/nodes/5.B5KOuICr.js.gz +0 -0
  274. package/build/client/_app/immutable/nodes/6.Bw69iLts.js.br +0 -0
  275. package/build/client/_app/immutable/nodes/6.Bw69iLts.js.gz +0 -0
  276. package/build/client/_app/immutable/nodes/7.ockxnYPK.js.br +0 -0
  277. package/build/client/_app/immutable/nodes/7.ockxnYPK.js.gz +0 -0
  278. package/build/client/_app/immutable/nodes/8.Bt2Nswbt.js.br +0 -0
  279. package/build/client/_app/immutable/nodes/8.Bt2Nswbt.js.gz +0 -0
  280. package/build/client/_app/immutable/nodes/9.pk1c6xm-.js +0 -4
  281. package/build/client/_app/immutable/nodes/9.pk1c6xm-.js.br +0 -0
  282. package/build/client/_app/immutable/nodes/9.pk1c6xm-.js.gz +0 -0
  283. package/build/server/chunks/1-BTD70sT7.js +0 -9
  284. package/build/server/chunks/4-CubOOlWA.js +0 -9
  285. package/build/server/chunks/5-C5D5O8w1.js +0 -9
  286. package/build/server/chunks/7-jdfP4oIc.js +0 -9
  287. package/build/server/chunks/_server.ts-B4p_jHqU.js.map +0 -1
  288. package/build/server/chunks/_server.ts-CAycEHO4.js.map +0 -1
  289. package/build/server/chunks/_server.ts-kVbBWaDD.js.map +0 -1
  290. package/build/server/chunks/setup-deploy-D0Om28m3.js.map +0 -1
  291. package/build/server/chunks/src-DJv-Q_k2.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"session-cookie-C61HbJV5.js","sources":["../../../.svelte-kit/adapter-node/chunks/session-cookie.js"],"sourcesContent":["import { h 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 — 7 days, in lockstep with the in-store session TTL.\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
+ {"version":3,"file":"session-cookie-DUBC6gaA.js","sources":["../../../.svelte-kit/adapter-node/chunks/session-cookie.js"],"sourcesContent":["import { h 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 — 7 days, in lockstep with the in-store session TTL.\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 { c as applyInstall, a5 as listEnabledAddonIds, V as getAddonProfileSelection, at as setAddonProfileSelection, a as addonProfileId, l as buildManagedServices, k as buildComposeOptions, o as composeDown, s as composePull, x as composeUp, a3 as isSetupComplete, aq as resolveStackDir, y as createLogger, E as detectExistingProject, a9 as parseEnvFile, r as composePs, W as getAddonProfiles, an as resolveComposeProjectName } from './src-DJv-Q_k2.js';
1
+ import { c as applyInstall, a5 as listEnabledAddonIds, V as getAddonProfileSelection, at as setAddonProfileSelection, a as addonProfileId, l as buildManagedServices, k as buildComposeOptions, o as composeDown, s as composePull, x as composeUp, a3 as isSetupComplete, aq as resolveStackDir, y as createLogger, E as detectExistingProject, a9 as parseEnvFile, r as composePs, W as getAddonProfiles, an as resolveComposeProjectName } from './src-Bg3Hw0f8.js';
2
2
  import { existsSync, readFileSync, writeFileSync, renameSync } from 'node:fs';
3
3
 
4
4
  //#region src/lib/server/setup-deploy.ts
@@ -236,7 +236,8 @@ function startDeploy(state) {
236
236
  try {
237
237
  const downResult = await composeDown({
238
238
  ...composeOpts,
239
- removeVolumes: false
239
+ removeVolumes: false,
240
+ removeOrphans: true
240
241
  });
241
242
  if (!downResult.ok) logger.info("pre-deploy compose down returned non-zero (likely nothing to remove)", { stderr: downResult.stderr?.slice(0, 500) });
242
243
  } catch (err) {
@@ -515,4 +516,4 @@ async function bringUpVoiceIfEnabled(state, composeOpts) {
515
516
  }
516
517
 
517
518
  export { getDeployState as g, resetDeployState as r, startDeploy as s };
518
- //# sourceMappingURL=setup-deploy-D0Om28m3.js.map
519
+ //# sourceMappingURL=setup-deploy-DnfUIlT1.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-deploy-DnfUIlT1.js","sources":["../../../.svelte-kit/adapter-node/chunks/setup-deploy.js"],"sourcesContent":["import { C as buildManagedServices, E as buildComposeOptions, It as resolveStackDir, M as composePs, N as composePull, Nt as parseEnvFile, R as composeUp, Rt as createLogger, V as resolveComposeProjectName, Z as isSetupComplete, at as getAddonProfileSelection, ft as setAddonProfileSelection, k as composeDown, ot as getAddonProfiles, pt as addonProfileId, ut as listEnabledAddonIds, y as applyInstall, z as detectExistingProject } from \"./src.js\";\nimport { existsSync, readFileSync, renameSync, writeFileSync } from \"node:fs\";\n//#region src/lib/server/setup-deploy.ts\n/**\n* In-process deploy state for the setup wizard.\n*\n* Tracks Docker Compose deploy progress during first-time setup.\n* State lives in this module so the polling endpoint can read it\n* without a database or filesystem dependency.\n*/\nvar logger = createLogger(\"admin:setup-deploy\");\nfunction projectNameForState(state) {\n\treturn resolveComposeProjectName(parseEnvFile(`${state.stashDir}/env/stack.env`));\n}\nfunction projectNameForComposeOptions(composeOpts) {\n\treturn resolveComposeProjectName(Object.assign({}, ...(composeOpts.envFiles ?? []).map((f) => parseEnvFile(f))));\n}\nvar _state = {\n\tdeploying: false,\n\tsetupComplete: false,\n\tdeployStatus: [],\n\tdeployError: null,\n\tphase: \"writing-config\"\n};\nfunction getDeployState() {\n\tif (!_state.setupComplete && !_state.deploying && isSetupComplete(resolveStackDir())) _state.setupComplete = true;\n\treturn {\n\t\t..._state,\n\t\tdeployStatus: [..._state.deployStatus]\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\tphase: \"writing-config\"\n\t};\n}\n/**\n* Resolve the effective OP_IMAGE_TAG for a deploy.\n* Reads exclusively from stack.env files — by the time startDeploy() runs,\n* applyInstall() has already written the wizard's chosen tag to stack.env.\n* Process env is intentionally ignored so shell variables can never silently\n* override what the user configured in the wizard.\n*/\nfunction resolveImageTag(composeOpts) {\n\tfor (const envFile of composeOpts.envFiles ?? []) {\n\t\tif (!existsSync(envFile)) continue;\n\t\tconst parsed = parseEnvFile(envFile);\n\t\tif (parsed.OP_IMAGE_TAG) return parsed.OP_IMAGE_TAG;\n\t}\n\treturn \"\";\n}\n/**\n* Map opaque Docker/compose stderr text to a human-friendly error message.\n* If no pattern matches, the raw message is returned prefixed with a generic header.\n*/\nfunction mapDockerError(raw) {\n\tif (/cannot connect to the docker daemon|docker daemon is not running/i.test(raw)) return \"Docker Desktop appears to have stopped. Start Docker, then click Retry.\";\n\tconst portMatch = /bind: address already in use.*?:(\\d+)/i.exec(raw);\n\tif (portMatch) return `Port ${portMatch[1]} is already in use by another program. Free it (or quit the other app) and click Retry.`;\n\tif (/Cannot find specified .* file|no such file or directory/i.test(raw)) return \"A required configuration file is missing. Try re-running setup.\";\n\tif (/permission denied/i.test(raw)) return \"Permission denied. Check that ~/.openpalm and Docker have permission to write.\";\n\tif (/no space left on device|ENOSPC/i.test(raw)) return \"Your disk is full. Free up space and click Retry.\";\n\treturn `Deployment ran into a problem: ${raw}`;\n}\n/**\n* Atomic-merge OP_SETUP_COMPLETE=true into stack.env. Called only after every\n* container has reported healthy — until then the wizard must remain\n* resumable, so the flag is intentionally not written by performSetup.\n*/\nfunction markSetupComplete(state) {\n\tconst path = `${state.stashDir}/env/stack.env`;\n\tconst lines = (existsSync(path) ? readFileSync(path, \"utf-8\") : \"\").split(\"\\n\");\n\tlet replaced = false;\n\tfor (let i = 0; i < lines.length; i++) {\n\t\tconst trimmed = lines[i].trimStart();\n\t\tconst eq = trimmed.indexOf(\"=\");\n\t\tif (eq > 0 && trimmed.slice(0, eq).trim() === \"OP_SETUP_COMPLETE\") {\n\t\t\tlines[i] = \"OP_SETUP_COMPLETE=true\";\n\t\t\treplaced = true;\n\t\t\tbreak;\n\t\t}\n\t}\n\tif (!replaced) if (lines.length > 0 && lines[lines.length - 1] === \"\") {\n\t\tlines[lines.length - 1] = \"OP_SETUP_COMPLETE=true\";\n\t\tlines.push(\"\");\n\t} else lines.push(\"OP_SETUP_COMPLETE=true\");\n\tlet merged = lines.join(\"\\n\");\n\tif (!merged.endsWith(\"\\n\")) merged += \"\\n\";\n\tconst tmp = `${path}.tmp`;\n\twriteFileSync(tmp, merged, { mode: 384 });\n\trenameSync(tmp, path);\n}\n/**\n* Parse `docker compose ps --format json` output into a list of container states.\n* Compose outputs one JSON object per line (NDJSON), not a JSON array.\n*/\nfunction parseComposePsOutput(stdout) {\n\tconst results = [];\n\tfor (const line of stdout.split(\"\\n\")) {\n\t\tconst trimmed = line.trim();\n\t\tif (!trimmed) continue;\n\t\ttry {\n\t\t\tconst obj = JSON.parse(trimmed);\n\t\t\tresults.push({\n\t\t\t\tname: String(obj[\"Name\"] ?? obj[\"Service\"] ?? \"\"),\n\t\t\t\tstate: String(obj[\"State\"] ?? \"\"),\n\t\t\t\thealth: String(obj[\"Health\"] ?? \"\")\n\t\t\t});\n\t\t} catch {}\n\t}\n\treturn results;\n}\n/**\n* Poll container health for `services` until all are running (and healthy if\n* they declare a healthcheck). Updates `_state.deployStatus` with intermediate\n* labels as containers flip states.\n*\n* @returns null on success, or an error string if timeout fires with unhealthy services.\n*/\nasync function pollContainerHealth(composeOpts, services, timeoutMs) {\n\tconst deadline = Date.now() + timeoutMs;\n\tconst POLL_INTERVAL_MS = 2e3;\n\twhile (Date.now() < deadline) {\n\t\tawait new Promise((r) => setTimeout(r, POLL_INTERVAL_MS));\n\t\tconst psResult = await composePs(composeOpts);\n\t\tif (!psResult.ok) {\n\t\t\tlogger.warn(\"composePs failed during health poll\", { stderr: psResult.stderr });\n\t\t\tcontinue;\n\t\t}\n\t\tconst containers = parseComposePsOutput(psResult.stdout);\n\t\t_state.deployStatus = _state.deployStatus.map((entry) => {\n\t\t\tconst found = containers.find((c) => c.name === entry.service || c.name.endsWith(`-${entry.service}-1`) || c.name.endsWith(`_${entry.service}_1`));\n\t\t\tif (!found) return {\n\t\t\t\t...entry,\n\t\t\t\tstatus: \"pending\",\n\t\t\t\tlabel: \"Starting...\"\n\t\t\t};\n\t\t\tif (found.state === \"running\") {\n\t\t\t\tconst health = found.health;\n\t\t\t\tif (health === \"unhealthy\") return {\n\t\t\t\t\t...entry,\n\t\t\t\t\tstatus: \"error\",\n\t\t\t\t\tlabel: \"Unhealthy\"\n\t\t\t\t};\n\t\t\t\tif (health === \"starting\") return {\n\t\t\t\t\t...entry,\n\t\t\t\t\tstatus: \"pending\",\n\t\t\t\t\tlabel: \"Health check running...\"\n\t\t\t\t};\n\t\t\t\treturn {\n\t\t\t\t\t...entry,\n\t\t\t\t\tstatus: \"running\",\n\t\t\t\t\tlabel: \"Running\"\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (found.state === \"exited\" || found.state === \"dead\") return {\n\t\t\t\t...entry,\n\t\t\t\tstatus: \"error\",\n\t\t\t\tlabel: `Exited (${found.state})`\n\t\t\t};\n\t\t\treturn {\n\t\t\t\t...entry,\n\t\t\t\tstatus: \"pending\",\n\t\t\t\tlabel: `Starting (${found.state})...`\n\t\t\t};\n\t\t});\n\t\tif (services.every((svc) => {\n\t\t\treturn _state.deployStatus.find((e) => e.service === svc)?.status === \"running\";\n\t\t})) return null;\n\t\tconst failed = _state.deployStatus.filter((e) => e.status === \"error\").map((e) => e.service);\n\t\tif (failed.length > 0) {\n\t\t\tconst projectName = projectNameForComposeOptions(composeOpts);\n\t\t\treturn `Services started but the following did not become healthy: ${failed.join(\", \")}. Check logs: docker compose -p ${projectName} logs ${failed.join(\" \")}.`;\n\t\t}\n\t}\n\tconst unhealthy = _state.deployStatus.filter((e) => e.status !== \"running\").map((e) => e.service);\n\tconst projectName = projectNameForComposeOptions(composeOpts);\n\treturn `Services started but some did not become healthy in time: ${unhealthy.join(\", \")}. Check logs: docker compose -p ${projectName} logs ${unhealthy.join(\" \")}.`;\n}\n/**\n* Pre-flight: refuse to deploy if existing containers in this compose\n* project belong to a DIFFERENT OP_HOME than the one we're about to deploy.\n* Without this, two stacks (e.g. dev and host) that share the default\n* \"openpalm\" project name will silently clobber each other.\n*\n* Detection logic lives in lib (detectExistingProject) so the CLI and UI\n* share the same ours-vs-foreign decision (CLAUDE.md: control-plane logic\n* in lib). An existing OURS project is fine — startDeploy's down + force-recreate\n* reconciles it. Only a FOREIGN project produces a refusal.\n*/\nasync function checkProjectNameCollision(state) {\n\tconst projectName = projectNameForState(state);\n\tconst existing = await detectExistingProject({\n\t\tprojectName,\n\t\texpectedWorkingDir: state.homeDir\n\t});\n\tif (existing.exists && !existing.isOurs) return `Refusing to deploy: docker project \"${projectName}\" is already running from ${existing.workingDir || \"another OpenPalm install\"}, but this deploy would use OP_HOME=${state.homeDir}. Set OP_PROJECT_NAME to a distinct value in stack.env, or stop the existing stack first.`;\n\treturn null;\n}\n/** Kick off a background Docker Compose deploy. Returns immediately. */\nfunction startDeploy(state) {\n\tif (_state.deploying) {\n\t\t_state.deployError = \"install_in_progress: A deploy is already running. Wait for it to finish.\";\n\t\tlogger.warn(\"deploy rejected: deploy already in progress\");\n\t\treturn;\n\t}\n\t_state.deploying = true;\n\t_state.deployError = null;\n\t_state.phase = \"writing-config\";\n\t(async () => {\n\t\ttry {\n\t\t\tconst collision = await checkProjectNameCollision(state);\n\t\t\tif (collision) {\n\t\t\t\tlogger.error(\"deploy aborted: project name collision\", { error: collision });\n\t\t\t\t_state.deployError = collision;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tawait applyInstall(state);\n\t\t\tif (listEnabledAddonIds(state.homeDir).includes(\"ollama\") && !getAddonProfileSelection(state.stackDir, \"ollama\")) try {\n\t\t\t\tsetAddonProfileSelection(state.stackDir, \"ollama\", addonProfileId(\"ollama\", \"cpu\"), state);\n\t\t\t} catch (err) {\n\t\t\t\tlogger.warn(\"ollama: failed to persist default profile selection (continuing)\", { error: err instanceof Error ? err.message : String(err) });\n\t\t\t}\n\t\t\tconst services = await buildManagedServices(state);\n\t\t\t_state.deployStatus = services.map((s) => ({\n\t\t\t\tservice: s,\n\t\t\t\tstatus: \"pending\",\n\t\t\t\tlabel: \"Waiting...\"\n\t\t\t}));\n\t\t\tconst composeOpts = buildComposeOptions(state);\n\t\t\ttry {\n\t\t\t\tconst downResult = await composeDown({\n\t\t\t\t\t...composeOpts,\n\t\t\t\t\tremoveVolumes: false,\n\t\t\t\t\tremoveOrphans: true\n\t\t\t\t});\n\t\t\t\tif (!downResult.ok) logger.info(\"pre-deploy compose down returned non-zero (likely nothing to remove)\", { stderr: downResult.stderr?.slice(0, 500) });\n\t\t\t} catch (err) {\n\t\t\t\tlogger.warn(\"pre-deploy compose down threw — continuing\", { error: err instanceof Error ? err.message : String(err) });\n\t\t\t}\n\t\t\t_state.phase = \"pulling-images\";\n\t\t\tconst imageTag = resolveImageTag(composeOpts);\n\t\t\tconst isDevTag = imageTag.startsWith(\"dev\");\n\t\t\tlet pullResult = null;\n\t\t\tif (!isDevTag) {\n\t\t\t\tconst pullDelaysMs = [\n\t\t\t\t\t0,\n\t\t\t\t\t5e3,\n\t\t\t\t\t15e3\n\t\t\t\t];\n\t\t\t\tfor (let attempt = 0; attempt < pullDelaysMs.length; attempt++) {\n\t\t\t\t\tif (pullDelaysMs[attempt] > 0) {\n\t\t\t\t\t\tlogger.info(\"retrying image pull\", {\n\t\t\t\t\t\t\tattempt: attempt + 1,\n\t\t\t\t\t\t\tdelayMs: pullDelaysMs[attempt]\n\t\t\t\t\t\t});\n\t\t\t\t\t\tawait new Promise((r) => setTimeout(r, pullDelaysMs[attempt]));\n\t\t\t\t\t}\n\t\t\t\t\tpullResult = await composePull(composeOpts);\n\t\t\t\t\tif (pullResult.ok) break;\n\t\t\t\t\tconst stderr = pullResult.stderr ?? \"\";\n\t\t\t\t\tif (/manifest unknown|manifest for .* not found|unauthorized|authentication required|access denied/i.test(stderr)) {\n\t\t\t\t\t\tlogger.error(\"image pull failed with permanent error\", { stderr: stderr.slice(0, 500) });\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tlogger.warn(\"image pull failed (transient?)\", {\n\t\t\t\t\t\tattempt: attempt + 1,\n\t\t\t\t\t\tstderr: stderr.slice(0, 500)\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (isDevTag || !pullResult || !pullResult.ok) if (await allServiceImagesPresent(composeOpts, services)) if (isDevTag) logger.info(\"dev image tag — skipping registry pull, all images present locally\", {\n\t\t\t\timageTag,\n\t\t\t\tservices\n\t\t\t});\n\t\t\telse logger.info(\"image pull failed but all images present locally — continuing\", {\n\t\t\t\tservices,\n\t\t\t\tstderrSlice: (pullResult?.stderr ?? \"\").slice(0, 200)\n\t\t\t});\n\t\t\telse {\n\t\t\t\tlet msg;\n\t\t\t\tif (isDevTag) {\n\t\t\t\t\tconst missing = await missingServiceImages(composeOpts, services);\n\t\t\t\t\tmsg = `Dev images not found locally (tag: ${imageTag}): ${missing.length > 0 ? missing.join(\", \") : \"one or more images\"}. Run \\`bun run dev:build\\` from the project root to build them, then retry setup.`;\n\t\t\t\t} else msg = mapDockerError(pullResult?.stderr?.trim() || \"Image pull failed\");\n\t\t\t\t_state.deployStatus = _state.deployStatus.map((e) => ({\n\t\t\t\t\t...e,\n\t\t\t\t\tstatus: \"error\",\n\t\t\t\t\tlabel: \"Image pull failed\"\n\t\t\t\t}));\n\t\t\t\t_state.deployError = msg;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t_state.phase = \"starting\";\n\t\t\t_state.deployStatus = _state.deployStatus.map((e) => ({\n\t\t\t\t...e,\n\t\t\t\tstatus: \"pending\",\n\t\t\t\tlabel: \"Starting...\"\n\t\t\t}));\n\t\t\tconst result = await composeUp({\n\t\t\t\t...composeOpts,\n\t\t\t\tforceRecreate: true,\n\t\t\t\tremoveOrphans: true\n\t\t\t});\n\t\t\tif (!result.ok) {\n\t\t\t\tconst msg = mapDockerError(result.stderr ?? \"compose up failed\");\n\t\t\t\t_state.deployStatus = _state.deployStatus.map((e) => ({\n\t\t\t\t\t...e,\n\t\t\t\t\tstatus: \"error\",\n\t\t\t\t\tlabel: msg\n\t\t\t\t}));\n\t\t\t\t_state.deployError = msg;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst healthError = await pollContainerHealth(composeOpts, services, 5 * 6e4);\n\t\t\tif (healthError) {\n\t\t\t\t_state.deployError = healthError;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst voiceError = await bringUpVoiceIfEnabled(state, composeOpts);\n\t\t\tif (voiceError) {\n\t\t\t\t_state.deployError = voiceError;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tmarkSetupComplete(state);\n\t\t\t} catch (err) {\n\t\t\t\tlogger.error(\"failed to persist OP_SETUP_COMPLETE after healthy deploy\", { error: err instanceof Error ? err.message : String(err) });\n\t\t\t\t_state.deployError = \"Deployment succeeded but failed to mark setup complete. Try Retry; if it persists, check disk space and permissions on knowledge/env/stack.env.\";\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t_state.setupComplete = true;\n\t\t\t_state.phase = \"ready\";\n\t\t} catch (err) {\n\t\t\tconst raw = String(err);\n\t\t\tconst msg = mapDockerError(raw);\n\t\t\tlogger.error(\"deploy failed\", { error: raw });\n\t\t\t_state.deployStatus = _state.deployStatus.map((e) => ({\n\t\t\t\t...e,\n\t\t\t\tstatus: \"error\",\n\t\t\t\tlabel: msg\n\t\t\t}));\n\t\t\t_state.deployError = msg;\n\t\t} finally {\n\t\t\t_state.deploying = false;\n\t\t}\n\t})();\n}\nvar VOICE_ADDON = \"voice\";\nvar VOICE_HEALTH_TIMEOUT_MS = 10 * 6e4;\n/**\n* Return the image names for services whose images are NOT present on the\n* local Docker daemon. Used to build actionable error messages.\n*/\nasync function missingServiceImages(composeOpts, services) {\n\tif (services.length === 0) return [];\n\tconst { execFile } = await import(\"node:child_process\");\n\tconst args = [\n\t\t\"compose\",\n\t\t...composeOpts.files.flatMap((f) => [\"-f\", f]),\n\t\t...(composeOpts.envFiles ?? []).filter((f) => existsSync(f)).flatMap((f) => [\"--env-file\", f]),\n\t\t...composeOpts.profiles.flatMap((p) => [\"--profile\", p]),\n\t\t\"config\",\n\t\t\"--format\",\n\t\t\"json\"\n\t];\n\tconst serviceConfig = (await new Promise((resolve) => {\n\t\texecFile(\"docker\", args, { timeout: 3e4 }, (err, stdout) => {\n\t\t\tif (err) return resolve({});\n\t\t\ttry {\n\t\t\t\tresolve(JSON.parse(stdout.toString()));\n\t\t\t} catch {\n\t\t\t\tresolve({});\n\t\t\t}\n\t\t});\n\t})).services ?? {};\n\tconst missing = [];\n\tfor (const svc of services) {\n\t\tconst image = serviceConfig[svc]?.image;\n\t\tif (!image) {\n\t\t\tmissing.push(`${svc} (image unknown)`);\n\t\t\tcontinue;\n\t\t}\n\t\tif (!await new Promise((resolve) => {\n\t\t\texecFile(\"docker\", [\n\t\t\t\t\"image\",\n\t\t\t\t\"inspect\",\n\t\t\t\timage\n\t\t\t], { timeout: 5e3 }, (err) => resolve(!err));\n\t\t})) missing.push(image);\n\t}\n\treturn missing;\n}\n/**\n* Resolve each service's image via `docker compose config` and verify\n* `docker image inspect` finds it locally. Lets the deploy proceed\n* after a registry-pull failure when the operator has the images\n* cached (e.g. dev mode with locally-built `:dev` tags). Returns false\n* on any service whose image we can't confirm is present, including\n* services with no resolvable image and any docker-side error.\n*/\nasync function allServiceImagesPresent(composeOpts, services) {\n\tif (services.length === 0) return false;\n\tconst { execFile } = await import(\"node:child_process\");\n\tconst args = [\n\t\t\"compose\",\n\t\t...composeOpts.files.flatMap((f) => [\"-f\", f]),\n\t\t...(composeOpts.envFiles ?? []).filter((f) => existsSync(f)).flatMap((f) => [\"--env-file\", f]),\n\t\t...composeOpts.profiles.flatMap((p) => [\"--profile\", p]),\n\t\t\"config\",\n\t\t\"--format\",\n\t\t\"json\"\n\t];\n\tconst serviceConfig = (await new Promise((resolve) => {\n\t\texecFile(\"docker\", args, { timeout: 3e4 }, (err, stdout) => {\n\t\t\tif (err) return resolve({});\n\t\t\ttry {\n\t\t\t\tresolve(JSON.parse(stdout.toString()));\n\t\t\t} catch {\n\t\t\t\tresolve({});\n\t\t\t}\n\t\t});\n\t})).services ?? {};\n\tfor (const svc of services) {\n\t\tconst image = serviceConfig[svc]?.image;\n\t\tif (!image) return false;\n\t\tif (!await new Promise((resolve) => {\n\t\t\texecFile(\"docker\", [\n\t\t\t\t\"image\",\n\t\t\t\t\"inspect\",\n\t\t\t\timage\n\t\t\t], { timeout: 5e3 }, (err) => {\n\t\t\t\tresolve(!err);\n\t\t\t});\n\t\t})) return false;\n\t}\n\treturn true;\n}\n/**\n* Pull + bring up the voice addon's chosen profile if\n* the addon is enabled. Runs after the core stack is healthy so the\n* deploy progress UI shows voice as a distinct phase (\"starting-voice\")\n* with its own status row.\n*\n* Returns null on success or a user-friendly error string on failure.\n* The caller surfaces the error via _state.deployError.\n*/\nasync function bringUpVoiceIfEnabled(state, composeOpts) {\n\tif (!listEnabledAddonIds(state.homeDir).includes(VOICE_ADDON)) return null;\n\tconst profiles = getAddonProfiles(state.homeDir, VOICE_ADDON);\n\tconst stored = getAddonProfileSelection(state.stackDir, VOICE_ADDON);\n\tconst profileId = stored ?? profiles.find((p) => p.id === addonProfileId(VOICE_ADDON, \"cpu\"))?.id ?? profiles[0]?.id ?? addonProfileId(VOICE_ADDON, \"cpu\");\n\tif (!stored) try {\n\t\tsetAddonProfileSelection(state.stackDir, VOICE_ADDON, profileId, state);\n\t} catch (err) {\n\t\tlogger.warn(\"voice: failed to persist profile selection (continuing)\", { error: err instanceof Error ? err.message : String(err) });\n\t}\n\tconst profileServices = profiles.find((p) => p.id === profileId)?.services ?? [];\n\tif (profileServices.length === 0) {\n\t\tlogger.warn(\"voice: no services found for chosen profile (skipping)\", { profileId });\n\t\treturn null;\n\t}\n\t_state.phase = \"starting-voice\";\n\t_state.deployStatus = [..._state.deployStatus, ...profileServices.map((svc) => ({\n\t\tservice: svc,\n\t\tstatus: \"pending\",\n\t\tlabel: \"Voice — starting container…\"\n\t}))];\n\tconst upResult = await composeUp({\n\t\t...composeOpts,\n\t\tservices: profileServices,\n\t\tprofiles: [profileId],\n\t\tforceRecreate: true\n\t});\n\tif (!upResult.ok) {\n\t\tconst msg = mapDockerError(upResult.stderr ?? \"Voice container failed to start\");\n\t\t_state.deployStatus = _state.deployStatus.map((e) => profileServices.includes(e.service) ? {\n\t\t\t...e,\n\t\t\tstatus: \"error\",\n\t\t\tlabel: msg\n\t\t} : e);\n\t\treturn `Voice addon: ${msg}`;\n\t}\n\tconst probeUrl = \"http://127.0.0.1:8880/health\";\n\tconst deadline = Date.now() + VOICE_HEALTH_TIMEOUT_MS;\n\tlet healthy = false;\n\twhile (Date.now() < deadline) {\n\t\ttry {\n\t\t\tif ((await fetch(probeUrl, { signal: AbortSignal.timeout(1500) })).ok) {\n\t\t\t\thealthy = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t} catch {}\n\t\tawait new Promise((r) => setTimeout(r, 2e3));\n\t}\n\tif (!healthy) {\n\t\t_state.deployStatus = _state.deployStatus.map((e) => profileServices.includes(e.service) ? {\n\t\t\t...e,\n\t\t\tstatus: \"warning\",\n\t\t\tlabel: \"Voice is still warming up. You can finish setup; check the Voice tab in admin.\"\n\t\t} : e);\n\t\tlogger.warn(\"voice: container did not become healthy in time\", { timeoutMs: VOICE_HEALTH_TIMEOUT_MS });\n\t\treturn null;\n\t}\n\t_state.deployStatus = _state.deployStatus.map((e) => profileServices.includes(e.service) ? {\n\t\t...e,\n\t\tstatus: \"running\",\n\t\tlabel: \"Voice — ready\"\n\t} : e);\n\treturn null;\n}\n//#endregion\nexport { resetDeployState as n, startDeploy as r, getDeployState as t };\n"],"names":[],"mappings":"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"}
@@ -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$10 = createLogger("install-lock");
6867
+ var logger$11 = 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$10.warn("failed to ensure data dir for install lock", {
6934
+ logger$11.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$10.warn("unexpected error acquiring install lock", {
6944
+ logger$11.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$10.info("removing stale install lock and retrying acquire", { path });
6951
+ logger$11.info("removing stale install lock and retrying acquire", { path });
6952
6952
  try {
6953
6953
  rmSync(path, { force: true });
6954
6954
  } catch (err) {
6955
- logger$10.warn("failed to remove stale install lock", {
6955
+ logger$11.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$10.warn("unexpected error re-acquiring install lock", {
6964
+ logger$11.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$10.warn("failed to release install lock", {
6977
+ logger$11.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$9 = createLogger("lib:ui-assets");
10668
+ var logger$10 = 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$9.debug("UI bundle integrity verified", { version: manifest.version });
10764
+ logger$10.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$9.debug("downloading UI build from npm", { version: manifest.version });
10807
+ logger$10.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$8 = createLogger("secrets");
10928
+ var logger$9 = 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$8.warn("failed to enforce vault directory permissions", {
10948
+ logger$9.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$8.warn("failed to enforce vault file permissions", {
10959
+ logger$9.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$8.warn("failed to repair auth.json path", {
11024
+ logger$9.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$8.warn("corrupt auth.json renamed for recovery", {
11067
+ logger$9.warn("corrupt auth.json renamed for recovery", {
11068
11068
  original: authJsonPath$2,
11069
11069
  renamed: corruptPath
11070
11070
  });
11071
11071
  } catch (renameErr) {
11072
- logger$8.warn("could not rename corrupt auth.json; starting fresh", {
11072
+ logger$9.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
  });
@@ -11209,6 +11209,21 @@ function sha256(content) {
11209
11209
  function randomHex(bytes) {
11210
11210
  return randomBytes(bytes).toString("hex");
11211
11211
  }
11212
+ //#endregion
11213
+ //#region ../lib/src/control-plane/core-assets.ts
11214
+ /**
11215
+ * Core runtime asset management for the OpenPalm control plane.
11216
+ *
11217
+ * Manages source-of-truth files for the ~/.openpalm/ layout:
11218
+ * stack/ — compose runtime assets (core.compose.yml)
11219
+ *
11220
+ * This module manages runtime-owned core files only.
11221
+ * Addon compose bundle generation and registry catalog refresh are handled
11222
+ * separately in registry.ts.
11223
+ * Env validation has moved to `akm vault` + the in-house redactor — the
11224
+ * historical `.env.schema` files (varlock format) were retired in #391.
11225
+ */
11226
+ var logger$8 = createLogger("core-assets");
11212
11227
  function bundledAssetPath(relPath) {
11213
11228
  return join(dirname(fileURLToPath(import.meta.url)), "../../../../.openpalm", relPath);
11214
11229
  }
@@ -11218,7 +11233,15 @@ function readCoreCompose() {
11218
11233
  return readFileSync(bundledAssetPath("config/stack/core.compose.yml"), "utf-8");
11219
11234
  }
11220
11235
  function readBundledStackAsset(name) {
11221
- return readFileSync(bundledAssetPath(`config/stack/${name}`), "utf-8");
11236
+ try {
11237
+ return readFileSync(bundledAssetPath(`config/stack/${name}`), "utf-8");
11238
+ } catch (err) {
11239
+ logger$8.warn("bundled stack asset unavailable (returning empty)", {
11240
+ name,
11241
+ error: err instanceof Error ? err.message : String(err)
11242
+ });
11243
+ return "";
11244
+ }
11222
11245
  }
11223
11246
  function ensureOpenCodeSystemConfig() {
11224
11247
  mkdirSync(`${resolveDataDir()}/assistant`, { recursive: true });
@@ -13116,6 +13139,7 @@ async function composeDown(options) {
13116
13139
  const args = buildComposeArgs(options);
13117
13140
  args.push("down");
13118
13141
  if (options.removeVolumes) args.push("-v");
13142
+ if (options.removeOrphans) args.push("--remove-orphans");
13119
13143
  return run$1(args, void 0);
13120
13144
  }
13121
13145
  /**
@@ -13473,9 +13497,18 @@ async function applyTagChange(state, tag) {
13473
13497
  function buildComposeFileList(state) {
13474
13498
  return discoverStackOverlays(state.stackDir, state.homeDir);
13475
13499
  }
13500
+ var CHANNEL_ADDON_IDS = [
13501
+ "api",
13502
+ "chat",
13503
+ "discord",
13504
+ "slack"
13505
+ ];
13476
13506
  async function buildManagedServices(state) {
13477
13507
  const composeOpts = buildComposeOptions(state);
13478
- const services = new Set(CORE_SERVICES);
13508
+ const enabledAddons = listEnabledAddonIds(state.homeDir);
13509
+ const channelsEnabled = enabledAddons.some((a) => CHANNEL_ADDON_IDS.includes(a));
13510
+ const services = new Set(["assistant"]);
13511
+ if (channelsEnabled) services.add("guardian");
13479
13512
  if (composeOpts.files.length > 0 && !process.env.OP_SKIP_COMPOSE_PREFLIGHT) {
13480
13513
  const result = await composeConfigServices(composeOpts);
13481
13514
  if (result.ok && result.services.length > 0) {
@@ -13483,7 +13516,7 @@ async function buildManagedServices(state) {
13483
13516
  return [...services];
13484
13517
  }
13485
13518
  }
13486
- for (const addon of listEnabledAddonIds(state.homeDir)) for (const s of getAddonServiceNames(state.homeDir, addon)) services.add(s);
13519
+ for (const addon of enabledAddons) for (const s of getAddonServiceNames(state.homeDir, addon)) services.add(s);
13487
13520
  return [...services];
13488
13521
  }
13489
13522
  //#endregion
@@ -13852,74 +13885,181 @@ async function validateOllamaResponse(res) {
13852
13885
  return false;
13853
13886
  }
13854
13887
  }
13855
- var LOCAL_PROVIDER_PROBES = [
13856
- {
13857
- provider: "model-runner",
13858
- probes: [
13859
- {
13860
- url: "http://model-runner.docker.internal/engines/v1/models",
13861
- baseUrl: "http://model-runner.docker.internal/engines"
13862
- },
13863
- {
13864
- url: "http://model-runner.docker.internal:12434/engines/v1/models",
13865
- baseUrl: "http://model-runner.docker.internal:12434/engines"
13866
- },
13867
- {
13868
- url: "http://host.docker.internal:12434/engines/v1/models",
13869
- baseUrl: "http://host.docker.internal:12434/engines"
13870
- },
13871
- {
13872
- url: "http://localhost:12434/engines/v1/models",
13873
- baseUrl: "http://localhost:12434/engines"
13874
- }
13875
- ]
13876
- },
13877
- {
13878
- provider: "ollama",
13879
- probes: [
13880
- {
13881
- url: "http://ollama:11434/api/tags",
13882
- baseUrl: "http://ollama:11434",
13883
- validate: validateOllamaResponse
13884
- },
13885
- {
13886
- url: "http://host.docker.internal:11434/api/tags",
13887
- baseUrl: "http://host.docker.internal:11434",
13888
- validate: validateOllamaResponse
13889
- },
13890
- {
13891
- url: "http://localhost:11434/api/tags",
13892
- baseUrl: "http://localhost:11434",
13893
- validate: validateOllamaResponse
13894
- }
13895
- ]
13896
- },
13897
- {
13898
- provider: "lmstudio",
13899
- probes: [{
13900
- url: "http://host.docker.internal:1234/v1/models",
13901
- baseUrl: "http://host.docker.internal:1234"
13902
- }, {
13903
- url: "http://localhost:1234/v1/models",
13904
- baseUrl: "http://localhost:1234"
13905
- }]
13888
+ /**
13889
+ * Parse an OLLAMA_HOST env value into a normalized base URL string, or null if
13890
+ * the input is absent/malformed.
13891
+ *
13892
+ * Accepted forms:
13893
+ * - bare port: "9999" → "http://localhost:9999"
13894
+ * - host:port: "127.0.0.1:9999" "http://127.0.0.1:9999"
13895
+ * - full URL (http/https): "http://h:9999" → "http://h:9999"
13896
+ * - bare hostname: "localhost" → "http://localhost:11434" (default port)
13897
+ *
13898
+ * Returns null for empty string, non-numeric bare tokens that aren't valid
13899
+ * hostnames, and any other garbage.
13900
+ */
13901
+ function parseOllamaHostEnv(raw) {
13902
+ if (!raw || raw.trim() === "") return null;
13903
+ const s = raw.trim();
13904
+ if (s.startsWith("http://") || s.startsWith("https://")) try {
13905
+ const u = new URL(s);
13906
+ if (!u.hostname) return null;
13907
+ return u.origin;
13908
+ } catch {
13909
+ return null;
13906
13910
  }
13907
- ];
13911
+ if (/^\d+$/.test(s)) {
13912
+ const port = parseInt(s, 10);
13913
+ if (port < 1 || port > 65535) return null;
13914
+ return `http://localhost:${port}`;
13915
+ }
13916
+ const colonIdx = s.lastIndexOf(":");
13917
+ if (colonIdx > 0) {
13918
+ const host = s.slice(0, colonIdx);
13919
+ const portStr = s.slice(colonIdx + 1);
13920
+ if (!/^\d+$/.test(portStr)) return null;
13921
+ const port = parseInt(portStr, 10);
13922
+ if (port < 1 || port > 65535) return null;
13923
+ if (/[\s/]/.test(host)) return null;
13924
+ return `http://${host}:${port}`;
13925
+ }
13926
+ if (/^[a-zA-Z0-9._-]+$/.test(s)) return `http://${s}:11434`;
13927
+ return null;
13928
+ }
13929
+ /**
13930
+ * Parse a bare port env value (e.g. LMSTUDIO_PORT, MODEL_RUNNER_PORT) into an
13931
+ * integer, or null if absent/malformed.
13932
+ */
13933
+ function parsePortEnv(raw) {
13934
+ if (!raw || raw.trim() === "") return null;
13935
+ const n = parseInt(raw.trim(), 10);
13936
+ if (!Number.isFinite(n) || n < 1 || n > 65535) return null;
13937
+ return n;
13938
+ }
13939
+ /**
13940
+ * Probe timeout in milliseconds.
13941
+ *
13942
+ * 5 000 ms is chosen to tolerate slow/loaded machines without blocking the
13943
+ * caller for too long. Override with OP_LOCAL_PROBE_TIMEOUT_MS (clamped to
13944
+ * a floor of 1 000 ms so the env value can't make probes never-timeout).
13945
+ */
13946
+ function getProbeTimeoutMs() {
13947
+ const floor = 1e3;
13948
+ const envRaw = process.env["OP_LOCAL_PROBE_TIMEOUT_MS"];
13949
+ if (envRaw) {
13950
+ const n = parseInt(envRaw, 10);
13951
+ if (Number.isFinite(n) && n >= floor) return n;
13952
+ }
13953
+ return 5e3;
13954
+ }
13955
+ /** Build the ordered probe list for model-runner, prepending any env-configured port. */
13956
+ function buildModelRunnerProbes() {
13957
+ const defaults = [
13958
+ {
13959
+ url: "http://model-runner.docker.internal/engines/v1/models",
13960
+ baseUrl: "http://model-runner.docker.internal/engines"
13961
+ },
13962
+ {
13963
+ url: "http://model-runner.docker.internal:12434/engines/v1/models",
13964
+ baseUrl: "http://model-runner.docker.internal:12434/engines"
13965
+ },
13966
+ {
13967
+ url: "http://host.docker.internal:12434/engines/v1/models",
13968
+ baseUrl: "http://host.docker.internal:12434/engines"
13969
+ },
13970
+ {
13971
+ url: "http://localhost:12434/engines/v1/models",
13972
+ baseUrl: "http://localhost:12434/engines"
13973
+ }
13974
+ ];
13975
+ const port = parsePortEnv(process.env["MODEL_RUNNER_PORT"]);
13976
+ if (port !== null) return [{
13977
+ url: `http://localhost:${port}/engines/v1/models`,
13978
+ baseUrl: `http://localhost:${port}/engines`
13979
+ }, ...defaults];
13980
+ return defaults;
13981
+ }
13982
+ /** Build the ordered probe list for ollama, prepending any env-configured endpoint. */
13983
+ function buildOllamaProbes() {
13984
+ const defaults = [
13985
+ {
13986
+ url: "http://ollama:11434/api/tags",
13987
+ baseUrl: "http://ollama:11434",
13988
+ validate: validateOllamaResponse
13989
+ },
13990
+ {
13991
+ url: "http://host.docker.internal:11434/api/tags",
13992
+ baseUrl: "http://host.docker.internal:11434",
13993
+ validate: validateOllamaResponse
13994
+ },
13995
+ {
13996
+ url: "http://localhost:11434/api/tags",
13997
+ baseUrl: "http://localhost:11434",
13998
+ validate: validateOllamaResponse
13999
+ }
14000
+ ];
14001
+ const base = parseOllamaHostEnv(process.env["OLLAMA_HOST"]);
14002
+ if (base !== null) return [{
14003
+ url: `${base}/api/tags`,
14004
+ baseUrl: base,
14005
+ validate: validateOllamaResponse
14006
+ }, ...defaults];
14007
+ return defaults;
14008
+ }
14009
+ /** Build the ordered probe list for lmstudio, prepending any env-configured port. */
14010
+ function buildLmStudioProbes() {
14011
+ const defaults = [{
14012
+ url: "http://host.docker.internal:1234/v1/models",
14013
+ baseUrl: "http://host.docker.internal:1234"
14014
+ }, {
14015
+ url: "http://localhost:1234/v1/models",
14016
+ baseUrl: "http://localhost:1234"
14017
+ }];
14018
+ const port = parsePortEnv(process.env["LMSTUDIO_PORT"] ?? process.env["LM_STUDIO_PORT"]);
14019
+ if (port !== null) return [{
14020
+ url: `http://localhost:${port}/v1/models`,
14021
+ baseUrl: `http://localhost:${port}`
14022
+ }, ...defaults];
14023
+ return defaults;
14024
+ }
13908
14025
  /**
13909
14026
  * Detect all available local providers by probing well-known endpoints.
13910
14027
  * Returns results for all providers (available or not) in parallel.
13911
14028
  */
13912
14029
  async function detectLocalProviders() {
13913
- return await Promise.all(LOCAL_PROVIDER_PROBES.map(async ({ provider, probes }) => {
14030
+ const probeTimeoutMs = getProbeTimeoutMs();
14031
+ const providerProbes = [
14032
+ {
14033
+ provider: "model-runner",
14034
+ probes: buildModelRunnerProbes()
14035
+ },
14036
+ {
14037
+ provider: "ollama",
14038
+ probes: buildOllamaProbes()
14039
+ },
14040
+ {
14041
+ provider: "lmstudio",
14042
+ probes: buildLmStudioProbes()
14043
+ }
14044
+ ];
14045
+ return await Promise.all(providerProbes.map(async ({ provider, probes }) => {
13914
14046
  for (const { url: probeUrl, baseUrl, validate } of probes) try {
13915
- const res = await fetch(probeUrl, { signal: AbortSignal.timeout(3e3) });
14047
+ const res = await fetch(probeUrl, { signal: AbortSignal.timeout(probeTimeoutMs) });
13916
14048
  if (res.ok) {
13917
- if (validate && !await validate(res)) {
13918
- logger$2.debug("provider probe response failed validation", {
13919
- provider,
13920
- url: baseUrl
13921
- });
13922
- continue;
14049
+ if (validate) {
14050
+ const resForValidate = res.clone();
14051
+ if (!await validate(res)) {
14052
+ let bodySnippet = "(unreadable)";
14053
+ try {
14054
+ bodySnippet = (await resForValidate.text()).slice(0, 500);
14055
+ } catch {}
14056
+ logger$2.debug("provider probe response failed validation", {
14057
+ provider,
14058
+ url: probeUrl,
14059
+ bodySnippet
14060
+ });
14061
+ continue;
14062
+ }
13923
14063
  }
13924
14064
  logger$2.debug("detected local provider", {
13925
14065
  provider,
@@ -14073,19 +14213,25 @@ var labelHostProviders = (h) => h.map((p) => p.provider).join(" and ");
14073
14213
  * Decide what setup should do, given detected providers + hardware.
14074
14214
  *
14075
14215
  * Order (first match wins):
14076
- * 1. cloud provider connected -> use it.
14077
- * 2. host-local provider running -> add it, proceed.
14078
- * 3. darwin + apple GPU -> guide to HOST Ollama (Metal); never in-stack.
14079
- * 4. capable GPU (>= threshold) -> enable in-stack Ollama.
14080
- * 5. otherwise -> ask the user to connect a provider.
14216
+ * 1. cloud provider connected -> use it.
14217
+ * 2. host OpenCode has credentials -> steer to import; NEVER auto-enable Ollama.
14218
+ * 3. host-local provider running -> add it, proceed.
14219
+ * 4. darwin + apple GPU -> guide to HOST Ollama (Metal); never in-stack.
14220
+ * 5. capable GPU (>= threshold) -> enable in-stack Ollama.
14221
+ * 6. otherwise -> ask the user to connect a provider.
14081
14222
  */
14082
14223
  function recommendSetup(input) {
14083
14224
  const { cloudProviders, hostProviders, gpu } = input;
14084
14225
  const platform = input.platform ?? process.platform;
14226
+ const hostCredentialCount = input.hostCredentialCount ?? 0;
14085
14227
  if (cloudProviders.length > 0) return {
14086
14228
  action: "use-cloud",
14087
14229
  cloudProviders
14088
14230
  };
14231
+ if (hostCredentialCount > 0) return {
14232
+ action: "connect-manually",
14233
+ alert: "Your host OpenCode installation has configured AI providers. Import them now to use your existing setup — click \"Import from host OpenCode\" on the Providers step, or connect a provider manually."
14234
+ };
14089
14235
  if (hostProviders.length > 0) return {
14090
14236
  action: "use-host-providers",
14091
14237
  hostProviders,
@@ -14732,4 +14878,4 @@ function importHostOpenCode(state, options = {}) {
14732
14878
  }
14733
14879
 
14734
14880
  export { hostAkmStashPath as $, AKM_USER_ENV_REF as A, createState as B, CORE_SERVICES as C, deleteUserEnvKey as D, detectExistingProject as E, detectGpu as F, detectHostOpenCode as G, detectLocalProviders as H, disableHostAkmSharing as I, enableHostAkmSharing as J, ensureAkmUserEnv as K, ensureHomeDirs as L, MigrationError as M, ensureMigrated as N, ensureOpenCodeConfig as O, PROVIDER_KEY_MAP as P, ensureOpenCodeSystemConfig as Q, ensureSecrets as R, executeAutomation as S, fetchProviderModels as T, getAddonProfileAvailability as U, getAddonProfileSelection as V, getAddonProfiles as W, getAddonServiceNames as X, getDockerEvents as Y, getHostAkmSharingStatus as Z, getRegistryAddonConfig as _, addonProfileId as a, importHostOpenCode as a0, isAllowedService as a1, isHostAkmAvailable as a2, isSetupComplete as a3, listAvailableAddonIds as a4, listEnabledAddonIds as a5, listSecretFiles as a6, loadAutomations as a7, parseComposeStderr as a8, parseEnvFile as a9, writeTaskFile as aA, writeUserEnvKey as aB, writeVoiceVars as aC, performSetup as aa, performUpgrade as ab, readAutomationLogs as ac, readSecret as ad, readSecretFile as ae, readStackEnv as af, readStackRuntimeEnv as ag, readStackSecretEnv as ah, readTaskFile as ai, readUserEnvFile as aj, recommendSetup as ak, removeSecretFile as al, removeTaskFile as am, resolveComposeProjectName as an, resolveDataDir as ao, resolveRuntimeFiles as ap, resolveStackDir as aq, seedUiBuild as ar, setAddonEnabled as as, setAddonProfileSelection as at, summarizeComposeStderr as au, validateProposedState as av, writeFileAtomic as aw, writeRuntimeFiles as ax, writeSecretFile as ay, writeStackSecretEnv 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 };
14735
- //# sourceMappingURL=src-DJv-Q_k2.js.map
14881
+ //# sourceMappingURL=src-Bg3Hw0f8.js.map