@openpalm/ui 0.13.0-beta.7 → 0.13.0-beta.8

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 (433) hide show
  1. package/README.md +3 -2
  2. package/build/.openpalm-ui-version +1 -1
  3. package/build/client/_app/immutable/assets/7.DHMKw-HL.css +1 -0
  4. package/build/client/_app/immutable/assets/7.DHMKw-HL.css.br +0 -0
  5. package/build/client/_app/immutable/assets/7.DHMKw-HL.css.gz +0 -0
  6. package/build/client/_app/immutable/assets/9.CmCaAuiy.css +1 -0
  7. package/build/client/_app/immutable/assets/9.CmCaAuiy.css.br +0 -0
  8. package/build/client/_app/immutable/assets/9.CmCaAuiy.css.gz +0 -0
  9. package/build/client/_app/immutable/chunks/{BE_4J5sS.js → B9uMOgDZ.js} +2 -2
  10. package/build/client/_app/immutable/chunks/B9uMOgDZ.js.br +0 -0
  11. package/build/client/_app/immutable/chunks/B9uMOgDZ.js.gz +0 -0
  12. package/build/client/_app/immutable/chunks/BwKrb5qD.js +1 -0
  13. package/build/client/_app/immutable/chunks/BwKrb5qD.js.br +2 -0
  14. package/build/client/_app/immutable/chunks/BwKrb5qD.js.gz +0 -0
  15. package/build/client/_app/immutable/chunks/{mNzUu332.js → C092q_Hl.js} +1 -1
  16. package/build/client/_app/immutable/chunks/C092q_Hl.js.br +0 -0
  17. package/build/client/_app/immutable/chunks/C092q_Hl.js.gz +0 -0
  18. package/build/client/_app/immutable/chunks/C7g46Pjm.js +1 -0
  19. package/build/client/_app/immutable/chunks/C7g46Pjm.js.br +0 -0
  20. package/build/client/_app/immutable/chunks/C7g46Pjm.js.gz +0 -0
  21. package/build/client/_app/immutable/chunks/{CuKFR3Qo.js → CR3nChHO.js} +2 -2
  22. package/build/client/_app/immutable/chunks/CR3nChHO.js.br +0 -0
  23. package/build/client/_app/immutable/chunks/CR3nChHO.js.gz +0 -0
  24. package/build/client/_app/immutable/chunks/{Clt9pCG1.js → CXv_deBx.js} +1 -1
  25. package/build/client/_app/immutable/chunks/CXv_deBx.js.br +0 -0
  26. package/build/client/_app/immutable/chunks/CXv_deBx.js.gz +0 -0
  27. package/build/client/_app/immutable/chunks/D-DB6zTo.js +9 -0
  28. package/build/client/_app/immutable/chunks/D-DB6zTo.js.br +0 -0
  29. package/build/client/_app/immutable/chunks/D-DB6zTo.js.gz +0 -0
  30. package/build/client/_app/immutable/chunks/DDSqq1hR.js +1 -0
  31. package/build/client/_app/immutable/chunks/DDSqq1hR.js.br +0 -0
  32. package/build/client/_app/immutable/chunks/DDSqq1hR.js.gz +0 -0
  33. package/build/client/_app/immutable/chunks/d1cxvUgj.js +1 -0
  34. package/build/client/_app/immutable/chunks/d1cxvUgj.js.br +0 -0
  35. package/build/client/_app/immutable/chunks/d1cxvUgj.js.gz +0 -0
  36. package/build/client/_app/immutable/chunks/{BdIq5WIo.js → qrqTdjh7.js} +1 -1
  37. package/build/client/_app/immutable/chunks/qrqTdjh7.js.br +0 -0
  38. package/build/client/_app/immutable/chunks/qrqTdjh7.js.gz +0 -0
  39. package/build/client/_app/immutable/entry/{app.DKG33-gU.js → app.CXHi3StM.js} +2 -2
  40. package/build/client/_app/immutable/entry/app.CXHi3StM.js.br +0 -0
  41. package/build/client/_app/immutable/entry/app.CXHi3StM.js.gz +0 -0
  42. package/build/client/_app/immutable/entry/start.eS_-xLIC.js +1 -0
  43. package/build/client/_app/immutable/entry/start.eS_-xLIC.js.br +1 -0
  44. package/build/client/_app/immutable/entry/start.eS_-xLIC.js.gz +0 -0
  45. package/build/client/_app/immutable/nodes/{0.eA5H3idZ.js → 0.Bfv0aXoG.js} +1 -1
  46. package/build/client/_app/immutable/nodes/0.Bfv0aXoG.js.br +0 -0
  47. package/build/client/_app/immutable/nodes/0.Bfv0aXoG.js.gz +0 -0
  48. package/build/client/_app/immutable/nodes/{1.CvKFymDh.js → 1.B8Ebge5I.js} +1 -1
  49. package/build/client/_app/immutable/nodes/1.B8Ebge5I.js.br +0 -0
  50. package/build/client/_app/immutable/nodes/1.B8Ebge5I.js.gz +0 -0
  51. package/build/client/_app/immutable/nodes/{10.DFMf8WUQ.js → 10.Di4b61Rb.js} +1 -1
  52. package/build/client/_app/immutable/nodes/10.Di4b61Rb.js.br +0 -0
  53. package/build/client/_app/immutable/nodes/10.Di4b61Rb.js.gz +0 -0
  54. package/build/client/_app/immutable/nodes/11.CUlazdDv.js +8 -0
  55. package/build/client/_app/immutable/nodes/11.CUlazdDv.js.br +0 -0
  56. package/build/client/_app/immutable/nodes/11.CUlazdDv.js.gz +0 -0
  57. package/build/client/_app/immutable/nodes/4.DQOL0qY_.js +1 -0
  58. package/build/client/_app/immutable/nodes/4.DQOL0qY_.js.br +0 -0
  59. package/build/client/_app/immutable/nodes/4.DQOL0qY_.js.gz +0 -0
  60. package/build/client/_app/immutable/nodes/{5.bgdUYUlr.js → 5.BGqmDWpO.js} +1 -1
  61. package/build/client/_app/immutable/nodes/5.BGqmDWpO.js.br +0 -0
  62. package/build/client/_app/immutable/nodes/5.BGqmDWpO.js.gz +0 -0
  63. package/build/client/_app/immutable/nodes/6.Cf2kRGl-.js +2 -0
  64. package/build/client/_app/immutable/nodes/6.Cf2kRGl-.js.br +0 -0
  65. package/build/client/_app/immutable/nodes/6.Cf2kRGl-.js.gz +0 -0
  66. package/build/client/_app/immutable/nodes/7.CvaILUo5.js +16 -0
  67. package/build/client/_app/immutable/nodes/7.CvaILUo5.js.br +0 -0
  68. package/build/client/_app/immutable/nodes/7.CvaILUo5.js.gz +0 -0
  69. package/build/client/_app/immutable/nodes/9.DvOR66Q0.js +128 -0
  70. package/build/client/_app/immutable/nodes/9.DvOR66Q0.js.br +0 -0
  71. package/build/client/_app/immutable/nodes/9.DvOR66Q0.js.gz +0 -0
  72. package/build/client/_app/version.json +1 -1
  73. package/build/client/_app/version.json.br +1 -1
  74. package/build/client/_app/version.json.gz +0 -0
  75. package/build/server/chunks/{0-D9FIO-Bk.js → 0-D8UAPThv.js} +12 -6
  76. package/build/server/chunks/0-D8UAPThv.js.map +1 -0
  77. package/build/server/chunks/1-bS23Eg-d.js +9 -0
  78. package/build/server/chunks/{1-ItPJxTHP.js.map → 1-bS23Eg-d.js.map} +1 -1
  79. package/build/server/chunks/{10-B4fDiATl.js → 10-C5TUqG1t.js} +3 -3
  80. package/build/server/chunks/{10-B4fDiATl.js.map → 10-C5TUqG1t.js.map} +1 -1
  81. package/build/server/chunks/11-DSjZgp33.js +9 -0
  82. package/build/server/chunks/11-DSjZgp33.js.map +1 -0
  83. package/build/server/chunks/{3-DpC38K23.js → 3-D0iTJ9v2.js} +6 -6
  84. package/build/server/chunks/{3-DpC38K23.js.map → 3-D0iTJ9v2.js.map} +1 -1
  85. package/build/server/chunks/{4-DrJ64j1x.js → 4-CHJRF8qs.js} +3 -3
  86. package/build/server/chunks/{4-DrJ64j1x.js.map → 4-CHJRF8qs.js.map} +1 -1
  87. package/build/server/chunks/{5-BxzwX0rY.js → 5-CwCiwnFt.js} +3 -3
  88. package/build/server/chunks/{5-BxzwX0rY.js.map → 5-CwCiwnFt.js.map} +1 -1
  89. package/build/server/chunks/6-raswytzE.js +9 -0
  90. package/build/server/chunks/{6-DxXeT1e3.js.map → 6-raswytzE.js.map} +1 -1
  91. package/build/server/chunks/7-NC4-KlW9.js +9 -0
  92. package/build/server/chunks/7-NC4-KlW9.js.map +1 -0
  93. package/build/server/chunks/9-rIsHxfiY.js +9 -0
  94. package/build/server/chunks/9-rIsHxfiY.js.map +1 -0
  95. package/build/server/chunks/{ChatNavbar-CJYo_Hbc.js → ChatNavbar-DqdxDR5U.js} +9 -9
  96. package/build/server/chunks/{ChatNavbar-CJYo_Hbc.js.map → ChatNavbar-DqdxDR5U.js.map} +1 -1
  97. package/build/server/chunks/IconMic-CZN60P6B.js +10 -0
  98. package/build/server/chunks/IconMic-CZN60P6B.js.map +1 -0
  99. package/build/server/chunks/{IconServer-DkywyVFu.js → IconServer-BwcRjcsS.js} +4 -4
  100. package/build/server/chunks/{IconServer-DkywyVFu.js.map → IconServer-BwcRjcsS.js.map} +1 -1
  101. package/build/server/chunks/{IconSoundOn-DoAiK-qp.js → IconSoundOn-DTZuBn2-.js} +4 -4
  102. package/build/server/chunks/{IconSoundOn-DoAiK-qp.js.map → IconSoundOn-DTZuBn2-.js.map} +1 -1
  103. package/build/server/chunks/{IconStop-DKVpXPKq.js → IconStop-BxUfqTaV.js} +114 -847
  104. package/build/server/chunks/IconStop-BxUfqTaV.js.map +1 -0
  105. package/build/server/chunks/{QuestionCard-BCfoxMiS.js → QuestionCard-DOLuSSbI.js} +2 -2
  106. package/build/server/chunks/{QuestionCard-BCfoxMiS.js.map → QuestionCard-DOLuSSbI.js.map} +1 -1
  107. package/build/server/chunks/Spinner-2WZW6r_I.js +12 -0
  108. package/build/server/chunks/Spinner-2WZW6r_I.js.map +1 -0
  109. package/build/server/chunks/{_layout.svelte-DArOWGd3.js → _layout.svelte-CBBWJ3m3.js} +2 -3
  110. package/build/server/chunks/{_layout.svelte-DArOWGd3.js.map → _layout.svelte-CBBWJ3m3.js.map} +1 -1
  111. package/build/server/chunks/{_page.svelte-S90xJHRa.js → _page.svelte-CYzntFY4.js} +10 -10
  112. package/build/server/chunks/{_page.svelte-S90xJHRa.js.map → _page.svelte-CYzntFY4.js.map} +1 -1
  113. package/build/server/chunks/{_page.svelte-CGEtuNmS.js → _page.svelte-CysG6Te2.js} +13 -13
  114. package/build/server/chunks/_page.svelte-CysG6Te2.js.map +1 -0
  115. package/build/server/chunks/{_page.svelte-Dpf94Jor.js → _page.svelte-D-_cPU8e.js} +3 -3
  116. package/build/server/chunks/{_page.svelte-Dpf94Jor.js.map → _page.svelte-D-_cPU8e.js.map} +1 -1
  117. package/build/server/chunks/{_page.svelte-qxgG6hsh.js → _page.svelte-D4hOWjfm.js} +61 -351
  118. package/build/server/chunks/_page.svelte-D4hOWjfm.js.map +1 -0
  119. package/build/server/chunks/_page.svelte-D9au75wl.js +183 -0
  120. package/build/server/chunks/_page.svelte-D9au75wl.js.map +1 -0
  121. package/build/server/chunks/{_page.svelte-FOm-OMQe.js → _page.svelte-DjldYxQn.js} +25 -133
  122. package/build/server/chunks/_page.svelte-DjldYxQn.js.map +1 -0
  123. package/build/server/chunks/{_page.svelte-B2cX_j9w.js → _page.svelte-DsJgu4mW.js} +3 -3
  124. package/build/server/chunks/{_page.svelte-B2cX_j9w.js.map → _page.svelte-DsJgu4mW.js.map} +1 -1
  125. package/build/server/chunks/_server.ts-1qbl_1NY.js +87 -0
  126. package/build/server/chunks/_server.ts-1qbl_1NY.js.map +1 -0
  127. package/build/server/chunks/{_server.ts-DQI9hYcE.js → _server.ts-2VPdIZFH.js} +6 -6
  128. package/build/server/chunks/{_server.ts-DQI9hYcE.js.map → _server.ts-2VPdIZFH.js.map} +1 -1
  129. package/build/server/chunks/{_server.ts-C5T_Zuoy.js → _server.ts-68MuZYx_.js} +7 -7
  130. package/build/server/chunks/{_server.ts-C5T_Zuoy.js.map → _server.ts-68MuZYx_.js.map} +1 -1
  131. package/build/server/chunks/{_server.ts-Cph8nHvr.js → _server.ts-8AfutA1j.js} +6 -6
  132. package/build/server/chunks/{_server.ts-Cph8nHvr.js.map → _server.ts-8AfutA1j.js.map} +1 -1
  133. package/build/server/chunks/{_server.ts-ZKEBn-qW.js → _server.ts-B-5y1hA4.js} +8 -8
  134. package/build/server/chunks/{_server.ts-ZKEBn-qW.js.map → _server.ts-B-5y1hA4.js.map} +1 -1
  135. package/build/server/chunks/{_server.ts-Cjo35hc1.js → _server.ts-B1CunPF7.js} +6 -6
  136. package/build/server/chunks/{_server.ts-Cjo35hc1.js.map → _server.ts-B1CunPF7.js.map} +1 -1
  137. package/build/server/chunks/{_server.ts-DYLc6Os9.js → _server.ts-B1KGSkdl.js} +6 -6
  138. package/build/server/chunks/{_server.ts-DYLc6Os9.js.map → _server.ts-B1KGSkdl.js.map} +1 -1
  139. package/build/server/chunks/{_server.ts-B_7lGoo_.js → _server.ts-B2NALEcR.js} +6 -6
  140. package/build/server/chunks/{_server.ts-B_7lGoo_.js.map → _server.ts-B2NALEcR.js.map} +1 -1
  141. package/build/server/chunks/{_server.ts-i9TaUbWr.js → _server.ts-B2iUBxXh.js} +8 -8
  142. package/build/server/chunks/{_server.ts-i9TaUbWr.js.map → _server.ts-B2iUBxXh.js.map} +1 -1
  143. package/build/server/chunks/{_server.ts-IEM_8o6U.js → _server.ts-BN8EkPAZ.js} +7 -7
  144. package/build/server/chunks/{_server.ts-IEM_8o6U.js.map → _server.ts-BN8EkPAZ.js.map} +1 -1
  145. package/build/server/chunks/{_server.ts-N_mH0t0f.js → _server.ts-BQJfEfl9.js} +6 -6
  146. package/build/server/chunks/{_server.ts-N_mH0t0f.js.map → _server.ts-BQJfEfl9.js.map} +1 -1
  147. package/build/server/chunks/{_server.ts-C4tBc7fm.js → _server.ts-BQSMacks.js} +9 -9
  148. package/build/server/chunks/{_server.ts-C4tBc7fm.js.map → _server.ts-BQSMacks.js.map} +1 -1
  149. package/build/server/chunks/{_server.ts-vJBq3idp.js → _server.ts-BYt64wi5.js} +2 -2
  150. package/build/server/chunks/{_server.ts-vJBq3idp.js.map → _server.ts-BYt64wi5.js.map} +1 -1
  151. package/build/server/chunks/{_server.ts-BWMJRzwx.js → _server.ts-Ba0MJSs9.js} +6 -6
  152. package/build/server/chunks/{_server.ts-BWMJRzwx.js.map → _server.ts-Ba0MJSs9.js.map} +1 -1
  153. package/build/server/chunks/{_server.ts-B1vQkdVA.js → _server.ts-BdIM_pWg.js} +8 -8
  154. package/build/server/chunks/{_server.ts-B1vQkdVA.js.map → _server.ts-BdIM_pWg.js.map} +1 -1
  155. package/build/server/chunks/{_server.ts-DYg52Wyj.js → _server.ts-BfxTJHa-.js} +6 -6
  156. package/build/server/chunks/{_server.ts-DYg52Wyj.js.map → _server.ts-BfxTJHa-.js.map} +1 -1
  157. package/build/server/chunks/{_server.ts-CMfz71Do.js → _server.ts-BiVyFRNv.js} +6 -6
  158. package/build/server/chunks/{_server.ts-CMfz71Do.js.map → _server.ts-BiVyFRNv.js.map} +1 -1
  159. package/build/server/chunks/{_server.ts-vlaPk3to.js → _server.ts-BrgEQhDo.js} +6 -6
  160. package/build/server/chunks/{_server.ts-vlaPk3to.js.map → _server.ts-BrgEQhDo.js.map} +1 -1
  161. package/build/server/chunks/{_server.ts-BKnCIXe5.js → _server.ts-BtZN_8lV.js} +6 -6
  162. package/build/server/chunks/{_server.ts-BKnCIXe5.js.map → _server.ts-BtZN_8lV.js.map} +1 -1
  163. package/build/server/chunks/{_server.ts-BhA9ywuA.js → _server.ts-Bx0PXf1w.js} +6 -6
  164. package/build/server/chunks/{_server.ts-BhA9ywuA.js.map → _server.ts-Bx0PXf1w.js.map} +1 -1
  165. package/build/server/chunks/{_server.ts-CkVeEW46.js → _server.ts-Byaj9iKd.js} +6 -6
  166. package/build/server/chunks/{_server.ts-CkVeEW46.js.map → _server.ts-Byaj9iKd.js.map} +1 -1
  167. package/build/server/chunks/{_server.ts-oSGbQw4A.js → _server.ts-C1kDLq6m.js} +6 -6
  168. package/build/server/chunks/{_server.ts-oSGbQw4A.js.map → _server.ts-C1kDLq6m.js.map} +1 -1
  169. package/build/server/chunks/{_server.ts-CLMsuxkK.js → _server.ts-C28zIW49.js} +6 -6
  170. package/build/server/chunks/{_server.ts-CLMsuxkK.js.map → _server.ts-C28zIW49.js.map} +1 -1
  171. package/build/server/chunks/{_server.ts-BHaFrgm9.js → _server.ts-C2F80x6V.js} +7 -7
  172. package/build/server/chunks/{_server.ts-BHaFrgm9.js.map → _server.ts-C2F80x6V.js.map} +1 -1
  173. package/build/server/chunks/{_server.ts-BOn4TCRw.js → _server.ts-C70sKEjH.js} +7 -7
  174. package/build/server/chunks/{_server.ts-BOn4TCRw.js.map → _server.ts-C70sKEjH.js.map} +1 -1
  175. package/build/server/chunks/{_server.ts-CYu5XSM8.js → _server.ts-C754EzJA.js} +6 -6
  176. package/build/server/chunks/{_server.ts-CYu5XSM8.js.map → _server.ts-C754EzJA.js.map} +1 -1
  177. package/build/server/chunks/{_server.ts-B7319d6O.js → _server.ts-C8n83Xl1.js} +6 -6
  178. package/build/server/chunks/{_server.ts-B7319d6O.js.map → _server.ts-C8n83Xl1.js.map} +1 -1
  179. package/build/server/chunks/{_server.ts-DQTJ_bFp.js → _server.ts-CC6Bt-9t.js} +7 -7
  180. package/build/server/chunks/{_server.ts-DQTJ_bFp.js.map → _server.ts-CC6Bt-9t.js.map} +1 -1
  181. package/build/server/chunks/{_server.ts-Y5pBzFz4.js → _server.ts-CJ76gcOX.js} +6 -6
  182. package/build/server/chunks/{_server.ts-Y5pBzFz4.js.map → _server.ts-CJ76gcOX.js.map} +1 -1
  183. package/build/server/chunks/{_server.ts-B3iKXyUo.js → _server.ts-CMW6wbwP.js} +6 -6
  184. package/build/server/chunks/{_server.ts-B3iKXyUo.js.map → _server.ts-CMW6wbwP.js.map} +1 -1
  185. package/build/server/chunks/{_server.ts-pf6WrGLo.js → _server.ts-CNjG4x1a.js} +6 -6
  186. package/build/server/chunks/{_server.ts-pf6WrGLo.js.map → _server.ts-CNjG4x1a.js.map} +1 -1
  187. package/build/server/chunks/{_server.ts-DhcBS9KQ.js → _server.ts-CRl7GqvU.js} +6 -6
  188. package/build/server/chunks/{_server.ts-DhcBS9KQ.js.map → _server.ts-CRl7GqvU.js.map} +1 -1
  189. package/build/server/chunks/{_server.ts-D6-C5ctd.js → _server.ts-CUBWjRlp.js} +7 -7
  190. package/build/server/chunks/{_server.ts-D6-C5ctd.js.map → _server.ts-CUBWjRlp.js.map} +1 -1
  191. package/build/server/chunks/{_server.ts-B-uAgtQC.js → _server.ts-CYoKjlbj.js} +6 -6
  192. package/build/server/chunks/{_server.ts-B-uAgtQC.js.map → _server.ts-CYoKjlbj.js.map} +1 -1
  193. package/build/server/chunks/{_server.ts-Cu48eVwM.js → _server.ts-CafJDVBQ.js} +2 -2
  194. package/build/server/chunks/{_server.ts-Cu48eVwM.js.map → _server.ts-CafJDVBQ.js.map} +1 -1
  195. package/build/server/chunks/{_server.ts-CvjVUcFR.js → _server.ts-Cd9hDiKk.js} +6 -6
  196. package/build/server/chunks/{_server.ts-CvjVUcFR.js.map → _server.ts-Cd9hDiKk.js.map} +1 -1
  197. package/build/server/chunks/{_server.ts-BgL3_hTS.js → _server.ts-CgQfVR3g.js} +7 -7
  198. package/build/server/chunks/{_server.ts-BgL3_hTS.js.map → _server.ts-CgQfVR3g.js.map} +1 -1
  199. package/build/server/chunks/{_server.ts-BtZ9-ZYu.js → _server.ts-CilbVIRO.js} +2 -2
  200. package/build/server/chunks/{_server.ts-BtZ9-ZYu.js.map → _server.ts-CilbVIRO.js.map} +1 -1
  201. package/build/server/chunks/{_server.ts-CSBd_6yC.js → _server.ts-Ck25Xm32.js} +7 -7
  202. package/build/server/chunks/{_server.ts-CSBd_6yC.js.map → _server.ts-Ck25Xm32.js.map} +1 -1
  203. package/build/server/chunks/{_server.ts-DvUVX3X0.js → _server.ts-Cp-_qWC_.js} +7 -7
  204. package/build/server/chunks/{_server.ts-DvUVX3X0.js.map → _server.ts-Cp-_qWC_.js.map} +1 -1
  205. package/build/server/chunks/{_server.ts-7pcCO8Pf.js → _server.ts-CuEFmJ07.js} +7 -7
  206. package/build/server/chunks/{_server.ts-7pcCO8Pf.js.map → _server.ts-CuEFmJ07.js.map} +1 -1
  207. package/build/server/chunks/{_server.ts-DR0kmbl9.js → _server.ts-D5vc4lGC.js} +6 -6
  208. package/build/server/chunks/{_server.ts-DR0kmbl9.js.map → _server.ts-D5vc4lGC.js.map} +1 -1
  209. package/build/server/chunks/{_server.ts-CtkA_Ld0.js → _server.ts-DDLE66QT.js} +7 -7
  210. package/build/server/chunks/{_server.ts-CtkA_Ld0.js.map → _server.ts-DDLE66QT.js.map} +1 -1
  211. package/build/server/chunks/{_server.ts-xQhNjF_X.js → _server.ts-DEF1ChPD.js} +6 -6
  212. package/build/server/chunks/{_server.ts-xQhNjF_X.js.map → _server.ts-DEF1ChPD.js.map} +1 -1
  213. package/build/server/chunks/{_server.ts-BH8Y1mmb.js → _server.ts-DHUtPRWK.js} +4 -4
  214. package/build/server/chunks/{_server.ts-BH8Y1mmb.js.map → _server.ts-DHUtPRWK.js.map} +1 -1
  215. package/build/server/chunks/{_server.ts-B0MK-ynu.js → _server.ts-DHoTyKXL.js} +14 -10
  216. package/build/server/chunks/_server.ts-DHoTyKXL.js.map +1 -0
  217. package/build/server/chunks/{_server.ts-BaEUZaLH.js → _server.ts-DSB9Fzwa.js} +4 -4
  218. package/build/server/chunks/{_server.ts-BaEUZaLH.js.map → _server.ts-DSB9Fzwa.js.map} +1 -1
  219. package/build/server/chunks/{_server.ts-Dc1s3sLN.js → _server.ts-DW36Vbiq.js} +6 -6
  220. package/build/server/chunks/{_server.ts-Dc1s3sLN.js.map → _server.ts-DW36Vbiq.js.map} +1 -1
  221. package/build/server/chunks/{_server.ts-v3cF2xWi.js → _server.ts-DWG4CKWG.js} +6 -6
  222. package/build/server/chunks/{_server.ts-v3cF2xWi.js.map → _server.ts-DWG4CKWG.js.map} +1 -1
  223. package/build/server/chunks/{_server.ts-CCTZbI7L.js → _server.ts-DXxQIT2o.js} +7 -7
  224. package/build/server/chunks/{_server.ts-CCTZbI7L.js.map → _server.ts-DXxQIT2o.js.map} +1 -1
  225. package/build/server/chunks/{_server.ts-CSYdjKAH.js → _server.ts-Da8_J1a4.js} +7 -7
  226. package/build/server/chunks/{_server.ts-CSYdjKAH.js.map → _server.ts-Da8_J1a4.js.map} +1 -1
  227. package/build/server/chunks/{_server.ts-DeuURP8u.js → _server.ts-DcH5edss.js} +6 -6
  228. package/build/server/chunks/{_server.ts-DeuURP8u.js.map → _server.ts-DcH5edss.js.map} +1 -1
  229. package/build/server/chunks/{_server.ts-iXjPBf7J.js → _server.ts-DiHLYNbQ.js} +7 -7
  230. package/build/server/chunks/{_server.ts-iXjPBf7J.js.map → _server.ts-DiHLYNbQ.js.map} +1 -1
  231. package/build/server/chunks/{_server.ts-fenM6Iln.js → _server.ts-Dio2CslE.js} +7 -7
  232. package/build/server/chunks/_server.ts-Dio2CslE.js.map +1 -0
  233. package/build/server/chunks/{_server.ts-DcpOpD6s.js → _server.ts-Dlt1obi9.js} +6 -6
  234. package/build/server/chunks/{_server.ts-DcpOpD6s.js.map → _server.ts-Dlt1obi9.js.map} +1 -1
  235. package/build/server/chunks/{_server.ts-CEUFtmpE.js → _server.ts-Ds0U_zKR.js} +7 -7
  236. package/build/server/chunks/{_server.ts-CEUFtmpE.js.map → _server.ts-Ds0U_zKR.js.map} +1 -1
  237. package/build/server/chunks/{_server.ts-DlKT-RbM.js → _server.ts-DsVsFcf8.js} +15 -10
  238. package/build/server/chunks/_server.ts-DsVsFcf8.js.map +1 -0
  239. package/build/server/chunks/{_server.ts-BCpQ8Qdr.js → _server.ts-Du3PIYf8.js} +6 -6
  240. package/build/server/chunks/{_server.ts-BCpQ8Qdr.js.map → _server.ts-Du3PIYf8.js.map} +1 -1
  241. package/build/server/chunks/{_server.ts-3bBG0DBN.js → _server.ts-Duzj6Wm_.js} +6 -18
  242. package/build/server/chunks/_server.ts-Duzj6Wm_.js.map +1 -0
  243. package/build/server/chunks/{_server.ts-BGTw6w-C.js → _server.ts-DyaoaWIS.js} +7 -7
  244. package/build/server/chunks/{_server.ts-BGTw6w-C.js.map → _server.ts-DyaoaWIS.js.map} +1 -1
  245. package/build/server/chunks/{_server.ts-CxH-7UEc.js → _server.ts-EYtSo6HZ.js} +6 -6
  246. package/build/server/chunks/{_server.ts-CxH-7UEc.js.map → _server.ts-EYtSo6HZ.js.map} +1 -1
  247. package/build/server/chunks/{_server.ts-BgOS_sDK.js → _server.ts-JvnkkOhX.js} +7 -7
  248. package/build/server/chunks/{_server.ts-BgOS_sDK.js.map → _server.ts-JvnkkOhX.js.map} +1 -1
  249. package/build/server/chunks/{_server.ts-DzV6EO26.js → _server.ts-N0u5ruZe.js} +6 -6
  250. package/build/server/chunks/{_server.ts-DzV6EO26.js.map → _server.ts-N0u5ruZe.js.map} +1 -1
  251. package/build/server/chunks/{_server.ts-D0XsGdhx.js → _server.ts-NdCztCBP.js} +6 -6
  252. package/build/server/chunks/{_server.ts-D0XsGdhx.js.map → _server.ts-NdCztCBP.js.map} +1 -1
  253. package/build/server/chunks/{_server.ts-CFKGqT4L.js → _server.ts-OGUKP5Tu.js} +6 -6
  254. package/build/server/chunks/{_server.ts-CFKGqT4L.js.map → _server.ts-OGUKP5Tu.js.map} +1 -1
  255. package/build/server/chunks/{_server.ts-DuO_GU5A.js → _server.ts-Q1KEyBck.js} +6 -6
  256. package/build/server/chunks/{_server.ts-DuO_GU5A.js.map → _server.ts-Q1KEyBck.js.map} +1 -1
  257. package/build/server/chunks/{_server.ts-z5C3PAAB.js → _server.ts-TIRuudir.js} +2 -2
  258. package/build/server/chunks/{_server.ts-z5C3PAAB.js.map → _server.ts-TIRuudir.js.map} +1 -1
  259. package/build/server/chunks/{_server.ts-DXwG4w1_.js → _server.ts-WTZtC5sX.js} +10 -4
  260. package/build/server/chunks/_server.ts-WTZtC5sX.js.map +1 -0
  261. package/build/server/chunks/{_server.ts-DR_9WXW4.js → _server.ts-WsWoJE5V.js} +8 -8
  262. package/build/server/chunks/{_server.ts-DR_9WXW4.js.map → _server.ts-WsWoJE5V.js.map} +1 -1
  263. package/build/server/chunks/{_server.ts-CjeMP5Vf.js → _server.ts-X8GX4ChJ.js} +6 -6
  264. package/build/server/chunks/{_server.ts-CjeMP5Vf.js.map → _server.ts-X8GX4ChJ.js.map} +1 -1
  265. package/build/server/chunks/{_server.ts--F22byeV.js → _server.ts-XIc2PDRd.js} +7 -7
  266. package/build/server/chunks/{_server.ts--F22byeV.js.map → _server.ts-XIc2PDRd.js.map} +1 -1
  267. package/build/server/chunks/{_server.ts-CQeqwCqj.js → _server.ts-YsFgaaVd.js} +6 -6
  268. package/build/server/chunks/{_server.ts-CQeqwCqj.js.map → _server.ts-YsFgaaVd.js.map} +1 -1
  269. package/build/server/chunks/{_server.ts-CpyfojV9.js → _server.ts-bOcb37D9.js} +7 -7
  270. package/build/server/chunks/{_server.ts-CpyfojV9.js.map → _server.ts-bOcb37D9.js.map} +1 -1
  271. package/build/server/chunks/{_server.ts-yZ8CGJNE.js → _server.ts-e_8LykNe.js} +7 -7
  272. package/build/server/chunks/{_server.ts-yZ8CGJNE.js.map → _server.ts-e_8LykNe.js.map} +1 -1
  273. package/build/server/chunks/{_server.ts-CY-GNKZT.js → _server.ts-hLimfy8i.js} +6 -6
  274. package/build/server/chunks/{_server.ts-CY-GNKZT.js.map → _server.ts-hLimfy8i.js.map} +1 -1
  275. package/build/server/chunks/{_server.ts-AC1zqetQ.js → _server.ts-khI1sqja.js} +2 -2
  276. package/build/server/chunks/{_server.ts-AC1zqetQ.js.map → _server.ts-khI1sqja.js.map} +1 -1
  277. package/build/server/chunks/{_server.ts-BF5JzSrs.js → _server.ts-p1Z3DBlr.js} +6 -6
  278. package/build/server/chunks/{_server.ts-BF5JzSrs.js.map → _server.ts-p1Z3DBlr.js.map} +1 -1
  279. package/build/server/chunks/{_server.ts-DvfnkNfI.js → _server.ts-uzB454LO.js} +7 -7
  280. package/build/server/chunks/{_server.ts-DvfnkNfI.js.map → _server.ts-uzB454LO.js.map} +1 -1
  281. package/build/server/chunks/{_server.ts-jqktLs6L.js → _server.ts-wKSTgSwf.js} +6 -6
  282. package/build/server/chunks/{_server.ts-jqktLs6L.js.map → _server.ts-wKSTgSwf.js.map} +1 -1
  283. package/build/server/chunks/addon-helpers-DaC3GR9u.js +153 -0
  284. package/build/server/chunks/addon-helpers-DaC3GR9u.js.map +1 -0
  285. package/build/server/chunks/{admin-update-lock-B-z4UE8R.js → admin-update-lock-Bu3VvAoN.js} +3 -3
  286. package/build/server/chunks/{admin-update-lock-B-z4UE8R.js.map → admin-update-lock-Bu3VvAoN.js.map} +1 -1
  287. package/build/server/chunks/{akm-C4NCZfJB.js → akm-DsJ8_uuW.js} +2 -2
  288. package/build/server/chunks/{akm-C4NCZfJB.js.map → akm-DsJ8_uuW.js.map} +1 -1
  289. package/build/server/chunks/{_server.ts-08JCSzPu.js → bring-up-BBKMJltU.js} +30 -228
  290. package/build/server/chunks/bring-up-BBKMJltU.js.map +1 -0
  291. package/build/server/chunks/{catalog-Czlhb_2V.js → catalog-8d-U0FbY.js} +5 -5
  292. package/build/server/chunks/{catalog-Czlhb_2V.js.map → catalog-8d-U0FbY.js.map} +1 -1
  293. package/build/server/chunks/{client-HEAniq5u.js → client-CHoZA_w9.js} +2 -2
  294. package/build/server/chunks/{client-HEAniq5u.js.map → client-CHoZA_w9.js.map} +1 -1
  295. package/build/server/chunks/{compose-args2-B1cYvF5r.js → compose-args2-C9sLS6QR.js} +2 -2
  296. package/build/server/chunks/compose-args2-C9sLS6QR.js.map +1 -0
  297. package/build/server/chunks/{config-C15S-ENd.js → config-ChxZZk6h.js} +2 -2
  298. package/build/server/chunks/{config-C15S-ENd.js.map → config-ChxZZk6h.js.map} +1 -1
  299. package/build/server/chunks/{docker2-CF7qyd1U.js → docker2-DGq6J3Kp.js} +2 -2
  300. package/build/server/chunks/docker2-DGq6J3Kp.js.map +1 -0
  301. package/build/server/chunks/{docker3-BsPagEza.js → docker3-DFlJ-o_d.js} +2 -2
  302. package/build/server/chunks/{docker3-BsPagEza.js.map → docker3-DFlJ-o_d.js.map} +1 -1
  303. package/build/server/chunks/environment-BYp8JQYM.js.map +1 -1
  304. package/build/server/chunks/{error.svelte-C-lukbaB.js → error.svelte-BXxIEYd4.js} +4 -4
  305. package/build/server/chunks/{error.svelte-C-lukbaB.js.map → error.svelte-BXxIEYd4.js.map} +1 -1
  306. package/build/server/chunks/{features-DltizIi4.js → features-D8Ez2vwC.js} +26 -4
  307. package/build/server/chunks/features-D8Ez2vwC.js.map +1 -0
  308. package/build/server/chunks/{helpers-DWpoPvHz.js → helpers-BrD1e__f.js} +4 -4
  309. package/build/server/chunks/{helpers-DWpoPvHz.js.map → helpers-BrD1e__f.js.map} +1 -1
  310. package/build/server/chunks/{hooks.server-BcdEyWVU.js → hooks.server-Blba-Qw7.js} +9 -9
  311. package/build/server/chunks/{hooks.server-BcdEyWVU.js.map → hooks.server-Blba-Qw7.js.map} +1 -1
  312. package/build/server/chunks/{http-7E5W3vGt.js → http-B4Us23Mo.js} +2 -2
  313. package/build/server/chunks/{http-7E5W3vGt.js.map → http-B4Us23Mo.js.map} +1 -1
  314. package/build/server/chunks/{internal-BNSUwl-r.js → internal-CSnzBDeT.js} +3 -3
  315. package/build/server/chunks/{internal-BNSUwl-r.js.map → internal-CSnzBDeT.js.map} +1 -1
  316. package/build/server/chunks/{landing-DY53l_CN.js → landing-DxFOhZxH.js} +5 -5
  317. package/build/server/chunks/{landing-DY53l_CN.js.map → landing-DxFOhZxH.js.map} +1 -1
  318. package/build/server/chunks/{opencode-target-DYD2zQ4l.js → opencode-target-D4BxXYHJ.js} +3 -3
  319. package/build/server/chunks/{opencode-target-DYD2zQ4l.js.map → opencode-target-D4BxXYHJ.js.map} +1 -1
  320. package/build/server/chunks/{paths-BVdkvR9U.js → paths-6f-5gYkd.js} +2 -2
  321. package/build/server/chunks/{paths-BVdkvR9U.js.map → paths-6f-5gYkd.js.map} +1 -1
  322. package/build/server/chunks/{session-cookie-D2_H1UEW.js → session-cookie-5J3xCH94.js} +2 -2
  323. package/build/server/chunks/{session-cookie-D2_H1UEW.js.map → session-cookie-5J3xCH94.js.map} +1 -1
  324. package/build/server/chunks/{setup-deploy-C1h733rH.js → setup-deploy-DUbX3fHm.js} +2 -2
  325. package/build/server/chunks/{setup-deploy-C1h733rH.js.map → setup-deploy-DUbX3fHm.js.map} +1 -1
  326. package/build/server/chunks/{src-B2-r_9oB.js → src-B2wHibme.js} +55 -70
  327. package/build/server/chunks/src-B2wHibme.js.map +1 -0
  328. package/build/server/chunks/{state-Dkjz2T4C.js → state-JIy0tegD.js} +2 -2
  329. package/build/server/chunks/{state-Dkjz2T4C.js.map → state-JIy0tegD.js.map} +1 -1
  330. package/build/server/chunks/{state2-CS9rhust.js → state2-Br2snAqo.js} +2 -2
  331. package/build/server/chunks/{state2-CS9rhust.js.map → state2-Br2snAqo.js.map} +1 -1
  332. package/build/server/chunks/voice-state.svelte-DU9g_xEh.js +1610 -0
  333. package/build/server/chunks/voice-state.svelte-DU9g_xEh.js.map +1 -0
  334. package/build/server/index.js +1 -1
  335. package/build/server/manifest.js +96 -110
  336. package/build/server/manifest.js.map +1 -1
  337. package/package.json +3 -3
  338. package/build/client/_app/immutable/assets/7.BsquVIMw.css +0 -1
  339. package/build/client/_app/immutable/assets/7.BsquVIMw.css.br +0 -0
  340. package/build/client/_app/immutable/assets/7.BsquVIMw.css.gz +0 -0
  341. package/build/client/_app/immutable/assets/9.D8zTZB7v.css +0 -1
  342. package/build/client/_app/immutable/assets/9.D8zTZB7v.css.br +0 -0
  343. package/build/client/_app/immutable/assets/9.D8zTZB7v.css.gz +0 -0
  344. package/build/client/_app/immutable/chunks/BE_4J5sS.js.br +0 -0
  345. package/build/client/_app/immutable/chunks/BE_4J5sS.js.gz +0 -0
  346. package/build/client/_app/immutable/chunks/BdIq5WIo.js.br +0 -5
  347. package/build/client/_app/immutable/chunks/BdIq5WIo.js.gz +0 -0
  348. package/build/client/_app/immutable/chunks/Clt9pCG1.js.br +0 -0
  349. package/build/client/_app/immutable/chunks/Clt9pCG1.js.gz +0 -0
  350. package/build/client/_app/immutable/chunks/CuKFR3Qo.js.br +0 -0
  351. package/build/client/_app/immutable/chunks/CuKFR3Qo.js.gz +0 -0
  352. package/build/client/_app/immutable/chunks/D1VTYdXF.js +0 -1
  353. package/build/client/_app/immutable/chunks/D1VTYdXF.js.br +0 -0
  354. package/build/client/_app/immutable/chunks/D1VTYdXF.js.gz +0 -0
  355. package/build/client/_app/immutable/chunks/DF5Aoa59.js +0 -1
  356. package/build/client/_app/immutable/chunks/DF5Aoa59.js.br +0 -2
  357. package/build/client/_app/immutable/chunks/DF5Aoa59.js.gz +0 -0
  358. package/build/client/_app/immutable/chunks/DaRQZQEK.js +0 -5
  359. package/build/client/_app/immutable/chunks/DaRQZQEK.js.br +0 -0
  360. package/build/client/_app/immutable/chunks/DaRQZQEK.js.gz +0 -0
  361. package/build/client/_app/immutable/chunks/Dz-hw4Sz.js +0 -5
  362. package/build/client/_app/immutable/chunks/Dz-hw4Sz.js.br +0 -0
  363. package/build/client/_app/immutable/chunks/Dz-hw4Sz.js.gz +0 -0
  364. package/build/client/_app/immutable/chunks/mNzUu332.js.br +0 -0
  365. package/build/client/_app/immutable/chunks/mNzUu332.js.gz +0 -0
  366. package/build/client/_app/immutable/entry/app.DKG33-gU.js.br +0 -0
  367. package/build/client/_app/immutable/entry/app.DKG33-gU.js.gz +0 -0
  368. package/build/client/_app/immutable/entry/start.vDtUfDrT.js +0 -1
  369. package/build/client/_app/immutable/entry/start.vDtUfDrT.js.br +0 -1
  370. package/build/client/_app/immutable/entry/start.vDtUfDrT.js.gz +0 -0
  371. package/build/client/_app/immutable/nodes/0.eA5H3idZ.js.br +0 -0
  372. package/build/client/_app/immutable/nodes/0.eA5H3idZ.js.gz +0 -0
  373. package/build/client/_app/immutable/nodes/1.CvKFymDh.js.br +0 -0
  374. package/build/client/_app/immutable/nodes/1.CvKFymDh.js.gz +0 -0
  375. package/build/client/_app/immutable/nodes/10.DFMf8WUQ.js.br +0 -0
  376. package/build/client/_app/immutable/nodes/10.DFMf8WUQ.js.gz +0 -0
  377. package/build/client/_app/immutable/nodes/11.BZQW5Y67.js +0 -8
  378. package/build/client/_app/immutable/nodes/11.BZQW5Y67.js.br +0 -0
  379. package/build/client/_app/immutable/nodes/11.BZQW5Y67.js.gz +0 -0
  380. package/build/client/_app/immutable/nodes/4.B-36aGPk.js +0 -1
  381. package/build/client/_app/immutable/nodes/4.B-36aGPk.js.br +0 -0
  382. package/build/client/_app/immutable/nodes/4.B-36aGPk.js.gz +0 -0
  383. package/build/client/_app/immutable/nodes/5.bgdUYUlr.js.br +0 -0
  384. package/build/client/_app/immutable/nodes/5.bgdUYUlr.js.gz +0 -0
  385. package/build/client/_app/immutable/nodes/6.D0P837Li.js +0 -2
  386. package/build/client/_app/immutable/nodes/6.D0P837Li.js.br +0 -0
  387. package/build/client/_app/immutable/nodes/6.D0P837Li.js.gz +0 -0
  388. package/build/client/_app/immutable/nodes/7.C4seSCJq.js +0 -14
  389. package/build/client/_app/immutable/nodes/7.C4seSCJq.js.br +0 -0
  390. package/build/client/_app/immutable/nodes/7.C4seSCJq.js.gz +0 -0
  391. package/build/client/_app/immutable/nodes/9.DCgNAMuD.js +0 -128
  392. package/build/client/_app/immutable/nodes/9.DCgNAMuD.js.br +0 -0
  393. package/build/client/_app/immutable/nodes/9.DCgNAMuD.js.gz +0 -0
  394. package/build/server/chunks/0-D9FIO-Bk.js.map +0 -1
  395. package/build/server/chunks/1-ItPJxTHP.js +0 -9
  396. package/build/server/chunks/11-CZj9K6K7.js +0 -9
  397. package/build/server/chunks/11-CZj9K6K7.js.map +0 -1
  398. package/build/server/chunks/6-DxXeT1e3.js +0 -9
  399. package/build/server/chunks/7-CuHe_mFY.js +0 -9
  400. package/build/server/chunks/7-CuHe_mFY.js.map +0 -1
  401. package/build/server/chunks/9-CVIPxN5B.js +0 -9
  402. package/build/server/chunks/9-CVIPxN5B.js.map +0 -1
  403. package/build/server/chunks/IconMic-BbjkE_nG.js +0 -18
  404. package/build/server/chunks/IconMic-BbjkE_nG.js.map +0 -1
  405. package/build/server/chunks/IconStop-DKVpXPKq.js.map +0 -1
  406. package/build/server/chunks/_page.svelte-BcpGl-vl.js +0 -91
  407. package/build/server/chunks/_page.svelte-BcpGl-vl.js.map +0 -1
  408. package/build/server/chunks/_page.svelte-CGEtuNmS.js.map +0 -1
  409. package/build/server/chunks/_page.svelte-FOm-OMQe.js.map +0 -1
  410. package/build/server/chunks/_page.svelte-qxgG6hsh.js.map +0 -1
  411. package/build/server/chunks/_server.ts-08JCSzPu.js.map +0 -1
  412. package/build/server/chunks/_server.ts-3bBG0DBN.js.map +0 -1
  413. package/build/server/chunks/_server.ts-B0MK-ynu.js.map +0 -1
  414. package/build/server/chunks/_server.ts-BS4UTF4H.js +0 -93
  415. package/build/server/chunks/_server.ts-BS4UTF4H.js.map +0 -1
  416. package/build/server/chunks/_server.ts-DXwG4w1_.js.map +0 -1
  417. package/build/server/chunks/_server.ts-DlKT-RbM.js.map +0 -1
  418. package/build/server/chunks/_server.ts-fenM6Iln.js.map +0 -1
  419. package/build/server/chunks/_server.ts-zt3yI2wU.js +0 -97
  420. package/build/server/chunks/_server.ts-zt3yI2wU.js.map +0 -1
  421. package/build/server/chunks/addon-helpers-B7bkHg-K.js +0 -64
  422. package/build/server/chunks/addon-helpers-B7bkHg-K.js.map +0 -1
  423. package/build/server/chunks/compose-args2-B1cYvF5r.js.map +0 -1
  424. package/build/server/chunks/docker2-CF7qyd1U.js.map +0 -1
  425. package/build/server/chunks/features-DltizIi4.js.map +0 -1
  426. package/build/server/chunks/speakable-text-BflxDDdY.js +0 -65
  427. package/build/server/chunks/speakable-text-BflxDDdY.js.map +0 -1
  428. package/build/server/chunks/src-B2-r_9oB.js.map +0 -1
  429. package/build/server/chunks/voice-state.svelte-CSmyLPRH.js +0 -561
  430. package/build/server/chunks/voice-state.svelte-CSmyLPRH.js.map +0 -1
  431. /package/build/client/_app/immutable/chunks/{DD22UF1L.js → DD22UF1L2.js} +0 -0
  432. /package/build/client/_app/immutable/chunks/{DD22UF1L.js.br → DD22UF1L2.js.br} +0 -0
  433. /package/build/client/_app/immutable/chunks/{DD22UF1L.js.gz → DD22UF1L2.js.gz} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"config-C15S-ENd.js","sources":["../../../.svelte-kit/adapter-node/chunks/config.js"],"sourcesContent":["import { n as asRecord } from \"./coercion.js\";\nimport { t as opencodeFetch } from \"./http.js\";\nimport { readFileSync, writeFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\n//#region src/lib/server/opencode/config.ts\n/**\n* OpenCode config read/write + small mutation helpers.\n*\n* Reads/writes `OP_HOME/config/assistant/opencode.json` directly because the\n* container mount is read-only and OpenCode's PATCH /config does not persist\n* to disk. We still call PATCH afterwards (best-effort) so the live process\n* picks up the change without a restart.\n*/\nfunction configPath() {\n\treturn join(process.env.OP_HOME ?? \"\", \"config\", \"assistant\", \"opencode.json\");\n}\nasync function getCurrentConfig() {\n\ttry {\n\t\treturn JSON.parse(readFileSync(configPath(), \"utf-8\"));\n\t} catch {\n\t\treturn opencodeFetch(\"/config\");\n\t}\n}\nasync function patchConfig(config) {\n\tlet existing = {};\n\ttry {\n\t\texisting = JSON.parse(readFileSync(configPath(), \"utf-8\"));\n\t} catch {}\n\tconst merged = {\n\t\t...existing,\n\t\t...config\n\t};\n\tif (config.provider) merged.provider = {\n\t\t...existing.provider ?? {},\n\t\t...config.provider\n\t};\n\twriteFileSync(configPath(), `${JSON.stringify(merged, null, 2)}\\n`);\n\tawait opencodeFetch(\"/config\", {\n\t\tmethod: \"PATCH\",\n\t\tbody: JSON.stringify(config)\n\t}).catch(() => {});\n\treturn merged;\n}\nfunction normalizeProviderConfig(providerConfig) {\n\tconst normalized = providerConfig ? { ...providerConfig } : {};\n\tconst options = asRecord(normalized.options);\n\tif (options && Object.keys(options).length === 0) delete normalized.options;\n\treturn Object.keys(normalized).length > 0 ? normalized : void 0;\n}\nfunction setProviderEnabled(config, providerId, enabled) {\n\tconst disabled = new Set(config.disabled_providers ?? []);\n\tconst allowlist = config.enabled_providers ? new Set(config.enabled_providers) : void 0;\n\tif (enabled) {\n\t\tdisabled.delete(providerId);\n\t\tallowlist?.add(providerId);\n\t} else {\n\t\tdisabled.add(providerId);\n\t\tallowlist?.delete(providerId);\n\t}\n\tconfig.disabled_providers = Array.from(disabled).sort();\n\tif (allowlist) config.enabled_providers = Array.from(allowlist).sort();\n\treturn config;\n}\n/** Save non-credential connection options (baseURL, headers, timeout, etc.) for a provider. */\nasync function setProviderOptions(providerId, options) {\n\tconst config = await getCurrentConfig();\n\tconst providerConfig = { ...config.provider ?? {} };\n\tconst current = asRecord(providerConfig[providerId]) ?? {};\n\tconst nextOptions = { ...asRecord(current.options) ?? {} };\n\tdelete nextOptions.apiKey;\n\tif (options.baseURL) nextOptions.baseURL = options.baseURL;\n\telse delete nextOptions.baseURL;\n\tif (options.enterpriseUrl) nextOptions.enterpriseUrl = options.enterpriseUrl;\n\telse delete nextOptions.enterpriseUrl;\n\tif (options.timeout !== void 0 && options.timeout > 0) nextOptions.timeout = options.timeout;\n\telse delete nextOptions.timeout;\n\tif (options.setCacheKey === true) nextOptions.setCacheKey = true;\n\telse delete nextOptions.setCacheKey;\n\tif (options.headers && Object.keys(options.headers).length > 0) nextOptions.headers = options.headers;\n\telse delete nextOptions.headers;\n\tconst nextEntry = normalizeProviderConfig({\n\t\t...current,\n\t\toptions: nextOptions\n\t});\n\tif (nextEntry) providerConfig[providerId] = nextEntry;\n\telse delete providerConfig[providerId];\n\tconfig.provider = providerConfig;\n\tawait patchConfig(config);\n}\n/** Register a provider entry (local-detected or fully custom) in opencode.json. */\nasync function registerProvider(providerId, entry, overwrite = false) {\n\tconst config = await getCurrentConfig();\n\tconst providerConfig = { ...config.provider ?? {} };\n\tif (providerConfig[providerId] && !overwrite) return { alreadyExists: true };\n\tproviderConfig[providerId] = {\n\t\t...asRecord(providerConfig[providerId]),\n\t\t...entry.npm !== void 0 ? { npm: entry.npm } : {},\n\t\t...entry.name !== void 0 ? { name: entry.name } : {},\n\t\t...entry.options !== void 0 ? { options: entry.options } : {},\n\t\t...entry.models !== void 0 ? { models: entry.models } : {}\n\t};\n\tconfig.provider = providerConfig;\n\tawait patchConfig(config);\n\treturn { alreadyExists: false };\n}\n/** Set the main model (or small model) in opencode.json. */\nasync function setMainModel(providerId, modelId, target) {\n\tconst config = await getCurrentConfig();\n\tconfig[target] = `${providerId}/${modelId}`;\n\tawait patchConfig(config);\n}\n/** Clear the main model (or small model) in opencode.json. */\nasync function unsetMainModel(target) {\n\tconst config = await getCurrentConfig();\n\tdelete config[target];\n\tawait patchConfig(config);\n}\n//#endregion\nexport { setProviderEnabled as a, setMainModel as i, patchConfig as n, setProviderOptions as o, registerProvider as r, unsetMainModel as s, getCurrentConfig as t };\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config-ChxZZk6h.js","sources":["../../../.svelte-kit/adapter-node/chunks/config.js"],"sourcesContent":["import { n as asRecord } from \"./coercion.js\";\nimport { t as opencodeFetch } from \"./http.js\";\nimport { readFileSync, writeFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\n//#region src/lib/server/opencode/config.ts\n/**\n* OpenCode config read/write + small mutation helpers.\n*\n* Reads/writes `OP_HOME/config/assistant/opencode.json` directly because the\n* container mount is read-only and OpenCode's PATCH /config does not persist\n* to disk. We still call PATCH afterwards (best-effort) so the live process\n* picks up the change without a restart.\n*/\nfunction configPath() {\n\treturn join(process.env.OP_HOME ?? \"\", \"config\", \"assistant\", \"opencode.json\");\n}\nasync function getCurrentConfig() {\n\ttry {\n\t\treturn JSON.parse(readFileSync(configPath(), \"utf-8\"));\n\t} catch {\n\t\treturn opencodeFetch(\"/config\");\n\t}\n}\nasync function patchConfig(config) {\n\tlet existing = {};\n\ttry {\n\t\texisting = JSON.parse(readFileSync(configPath(), \"utf-8\"));\n\t} catch {}\n\tconst merged = {\n\t\t...existing,\n\t\t...config\n\t};\n\tif (config.provider) merged.provider = {\n\t\t...existing.provider ?? {},\n\t\t...config.provider\n\t};\n\twriteFileSync(configPath(), `${JSON.stringify(merged, null, 2)}\\n`);\n\tawait opencodeFetch(\"/config\", {\n\t\tmethod: \"PATCH\",\n\t\tbody: JSON.stringify(config)\n\t}).catch(() => {});\n\treturn merged;\n}\nfunction normalizeProviderConfig(providerConfig) {\n\tconst normalized = providerConfig ? { ...providerConfig } : {};\n\tconst options = asRecord(normalized.options);\n\tif (options && Object.keys(options).length === 0) delete normalized.options;\n\treturn Object.keys(normalized).length > 0 ? normalized : void 0;\n}\nfunction setProviderEnabled(config, providerId, enabled) {\n\tconst disabled = new Set(config.disabled_providers ?? []);\n\tconst allowlist = config.enabled_providers ? new Set(config.enabled_providers) : void 0;\n\tif (enabled) {\n\t\tdisabled.delete(providerId);\n\t\tallowlist?.add(providerId);\n\t} else {\n\t\tdisabled.add(providerId);\n\t\tallowlist?.delete(providerId);\n\t}\n\tconfig.disabled_providers = Array.from(disabled).sort();\n\tif (allowlist) config.enabled_providers = Array.from(allowlist).sort();\n\treturn config;\n}\n/** Save non-credential connection options (baseURL, headers, timeout, etc.) for a provider. */\nasync function setProviderOptions(providerId, options) {\n\tconst config = await getCurrentConfig();\n\tconst providerConfig = { ...config.provider ?? {} };\n\tconst current = asRecord(providerConfig[providerId]) ?? {};\n\tconst nextOptions = { ...asRecord(current.options) ?? {} };\n\tdelete nextOptions.apiKey;\n\tif (options.baseURL) nextOptions.baseURL = options.baseURL;\n\telse delete nextOptions.baseURL;\n\tif (options.enterpriseUrl) nextOptions.enterpriseUrl = options.enterpriseUrl;\n\telse delete nextOptions.enterpriseUrl;\n\tif (options.timeout !== void 0 && options.timeout > 0) nextOptions.timeout = options.timeout;\n\telse delete nextOptions.timeout;\n\tif (options.setCacheKey === true) nextOptions.setCacheKey = true;\n\telse delete nextOptions.setCacheKey;\n\tif (options.headers && Object.keys(options.headers).length > 0) nextOptions.headers = options.headers;\n\telse delete nextOptions.headers;\n\tconst nextEntry = normalizeProviderConfig({\n\t\t...current,\n\t\toptions: nextOptions\n\t});\n\tif (nextEntry) providerConfig[providerId] = nextEntry;\n\telse delete providerConfig[providerId];\n\tconfig.provider = providerConfig;\n\tawait patchConfig(config);\n}\n/** Register a provider entry (local-detected or fully custom) in opencode.json. */\nasync function registerProvider(providerId, entry, overwrite = false) {\n\tconst config = await getCurrentConfig();\n\tconst providerConfig = { ...config.provider ?? {} };\n\tif (providerConfig[providerId] && !overwrite) return { alreadyExists: true };\n\tproviderConfig[providerId] = {\n\t\t...asRecord(providerConfig[providerId]),\n\t\t...entry.npm !== void 0 ? { npm: entry.npm } : {},\n\t\t...entry.name !== void 0 ? { name: entry.name } : {},\n\t\t...entry.options !== void 0 ? { options: entry.options } : {},\n\t\t...entry.models !== void 0 ? { models: entry.models } : {}\n\t};\n\tconfig.provider = providerConfig;\n\tawait patchConfig(config);\n\treturn { alreadyExists: false };\n}\n/** Set the main model (or small model) in opencode.json. */\nasync function setMainModel(providerId, modelId, target) {\n\tconst config = await getCurrentConfig();\n\tconfig[target] = `${providerId}/${modelId}`;\n\tawait patchConfig(config);\n}\n/** Clear the main model (or small model) in opencode.json. */\nasync function unsetMainModel(target) {\n\tconst config = await getCurrentConfig();\n\tdelete config[target];\n\tawait patchConfig(config);\n}\n//#endregion\nexport { setProviderEnabled as a, setMainModel as i, patchConfig as n, setProviderOptions as o, registerProvider as r, unsetMainModel as s, getCurrentConfig as t };\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { u as composeDownProject, M as detectExistingProject, aL as resolveComposeProjectName } from './src-B2-r_9oB.js';
1
+ import { u as composeDownProject, M as detectExistingProject, aL as resolveComposeProjectName } from './src-B2wHibme.js';
2
2
  import './chunk-DOvWTNp_.js';
3
3
  import 'node:module';
4
4
  import './network-preset-BvVAoagy.js';
@@ -24,4 +24,4 @@ import 'node:fs/promises';
24
24
 
25
25
 
26
26
  export { composeDownProject, detectExistingProject, resolveComposeProjectName };
27
- //# sourceMappingURL=docker2-CF7qyd1U.js.map
27
+ //# sourceMappingURL=docker2-DGq6J3Kp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docker2-DGq6J3Kp.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,4 +1,4 @@
1
- import { y as composeRestart$1, w as composePreflight, aL as resolveComposeProjectName } from './src-B2-r_9oB.js';
1
+ import { y as composeRestart$1, w as composePreflight, aL as resolveComposeProjectName } from './src-B2wHibme.js';
2
2
 
3
3
  //#region src/lib/server/docker.ts
4
4
  async function runPreflight(options) {
@@ -17,4 +17,4 @@ async function composeRestart(services, options) {
17
17
  }
18
18
 
19
19
  export { composeRestart as c };
20
- //# sourceMappingURL=docker3-BsPagEza.js.map
20
+ //# sourceMappingURL=docker3-DFlJ-o_d.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"docker3-BsPagEza.js","sources":["../../../.svelte-kit/adapter-node/chunks/docker3.js"],"sourcesContent":["import { O as resolveComposeProjectName, h as composeRestart$1, p as composePreflight } from \"./docker.js\";\nimport \"./src.js\";\n//#region src/lib/server/docker.ts\nasync function runPreflight(options) {\n\tif (options.files.length === 0 || process.env.OP_SKIP_COMPOSE_PREFLIGHT) return;\n\tconst result = await composePreflight(options);\n\tif (!result.ok) {\n\t\tconst project = resolveComposeProjectName();\n\t\tconst fileArgs = options.files.map((f) => `-f ${f}`).join(\" \");\n\t\tconst envArgs = (options.envFiles ?? []).map((f) => `--env-file ${f}`).join(\" \");\n\t\tthrow new Error(`Compose preflight failed: ${result.stderr}\\nResolved command: docker compose ${fileArgs} --project-name ${project} ${envArgs} config --quiet`);\n\t}\n}\nasync function composeRestart(services, options) {\n\tawait runPreflight(options);\n\treturn composeRestart$1(services, options);\n}\n//#endregion\nexport { composeRestart as t };\n"],"names":[],"mappings":";;AAEA;AACA,eAAe,YAAY,CAAC,OAAO,EAAE;AACrC,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE;AAC1E,CAAC,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC;AAC/C,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE;AACjB,EAAE,MAAM,OAAO,GAAG,yBAAyB,EAAE;AAC7C,EAAE,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAChE,EAAE,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAClF,EAAE,MAAM,IAAI,KAAK,CAAC,CAAC,0BAA0B,EAAE,MAAM,CAAC,MAAM,CAAC,mCAAmC,EAAE,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;AACjK,CAAC;AACD;AACA,eAAe,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE;AACjD,CAAC,MAAM,YAAY,CAAC,OAAO,CAAC;AAC5B,CAAC,OAAO,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC;AAC3C;;;;"}
1
+ {"version":3,"file":"docker3-DFlJ-o_d.js","sources":["../../../.svelte-kit/adapter-node/chunks/docker3.js"],"sourcesContent":["import { O as resolveComposeProjectName, h as composeRestart$1, p as composePreflight } from \"./docker.js\";\nimport \"./src.js\";\n//#region src/lib/server/docker.ts\nasync function runPreflight(options) {\n\tif (options.files.length === 0 || process.env.OP_SKIP_COMPOSE_PREFLIGHT) return;\n\tconst result = await composePreflight(options);\n\tif (!result.ok) {\n\t\tconst project = resolveComposeProjectName();\n\t\tconst fileArgs = options.files.map((f) => `-f ${f}`).join(\" \");\n\t\tconst envArgs = (options.envFiles ?? []).map((f) => `--env-file ${f}`).join(\" \");\n\t\tthrow new Error(`Compose preflight failed: ${result.stderr}\\nResolved command: docker compose ${fileArgs} --project-name ${project} ${envArgs} config --quiet`);\n\t}\n}\nasync function composeRestart(services, options) {\n\tawait runPreflight(options);\n\treturn composeRestart$1(services, options);\n}\n//#endregion\nexport { composeRestart as t };\n"],"names":[],"mappings":";;AAEA;AACA,eAAe,YAAY,CAAC,OAAO,EAAE;AACrC,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE;AAC1E,CAAC,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC;AAC/C,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE;AACjB,EAAE,MAAM,OAAO,GAAG,yBAAyB,EAAE;AAC7C,EAAE,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAChE,EAAE,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAClF,EAAE,MAAM,IAAI,KAAK,CAAC,CAAC,0BAA0B,EAAE,MAAM,CAAC,MAAM,CAAC,mCAAmC,EAAE,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;AACjK,CAAC;AACD;AACA,eAAe,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE;AACjD,CAAC,MAAM,YAAY,CAAC,OAAO,CAAC;AAC5B,CAAC,OAAO,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC;AAC3C;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"environment-BYp8JQYM.js","sources":["../../../.svelte-kit/adapter-node/chunks/environment.js"],"sourcesContent":["//#region ../../node_modules/.bun/@sveltejs+kit@2.61.0+a890f0b024b6eaa9/node_modules/@sveltejs/kit/src/runtime/app/paths/internal/server.js\nvar base = \"\";\nvar assets = base;\nvar app_dir = \"_app\";\nvar initial = {\n\tbase,\n\tassets\n};\n/**\n* `base` could be overridden during rendering to be relative;\n* this one's the original non-relative base path\n*/\nvar initial_base = initial.base;\n/**\n* @param {{ base: string, assets: string }} paths\n*/\nfunction override(paths) {\n\tbase = paths.base;\n\tassets = paths.assets;\n}\nfunction reset() {\n\tbase = initial.base;\n\tassets = initial.assets;\n}\n/** @param {string} path */\nfunction set_assets(path) {\n\tassets = initial.assets = path;\n}\n/**\n* `$env/dynamic/public`\n* @type {Record<string, string>}\n*/\nvar public_env = {};\n/** @type {(environment: Record<string, string>) => void} */\nfunction set_private_env(environment) {}\n/** @type {(environment: Record<string, string>) => void} */\nfunction set_public_env(environment) {\n\tpublic_env = environment;\n}\n//#endregion\n//#region \\0virtual:__sveltekit/environment\nvar version = \"0.13.0-beta.7\";\nvar prerendering = false;\nfunction set_building() {}\nfunction set_prerendering() {\n\tprerendering = true;\n}\n//#endregion\nexport { public_env as a, app_dir as c, initial_base as d, override as f, version as i, assets as l, set_assets as m, set_building as n, set_private_env as o, reset as p, set_prerendering as r, set_public_env as s, prerendering as t, base as u };\n"],"names":[],"mappings":"AAAA;AACG,IAAC,IAAI,GAAG;AACR,IAAC,MAAM,GAAG;AACV,IAAC,OAAO,GAAG;AACd,IAAI,OAAO,GAAG;AACd,CAAC,IAAI;AACL,CAAC;AACD,CAAC;AACD;AACA;AACA;AACA;AACG,IAAC,YAAY,GAAG,OAAO,CAAC;AAC3B;AACA;AACA;AACA,SAAS,QAAQ,CAAC,KAAK,EAAE;AACzB,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI;AAClB,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM;AACtB;AACA,SAAS,KAAK,GAAG;AACjB,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI;AACpB,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM;AACxB;AAKA;AACA;AACA;AACA;AACG,IAAC,UAAU,GAAG;AACjB;AACA,SAAS,eAAe,CAAC,WAAW,EAAE,CAAC;AACvC;AACA,SAAS,cAAc,CAAC,WAAW,EAAE;AACrC,CAAC,UAAU,GAAG,WAAW;AACzB;;;;"}
1
+ {"version":3,"file":"environment-BYp8JQYM.js","sources":["../../../.svelte-kit/adapter-node/chunks/environment.js"],"sourcesContent":["//#region ../../node_modules/.bun/@sveltejs+kit@2.61.0+a890f0b024b6eaa9/node_modules/@sveltejs/kit/src/runtime/app/paths/internal/server.js\nvar base = \"\";\nvar assets = base;\nvar app_dir = \"_app\";\nvar initial = {\n\tbase,\n\tassets\n};\n/**\n* `base` could be overridden during rendering to be relative;\n* this one's the original non-relative base path\n*/\nvar initial_base = initial.base;\n/**\n* @param {{ base: string, assets: string }} paths\n*/\nfunction override(paths) {\n\tbase = paths.base;\n\tassets = paths.assets;\n}\nfunction reset() {\n\tbase = initial.base;\n\tassets = initial.assets;\n}\n/** @param {string} path */\nfunction set_assets(path) {\n\tassets = initial.assets = path;\n}\n/**\n* `$env/dynamic/public`\n* @type {Record<string, string>}\n*/\nvar public_env = {};\n/** @type {(environment: Record<string, string>) => void} */\nfunction set_private_env(environment) {}\n/** @type {(environment: Record<string, string>) => void} */\nfunction set_public_env(environment) {\n\tpublic_env = environment;\n}\n//#endregion\n//#region \\0virtual:__sveltekit/environment\nvar version = \"0.13.0-beta.8\";\nvar prerendering = false;\nfunction set_building() {}\nfunction set_prerendering() {\n\tprerendering = true;\n}\n//#endregion\nexport { public_env as a, app_dir as c, initial_base as d, override as f, version as i, assets as l, set_assets as m, set_building as n, set_private_env as o, reset as p, set_prerendering as r, set_public_env as s, prerendering as t, base as u };\n"],"names":[],"mappings":"AAAA;AACG,IAAC,IAAI,GAAG;AACR,IAAC,MAAM,GAAG;AACV,IAAC,OAAO,GAAG;AACd,IAAI,OAAO,GAAG;AACd,CAAC,IAAI;AACL,CAAC;AACD,CAAC;AACD;AACA;AACA;AACA;AACG,IAAC,YAAY,GAAG,OAAO,CAAC;AAC3B;AACA;AACA;AACA,SAAS,QAAQ,CAAC,KAAK,EAAE;AACzB,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI;AAClB,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM;AACtB;AACA,SAAS,KAAK,GAAG;AACjB,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI;AACpB,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM;AACxB;AAKA;AACA;AACA;AACA;AACG,IAAC,UAAU,GAAG;AACjB;AACA,SAAS,eAAe,CAAC,WAAW,EAAE,CAAC;AACvC;AACA,SAAS,cAAc,CAAC,WAAW,EAAE;AACrC,CAAC,UAAU,GAAG,WAAW;AACzB;;;;"}
@@ -1,10 +1,10 @@
1
1
  import { s as escape_html } from './dev-D85DamNs.js';
2
- import { p as page } from './state2-CS9rhust.js';
2
+ import { p as page } from './state2-Br2snAqo.js';
3
3
  import 'node:module';
4
- import './client-HEAniq5u.js';
4
+ import './client-CHoZA_w9.js';
5
5
  import './exports2-BjzhbhYA.js';
6
6
  import './utils-OXHIhUb5.js';
7
- import './internal-BNSUwl-r.js';
7
+ import './internal-CSnzBDeT.js';
8
8
  import './chunk-DOvWTNp_.js';
9
9
 
10
10
  //#region ../../node_modules/.bun/@sveltejs+kit@2.61.0+a890f0b024b6eaa9/node_modules/@sveltejs/kit/src/runtime/components/svelte-5/error.svelte
@@ -15,4 +15,4 @@ function Error($$renderer, $$props) {
15
15
  }
16
16
 
17
17
  export { Error as default };
18
- //# sourceMappingURL=error.svelte-C-lukbaB.js.map
18
+ //# sourceMappingURL=error.svelte-BXxIEYd4.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"error.svelte-C-lukbaB.js","sources":["../../../.svelte-kit/adapter-node/entries/fallbacks/error.svelte.js"],"sourcesContent":["import { U as escape_html } from \"../../chunks/dev.js\";\nimport { t as page } from \"../../chunks/state2.js\";\n//#region ../../node_modules/.bun/@sveltejs+kit@2.61.0+a890f0b024b6eaa9/node_modules/@sveltejs/kit/src/runtime/components/svelte-5/error.svelte\nfunction Error($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\t$$renderer.push(`<h1>${escape_html(page.status)}</h1> <p>${escape_html(page.error?.message)}</p>`);\n\t});\n}\n//#endregion\nexport { Error as default };\n"],"names":[],"mappings":";;;;;;;;;AAEA;AACA,SAAS,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE;AACpC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,UAAU,KAAK;AACtC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;AACpG,CAAC,CAAC,CAAC;AACH;;;;"}
1
+ {"version":3,"file":"error.svelte-BXxIEYd4.js","sources":["../../../.svelte-kit/adapter-node/entries/fallbacks/error.svelte.js"],"sourcesContent":["import { U as escape_html } from \"../../chunks/dev.js\";\nimport { t as page } from \"../../chunks/state2.js\";\n//#region ../../node_modules/.bun/@sveltejs+kit@2.61.0+a890f0b024b6eaa9/node_modules/@sveltejs/kit/src/runtime/components/svelte-5/error.svelte\nfunction Error($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\t$$renderer.push(`<h1>${escape_html(page.status)}</h1> <p>${escape_html(page.error?.message)}</p>`);\n\t});\n}\n//#endregion\nexport { Error as default };\n"],"names":[],"mappings":";;;;;;;;;AAEA;AACA,SAAS,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE;AACpC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,UAAU,KAAK;AACtC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;AACpG,CAAC,CAAC,CAAC;AACH;;;;"}
@@ -1,7 +1,8 @@
1
- import { P as PLATFORM_VERSION } from './src-B2-r_9oB.js';
1
+ import { P as PLATFORM_VERSION, ah as listEnabledAddonIds } from './src-B2wHibme.js';
2
+ import { g as getState } from './state-JIy0tegD.js';
2
3
 
3
4
  var package_default = {
4
- version: "0.13.0-beta.7"};
5
+ version: "0.13.0-beta.8"};
5
6
  //#endregion
6
7
  //#region src/lib/server/features.ts
7
8
  /**
@@ -49,6 +50,27 @@ var HOST_CAPABILITIES = [
49
50
  "host:recovery",
50
51
  "host:akm-sharing"
51
52
  ];
53
+ /**
54
+ * Voice advertisement for the runtime handshake: the same-origin path of the
55
+ * /voice pass-through, present when this process can actually serve it — an
56
+ * admin-capable process (the host process is the only one with a loopback
57
+ * path to the voice container) with the voice addon enabled. Same-origin, so
58
+ * no host/port resolution and nothing request-derived.
59
+ *
60
+ * Deliberately NOT part of computeServerRuntimeContext(): that function runs
61
+ * on requireCapability's per-request hot path, and this one reads the stack
62
+ * env from disk. Only the two runtime-context producers (+layout.server.ts
63
+ * and GET /api/runtime) call it.
64
+ */
65
+ function computeVoiceRuntime() {
66
+ if (!isAdminCapable()) return void 0;
67
+ try {
68
+ if (!listEnabledAddonIds(getState().homeDir).includes("voice")) return void 0;
69
+ return { url: "/voice" };
70
+ } catch {
71
+ return;
72
+ }
73
+ }
52
74
  function computeServerRuntimeContext(event) {
53
75
  const admin = isAdminCapable();
54
76
  return {
@@ -75,5 +97,5 @@ function computeServerRuntimeContext(event) {
75
97
  };
76
98
  }
77
99
 
78
- export { computeServerRuntimeContext as c };
79
- //# sourceMappingURL=features-DltizIi4.js.map
100
+ export { computeVoiceRuntime as a, computeServerRuntimeContext as c, isAdminCapable as i };
101
+ //# sourceMappingURL=features-D8Ez2vwC.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features-D8Ez2vwC.js","sources":["../../../.svelte-kit/adapter-node/chunks/features.js"],"sourcesContent":["import { O as listEnabledAddonIds, pt as PLATFORM_VERSION } from \"./compose-args.js\";\nimport \"./src.js\";\nimport { t as getState } from \"./state.js\";\nvar package_default = {\n\tname: \"@openpalm/ui\",\n\tdescription: \"SvelteKit web UI and API for OpenPalm stack management\",\n\tversion: \"0.13.0-beta.8\",\n\tlicense: \"MPL-2.0\",\n\ttype: \"module\",\n\t\"//minHarnessContract\": \"Minimum native Electron harness contract this UI build requires (design §5.3). The harness refuses to self-update onto a build whose minHarnessContract exceeds the contract it provides and prompts an app re-download instead. Bump ONLY when the UI starts depending on a new IPC method / spawn env key; keep in lockstep with packages/electron/src/harness-contract.ts HARNESS_CONTRACT_VERSION.\",\n\tminHarnessContract: 1,\n\trepository: {\n\t\t\"type\": \"git\",\n\t\t\"url\": \"https://github.com/itlackey/openpalm.git\",\n\t\t\"directory\": \"packages/ui\"\n\t},\n\tpublishConfig: { \"access\": \"public\" },\n\tfiles: [\"build\"],\n\tscripts: {\n\t\t\"dev\": \"PORT=${PORT:-5173} vite dev\",\n\t\t\"ux:audit\": \"NODE_PATH=\\\"$PWD/node_modules\\\" bun \\\"${AKM_HOME:-$HOME/akm}/skills/web-ux/ux-dom-audit/scripts/audit.ts\\\" e2e/ux-audit.config.json\",\n\t\t\"ux:audit:wizard\": \"NODE_PATH=\\\"$PWD/node_modules\\\" bun \\\"${AKM_HOME:-$HOME/akm}/skills/web-ux/ux-dom-audit/scripts/audit.ts\\\" e2e/ux-audit.wizard.config.json\",\n\t\t\"dev:local\": \"PORT=${PORT:-5173} OP_OPENCODE_URL=${OP_OPENCODE_URL:-http://localhost:3800} vite dev\",\n\t\t\"build\": \"svelte-kit sync && vite build && node scripts/stamp-version.mjs\",\n\t\t\"clean:build\": \"rm -rf .svelte-kit build\",\n\t\t\"preview\": \"vite preview\",\n\t\t\"check\": \"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json\",\n\t\t\"test:e2e\": \"playwright test\",\n\t\t\"test\": \"npm run test:unit -- --run && npm run test:e2e\",\n\t\t\"test:unit\": \"vitest\",\n\t\t\"test:browsers\": \"playwright install --with-deps chromium\",\n\t\t\"lint\": \"eslint .\",\n\t\t\"format\": \"prettier --write .\",\n\t\t\"start\": \"node build/index.js\"\n\t},\n\tdevDependencies: {\n\t\t\"@axe-core/playwright\": \"^4.11.3\",\n\t\t\"@eslint/compat\": \"^2.0.2\",\n\t\t\"@eslint/js\": \"^10.0.1\",\n\t\t\"@openpalm/lib\": \"workspace:*\",\n\t\t\"@openpalm/ui-kit\": \"workspace:*\",\n\t\t\"@playwright/test\": \"^1.58.1\",\n\t\t\"@sveltejs/adapter-node\": \"^5.5.4\",\n\t\t\"@sveltejs/kit\": \"^2.53.3\",\n\t\t\"@sveltejs/vite-plugin-svelte\": \"^7.1.2\",\n\t\t\"@types/markdown-it\": \"^14.1.2\",\n\t\t\"@types/node\": \"^25.9.1\",\n\t\t\"@vitest/browser-playwright\": \"^4.0.18\",\n\t\t\"@vitest/coverage-v8\": \"^4.0.18\",\n\t\t\"croner\": \"^10.0.1\",\n\t\t\"dotenv\": \"^17.4.2\",\n\t\t\"eslint\": \"^10.4.0\",\n\t\t\"eslint-config-prettier\": \"^10.1.8\",\n\t\t\"eslint-plugin-svelte\": \"^3.14.0\",\n\t\t\"globals\": \"^17.3.0\",\n\t\t\"markdown-it\": \"^14.1.1\",\n\t\t\"playwright\": \"^1.58.1\",\n\t\t\"prettier\": \"^3.8.1\",\n\t\t\"prettier-plugin-svelte\": \"^4.0.1\",\n\t\t\"svelte\": \"^5.53.5\",\n\t\t\"svelte-check\": \"^4.1.1\",\n\t\t\"typescript\": \"^6.0.3\",\n\t\t\"typescript-eslint\": \"^8.54.0\",\n\t\t\"uqr\": \"0.1.3\",\n\t\t\"vite\": \"^8.0.14\",\n\t\t\"vite-plugin-devtools-json\": \"^1.0.0\",\n\t\t\"vitest\": \"^4.0.18\",\n\t\t\"vitest-browser-svelte\": \"^2.0.2\",\n\t\t\"yaml\": \"^2.8.0\"\n\t}\n};\n//#endregion\n//#region src/lib/server/features.ts\n/**\n* Server runtime context — RuntimeContext v2 (issue #509). Computed server-side on every request via\n* +layout.server.ts and served publicly at GET /api/runtime (the\n* contract-version handshake for remote/hosted clients).\n*\n* Admin capability is an Electron-or-CLI-only security boundary — there is no\n* per-mode capability matrix and no env self-grant footgun (a served/container\n* build must never be able to claim host mode). A single boolean:\n* OP_INSIDE_ELECTRON=1 (injected by packages/electron/src/main.ts) OR\n* OP_ENABLE_ADMIN=1 (local dev / `openpalm admin`) → adminCapable\n* Every process gets the base capability set; only an adminCapable process\n* additionally gets host:*.\n*/\n/**\n* True when this process is admin-capable — running inside Electron or\n* explicitly opted into admin. This is the ONLY gate for host:* capabilities;\n* a served/container/PWA build is never admin-capable.\n*/\nfunction isAdminCapable() {\n\treturn process.env.OP_INSIDE_ELECTRON === \"1\" || process.env.OP_ENABLE_ADMIN === \"1\";\n}\n/** Base capabilities granted to EVERY process. The browser owns\n* connections uniformly — multiple assistants + switching work everywhere. */\nvar BASE_CAPABILITIES = [\n\t\"chat\",\n\t\"connections:read\",\n\t\"connections:manage\",\n\t\"connections:switch\",\n\t\"assistant-settings:read\",\n\t\"assistant-settings:write\",\n\t\"pwa:install\"\n];\n/** The host:* capability set — added only when adminCapable. */\nvar HOST_CAPABILITIES = [\n\t\"host:setup\",\n\t\"host:stack:read\",\n\t\"host:stack:write\",\n\t\"host:containers\",\n\t\"host:addons\",\n\t\"host:updates\",\n\t\"host:logs\",\n\t\"host:secrets\",\n\t\"host:recovery\",\n\t\"host:akm-sharing\"\n];\n/**\n* Voice advertisement for the runtime handshake: the same-origin path of the\n* /voice pass-through, present when this process can actually serve it — an\n* admin-capable process (the host process is the only one with a loopback\n* path to the voice container) with the voice addon enabled. Same-origin, so\n* no host/port resolution and nothing request-derived.\n*\n* Deliberately NOT part of computeServerRuntimeContext(): that function runs\n* on requireCapability's per-request hot path, and this one reads the stack\n* env from disk. Only the two runtime-context producers (+layout.server.ts\n* and GET /api/runtime) call it.\n*/\nfunction computeVoiceRuntime() {\n\tif (!isAdminCapable()) return void 0;\n\ttry {\n\t\tif (!listEnabledAddonIds(getState().homeDir).includes(\"voice\")) return void 0;\n\t\treturn { url: \"/voice\" };\n\t} catch {\n\t\treturn;\n\t}\n}\nfunction computeServerRuntimeContext(event) {\n\tconst admin = isAdminCapable();\n\treturn {\n\t\tversion: 2,\n\t\tadmin,\n\t\tserverCapabilities: admin ? [...BASE_CAPABILITIES, ...HOST_CAPABILITIES] : [...BASE_CAPABILITIES],\n\t\tpublicBaseUrl: event.url?.origin ?? \"\",\n\t\tuiVersion: package_default.version,\n\t\tskeletonVersion: process.env.OP_SKELETON_VERSION?.trim() || PLATFORM_VERSION,\n\t\troutes: admin ? {\n\t\t\tchat: \"/chat\",\n\t\t\tconnections: \"/connections\",\n\t\t\thost: \"/host\",\n\t\t\tsetup: \"/setup\"\n\t\t} : {\n\t\t\tchat: \"/chat\",\n\t\t\tconnections: \"/connections\"\n\t\t},\n\t\tsecurity: {\n\t\t\thostAdminLoopbackOnly: true,\n\t\t\trequiresHttpsForRemoteConnections: !admin,\n\t\t\tcsrfMode: admin ? \"loopback-origin\" : \"same-site\"\n\t\t}\n\t};\n}\n//#endregion\nexport { computeVoiceRuntime as n, isAdminCapable as r, computeServerRuntimeContext as t };\n"],"names":[],"mappings":";;;AAGA,IAAI,eAAe,GAAG;AACtB,CAEC,OAAO,EAAE,eAgEV,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,cAAc,GAAG;AAC1B,CAAC,OAAO,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,GAAG;AACrF;AACA;AACA;AACA,IAAI,iBAAiB,GAAG;AACxB,CAAC,MAAM;AACP,CAAC,kBAAkB;AACnB,CAAC,oBAAoB;AACrB,CAAC,oBAAoB;AACrB,CAAC,yBAAyB;AAC1B,CAAC,0BAA0B;AAC3B,CAAC;AACD,CAAC;AACD;AACA,IAAI,iBAAiB,GAAG;AACxB,CAAC,YAAY;AACb,CAAC,iBAAiB;AAClB,CAAC,kBAAkB;AACnB,CAAC,iBAAiB;AAClB,CAAC,aAAa;AACd,CAAC,cAAc;AACf,CAAC,WAAW;AACZ,CAAC,cAAc;AACf,CAAC,eAAe;AAChB,CAAC;AACD,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,mBAAmB,GAAG;AAC/B,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,OAAO,MAAM;AACrC,CAAC,IAAI;AACL,EAAE,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;AAC/E,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE;AAC1B,CAAC,CAAC,CAAC,MAAM;AACT,EAAE;AACF,CAAC;AACD;AACA,SAAS,2BAA2B,CAAC,KAAK,EAAE;AAC5C,CAAC,MAAM,KAAK,GAAG,cAAc,EAAE;AAC/B,CAAC,OAAO;AACR,EAAE,OAAO,EAAE,CAAC;AACZ,EAAE,KAAK;AACP,EAAE,kBAAkB,EAAE,KAAK,GAAG,CAAC,GAAG,iBAAiB,EAAE,GAAG,iBAAiB,CAAC,GAAG,CAAC,GAAG,iBAAiB,CAAC;AACnG,EAAE,aAAa,EAAE,KAAK,CAAC,GAAG,EAAE,MAAM,IAAI,EAAE;AACxC,EAAE,SAAS,EAAE,eAAe,CAAC,OAAO;AACpC,EAAE,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,EAAE,IAAI,gBAAgB;AAC9E,EAAE,MAAM,EAAE,KAAK,GAAG;AAClB,GAAG,IAAI,EAAE,OAAO;AAChB,GAAG,WAAW,EAAE,cAAc;AAC9B,GAAG,IAAI,EAAE,OAAO;AAChB,GAAG,KAAK,EAAE;AACV,GAAG,GAAG;AACN,GAAG,IAAI,EAAE,OAAO;AAChB,GAAG,WAAW,EAAE;AAChB,GAAG;AACH,EAAE,QAAQ,EAAE;AACZ,GAAG,qBAAqB,EAAE,IAAI;AAC9B,GAAG,iCAAiC,EAAE,CAAC,KAAK;AAC5C,GAAG,QAAQ,EAAE,KAAK,GAAG,iBAAiB,GAAG;AACzC;AACA,EAAE;AACF;;;;"}
@@ -1,7 +1,7 @@
1
- import { au as readSecret, aO as resolveOpenPalmHome, F as createOpenCodeClient } from './src-B2-r_9oB.js';
1
+ import { au as readSecret, aO as resolveOpenPalmHome, F as createOpenCodeClient } from './src-B2wHibme.js';
2
2
  import { h as isRemoteSetupAllowed } from './network-preset-BvVAoagy.js';
3
- import { g as getHostOpencodeTarget } from './opencode-target-DYD2zQ4l.js';
4
- import { c as computeServerRuntimeContext } from './features-DltizIi4.js';
3
+ import { g as getHostOpencodeTarget } from './opencode-target-D4BxXYHJ.js';
4
+ import { c as computeServerRuntimeContext } from './features-D8Ez2vwC.js';
5
5
  import { timingSafeEqual, createHmac, createHash } from 'node:crypto';
6
6
 
7
7
  //#region src/lib/server/session-store.ts
@@ -317,4 +317,4 @@ function checkOriginHeader(request, csrfMode = "loopback-origin", requestId) {
317
317
  Number(process.env.PORT ?? 3880);
318
318
 
319
319
  export { SESSION_TTL_SECONDS as S, checkOriginHeader as a, createSession as b, checkHostHeader as c, getRequestId as d, errorResponse as e, getUiLoginPassword as f, getOpenCodeClient as g, invalidateSession as h, identifyCallerByToken as i, jsonBodyError as j, jsonResponse as k, requireCapability as l, parseJsonBody as p, requireAdmin as r, safeTokenCompare as s, touchSession as t, withAdminBody as w };
320
- //# sourceMappingURL=helpers-DWpoPvHz.js.map
320
+ //# sourceMappingURL=helpers-BrD1e__f.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers-DWpoPvHz.js","sources":["../../../.svelte-kit/adapter-node/chunks/helpers.js"],"sourcesContent":["import { bt as resolveOpenPalmHome, it as readSecret } from \"./compose-args.js\";\nimport { K as createOpenCodeClient } from \"./src.js\";\nimport { l as isRemoteSetupAllowed } from \"./network-preset.js\";\nimport { t as getHostOpencodeTarget } from \"./opencode-target.js\";\nimport { t as computeServerRuntimeContext } from \"./features.js\";\nimport { createHash, createHmac, timingSafeEqual } from \"node:crypto\";\n//#region src/lib/server/session-store.ts\n/**\n* Stateless signed session tokens.\n*\n* Token format: `<expiresAt>.<hmac-sha256-hex>`\n* expiresAt — unix ms timestamp when the session expires\n* signature — HMAC-SHA256(expiresAt, login password)\n*\n* Tokens are self-validating: the server holds no per-session state and\n* sessions survive UI server restarts. Signing with the login password means\n* a password change invalidates all existing sessions — correct behaviour.\n*\n* The signing secret is resolved exactly like login verification\n* (`getUiLoginPassword`): `process.env.OP_UI_LOGIN_PASSWORD` first, then the\n* on-disk stack secret. When NEITHER exists, minting throws and validation\n* fails closed — there is deliberately no fallback secret, because a constant\n* key would let anyone forge an admin token. Reading the file per call also\n* means tokens minted right after the setup wizard writes the password are\n* signed with the real secret, without waiting for a process restart.\n*\n* Logout semantics (known trade-off of stateless tokens): logout revokes the\n* single token the browser presented (in-memory list, cleared on restart) and\n* clears the cookie. Earlier tokens issued to the same browser by sliding\n* renewal remain cryptographically valid until they expire — logout is\n* \"forget my cookie\", not \"kill every credential ever issued\". A real\n* kill-switch is changing the login password, which invalidates everything.\n*/\n/** Session lifetime for both the token expiry and the cookie Max-Age. 14 days. */\nvar SESSION_TTL_MS = 12096e5;\n/** Cookie Max-Age in seconds (Set-Cookie uses seconds, not ms). */\nvar SESSION_TTL_SECONDS = SESSION_TTL_MS / 1e3;\nvar _revoked = /* @__PURE__ */ new Set();\nvar _testOverrides = /* @__PURE__ */ new Set();\n/**\n* Read the operator UI login password from the host environment or the\n* file-based stack secret (`knowledge/secrets/op_ui_login_password`).\n*\n* This is the single source of truth for the password — login verification\n* (helpers.ts) and token signing below both use it, so they can never\n* disagree about whether a password exists. Returns \"\" when neither source\n* has a value (first boot, before the wizard runs).\n*/\nfunction getUiLoginPassword() {\n\tconst envValue = process.env.OP_UI_LOGIN_PASSWORD;\n\tif (envValue) return envValue;\n\treturn readSecret(resolveOpenPalmHome(), \"op_ui_login_password\")?.trimEnd() ?? \"\";\n}\n/** Sign `expiresAt` with the login password. Returns null when no password is configured. */\nfunction signToken(expiresAt) {\n\tconst secret = getUiLoginPassword();\n\tif (!secret) return null;\n\treturn createHmac(\"sha256\", secret).update(String(expiresAt)).digest(\"hex\");\n}\n/**\n* Mint a new signed session token with a 14-day TTL.\n* Place the result in the `op_session` cookie.\n* Throws when no login password is configured — callers must verify a\n* password exists (they all do: login/session/setup-complete check first).\n*/\nfunction createSession() {\n\tconst expiresAt = Date.now() + SESSION_TTL_MS;\n\tconst sig = signToken(expiresAt);\n\tif (sig === null) throw new Error(\"Cannot mint a session: no UI login password is configured.\");\n\treturn `${expiresAt}.${sig}`;\n}\n/**\n* Return true iff `token` is a valid, non-expired, non-revoked session.\n*/\nfunction validateSession(token) {\n\tif (!token) return false;\n\tif (_testOverrides.has(token)) return true;\n\tif (_revoked.has(token)) return false;\n\tconst dot = token.lastIndexOf(\".\");\n\tif (dot < 0) return false;\n\tconst expiresAt = Number(token.slice(0, dot));\n\tif (!Number.isFinite(expiresAt) || Date.now() >= expiresAt) return false;\n\tconst sig = token.slice(dot + 1);\n\tconst expected = signToken(expiresAt);\n\tif (expected === null) return false;\n\tif (sig.length !== expected.length) return false;\n\treturn timingSafeEqual(Buffer.from(sig), Buffer.from(expected));\n}\n/**\n* Sliding renewal: validate the old token, return a new one with a fresh\n* 14-day TTL, or return false if the old token is invalid/expired.\n* The caller must place the returned token in the `op_session` cookie.\n*/\nfunction touchSession(token) {\n\tif (!validateSession(token)) return false;\n\treturn createSession();\n}\n/**\n* Revoke a token (logout). The browser cookie must also be cleared by the caller.\n* The revocation list survives until the next server restart. Entries whose\n* embedded expiry has passed are pruned on each call — an expired token fails\n* validation anyway, so keeping it listed is pure memory growth.\n*/\nfunction invalidateSession(token) {\n\tconst now = Date.now();\n\tfor (const revoked of _revoked) {\n\t\tconst expiresAt = Number(revoked.slice(0, revoked.lastIndexOf(\".\")));\n\t\tif (!Number.isFinite(expiresAt) || expiresAt <= now) _revoked.delete(revoked);\n\t}\n\t_revoked.add(token);\n}\n//#endregion\n//#region src/lib/server/helpers.ts\n/**\n* Lazy OpenCode client bound to the currently active endpoint. The client is\n* recreated whenever the active endpoint URL changes so user switches in the\n* UI take effect on the next call.\n*/\nvar _openCodeClient;\nvar _openCodeClientUrl;\nfunction getOpenCodeClient() {\n\tconst { url } = getHostOpencodeTarget();\n\tif (!_openCodeClient || url !== _openCodeClientUrl) {\n\t\t_openCodeClient = createOpenCodeClient({ baseUrl: url });\n\t\t_openCodeClientUrl = url;\n\t}\n\treturn _openCodeClient;\n}\nfunction safeTokenCompare(a, b) {\n\tif (typeof a !== \"string\" || typeof b !== \"string\") return false;\n\tif (!a || !b) return false;\n\treturn timingSafeEqual(createHash(\"sha256\").update(a).digest(), createHash(\"sha256\").update(b).digest());\n}\n/** Standard JSON response with request ID header */\nfunction jsonResponse(status, body, requestId = \"\") {\n\treturn new Response(JSON.stringify(body), {\n\t\tstatus,\n\t\theaders: {\n\t\t\t\"content-type\": \"application/json\",\n\t\t\t...requestId ? { \"x-request-id\": requestId } : {}\n\t\t}\n\t});\n}\n/** Standard error envelope */\nfunction errorResponse(status, error, message, details = {}, requestId = \"\") {\n\treturn jsonResponse(status, {\n\t\terror,\n\t\tmessage,\n\t\tdetails,\n\t\trequestId\n\t}, requestId);\n}\n/** Extract or generate request ID */\nfunction getRequestId(event) {\n\treturn event.request.headers.get(\"x-request-id\") || crypto.randomUUID();\n}\n/**\n* Extract raw session token from the `op_session` cookie.\n*\n* Phase 2 of the auth/proxy refactor (docs/technical/auth-and-proxy-refactor-plan.md)\n* removed the legacy `x-admin-token` / `Authorization: Bearer` header fallbacks.\n* The cookie is HttpOnly + SameSite=Lax and is the ONLY credential the browser\n* holds; XSS cannot read it and out-of-process callers must obtain a session via\n* `POST /api/auth/login` (or `/session`) and present the cookie on subsequent\n* requests.\n*/\nfunction extractToken(event) {\n\tconst match = (event.request.headers.get(\"cookie\") ?? \"\").match(/(?:^|;\\s*)op_session=([^;]+)/);\n\tif (match) return match[1];\n\treturn \"\";\n}\n/** Check admin auth — returns error Response or null if OK */\nfunction requireAdmin(event, requestId) {\n\tif (!getUiLoginPassword()) return errorResponse(503, \"admin_not_configured\", \"OP_UI_LOGIN_PASSWORD has not been set. Complete setup first.\", {}, requestId);\n\tif (!validateSession(extractToken(event))) return errorResponse(401, \"unauthorized\", \"Missing or invalid credentials\", {}, requestId);\n\treturn null;\n}\n/**\n* Server-side capability guard.\n*\n* Returns a 403 JSON error Response when this process does not expose\n* `capability`, or null when it does. This is the SECURITY boundary — the\n* browser-side `hasCapability()` is UX only. The check is deliberately\n* capability-based, not session-based: a valid admin session in a non-admin\n* process (host:* absent) is still refused. Capability computation itself\n* lives ONLY in computeServerRuntimeContext / resolveCapabilities;\n* this helper just reads the advertised server capability set.\n*/\nfunction requireCapability(event, capability, requestId) {\n\tconst ctx = computeServerRuntimeContext(event);\n\tif (!ctx.serverCapabilities.includes(capability)) return errorResponse(403, \"capability_not_available\", `This deployment (admin=${ctx.admin}) does not provide the '${capability}' capability.`, {\n\t\tcapability,\n\t\tadmin: ctx.admin\n\t}, requestId);\n\treturn null;\n}\n/**\n* Identify caller by the presented `op_session` cookie.\n*\n* Returns \"admin\" when the cookie holds a valid session token.\n*/\nfunction identifyCallerByToken(event) {\n\tif (!getUiLoginPassword()) return null;\n\tif (validateSession(extractToken(event))) return \"admin\";\n\treturn null;\n}\n/** Parse JSON body safely — returns discriminated result with error type */\nasync function parseJsonBody(request, maxBytes = 1048576) {\n\ttry {\n\t\tconst contentLength = request.headers.get(\"content-length\");\n\t\tif (contentLength && parseInt(contentLength, 10) > maxBytes) return { error: \"too_large\" };\n\t\tconst parsed = await request.json();\n\t\tif (parsed === null || typeof parsed !== \"object\" || Array.isArray(parsed)) return { error: \"invalid_json\" };\n\t\treturn { data: parsed };\n\t} catch (e) {\n\t\tconsole.warn(\"[helpers] Failed to parse JSON request body\", e);\n\t\treturn { error: \"invalid_json\" };\n\t}\n}\n/** Convert a ParseJsonBodyError to an appropriate HTTP error response */\nfunction jsonBodyError(err, requestId) {\n\tif (err.error === \"too_large\") return errorResponse(413, \"too_large\", \"Request body too large\", {}, requestId);\n\treturn errorResponse(400, \"invalid_json\", \"Request body must be valid JSON\", {}, requestId);\n}\n/**\n* Auth + JSON body wrapper for admin POST/DELETE handlers.\n*\n* Replaces the 4-line boilerplate copy-pasted across 30+ routes:\n* const requestId = getRequestId(event);\n* const authError = requireAdmin(event, requestId);\n* if (authError) return authError;\n* const result = await parseJsonBody(event.request);\n* if ('error' in result) return jsonBodyError(result, requestId);\n*\n* Use for routes that need both auth and a JSON body. For auth-only or\n* GET routes, call `requireAdmin` directly.\n*/\nasync function withAdminBody(event, handler) {\n\tconst requestId = getRequestId(event);\n\tconst { security } = computeServerRuntimeContext(event);\n\tconst originError = checkOriginHeader(event.request, security.csrfMode, requestId);\n\tif (originError) return originError;\n\tconst authError = requireAdmin(event, requestId);\n\tif (authError) return authError;\n\tconst result = await parseJsonBody(event.request);\n\tif (\"error\" in result) return jsonBodyError(result, requestId);\n\treturn handler({\n\t\trequestId,\n\t\tbody: result.data\n\t});\n}\nfunction hostNameFromHeader(hostHeader) {\n\tconst normalized = hostHeader.trim().replace(/\\.$/, \"\");\n\ttry {\n\t\treturn new URL(`http://${normalized}`).hostname.toLowerCase().replace(/^\\[|\\]$/g, \"\");\n\t} catch {\n\t\treturn null;\n\t}\n}\nfunction isLoopbackHost(hostHeader) {\n\tconst hostname = hostNameFromHeader(hostHeader);\n\tif (!hostname) return false;\n\treturn hostname === \"localhost\" || hostname === \"127.0.0.1\" || hostname === \"::1\";\n}\nfunction isSameSite(request, origin) {\n\tconst requestHost = hostNameFromHeader(request.headers.get(\"host\") ?? \"\");\n\tif (!requestHost) return false;\n\treturn requestHost === origin.hostname.toLowerCase();\n}\nfunction checkHostHeader(request, requestId) {\n\tconst host = request.headers.get(\"host\") ?? \"\";\n\tif (isLoopbackHost(host) || isRemoteSetupAllowed()) return null;\n\treturn new Response(JSON.stringify({\n\t\terror: \"invalid_host\",\n\t\thost: host.trim().replace(/\\.$/, \"\"),\n\t\tmessage: \"Request rejected: Host header does not match allowed hosts. The UI binds to loopback (127.0.0.1) only; reach it via localhost or an SSH tunnel/reverse proxy, or set OP_ALLOW_REMOTE_SETUP=1 to allow remote access.\",\n\t\t...requestId ? { requestId } : {}\n\t}), {\n\t\tstatus: 400,\n\t\theaders: { \"content-type\": \"application/json\" }\n\t});\n}\n/**\n* Reject POST/PUT/DELETE requests whose Origin header does not match\n* localhost or 127.0.0.1. Requests with no Origin (non-browser clients)\n* are always allowed.\n*\n* @param request Incoming Request\n* @returns A 403 Response if the origin is rejected; null if allowed\n*/\nfunction checkOriginHeader(request, csrfMode = \"loopback-origin\", requestId) {\n\tconst method = request.method.toUpperCase();\n\tif (method === \"GET\" || method === \"HEAD\" || method === \"OPTIONS\") return null;\n\tconst origin = request.headers.get(\"origin\");\n\tif (!origin) return null;\n\ttry {\n\t\tconst u = new URL(origin);\n\t\tswitch (csrfMode) {\n\t\t\tcase \"loopback-origin\":\n\t\t\t\tif (isLoopbackHost(u.host)) return null;\n\t\t\t\tif (isRemoteSetupAllowed() && u.host === (request.headers.get(\"host\") ?? \"\").trim()) return null;\n\t\t\t\tbreak;\n\t\t\tcase \"same-site\":\n\t\t\t\tif (isSameSite(request, u)) return null;\n\t\t\t\tbreak;\n\t\t}\n\t} catch {}\n\treturn new Response(JSON.stringify({\n\t\terror: \"forbidden_origin\",\n\t\torigin,\n\t\t...requestId ? { requestId } : {}\n\t}), {\n\t\tstatus: 403,\n\t\theaders: { \"content-type\": \"application/json\" }\n\t});\n}\nNumber(process.env.PORT ?? 3880);\n//#endregion\nexport { invalidateSession as _, getRequestId as a, jsonResponse as c, requireCapability as d, safeTokenCompare as f, getUiLoginPassword as g, createSession as h, getOpenCodeClient as i, parseJsonBody as l, SESSION_TTL_SECONDS as m, checkOriginHeader as n, identifyCallerByToken as o, withAdminBody as p, errorResponse as r, jsonBodyError as s, checkHostHeader as t, requireAdmin as u, touchSession as v };\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"helpers-BrD1e__f.js","sources":["../../../.svelte-kit/adapter-node/chunks/helpers.js"],"sourcesContent":["import { rt as readSecret, yt as resolveOpenPalmHome } from \"./compose-args.js\";\nimport { G as createOpenCodeClient } from \"./src.js\";\nimport { l as isRemoteSetupAllowed } from \"./network-preset.js\";\nimport { t as getHostOpencodeTarget } from \"./opencode-target.js\";\nimport { t as computeServerRuntimeContext } from \"./features.js\";\nimport { createHash, createHmac, timingSafeEqual } from \"node:crypto\";\n//#region src/lib/server/session-store.ts\n/**\n* Stateless signed session tokens.\n*\n* Token format: `<expiresAt>.<hmac-sha256-hex>`\n* expiresAt — unix ms timestamp when the session expires\n* signature — HMAC-SHA256(expiresAt, login password)\n*\n* Tokens are self-validating: the server holds no per-session state and\n* sessions survive UI server restarts. Signing with the login password means\n* a password change invalidates all existing sessions — correct behaviour.\n*\n* The signing secret is resolved exactly like login verification\n* (`getUiLoginPassword`): `process.env.OP_UI_LOGIN_PASSWORD` first, then the\n* on-disk stack secret. When NEITHER exists, minting throws and validation\n* fails closed — there is deliberately no fallback secret, because a constant\n* key would let anyone forge an admin token. Reading the file per call also\n* means tokens minted right after the setup wizard writes the password are\n* signed with the real secret, without waiting for a process restart.\n*\n* Logout semantics (known trade-off of stateless tokens): logout revokes the\n* single token the browser presented (in-memory list, cleared on restart) and\n* clears the cookie. Earlier tokens issued to the same browser by sliding\n* renewal remain cryptographically valid until they expire — logout is\n* \"forget my cookie\", not \"kill every credential ever issued\". A real\n* kill-switch is changing the login password, which invalidates everything.\n*/\n/** Session lifetime for both the token expiry and the cookie Max-Age. 14 days. */\nvar SESSION_TTL_MS = 12096e5;\n/** Cookie Max-Age in seconds (Set-Cookie uses seconds, not ms). */\nvar SESSION_TTL_SECONDS = SESSION_TTL_MS / 1e3;\nvar _revoked = /* @__PURE__ */ new Set();\nvar _testOverrides = /* @__PURE__ */ new Set();\n/**\n* Read the operator UI login password from the host environment or the\n* file-based stack secret (`knowledge/secrets/op_ui_login_password`).\n*\n* This is the single source of truth for the password — login verification\n* (helpers.ts) and token signing below both use it, so they can never\n* disagree about whether a password exists. Returns \"\" when neither source\n* has a value (first boot, before the wizard runs).\n*/\nfunction getUiLoginPassword() {\n\tconst envValue = process.env.OP_UI_LOGIN_PASSWORD;\n\tif (envValue) return envValue;\n\treturn readSecret(resolveOpenPalmHome(), \"op_ui_login_password\")?.trimEnd() ?? \"\";\n}\n/** Sign `expiresAt` with the login password. Returns null when no password is configured. */\nfunction signToken(expiresAt) {\n\tconst secret = getUiLoginPassword();\n\tif (!secret) return null;\n\treturn createHmac(\"sha256\", secret).update(String(expiresAt)).digest(\"hex\");\n}\n/**\n* Mint a new signed session token with a 14-day TTL.\n* Place the result in the `op_session` cookie.\n* Throws when no login password is configured — callers must verify a\n* password exists (they all do: login/session/setup-complete check first).\n*/\nfunction createSession() {\n\tconst expiresAt = Date.now() + SESSION_TTL_MS;\n\tconst sig = signToken(expiresAt);\n\tif (sig === null) throw new Error(\"Cannot mint a session: no UI login password is configured.\");\n\treturn `${expiresAt}.${sig}`;\n}\n/**\n* Return true iff `token` is a valid, non-expired, non-revoked session.\n*/\nfunction validateSession(token) {\n\tif (!token) return false;\n\tif (_testOverrides.has(token)) return true;\n\tif (_revoked.has(token)) return false;\n\tconst dot = token.lastIndexOf(\".\");\n\tif (dot < 0) return false;\n\tconst expiresAt = Number(token.slice(0, dot));\n\tif (!Number.isFinite(expiresAt) || Date.now() >= expiresAt) return false;\n\tconst sig = token.slice(dot + 1);\n\tconst expected = signToken(expiresAt);\n\tif (expected === null) return false;\n\tif (sig.length !== expected.length) return false;\n\treturn timingSafeEqual(Buffer.from(sig), Buffer.from(expected));\n}\n/**\n* Sliding renewal: validate the old token, return a new one with a fresh\n* 14-day TTL, or return false if the old token is invalid/expired.\n* The caller must place the returned token in the `op_session` cookie.\n*/\nfunction touchSession(token) {\n\tif (!validateSession(token)) return false;\n\treturn createSession();\n}\n/**\n* Revoke a token (logout). The browser cookie must also be cleared by the caller.\n* The revocation list survives until the next server restart. Entries whose\n* embedded expiry has passed are pruned on each call — an expired token fails\n* validation anyway, so keeping it listed is pure memory growth.\n*/\nfunction invalidateSession(token) {\n\tconst now = Date.now();\n\tfor (const revoked of _revoked) {\n\t\tconst expiresAt = Number(revoked.slice(0, revoked.lastIndexOf(\".\")));\n\t\tif (!Number.isFinite(expiresAt) || expiresAt <= now) _revoked.delete(revoked);\n\t}\n\t_revoked.add(token);\n}\n//#endregion\n//#region src/lib/server/helpers.ts\n/**\n* Lazy OpenCode client bound to the currently active endpoint. The client is\n* recreated whenever the active endpoint URL changes so user switches in the\n* UI take effect on the next call.\n*/\nvar _openCodeClient;\nvar _openCodeClientUrl;\nfunction getOpenCodeClient() {\n\tconst { url } = getHostOpencodeTarget();\n\tif (!_openCodeClient || url !== _openCodeClientUrl) {\n\t\t_openCodeClient = createOpenCodeClient({ baseUrl: url });\n\t\t_openCodeClientUrl = url;\n\t}\n\treturn _openCodeClient;\n}\nfunction safeTokenCompare(a, b) {\n\tif (typeof a !== \"string\" || typeof b !== \"string\") return false;\n\tif (!a || !b) return false;\n\treturn timingSafeEqual(createHash(\"sha256\").update(a).digest(), createHash(\"sha256\").update(b).digest());\n}\n/** Standard JSON response with request ID header */\nfunction jsonResponse(status, body, requestId = \"\") {\n\treturn new Response(JSON.stringify(body), {\n\t\tstatus,\n\t\theaders: {\n\t\t\t\"content-type\": \"application/json\",\n\t\t\t...requestId ? { \"x-request-id\": requestId } : {}\n\t\t}\n\t});\n}\n/** Standard error envelope */\nfunction errorResponse(status, error, message, details = {}, requestId = \"\") {\n\treturn jsonResponse(status, {\n\t\terror,\n\t\tmessage,\n\t\tdetails,\n\t\trequestId\n\t}, requestId);\n}\n/** Extract or generate request ID */\nfunction getRequestId(event) {\n\treturn event.request.headers.get(\"x-request-id\") || crypto.randomUUID();\n}\n/**\n* Extract raw session token from the `op_session` cookie.\n*\n* Phase 2 of the auth/proxy refactor (docs/technical/auth-and-proxy-refactor-plan.md)\n* removed the legacy `x-admin-token` / `Authorization: Bearer` header fallbacks.\n* The cookie is HttpOnly + SameSite=Lax and is the ONLY credential the browser\n* holds; XSS cannot read it and out-of-process callers must obtain a session via\n* `POST /api/auth/login` (or `/session`) and present the cookie on subsequent\n* requests.\n*/\nfunction extractToken(event) {\n\tconst match = (event.request.headers.get(\"cookie\") ?? \"\").match(/(?:^|;\\s*)op_session=([^;]+)/);\n\tif (match) return match[1];\n\treturn \"\";\n}\n/** Check admin auth — returns error Response or null if OK */\nfunction requireAdmin(event, requestId) {\n\tif (!getUiLoginPassword()) return errorResponse(503, \"admin_not_configured\", \"OP_UI_LOGIN_PASSWORD has not been set. Complete setup first.\", {}, requestId);\n\tif (!validateSession(extractToken(event))) return errorResponse(401, \"unauthorized\", \"Missing or invalid credentials\", {}, requestId);\n\treturn null;\n}\n/**\n* Server-side capability guard.\n*\n* Returns a 403 JSON error Response when this process does not expose\n* `capability`, or null when it does. This is the SECURITY boundary — the\n* browser-side `hasCapability()` is UX only. The check is deliberately\n* capability-based, not session-based: a valid admin session in a non-admin\n* process (host:* absent) is still refused. Capability computation itself\n* lives ONLY in computeServerRuntimeContext / resolveCapabilities;\n* this helper just reads the advertised server capability set.\n*/\nfunction requireCapability(event, capability, requestId) {\n\tconst ctx = computeServerRuntimeContext(event);\n\tif (!ctx.serverCapabilities.includes(capability)) return errorResponse(403, \"capability_not_available\", `This deployment (admin=${ctx.admin}) does not provide the '${capability}' capability.`, {\n\t\tcapability,\n\t\tadmin: ctx.admin\n\t}, requestId);\n\treturn null;\n}\n/**\n* Identify caller by the presented `op_session` cookie.\n*\n* Returns \"admin\" when the cookie holds a valid session token.\n*/\nfunction identifyCallerByToken(event) {\n\tif (!getUiLoginPassword()) return null;\n\tif (validateSession(extractToken(event))) return \"admin\";\n\treturn null;\n}\n/** Parse JSON body safely — returns discriminated result with error type */\nasync function parseJsonBody(request, maxBytes = 1048576) {\n\ttry {\n\t\tconst contentLength = request.headers.get(\"content-length\");\n\t\tif (contentLength && parseInt(contentLength, 10) > maxBytes) return { error: \"too_large\" };\n\t\tconst parsed = await request.json();\n\t\tif (parsed === null || typeof parsed !== \"object\" || Array.isArray(parsed)) return { error: \"invalid_json\" };\n\t\treturn { data: parsed };\n\t} catch (e) {\n\t\tconsole.warn(\"[helpers] Failed to parse JSON request body\", e);\n\t\treturn { error: \"invalid_json\" };\n\t}\n}\n/** Convert a ParseJsonBodyError to an appropriate HTTP error response */\nfunction jsonBodyError(err, requestId) {\n\tif (err.error === \"too_large\") return errorResponse(413, \"too_large\", \"Request body too large\", {}, requestId);\n\treturn errorResponse(400, \"invalid_json\", \"Request body must be valid JSON\", {}, requestId);\n}\n/**\n* Auth + JSON body wrapper for admin POST/DELETE handlers.\n*\n* Replaces the 4-line boilerplate copy-pasted across 30+ routes:\n* const requestId = getRequestId(event);\n* const authError = requireAdmin(event, requestId);\n* if (authError) return authError;\n* const result = await parseJsonBody(event.request);\n* if ('error' in result) return jsonBodyError(result, requestId);\n*\n* Use for routes that need both auth and a JSON body. For auth-only or\n* GET routes, call `requireAdmin` directly.\n*/\nasync function withAdminBody(event, handler) {\n\tconst requestId = getRequestId(event);\n\tconst { security } = computeServerRuntimeContext(event);\n\tconst originError = checkOriginHeader(event.request, security.csrfMode, requestId);\n\tif (originError) return originError;\n\tconst authError = requireAdmin(event, requestId);\n\tif (authError) return authError;\n\tconst result = await parseJsonBody(event.request);\n\tif (\"error\" in result) return jsonBodyError(result, requestId);\n\treturn handler({\n\t\trequestId,\n\t\tbody: result.data\n\t});\n}\nfunction hostNameFromHeader(hostHeader) {\n\tconst normalized = hostHeader.trim().replace(/\\.$/, \"\");\n\ttry {\n\t\treturn new URL(`http://${normalized}`).hostname.toLowerCase().replace(/^\\[|\\]$/g, \"\");\n\t} catch {\n\t\treturn null;\n\t}\n}\nfunction isLoopbackHost(hostHeader) {\n\tconst hostname = hostNameFromHeader(hostHeader);\n\tif (!hostname) return false;\n\treturn hostname === \"localhost\" || hostname === \"127.0.0.1\" || hostname === \"::1\";\n}\nfunction isSameSite(request, origin) {\n\tconst requestHost = hostNameFromHeader(request.headers.get(\"host\") ?? \"\");\n\tif (!requestHost) return false;\n\treturn requestHost === origin.hostname.toLowerCase();\n}\nfunction checkHostHeader(request, requestId) {\n\tconst host = request.headers.get(\"host\") ?? \"\";\n\tif (isLoopbackHost(host) || isRemoteSetupAllowed()) return null;\n\treturn new Response(JSON.stringify({\n\t\terror: \"invalid_host\",\n\t\thost: host.trim().replace(/\\.$/, \"\"),\n\t\tmessage: \"Request rejected: Host header does not match allowed hosts. The UI binds to loopback (127.0.0.1) only; reach it via localhost or an SSH tunnel/reverse proxy, or set OP_ALLOW_REMOTE_SETUP=1 to allow remote access.\",\n\t\t...requestId ? { requestId } : {}\n\t}), {\n\t\tstatus: 400,\n\t\theaders: { \"content-type\": \"application/json\" }\n\t});\n}\n/**\n* Reject POST/PUT/DELETE requests whose Origin header does not match\n* localhost or 127.0.0.1. Requests with no Origin (non-browser clients)\n* are always allowed.\n*\n* @param request Incoming Request\n* @returns A 403 Response if the origin is rejected; null if allowed\n*/\nfunction checkOriginHeader(request, csrfMode = \"loopback-origin\", requestId) {\n\tconst method = request.method.toUpperCase();\n\tif (method === \"GET\" || method === \"HEAD\" || method === \"OPTIONS\") return null;\n\tconst origin = request.headers.get(\"origin\");\n\tif (!origin) return null;\n\ttry {\n\t\tconst u = new URL(origin);\n\t\tswitch (csrfMode) {\n\t\t\tcase \"loopback-origin\":\n\t\t\t\tif (isLoopbackHost(u.host)) return null;\n\t\t\t\tif (isRemoteSetupAllowed() && u.host === (request.headers.get(\"host\") ?? \"\").trim()) return null;\n\t\t\t\tbreak;\n\t\t\tcase \"same-site\":\n\t\t\t\tif (isSameSite(request, u)) return null;\n\t\t\t\tbreak;\n\t\t}\n\t} catch {}\n\treturn new Response(JSON.stringify({\n\t\terror: \"forbidden_origin\",\n\t\torigin,\n\t\t...requestId ? { requestId } : {}\n\t}), {\n\t\tstatus: 403,\n\t\theaders: { \"content-type\": \"application/json\" }\n\t});\n}\nNumber(process.env.PORT ?? 3880);\n//#endregion\nexport { invalidateSession as _, getRequestId as a, jsonResponse as c, requireCapability as d, safeTokenCompare as f, getUiLoginPassword as g, createSession as h, getOpenCodeClient as i, parseJsonBody as l, SESSION_TTL_SECONDS as m, checkOriginHeader as n, identifyCallerByToken as o, withAdminBody as p, errorResponse as r, jsonBodyError as s, checkHostHeader as t, requireAdmin as u, touchSession as v };\n"],"names":[],"mappings":"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"}
@@ -1,12 +1,12 @@
1
1
  import { r as redirect } from './exports-CcmcYU0M.js';
2
- import { aO as resolveOpenPalmHome, ad as isSetupComplete, aW as stackDirFor, au as readSecret, ay as readStackRuntimeEnv, aF as reconcileMdnsResponder, D as createLogger } from './src-B2-r_9oB.js';
2
+ import { aO as resolveOpenPalmHome, ad as isSetupComplete, aW as stackDirFor, au as readSecret, ay as readStackRuntimeEnv, aF as reconcileMdnsResponder, D as createLogger } from './src-B2wHibme.js';
3
3
  import { h as isRemoteSetupAllowed, e as collectNetworkExposureWarnings } from './network-preset-BvVAoagy.js';
4
- import { g as getState } from './state-Dkjz2T4C.js';
5
- import { d as getRequestId, c as checkHostHeader, a as checkOriginHeader, i as identifyCallerByToken, t as touchSession } from './helpers-DWpoPvHz.js';
6
- import { c as computeServerRuntimeContext } from './features-DltizIi4.js';
7
- import { S as SESSION_COOKIE_NAME, s as sessionCookieHeader } from './session-cookie-D2_H1UEW.js';
8
- import { g as getCachedLocalInstallState, r as resolveRequestLanding, B as BLOCKING_LANDINGS } from './landing-DY53l_CN.js';
9
- export { _ as _resetLaunchCache } from './landing-DY53l_CN.js';
4
+ import { g as getState } from './state-JIy0tegD.js';
5
+ import { d as getRequestId, c as checkHostHeader, a as checkOriginHeader, i as identifyCallerByToken, t as touchSession } from './helpers-BrD1e__f.js';
6
+ import { c as computeServerRuntimeContext } from './features-D8Ez2vwC.js';
7
+ import { S as SESSION_COOKIE_NAME, s as sessionCookieHeader } from './session-cookie-5J3xCH94.js';
8
+ import { g as getCachedLocalInstallState, r as resolveRequestLanding, B as BLOCKING_LANDINGS } from './landing-DxFOhZxH.js';
9
+ export { _ as _resetLaunchCache } from './landing-DxFOhZxH.js';
10
10
  import './utils-OXHIhUb5.js';
11
11
  import './chunk-DOvWTNp_.js';
12
12
  import 'node:module';
@@ -28,7 +28,7 @@ import 'assert';
28
28
  import 'zlib';
29
29
  import 'node:assert';
30
30
  import 'node:fs/promises';
31
- import './opencode-target-DYD2zQ4l.js';
31
+ import './opencode-target-D4BxXYHJ.js';
32
32
  import './runtime-context.svelte-CRT-b6Ae.js';
33
33
 
34
34
  //#region src/hooks.server.ts
@@ -115,4 +115,4 @@ var handle = async ({ event, resolve }) => {
115
115
  };
116
116
 
117
117
  export { handle };
118
- //# sourceMappingURL=hooks.server-BcdEyWVU.js.map
118
+ //# sourceMappingURL=hooks.server-Blba-Qw7.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.server-BcdEyWVU.js","sources":["../../../.svelte-kit/adapter-node/entries/hooks.server.js"],"sourcesContent":["import { i as redirect } from \"../chunks/exports.js\";\nimport { Ot as createLogger, St as stackDirFor, X as readStackRuntimeEnv, bt as resolveOpenPalmHome, it as readSecret } from \"../chunks/compose-args.js\";\nimport { B as isSetupComplete, r as reconcileMdnsResponder } from \"../chunks/src.js\";\nimport { l as isRemoteSetupAllowed, r as collectNetworkExposureWarnings } from \"../chunks/network-preset.js\";\nimport { t as getState } from \"../chunks/state.js\";\nimport { a as getRequestId, n as checkOriginHeader, o as identifyCallerByToken, t as checkHostHeader, v as touchSession } from \"../chunks/helpers.js\";\nimport { t as computeServerRuntimeContext } from \"../chunks/features.js\";\nimport { r as sessionCookieHeader, t as SESSION_COOKIE_NAME } from \"../chunks/session-cookie.js\";\nimport { i as BLOCKING_LANDINGS, n as getCachedLocalInstallState, r as resolveRequestLanding, t as _resetLaunchCache } from \"../chunks/landing.js\";\n//#region src/hooks.server.ts\nvar logger = createLogger(\"admin\");\nvar startupApplyDone = false;\nfunction loadProcessEnv() {\n\tif (startupApplyDone) return;\n\tstartupApplyDone = true;\n\tfor (const line of collectNetworkExposureWarnings(process.env)) logger.warn(line);\n\ttry {\n\t\tconst state = getState();\n\t\tif (!process.env.OP_UI_LOGIN_PASSWORD) {\n\t\t\tconst pw = readSecret(state.homeDir, \"op_ui_login_password\");\n\t\t\tif (pw) process.env.OP_UI_LOGIN_PASSWORD = pw.trimEnd();\n\t\t}\n\t\tconst stackVars = readStackRuntimeEnv(state.homeDir);\n\t\tfor (const [k, v] of Object.entries(stackVars)) if (v && !process.env[k]) process.env[k] = v;\n\t\treconcileMdnsResponder(state.homeDir);\n\t} catch (err) {\n\t\tlogger.error(\"process env load failed\", { error: String(err) });\n\t}\n}\nloadProcessEnv();\nvar SETUP_PATHS = [\n\t\"/setup\",\n\t\"/api/setup\",\n\t\"/health\",\n\t\"/guardian/health\"\n];\nfunction isLocalhostAddress(ip) {\n\treturn ip === \"127.0.0.1\" || ip === \"::1\" || ip === \"::ffff:127.0.0.1\";\n}\nvar handle = async ({ event, resolve }) => {\n\tconst runtimeContext = computeServerRuntimeContext(event);\n\tconst requestId = getRequestId(event);\n\tconst hostError = checkHostHeader(event.request, requestId);\n\tif (hostError) return hostError;\n\tconst originError = checkOriginHeader(event.request, runtimeContext.security.csrfMode, requestId);\n\tif (originError) return originError;\n\tconst path = event.url.pathname;\n\tconst isAuthPath = path === \"/login\" || path.startsWith(\"/login/\");\n\tconst wantsHtml = event.request.method === \"GET\" && (event.request.headers.get(\"accept\") ?? \"\").includes(\"text/html\");\n\tif ((path === \"/host\" || path.startsWith(\"/host/\")) && !runtimeContext.serverCapabilities.includes(\"host:stack:read\")) redirect(302, \"/chat\");\n\tconst isSetupPath = SETUP_PATHS.some((p) => path === p || path.startsWith(`${p}/`));\n\tconst homeDir = resolveOpenPalmHome();\n\tconst setupComplete = isSetupComplete(homeDir);\n\tconst localInstallState = getCachedLocalInstallState(stackDirFor(homeDir), homeDir);\n\tif (wantsHtml && !setupComplete && localInstallState !== \"not_installed\" && !isSetupPath && !isAuthPath && !path.startsWith(\"/admin\")) redirect(302, \"/setup\");\n\tif (isSetupPath && !setupComplete && !isRemoteSetupAllowed()) {\n\t\tif (!isLocalhostAddress(event.getClientAddress())) return new Response(JSON.stringify({\n\t\t\terror: \"setup_localhost_only\",\n\t\t\tmessage: \"Setup is only accessible from the host machine until installation is complete.\"\n\t\t}), {\n\t\t\tstatus: 403,\n\t\t\theaders: { \"content-type\": \"application/json\" }\n\t\t});\n\t}\n\tif (!isSetupPath) {\n\t\tconst landing = await resolveRequestLanding(event);\n\t\tconst [landingPath] = landing.split(\"?\");\n\t\tconst usageExempt = (path.startsWith(\"/chat\") || path.startsWith(\"/advanced\") || path.startsWith(\"/connections\")) && !BLOCKING_LANDINGS.has(landingPath);\n\t\tconst exempt = path.startsWith(\"/api/\") || path.startsWith(\"/login\") || path.startsWith(\"/health\") || path.startsWith(\"/guardian/health\") || path.startsWith(\"/host\") || path.startsWith(\"/admin\") || usageExempt;\n\t\tif (path === \"/\" || path !== landingPath && !exempt) redirect(302, landing);\n\t}\n\tevent.locals.role = identifyCallerByToken(event);\n\tlet renewedCookie = null;\n\tif (event.locals.role === \"admin\") {\n\t\tconst match = (event.request.headers.get(\"cookie\") ?? \"\").match(new RegExp(`(?:^|;\\\\s*)${SESSION_COOKIE_NAME}=([^;]+)`));\n\t\tconst renewed = match ? touchSession(match[1]) : false;\n\t\tif (renewed) renewedCookie = sessionCookieHeader(renewed, event.request);\n\t}\n\tif (wantsHtml && !event.locals.role && !isSetupPath && !isAuthPath) {\n\t\tconst redirectTo = path + event.url.search;\n\t\tredirect(302, `/login?redirectTo=${encodeURIComponent(redirectTo)}`);\n\t}\n\tconst response = await resolve(event);\n\tif (renewedCookie) {\n\t\tif (!(response.headers.get(\"set-cookie\") ?? \"\").includes(`op_session=`)) response.headers.append(\"set-cookie\", renewedCookie);\n\t}\n\tresponse.headers.set(\"X-Frame-Options\", path === \"/api/host/akm/health-report\" ? \"SAMEORIGIN\" : \"DENY\");\n\tresponse.headers.set(\"X-Content-Type-Options\", \"nosniff\");\n\tresponse.headers.set(\"Referrer-Policy\", \"no-referrer\");\n\treturn response;\n};\n//#endregion\nexport { _resetLaunchCache, handle };\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hooks.server-Blba-Qw7.js","sources":["../../../.svelte-kit/adapter-node/entries/hooks.server.js"],"sourcesContent":["import { i as redirect } from \"../chunks/exports.js\";\nimport { Dt as createLogger, Y as readStackRuntimeEnv, rt as readSecret, xt as stackDirFor, yt as resolveOpenPalmHome } from \"../chunks/compose-args.js\";\nimport { r as reconcileMdnsResponder, z as isSetupComplete } from \"../chunks/src.js\";\nimport { l as isRemoteSetupAllowed, r as collectNetworkExposureWarnings } from \"../chunks/network-preset.js\";\nimport { t as getState } from \"../chunks/state.js\";\nimport { a as getRequestId, n as checkOriginHeader, o as identifyCallerByToken, t as checkHostHeader, v as touchSession } from \"../chunks/helpers.js\";\nimport { t as computeServerRuntimeContext } from \"../chunks/features.js\";\nimport { r as sessionCookieHeader, t as SESSION_COOKIE_NAME } from \"../chunks/session-cookie.js\";\nimport { i as BLOCKING_LANDINGS, n as getCachedLocalInstallState, r as resolveRequestLanding, t as _resetLaunchCache } from \"../chunks/landing.js\";\n//#region src/hooks.server.ts\nvar logger = createLogger(\"admin\");\nvar startupApplyDone = false;\nfunction loadProcessEnv() {\n\tif (startupApplyDone) return;\n\tstartupApplyDone = true;\n\tfor (const line of collectNetworkExposureWarnings(process.env)) logger.warn(line);\n\ttry {\n\t\tconst state = getState();\n\t\tif (!process.env.OP_UI_LOGIN_PASSWORD) {\n\t\t\tconst pw = readSecret(state.homeDir, \"op_ui_login_password\");\n\t\t\tif (pw) process.env.OP_UI_LOGIN_PASSWORD = pw.trimEnd();\n\t\t}\n\t\tconst stackVars = readStackRuntimeEnv(state.homeDir);\n\t\tfor (const [k, v] of Object.entries(stackVars)) if (v && !process.env[k]) process.env[k] = v;\n\t\treconcileMdnsResponder(state.homeDir);\n\t} catch (err) {\n\t\tlogger.error(\"process env load failed\", { error: String(err) });\n\t}\n}\nloadProcessEnv();\nvar SETUP_PATHS = [\n\t\"/setup\",\n\t\"/api/setup\",\n\t\"/health\",\n\t\"/guardian/health\"\n];\nfunction isLocalhostAddress(ip) {\n\treturn ip === \"127.0.0.1\" || ip === \"::1\" || ip === \"::ffff:127.0.0.1\";\n}\nvar handle = async ({ event, resolve }) => {\n\tconst runtimeContext = computeServerRuntimeContext(event);\n\tconst requestId = getRequestId(event);\n\tconst hostError = checkHostHeader(event.request, requestId);\n\tif (hostError) return hostError;\n\tconst originError = checkOriginHeader(event.request, runtimeContext.security.csrfMode, requestId);\n\tif (originError) return originError;\n\tconst path = event.url.pathname;\n\tconst isAuthPath = path === \"/login\" || path.startsWith(\"/login/\");\n\tconst wantsHtml = event.request.method === \"GET\" && (event.request.headers.get(\"accept\") ?? \"\").includes(\"text/html\");\n\tif ((path === \"/host\" || path.startsWith(\"/host/\")) && !runtimeContext.serverCapabilities.includes(\"host:stack:read\")) redirect(302, \"/chat\");\n\tconst isSetupPath = SETUP_PATHS.some((p) => path === p || path.startsWith(`${p}/`));\n\tconst homeDir = resolveOpenPalmHome();\n\tconst setupComplete = isSetupComplete(homeDir);\n\tconst localInstallState = getCachedLocalInstallState(stackDirFor(homeDir), homeDir);\n\tif (wantsHtml && !setupComplete && localInstallState !== \"not_installed\" && !isSetupPath && !isAuthPath && !path.startsWith(\"/admin\")) redirect(302, \"/setup\");\n\tif (isSetupPath && !setupComplete && !isRemoteSetupAllowed()) {\n\t\tif (!isLocalhostAddress(event.getClientAddress())) return new Response(JSON.stringify({\n\t\t\terror: \"setup_localhost_only\",\n\t\t\tmessage: \"Setup is only accessible from the host machine until installation is complete.\"\n\t\t}), {\n\t\t\tstatus: 403,\n\t\t\theaders: { \"content-type\": \"application/json\" }\n\t\t});\n\t}\n\tif (!isSetupPath) {\n\t\tconst landing = await resolveRequestLanding(event);\n\t\tconst [landingPath] = landing.split(\"?\");\n\t\tconst usageExempt = (path.startsWith(\"/chat\") || path.startsWith(\"/advanced\") || path.startsWith(\"/connections\")) && !BLOCKING_LANDINGS.has(landingPath);\n\t\tconst exempt = path.startsWith(\"/api/\") || path.startsWith(\"/login\") || path.startsWith(\"/health\") || path.startsWith(\"/guardian/health\") || path.startsWith(\"/host\") || path.startsWith(\"/admin\") || usageExempt;\n\t\tif (path === \"/\" || path !== landingPath && !exempt) redirect(302, landing);\n\t}\n\tevent.locals.role = identifyCallerByToken(event);\n\tlet renewedCookie = null;\n\tif (event.locals.role === \"admin\") {\n\t\tconst match = (event.request.headers.get(\"cookie\") ?? \"\").match(new RegExp(`(?:^|;\\\\s*)${SESSION_COOKIE_NAME}=([^;]+)`));\n\t\tconst renewed = match ? touchSession(match[1]) : false;\n\t\tif (renewed) renewedCookie = sessionCookieHeader(renewed, event.request);\n\t}\n\tif (wantsHtml && !event.locals.role && !isSetupPath && !isAuthPath) {\n\t\tconst redirectTo = path + event.url.search;\n\t\tredirect(302, `/login?redirectTo=${encodeURIComponent(redirectTo)}`);\n\t}\n\tconst response = await resolve(event);\n\tif (renewedCookie) {\n\t\tif (!(response.headers.get(\"set-cookie\") ?? \"\").includes(`op_session=`)) response.headers.append(\"set-cookie\", renewedCookie);\n\t}\n\tresponse.headers.set(\"X-Frame-Options\", path === \"/api/host/akm/health-report\" ? \"SAMEORIGIN\" : \"DENY\");\n\tresponse.headers.set(\"X-Content-Type-Options\", \"nosniff\");\n\tresponse.headers.set(\"Referrer-Policy\", \"no-referrer\");\n\treturn response;\n};\n//#endregion\nexport { _resetLaunchCache, handle };\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { g as getHostOpencodeTarget, b as basicAuthHeader } from './opencode-target-DYD2zQ4l.js';
1
+ import { g as getHostOpencodeTarget, b as basicAuthHeader } from './opencode-target-D4BxXYHJ.js';
2
2
 
3
3
  //#region src/lib/server/opencode/http.ts
4
4
  /**
@@ -25,4 +25,4 @@ async function opencodeFetch(path, init) {
25
25
  }
26
26
 
27
27
  export { opencodeFetch as o };
28
- //# sourceMappingURL=http-7E5W3vGt.js.map
28
+ //# sourceMappingURL=http-B4Us23Mo.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"http-7E5W3vGt.js","sources":["../../../.svelte-kit/adapter-node/chunks/http.js"],"sourcesContent":["import { i as basicAuthHeader, t as getHostOpencodeTarget } from \"./opencode-target.js\";\n//#region src/lib/server/opencode/http.ts\n/**\n* HTTP transport for talking to the active OpenCode endpoint.\n*\n* Used by sibling modules (`config.ts`, `catalog.ts`) — not part of the\n* public API of `$lib/server/opencode`. Reads the active endpoint per-call\n* so user switches in the UI take effect immediately.\n*/\nasync function opencodeFetch(path, init) {\n\tconst endpoint = getHostOpencodeTarget();\n\tconst headers = {\n\t\t\"content-type\": \"application/json\",\n\t\t...init?.headers\n\t};\n\tif (endpoint.password) headers.authorization = basicAuthHeader(endpoint.username || \"opencode\", endpoint.password);\n\tconst response = await fetch(`${endpoint.url}${path}`, {\n\t\t...init,\n\t\theaders\n\t});\n\tif (!response.ok) throw new Error(`${init?.method ?? \"GET\"} ${path} failed with ${response.status}`);\n\tif (response.status === 204) return;\n\treturn await response.json();\n}\n//#endregion\nexport { opencodeFetch as t };\n"],"names":[],"mappings":";;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE;AACzC,CAAC,MAAM,QAAQ,GAAG,qBAAqB,EAAE;AACzC,CAAC,MAAM,OAAO,GAAG;AACjB,EAAE,cAAc,EAAE,kBAAkB;AACpC,EAAE,GAAG,IAAI,EAAE;AACX,EAAE;AACF,CAAC,IAAI,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,aAAa,GAAG,eAAe,CAAC,QAAQ,CAAC,QAAQ,IAAI,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAC;AACnH,CAAC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE;AACxD,EAAE,GAAG,IAAI;AACT,EAAE;AACF,EAAE,CAAC;AACH,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,IAAI,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,IAAI,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AACrG,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;AAC9B,CAAC,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE;AAC7B;;;;"}
1
+ {"version":3,"file":"http-B4Us23Mo.js","sources":["../../../.svelte-kit/adapter-node/chunks/http.js"],"sourcesContent":["import { i as basicAuthHeader, t as getHostOpencodeTarget } from \"./opencode-target.js\";\n//#region src/lib/server/opencode/http.ts\n/**\n* HTTP transport for talking to the active OpenCode endpoint.\n*\n* Used by sibling modules (`config.ts`, `catalog.ts`) — not part of the\n* public API of `$lib/server/opencode`. Reads the active endpoint per-call\n* so user switches in the UI take effect immediately.\n*/\nasync function opencodeFetch(path, init) {\n\tconst endpoint = getHostOpencodeTarget();\n\tconst headers = {\n\t\t\"content-type\": \"application/json\",\n\t\t...init?.headers\n\t};\n\tif (endpoint.password) headers.authorization = basicAuthHeader(endpoint.username || \"opencode\", endpoint.password);\n\tconst response = await fetch(`${endpoint.url}${path}`, {\n\t\t...init,\n\t\theaders\n\t});\n\tif (!response.ok) throw new Error(`${init?.method ?? \"GET\"} ${path} failed with ${response.status}`);\n\tif (response.status === 204) return;\n\treturn await response.json();\n}\n//#endregion\nexport { opencodeFetch as t };\n"],"names":[],"mappings":";;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE;AACzC,CAAC,MAAM,QAAQ,GAAG,qBAAqB,EAAE;AACzC,CAAC,MAAM,OAAO,GAAG;AACjB,EAAE,cAAc,EAAE,kBAAkB;AACpC,EAAE,GAAG,IAAI,EAAE;AACX,EAAE;AACF,CAAC,IAAI,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,aAAa,GAAG,eAAe,CAAC,QAAQ,CAAC,QAAQ,IAAI,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAC;AACnH,CAAC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE;AACxD,EAAE,GAAG,IAAI;AACT,EAAE;AACF,EAAE,CAAC;AACH,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,IAAI,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,IAAI,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AACrG,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;AAC9B,CAAC,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE;AAC7B;;;;"}
@@ -891,7 +891,7 @@ var options = {
891
891
  app: ({ head, body, assets, nonce, env }) => "<!doctype html>\n<html lang=\"en\">\n <head>\n <meta charset=\"utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <meta name=\"theme-color\" content=\"#ffffff\" />\n <meta name=\"color-scheme\" content=\"light\" />\n <script>\n (() => {\n const storageKey = 'openpalm.theme';\n const darkThemeColor = '#161c22';\n const lightThemeColor = '#f9fafb';\n\n try {\n const stored = window.localStorage.getItem(storageKey);\n const preference = stored === 'light' || stored === 'dark' || stored === 'system' ? stored : 'system';\n const resolved = preference === 'system'\n ? (window.matchMedia?.('(prefers-color-scheme: dark)')?.matches ? 'dark' : 'light')\n : preference;\n const root = document.documentElement;\n root.setAttribute('data-theme', resolved);\n root.style.colorScheme = resolved;\n\n const themeColorMeta = document.querySelector('meta[name=\"theme-color\"]');\n if (themeColorMeta) {\n themeColorMeta.setAttribute('content', resolved === 'dark' ? darkThemeColor : lightThemeColor);\n }\n\n const colorSchemeMeta = document.querySelector('meta[name=\"color-scheme\"]');\n if (colorSchemeMeta) {\n colorSchemeMeta.setAttribute('content', resolved);\n }\n } catch {\n // Keep the default light metadata if storage access is unavailable.\n }\n })();\n <\/script>\n <link rel=\"preconnect\" href=\"https://fonts.googleapis.com\" />\n <link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin />\n <link\n href=\"https://fonts.googleapis.com/css2?family=Source+Sans+3:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500&display=swap\"\n rel=\"stylesheet\"\n />\n " + head + "\n </head>\n <body data-sveltekit-preload-data=\"hover\">\n <div style=\"display: contents\">" + body + "</div>\n </body>\n</html>\n",
892
892
  error: ({ status, message }) => "<!doctype html>\n<html lang=\"en\">\n <head>\n <meta charset=\"utf-8\" />\n <title>" + message + "</title>\n\n <style>\n body {\n --bg: white;\n --fg: #222;\n --divider: #ccc;\n background: var(--bg);\n color: var(--fg);\n font-family:\n system-ui,\n -apple-system,\n BlinkMacSystemFont,\n 'Segoe UI',\n Roboto,\n Oxygen,\n Ubuntu,\n Cantarell,\n 'Open Sans',\n 'Helvetica Neue',\n sans-serif;\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100vh;\n margin: 0;\n }\n\n .error {\n display: flex;\n align-items: center;\n max-width: 32rem;\n margin: 0 1rem;\n }\n\n .status {\n font-weight: 200;\n font-size: 3rem;\n line-height: 1;\n position: relative;\n top: -0.05rem;\n }\n\n .message {\n border-left: 1px solid var(--divider);\n padding: 0 0 0 1rem;\n margin: 0 0 0 1rem;\n min-height: 2.5rem;\n display: flex;\n align-items: center;\n }\n\n .message h1 {\n font-weight: 400;\n font-size: 1em;\n margin: 0;\n }\n\n @media (prefers-color-scheme: dark) {\n body {\n --bg: #222;\n --fg: #ddd;\n --divider: #666;\n }\n }\n </style>\n </head>\n <body>\n <div class=\"error\">\n <span class=\"status\">" + status + "</span>\n <div class=\"message\">\n <h1>" + message + "</h1>\n </div>\n </div>\n </body>\n</html>\n"
893
893
  },
894
- version_hash: "lwg84h"
894
+ version_hash: "m0btny"
895
895
  };
896
896
  async function get_hooks() {
897
897
  let handle;
@@ -899,7 +899,7 @@ async function get_hooks() {
899
899
  let handleError;
900
900
  let handleValidationError;
901
901
  let init;
902
- ({handle, handleFetch, handleError, handleValidationError, init} = await import('./hooks.server-BcdEyWVU.js'));
902
+ ({handle, handleFetch, handleError, handleValidationError, init} = await import('./hooks.server-Blba-Qw7.js'));
903
903
  let reroute;
904
904
  let transport;
905
905
  return {
@@ -914,4 +914,4 @@ async function get_hooks() {
914
914
  }
915
915
 
916
916
  export { IN_WEBCONTAINER as I, NULL_BODY_STATUS as N, disable_search as a, merge_tracing as b, resolve as c, decode_pathname as d, resolve_route as e, find_route as f, get_hooks as g, make_trackable as m, normalize_path as n, options as o, read_implementation as r, set_read_implementation as s, try_get_request_store as t, with_request_store as w };
917
- //# sourceMappingURL=internal-BNSUwl-r.js.map
917
+ //# sourceMappingURL=internal-CSnzBDeT.js.map