@openpalm/ui 0.11.5-rc.2 → 0.11.5-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 (383) hide show
  1. package/build/.openpalm-ui-version +1 -1
  2. package/build/client/_app/immutable/assets/{4.Dplzd8Dq.css → 4.BFLRjZM9.css} +1 -1
  3. package/build/client/_app/immutable/assets/4.BFLRjZM9.css.br +0 -0
  4. package/build/client/_app/immutable/assets/4.BFLRjZM9.css.gz +0 -0
  5. package/build/client/_app/immutable/assets/7.DKl0e2Fb.css +1 -0
  6. package/build/client/_app/immutable/assets/7.DKl0e2Fb.css.br +0 -0
  7. package/build/client/_app/immutable/assets/7.DKl0e2Fb.css.gz +0 -0
  8. package/build/client/_app/immutable/chunks/{Cue0EpfJ.js → 0swOyi-5.js} +3 -3
  9. package/build/client/_app/immutable/chunks/0swOyi-5.js.br +0 -0
  10. package/build/client/_app/immutable/chunks/0swOyi-5.js.gz +0 -0
  11. package/build/client/_app/immutable/chunks/B4LSIsxy.js +1 -0
  12. package/build/client/_app/immutable/chunks/B4LSIsxy.js.br +2 -0
  13. package/build/client/_app/immutable/chunks/B4LSIsxy.js.gz +0 -0
  14. package/build/client/_app/immutable/chunks/{Dd6EPzlG.js → BQ0vnNWj.js} +1 -1
  15. package/build/client/_app/immutable/chunks/BQ0vnNWj.js.br +1 -0
  16. package/build/client/_app/immutable/chunks/BQ0vnNWj.js.gz +0 -0
  17. package/build/client/_app/immutable/chunks/{Cu0zcwlV.js → BTsRblfw.js} +1 -1
  18. package/build/client/_app/immutable/chunks/BTsRblfw.js.br +0 -0
  19. package/build/client/_app/immutable/chunks/BTsRblfw.js.gz +0 -0
  20. package/build/client/_app/immutable/chunks/Bmfn2m9N.js +1 -0
  21. package/build/client/_app/immutable/chunks/Bmfn2m9N.js.br +1 -0
  22. package/build/client/_app/immutable/chunks/Bmfn2m9N.js.gz +0 -0
  23. package/build/client/_app/immutable/chunks/C-9oV3QK.js +1 -0
  24. package/build/client/_app/immutable/chunks/C-9oV3QK.js.br +0 -0
  25. package/build/client/_app/immutable/chunks/C-9oV3QK.js.gz +0 -0
  26. package/build/client/_app/immutable/chunks/{Z2W9flFH.js → CDS1U3lf.js} +2 -2
  27. package/build/client/_app/immutable/chunks/CDS1U3lf.js.br +0 -0
  28. package/build/client/_app/immutable/chunks/CDS1U3lf.js.gz +0 -0
  29. package/build/client/_app/immutable/chunks/TM1MyO6b.js +5 -0
  30. package/build/client/_app/immutable/chunks/TM1MyO6b.js.br +0 -0
  31. package/build/client/_app/immutable/chunks/TM1MyO6b.js.gz +0 -0
  32. package/build/client/_app/immutable/chunks/{DAn-iPjx.js → irujFCsS.js} +1 -1
  33. package/build/client/_app/immutable/chunks/irujFCsS.js.br +0 -0
  34. package/build/client/_app/immutable/chunks/irujFCsS.js.gz +0 -0
  35. package/build/client/_app/immutable/entry/app.j4FjlmJV.js +2 -0
  36. package/build/client/_app/immutable/entry/app.j4FjlmJV.js.br +0 -0
  37. package/build/client/_app/immutable/entry/app.j4FjlmJV.js.gz +0 -0
  38. package/build/client/_app/immutable/entry/start.BG0VgQz3.js +1 -0
  39. package/build/client/_app/immutable/entry/start.BG0VgQz3.js.br +1 -0
  40. package/build/client/_app/immutable/entry/start.BG0VgQz3.js.gz +0 -0
  41. package/build/client/_app/immutable/nodes/0.C7eQ_ow9.js +1 -0
  42. package/build/client/_app/immutable/nodes/0.C7eQ_ow9.js.br +0 -0
  43. package/build/client/_app/immutable/nodes/0.C7eQ_ow9.js.gz +0 -0
  44. package/build/client/_app/immutable/nodes/1.DOderKqv.js +1 -0
  45. package/build/client/_app/immutable/nodes/1.DOderKqv.js.br +1 -0
  46. package/build/client/_app/immutable/nodes/1.DOderKqv.js.gz +0 -0
  47. package/build/client/_app/immutable/nodes/2.B-8ehRO1.js +1 -0
  48. package/build/client/_app/immutable/nodes/2.B-8ehRO1.js.br +0 -0
  49. package/build/client/_app/immutable/nodes/2.B-8ehRO1.js.gz +0 -0
  50. package/build/client/_app/immutable/nodes/3.B_FXzjZB.js +1 -0
  51. package/build/client/_app/immutable/nodes/3.B_FXzjZB.js.br +0 -0
  52. package/build/client/_app/immutable/nodes/3.B_FXzjZB.js.gz +0 -0
  53. package/build/client/_app/immutable/nodes/4.CL9pbPfw.js +19 -0
  54. package/build/client/_app/immutable/nodes/4.CL9pbPfw.js.br +0 -0
  55. package/build/client/_app/immutable/nodes/4.CL9pbPfw.js.gz +0 -0
  56. package/build/client/_app/immutable/nodes/5.By0afU0Y.js +4 -0
  57. package/build/client/_app/immutable/nodes/5.By0afU0Y.js.br +0 -0
  58. package/build/client/_app/immutable/nodes/5.By0afU0Y.js.gz +0 -0
  59. package/build/client/_app/immutable/nodes/6.BnWmdf6t.js +1 -0
  60. package/build/client/_app/immutable/nodes/6.BnWmdf6t.js.br +0 -0
  61. package/build/client/_app/immutable/nodes/6.BnWmdf6t.js.gz +0 -0
  62. package/build/client/_app/immutable/nodes/7.RAc8_3qJ.js +15 -0
  63. package/build/client/_app/immutable/nodes/7.RAc8_3qJ.js.br +0 -0
  64. package/build/client/_app/immutable/nodes/7.RAc8_3qJ.js.gz +0 -0
  65. package/build/client/_app/immutable/nodes/8.Dytsowyk.js +1 -0
  66. package/build/client/_app/immutable/nodes/8.Dytsowyk.js.br +0 -0
  67. package/build/client/_app/immutable/nodes/8.Dytsowyk.js.gz +0 -0
  68. package/build/client/_app/immutable/nodes/9.CFQabEMi.js +5 -0
  69. package/build/client/_app/immutable/nodes/9.CFQabEMi.js.br +0 -0
  70. package/build/client/_app/immutable/nodes/9.CFQabEMi.js.gz +0 -0
  71. package/build/client/_app/version.json +1 -1
  72. package/build/client/_app/version.json.br +1 -1
  73. package/build/client/_app/version.json.gz +0 -0
  74. package/build/server/chunks/0-BGsPZcaQ.js +9 -0
  75. package/build/server/chunks/{0-DYSdORF4.js.map → 0-BGsPZcaQ.js.map} +1 -1
  76. package/build/server/chunks/1-Daoybjaw.js +9 -0
  77. package/build/server/chunks/{1-DriLpuch.js.map → 1-Daoybjaw.js.map} +1 -1
  78. package/build/server/chunks/{2-CTCIjKJp.js → 2-DQWoUtW1.js} +2 -2
  79. package/build/server/chunks/{2-CTCIjKJp.js.map → 2-DQWoUtW1.js.map} +1 -1
  80. package/build/server/chunks/{3-PAUGKR-M.js → 3-COIGgysA.js} +2 -2
  81. package/build/server/chunks/{3-PAUGKR-M.js.map → 3-COIGgysA.js.map} +1 -1
  82. package/build/server/chunks/4-Lm1O6Rmh.js +9 -0
  83. package/build/server/chunks/4-Lm1O6Rmh.js.map +1 -0
  84. package/build/server/chunks/5-BfmhtNP9.js +9 -0
  85. package/build/server/chunks/{5-CaAZ_pnW.js.map → 5-BfmhtNP9.js.map} +1 -1
  86. package/build/server/chunks/6-AcylLX8-.js +9 -0
  87. package/build/server/chunks/{6-Djkq9gPL.js.map → 6-AcylLX8-.js.map} +1 -1
  88. package/build/server/chunks/7-BT0zxD9E.js +9 -0
  89. package/build/server/chunks/7-BT0zxD9E.js.map +1 -0
  90. package/build/server/chunks/{8-CrXn8AWD.js → 8-DMgWQQBm.js} +3 -3
  91. package/build/server/chunks/{8-CrXn8AWD.js.map → 8-DMgWQQBm.js.map} +1 -1
  92. package/build/server/chunks/{9-yLwdBbDq.js → 9-CGVsBC0_.js} +2 -2
  93. package/build/server/chunks/{9-yLwdBbDq.js.map → 9-CGVsBC0_.js.map} +1 -1
  94. package/build/server/chunks/{Navbar-C72vlTUN.js → Navbar-C9kE6wR-.js} +38 -454
  95. package/build/server/chunks/Navbar-C9kE6wR-.js.map +1 -0
  96. package/build/server/chunks/{_layout.svelte-DzBCdyUD.js → _layout.svelte-DCfzq18z.js} +2 -2
  97. package/build/server/chunks/{_layout.svelte-DzBCdyUD.js.map → _layout.svelte-DCfzq18z.js.map} +1 -1
  98. package/build/server/chunks/{_page.svelte-BBHjv6FS.js → _page.svelte-B3FJ13Ci.js} +6 -6
  99. package/build/server/chunks/{_page.svelte-BBHjv6FS.js.map → _page.svelte-B3FJ13Ci.js.map} +1 -1
  100. package/build/server/chunks/{_page.svelte-DRU3ay4a.js → _page.svelte-BA7DptUV.js} +3 -3
  101. package/build/server/chunks/{_page.svelte-DRU3ay4a.js.map → _page.svelte-BA7DptUV.js.map} +1 -1
  102. package/build/server/chunks/{ChatMessage-jkPoi0IR.js → _page.svelte-C0eMsRDk.js} +105 -8
  103. package/build/server/chunks/_page.svelte-C0eMsRDk.js.map +1 -0
  104. package/build/server/chunks/{_page.svelte-C6_O57B-.js → _page.svelte-Dl3WoXNo.js} +10 -150
  105. package/build/server/chunks/_page.svelte-Dl3WoXNo.js.map +1 -0
  106. package/build/server/chunks/{_page.svelte-CtyxfG3i.js → _page.svelte-Dnt12F6c.js} +6 -6
  107. package/build/server/chunks/{_page.svelte-CtyxfG3i.js.map → _page.svelte-Dnt12F6c.js.map} +1 -1
  108. package/build/server/chunks/{_server.ts-BXz3inxG.js → _server.ts-1mdOjWEN.js} +5 -5
  109. package/build/server/chunks/{_server.ts-BXz3inxG.js.map → _server.ts-1mdOjWEN.js.map} +1 -1
  110. package/build/server/chunks/{_server.ts-CqKt78Pt.js → _server.ts-3JO3CKsE.js} +4 -4
  111. package/build/server/chunks/{_server.ts-CqKt78Pt.js.map → _server.ts-3JO3CKsE.js.map} +1 -1
  112. package/build/server/chunks/{_server.ts-CF9SWt4o.js → _server.ts-4HorMS2R.js} +4 -4
  113. package/build/server/chunks/{_server.ts-CF9SWt4o.js.map → _server.ts-4HorMS2R.js.map} +1 -1
  114. package/build/server/chunks/{_server.ts-CZ1QyKiP.js → _server.ts-B1Jl9Grz.js} +4 -4
  115. package/build/server/chunks/{_server.ts-CZ1QyKiP.js.map → _server.ts-B1Jl9Grz.js.map} +1 -1
  116. package/build/server/chunks/{_server.ts-BipzCnqX.js → _server.ts-B31I037d.js} +6 -6
  117. package/build/server/chunks/{_server.ts-BipzCnqX.js.map → _server.ts-B31I037d.js.map} +1 -1
  118. package/build/server/chunks/{_server.ts-DOiOnglY.js → _server.ts-B3ntDGZM.js} +5 -5
  119. package/build/server/chunks/{_server.ts-DOiOnglY.js.map → _server.ts-B3ntDGZM.js.map} +1 -1
  120. package/build/server/chunks/_server.ts-B79PxL9c.js +91 -0
  121. package/build/server/chunks/_server.ts-B79PxL9c.js.map +1 -0
  122. package/build/server/chunks/{_server.ts-DhJ3EQ1-.js → _server.ts-B8EZxkK3.js} +5 -5
  123. package/build/server/chunks/{_server.ts-DhJ3EQ1-.js.map → _server.ts-B8EZxkK3.js.map} +1 -1
  124. package/build/server/chunks/{_server.ts-C9PqkEga.js → _server.ts-B8YF9aVx.js} +4 -4
  125. package/build/server/chunks/{_server.ts-C9PqkEga.js.map → _server.ts-B8YF9aVx.js.map} +1 -1
  126. package/build/server/chunks/{_server.ts-DUqQgjZv.js → _server.ts-BEjyvkVV.js} +4 -4
  127. package/build/server/chunks/{_server.ts-DUqQgjZv.js.map → _server.ts-BEjyvkVV.js.map} +1 -1
  128. package/build/server/chunks/{_server.ts-BybgwfUH.js → _server.ts-BGqa6Laa.js} +4 -4
  129. package/build/server/chunks/{_server.ts-BybgwfUH.js.map → _server.ts-BGqa6Laa.js.map} +1 -1
  130. package/build/server/chunks/{_server.ts-DcKEI2Ff.js → _server.ts-BHmCir74.js} +4 -4
  131. package/build/server/chunks/{_server.ts-DcKEI2Ff.js.map → _server.ts-BHmCir74.js.map} +1 -1
  132. package/build/server/chunks/{_server.ts-B3CTgC7e.js → _server.ts-BLUm8wAq.js} +4 -4
  133. package/build/server/chunks/{_server.ts-B3CTgC7e.js.map → _server.ts-BLUm8wAq.js.map} +1 -1
  134. package/build/server/chunks/{_server.ts-D13Et6Nm.js → _server.ts-BNJn20vV.js} +4 -4
  135. package/build/server/chunks/{_server.ts-D13Et6Nm.js.map → _server.ts-BNJn20vV.js.map} +1 -1
  136. package/build/server/chunks/{_server.ts-DMh6Tg2b.js → _server.ts-BTvZB-WH.js} +4 -4
  137. package/build/server/chunks/{_server.ts-DMh6Tg2b.js.map → _server.ts-BTvZB-WH.js.map} +1 -1
  138. package/build/server/chunks/{_server.ts-CfMgNVBt.js → _server.ts-BUIWPYRF.js} +4 -4
  139. package/build/server/chunks/{_server.ts-CfMgNVBt.js.map → _server.ts-BUIWPYRF.js.map} +1 -1
  140. package/build/server/chunks/{_server.ts-CbKiZYKJ.js → _server.ts-BWtTOsFi.js} +4 -4
  141. package/build/server/chunks/{_server.ts-CbKiZYKJ.js.map → _server.ts-BWtTOsFi.js.map} +1 -1
  142. package/build/server/chunks/{_server.ts-1UmhXPK8.js → _server.ts-BY7nR9Ev.js} +4 -4
  143. package/build/server/chunks/{_server.ts-1UmhXPK8.js.map → _server.ts-BY7nR9Ev.js.map} +1 -1
  144. package/build/server/chunks/{_server.ts-CPdyvrte.js → _server.ts-BdLKHRnY.js} +6 -6
  145. package/build/server/chunks/{_server.ts-CPdyvrte.js.map → _server.ts-BdLKHRnY.js.map} +1 -1
  146. package/build/server/chunks/{_server.ts-xI2x8ziC.js → _server.ts-BhRtn8Xn.js} +4 -4
  147. package/build/server/chunks/{_server.ts-xI2x8ziC.js.map → _server.ts-BhRtn8Xn.js.map} +1 -1
  148. package/build/server/chunks/{_server.ts-QG_Io1nH.js → _server.ts-Bq4Oko-2.js} +4 -4
  149. package/build/server/chunks/{_server.ts-QG_Io1nH.js.map → _server.ts-Bq4Oko-2.js.map} +1 -1
  150. package/build/server/chunks/{_server.ts-CU1zUqIs.js → _server.ts-Bu_7eQaL.js} +5 -5
  151. package/build/server/chunks/{_server.ts-CU1zUqIs.js.map → _server.ts-Bu_7eQaL.js.map} +1 -1
  152. package/build/server/chunks/{_server.ts-BaUBfxz3.js → _server.ts-BvbnbZsl.js} +4 -4
  153. package/build/server/chunks/{_server.ts-BaUBfxz3.js.map → _server.ts-BvbnbZsl.js.map} +1 -1
  154. package/build/server/chunks/{_server.ts-DEFxa6iW.js → _server.ts-C4pf3VKi.js} +4 -4
  155. package/build/server/chunks/{_server.ts-DEFxa6iW.js.map → _server.ts-C4pf3VKi.js.map} +1 -1
  156. package/build/server/chunks/{_server.ts-owfxHChR.js → _server.ts-C7K7bv8w.js} +5 -5
  157. package/build/server/chunks/{_server.ts-owfxHChR.js.map → _server.ts-C7K7bv8w.js.map} +1 -1
  158. package/build/server/chunks/{_server.ts-DueRmcvI.js → _server.ts-C8BrkC8T.js} +5 -5
  159. package/build/server/chunks/{_server.ts-DueRmcvI.js.map → _server.ts-C8BrkC8T.js.map} +1 -1
  160. package/build/server/chunks/{_server.ts-BhS7lUNN.js → _server.ts-C8zFV8J3.js} +4 -4
  161. package/build/server/chunks/{_server.ts-BhS7lUNN.js.map → _server.ts-C8zFV8J3.js.map} +1 -1
  162. package/build/server/chunks/{_server.ts-CfOeqfql.js → _server.ts-CD-Cddqe.js} +5 -5
  163. package/build/server/chunks/{_server.ts-CfOeqfql.js.map → _server.ts-CD-Cddqe.js.map} +1 -1
  164. package/build/server/chunks/{_server.ts-CO62Q41P.js → _server.ts-CExwMomX.js} +4 -4
  165. package/build/server/chunks/{_server.ts-CO62Q41P.js.map → _server.ts-CExwMomX.js.map} +1 -1
  166. package/build/server/chunks/{_server.ts-D9kpjwUe.js → _server.ts-CH8uRkxq.js} +4 -4
  167. package/build/server/chunks/{_server.ts-D9kpjwUe.js.map → _server.ts-CH8uRkxq.js.map} +1 -1
  168. package/build/server/chunks/{_server.ts-dXPW3qhK.js → _server.ts-CHQmAGEC.js} +5 -5
  169. package/build/server/chunks/{_server.ts-dXPW3qhK.js.map → _server.ts-CHQmAGEC.js.map} +1 -1
  170. package/build/server/chunks/{_server.ts-Dhr817vY.js → _server.ts-CIEz-ybk.js} +4 -4
  171. package/build/server/chunks/{_server.ts-Dhr817vY.js.map → _server.ts-CIEz-ybk.js.map} +1 -1
  172. package/build/server/chunks/{_server.ts-CffocV9v.js → _server.ts-CNLz6iJ7.js} +4 -4
  173. package/build/server/chunks/{_server.ts-CffocV9v.js.map → _server.ts-CNLz6iJ7.js.map} +1 -1
  174. package/build/server/chunks/{_server.ts-rTKNgtmO.js → _server.ts-CVxiERfc.js} +4 -4
  175. package/build/server/chunks/{_server.ts-rTKNgtmO.js.map → _server.ts-CVxiERfc.js.map} +1 -1
  176. package/build/server/chunks/{_server.ts-nTzGdtnW.js → _server.ts-CX2sHcZR.js} +4 -4
  177. package/build/server/chunks/{_server.ts-nTzGdtnW.js.map → _server.ts-CX2sHcZR.js.map} +1 -1
  178. package/build/server/chunks/{_server.ts-agyoOrvg.js → _server.ts-CXI7k8hl.js} +4 -4
  179. package/build/server/chunks/{_server.ts-agyoOrvg.js.map → _server.ts-CXI7k8hl.js.map} +1 -1
  180. package/build/server/chunks/{_server.ts-DPgmVByY.js → _server.ts-CXmwf1pu.js} +2 -2
  181. package/build/server/chunks/{_server.ts-DPgmVByY.js.map → _server.ts-CXmwf1pu.js.map} +1 -1
  182. package/build/server/chunks/{_server.ts-vrMFfkPv.js → _server.ts-C_EnHMEu.js} +4 -4
  183. package/build/server/chunks/{_server.ts-vrMFfkPv.js.map → _server.ts-C_EnHMEu.js.map} +1 -1
  184. package/build/server/chunks/{_server.ts-C2xwF6p0.js → _server.ts-CbOKfJ3v.js} +6 -6
  185. package/build/server/chunks/{_server.ts-C2xwF6p0.js.map → _server.ts-CbOKfJ3v.js.map} +1 -1
  186. package/build/server/chunks/{_server.ts-CBEORQmf.js → _server.ts-CciSVwzg.js} +5 -5
  187. package/build/server/chunks/{_server.ts-CBEORQmf.js.map → _server.ts-CciSVwzg.js.map} +1 -1
  188. package/build/server/chunks/{_server.ts-DzWfvYWd.js → _server.ts-CdB1K2M6.js} +2 -2
  189. package/build/server/chunks/{_server.ts-DzWfvYWd.js.map → _server.ts-CdB1K2M6.js.map} +1 -1
  190. package/build/server/chunks/{_server.ts-DUJMugN3.js → _server.ts-CeeR1W32.js} +4 -4
  191. package/build/server/chunks/{_server.ts-DUJMugN3.js.map → _server.ts-CeeR1W32.js.map} +1 -1
  192. package/build/server/chunks/{_server.ts-CPTHGxCn.js → _server.ts-CpJ08_Lw.js} +4 -4
  193. package/build/server/chunks/{_server.ts-CPTHGxCn.js.map → _server.ts-CpJ08_Lw.js.map} +1 -1
  194. package/build/server/chunks/{_server.ts-Bn_yGKDn.js → _server.ts-CqH3nv-S.js} +5 -5
  195. package/build/server/chunks/{_server.ts-Bn_yGKDn.js.map → _server.ts-CqH3nv-S.js.map} +1 -1
  196. package/build/server/chunks/{_server.ts-C2din2_5.js → _server.ts-CreuvDch.js} +4 -4
  197. package/build/server/chunks/{_server.ts-C2din2_5.js.map → _server.ts-CreuvDch.js.map} +1 -1
  198. package/build/server/chunks/{_server.ts-DEKm5x2n.js → _server.ts-CtltE_T-.js} +2 -2
  199. package/build/server/chunks/{_server.ts-DEKm5x2n.js.map → _server.ts-CtltE_T-.js.map} +1 -1
  200. package/build/server/chunks/{_server.ts-DYdXyLLa.js → _server.ts-CzoE8edN.js} +5 -5
  201. package/build/server/chunks/{_server.ts-DYdXyLLa.js.map → _server.ts-CzoE8edN.js.map} +1 -1
  202. package/build/server/chunks/{_server.ts-zHhiafCS.js → _server.ts-D-Vwef5C.js} +4 -4
  203. package/build/server/chunks/{_server.ts-zHhiafCS.js.map → _server.ts-D-Vwef5C.js.map} +1 -1
  204. package/build/server/chunks/{_server.ts-BZU8fpG9.js → _server.ts-D3QPUpDc.js} +4 -4
  205. package/build/server/chunks/{_server.ts-BZU8fpG9.js.map → _server.ts-D3QPUpDc.js.map} +1 -1
  206. package/build/server/chunks/{_server.ts-DWuaJT7_.js → _server.ts-D8cp-Em3.js} +4 -4
  207. package/build/server/chunks/{_server.ts-DWuaJT7_.js.map → _server.ts-D8cp-Em3.js.map} +1 -1
  208. package/build/server/chunks/{_server.ts-9Qea4tbm.js → _server.ts-DAW24-9-.js} +4 -4
  209. package/build/server/chunks/{_server.ts-9Qea4tbm.js.map → _server.ts-DAW24-9-.js.map} +1 -1
  210. package/build/server/chunks/{_server.ts-9sR9fd3C.js → _server.ts-DHBX6Ary.js} +5 -5
  211. package/build/server/chunks/{_server.ts-9sR9fd3C.js.map → _server.ts-DHBX6Ary.js.map} +1 -1
  212. package/build/server/chunks/{_server.ts-DEpPzJ18.js → _server.ts-DL9hlvL8.js} +4 -4
  213. package/build/server/chunks/{_server.ts-DEpPzJ18.js.map → _server.ts-DL9hlvL8.js.map} +1 -1
  214. package/build/server/chunks/{_server.ts-B-boVJcF.js → _server.ts-DLVGDzlE.js} +4 -4
  215. package/build/server/chunks/{_server.ts-B-boVJcF.js.map → _server.ts-DLVGDzlE.js.map} +1 -1
  216. package/build/server/chunks/{_server.ts-rjMXs5w6.js → _server.ts-DPC8qYUD.js} +4 -4
  217. package/build/server/chunks/{_server.ts-rjMXs5w6.js.map → _server.ts-DPC8qYUD.js.map} +1 -1
  218. package/build/server/chunks/{_server.ts-NLmps3nz.js → _server.ts-DVRyf5BI.js} +4 -4
  219. package/build/server/chunks/{_server.ts-NLmps3nz.js.map → _server.ts-DVRyf5BI.js.map} +1 -1
  220. package/build/server/chunks/{_server.ts-BIdpky_N.js → _server.ts-DY3ZDXdA.js} +4 -4
  221. package/build/server/chunks/{_server.ts-BIdpky_N.js.map → _server.ts-DY3ZDXdA.js.map} +1 -1
  222. package/build/server/chunks/{_server.ts-DzNUAWRG.js → _server.ts-Dc9XEMmF.js} +4 -4
  223. package/build/server/chunks/{_server.ts-DzNUAWRG.js.map → _server.ts-Dc9XEMmF.js.map} +1 -1
  224. package/build/server/chunks/{_server.ts-DHjryCBX.js → _server.ts-Dd4Mh0JV.js} +4 -4
  225. package/build/server/chunks/{_server.ts-DHjryCBX.js.map → _server.ts-Dd4Mh0JV.js.map} +1 -1
  226. package/build/server/chunks/{_server.ts-ILHo2l5u.js → _server.ts-DlwXpopR.js} +3 -3
  227. package/build/server/chunks/{_server.ts-ILHo2l5u.js.map → _server.ts-DlwXpopR.js.map} +1 -1
  228. package/build/server/chunks/{_server.ts-D7mVp5wx.js → _server.ts-Do5L_4tt.js} +4 -4
  229. package/build/server/chunks/{_server.ts-D7mVp5wx.js.map → _server.ts-Do5L_4tt.js.map} +1 -1
  230. package/build/server/chunks/{_server.ts-DaKMiVFv.js → _server.ts-DsTUwnu1.js} +4 -4
  231. package/build/server/chunks/{_server.ts-DaKMiVFv.js.map → _server.ts-DsTUwnu1.js.map} +1 -1
  232. package/build/server/chunks/{_server.ts-DjY1Wxwi.js → _server.ts-DzIilMO5.js} +2 -2
  233. package/build/server/chunks/{_server.ts-DjY1Wxwi.js.map → _server.ts-DzIilMO5.js.map} +1 -1
  234. package/build/server/chunks/{_server.ts-BWz851yG.js → _server.ts-E5YqcwqQ.js} +4 -4
  235. package/build/server/chunks/{_server.ts-BWz851yG.js.map → _server.ts-E5YqcwqQ.js.map} +1 -1
  236. package/build/server/chunks/{_server.ts-Cln7YA08.js → _server.ts-Gbkg-oto.js} +4 -4
  237. package/build/server/chunks/{_server.ts-Cln7YA08.js.map → _server.ts-Gbkg-oto.js.map} +1 -1
  238. package/build/server/chunks/{_server.ts-CYQK3G4x.js → _server.ts-IzD0bafW.js} +5 -5
  239. package/build/server/chunks/{_server.ts-CYQK3G4x.js.map → _server.ts-IzD0bafW.js.map} +1 -1
  240. package/build/server/chunks/{_server.ts-DC8UQBex.js → _server.ts-Lzz9ashZ.js} +4 -4
  241. package/build/server/chunks/{_server.ts-DC8UQBex.js.map → _server.ts-Lzz9ashZ.js.map} +1 -1
  242. package/build/server/chunks/{_server.ts-IsQCU7Zw.js → _server.ts-MGn-MXr5.js} +4 -4
  243. package/build/server/chunks/{_server.ts-IsQCU7Zw.js.map → _server.ts-MGn-MXr5.js.map} +1 -1
  244. package/build/server/chunks/{_server.ts-DXWUvegr.js → _server.ts-QvBpEIYu.js} +4 -4
  245. package/build/server/chunks/{_server.ts-DXWUvegr.js.map → _server.ts-QvBpEIYu.js.map} +1 -1
  246. package/build/server/chunks/{_server.ts-MNKeYGnJ.js → _server.ts-SLlbT28g.js} +2 -2
  247. package/build/server/chunks/{_server.ts-MNKeYGnJ.js.map → _server.ts-SLlbT28g.js.map} +1 -1
  248. package/build/server/chunks/{_server.ts-COna958t.js → _server.ts-j5xF-dJX.js} +4 -4
  249. package/build/server/chunks/{_server.ts-COna958t.js.map → _server.ts-j5xF-dJX.js.map} +1 -1
  250. package/build/server/chunks/{_server.ts-DTDGaSBp.js → _server.ts-pQ9okj_b.js} +6 -6
  251. package/build/server/chunks/{_server.ts-DTDGaSBp.js.map → _server.ts-pQ9okj_b.js.map} +1 -1
  252. package/build/server/chunks/{_server.ts-CRr08SwC.js → _server.ts-yWBMi6sn.js} +6 -6
  253. package/build/server/chunks/{_server.ts-CRr08SwC.js.map → _server.ts-yWBMi6sn.js.map} +1 -1
  254. package/build/server/chunks/{_server.ts-BDtgFSkw.js → _server.ts-ykNeG8km.js} +4 -4
  255. package/build/server/chunks/{_server.ts-BDtgFSkw.js.map → _server.ts-ykNeG8km.js.map} +1 -1
  256. package/build/server/chunks/{addon-helpers-DFEyMJhA.js → addon-helpers-DBJL8kvq.js} +3 -3
  257. package/build/server/chunks/{addon-helpers-DFEyMJhA.js.map → addon-helpers-DBJL8kvq.js.map} +1 -1
  258. package/build/server/chunks/{akm-CxqalIXt.js → akm-hO0p79ZE.js} +2 -2
  259. package/build/server/chunks/{akm-CxqalIXt.js.map → akm-hO0p79ZE.js.map} +1 -1
  260. package/build/server/chunks/{client-DsJcfz5L.js → client-DchoQXpW.js} +2 -2
  261. package/build/server/chunks/{client-DsJcfz5L.js.map → client-DchoQXpW.js.map} +1 -1
  262. package/build/server/chunks/{config-gWehiHgc.js → config-5vfdWPGq.js} +2 -2
  263. package/build/server/chunks/{config-gWehiHgc.js.map → config-5vfdWPGq.js.map} +1 -1
  264. package/build/server/chunks/{docker-7X4MmyTh.js → docker-DYeytgDI.js} +2 -2
  265. package/build/server/chunks/{docker-7X4MmyTh.js.map → docker-DYeytgDI.js.map} +1 -1
  266. package/build/server/chunks/{endpoints-CtFzewjq.js → endpoints-pIoXJCW6.js} +2 -2
  267. package/build/server/chunks/{endpoints-CtFzewjq.js.map → endpoints-pIoXJCW6.js.map} +1 -1
  268. package/build/server/chunks/{environment-WkaY56eW.js → environment-B0PbsX5P.js} +2 -2
  269. package/build/server/chunks/{environment-WkaY56eW.js.map → environment-B0PbsX5P.js.map} +1 -1
  270. package/build/server/chunks/{error.svelte-wQDMzENS.js → error.svelte-Cmr7gpdL.js} +4 -4
  271. package/build/server/chunks/{error.svelte-wQDMzENS.js.map → error.svelte-Cmr7gpdL.js.map} +1 -1
  272. package/build/server/chunks/{helpers-DHqjUGTB.js → helpers-CVirrNSz.js} +3 -3
  273. package/build/server/chunks/{helpers-DHqjUGTB.js.map → helpers-CVirrNSz.js.map} +1 -1
  274. package/build/server/chunks/{hooks.server-BT9BE8vm.js → hooks.server-pc-TSpQy.js} +5 -5
  275. package/build/server/chunks/{hooks.server-BT9BE8vm.js.map → hooks.server-pc-TSpQy.js.map} +1 -1
  276. package/build/server/chunks/{http-oyGIz0mI.js → http-DGsfa0DV.js} +2 -2
  277. package/build/server/chunks/{http-oyGIz0mI.js.map → http-DGsfa0DV.js.map} +1 -1
  278. package/build/server/chunks/{internal-BxZRZr_z.js → internal-DriC3vi3.js} +3 -3
  279. package/build/server/chunks/{internal-BxZRZr_z.js.map → internal-DriC3vi3.js.map} +1 -1
  280. package/build/server/chunks/{session-cookie-xaN0BnnT.js → session-cookie-DEuOwtHY.js} +2 -2
  281. package/build/server/chunks/{session-cookie-xaN0BnnT.js.map → session-cookie-DEuOwtHY.js.map} +1 -1
  282. package/build/server/chunks/{setup-deploy-LcTBIlO0.js → setup-deploy-D4bnmfpV.js} +2 -2
  283. package/build/server/chunks/{setup-deploy-LcTBIlO0.js.map → setup-deploy-D4bnmfpV.js.map} +1 -1
  284. package/build/server/chunks/{src-Bqr11v--.js → src-CyeWH4Df.js} +4 -92
  285. package/build/server/chunks/src-CyeWH4Df.js.map +1 -0
  286. package/build/server/chunks/{state-Cp7JnmAS.js → state-BcUnjLg5.js} +2 -2
  287. package/build/server/chunks/{state-Cp7JnmAS.js.map → state-BcUnjLg5.js.map} +1 -1
  288. package/build/server/chunks/{theme-state.svelte-_CMr5Hu9.js → theme-state.svelte-CeABRes-.js} +24 -96
  289. package/build/server/chunks/theme-state.svelte-CeABRes-.js.map +1 -0
  290. package/build/server/index.js +2 -2
  291. package/build/server/manifest.js +85 -99
  292. package/build/server/manifest.js.map +1 -1
  293. package/package.json +2 -2
  294. package/build/client/_app/immutable/assets/4.Dplzd8Dq.css.br +0 -0
  295. package/build/client/_app/immutable/assets/4.Dplzd8Dq.css.gz +0 -0
  296. package/build/client/_app/immutable/assets/7.CtszQVIX.css +0 -1
  297. package/build/client/_app/immutable/assets/7.CtszQVIX.css.br +0 -0
  298. package/build/client/_app/immutable/assets/7.CtszQVIX.css.gz +0 -0
  299. package/build/client/_app/immutable/assets/ChatMessage.09JQ9G_F.css +0 -1
  300. package/build/client/_app/immutable/assets/ChatMessage.09JQ9G_F.css.br +0 -0
  301. package/build/client/_app/immutable/assets/ChatMessage.09JQ9G_F.css.gz +0 -0
  302. package/build/client/_app/immutable/chunks/B29IM9zg.js +0 -1
  303. package/build/client/_app/immutable/chunks/B29IM9zg.js.br +0 -0
  304. package/build/client/_app/immutable/chunks/B29IM9zg.js.gz +0 -0
  305. package/build/client/_app/immutable/chunks/BZzNcvj6.js +0 -1
  306. package/build/client/_app/immutable/chunks/BZzNcvj6.js.br +0 -2
  307. package/build/client/_app/immutable/chunks/BZzNcvj6.js.gz +0 -0
  308. package/build/client/_app/immutable/chunks/Cu0zcwlV.js.br +0 -0
  309. package/build/client/_app/immutable/chunks/Cu0zcwlV.js.gz +0 -0
  310. package/build/client/_app/immutable/chunks/Cue0EpfJ.js.br +0 -0
  311. package/build/client/_app/immutable/chunks/Cue0EpfJ.js.gz +0 -0
  312. package/build/client/_app/immutable/chunks/DAn-iPjx.js.br +0 -0
  313. package/build/client/_app/immutable/chunks/DAn-iPjx.js.gz +0 -0
  314. package/build/client/_app/immutable/chunks/DNTZUJo4.js +0 -15
  315. package/build/client/_app/immutable/chunks/DNTZUJo4.js.br +0 -0
  316. package/build/client/_app/immutable/chunks/DNTZUJo4.js.gz +0 -0
  317. package/build/client/_app/immutable/chunks/Dd6EPzlG.js.br +0 -0
  318. package/build/client/_app/immutable/chunks/Dd6EPzlG.js.gz +0 -0
  319. package/build/client/_app/immutable/chunks/DhD65Brz.js +0 -1
  320. package/build/client/_app/immutable/chunks/DhD65Brz.js.br +0 -1
  321. package/build/client/_app/immutable/chunks/DhD65Brz.js.gz +0 -0
  322. package/build/client/_app/immutable/chunks/Z2W9flFH.js.br +0 -0
  323. package/build/client/_app/immutable/chunks/Z2W9flFH.js.gz +0 -0
  324. package/build/client/_app/immutable/chunks/pnb2UBxa.js +0 -5
  325. package/build/client/_app/immutable/chunks/pnb2UBxa.js.br +0 -0
  326. package/build/client/_app/immutable/chunks/pnb2UBxa.js.gz +0 -0
  327. package/build/client/_app/immutable/entry/app.LopPl7G5.js +0 -2
  328. package/build/client/_app/immutable/entry/app.LopPl7G5.js.br +0 -0
  329. package/build/client/_app/immutable/entry/app.LopPl7G5.js.gz +0 -0
  330. package/build/client/_app/immutable/entry/start.Cg5Afe6E.js +0 -1
  331. package/build/client/_app/immutable/entry/start.Cg5Afe6E.js.br +0 -1
  332. package/build/client/_app/immutable/entry/start.Cg5Afe6E.js.gz +0 -0
  333. package/build/client/_app/immutable/nodes/0.n1Zne31Q.js +0 -1
  334. package/build/client/_app/immutable/nodes/0.n1Zne31Q.js.br +0 -0
  335. package/build/client/_app/immutable/nodes/0.n1Zne31Q.js.gz +0 -0
  336. package/build/client/_app/immutable/nodes/1.viUd6sTI.js +0 -1
  337. package/build/client/_app/immutable/nodes/1.viUd6sTI.js.br +0 -3
  338. package/build/client/_app/immutable/nodes/1.viUd6sTI.js.gz +0 -0
  339. package/build/client/_app/immutable/nodes/2.DsX_M4-Z.js +0 -1
  340. package/build/client/_app/immutable/nodes/2.DsX_M4-Z.js.br +0 -0
  341. package/build/client/_app/immutable/nodes/2.DsX_M4-Z.js.gz +0 -0
  342. package/build/client/_app/immutable/nodes/3.DVc7iZMv.js +0 -1
  343. package/build/client/_app/immutable/nodes/3.DVc7iZMv.js.br +0 -0
  344. package/build/client/_app/immutable/nodes/3.DVc7iZMv.js.gz +0 -0
  345. package/build/client/_app/immutable/nodes/4.CsYXQz3Y.js +0 -19
  346. package/build/client/_app/immutable/nodes/4.CsYXQz3Y.js.br +0 -0
  347. package/build/client/_app/immutable/nodes/4.CsYXQz3Y.js.gz +0 -0
  348. package/build/client/_app/immutable/nodes/5.OYZYGgdQ.js +0 -4
  349. package/build/client/_app/immutable/nodes/5.OYZYGgdQ.js.br +0 -0
  350. package/build/client/_app/immutable/nodes/5.OYZYGgdQ.js.gz +0 -0
  351. package/build/client/_app/immutable/nodes/6.D4Oy0UwK.js +0 -1
  352. package/build/client/_app/immutable/nodes/6.D4Oy0UwK.js.br +0 -0
  353. package/build/client/_app/immutable/nodes/6.D4Oy0UwK.js.gz +0 -0
  354. package/build/client/_app/immutable/nodes/7.BvvIQZgW.js +0 -1
  355. package/build/client/_app/immutable/nodes/7.BvvIQZgW.js.br +0 -0
  356. package/build/client/_app/immutable/nodes/7.BvvIQZgW.js.gz +0 -0
  357. package/build/client/_app/immutable/nodes/8.BypRBgKA.js +0 -1
  358. package/build/client/_app/immutable/nodes/8.BypRBgKA.js.br +0 -0
  359. package/build/client/_app/immutable/nodes/8.BypRBgKA.js.gz +0 -0
  360. package/build/client/_app/immutable/nodes/9.Cvhy8NSW.js +0 -5
  361. package/build/client/_app/immutable/nodes/9.Cvhy8NSW.js.br +0 -0
  362. package/build/client/_app/immutable/nodes/9.Cvhy8NSW.js.gz +0 -0
  363. package/build/server/chunks/0-DYSdORF4.js +0 -9
  364. package/build/server/chunks/1-DriLpuch.js +0 -9
  365. package/build/server/chunks/4-ipq2Fo20.js +0 -9
  366. package/build/server/chunks/4-ipq2Fo20.js.map +0 -1
  367. package/build/server/chunks/5-CaAZ_pnW.js +0 -9
  368. package/build/server/chunks/6-Djkq9gPL.js +0 -9
  369. package/build/server/chunks/7-Bw1DwzQC.js +0 -9
  370. package/build/server/chunks/7-Bw1DwzQC.js.map +0 -1
  371. package/build/server/chunks/ChatMessage-jkPoi0IR.js.map +0 -1
  372. package/build/server/chunks/Navbar-C72vlTUN.js.map +0 -1
  373. package/build/server/chunks/_page.svelte-C6_O57B-.js.map +0 -1
  374. package/build/server/chunks/_page.svelte-DzrHD3Dp.js +0 -326
  375. package/build/server/chunks/_page.svelte-DzrHD3Dp.js.map +0 -1
  376. package/build/server/chunks/_server.ts-CWmKP3RO.js +0 -614
  377. package/build/server/chunks/_server.ts-CWmKP3RO.js.map +0 -1
  378. package/build/server/chunks/_server.ts-FJA0FE83.js +0 -205
  379. package/build/server/chunks/_server.ts-FJA0FE83.js.map +0 -1
  380. package/build/server/chunks/_server.ts-NsPlw6SY.js +0 -86
  381. package/build/server/chunks/_server.ts-NsPlw6SY.js.map +0 -1
  382. package/build/server/chunks/src-Bqr11v--.js.map +0 -1
  383. package/build/server/chunks/theme-state.svelte-_CMr5Hu9.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"session-cookie-xaN0BnnT.js","sources":["../../../.svelte-kit/adapter-node/chunks/session-cookie.js"],"sourcesContent":["import { m as SESSION_TTL_SECONDS } from \"./helpers.js\";\n//#region src/lib/server/session-cookie.ts\n/**\n* Single source of truth for the `op_session` cookie's Set-Cookie attributes.\n*\n* Every issuer (login, session, setup/complete) and the sliding-renewal path in\n* hooks.server.ts builds the cookie through these helpers so the attributes can\n* never drift apart. Logout uses `clearSessionCookie()` with the SAME path so\n* the browser actually drops the cookie.\n*\n* Attribute rationale:\n* - HttpOnly — the cookie is the only credential the browser holds; XSS\n* must not be able to read it.\n* - SameSite=Lax — the cookie must ride along on top-level GET navigations\n* (typing the admin URL, following a bookmark) so a valid\n* session loads admin with no prompt. SameSite=Strict drops\n* the cookie on cross-site top-level GETs (e.g. opening the\n* console from a link in another app on the LAN), which\n* would force a needless re-prompt. State-mutating requests\n* are independently CSRF-guarded by the Origin check\n* (SEC-2) in hooks.server.ts, so Lax is safe here.\n* - Secure — set ONLY when the request arrived over HTTPS. LAN installs\n* are commonly plain HTTP; hardcoding Secure would make the\n* browser refuse to send the cookie and break login entirely\n* on those deployments. We honour `x-forwarded-proto` first\n* (reverse-proxy TLS termination) then the request URL.\n* - Path=/ — valid for the whole app; matched by the clear on logout.\n* - Max-Age — SESSION_TTL_SECONDS (14 days), in lockstep with the token expiry.\n*/\nvar SESSION_COOKIE_NAME = \"op_session\";\n/** True when the request reached us over HTTPS (direct or via TLS-terminating proxy). */\nfunction isSecureRequest(request) {\n\tconst forwarded = request.headers.get(\"x-forwarded-proto\");\n\tif (forwarded) return forwarded.split(\",\")[0].trim().toLowerCase() === \"https\";\n\ttry {\n\t\treturn new URL(request.url).protocol === \"https:\";\n\t} catch {\n\t\treturn false;\n\t}\n}\n/**\n* Build the `Set-Cookie` value that issues/renews the session cookie.\n* `secure` is derived from the request so LAN-over-HTTP installs still work.\n*/\nfunction sessionCookieHeader(token, request) {\n\tconst parts = [\n\t\t`${SESSION_COOKIE_NAME}=${token}`,\n\t\t\"HttpOnly\",\n\t\t\"SameSite=Lax\",\n\t\t\"Path=/\",\n\t\t`Max-Age=${SESSION_TTL_SECONDS}`\n\t];\n\tif (isSecureRequest(request)) parts.push(\"Secure\");\n\treturn parts.join(\"; \");\n}\n/**\n* Build the `Set-Cookie` value that clears the session cookie (logout).\n* Must mirror name/path/attributes of the issued cookie so the browser deletes it.\n*/\nfunction clearSessionCookieHeader(request) {\n\tconst parts = [\n\t\t`${SESSION_COOKIE_NAME}=`,\n\t\t\"HttpOnly\",\n\t\t\"SameSite=Lax\",\n\t\t\"Path=/\",\n\t\t\"Max-Age=0\"\n\t];\n\tif (isSecureRequest(request)) parts.push(\"Secure\");\n\treturn parts.join(\"; \");\n}\n//#endregion\nexport { clearSessionCookieHeader as n, sessionCookieHeader as r, SESSION_COOKIE_NAME as t };\n"],"names":[],"mappings":";;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACG,IAAC,mBAAmB,GAAG;AAC1B;AACA,SAAS,eAAe,CAAC,OAAO,EAAE;AAClC,CAAC,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;AAC3D,CAAC,IAAI,SAAS,EAAE,OAAO,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,OAAO;AAC/E,CAAC,IAAI;AACL,EAAE,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,QAAQ;AACnD,CAAC,CAAC,CAAC,MAAM;AACT,EAAE,OAAO,KAAK;AACd,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,SAAS,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE;AAC7C,CAAC,MAAM,KAAK,GAAG;AACf,EAAE,CAAC,EAAE,mBAAmB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACnC,EAAE,UAAU;AACZ,EAAE,cAAc;AAChB,EAAE,QAAQ;AACV,EAAE,CAAC,QAAQ,EAAE,mBAAmB,CAAC;AACjC,EAAE;AACF,CAAC,IAAI,eAAe,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;AACnD,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AACxB;AACA;AACA;AACA;AACA;AACA,SAAS,wBAAwB,CAAC,OAAO,EAAE;AAC3C,CAAC,MAAM,KAAK,GAAG;AACf,EAAE,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC;AAC3B,EAAE,UAAU;AACZ,EAAE,cAAc;AAChB,EAAE,QAAQ;AACV,EAAE;AACF,EAAE;AACF,CAAC,IAAI,eAAe,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;AACnD,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AACxB;;;;"}
