@openpalm/ui 0.11.0-rc.10

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 (339) hide show
  1. package/README.md +160 -0
  2. package/build/.openpalm-ui-version +1 -0
  3. package/build/client/_app/immutable/assets/0.p3iHeEvq.css +1 -0
  4. package/build/client/_app/immutable/assets/0.p3iHeEvq.css.br +0 -0
  5. package/build/client/_app/immutable/assets/0.p3iHeEvq.css.gz +0 -0
  6. package/build/client/_app/immutable/assets/4.BakrtzGF.css +1 -0
  7. package/build/client/_app/immutable/assets/4.BakrtzGF.css.br +0 -0
  8. package/build/client/_app/immutable/assets/4.BakrtzGF.css.gz +0 -0
  9. package/build/client/_app/immutable/assets/5.Cj0Mk9Gn.css +1 -0
  10. package/build/client/_app/immutable/assets/5.Cj0Mk9Gn.css.br +0 -0
  11. package/build/client/_app/immutable/assets/5.Cj0Mk9Gn.css.gz +0 -0
  12. package/build/client/_app/immutable/assets/6.B0Z8tVIH.css +1 -0
  13. package/build/client/_app/immutable/assets/6.B0Z8tVIH.css.br +1 -0
  14. package/build/client/_app/immutable/assets/6.B0Z8tVIH.css.gz +0 -0
  15. package/build/client/_app/immutable/assets/7.Cucah5cY.css +1 -0
  16. package/build/client/_app/immutable/assets/7.Cucah5cY.css.br +0 -0
  17. package/build/client/_app/immutable/assets/7.Cucah5cY.css.gz +0 -0
  18. package/build/client/_app/immutable/assets/8.DjrHy5wu.css +1 -0
  19. package/build/client/_app/immutable/assets/8.DjrHy5wu.css.br +0 -0
  20. package/build/client/_app/immutable/assets/8.DjrHy5wu.css.gz +0 -0
  21. package/build/client/_app/immutable/assets/AuthGate.B8fOC_pJ.css +1 -0
  22. package/build/client/_app/immutable/assets/AuthGate.B8fOC_pJ.css.br +0 -0
  23. package/build/client/_app/immutable/assets/AuthGate.B8fOC_pJ.css.gz +0 -0
  24. package/build/client/_app/immutable/assets/ModeSwitch.RmRIDur-.css +1 -0
  25. package/build/client/_app/immutable/assets/ModeSwitch.RmRIDur-.css.br +0 -0
  26. package/build/client/_app/immutable/assets/ModeSwitch.RmRIDur-.css.gz +0 -0
  27. package/build/client/_app/immutable/assets/VoiceProfileSelector.CM_o2XIa.css +1 -0
  28. package/build/client/_app/immutable/assets/VoiceProfileSelector.CM_o2XIa.css.br +0 -0
  29. package/build/client/_app/immutable/assets/VoiceProfileSelector.CM_o2XIa.css.gz +0 -0
  30. package/build/client/_app/immutable/chunks/BDFsK-cU.js +5 -0
  31. package/build/client/_app/immutable/chunks/BDFsK-cU.js.br +0 -0
  32. package/build/client/_app/immutable/chunks/BDFsK-cU.js.gz +0 -0
  33. package/build/client/_app/immutable/chunks/BOq4Y36A.js +1 -0
  34. package/build/client/_app/immutable/chunks/BOq4Y36A.js.br +0 -0
  35. package/build/client/_app/immutable/chunks/BOq4Y36A.js.gz +0 -0
  36. package/build/client/_app/immutable/chunks/Bdvti_5C.js +1 -0
  37. package/build/client/_app/immutable/chunks/Bdvti_5C.js.br +0 -0
  38. package/build/client/_app/immutable/chunks/Bdvti_5C.js.gz +0 -0
  39. package/build/client/_app/immutable/chunks/BuFlayix.js +1 -0
  40. package/build/client/_app/immutable/chunks/BuFlayix.js.br +0 -0
  41. package/build/client/_app/immutable/chunks/BuFlayix.js.gz +0 -0
  42. package/build/client/_app/immutable/chunks/BwTF6U35.js +3 -0
  43. package/build/client/_app/immutable/chunks/BwTF6U35.js.br +0 -0
  44. package/build/client/_app/immutable/chunks/BwTF6U35.js.gz +0 -0
  45. package/build/client/_app/immutable/chunks/CJkMgfFh.js +1 -0
  46. package/build/client/_app/immutable/chunks/CJkMgfFh.js.br +0 -0
  47. package/build/client/_app/immutable/chunks/CJkMgfFh.js.gz +0 -0
  48. package/build/client/_app/immutable/chunks/DQCVeARi.js +1 -0
  49. package/build/client/_app/immutable/chunks/DQCVeARi.js.br +0 -0
  50. package/build/client/_app/immutable/chunks/DQCVeARi.js.gz +0 -0
  51. package/build/client/_app/immutable/chunks/DpdFx-ph.js +1 -0
  52. package/build/client/_app/immutable/chunks/DpdFx-ph.js.br +0 -0
  53. package/build/client/_app/immutable/chunks/DpdFx-ph.js.gz +0 -0
  54. package/build/client/_app/immutable/chunks/kNaey6uv.js +1 -0
  55. package/build/client/_app/immutable/chunks/kNaey6uv.js.br +0 -0
  56. package/build/client/_app/immutable/chunks/kNaey6uv.js.gz +0 -0
  57. package/build/client/_app/immutable/chunks/os2NZ37U.js +1 -0
  58. package/build/client/_app/immutable/chunks/os2NZ37U.js.br +1 -0
  59. package/build/client/_app/immutable/chunks/os2NZ37U.js.gz +0 -0
  60. package/build/client/_app/immutable/chunks/xihTtKlq.js +1 -0
  61. package/build/client/_app/immutable/chunks/xihTtKlq.js.br +1 -0
  62. package/build/client/_app/immutable/chunks/xihTtKlq.js.gz +0 -0
  63. package/build/client/_app/immutable/entry/app.Coaz9qVz.js +2 -0
  64. package/build/client/_app/immutable/entry/app.Coaz9qVz.js.br +0 -0
  65. package/build/client/_app/immutable/entry/app.Coaz9qVz.js.gz +0 -0
  66. package/build/client/_app/immutable/entry/start.CaHQB6hU.js +1 -0
  67. package/build/client/_app/immutable/entry/start.CaHQB6hU.js.br +1 -0
  68. package/build/client/_app/immutable/entry/start.CaHQB6hU.js.gz +0 -0
  69. package/build/client/_app/immutable/nodes/0.BUaVTC13.js +1 -0
  70. package/build/client/_app/immutable/nodes/0.BUaVTC13.js.br +0 -0
  71. package/build/client/_app/immutable/nodes/0.BUaVTC13.js.gz +0 -0
  72. package/build/client/_app/immutable/nodes/1.DpM9NN8J.js +1 -0
  73. package/build/client/_app/immutable/nodes/1.DpM9NN8J.js.br +0 -0
  74. package/build/client/_app/immutable/nodes/1.DpM9NN8J.js.gz +0 -0
  75. package/build/client/_app/immutable/nodes/2.ojh8oE7F.js +1 -0
  76. package/build/client/_app/immutable/nodes/2.ojh8oE7F.js.br +0 -0
  77. package/build/client/_app/immutable/nodes/2.ojh8oE7F.js.gz +0 -0
  78. package/build/client/_app/immutable/nodes/3.DeAC3yVJ.js +1 -0
  79. package/build/client/_app/immutable/nodes/3.DeAC3yVJ.js.br +0 -0
  80. package/build/client/_app/immutable/nodes/3.DeAC3yVJ.js.gz +0 -0
  81. package/build/client/_app/immutable/nodes/4.8L-_wsn9.js +18 -0
  82. package/build/client/_app/immutable/nodes/4.8L-_wsn9.js.br +0 -0
  83. package/build/client/_app/immutable/nodes/4.8L-_wsn9.js.gz +0 -0
  84. package/build/client/_app/immutable/nodes/5.kb9iVd3S.js +4 -0
  85. package/build/client/_app/immutable/nodes/5.kb9iVd3S.js.br +0 -0
  86. package/build/client/_app/immutable/nodes/5.kb9iVd3S.js.gz +0 -0
  87. package/build/client/_app/immutable/nodes/6.DtmDzmki.js +1 -0
  88. package/build/client/_app/immutable/nodes/6.DtmDzmki.js.br +0 -0
  89. package/build/client/_app/immutable/nodes/6.DtmDzmki.js.gz +0 -0
  90. package/build/client/_app/immutable/nodes/7.-Pv5Qce0.js +15 -0
  91. package/build/client/_app/immutable/nodes/7.-Pv5Qce0.js.br +0 -0
  92. package/build/client/_app/immutable/nodes/7.-Pv5Qce0.js.gz +0 -0
  93. package/build/client/_app/immutable/nodes/8.Rc3xcFgu.js +2 -0
  94. package/build/client/_app/immutable/nodes/8.Rc3xcFgu.js.br +0 -0
  95. package/build/client/_app/immutable/nodes/8.Rc3xcFgu.js.gz +0 -0
  96. package/build/client/_app/version.json +1 -0
  97. package/build/client/_app/version.json.br +1 -0
  98. package/build/client/_app/version.json.gz +0 -0
  99. package/build/client/banner.png +0 -0
  100. package/build/client/fu-128.png +0 -0
  101. package/build/client/fu.png +0 -0
  102. package/build/client/logo-128.png +0 -0
  103. package/build/client/logo.png +0 -0
  104. package/build/client/setup/wizard.css +1639 -0
  105. package/build/client/setup/wizard.css.br +0 -0
  106. package/build/client/setup/wizard.css.gz +0 -0
  107. package/build/client/wizard-128.png +0 -0
  108. package/build/client/wizard.png +0 -0
  109. package/build/env.js +94 -0
  110. package/build/handler.js +1494 -0
  111. package/build/index.js +345 -0
  112. package/build/server/chunks/0-TTdZdv8o.js +9 -0
  113. package/build/server/chunks/0-TTdZdv8o.js.map +1 -0
  114. package/build/server/chunks/1-XPMbcj69.js +9 -0
  115. package/build/server/chunks/1-XPMbcj69.js.map +1 -0
  116. package/build/server/chunks/2-C2y4ydWU.js +9 -0
  117. package/build/server/chunks/2-C2y4ydWU.js.map +1 -0
  118. package/build/server/chunks/3-BgeGdVvT.js +23 -0
  119. package/build/server/chunks/3-BgeGdVvT.js.map +1 -0
  120. package/build/server/chunks/4-v8u4eatk.js +9 -0
  121. package/build/server/chunks/4-v8u4eatk.js.map +1 -0
  122. package/build/server/chunks/5-BkUoZ2K4.js +9 -0
  123. package/build/server/chunks/5-BkUoZ2K4.js.map +1 -0
  124. package/build/server/chunks/6-Cep4AGS2.js +9 -0
  125. package/build/server/chunks/6-Cep4AGS2.js.map +1 -0
  126. package/build/server/chunks/7-DOEFGynd.js +9 -0
  127. package/build/server/chunks/7-DOEFGynd.js.map +1 -0
  128. package/build/server/chunks/8-EJHw3wqt.js +9 -0
  129. package/build/server/chunks/8-EJHw3wqt.js.map +1 -0
  130. package/build/server/chunks/AuthGate-UhfWI3rb.js +741 -0
  131. package/build/server/chunks/AuthGate-UhfWI3rb.js.map +1 -0
  132. package/build/server/chunks/ModeSwitch-S3I-WINb.js +15 -0
  133. package/build/server/chunks/ModeSwitch-S3I-WINb.js.map +1 -0
  134. package/build/server/chunks/_helpers-B_lb4-jB.js +74 -0
  135. package/build/server/chunks/_helpers-B_lb4-jB.js.map +1 -0
  136. package/build/server/chunks/_layout.svelte-B93aaRP_.js +11 -0
  137. package/build/server/chunks/_layout.svelte-B93aaRP_.js.map +1 -0
  138. package/build/server/chunks/_layout.svelte-CcloHuB_.js +60 -0
  139. package/build/server/chunks/_layout.svelte-CcloHuB_.js.map +1 -0
  140. package/build/server/chunks/_page.svelte-9RQ3rYiU.js +69 -0
  141. package/build/server/chunks/_page.svelte-9RQ3rYiU.js.map +1 -0
  142. package/build/server/chunks/_page.svelte-BP2EdQl3.js +5 -0
  143. package/build/server/chunks/_page.svelte-BP2EdQl3.js.map +1 -0
  144. package/build/server/chunks/_page.svelte-CKARhLvT.js +408 -0
  145. package/build/server/chunks/_page.svelte-CKARhLvT.js.map +1 -0
  146. package/build/server/chunks/_page.svelte-CnZsPxgJ.js +5540 -0
  147. package/build/server/chunks/_page.svelte-CnZsPxgJ.js.map +1 -0
  148. package/build/server/chunks/_page.svelte-D0gMlmzQ.js +104 -0
  149. package/build/server/chunks/_page.svelte-D0gMlmzQ.js.map +1 -0
  150. package/build/server/chunks/_page.svelte-pxsCzB7-.js +106 -0
  151. package/build/server/chunks/_page.svelte-pxsCzB7-.js.map +1 -0
  152. package/build/server/chunks/_server.ts-33LuQvHu.js +19 -0
  153. package/build/server/chunks/_server.ts-33LuQvHu.js.map +1 -0
  154. package/build/server/chunks/_server.ts-5CjguYY3.js +514 -0
  155. package/build/server/chunks/_server.ts-5CjguYY3.js.map +1 -0
  156. package/build/server/chunks/_server.ts-B3tjtq2m.js +64 -0
  157. package/build/server/chunks/_server.ts-B3tjtq2m.js.map +1 -0
  158. package/build/server/chunks/_server.ts-B4N5gO26.js +70 -0
  159. package/build/server/chunks/_server.ts-B4N5gO26.js.map +1 -0
  160. package/build/server/chunks/_server.ts-B6FENZO7.js +82 -0
  161. package/build/server/chunks/_server.ts-B6FENZO7.js.map +1 -0
  162. package/build/server/chunks/_server.ts-B8JtVHLy.js +41 -0
  163. package/build/server/chunks/_server.ts-B8JtVHLy.js.map +1 -0
  164. package/build/server/chunks/_server.ts-BR9OrjcE.js +68 -0
  165. package/build/server/chunks/_server.ts-BR9OrjcE.js.map +1 -0
  166. package/build/server/chunks/_server.ts-BYVcXj0z.js +107 -0
  167. package/build/server/chunks/_server.ts-BYVcXj0z.js.map +1 -0
  168. package/build/server/chunks/_server.ts-BYdXdnje.js +97 -0
  169. package/build/server/chunks/_server.ts-BYdXdnje.js.map +1 -0
  170. package/build/server/chunks/_server.ts-BaxRyhZ8.js +44 -0
  171. package/build/server/chunks/_server.ts-BaxRyhZ8.js.map +1 -0
  172. package/build/server/chunks/_server.ts-BclZ3UFT.js +41 -0
  173. package/build/server/chunks/_server.ts-BclZ3UFT.js.map +1 -0
  174. package/build/server/chunks/_server.ts-Bd_I8GjG.js +60 -0
  175. package/build/server/chunks/_server.ts-Bd_I8GjG.js.map +1 -0
  176. package/build/server/chunks/_server.ts-Bdry_CdG.js +33 -0
  177. package/build/server/chunks/_server.ts-Bdry_CdG.js.map +1 -0
  178. package/build/server/chunks/_server.ts-Bg8OpPuA.js +65 -0
  179. package/build/server/chunks/_server.ts-Bg8OpPuA.js.map +1 -0
  180. package/build/server/chunks/_server.ts-BjrO7pvn.js +73 -0
  181. package/build/server/chunks/_server.ts-BjrO7pvn.js.map +1 -0
  182. package/build/server/chunks/_server.ts-BkoJOqrr.js +70 -0
  183. package/build/server/chunks/_server.ts-BkoJOqrr.js.map +1 -0
  184. package/build/server/chunks/_server.ts-Bl0YOh50.js +40 -0
  185. package/build/server/chunks/_server.ts-Bl0YOh50.js.map +1 -0
  186. package/build/server/chunks/_server.ts-BmZlEy27.js +55 -0
  187. package/build/server/chunks/_server.ts-BmZlEy27.js.map +1 -0
  188. package/build/server/chunks/_server.ts-Bq2S1OMq.js +163 -0
  189. package/build/server/chunks/_server.ts-Bq2S1OMq.js.map +1 -0
  190. package/build/server/chunks/_server.ts-BwHojI4i.js +59 -0
  191. package/build/server/chunks/_server.ts-BwHojI4i.js.map +1 -0
  192. package/build/server/chunks/_server.ts-C-lN2ZUO.js +33 -0
  193. package/build/server/chunks/_server.ts-C-lN2ZUO.js.map +1 -0
  194. package/build/server/chunks/_server.ts-C1DcK_rP.js +200 -0
  195. package/build/server/chunks/_server.ts-C1DcK_rP.js.map +1 -0
  196. package/build/server/chunks/_server.ts-C1y3X6iK.js +52 -0
  197. package/build/server/chunks/_server.ts-C1y3X6iK.js.map +1 -0
  198. package/build/server/chunks/_server.ts-C5s-OXCm.js +79 -0
  199. package/build/server/chunks/_server.ts-C5s-OXCm.js.map +1 -0
  200. package/build/server/chunks/_server.ts-CAKTZL2t.js +63 -0
  201. package/build/server/chunks/_server.ts-CAKTZL2t.js.map +1 -0
  202. package/build/server/chunks/_server.ts-CDtOOD3Q.js +83 -0
  203. package/build/server/chunks/_server.ts-CDtOOD3Q.js.map +1 -0
  204. package/build/server/chunks/_server.ts-CG409cWi.js +46 -0
  205. package/build/server/chunks/_server.ts-CG409cWi.js.map +1 -0
  206. package/build/server/chunks/_server.ts-CJL8da0o.js +56 -0
  207. package/build/server/chunks/_server.ts-CJL8da0o.js.map +1 -0
  208. package/build/server/chunks/_server.ts-CLBKpKeH.js +204 -0
  209. package/build/server/chunks/_server.ts-CLBKpKeH.js.map +1 -0
  210. package/build/server/chunks/_server.ts-CLiYOnOv.js +50 -0
  211. package/build/server/chunks/_server.ts-CLiYOnOv.js.map +1 -0
  212. package/build/server/chunks/_server.ts-CMvY0ZDz.js +101 -0
  213. package/build/server/chunks/_server.ts-CMvY0ZDz.js.map +1 -0
  214. package/build/server/chunks/_server.ts-CQqURrHY.js +41 -0
  215. package/build/server/chunks/_server.ts-CQqURrHY.js.map +1 -0
  216. package/build/server/chunks/_server.ts-CSgPjCYv.js +79 -0
  217. package/build/server/chunks/_server.ts-CSgPjCYv.js.map +1 -0
  218. package/build/server/chunks/_server.ts-C_fNO73y.js +44 -0
  219. package/build/server/chunks/_server.ts-C_fNO73y.js.map +1 -0
  220. package/build/server/chunks/_server.ts-CcTt5aAs.js +41 -0
  221. package/build/server/chunks/_server.ts-CcTt5aAs.js.map +1 -0
  222. package/build/server/chunks/_server.ts-CfLbEufw.js +53 -0
  223. package/build/server/chunks/_server.ts-CfLbEufw.js.map +1 -0
  224. package/build/server/chunks/_server.ts-CqHMhINi.js +53 -0
  225. package/build/server/chunks/_server.ts-CqHMhINi.js.map +1 -0
  226. package/build/server/chunks/_server.ts-CrU9r7-F.js +88 -0
  227. package/build/server/chunks/_server.ts-CrU9r7-F.js.map +1 -0
  228. package/build/server/chunks/_server.ts-CtZuKotA.js +70 -0
  229. package/build/server/chunks/_server.ts-CtZuKotA.js.map +1 -0
  230. package/build/server/chunks/_server.ts-D-sjM5kn.js +103 -0
  231. package/build/server/chunks/_server.ts-D-sjM5kn.js.map +1 -0
  232. package/build/server/chunks/_server.ts-D2wlMMJl.js +41 -0
  233. package/build/server/chunks/_server.ts-D2wlMMJl.js.map +1 -0
  234. package/build/server/chunks/_server.ts-D7L27_xI.js +65 -0
  235. package/build/server/chunks/_server.ts-D7L27_xI.js.map +1 -0
  236. package/build/server/chunks/_server.ts-DMKIHwKi.js +90 -0
  237. package/build/server/chunks/_server.ts-DMKIHwKi.js.map +1 -0
  238. package/build/server/chunks/_server.ts-DTyZan5L.js +33 -0
  239. package/build/server/chunks/_server.ts-DTyZan5L.js.map +1 -0
  240. package/build/server/chunks/_server.ts-DVekHgMN.js +96 -0
  241. package/build/server/chunks/_server.ts-DVekHgMN.js.map +1 -0
  242. package/build/server/chunks/_server.ts-DWLkr6Qg.js +54 -0
  243. package/build/server/chunks/_server.ts-DWLkr6Qg.js.map +1 -0
  244. package/build/server/chunks/_server.ts-DWN6TJv0.js +149 -0
  245. package/build/server/chunks/_server.ts-DWN6TJv0.js.map +1 -0
  246. package/build/server/chunks/_server.ts-D_dO8hvJ.js +56 -0
  247. package/build/server/chunks/_server.ts-D_dO8hvJ.js.map +1 -0
  248. package/build/server/chunks/_server.ts-Da9y6lio.js +82 -0
  249. package/build/server/chunks/_server.ts-Da9y6lio.js.map +1 -0
  250. package/build/server/chunks/_server.ts-DbO3cg55.js +54 -0
  251. package/build/server/chunks/_server.ts-DbO3cg55.js.map +1 -0
  252. package/build/server/chunks/_server.ts-DclRsTpW.js +44 -0
  253. package/build/server/chunks/_server.ts-DclRsTpW.js.map +1 -0
  254. package/build/server/chunks/_server.ts-DdlF1vjy.js +159 -0
  255. package/build/server/chunks/_server.ts-DdlF1vjy.js.map +1 -0
  256. package/build/server/chunks/_server.ts-De7IOs2z.js +759 -0
  257. package/build/server/chunks/_server.ts-De7IOs2z.js.map +1 -0
  258. package/build/server/chunks/_server.ts-DmyOp1yq.js +40 -0
  259. package/build/server/chunks/_server.ts-DmyOp1yq.js.map +1 -0
  260. package/build/server/chunks/_server.ts-DnKTcT9x.js +46 -0
  261. package/build/server/chunks/_server.ts-DnKTcT9x.js.map +1 -0
  262. package/build/server/chunks/_server.ts-Dq82kHyx.js +72 -0
  263. package/build/server/chunks/_server.ts-Dq82kHyx.js.map +1 -0
  264. package/build/server/chunks/_server.ts-DqVJ1NqI.js +55 -0
  265. package/build/server/chunks/_server.ts-DqVJ1NqI.js.map +1 -0
  266. package/build/server/chunks/_server.ts-DzWtvjem.js +46 -0
  267. package/build/server/chunks/_server.ts-DzWtvjem.js.map +1 -0
  268. package/build/server/chunks/_server.ts-EZS5Qan4.js +62 -0
  269. package/build/server/chunks/_server.ts-EZS5Qan4.js.map +1 -0
  270. package/build/server/chunks/_server.ts-I0iKpsyr.js +77 -0
  271. package/build/server/chunks/_server.ts-I0iKpsyr.js.map +1 -0
  272. package/build/server/chunks/_server.ts-P4pmd9NX.js +55 -0
  273. package/build/server/chunks/_server.ts-P4pmd9NX.js.map +1 -0
  274. package/build/server/chunks/_server.ts-UF_kxNaU.js +79 -0
  275. package/build/server/chunks/_server.ts-UF_kxNaU.js.map +1 -0
  276. package/build/server/chunks/_server.ts-b3mVtmkb.js +121 -0
  277. package/build/server/chunks/_server.ts-b3mVtmkb.js.map +1 -0
  278. package/build/server/chunks/_server.ts-dhkEt2p6.js +63 -0
  279. package/build/server/chunks/_server.ts-dhkEt2p6.js.map +1 -0
  280. package/build/server/chunks/_server.ts-eK_9jY-9.js +67 -0
  281. package/build/server/chunks/_server.ts-eK_9jY-9.js.map +1 -0
  282. package/build/server/chunks/_server.ts-fsEmx9mw.js +42 -0
  283. package/build/server/chunks/_server.ts-fsEmx9mw.js.map +1 -0
  284. package/build/server/chunks/_server.ts-l4CK3c4j.js +109 -0
  285. package/build/server/chunks/_server.ts-l4CK3c4j.js.map +1 -0
  286. package/build/server/chunks/_server.ts-otJRaSSq.js +139 -0
  287. package/build/server/chunks/_server.ts-otJRaSSq.js.map +1 -0
  288. package/build/server/chunks/_server.ts-rXhjnBtw.js +49 -0
  289. package/build/server/chunks/_server.ts-rXhjnBtw.js.map +1 -0
  290. package/build/server/chunks/_server.ts-wZ88P3nX.js +157 -0
  291. package/build/server/chunks/_server.ts-wZ88P3nX.js.map +1 -0
  292. package/build/server/chunks/_server.ts-xO4nhxDx.js +60 -0
  293. package/build/server/chunks/_server.ts-xO4nhxDx.js.map +1 -0
  294. package/build/server/chunks/_server.ts-yimewsjO.js +57 -0
  295. package/build/server/chunks/_server.ts-yimewsjO.js.map +1 -0
  296. package/build/server/chunks/addon-helpers-BpnH-GEc.js +49 -0
  297. package/build/server/chunks/addon-helpers-BpnH-GEc.js.map +1 -0
  298. package/build/server/chunks/chunk-CLZ62Ad-.js +18 -0
  299. package/build/server/chunks/chunk-CLZ62Ad-.js.map +1 -0
  300. package/build/server/chunks/coercion-TNFJisCC.js +34 -0
  301. package/build/server/chunks/coercion-TNFJisCC.js.map +1 -0
  302. package/build/server/chunks/config-0LFudKuE.js +121 -0
  303. package/build/server/chunks/config-0LFudKuE.js.map +1 -0
  304. package/build/server/chunks/dev-DjANv7AF.js +4389 -0
  305. package/build/server/chunks/dev-DjANv7AF.js.map +1 -0
  306. package/build/server/chunks/docker-B23w4kr6.js +20 -0
  307. package/build/server/chunks/docker-B23w4kr6.js.map +1 -0
  308. package/build/server/chunks/endpoints-Drq_J-2Z.js +340 -0
  309. package/build/server/chunks/endpoints-Drq_J-2Z.js.map +1 -0
  310. package/build/server/chunks/error.svelte-ByNznOuj.js +16 -0
  311. package/build/server/chunks/error.svelte-ByNznOuj.js.map +1 -0
  312. package/build/server/chunks/exports-D1quPX8S.js +124 -0
  313. package/build/server/chunks/exports-D1quPX8S.js.map +1 -0
  314. package/build/server/chunks/helpers-CX6xRBmt.js +226 -0
  315. package/build/server/chunks/helpers-CX6xRBmt.js.map +1 -0
  316. package/build/server/chunks/hooks.server-BEVMYNQ4.js +86 -0
  317. package/build/server/chunks/hooks.server-BEVMYNQ4.js.map +1 -0
  318. package/build/server/chunks/http-VqOG8hyj.js +31 -0
  319. package/build/server/chunks/http-VqOG8hyj.js.map +1 -0
  320. package/build/server/chunks/internal-CeK24Lte.js +1544 -0
  321. package/build/server/chunks/internal-CeK24Lte.js.map +1 -0
  322. package/build/server/chunks/serial-queue-D9FEpYVv.js +22 -0
  323. package/build/server/chunks/serial-queue-D9FEpYVv.js.map +1 -0
  324. package/build/server/chunks/setup-deploy-B4oSSFYi.js +529 -0
  325. package/build/server/chunks/setup-deploy-B4oSSFYi.js.map +1 -0
  326. package/build/server/chunks/src-BkvQ5Uuf.js +14082 -0
  327. package/build/server/chunks/src-BkvQ5Uuf.js.map +1 -0
  328. package/build/server/chunks/state-D7JS-l_D.js +203 -0
  329. package/build/server/chunks/state-D7JS-l_D.js.map +1 -0
  330. package/build/server/chunks/theme-state.svelte-PtPMmKGN.js +520 -0
  331. package/build/server/chunks/theme-state.svelte-PtPMmKGN.js.map +1 -0
  332. package/build/server/chunks/utils-BSRjJDrZ.js +150 -0
  333. package/build/server/chunks/utils-BSRjJDrZ.js.map +1 -0
  334. package/build/server/index.js +4389 -0
  335. package/build/server/index.js.map +1 -0
  336. package/build/server/manifest.js +584 -0
  337. package/build/server/manifest.js.map +1 -0
  338. package/build/shims.js +32 -0
  339. package/package.json +68 -0