1
+ {"version":3,"file":"session-cookie-DEuOwtHY.js","sources":["../../../.svelte-kit/adapter-node/chunks/session-cookie.js"],"sourcesContent":["import { m as SESSION_TTL_SECONDS } from \"./helpers.js\";\n//#region src/lib/server/session-cookie.ts\n/**\n* Single source of truth for the `op_session` cookie's Set-Cookie attributes.\n*\n* Every issuer (login, session, setup/complete) and the sliding-renewal path in\n* hooks.server.ts builds the cookie through these helpers so the attributes can\n* never drift apart. Logout uses `clearSessionCookie()` with the SAME path so\n* the browser actually drops the cookie.\n*\n* Attribute rationale:\n* - HttpOnly — the cookie is the only credential the browser holds; XSS\n* must not be able to read it.\n* - SameSite=Lax — the cookie must ride along on top-level GET navigations\n* (typing the admin URL, following a bookmark) so a valid\n* session loads admin with no prompt. SameSite=Strict drops\n* the cookie on cross-site top-level GETs (e.g. opening the\n* console from a link in another app on the LAN), which\n* would force a needless re-prompt. State-mutating requests\n* are independently CSRF-guarded by the Origin check\n* (SEC-2) in hooks.server.ts, so Lax is safe here.\n* - Secure — set ONLY when the request arrived over HTTPS. LAN installs\n* are commonly plain HTTP; hardcoding Secure would make the\n* browser refuse to send the cookie and break login entirely\n* on those deployments. We honour `x-forwarded-proto` first\n* (reverse-proxy TLS termination) then the request URL.\n* - Path=/ — valid for the whole app; matched by the clear on logout.\n* - Max-Age — SESSION_TTL_SECONDS (14 days), in lockstep with the token expiry.\n*/\nvar SESSION_COOKIE_NAME = \"op_session\";\n/** True when the request reached us over HTTPS (direct or via TLS-terminating proxy). */\nfunction isSecureRequest(request) {\n\tconst forwarded = request.headers.get(\"x-forwarded-proto\");\n\tif (forwarded) return forwarded.split(\",\")[0].trim().toLowerCase() === \"https\";\n\ttry {\n\t\treturn new URL(request.url).protocol === \"https:\";\n\t} catch {\n\t\treturn false;\n\t}\n}\n/**\n* Build the `Set-Cookie` value that issues/renews the session cookie.\n* `secure` is derived from the request so LAN-over-HTTP installs still work.\n*/\nfunction sessionCookieHeader(token, request) {\n\tconst parts = [\n\t\t`${SESSION_COOKIE_NAME}=${token}`,\n\t\t\"HttpOnly\",\n\t\t\"SameSite=Lax\",\n\t\t\"Path=/\",\n\t\t`Max-Age=${SESSION_TTL_SECONDS}`\n\t];\n\tif (isSecureRequest(request)) parts.push(\"Secure\");\n\treturn parts.join(\"; \");\n}\n/**\n* Build the `Set-Cookie` value that clears the session cookie (logout).\n* Must mirror name/path/attributes of the issued cookie so the browser deletes it.\n*/\nfunction clearSessionCookieHeader(request) {\n\tconst parts = [\n\t\t`${SESSION_COOKIE_NAME}=`,\n\t\t\"HttpOnly\",\n\t\t\"SameSite=Lax\",\n\t\t\"Path=/\",\n\t\t\"Max-Age=0\"\n\t];\n\tif (isSecureRequest(request)) parts.push(\"Secure\");\n\treturn parts.join(\"; \");\n}\n//#endregion\nexport { clearSessionCookieHeader as n, sessionCookieHeader as r, SESSION_COOKIE_NAME as t };\n"],"names":[],"mappings":";;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACG,IAAC,mBAAmB,GAAG;AAC1B;AACA,SAAS,eAAe,CAAC,OAAO,EAAE;AAClC,CAAC,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;AAC3D,CAAC,IAAI,SAAS,EAAE,OAAO,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,OAAO;AAC/E,CAAC,IAAI;AACL,EAAE,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,QAAQ;AACnD,CAAC,CAAC,CAAC,MAAM;AACT,EAAE,OAAO,KAAK;AACd,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,SAAS,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE;AAC7C,CAAC,MAAM,KAAK,GAAG;AACf,EAAE,CAAC,EAAE,mBAAmB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACnC,EAAE,UAAU;AACZ,EAAE,cAAc;AAChB,EAAE,QAAQ;AACV,EAAE,CAAC,QAAQ,EAAE,mBAAmB,CAAC;AACjC,EAAE;AACF,CAAC,IAAI,eAAe,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;AACnD,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AACxB;AACA;AACA;AACA;AACA;AACA,SAAS,wBAAwB,CAAC,OAAO,EAAE;AAC3C,CAAC,MAAM,KAAK,GAAG;AACf,EAAE,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC;AAC3B,EAAE,UAAU;AACZ,EAAE,cAAc;AAChB,EAAE,QAAQ;AACV,EAAE;AACF,EAAE;AACF,CAAC,IAAI,eAAe,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;AACnD,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AACxB;;;;"}
@@ -1,4 +1,4 @@
1
- import { c as applyInstall, m as buildManagedServices, l as buildComposeOptions, p as composeDown, t as composePull, y as composeUp, a4 as isSetupComplete, at as resolveStackDir, z as createLogger, F as detectExistingProject, ab as parseEnvFile, s as composePs, a6 as listEnabledAddonIds, X as getAddonProfiles, W as getAddonProfileSelection, a as addonProfileId, aw as setAddonProfileSelection, aq as resolveComposeProjectName } from './src-Bqr11v--.js';
1
+ import { c as applyInstall, m as buildManagedServices, l as buildComposeOptions, p as composeDown, t as composePull, y as composeUp, a4 as isSetupComplete, as as resolveStackDir, z as createLogger, F as detectExistingProject, ab as parseEnvFile, s as composePs, a6 as listEnabledAddonIds, X as getAddonProfiles, W as getAddonProfileSelection, a as addonProfileId, av as setAddonProfileSelection, ap as resolveComposeProjectName } from './src-CyeWH4Df.js';
2
2
  import { existsSync, readFileSync, writeFileSync, renameSync } from 'node:fs';
3
3
 
4
4
  //#region src/lib/server/setup-deploy.ts
@@ -522,4 +522,4 @@ async function bringUpVoiceIfEnabled(state, composeOpts) {
522
522
  }
523
523
 
524
524
  export { getDeployState as g, resetDeployState as r, startDeploy as s };
525
- //# sourceMappingURL=setup-deploy-LcTBIlO0.js.map
525
+ //# sourceMappingURL=setup-deploy-D4bnmfpV.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"setup-deploy-LcTBIlO0.js","sources":["../../../.svelte-kit/adapter-node/chunks/setup-deploy.js"],"sourcesContent":["import { Bt as createLogger, C as buildManagedServices, E as buildComposeOptions, Ft as parseEnvFile, H as composePs, J as composeUp, Q as isSetupComplete, Rt as resolveStackDir, U as composePull, Y as detectExistingProject, Z as resolveComposeProjectName, dt as listEnabledAddonIds, mt as addonProfileId, ot as getAddonProfileSelection, pt as setAddonProfileSelection, st as getAddonProfiles, y as applyInstall, z as composeDown } 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\timageWarning: 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\timageWarning: 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.stackDir\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.imageWarning = 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\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 {\n\t\t\t\tlogger.warn(\"image pull failed but all images present locally — continuing with CACHED images\", {\n\t\t\t\t\tservices,\n\t\t\t\t\tstderrSlice: (pullResult?.stderr ?? \"\").slice(0, 200)\n\t\t\t\t});\n\t\t\t\t_state.imageWarning = \"Couldn't download the latest images (network or registry issue), so the install used the images already on your machine — these may be out of date. Check your connection and re-run setup or Update to pull the newest versions.\";\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\tconst alreadyListed = new Set(_state.deployStatus.map((e) => e.service));\n\t_state.deployStatus = [..._state.deployStatus.map((e) => profileServices.includes(e.service) ? {\n\t\t...e,\n\t\tstatus: \"pending\",\n\t\tlabel: \"Voice — starting container…\"\n\t} : e), ...profileServices.filter((svc) => !alreadyListed.has(svc)).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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"}
1
+ {"version":3,"file":"setup-deploy-D4bnmfpV.js","sources":["../../../.svelte-kit/adapter-node/chunks/setup-deploy.js"],"sourcesContent":["import { C as buildManagedServices, E as buildComposeOptions, H as composePs, J as composeUp, Lt as resolveStackDir, Pt as parseEnvFile, Q as isSetupComplete, U as composePull, Y as detectExistingProject, Z as resolveComposeProjectName, dt as listEnabledAddonIds, mt as addonProfileId, ot as getAddonProfileSelection, pt as setAddonProfileSelection, st as getAddonProfiles, y as applyInstall, z as composeDown, zt as createLogger } 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\timageWarning: 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\timageWarning: 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.stackDir\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.imageWarning = 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\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 {\n\t\t\t\tlogger.warn(\"image pull failed but all images present locally — continuing with CACHED images\", {\n\t\t\t\t\tservices,\n\t\t\t\t\tstderrSlice: (pullResult?.stderr ?? \"\").slice(0, 200)\n\t\t\t\t});\n\t\t\t\t_state.imageWarning = \"Couldn't download the latest images (network or registry issue), so the install used the images already on your machine — these may be out of date. Check your connection and re-run setup or Update to pull the newest versions.\";\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\tconst alreadyListed = new Set(_state.deployStatus.map((e) => e.service));\n\t_state.deployStatus = [..._state.deployStatus.map((e) => profileServices.includes(e.service) ? {\n\t\t...e,\n\t\tstatus: \"pending\",\n\t\tlabel: \"Voice — starting container…\"\n\t} : e), ...profileServices.filter((svc) => !alreadyListed.has(svc)).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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"}
@@ -10683,64 +10683,6 @@ var yo = (s) => {
10683
10683
  s.mtimeCache || (s.mtimeCache = /* @__PURE__ */ new Map()), s.filter = t ? (e, i) => t(e, i) && !((s.mtimeCache?.get(e) ?? i.mtime ?? 0) > (i.mtime ?? 0)) : (e, i) => !((s.mtimeCache?.get(e) ?? i.mtime ?? 0) > (i.mtime ?? 0));
10684
10684
  };
10685
10685
  //#endregion
10686
- //#region ../lib/src/control-plane/versioning.ts
10687
- var SEMVER_RE = /^v?\d+\.\d+\.\d+(?:[-+].*)?$/;
10688
- function isComparableSemver(version) {
10689
- return !!version && SEMVER_RE.test(version.trim());
10690
- }
10691
- function parseComparableVersion(version) {
10692
- const clean = version.trim().replace(/^v/, "").split("+")[0];
10693
- const dashIdx = clean.indexOf("-");
10694
- const main = dashIdx === -1 ? clean : clean.slice(0, dashIdx);
10695
- const prerelease = dashIdx === -1 ? null : clean.slice(dashIdx + 1);
10696
- const [major = 0, minor = 0, patch = 0] = main.split(".").map(Number);
10697
- return {
10698
- major,
10699
- minor,
10700
- patch,
10701
- prerelease
10702
- };
10703
- }
10704
- function comparePrerelease(a, b) {
10705
- const aParts = a.split(".");
10706
- const bParts = b.split(".");
10707
- for (let i = 0; i < Math.max(aParts.length, bParts.length); i++) {
10708
- if (i >= aParts.length) return -1;
10709
- if (i >= bParts.length) return 1;
10710
- const aNum = Number(aParts[i]);
10711
- const bNum = Number(bParts[i]);
10712
- const aIsNum = !Number.isNaN(aNum);
10713
- const bIsNum = !Number.isNaN(bNum);
10714
- if (aIsNum && bIsNum) {
10715
- if (aNum !== bNum) return aNum > bNum ? 1 : -1;
10716
- continue;
10717
- }
10718
- if (aIsNum !== bIsNum) return aIsNum ? -1 : 1;
10719
- if (aParts[i] !== bParts[i]) return aParts[i] > bParts[i] ? 1 : -1;
10720
- }
10721
- return 0;
10722
- }
10723
- function compareComparableVersions(a, b) {
10724
- const aParsed = parseComparableVersion(a);
10725
- const bParsed = parseComparableVersion(b);
10726
- if (aParsed.major !== bParsed.major) return aParsed.major > bParsed.major ? 1 : -1;
10727
- if (aParsed.minor !== bParsed.minor) return aParsed.minor > bParsed.minor ? 1 : -1;
10728
- if (aParsed.patch !== bParsed.patch) return aParsed.patch > bParsed.patch ? 1 : -1;
10729
- if (aParsed.prerelease === null && bParsed.prerelease !== null) return 1;
10730
- if (aParsed.prerelease !== null && bParsed.prerelease === null) return -1;
10731
- if (aParsed.prerelease !== null && bParsed.prerelease !== null) return comparePrerelease(aParsed.prerelease, bParsed.prerelease);
10732
- return 0;
10733
- }
10734
- function majorVersionOf(version) {
10735
- if (!isComparableSemver(version)) return null;
10736
- return parseComparableVersion(version).major;
10737
- }
10738
- function isSameMajorVersion(a, b) {
10739
- const aMajor = majorVersionOf(a);
10740
- const bMajor = majorVersionOf(b);
10741
- return aMajor !== null && bMajor !== null && aMajor === bMajor;
10742
- }
10743
- //#endregion
10744
10686
  //#region ../lib/src/control-plane/ui-assets.ts
10745
10687
  /**
10746
10688
  * Runtime asset seeding and resolution for the UI build and OP_HOME skeleton.
@@ -12862,7 +12804,7 @@ function buildAkmEndpoint(provider, baseUrl, suffix) {
12862
12804
  */
12863
12805
  function writeFileAtomic(path, content, mode) {
12864
12806
  const tmp = `${path}.tmp`;
12865
- writeFileSync(tmp, content, mode !== void 0 ? { mode } : {});
12807
+ writeFileSync(tmp, content, { mode } );
12866
12808
  renameSync(tmp, path);
12867
12809
  }
12868
12810
  //#endregion
@@ -13351,8 +13293,6 @@ async function validateProposedState(state) {
13351
13293
  warnings
13352
13294
  };
13353
13295
  }