@@ -0,0 +1,55 @@
1
+ import { g as getActiveEndpoint } from './endpoints-Drq_J-2Z.js';
2
+ import { d as getRequestId, r as requireAdmin, h as jsonResponse } from './helpers-CX6xRBmt.js';
3
+ import './src-BkvQ5Uuf.js';
4
+ import './chunk-CLZ62Ad-.js';
5
+ import 'node:module';
6
+ import 'node:fs';
7
+ import 'node:path';
8
+ import 'node:child_process';
9
+ import 'node:os';
10
+ import 'buffer';
11
+ import 'node:url';
12
+ import 'node:crypto';
13
+ import 'events';
14
+ import 'fs';
15
+ import 'node:events';
16
+ import 'node:stream';
17
+ import 'node:string_decoder';
18
+ import 'path';
19
+ import 'assert';
20
+ import 'zlib';
21
+ import 'node:assert';
22
+ import 'node:fs/promises';
23
+
24
+ //#region src/routes/admin/health/+server.ts
25
+ var GET = async (event) => {
26
+ const requestId = getRequestId(event);
27
+ const authError = requireAdmin(event, requestId);
28
+ if (authError) return authError;
29
+ const endpoint = getActiveEndpoint();
30
+ let opencode = false;
31
+ try {
32
+ const headers = {};
33
+ if (endpoint.password) {
34
+ const user = endpoint.username || "openpalm";
35
+ headers["authorization"] = `Basic ${btoa(`${user}:${endpoint.password}`)}`;
36
+ }
37
+ opencode = (await fetch(`${endpoint.url}/health`, {
38
+ headers,
39
+ signal: AbortSignal.timeout(2e3)
40
+ })).ok;
41
+ } catch {}
42
+ return jsonResponse(200, {
43
+ ok: true,
44
+ opencode,
45
+ endpoint: {
46
+ id: endpoint.id,
47
+ label: endpoint.label,
48
+ url: endpoint.url,
49
+ isDefault: endpoint.isDefault
50
+ }
51
+ }, requestId);
52
+ };
53
+
54
+ export { GET };
55
+ //# sourceMappingURL=_server.ts-P4pmd9NX.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_server.ts-P4pmd9NX.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/admin/health/_server.ts.js"],"sourcesContent":["import { r as getActiveEndpoint } from \"../../../../chunks/endpoints.js\";\nimport { d as requireAdmin, l as jsonResponse, o as getRequestId } from \"../../../../chunks/helpers.js\";\n//#region src/routes/admin/health/+server.ts\nvar GET = async (event) => {\n\tconst requestId = getRequestId(event);\n\tconst authError = requireAdmin(event, requestId);\n\tif (authError) return authError;\n\tconst endpoint = getActiveEndpoint();\n\tlet opencode = false;\n\ttry {\n\t\tconst headers = {};\n\t\tif (endpoint.password) {\n\t\t\tconst user = endpoint.username || \"openpalm\";\n\t\t\theaders[\"authorization\"] = `Basic ${btoa(`${user}:${endpoint.password}`)}`;\n\t\t}\n\t\topencode = (await fetch(`${endpoint.url}/health`, {\n\t\t\theaders,\n\t\t\tsignal: AbortSignal.timeout(2e3)\n\t\t})).ok;\n\t} catch {}\n\treturn jsonResponse(200, {\n\t\tok: true,\n\t\topencode,\n\t\tendpoint: {\n\t\t\tid: endpoint.id,\n\t\t\tlabel: endpoint.label,\n\t\t\turl: endpoint.url,\n\t\t\tisDefault: endpoint.isDefault\n\t\t}\n\t}, requestId);\n};\n//#endregion\nexport { GET };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAEA;AACG,IAAC,GAAG,GAAG,OAAO,KAAK,KAAK;AAC3B,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC;AACtC,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC;AACjD,CAAC,IAAI,SAAS,EAAE,OAAO,SAAS;AAChC,CAAC,MAAM,QAAQ,GAAG,iBAAiB,EAAE;AACrC,CAAC,IAAI,QAAQ,GAAG,KAAK;AACrB,CAAC,IAAI;AACL,EAAE,MAAM,OAAO,GAAG,EAAE;AACpB,EAAE,IAAI,QAAQ,CAAC,QAAQ,EAAE;AACzB,GAAG,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,IAAI,UAAU;AAC/C,GAAG,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7E,EAAE;AACF,EAAE,QAAQ,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;AACpD,GAAG,OAAO;AACV,GAAG,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG;AAClC,GAAG,CAAC,EAAE,EAAE;AACR,CAAC,CAAC,CAAC,MAAM,CAAC;AACV,CAAC,OAAO,YAAY,CAAC,GAAG,EAAE;AAC1B,EAAE,EAAE,EAAE,IAAI;AACV,EAAE,QAAQ;AACV,EAAE,QAAQ,EAAE;AACZ,GAAG,EAAE,EAAE,QAAQ,CAAC,EAAE;AAClB,GAAG,KAAK,EAAE,QAAQ,CAAC,KAAK;AACxB,GAAG,GAAG,EAAE,QAAQ,CAAC,GAAG;AACpB,GAAG,SAAS,EAAE,QAAQ,CAAC;AACvB;AACA,EAAE,EAAE,SAAS,CAAC;AACd;;;;"}
@@ -0,0 +1,79 @@
1
+ import { j as json } from './exports-D1quPX8S.js';
2
+ import { i as authJsonPath } from './src-BkvQ5Uuf.js';
3
+ import { b as getState } from './endpoints-Drq_J-2Z.js';
4
+ import { g as getOpenCodeClient } from './helpers-CX6xRBmt.js';
5
+ import { existsSync, readFileSync } from 'node:fs';
6
+ import './utils-BSRjJDrZ.js';
7
+ import './chunk-CLZ62Ad-.js';
8
+ import 'node:module';
9
+ import 'node:path';
10
+ import 'node:child_process';
11
+ import 'node:os';
12
+ import 'buffer';
13
+ import 'node:url';
14
+ import 'node:crypto';
15
+ import 'events';
16
+ import 'fs';
17
+ import 'node:events';
18
+ import 'node:stream';
19
+ import 'node:string_decoder';
20
+ import 'path';
21
+ import 'assert';
22
+ import 'zlib';
23
+ import 'node:assert';
24
+ import 'node:fs/promises';
25
+
26
+ //#region src/routes/api/setup/opencode/providers/+server.ts
27
+ function selectedModels() {
28
+ try {
29
+ const path = `${getState().configDir}/assistant/opencode.json`;
30
+ if (!existsSync(path)) return {};
31
+ const data = JSON.parse(readFileSync(path, "utf-8"));
32
+ return {
33
+ ...typeof data.model === "string" && data.model ? { llm: data.model } : {},
34
+ ...typeof data.small_model === "string" && data.small_model ? { small: data.small_model } : {}
35
+ };
36
+ } catch {
37
+ return {};
38
+ }
39
+ }
40
+ /** Providers that have credentials stored in OP_HOME auth.json (API key or OAuth). */
41
+ function authJsonConnected() {
42
+ try {
43
+ const path = authJsonPath(getState());
44
+ if (!existsSync(path)) return [];
45
+ const data = JSON.parse(readFileSync(path, "utf-8"));
46
+ return Object.keys(data ?? {});
47
+ } catch {
48
+ return [];
49
+ }
50
+ }
51
+ var GET = async () => {
52
+ try {
53
+ const client = getOpenCodeClient();
54
+ if (!await client.isAvailable()) return json({
55
+ ok: true,
56
+ available: false,
57
+ providers: []
58
+ });
59
+ const [catalog, auth] = await Promise.all([client.proxy("/provider"), client.getProviderAuth()]);
60
+ const raw = catalog.ok ? catalog.data : {};
61
+ return json({
62
+ ok: true,
63
+ available: true,
64
+ providers: Array.isArray(raw.all) ? raw.all : [],
65
+ auth,
66
+ connected: Array.from(new Set([...raw.connected ?? [], ...authJsonConnected()])),
67
+ selectedModels: selectedModels()
68
+ });
69
+ } catch {
70
+ return json({
71
+ ok: true,
72
+ available: false,
73
+ providers: []
74
+ });
75
+ }
76
+ };
77
+
78
+ export { GET };
79
+ //# sourceMappingURL=_server.ts-UF_kxNaU.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_server.ts-UF_kxNaU.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/setup/opencode/providers/_server.ts.js"],"sourcesContent":["import { r as json } from \"../../../../../../chunks/exports.js\";\nimport { Et as authJsonPath } from \"../../../../../../chunks/src.js\";\nimport { c as getState } from \"../../../../../../chunks/endpoints.js\";\nimport { a as getOpenCodeClient } from \"../../../../../../chunks/helpers.js\";\nimport { existsSync, readFileSync } from \"node:fs\";\n//#region src/routes/api/setup/opencode/providers/+server.ts\nfunction selectedModels() {\n\ttry {\n\t\tconst path = `${getState().configDir}/assistant/opencode.json`;\n\t\tif (!existsSync(path)) return {};\n\t\tconst data = JSON.parse(readFileSync(path, \"utf-8\"));\n\t\treturn {\n\t\t\t...typeof data.model === \"string\" && data.model ? { llm: data.model } : {},\n\t\t\t...typeof data.small_model === \"string\" && data.small_model ? { small: data.small_model } : {}\n\t\t};\n\t} catch {\n\t\treturn {};\n\t}\n}\n/** Providers that have credentials stored in OP_HOME auth.json (API key or OAuth). */\nfunction authJsonConnected() {\n\ttry {\n\t\tconst path = authJsonPath(getState());\n\t\tif (!existsSync(path)) return [];\n\t\tconst data = JSON.parse(readFileSync(path, \"utf-8\"));\n\t\treturn Object.keys(data ?? {});\n\t} catch {\n\t\treturn [];\n\t}\n}\nvar GET = async () => {\n\ttry {\n\t\tconst client = getOpenCodeClient();\n\t\tif (!await client.isAvailable()) return json({\n\t\t\tok: true,\n\t\t\tavailable: false,\n\t\t\tproviders: []\n\t\t});\n\t\tconst [catalog, auth] = await Promise.all([client.proxy(\"/provider\"), client.getProviderAuth()]);\n\t\tconst raw = catalog.ok ? catalog.data : {};\n\t\treturn json({\n\t\t\tok: true,\n\t\t\tavailable: true,\n\t\t\tproviders: Array.isArray(raw.all) ? raw.all : [],\n\t\t\tauth,\n\t\t\tconnected: Array.from(new Set([...raw.connected ?? [], ...authJsonConnected()])),\n\t\t\tselectedModels: selectedModels()\n\t\t});\n\t} catch {\n\t\treturn json({\n\t\t\tok: true,\n\t\t\tavailable: false,\n\t\t\tproviders: []\n\t\t});\n\t}\n};\n//#endregion\nexport { GET };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAKA;AACA,SAAS,cAAc,GAAG;AAC1B,CAAC,IAAI;AACL,EAAE,MAAM,IAAI,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,wBAAwB,CAAC;AAChE,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE;AAClC,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACtD,EAAE,OAAO;AACT,GAAG,GAAG,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE;AAC7E,GAAG,GAAG,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,IAAI,IAAI,CAAC,WAAW,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,GAAG;AAC/F,GAAG;AACH,CAAC,CAAC,CAAC,MAAM;AACT,EAAE,OAAO,EAAE;AACX,CAAC;AACD;AACA;AACA,SAAS,iBAAiB,GAAG;AAC7B,CAAC,IAAI;AACL,EAAE,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC;AACvC,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE;AAClC,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACtD,EAAE,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;AAChC,CAAC,CAAC,CAAC,MAAM;AACT,EAAE,OAAO,EAAE;AACX,CAAC;AACD;AACG,IAAC,GAAG,GAAG,YAAY;AACtB,CAAC,IAAI;AACL,EAAE,MAAM,MAAM,GAAG,iBAAiB,EAAE;AACpC,EAAE,IAAI,CAAC,MAAM,MAAM,CAAC,WAAW,EAAE,EAAE,OAAO,IAAI,CAAC;AAC/C,GAAG,EAAE,EAAE,IAAI;AACX,GAAG,SAAS,EAAE,KAAK;AACnB,GAAG,SAAS,EAAE;AACd,GAAG,CAAC;AACJ,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC;AAClG,EAAE,MAAM,GAAG,GAAG,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,GAAG,EAAE;AAC5C,EAAE,OAAO,IAAI,CAAC;AACd,GAAG,EAAE,EAAE,IAAI;AACX,GAAG,SAAS,EAAE,IAAI;AAClB,GAAG,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE;AACnD,GAAG,IAAI;AACP,GAAG,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,SAAS,IAAI,EAAE,EAAE,GAAG,iBAAiB,EAAE,CAAC,CAAC,CAAC;AACnF,GAAG,cAAc,EAAE,cAAc;AACjC,GAAG,CAAC;AACJ,CAAC,CAAC,CAAC,MAAM;AACT,EAAE,OAAO,IAAI,CAAC;AACd,GAAG,EAAE,EAAE,IAAI;AACX,GAAG,SAAS,EAAE,KAAK;AACnB,GAAG,SAAS,EAAE;AACd,GAAG,CAAC;AACJ,CAAC;AACD;;;;"}
@@ -0,0 +1,121 @@
1
+ import { j as json } from './exports-D1quPX8S.js';
2
+ import { aa as readStackEnv, ac as readStackSecretEnv, b as annotateAddonProfileAvailability, R as getAddonProfiles, Q as getAddonProfileSelection, a0 as listEnabledAddonIds } from './src-BkvQ5Uuf.js';
3
+ import { b as getState } from './endpoints-Drq_J-2Z.js';
4
+ import { r as requireAdmin, d as getRequestId, f as getUiLoginPassword } from './helpers-CX6xRBmt.js';
5
+ import { existsSync, readFileSync } from 'node:fs';
6
+ import { join } from 'node:path';
7
+ import './utils-BSRjJDrZ.js';
8
+ import './chunk-CLZ62Ad-.js';
9
+ import 'node:module';
10
+ import 'node:child_process';
11
+ import 'node:os';
12
+ import 'buffer';
13
+ import 'node:url';
14
+ import 'node:crypto';
15
+ import 'events';
16
+ import 'fs';
17
+ import 'node:events';
18
+ import 'node:stream';
19
+ import 'node:string_decoder';
20
+ import 'path';
21
+ import 'assert';
22
+ import 'zlib';
23
+ import 'node:assert';
24
+ import 'node:fs/promises';
25
+
26
+ //#region src/routes/api/setup/current-config/+server.ts
27
+ function readAkmConfig(configDir) {
28
+ const path = join(configDir, "akm", "config.json");
29
+ if (!existsSync(path)) return {};
30
+ try {
31
+ return JSON.parse(readFileSync(path, "utf-8"));
32
+ } catch {
33
+ return {};
34
+ }
35
+ }
36
+ function deriveBaseUrl(endpoint) {
37
+ if (!endpoint) return "";
38
+ return endpoint.replace(/\/chat\/completions\/?$/, "").replace(/\/embeddings\/?$/, "").replace(/\/+$/, "");
39
+ }
40
+ var GET = async (event) => {
41
+ const authError = requireAdmin(event, getRequestId(event));
42
+ if (authError) return authError;
43
+ const state = getState();
44
+ const configured = getUiLoginPassword();
45
+ const env = readStackEnv(state.stackDir);
46
+ const secretEnv = readStackSecretEnv(state.stackDir);
47
+ const akm = readAkmConfig(state.configDir);
48
+ const voiceProfiles = await annotateAddonProfileAvailability(getAddonProfiles(state.homeDir, "voice"));
49
+ const selectedVoiceProfile = getAddonProfileSelection(state.stackDir, "voice");
50
+ const ollamaProfiles = await annotateAddonProfileAvailability(getAddonProfiles(state.homeDir, "ollama"));
51
+ const selectedOllamaProfile = getAddonProfileSelection(state.stackDir, "ollama");
52
+ const hostHome = process.env.HOME ?? process.env.USERPROFILE ?? "";
53
+ const hostAkm = !!hostHome && env.OP_AKM_STASH === `${hostHome}/akm` && env.OP_AKM_CONFIG === `${hostHome}/.config/akm`;
54
+ const meta = (envKey) => ({
55
+ envKey,
56
+ present: Boolean(secretEnv[envKey])
57
+ });
58
+ const discord = {};
59
+ for (const [field, envKey] of Object.entries({
60
+ botToken: "DISCORD_BOT_TOKEN",
61
+ applicationId: "DISCORD_APPLICATION_ID",
62
+ registerCommands: "DISCORD_REGISTER_COMMANDS",
63
+ allowedGuilds: "DISCORD_ALLOWED_GUILDS",
64
+ allowedRoles: "DISCORD_ALLOWED_ROLES",
65
+ allowedUsers: "DISCORD_ALLOWED_USERS",
66
+ blockedUsers: "DISCORD_BLOCKED_USERS"
67
+ })) if (secretEnv[envKey]) discord[field] = meta(envKey);
68
+ const slack = {};
69
+ for (const [field, envKey] of Object.entries({
70
+ slackBotToken: "SLACK_BOT_TOKEN",
71
+ slackAppToken: "SLACK_APP_TOKEN",
72
+ allowedChannels: "SLACK_ALLOWED_CHANNELS",
73
+ allowedUsers: "SLACK_ALLOWED_USERS",
74
+ blockedUsers: "SLACK_BLOCKED_USERS"
75
+ })) if (secretEnv[envKey]) slack[field] = meta(envKey);
76
+ const channelCredentials = {};
77
+ if (Object.keys(discord).length > 0) channelCredentials.discord = discord;
78
+ if (Object.keys(slack).length > 0) channelCredentials.slack = slack;
79
+ return json({
80
+ ok: true,
81
+ hasPassword: typeof configured === "string" && configured.length > 0,
82
+ imageTag: env.OP_IMAGE_TAG ?? "",
83
+ hostAkm,
84
+ llm: akm.llm ? {
85
+ provider: akm.llm.provider ?? "",
86
+ model: akm.llm.model ?? "",
87
+ baseUrl: deriveBaseUrl(akm.llm.endpoint)
88
+ } : null,
89
+ embedding: akm.embedding ? {
90
+ provider: akm.embedding.provider ?? "",
91
+ model: akm.embedding.model ?? "",
92
+ dims: akm.embedding.dimension ?? 0,
93
+ baseUrl: deriveBaseUrl(akm.embedding.endpoint)
94
+ } : null,
95
+ voice: {
96
+ tts: {
97
+ engine: env.OP_TTS_ENGINE ?? "",
98
+ baseURL: env.OP_TTS_BASE_URL ?? "",
99
+ model: env.OP_TTS_MODEL ?? "",
100
+ voice: env.OP_TTS_VOICE ?? ""
101
+ },
102
+ stt: {
103
+ engine: env.OP_STT_ENGINE ?? "",
104
+ baseURL: env.OP_STT_BASE_URL ?? "",
105
+ model: env.OP_STT_MODEL ?? "",
106
+ language: env.OP_STT_LANGUAGE ?? ""
107
+ },
108
+ profiles: voiceProfiles,
109
+ selectedProfile: selectedVoiceProfile
110
+ },
111
+ ollama: {
112
+ profiles: ollamaProfiles,
113
+ selectedProfile: selectedOllamaProfile
114
+ },
115
+ enabledAddons: listEnabledAddonIds(state.homeDir),
116
+ channelCredentials
117
+ });
118
+ };
119
+
120
+ export { GET };
121
+ //# sourceMappingURL=_server.ts-b3mVtmkb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_server.ts-b3mVtmkb.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/setup/current-config/_server.ts.js"],"sourcesContent":["import { r as json } from \"../../../../../chunks/exports.js\";\nimport { et as annotateAddonProfileAvailability, gt as readStackEnv, nt as getAddonProfileSelection, rt as getAddonProfiles, st as listEnabledAddonIds, vt as readStackSecretEnv } from \"../../../../../chunks/src.js\";\nimport { c as getState } from \"../../../../../chunks/endpoints.js\";\nimport { d as requireAdmin, o as getRequestId, s as getUiLoginPassword } from \"../../../../../chunks/helpers.js\";\nimport { existsSync, readFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\n//#region src/routes/api/setup/current-config/+server.ts\nfunction readAkmConfig(configDir) {\n\tconst path = join(configDir, \"akm\", \"config.json\");\n\tif (!existsSync(path)) return {};\n\ttry {\n\t\treturn JSON.parse(readFileSync(path, \"utf-8\"));\n\t} catch {\n\t\treturn {};\n\t}\n}\nfunction deriveBaseUrl(endpoint) {\n\tif (!endpoint) return \"\";\n\treturn endpoint.replace(/\\/chat\\/completions\\/?$/, \"\").replace(/\\/embeddings\\/?$/, \"\").replace(/\\/+$/, \"\");\n}\nvar GET = async (event) => {\n\tconst authError = requireAdmin(event, getRequestId(event));\n\tif (authError) return authError;\n\tconst state = getState();\n\tconst configured = getUiLoginPassword();\n\tconst env = readStackEnv(state.stackDir);\n\tconst secretEnv = readStackSecretEnv(state.stackDir);\n\tconst akm = readAkmConfig(state.configDir);\n\tconst voiceProfiles = await annotateAddonProfileAvailability(getAddonProfiles(state.homeDir, \"voice\"));\n\tconst selectedVoiceProfile = getAddonProfileSelection(state.stackDir, \"voice\");\n\tconst ollamaProfiles = await annotateAddonProfileAvailability(getAddonProfiles(state.homeDir, \"ollama\"));\n\tconst selectedOllamaProfile = getAddonProfileSelection(state.stackDir, \"ollama\");\n\tconst hostHome = process.env.HOME ?? process.env.USERPROFILE ?? \"\";\n\tconst hostAkm = !!hostHome && env.OP_AKM_STASH === `${hostHome}/akm` && env.OP_AKM_CONFIG === `${hostHome}/.config/akm`;\n\tconst meta = (envKey) => ({\n\t\tenvKey,\n\t\tpresent: Boolean(secretEnv[envKey])\n\t});\n\tconst discord = {};\n\tfor (const [field, envKey] of Object.entries({\n\t\tbotToken: \"DISCORD_BOT_TOKEN\",\n\t\tapplicationId: \"DISCORD_APPLICATION_ID\",\n\t\tregisterCommands: \"DISCORD_REGISTER_COMMANDS\",\n\t\tallowedGuilds: \"DISCORD_ALLOWED_GUILDS\",\n\t\tallowedRoles: \"DISCORD_ALLOWED_ROLES\",\n\t\tallowedUsers: \"DISCORD_ALLOWED_USERS\",\n\t\tblockedUsers: \"DISCORD_BLOCKED_USERS\"\n\t})) if (secretEnv[envKey]) discord[field] = meta(envKey);\n\tconst slack = {};\n\tfor (const [field, envKey] of Object.entries({\n\t\tslackBotToken: \"SLACK_BOT_TOKEN\",\n\t\tslackAppToken: \"SLACK_APP_TOKEN\",\n\t\tallowedChannels: \"SLACK_ALLOWED_CHANNELS\",\n\t\tallowedUsers: \"SLACK_ALLOWED_USERS\",\n\t\tblockedUsers: \"SLACK_BLOCKED_USERS\"\n\t})) if (secretEnv[envKey]) slack[field] = meta(envKey);\n\tconst channelCredentials = {};\n\tif (Object.keys(discord).length > 0) channelCredentials.discord = discord;\n\tif (Object.keys(slack).length > 0) channelCredentials.slack = slack;\n\treturn json({\n\t\tok: true,\n\t\thasPassword: typeof configured === \"string\" && configured.length > 0,\n\t\timageTag: env.OP_IMAGE_TAG ?? \"\",\n\t\thostAkm,\n\t\tllm: akm.llm ? {\n\t\t\tprovider: akm.llm.provider ?? \"\",\n\t\t\tmodel: akm.llm.model ?? \"\",\n\t\t\tbaseUrl: deriveBaseUrl(akm.llm.endpoint)\n\t\t} : null,\n\t\tembedding: akm.embedding ? {\n\t\t\tprovider: akm.embedding.provider ?? \"\",\n\t\t\tmodel: akm.embedding.model ?? \"\",\n\t\t\tdims: akm.embedding.dimension ?? 0,\n\t\t\tbaseUrl: deriveBaseUrl(akm.embedding.endpoint)\n\t\t} : null,\n\t\tvoice: {\n\t\t\ttts: {\n\t\t\t\tengine: env.OP_TTS_ENGINE ?? \"\",\n\t\t\t\tbaseURL: env.OP_TTS_BASE_URL ?? \"\",\n\t\t\t\tmodel: env.OP_TTS_MODEL ?? \"\",\n\t\t\t\tvoice: env.OP_TTS_VOICE ?? \"\"\n\t\t\t},\n\t\t\tstt: {\n\t\t\t\tengine: env.OP_STT_ENGINE ?? \"\",\n\t\t\t\tbaseURL: env.OP_STT_BASE_URL ?? \"\",\n\t\t\t\tmodel: env.OP_STT_MODEL ?? \"\",\n\t\t\t\tlanguage: env.OP_STT_LANGUAGE ?? \"\"\n\t\t\t},\n\t\t\tprofiles: voiceProfiles,\n\t\t\tselectedProfile: selectedVoiceProfile\n\t\t},\n\t\tollama: {\n\t\t\tprofiles: ollamaProfiles,\n\t\t\tselectedProfile: selectedOllamaProfile\n\t\t},\n\t\tenabledAddons: listEnabledAddonIds(state.homeDir),\n\t\tchannelCredentials\n\t});\n};\n//#endregion\nexport { GET };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAMA;AACA,SAAS,aAAa,CAAC,SAAS,EAAE;AAClC,CAAC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,aAAa,CAAC;AACnD,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE;AACjC,CAAC,IAAI;AACL,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAChD,CAAC,CAAC,CAAC,MAAM;AACT,EAAE,OAAO,EAAE;AACX,CAAC;AACD;AACA,SAAS,aAAa,CAAC,QAAQ,EAAE;AACjC,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE;AACzB,CAAC,OAAO,QAAQ,CAAC,OAAO,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;AAC3G;AACG,IAAC,GAAG,GAAG,OAAO,KAAK,KAAK;AAC3B,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;AAC3D,CAAC,IAAI,SAAS,EAAE,OAAO,SAAS;AAChC,CAAC,MAAM,KAAK,GAAG,QAAQ,EAAE;AACzB,CAAC,MAAM,UAAU,GAAG,kBAAkB,EAAE;AACxC,CAAC,MAAM,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC;AACzC,CAAC,MAAM,SAAS,GAAG,kBAAkB,CAAC,KAAK,CAAC,QAAQ,CAAC;AACrD,CAAC,MAAM,GAAG,GAAG,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC;AAC3C,CAAC,MAAM,aAAa,GAAG,MAAM,gCAAgC,CAAC,gBAAgB,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACvG,CAAC,MAAM,oBAAoB,GAAG,wBAAwB,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC;AAC/E,CAAC,MAAM,cAAc,GAAG,MAAM,gCAAgC,CAAC,gBAAgB,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AACzG,CAAC,MAAM,qBAAqB,GAAG,wBAAwB,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACjF,CAAC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE;AACnE,CAAC,MAAM,OAAO,GAAG,CAAC,CAAC,QAAQ,IAAI,GAAG,CAAC,YAAY,KAAK,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,aAAa,KAAK,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC;AACxH,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,MAAM;AAC3B,EAAE,MAAM;AACR,EAAE,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC;AACpC,EAAE,CAAC;AACH,CAAC,MAAM,OAAO,GAAG,EAAE;AACnB,CAAC,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC;AAC9C,EAAE,QAAQ,EAAE,mBAAmB;AAC/B,EAAE,aAAa,EAAE,wBAAwB;AACzC,EAAE,gBAAgB,EAAE,2BAA2B;AAC/C,EAAE,aAAa,EAAE,wBAAwB;AACzC,EAAE,YAAY,EAAE,uBAAuB;AACvC,EAAE,YAAY,EAAE,uBAAuB;AACvC,EAAE,YAAY,EAAE;AAChB,EAAE,CAAC,EAAE,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;AACzD,CAAC,MAAM,KAAK,GAAG,EAAE;AACjB,CAAC,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC;AAC9C,EAAE,aAAa,EAAE,iBAAiB;AAClC,EAAE,aAAa,EAAE,iBAAiB;AAClC,EAAE,eAAe,EAAE,wBAAwB;AAC3C,EAAE,YAAY,EAAE,qBAAqB;AACrC,EAAE,YAAY,EAAE;AAChB,EAAE,CAAC,EAAE,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;AACvD,CAAC,MAAM,kBAAkB,GAAG,EAAE;AAC9B,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,kBAAkB,CAAC,OAAO,GAAG,OAAO;AAC1E,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,kBAAkB,CAAC,KAAK,GAAG,KAAK;AACpE,CAAC,OAAO,IAAI,CAAC;AACb,EAAE,EAAE,EAAE,IAAI;AACV,EAAE,WAAW,EAAE,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;AACtE,EAAE,QAAQ,EAAE,GAAG,CAAC,YAAY,IAAI,EAAE;AAClC,EAAE,OAAO;AACT,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG;AACjB,GAAG,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE;AACnC,GAAG,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE;AAC7B,GAAG,OAAO,EAAE,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ;AAC1C,GAAG,GAAG,IAAI;AACV,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,GAAG;AAC7B,GAAG,QAAQ,EAAE,GAAG,CAAC,SAAS,CAAC,QAAQ,IAAI,EAAE;AACzC,GAAG,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;AACnC,GAAG,IAAI,EAAE,GAAG,CAAC,SAAS,CAAC,SAAS,IAAI,CAAC;AACrC,GAAG,OAAO,EAAE,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ;AAChD,GAAG,GAAG,IAAI;AACV,EAAE,KAAK,EAAE;AACT,GAAG,GAAG,EAAE;AACR,IAAI,MAAM,EAAE,GAAG,CAAC,aAAa,IAAI,EAAE;AACnC,IAAI,OAAO,EAAE,GAAG,CAAC,eAAe,IAAI,EAAE;AACtC,IAAI,KAAK,EAAE,GAAG,CAAC,YAAY,IAAI,EAAE;AACjC,IAAI,KAAK,EAAE,GAAG,CAAC,YAAY,IAAI;AAC/B,IAAI;AACJ,GAAG,GAAG,EAAE;AACR,IAAI,MAAM,EAAE,GAAG,CAAC,aAAa,IAAI,EAAE;AACnC,IAAI,OAAO,EAAE,GAAG,CAAC,eAAe,IAAI,EAAE;AACtC,IAAI,KAAK,EAAE,GAAG,CAAC,YAAY,IAAI,EAAE;AACjC,IAAI,QAAQ,EAAE,GAAG,CAAC,eAAe,IAAI;AACrC,IAAI;AACJ,GAAG,QAAQ,EAAE,aAAa;AAC1B,GAAG,eAAe,EAAE;AACpB,GAAG;AACH,EAAE,MAAM,EAAE;AACV,GAAG,QAAQ,EAAE,cAAc;AAC3B,GAAG,eAAe,EAAE;AACpB,GAAG;AACH,EAAE,aAAa,EAAE,mBAAmB,CAAC,KAAK,CAAC,OAAO,CAAC;AACnD,EAAE;AACF,EAAE,CAAC;AACH;;;;"}
@@ -0,0 +1,63 @@
1
+ import { y as createLogger, m as checkDocker, o as composeDown, k as buildComposeOptions, e as applyUninstall } from './src-BkvQ5Uuf.js';
2
+ import { b as getState } from './endpoints-Drq_J-2Z.js';
3
+ import { d as getRequestId, r as requireAdmin, h as jsonResponse, e as errorResponse } from './helpers-CX6xRBmt.js';
4
+ import { w as withSerialQueue } from './serial-queue-D9FEpYVv.js';
5
+ import './chunk-CLZ62Ad-.js';
6
+ import 'node:module';
7
+ import 'node:fs';
8
+ import 'node:path';
9
+ import 'node:child_process';
10
+ import 'node:os';
11
+ import 'buffer';
12
+ import 'node:url';
13
+ import 'node:crypto';
14
+ import 'events';
15
+ import 'fs';
16
+ import 'node:events';
17
+ import 'node:stream';
18
+ import 'node:string_decoder';
19
+ import 'path';
20
+ import 'assert';
21
+ import 'zlib';
22
+ import 'node:assert';
23
+ import 'node:fs/promises';
24
+
25
+ //#region src/routes/admin/uninstall/+server.ts
26
+ var logger = createLogger("uninstall");
27
+ var POST = async (event) => {
28
+ const requestId = getRequestId(event);
29
+ logger.info("uninstall request received", { requestId });
30
+ const authError = requireAdmin(event, requestId);
31
+ if (authError) return authError;
32
+ return withSerialQueue("admin:uninstall", async () => {
33
+ try {
34
+ const state = getState();
35
+ const dockerCheck = await checkDocker();
36
+ if (dockerCheck.ok) await composeDown(buildComposeOptions(state));
37
+ logger.info("stopping containers and applying uninstall", {
38
+ requestId,
39
+ dockerAvailable: dockerCheck.ok
40
+ });
41
+ const result = await applyUninstall(state);
42
+ logger.info("uninstall completed", {
43
+ requestId,
44
+ stopped: result.stopped
45
+ });
46
+ return jsonResponse(200, {
47
+ ok: true,
48
+ ...result,
49
+ dockerAvailable: dockerCheck.ok
50
+ }, requestId);
51
+ } catch (err) {
52
+ const msg = err instanceof Error ? err.message : String(err);
53
+ logger.error("uninstall failed", {
54
+ requestId,
55
+ error: msg
56
+ });
57
+ return errorResponse(500, "uninstall_failed", msg, {}, requestId);
58
+ }
59
+ });
60
+ };
61
+
62
+ export { POST };
63
+ //# sourceMappingURL=_server.ts-dhkEt2p6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_server.ts-dhkEt2p6.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/admin/uninstall/_server.ts.js"],"sourcesContent":["import { D as composeDown, Nt as createLogger, T as checkDocker, w as buildComposeOptions, y as applyUninstall } from \"../../../../chunks/src.js\";\nimport { c as getState } from \"../../../../chunks/endpoints.js\";\nimport { d as requireAdmin, i as errorResponse, l as jsonResponse, o as getRequestId } from \"../../../../chunks/helpers.js\";\nimport { t as withSerialQueue } from \"../../../../chunks/serial-queue.js\";\n//#region src/routes/admin/uninstall/+server.ts\nvar logger = createLogger(\"uninstall\");\nvar POST = async (event) => {\n\tconst requestId = getRequestId(event);\n\tlogger.info(\"uninstall request received\", { requestId });\n\tconst authError = requireAdmin(event, requestId);\n\tif (authError) return authError;\n\treturn withSerialQueue(\"admin:uninstall\", async () => {\n\t\ttry {\n\t\t\tconst state = getState();\n\t\t\tconst dockerCheck = await checkDocker();\n\t\t\tif (dockerCheck.ok) await composeDown(buildComposeOptions(state));\n\t\t\tlogger.info(\"stopping containers and applying uninstall\", {\n\t\t\t\trequestId,\n\t\t\t\tdockerAvailable: dockerCheck.ok\n\t\t\t});\n\t\t\tconst result = await applyUninstall(state);\n\t\t\tlogger.info(\"uninstall completed\", {\n\t\t\t\trequestId,\n\t\t\t\tstopped: result.stopped\n\t\t\t});\n\t\t\treturn jsonResponse(200, {\n\t\t\t\tok: true,\n\t\t\t\t...result,\n\t\t\t\tdockerAvailable: dockerCheck.ok\n\t\t\t}, requestId);\n\t\t} catch (err) {\n\t\t\tconst msg = err instanceof Error ? err.message : String(err);\n\t\t\tlogger.error(\"uninstall failed\", {\n\t\t\t\trequestId,\n\t\t\t\terror: msg\n\t\t\t});\n\t\t\treturn errorResponse(500, \"uninstall_failed\", msg, {}, requestId);\n\t\t}\n\t});\n};\n//#endregion\nexport { POST };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAIA;AACA,IAAI,MAAM,GAAG,YAAY,CAAC,WAAW,CAAC;AACnC,IAAC,IAAI,GAAG,OAAO,KAAK,KAAK;AAC5B,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC;AACtC,CAAC,MAAM,CAAC,IAAI,CAAC,4BAA4B,EAAE,EAAE,SAAS,EAAE,CAAC;AACzD,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC;AACjD,CAAC,IAAI,SAAS,EAAE,OAAO,SAAS;AAChC,CAAC,OAAO,eAAe,CAAC,iBAAiB,EAAE,YAAY;AACvD,EAAE,IAAI;AACN,GAAG,MAAM,KAAK,GAAG,QAAQ,EAAE;AAC3B,GAAG,MAAM,WAAW,GAAG,MAAM,WAAW,EAAE;AAC1C,GAAG,IAAI,WAAW,CAAC,EAAE,EAAE,MAAM,WAAW,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;AACpE,GAAG,MAAM,CAAC,IAAI,CAAC,4CAA4C,EAAE;AAC7D,IAAI,SAAS;AACb,IAAI,eAAe,EAAE,WAAW,CAAC;AACjC,IAAI,CAAC;AACL,GAAG,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC;AAC7C,GAAG,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE;AACtC,IAAI,SAAS;AACb,IAAI,OAAO,EAAE,MAAM,CAAC;AACpB,IAAI,CAAC;AACL,GAAG,OAAO,YAAY,CAAC,GAAG,EAAE;AAC5B,IAAI,EAAE,EAAE,IAAI;AACZ,IAAI,GAAG,MAAM;AACb,IAAI,eAAe,EAAE,WAAW,CAAC;AACjC,IAAI,EAAE,SAAS,CAAC;AAChB,EAAE,CAAC,CAAC,OAAO,GAAG,EAAE;AAChB,GAAG,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,GAAG,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC;AAC/D,GAAG,MAAM,CAAC,KAAK,CAAC,kBAAkB,EAAE;AACpC,IAAI,SAAS;AACb,IAAI,KAAK,EAAE;AACX,IAAI,CAAC;AACL,GAAG,OAAO,aAAa,CAAC,GAAG,EAAE,kBAAkB,EAAE,GAAG,EAAE,EAAE,EAAE,SAAS,CAAC;AACpE,EAAE;AACF,CAAC,CAAC,CAAC;AACH;;;;"}
@@ -0,0 +1,67 @@
1
+ import { g as getActiveEndpoint, l as listEndpoints, v as validateEndpointUrl, a as addEndpoint } from './endpoints-Drq_J-2Z.js';
2
+ import { d as getRequestId, r as requireAdmin, h as jsonResponse, w as withAdminBody, e as errorResponse } from './helpers-CX6xRBmt.js';
3
+ import './src-BkvQ5Uuf.js';
4
+ import './chunk-CLZ62Ad-.js';
5
+ import 'node:module';
6
+ import 'node:fs';
7
+ import 'node:path';
8
+ import 'node:child_process';
9
+ import 'node:os';
10
+ import 'buffer';
11
+ import 'node:url';
12
+ import 'node:crypto';
13
+ import 'events';
14
+ import 'fs';
15
+ import 'node:events';
16
+ import 'node:stream';
17
+ import 'node:string_decoder';
18
+ import 'path';
19
+ import 'assert';
20
+ import 'zlib';
21
+ import 'node:assert';
22
+ import 'node:fs/promises';
23
+
24
+ //#region src/routes/admin/endpoints/+server.ts
25
+ function publish(e) {
26
+ return {
27
+ id: e.id,
28
+ label: e.label,
29
+ url: e.url,
30
+ isDefault: e.isDefault,
31
+ hasPassword: Boolean(e.password)
32
+ };
33
+ }
34
+ var GET = async (event) => {
35
+ const requestId = getRequestId(event);
36
+ const authError = requireAdmin(event, requestId);
37
+ if (authError) return authError;
38
+ return jsonResponse(200, {
39
+ endpoints: listEndpoints().map(publish),
40
+ activeId: publish(getActiveEndpoint()).id
41
+ }, requestId);
42
+ };
43
+ var POST = async (event) => withAdminBody(event, async ({ requestId, body }) => {
44
+ const label = typeof body.label === "string" ? body.label : "";
45
+ const url = typeof body.url === "string" ? body.url : "";
46
+ const password = typeof body.password === "string" && body.password.length > 0 ? body.password : void 0;
47
+ const urlCheck = validateEndpointUrl(url);
48
+ if (!urlCheck.ok) {
49
+ if (urlCheck.reason === "http_not_allowed") return errorResponse(400, "http_not_allowed", "Plain HTTP is only allowed for loopback addresses. Use https:// for remote OpenPalm instances.", {}, requestId);
50
+ return errorResponse(400, "invalid_endpoint", "URL must be a valid http(s) URL", {}, requestId);
51
+ }
52
+ try {
53
+ return jsonResponse(201, { endpoint: publish({
54
+ ...addEndpoint({
55
+ label,
56
+ url: urlCheck.url,
57
+ password
58
+ }),
59
+ isDefault: false
60
+ }) }, requestId);
61
+ } catch (e) {
62
+ return errorResponse(400, "invalid_endpoint", e instanceof Error ? e.message : "failed to create endpoint", {}, requestId);
63
+ }
64
+ });
65
+
66
+ export { GET, POST };
67
+ //# sourceMappingURL=_server.ts-eK_9jY-9.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_server.ts-eK_9jY-9.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/admin/endpoints/_server.ts.js"],"sourcesContent":["import { i as listEndpoints, r as getActiveEndpoint, s as validateEndpointUrl, t as addEndpoint } from \"../../../../chunks/endpoints.js\";\nimport { d as requireAdmin, i as errorResponse, l as jsonResponse, o as getRequestId, p as withAdminBody } from \"../../../../chunks/helpers.js\";\n//#region src/routes/admin/endpoints/+server.ts\nfunction publish(e) {\n\treturn {\n\t\tid: e.id,\n\t\tlabel: e.label,\n\t\turl: e.url,\n\t\tisDefault: e.isDefault,\n\t\thasPassword: Boolean(e.password)\n\t};\n}\nvar GET = async (event) => {\n\tconst requestId = getRequestId(event);\n\tconst authError = requireAdmin(event, requestId);\n\tif (authError) return authError;\n\treturn jsonResponse(200, {\n\t\tendpoints: listEndpoints().map(publish),\n\t\tactiveId: publish(getActiveEndpoint()).id\n\t}, requestId);\n};\nvar POST = async (event) => withAdminBody(event, async ({ requestId, body }) => {\n\tconst label = typeof body.label === \"string\" ? body.label : \"\";\n\tconst url = typeof body.url === \"string\" ? body.url : \"\";\n\tconst password = typeof body.password === \"string\" && body.password.length > 0 ? body.password : void 0;\n\tconst urlCheck = validateEndpointUrl(url);\n\tif (!urlCheck.ok) {\n\t\tif (urlCheck.reason === \"http_not_allowed\") return errorResponse(400, \"http_not_allowed\", \"Plain HTTP is only allowed for loopback addresses. Use https:// for remote OpenPalm instances.\", {}, requestId);\n\t\treturn errorResponse(400, \"invalid_endpoint\", \"URL must be a valid http(s) URL\", {}, requestId);\n\t}\n\ttry {\n\t\treturn jsonResponse(201, { endpoint: publish({\n\t\t\t...addEndpoint({\n\t\t\t\tlabel,\n\t\t\t\turl: urlCheck.url,\n\t\t\t\tpassword\n\t\t\t}),\n\t\t\tisDefault: false\n\t\t}) }, requestId);\n\t} catch (e) {\n\t\treturn errorResponse(400, \"invalid_endpoint\", e instanceof Error ? e.message : \"failed to create endpoint\", {}, requestId);\n\t}\n});\n//#endregion\nexport { GET, POST };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAEA;AACA,SAAS,OAAO,CAAC,CAAC,EAAE;AACpB,CAAC,OAAO;AACR,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE;AACV,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK;AAChB,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG;AACZ,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS;AACxB,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ;AACjC,EAAE;AACF;AACG,IAAC,GAAG,GAAG,OAAO,KAAK,KAAK;AAC3B,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC;AACtC,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC;AACjD,CAAC,IAAI,SAAS,EAAE,OAAO,SAAS;AAChC,CAAC,OAAO,YAAY,CAAC,GAAG,EAAE;AAC1B,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC;AACzC,EAAE,QAAQ,EAAE,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;AACzC,EAAE,EAAE,SAAS,CAAC;AACd;AACG,IAAC,IAAI,GAAG,OAAO,KAAK,KAAK,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK;AAChF,CAAC,MAAM,KAAK,GAAG,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE;AAC/D,CAAC,MAAM,GAAG,GAAG,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ,GAAG,IAAI,CAAC,GAAG,GAAG,EAAE;AACzD,CAAC,MAAM,QAAQ,GAAG,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,MAAM;AACxG,CAAC,MAAM,QAAQ,GAAG,mBAAmB,CAAC,GAAG,CAAC;AAC1C,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;AACnB,EAAE,IAAI,QAAQ,CAAC,MAAM,KAAK,kBAAkB,EAAE,OAAO,aAAa,CAAC,GAAG,EAAE,kBAAkB,EAAE,gGAAgG,EAAE,EAAE,EAAE,SAAS,CAAC;AAC5M,EAAE,OAAO,aAAa,CAAC,GAAG,EAAE,kBAAkB,EAAE,iCAAiC,EAAE,EAAE,EAAE,SAAS,CAAC;AACjG,CAAC;AACD,CAAC,IAAI;AACL,EAAE,OAAO,YAAY,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC;AAC/C,GAAG,GAAG,WAAW,CAAC;AAClB,IAAI,KAAK;AACT,IAAI,GAAG,EAAE,QAAQ,CAAC,GAAG;AACrB,IAAI;AACJ,IAAI,CAAC;AACL,GAAG,SAAS,EAAE;AACd,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC;AAClB,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE;AACb,EAAE,OAAO,aAAa,CAAC,GAAG,EAAE,kBAAkB,EAAE,CAAC,YAAY,KAAK,GAAG,CAAC,CAAC,OAAO,GAAG,2BAA2B,EAAE,EAAE,EAAE,SAAS,CAAC;AAC5H,CAAC;AACD,CAAC;;;;"}
@@ -0,0 +1,42 @@
1
+ import { j as json } from './exports-D1quPX8S.js';
2
+ import { g as getOpenCodeClient } from './helpers-CX6xRBmt.js';
3
+ import './utils-BSRjJDrZ.js';
4
+ import './src-BkvQ5Uuf.js';
5
+ import './chunk-CLZ62Ad-.js';
6
+ import 'node:module';
7
+ import 'node:fs';
8
+ import 'node:path';
9
+ import 'node:child_process';
10
+ import 'node:os';
11
+ import 'buffer';
12
+ import 'node:url';
13
+ import 'node:crypto';
14
+ import 'events';
15
+ import 'fs';
16
+ import 'node:events';
17
+ import 'node:stream';
18
+ import 'node:string_decoder';
19
+ import 'path';
20
+ import 'assert';
21
+ import 'zlib';
22
+ import 'node:assert';
23
+ import 'node:fs/promises';
24
+ import './endpoints-Drq_J-2Z.js';
25
+
26
+ //#region src/routes/api/setup/opencode/status/+server.ts
27
+ var GET = async () => {
28
+ try {
29
+ return json({
30
+ ok: true,
31
+ available: await getOpenCodeClient().isAvailable()
32
+ });
33
+ } catch {
34
+ return json({
35
+ ok: true,
36
+ available: false
37
+ });
38
+ }
39
+ };
40
+
41
+ export { GET };
42
+ //# sourceMappingURL=_server.ts-fsEmx9mw.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_server.ts-fsEmx9mw.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/setup/opencode/status/_server.ts.js"],"sourcesContent":["import { r as json } from \"../../../../../../chunks/exports.js\";\nimport { a as getOpenCodeClient } from \"../../../../../../chunks/helpers.js\";\n//#region src/routes/api/setup/opencode/status/+server.ts\nvar GET = async () => {\n\ttry {\n\t\treturn json({\n\t\t\tok: true,\n\t\t\tavailable: await getOpenCodeClient().isAvailable()\n\t\t});\n\t} catch {\n\t\treturn json({\n\t\t\tok: true,\n\t\t\tavailable: false\n\t\t});\n\t}\n};\n//#endregion\nexport { GET };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAEA;AACG,IAAC,GAAG,GAAG,YAAY;AACtB,CAAC,IAAI;AACL,EAAE,OAAO,IAAI,CAAC;AACd,GAAG,EAAE,EAAE,IAAI;AACX,GAAG,SAAS,EAAE,MAAM,iBAAiB,EAAE,CAAC,WAAW;AACnD,GAAG,CAAC;AACJ,CAAC,CAAC,CAAC,MAAM;AACT,EAAE,OAAO,IAAI,CAAC;AACd,GAAG,EAAE,EAAE,IAAI;AACX,GAAG,SAAS,EAAE;AACd,GAAG,CAAC;AACJ,CAAC;AACD;;;;"}
@@ -0,0 +1,109 @@
1
+ import { g as getActiveEndpoint } from './endpoints-Drq_J-2Z.js';
2
+ import { d as getRequestId, r as requireAdmin } from './helpers-CX6xRBmt.js';
3
+ import './src-BkvQ5Uuf.js';
4
+ import './chunk-CLZ62Ad-.js';
5
+ import 'node:module';
6
+ import 'node:fs';
7
+ import 'node:path';
8
+ import 'node:child_process';
9
+ import 'node:os';
10
+ import 'buffer';
11
+ import 'node:url';
12
+ import 'node:crypto';
13
+ import 'events';
14
+ import 'fs';
15
+ import 'node:events';
16
+ import 'node:stream';
17
+ import 'node:string_decoder';
18
+ import 'path';
19
+ import 'assert';
20
+ import 'zlib';
21
+ import 'node:assert';
22
+ import 'node:fs/promises';
23
+
24
+ //#region src/routes/proxy/assistant/[...path]/+server.ts
25
+ /**
26
+ * Proxy route: forward /proxy/assistant/[...path] → assistant OpenCode server.
27
+ *
28
+ * Auth: requires the operator's `op_session` cookie (cookie-only since
29
+ * Phase 2 of the auth/proxy refactor — the `x-admin-token` header fallback
30
+ * was removed).
31
+ * Forwards the full request body and method unchanged.
32
+ * The target URL and per-endpoint Basic-auth password are resolved per-request
33
+ * from the active endpoint store, so switching endpoints in the UI takes
34
+ * effect immediately without restarting the server.
35
+ *
36
+ * Streaming: the upstream response body is forwarded as-is (no buffering) so
37
+ * SSE responses (text/event-stream) pass through chunk-by-chunk. We do not
38
+ * impose a fixed timeout on the upstream fetch — OpenCode SSE streams can run
39
+ * for minutes. Instead the per-request AbortController is wired to the client
40
+ * disconnect signal (`event.request.signal`); when the browser aborts (tab
41
+ * close, navigation away), we propagate the abort to upstream.
42
+ */
43
+ function buildForwardHeaders(incomingContentType, username, password) {
44
+ const headers = {};
45
+ if (incomingContentType) headers["content-type"] = incomingContentType;
46
+ if (password) headers["authorization"] = `Basic ${btoa(`${username || "openpalm"}:${password}`)}`;
47
+ return headers;
48
+ }
49
+ function buildResponseHeaders(upstream, requestId, endpointId, endpointLabel) {
50
+ const headers = new Headers();
51
+ headers.set("content-type", upstream.headers.get("content-type") ?? "application/json");
52
+ const cacheControl = upstream.headers.get("cache-control");
53
+ if (cacheControl) headers.set("cache-control", cacheControl);
54
+ const transferEncoding = upstream.headers.get("transfer-encoding");
55
+ if (transferEncoding) headers.set("transfer-encoding", transferEncoding);
56
+ headers.set("x-request-id", requestId);
57
+ headers.set("x-endpoint-id", endpointId);
58
+ headers.set("x-endpoint-label", encodeURIComponent(endpointLabel));
59
+ return headers;
60
+ }
61
+ var handler = async (event) => {
62
+ const requestId = getRequestId(event);
63
+ const authError = requireAdmin(event, requestId);
64
+ if (authError) return authError;
65
+ const endpoint = getActiveEndpoint();
66
+ const { path } = event.params;
67
+ const targetUrl = `${endpoint.url}/${path}${event.url.search}`;
68
+ const method = event.request.method;
69
+ const contentType = event.request.headers.get("content-type");
70
+ const body = method !== "GET" && method !== "HEAD" ? await event.request.arrayBuffer() : void 0;
71
+ const controller = new AbortController();
72
+ const onClientAbort = () => controller.abort();
73
+ event.request.signal.addEventListener("abort", onClientAbort, { once: true });
74
+ try {
75
+ const upstream = await fetch(targetUrl, {
76
+ method,
77
+ headers: buildForwardHeaders(contentType, endpoint.username, endpoint.password),
78
+ body,
79
+ signal: controller.signal
80
+ });
81
+ return new Response(upstream.body, {
82
+ status: upstream.status,
83
+ headers: buildResponseHeaders(upstream, requestId, endpoint.id, endpoint.label)
84
+ });
85
+ } catch (e) {
86
+ event.request.signal.removeEventListener("abort", onClientAbort);
87
+ console.warn("[proxy/assistant] Upstream request failed:", e);
88
+ return new Response(JSON.stringify({
89
+ error: "endpoint_unreachable",
90
+ message: `Assistant endpoint "${endpoint.label}" is not reachable`,
91
+ endpointId: endpoint.id,
92
+ endpointLabel: endpoint.label,
93
+ url: endpoint.url
94
+ }), {
95
+ status: 503,
96
+ headers: {
97
+ "content-type": "application/json",
98
+ "x-request-id": requestId
99
+ }
100
+ });
101
+ }
102
+ };
103
+ var GET = handler;
104
+ var POST = handler;
105
+ var PUT = handler;
106
+ var DELETE = handler;
107
+
108
+ export { DELETE, GET, POST, PUT };
109
+ //# sourceMappingURL=_server.ts-l4CK3c4j.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_server.ts-l4CK3c4j.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/proxy/assistant/_...path_/_server.ts.js"],"sourcesContent":["import { r as getActiveEndpoint } from \"../../../../../chunks/endpoints.js\";\nimport { d as requireAdmin, o as getRequestId } from \"../../../../../chunks/helpers.js\";\n//#region src/routes/proxy/assistant/[...path]/+server.ts\n/**\n* Proxy route: forward /proxy/assistant/[...path] → assistant OpenCode server.\n*\n* Auth: requires the operator's `op_session` cookie (cookie-only since\n* Phase 2 of the auth/proxy refactor — the `x-admin-token` header fallback\n* was removed).\n* Forwards the full request body and method unchanged.\n* The target URL and per-endpoint Basic-auth password are resolved per-request\n* from the active endpoint store, so switching endpoints in the UI takes\n* effect immediately without restarting the server.\n*\n* Streaming: the upstream response body is forwarded as-is (no buffering) so\n* SSE responses (text/event-stream) pass through chunk-by-chunk. We do not\n* impose a fixed timeout on the upstream fetch — OpenCode SSE streams can run\n* for minutes. Instead the per-request AbortController is wired to the client\n* disconnect signal (`event.request.signal`); when the browser aborts (tab\n* close, navigation away), we propagate the abort to upstream.\n*/\nfunction buildForwardHeaders(incomingContentType, username, password) {\n\tconst headers = {};\n\tif (incomingContentType) headers[\"content-type\"] = incomingContentType;\n\tif (password) headers[\"authorization\"] = `Basic ${btoa(`${username || \"openpalm\"}:${password}`)}`;\n\treturn headers;\n}\nfunction buildResponseHeaders(upstream, requestId, endpointId, endpointLabel) {\n\tconst headers = new Headers();\n\theaders.set(\"content-type\", upstream.headers.get(\"content-type\") ?? \"application/json\");\n\tconst cacheControl = upstream.headers.get(\"cache-control\");\n\tif (cacheControl) headers.set(\"cache-control\", cacheControl);\n\tconst transferEncoding = upstream.headers.get(\"transfer-encoding\");\n\tif (transferEncoding) headers.set(\"transfer-encoding\", transferEncoding);\n\theaders.set(\"x-request-id\", requestId);\n\theaders.set(\"x-endpoint-id\", endpointId);\n\theaders.set(\"x-endpoint-label\", encodeURIComponent(endpointLabel));\n\treturn headers;\n}\nvar handler = async (event) => {\n\tconst requestId = getRequestId(event);\n\tconst authError = requireAdmin(event, requestId);\n\tif (authError) return authError;\n\tconst endpoint = getActiveEndpoint();\n\tconst { path } = event.params;\n\tconst targetUrl = `${endpoint.url}/${path}${event.url.search}`;\n\tconst method = event.request.method;\n\tconst contentType = event.request.headers.get(\"content-type\");\n\tconst body = method !== \"GET\" && method !== \"HEAD\" ? await event.request.arrayBuffer() : void 0;\n\tconst controller = new AbortController();\n\tconst onClientAbort = () => controller.abort();\n\tevent.request.signal.addEventListener(\"abort\", onClientAbort, { once: true });\n\ttry {\n\t\tconst upstream = await fetch(targetUrl, {\n\t\t\tmethod,\n\t\t\theaders: buildForwardHeaders(contentType, endpoint.username, endpoint.password),\n\t\t\tbody,\n\t\t\tsignal: controller.signal\n\t\t});\n\t\treturn new Response(upstream.body, {\n\t\t\tstatus: upstream.status,\n\t\t\theaders: buildResponseHeaders(upstream, requestId, endpoint.id, endpoint.label)\n\t\t});\n\t} catch (e) {\n\t\tevent.request.signal.removeEventListener(\"abort\", onClientAbort);\n\t\tconsole.warn(\"[proxy/assistant] Upstream request failed:\", e);\n\t\treturn new Response(JSON.stringify({\n\t\t\terror: \"endpoint_unreachable\",\n\t\t\tmessage: `Assistant endpoint \"${endpoint.label}\" is not reachable`,\n\t\t\tendpointId: endpoint.id,\n\t\t\tendpointLabel: endpoint.label,\n\t\t\turl: endpoint.url\n\t\t}), {\n\t\t\tstatus: 503,\n\t\t\theaders: {\n\t\t\t\t\"content-type\": \"application/json\",\n\t\t\t\t\"x-request-id\": requestId\n\t\t\t}\n\t\t});\n\t}\n};\nvar GET = handler;\nvar POST = handler;\nvar PUT = handler;\nvar DELETE = handler;\n//#endregion\nexport { DELETE, GET, POST, PUT };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,mBAAmB,CAAC,mBAAmB,EAAE,QAAQ,EAAE,QAAQ,EAAE;AACtE,CAAC,MAAM,OAAO,GAAG,EAAE;AACnB,CAAC,IAAI,mBAAmB,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,mBAAmB;AACvE,CAAC,IAAI,QAAQ,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,QAAQ,IAAI,UAAU,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAClG,CAAC,OAAO,OAAO;AACf;AACA,SAAS,oBAAoB,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE;AAC9E,CAAC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE;AAC9B,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,kBAAkB,CAAC;AACxF,CAAC,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;AAC3D,CAAC,IAAI,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,YAAY,CAAC;AAC7D,CAAC,MAAM,gBAAgB,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;AACnE,CAAC,IAAI,gBAAgB,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,gBAAgB,CAAC;AACzE,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,SAAS,CAAC;AACvC,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,CAAC;AACzC,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,aAAa,CAAC,CAAC;AACnE,CAAC,OAAO,OAAO;AACf;AACA,IAAI,OAAO,GAAG,OAAO,KAAK,KAAK;AAC/B,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC;AACtC,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC;AACjD,CAAC,IAAI,SAAS,EAAE,OAAO,SAAS;AAChC,CAAC,MAAM,QAAQ,GAAG,iBAAiB,EAAE;AACrC,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,MAAM;AAC9B,CAAC,MAAM,SAAS,GAAG,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC/D,CAAC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM;AACpC,CAAC,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;AAC9D,CAAC,MAAM,IAAI,GAAG,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,MAAM,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,MAAM;AAChG,CAAC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE;AACzC,CAAC,MAAM,aAAa,GAAG,MAAM,UAAU,CAAC,KAAK,EAAE;AAC/C,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAC9E,CAAC,IAAI;AACL,EAAE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,SAAS,EAAE;AAC1C,GAAG,MAAM;AACT,GAAG,OAAO,EAAE,mBAAmB,CAAC,WAAW,EAAE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC;AAClF,GAAG,IAAI;AACP,GAAG,MAAM,EAAE,UAAU,CAAC;AACtB,GAAG,CAAC;AACJ,EAAE,OAAO,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE;AACrC,GAAG,MAAM,EAAE,QAAQ,CAAC,MAAM;AAC1B,GAAG,OAAO,EAAE,oBAAoB,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,KAAK;AACjF,GAAG,CAAC;AACJ,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE;AACb,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,aAAa,CAAC;AAClE,EAAE,OAAO,CAAC,IAAI,CAAC,4CAA4C,EAAE,CAAC,CAAC;AAC/D,EAAE,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;AACrC,GAAG,KAAK,EAAE,sBAAsB;AAChC,GAAG,OAAO,EAAE,CAAC,oBAAoB,EAAE,QAAQ,CAAC,KAAK,CAAC,kBAAkB,CAAC;AACrE,GAAG,UAAU,EAAE,QAAQ,CAAC,EAAE;AAC1B,GAAG,aAAa,EAAE,QAAQ,CAAC,KAAK;AAChC,GAAG,GAAG,EAAE,QAAQ,CAAC;AACjB,GAAG,CAAC,EAAE;AACN,GAAG,MAAM,EAAE,GAAG;AACd,GAAG,OAAO,EAAE;AACZ,IAAI,cAAc,EAAE,kBAAkB;AACtC,IAAI,cAAc,EAAE;AACpB;AACA,GAAG,CAAC;AACJ,CAAC;AACD,CAAC;AACE,IAAC,GAAG,GAAG;AACP,IAAC,IAAI,GAAG;AACR,IAAC,GAAG,GAAG;AACP,IAAC,MAAM,GAAG;;;;"}