13354
- var package_default = {
13355
- version: "0.11.5-rc.2"};
13356
13296
  //#endregion
13357
13297
  //#region ../lib/src/control-plane/compose-args.ts
13358
13298
  /**
@@ -13502,22 +13442,6 @@ function resolveNewestDockerTag(payload) {
13502
13442
  }
13503
13443
  return fallback;
13504
13444
  }
13505
- function resolvePlatformVersionPolicyBaseTag(state) {
13506
- const configured = parseEnvFile(`${state.stashDir}/env/stack.env`).OP_IMAGE_TAG?.trim();
13507
- if (isComparableSemver(configured)) return configured;
13508
- return `v${package_default.version}`;
13509
- }
13510
- function resolveNewestDockerTagForCurrentMajor(payload, currentTag) {
13511
- const results = payload?.results;
13512
- if (!Array.isArray(results)) return null;
13513
- let best = null;
13514
- for (const entry of results) {
13515
- const name = typeof entry?.name === "string" ? entry.name.trim() : "";
13516
- if (!isComparableSemver(name) || !isSameMajorVersion(name, currentTag)) continue;
13517
- if (!best || compareComparableVersions(name, best) > 0) best = name;
13518
- }
13519
- return best;
13520
- }
13521
13445
  function resolveImageNamespace(state) {
13522
13446
  const namespace = (parseEnvFile(`${state.stashDir}/env/stack.env`).OP_IMAGE_NAMESPACE ?? process.env.OP_IMAGE_NAMESPACE ?? "openpalm").trim().toLowerCase();
13523
13447
  if (!IMAGE_NAMESPACE_RE.test(namespace)) throw new Error(`Invalid image namespace in system.env: ${namespace}`);
@@ -13546,22 +13470,10 @@ async function resolveLatestPlatformTag(namespace) {
13546
13470
  if (!latestTag) throw new Error("No usable Docker image tag found");
13547
13471
  return latestTag;
13548
13472
  }
13549
- async function resolveLatestPlatformTagForCurrentMajor(namespace, currentTag) {
13550
- let response;
13551
- try {
13552
- response = await fetch(`https://registry.hub.docker.com/v2/repositories/${namespace}/assistant/tags?page_size=25&ordering=last_updated`, { headers: { Accept: "application/json" } });
13553
- } catch (e) {
13554
- throw new Error(`Failed to query Docker tags: ${e instanceof Error ? e.message : String(e)}`);
13555
- }
13556
- if (!response.ok) throw new Error(`Docker tag lookup failed (${response.status})`);
13557
- const latestTag = resolveNewestDockerTagForCurrentMajor(await response.json(), currentTag);
13558
- if (!latestTag) throw new Error(`No usable Docker image tag found in major ${currentTag.replace(/^v/, "").split(".")[0]}`);
13559
- return latestTag;
13560
- }
13561
13473
  async function updateStackEnvToLatestImageTag(state) {
13562
13474
  const systemEnvPath = `${state.stashDir}/env/stack.env`;
13563
13475
  const namespace = resolveImageNamespace(state);
13564
- const latestTag = await resolveLatestPlatformTagForCurrentMajor(namespace, resolvePlatformVersionPolicyBaseTag(state));
13476
+ const latestTag = await resolveLatestPlatformTag(namespace);
13565
13477
  writeFileSync(systemEnvPath, mergeEnvContent(existsSync(systemEnvPath) ? readFileSync(systemEnvPath, "utf-8") : "", { OP_IMAGE_TAG: latestTag }, { uncomment: true }));
13566
13478
  return {
13567
13479
  namespace,
@@ -15042,5 +14954,5 @@ function importHostOpenCode(state, options = {}) {
15042
14954
  };
15043
14955
  }
15044
14956
 
15045
- export { getRegistryAddonConfig as $, AKM_USER_ENV_REF as A, createOpenCodeClient as B, CORE_SERVICES as C, createState as D, deleteUserEnvKey as E, detectExistingProject as F, detectGpu as G, detectHostOpenCode as H, detectLocalProviders as I, disableHostAkmSharing as J, enableHostAkmSharing as K, ensureAkmUserEnv as L, MigrationError as M, ensureHomeDirs as N, ensureMigrated as O, PROVIDER_KEY_MAP as P, ensureOpenCodeConfig as Q, ensureOpenCodeSystemConfig as R, ensureSecrets as S, executeAutomation as T, fetchProviderModels as U, getAddonProfileAvailability as V, getAddonProfileSelection as W, getAddonProfiles as X, getAddonServiceNames as Y, getDockerEvents as Z, getHostAkmSharingStatus as _, addonProfileId as a, hostAkmStashPath as a0, importHostOpenCode as a1, isAllowedService as a2, isHostAkmAvailable as a3, isSetupComplete as a4, listAvailableAddonIds as a5, listEnabledAddonIds as a6, listSecretFiles as a7, loadAutomations as a8, lookupEmbeddingDims as a9, writeRuntimeFiles as aA, writeSecretFile as aB, writeStackSecretEnv as aC, writeTaskFile as aD, writeUserEnvKey as aE, writeVoiceVars as aF, parseComposeStderr as aa, parseEnvFile as ab, patchSecretsEnvFile as ac, performSetup as ad, performUpgrade as ae, readAutomationLogs as af, readSecret as ag, readSecretFile as ah, readStackEnv as ai, readStackRuntimeEnv as aj, readStackSecretEnv as ak, readTaskFile as al, readUserEnvFile as am, recommendSetup as an, removeSecretFile as ao, removeTaskFile as ap, resolveComposeProjectName as aq, resolveDataDir as ar, resolveRuntimeFiles as as, resolveStackDir as at, seedUiBuild as au, setAddonEnabled as av, setAddonProfileSelection as aw, summarizeComposeStderr as ax, validateProposedState as ay, writeFileAtomic as az, annotateAddonProfileAvailability as b, applyInstall as c, applyTagChange as d, applyUninstall as e, applyUpdate as f, assertSafeSecretFilename as g, assertSafeTaskFilename as h, authJsonPath as i, buildAkmEndpoint as j, buildAkmEnv as k, buildComposeOptions as l, buildManagedServices as m, checkDocker as n, checkDockerCompose as o, composeDown as p, composeLogs as q, composePreflight as r, composePs as s, composePull as t, composeRestart as u, composeStart as v, composeStats as w, composeStop as x, composeUp as y, createLogger as z };
15046
- //# sourceMappingURL=src-Bqr11v--.js.map
14957
+ export { getRegistryAddonConfig as $, AKM_USER_ENV_REF as A, createOpenCodeClient as B, CORE_SERVICES as C, createState as D, deleteUserEnvKey as E, detectExistingProject as F, detectGpu as G, detectHostOpenCode as H, detectLocalProviders as I, disableHostAkmSharing as J, enableHostAkmSharing as K, ensureAkmUserEnv as L, MigrationError as M, ensureHomeDirs as N, ensureMigrated as O, PROVIDER_KEY_MAP as P, ensureOpenCodeConfig as Q, ensureOpenCodeSystemConfig as R, ensureSecrets as S, executeAutomation as T, fetchProviderModels as U, getAddonProfileAvailability as V, getAddonProfileSelection as W, getAddonProfiles as X, getAddonServiceNames as Y, getDockerEvents as Z, getHostAkmSharingStatus as _, addonProfileId as a, hostAkmStashPath as a0, importHostOpenCode as a1, isAllowedService as a2, isHostAkmAvailable as a3, isSetupComplete as a4, listAvailableAddonIds as a5, listEnabledAddonIds as a6, listSecretFiles as a7, loadAutomations as a8, lookupEmbeddingDims as a9, writeSecretFile as aA, writeStackSecretEnv as aB, writeTaskFile as aC, writeUserEnvKey as aD, writeVoiceVars as aE, parseComposeStderr as aa, parseEnvFile as ab, performSetup as ac, performUpgrade as ad, readAutomationLogs as ae, readSecret as af, readSecretFile as ag, readStackEnv as ah, readStackRuntimeEnv as ai, readStackSecretEnv as aj, readTaskFile as ak, readUserEnvFile as al, recommendSetup as am, removeSecretFile as an, removeTaskFile as ao, resolveComposeProjectName as ap, resolveDataDir as aq, resolveRuntimeFiles as ar, resolveStackDir as as, seedUiBuild as at, setAddonEnabled as au, setAddonProfileSelection as av, summarizeComposeStderr as aw, validateProposedState as ax, writeFileAtomic as ay, writeRuntimeFiles as az, annotateAddonProfileAvailability as b, applyInstall as c, applyTagChange as d, applyUninstall as e, applyUpdate as f, assertSafeSecretFilename as g, assertSafeTaskFilename as h, authJsonPath as i, buildAkmEndpoint as j, buildAkmEnv as k, buildComposeOptions as l, buildManagedServices as m, checkDocker as n, checkDockerCompose as o, composeDown as p, composeLogs as q, composePreflight as r, composePs as s, composePull as t, composeRestart as u, composeStart as v, composeStats as w, composeStop as x, composeUp as y, createLogger as z };
14958
+ //# sourceMappingURL=src-CyeWH4Df.js.map