@openpalm/ui 0.11.0-rc.9 → 0.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (438) hide show
  1. package/build/.openpalm-ui-version +1 -1
  2. package/build/client/_app/immutable/assets/0.CFC7xzus.css +1 -0
  3. package/build/client/_app/immutable/assets/0.CFC7xzus.css.br +0 -0
  4. package/build/client/_app/immutable/assets/0.CFC7xzus.css.gz +0 -0
  5. package/build/client/_app/immutable/assets/4.B_s_XYKm.css +1 -0
  6. package/build/client/_app/immutable/assets/4.B_s_XYKm.css.br +0 -0
  7. package/build/client/_app/immutable/assets/4.B_s_XYKm.css.gz +0 -0
  8. package/build/client/_app/immutable/assets/6.Dr3r8AEl.css +1 -0
  9. package/build/client/_app/immutable/assets/6.Dr3r8AEl.css.br +0 -0
  10. package/build/client/_app/immutable/assets/6.Dr3r8AEl.css.gz +0 -0
  11. package/build/client/_app/immutable/assets/7.DKl0e2Fb.css +1 -0
  12. package/build/client/_app/immutable/assets/7.DKl0e2Fb.css.br +0 -0
  13. package/build/client/_app/immutable/assets/7.DKl0e2Fb.css.gz +0 -0
  14. package/build/client/_app/immutable/assets/8.CY2RMSue.css +1 -0
  15. package/build/client/_app/immutable/assets/8.CY2RMSue.css.br +4 -0
  16. package/build/client/_app/immutable/assets/8.CY2RMSue.css.gz +0 -0
  17. package/build/client/_app/immutable/assets/9.Bg2RXe3B.css +1 -0
  18. package/build/client/_app/immutable/assets/9.Bg2RXe3B.css.br +0 -0
  19. package/build/client/_app/immutable/assets/9.Bg2RXe3B.css.gz +0 -0
  20. package/build/client/_app/immutable/assets/Navbar.Bnqciy-R.css +1 -0
  21. package/build/client/_app/immutable/assets/Navbar.Bnqciy-R.css.br +0 -0
  22. package/build/client/_app/immutable/assets/Navbar.Bnqciy-R.css.gz +0 -0
  23. package/build/client/_app/immutable/assets/Spinner.BtzHSsat.css +1 -0
  24. package/build/client/_app/immutable/assets/Spinner.BtzHSsat.css.br +2 -0
  25. package/build/client/_app/immutable/assets/Spinner.BtzHSsat.css.gz +0 -0
  26. package/build/client/_app/immutable/assets/VoiceProfileSelector.rd8K9qqK.css +1 -0
  27. package/build/client/_app/immutable/assets/VoiceProfileSelector.rd8K9qqK.css.br +0 -0
  28. package/build/client/_app/immutable/assets/VoiceProfileSelector.rd8K9qqK.css.gz +0 -0
  29. package/build/client/_app/immutable/chunks/0swOyi-5.js +3 -0
  30. package/build/client/_app/immutable/chunks/0swOyi-5.js.br +0 -0
  31. package/build/client/_app/immutable/chunks/0swOyi-5.js.gz +0 -0
  32. package/build/client/_app/immutable/chunks/BBdT9Cjm.js +1 -0
  33. package/build/client/_app/immutable/chunks/BBdT9Cjm.js.br +0 -0
  34. package/build/client/_app/immutable/chunks/BBdT9Cjm.js.gz +0 -0
  35. package/build/client/_app/immutable/chunks/BQ0vnNWj.js +1 -0
  36. package/build/client/_app/immutable/chunks/BQ0vnNWj.js.br +1 -0
  37. package/build/client/_app/immutable/chunks/BQ0vnNWj.js.gz +0 -0
  38. package/build/client/_app/immutable/chunks/Bmfn2m9N.js +1 -0
  39. package/build/client/_app/immutable/chunks/Bmfn2m9N.js.br +1 -0
  40. package/build/client/_app/immutable/chunks/Bmfn2m9N.js.gz +0 -0
  41. package/build/client/_app/immutable/chunks/BsFaG4Si.js +1 -0
  42. package/build/client/_app/immutable/chunks/BsFaG4Si.js.br +2 -0
  43. package/build/client/_app/immutable/chunks/BsFaG4Si.js.gz +0 -0
  44. package/build/client/_app/immutable/chunks/C5xMso3V.js +1 -0
  45. package/build/client/_app/immutable/chunks/C5xMso3V.js.br +0 -0
  46. package/build/client/_app/immutable/chunks/C5xMso3V.js.gz +0 -0
  47. package/build/client/_app/immutable/chunks/{BuFlayix.js → CymRgjIC.js} +1 -1
  48. package/build/client/_app/immutable/chunks/CymRgjIC.js.br +0 -0
  49. package/build/client/_app/immutable/chunks/CymRgjIC.js.gz +0 -0
  50. package/build/client/_app/immutable/chunks/DPsWof9T.js +3 -0
  51. package/build/client/_app/immutable/chunks/DPsWof9T.js.br +0 -0
  52. package/build/client/_app/immutable/chunks/DPsWof9T.js.gz +0 -0
  53. package/build/client/_app/immutable/chunks/jhtvkF_A.js +1 -0
  54. package/build/client/_app/immutable/chunks/jhtvkF_A.js.br +0 -0
  55. package/build/client/_app/immutable/chunks/jhtvkF_A.js.gz +0 -0
  56. package/build/client/_app/immutable/chunks/s4upGypb.js +5 -0
  57. package/build/client/_app/immutable/chunks/s4upGypb.js.br +0 -0
  58. package/build/client/_app/immutable/chunks/s4upGypb.js.gz +0 -0
  59. package/build/client/_app/immutable/entry/app.BhaNzXRa.js +2 -0
  60. package/build/client/_app/immutable/entry/app.BhaNzXRa.js.br +0 -0
  61. package/build/client/_app/immutable/entry/app.BhaNzXRa.js.gz +0 -0
  62. package/build/client/_app/immutable/entry/start.mqdezZzO.js +1 -0
  63. package/build/client/_app/immutable/entry/start.mqdezZzO.js.br +0 -0
  64. package/build/client/_app/immutable/entry/start.mqdezZzO.js.gz +0 -0
  65. package/build/client/_app/immutable/nodes/0.0pi4RS6G.js +1 -0
  66. package/build/client/_app/immutable/nodes/0.0pi4RS6G.js.br +0 -0
  67. package/build/client/_app/immutable/nodes/0.0pi4RS6G.js.gz +0 -0
  68. package/build/client/_app/immutable/nodes/1.B8IsMtPo.js +1 -0
  69. package/build/client/_app/immutable/nodes/1.B8IsMtPo.js.br +1 -0
  70. package/build/client/_app/immutable/nodes/1.B8IsMtPo.js.gz +0 -0
  71. package/build/client/_app/immutable/nodes/2.B-8ehRO1.js +1 -0
  72. package/build/client/_app/immutable/nodes/2.B-8ehRO1.js.br +0 -0
  73. package/build/client/_app/immutable/nodes/2.B-8ehRO1.js.gz +0 -0
  74. package/build/client/_app/immutable/nodes/3.B_FXzjZB.js +1 -0
  75. package/build/client/_app/immutable/nodes/3.B_FXzjZB.js.br +0 -0
  76. package/build/client/_app/immutable/nodes/3.B_FXzjZB.js.gz +0 -0
  77. package/build/client/_app/immutable/nodes/4.Jf5TbLTF.js +19 -0
  78. package/build/client/_app/immutable/nodes/4.Jf5TbLTF.js.br +0 -0
  79. package/build/client/_app/immutable/nodes/4.Jf5TbLTF.js.gz +0 -0
  80. package/build/client/_app/immutable/nodes/5.BXOM2W9q.js +4 -0
  81. package/build/client/_app/immutable/nodes/5.BXOM2W9q.js.br +0 -0
  82. package/build/client/_app/immutable/nodes/5.BXOM2W9q.js.gz +0 -0
  83. package/build/client/_app/immutable/nodes/6.fVxTNYsE.js +1 -0
  84. package/build/client/_app/immutable/nodes/6.fVxTNYsE.js.br +0 -0
  85. package/build/client/_app/immutable/nodes/6.fVxTNYsE.js.gz +0 -0
  86. package/build/client/_app/immutable/nodes/7.E4FAL2cc.js +15 -0
  87. package/build/client/_app/immutable/nodes/7.E4FAL2cc.js.br +0 -0
  88. package/build/client/_app/immutable/nodes/7.E4FAL2cc.js.gz +0 -0
  89. package/build/client/_app/immutable/nodes/8.By5-pJpM.js +1 -0
  90. package/build/client/_app/immutable/nodes/8.By5-pJpM.js.br +0 -0
  91. package/build/client/_app/immutable/nodes/8.By5-pJpM.js.gz +0 -0
  92. package/build/client/_app/immutable/nodes/9.HfUnLyFj.js +2 -0
  93. package/build/client/_app/immutable/nodes/9.HfUnLyFj.js.br +0 -0
  94. package/build/client/_app/immutable/nodes/9.HfUnLyFj.js.gz +0 -0
  95. package/build/client/_app/version.json +1 -1
  96. package/build/client/_app/version.json.br +0 -0
  97. package/build/client/_app/version.json.gz +0 -0
  98. package/build/client/setup/wizard.css +134 -389
  99. package/build/client/setup/wizard.css.br +0 -0
  100. package/build/client/setup/wizard.css.gz +0 -0
  101. package/build/server/chunks/0-BK7D9z9V.js +9 -0
  102. package/build/server/chunks/{0-BV-dSgKl.js.map → 0-BK7D9z9V.js.map} +1 -1
  103. package/build/server/chunks/1-DiEYpQIN.js +9 -0
  104. package/build/server/chunks/{1-BaC08_Sf.js.map → 1-DiEYpQIN.js.map} +1 -1
  105. package/build/server/chunks/2-DQWoUtW1.js +9 -0
  106. package/build/server/chunks/{2-C2y4ydWU.js.map → 2-DQWoUtW1.js.map} +1 -1
  107. package/build/server/chunks/{3-BgeGdVvT.js → 3-COIGgysA.js} +2 -2
  108. package/build/server/chunks/{3-BgeGdVvT.js.map → 3-COIGgysA.js.map} +1 -1
  109. package/build/server/chunks/4-pHqpXb3H.js +9 -0
  110. package/build/server/chunks/4-pHqpXb3H.js.map +1 -0
  111. package/build/server/chunks/5-D48D_0uX.js +9 -0
  112. package/build/server/chunks/5-D48D_0uX.js.map +1 -0
  113. package/build/server/chunks/6-CQ5NktVc.js +9 -0
  114. package/build/server/chunks/6-CQ5NktVc.js.map +1 -0
  115. package/build/server/chunks/7-Cbs2uIrU.js +9 -0
  116. package/build/server/chunks/7-Cbs2uIrU.js.map +1 -0
  117. package/build/server/chunks/8-Cp8CGb0N.js +35 -0
  118. package/build/server/chunks/8-Cp8CGb0N.js.map +1 -0
  119. package/build/server/chunks/9-BKnkc58p.js +9 -0
  120. package/build/server/chunks/9-BKnkc58p.js.map +1 -0
  121. package/build/server/chunks/Navbar-PVEly3CX.js +1003 -0
  122. package/build/server/chunks/Navbar-PVEly3CX.js.map +1 -0
  123. package/build/server/chunks/Spinner-Bk6e83RX.js +12 -0
  124. package/build/server/chunks/Spinner-Bk6e83RX.js.map +1 -0
  125. package/build/server/chunks/VoiceProfileSelector-CbOV_v5A.js +306 -0
  126. package/build/server/chunks/VoiceProfileSelector-CbOV_v5A.js.map +1 -0
  127. package/build/server/chunks/{_layout.svelte-B93aaRP_.js → _layout.svelte-BV7A7zff.js} +2 -2
  128. package/build/server/chunks/{_layout.svelte-B93aaRP_.js.map → _layout.svelte-BV7A7zff.js.map} +1 -1
  129. package/build/server/chunks/{_layout.svelte-CcloHuB_.js → _layout.svelte-COQuY-BN.js} +8 -8
  130. package/build/server/chunks/_layout.svelte-COQuY-BN.js.map +1 -0
  131. package/build/server/chunks/{_page.svelte-24A1xNrb.js → _page.svelte-B1SlSu-R.js} +78 -81
  132. package/build/server/chunks/_page.svelte-B1SlSu-R.js.map +1 -0
  133. package/build/server/chunks/_page.svelte-BY2APmQv.js +27 -0
  134. package/build/server/chunks/_page.svelte-BY2APmQv.js.map +1 -0
  135. package/build/server/chunks/{_page.svelte-D0gMlmzQ.js → _page.svelte-CDCe-J7o.js} +9 -15
  136. package/build/server/chunks/_page.svelte-CDCe-J7o.js.map +1 -0
  137. package/build/server/chunks/_page.svelte-CF6Wb9iE.js +2590 -0
  138. package/build/server/chunks/_page.svelte-CF6Wb9iE.js.map +1 -0
  139. package/build/server/chunks/_page.svelte-DadWXVrr.js +70 -0
  140. package/build/server/chunks/_page.svelte-DadWXVrr.js.map +1 -0
  141. package/build/server/chunks/_page.svelte-DtrBTed5.js +37 -0
  142. package/build/server/chunks/_page.svelte-DtrBTed5.js.map +1 -0
  143. package/build/server/chunks/{_server.ts-UF_kxNaU.js → _server.ts-31Wp0zcV.js} +8 -8
  144. package/build/server/chunks/{_server.ts-UF_kxNaU.js.map → _server.ts-31Wp0zcV.js.map} +1 -1
  145. package/build/server/chunks/{_server.ts-Bdry_CdG.js → _server.ts-8c17N53a.js} +8 -8
  146. package/build/server/chunks/{_server.ts-Bdry_CdG.js.map → _server.ts-8c17N53a.js.map} +1 -1
  147. package/build/server/chunks/{_server.ts-rXhjnBtw.js → _server.ts-B0CeVe_2.js} +8 -8
  148. package/build/server/chunks/{_server.ts-rXhjnBtw.js.map → _server.ts-B0CeVe_2.js.map} +1 -1
  149. package/build/server/chunks/{_server.ts-D_dO8hvJ.js → _server.ts-B2vBBz6Q.js} +8 -8
  150. package/build/server/chunks/{_server.ts-D_dO8hvJ.js.map → _server.ts-B2vBBz6Q.js.map} +1 -1
  151. package/build/server/chunks/{_server.ts-C1DcK_rP.js → _server.ts-B3uweiKb.js} +10 -10
  152. package/build/server/chunks/{_server.ts-C1DcK_rP.js.map → _server.ts-B3uweiKb.js.map} +1 -1
  153. package/build/server/chunks/_server.ts-B8pCRdwo.js +95 -0
  154. package/build/server/chunks/_server.ts-B8pCRdwo.js.map +1 -0
  155. package/build/server/chunks/{_server.ts-CLBKpKeH.js → _server.ts-BBsksu6b.js} +10 -10
  156. package/build/server/chunks/{_server.ts-CLBKpKeH.js.map → _server.ts-BBsksu6b.js.map} +1 -1
  157. package/build/server/chunks/{_server.ts-DMKIHwKi.js → _server.ts-BDBz43vs.js} +8 -8
  158. package/build/server/chunks/{_server.ts-DMKIHwKi.js.map → _server.ts-BDBz43vs.js.map} +1 -1
  159. package/build/server/chunks/{_server.ts-Da9y6lio.js → _server.ts-BLePivrN.js} +10 -10
  160. package/build/server/chunks/{_server.ts-Da9y6lio.js.map → _server.ts-BLePivrN.js.map} +1 -1
  161. package/build/server/chunks/{_server.ts-DmyOp1yq.js → _server.ts-BMHPNIdu.js} +8 -8
  162. package/build/server/chunks/{_server.ts-DmyOp1yq.js.map → _server.ts-BMHPNIdu.js.map} +1 -1
  163. package/build/server/chunks/{_server.ts-DdlF1vjy.js → _server.ts-BN3w-iUI.js} +8 -8
  164. package/build/server/chunks/{_server.ts-DdlF1vjy.js.map → _server.ts-BN3w-iUI.js.map} +1 -1
  165. package/build/server/chunks/{_server.ts-xO4nhxDx.js → _server.ts-BYUfQeRr.js} +10 -9
  166. package/build/server/chunks/_server.ts-BYUfQeRr.js.map +1 -0
  167. package/build/server/chunks/{_server.ts-BclZ3UFT.js → _server.ts-BdEX6joM.js} +8 -8
  168. package/build/server/chunks/{_server.ts-BclZ3UFT.js.map → _server.ts-BdEX6joM.js.map} +1 -1
  169. package/build/server/chunks/{_server.ts-CAKTZL2t.js → _server.ts-Bde_Pi6A.js} +9 -9
  170. package/build/server/chunks/{_server.ts-CAKTZL2t.js.map → _server.ts-Bde_Pi6A.js.map} +1 -1
  171. package/build/server/chunks/{_server.ts-otJRaSSq.js → _server.ts-Bh_r4-Vs.js} +9 -9
  172. package/build/server/chunks/{_server.ts-otJRaSSq.js.map → _server.ts-Bh_r4-Vs.js.map} +1 -1
  173. package/build/server/chunks/{_server.ts-De7IOs2z.js → _server.ts-Big7vXEo.js} +7 -7
  174. package/build/server/chunks/{_server.ts-De7IOs2z.js.map → _server.ts-Big7vXEo.js.map} +1 -1
  175. package/build/server/chunks/{_server.ts-CfLbEufw.js → _server.ts-Bl-41j0D.js} +8 -8
  176. package/build/server/chunks/{_server.ts-CfLbEufw.js.map → _server.ts-Bl-41j0D.js.map} +1 -1
  177. package/build/server/chunks/{_server.ts-C_fNO73y.js → _server.ts-BnWc1lOg.js} +8 -8
  178. package/build/server/chunks/{_server.ts-C_fNO73y.js.map → _server.ts-BnWc1lOg.js.map} +1 -1
  179. package/build/server/chunks/{_server.ts-Bg8OpPuA.js → _server.ts-BoQ46bw9.js} +9 -9
  180. package/build/server/chunks/{_server.ts-Bg8OpPuA.js.map → _server.ts-BoQ46bw9.js.map} +1 -1
  181. package/build/server/chunks/{_server.ts-D2wlMMJl.js → _server.ts-BwgtyrgF.js} +11 -11
  182. package/build/server/chunks/_server.ts-BwgtyrgF.js.map +1 -0
  183. package/build/server/chunks/{_server.ts-BjrO7pvn.js → _server.ts-By47s5kb.js} +9 -9
  184. package/build/server/chunks/{_server.ts-BjrO7pvn.js.map → _server.ts-By47s5kb.js.map} +1 -1
  185. package/build/server/chunks/{_server.ts-CtZuKotA.js → _server.ts-C-9V_-cK.js} +31 -8
  186. package/build/server/chunks/_server.ts-C-9V_-cK.js.map +1 -0
  187. package/build/server/chunks/{_server.ts-B8JtVHLy.js → _server.ts-C-xID91b.js} +8 -8
  188. package/build/server/chunks/{_server.ts-B8JtVHLy.js.map → _server.ts-C-xID91b.js.map} +1 -1
  189. package/build/server/chunks/{_server.ts-wZ88P3nX.js → _server.ts-C1GoICVF.js} +10 -10
  190. package/build/server/chunks/{_server.ts-wZ88P3nX.js.map → _server.ts-C1GoICVF.js.map} +1 -1
  191. package/build/server/chunks/{_server.ts-D7L27_xI.js → _server.ts-C25PdnDT.js} +5 -5
  192. package/build/server/chunks/{_server.ts-D7L27_xI.js.map → _server.ts-C25PdnDT.js.map} +1 -1
  193. package/build/server/chunks/{_server.ts-Dq82kHyx.js → _server.ts-CCwIt_KL.js} +8 -8
  194. package/build/server/chunks/{_server.ts-Dq82kHyx.js.map → _server.ts-CCwIt_KL.js.map} +1 -1
  195. package/build/server/chunks/_server.ts-CKNmPEUu.js +101 -0
  196. package/build/server/chunks/_server.ts-CKNmPEUu.js.map +1 -0
  197. package/build/server/chunks/{_server.ts-DVekHgMN.js → _server.ts-COMRHDN4.js} +11 -10
  198. package/build/server/chunks/_server.ts-COMRHDN4.js.map +1 -0
  199. package/build/server/chunks/{_server.ts-CqHMhINi.js → _server.ts-CU1go_Ga.js} +8 -8
  200. package/build/server/chunks/{_server.ts-CqHMhINi.js.map → _server.ts-CU1go_Ga.js.map} +1 -1
  201. package/build/server/chunks/{_server.ts-BaxRyhZ8.js → _server.ts-CbZzxQR_.js} +8 -8
  202. package/build/server/chunks/{_server.ts-BaxRyhZ8.js.map → _server.ts-CbZzxQR_.js.map} +1 -1
  203. package/build/server/chunks/{_server.ts-DclRsTpW.js → _server.ts-Cm9oppJJ.js} +8 -8
  204. package/build/server/chunks/{_server.ts-DclRsTpW.js.map → _server.ts-Cm9oppJJ.js.map} +1 -1
  205. package/build/server/chunks/{_server.ts-BwHojI4i.js → _server.ts-CmMcnrpu.js} +6 -6
  206. package/build/server/chunks/{_server.ts-BwHojI4i.js.map → _server.ts-CmMcnrpu.js.map} +1 -1
  207. package/build/server/chunks/{_server.ts-CrU9r7-F.js → _server.ts-CqkM3R41.js} +8 -8
  208. package/build/server/chunks/{_server.ts-CrU9r7-F.js.map → _server.ts-CqkM3R41.js.map} +1 -1
  209. package/build/server/chunks/{_server.ts-B6FENZO7.js → _server.ts-Cszg5Fas.js} +8 -8
  210. package/build/server/chunks/{_server.ts-B6FENZO7.js.map → _server.ts-Cszg5Fas.js.map} +1 -1
  211. package/build/server/chunks/{_server.ts-Bd_I8GjG.js → _server.ts-CxJxINit.js} +8 -8
  212. package/build/server/chunks/{_server.ts-Bd_I8GjG.js.map → _server.ts-CxJxINit.js.map} +1 -1
  213. package/build/server/chunks/{_server.ts-DnKTcT9x.js → _server.ts-D-9t8-nD.js} +7 -7
  214. package/build/server/chunks/{_server.ts-DnKTcT9x.js.map → _server.ts-D-9t8-nD.js.map} +1 -1
  215. package/build/server/chunks/{_server.ts-EZS5Qan4.js → _server.ts-D1bJgR3K.js} +8 -8
  216. package/build/server/chunks/{_server.ts-EZS5Qan4.js.map → _server.ts-D1bJgR3K.js.map} +1 -1
  217. package/build/server/chunks/{_server.ts-BYdXdnje.js → _server.ts-D2DzSUG5.js} +8 -8
  218. package/build/server/chunks/{_server.ts-BYdXdnje.js.map → _server.ts-D2DzSUG5.js.map} +1 -1
  219. package/build/server/chunks/{_server.ts-eK_9jY-9.js → _server.ts-D2HqJdkr.js} +8 -8
  220. package/build/server/chunks/{_server.ts-eK_9jY-9.js.map → _server.ts-D2HqJdkr.js.map} +1 -1
  221. package/build/server/chunks/{_server.ts-CSgPjCYv.js → _server.ts-D2QOo_fa.js} +8 -8
  222. package/build/server/chunks/{_server.ts-CSgPjCYv.js.map → _server.ts-D2QOo_fa.js.map} +1 -1
  223. package/build/server/chunks/{_server.ts-dhkEt2p6.js → _server.ts-D4Vu3KCM.js} +8 -8
  224. package/build/server/chunks/{_server.ts-dhkEt2p6.js.map → _server.ts-D4Vu3KCM.js.map} +1 -1
  225. package/build/server/chunks/{_server.ts-CG409cWi.js → _server.ts-D68iKpcP.js} +8 -8
  226. package/build/server/chunks/{_server.ts-CG409cWi.js.map → _server.ts-D68iKpcP.js.map} +1 -1
  227. package/build/server/chunks/{_server.ts-DTyZan5L.js → _server.ts-D7vymw_o.js} +8 -8
  228. package/build/server/chunks/{_server.ts-DTyZan5L.js.map → _server.ts-D7vymw_o.js.map} +1 -1
  229. package/build/server/chunks/{_server.ts-B3tjtq2m.js → _server.ts-DL9CCFsk.js} +8 -8
  230. package/build/server/chunks/{_server.ts-B3tjtq2m.js.map → _server.ts-DL9CCFsk.js.map} +1 -1
  231. package/build/server/chunks/{_server.ts-Bq2S1OMq.js → _server.ts-DSBUjxDK.js} +8 -8
  232. package/build/server/chunks/{_server.ts-Bq2S1OMq.js.map → _server.ts-DSBUjxDK.js.map} +1 -1
  233. package/build/server/chunks/{_server.ts-fsEmx9mw.js → _server.ts-DSlYMYYk.js} +8 -8
  234. package/build/server/chunks/{_server.ts-fsEmx9mw.js.map → _server.ts-DSlYMYYk.js.map} +1 -1
  235. package/build/server/chunks/{_server.ts-DzWtvjem.js → _server.ts-DTJuIcDg.js} +8 -8
  236. package/build/server/chunks/{_server.ts-DzWtvjem.js.map → _server.ts-DTJuIcDg.js.map} +1 -1
  237. package/build/server/chunks/{_server.ts-C1y3X6iK.js → _server.ts-DUmy4wsR.js} +9 -9
  238. package/build/server/chunks/{_server.ts-C1y3X6iK.js.map → _server.ts-DUmy4wsR.js.map} +1 -1
  239. package/build/server/chunks/{_server.ts-5CjguYY3.js → _server.ts-DfFo95a7.js} +8 -8
  240. package/build/server/chunks/{_server.ts-5CjguYY3.js.map → _server.ts-DfFo95a7.js.map} +1 -1
  241. package/build/server/chunks/{_server.ts-DqVJ1NqI.js → _server.ts-Dfx9HNlr.js} +10 -11
  242. package/build/server/chunks/_server.ts-Dfx9HNlr.js.map +1 -0
  243. package/build/server/chunks/{_server.ts-yimewsjO.js → _server.ts-DgQDDDEz.js} +8 -8
  244. package/build/server/chunks/{_server.ts-yimewsjO.js.map → _server.ts-DgQDDDEz.js.map} +1 -1
  245. package/build/server/chunks/{_server.ts-l4CK3c4j.js → _server.ts-DgZ2d-BT.js} +8 -8
  246. package/build/server/chunks/{_server.ts-l4CK3c4j.js.map → _server.ts-DgZ2d-BT.js.map} +1 -1
  247. package/build/server/chunks/{_server.ts-CQqURrHY.js → _server.ts-DijnYBzX.js} +8 -8
  248. package/build/server/chunks/{_server.ts-CQqURrHY.js.map → _server.ts-DijnYBzX.js.map} +1 -1
  249. package/build/server/chunks/{_server.ts-CDtOOD3Q.js → _server.ts-DlzI77bJ.js} +8 -8
  250. package/build/server/chunks/{_server.ts-CDtOOD3Q.js.map → _server.ts-DlzI77bJ.js.map} +1 -1
  251. package/build/server/chunks/{_server.ts-Bl0YOh50.js → _server.ts-DnBzi352.js} +8 -8
  252. package/build/server/chunks/{_server.ts-Bl0YOh50.js.map → _server.ts-DnBzi352.js.map} +1 -1
  253. package/build/server/chunks/{_server.ts-CLiYOnOv.js → _server.ts-Dnh6b7-J.js} +8 -8
  254. package/build/server/chunks/{_server.ts-CLiYOnOv.js.map → _server.ts-Dnh6b7-J.js.map} +1 -1
  255. package/build/server/chunks/{_server.ts-B4N5gO26.js → _server.ts-Dvh0Hoso.js} +8 -8
  256. package/build/server/chunks/{_server.ts-B4N5gO26.js.map → _server.ts-Dvh0Hoso.js.map} +1 -1
  257. package/build/server/chunks/{_server.ts-CJL8da0o.js → _server.ts-DwB3oRpy.js} +8 -8
  258. package/build/server/chunks/{_server.ts-CJL8da0o.js.map → _server.ts-DwB3oRpy.js.map} +1 -1
  259. package/build/server/chunks/{_server.ts-BkoJOqrr.js → _server.ts-DxGR3bmq.js} +7 -7
  260. package/build/server/chunks/{_server.ts-BkoJOqrr.js.map → _server.ts-DxGR3bmq.js.map} +1 -1
  261. package/build/server/chunks/{_server.ts-C-lN2ZUO.js → _server.ts-DzbC2VQR.js} +6 -6
  262. package/build/server/chunks/{_server.ts-C-lN2ZUO.js.map → _server.ts-DzbC2VQR.js.map} +1 -1
  263. package/build/server/chunks/{_server.ts-P4pmd9NX.js → _server.ts-GxTTkaRQ.js} +8 -8
  264. package/build/server/chunks/{_server.ts-P4pmd9NX.js.map → _server.ts-GxTTkaRQ.js.map} +1 -1
  265. package/build/server/chunks/{_server.ts-I0iKpsyr.js → _server.ts-K4R4Q6b_.js} +9 -9
  266. package/build/server/chunks/{_server.ts-I0iKpsyr.js.map → _server.ts-K4R4Q6b_.js.map} +1 -1
  267. package/build/server/chunks/{_server.ts-BR9OrjcE.js → _server.ts-MNOR6YaX.js} +8 -8
  268. package/build/server/chunks/{_server.ts-BR9OrjcE.js.map → _server.ts-MNOR6YaX.js.map} +1 -1
  269. package/build/server/chunks/{_server.ts-D-sjM5kn.js → _server.ts-MtHT_432.js} +8 -8
  270. package/build/server/chunks/{_server.ts-D-sjM5kn.js.map → _server.ts-MtHT_432.js.map} +1 -1
  271. package/build/server/chunks/{_server.ts-DbO3cg55.js → _server.ts-Om-m3OOe.js} +8 -8
  272. package/build/server/chunks/{_server.ts-DbO3cg55.js.map → _server.ts-Om-m3OOe.js.map} +1 -1
  273. package/build/server/chunks/{_server.ts-DWN6TJv0.js → _server.ts-URUUrX13.js} +7 -15
  274. package/build/server/chunks/_server.ts-URUUrX13.js.map +1 -0
  275. package/build/server/chunks/{_server.ts-C5s-OXCm.js → _server.ts-__ul4l8J.js} +8 -8
  276. package/build/server/chunks/_server.ts-__ul4l8J.js.map +1 -0
  277. package/build/server/chunks/{_server.ts-BmZlEy27.js → _server.ts-oqC79KoF.js} +8 -8
  278. package/build/server/chunks/{_server.ts-BmZlEy27.js.map → _server.ts-oqC79KoF.js.map} +1 -1
  279. package/build/server/chunks/{_server.ts-b3mVtmkb.js → _server.ts-w34_y9d_.js} +8 -8
  280. package/build/server/chunks/{_server.ts-b3mVtmkb.js.map → _server.ts-w34_y9d_.js.map} +1 -1
  281. package/build/server/chunks/{_server.ts-DWLkr6Qg.js → _server.ts-yvQ-qjyI.js} +8 -8
  282. package/build/server/chunks/{_server.ts-DWLkr6Qg.js.map → _server.ts-yvQ-qjyI.js.map} +1 -1
  283. package/build/server/chunks/{_server.ts-CcTt5aAs.js → _server.ts-zHkS9Tnj.js} +6 -6
  284. package/build/server/chunks/{_server.ts-CcTt5aAs.js.map → _server.ts-zHkS9Tnj.js.map} +1 -1
  285. package/build/server/chunks/{addon-helpers-BpnH-GEc.js → addon-helpers-CZyPj8WN.js} +3 -3
  286. package/build/server/chunks/{addon-helpers-BpnH-GEc.js.map → addon-helpers-CZyPj8WN.js.map} +1 -1
  287. package/build/server/chunks/{state-D0tEXcn4.js → client-CiyZ88m2.js} +29 -56
  288. package/build/server/chunks/client-CiyZ88m2.js.map +1 -0
  289. package/build/server/chunks/{config-0LFudKuE.js → config-BKCgm_AV.js} +2 -2
  290. package/build/server/chunks/{config-0LFudKuE.js.map → config-BKCgm_AV.js.map} +1 -1
  291. package/build/server/chunks/{dev-DjANv7AF.js → dev-B6xUe35c.js} +23 -2
  292. package/build/server/chunks/dev-B6xUe35c.js.map +1 -0
  293. package/build/server/chunks/{docker-B23w4kr6.js → docker-8AuF7CwZ.js} +2 -2
  294. package/build/server/chunks/{docker-B23w4kr6.js.map → docker-8AuF7CwZ.js.map} +1 -1
  295. package/build/server/chunks/{endpoints-Drq_J-2Z.js → endpoints-DaDle7pk.js} +2 -2
  296. package/build/server/chunks/{endpoints-Drq_J-2Z.js.map → endpoints-DaDle7pk.js.map} +1 -1
  297. package/build/server/chunks/environment-Cp1uhq6U.js +36 -0
  298. package/build/server/chunks/environment-Cp1uhq6U.js.map +1 -0
  299. package/build/server/chunks/{error.svelte-B_yfxYYS.js → error.svelte-m6KMTHAJ.js} +6 -5
  300. package/build/server/chunks/{error.svelte-B_yfxYYS.js.map → error.svelte-m6KMTHAJ.js.map} +1 -1
  301. package/build/server/chunks/{helpers-CX6xRBmt.js → helpers-BACi22nU.js} +44 -8
  302. package/build/server/chunks/helpers-BACi22nU.js.map +1 -0
  303. package/build/server/chunks/{hooks.server-BEVMYNQ4.js → hooks.server-BdyM6mgJ.js} +23 -8
  304. package/build/server/chunks/hooks.server-BdyM6mgJ.js.map +1 -0
  305. package/build/server/chunks/{http-VqOG8hyj.js → http-B8eIxVUs.js} +2 -2
  306. package/build/server/chunks/{http-VqOG8hyj.js.map → http-B8eIxVUs.js.map} +1 -1
  307. package/build/server/chunks/{internal-DRqRyEjV.js → internal-BxEwVWRz.js} +4 -4
  308. package/build/server/chunks/internal-BxEwVWRz.js.map +1 -0
  309. package/build/server/chunks/session-cookie-CFbH9CoY.js +74 -0
  310. package/build/server/chunks/session-cookie-CFbH9CoY.js.map +1 -0
  311. package/build/server/chunks/{setup-deploy-B4oSSFYi.js → setup-deploy-Ck_d_qcE.js} +2 -2
  312. package/build/server/chunks/{setup-deploy-B4oSSFYi.js.map → setup-deploy-Ck_d_qcE.js.map} +1 -1
  313. package/build/server/chunks/{src-BkvQ5Uuf.js → src-CQbie-rx.js} +4012 -3472
  314. package/build/server/chunks/src-CQbie-rx.js.map +1 -0
  315. package/build/server/chunks/state-oN2SUx4y.js +62 -0
  316. package/build/server/chunks/state-oN2SUx4y.js.map +1 -0
  317. package/build/server/chunks/{theme-state.svelte-PtPMmKGN.js → theme-state.svelte-CE13yM0n.js} +18 -27
  318. package/build/server/chunks/theme-state.svelte-CE13yM0n.js.map +1 -0
  319. package/build/server/index.js +3 -33
  320. package/build/server/index.js.map +1 -1
  321. package/build/server/manifest.js +102 -80
  322. package/build/server/manifest.js.map +1 -1
  323. package/package.json +8 -6
  324. package/build/client/_app/immutable/assets/0.DS8L5ANe.css +0 -1
  325. package/build/client/_app/immutable/assets/0.DS8L5ANe.css.br +0 -0
  326. package/build/client/_app/immutable/assets/0.DS8L5ANe.css.gz +0 -0
  327. package/build/client/_app/immutable/assets/4.Dj7oigNN.css +0 -1
  328. package/build/client/_app/immutable/assets/4.Dj7oigNN.css.br +0 -0
  329. package/build/client/_app/immutable/assets/4.Dj7oigNN.css.gz +0 -0
  330. package/build/client/_app/immutable/assets/6.COn4HE1H.css +0 -1
  331. package/build/client/_app/immutable/assets/6.COn4HE1H.css.br +0 -0
  332. package/build/client/_app/immutable/assets/6.COn4HE1H.css.gz +0 -0
  333. package/build/client/_app/immutable/assets/7.gblpY08p.css +0 -1
  334. package/build/client/_app/immutable/assets/7.gblpY08p.css.br +0 -0
  335. package/build/client/_app/immutable/assets/7.gblpY08p.css.gz +0 -0
  336. package/build/client/_app/immutable/assets/8.DjrHy5wu.css +0 -1
  337. package/build/client/_app/immutable/assets/8.DjrHy5wu.css.br +0 -0
  338. package/build/client/_app/immutable/assets/8.DjrHy5wu.css.gz +0 -0
  339. package/build/client/_app/immutable/assets/AuthGate.BTdwrgKg.css +0 -1
  340. package/build/client/_app/immutable/assets/AuthGate.BTdwrgKg.css.br +0 -0
  341. package/build/client/_app/immutable/assets/AuthGate.BTdwrgKg.css.gz +0 -0
  342. package/build/client/_app/immutable/assets/VoiceProfileSelector.Dp7tWdKe.css +0 -1
  343. package/build/client/_app/immutable/assets/VoiceProfileSelector.Dp7tWdKe.css.br +0 -0
  344. package/build/client/_app/immutable/assets/VoiceProfileSelector.Dp7tWdKe.css.gz +0 -0
  345. package/build/client/_app/immutable/chunks/B7bBnuEe.js +0 -1
  346. package/build/client/_app/immutable/chunks/B7bBnuEe.js.br +0 -0
  347. package/build/client/_app/immutable/chunks/B7bBnuEe.js.gz +0 -0
  348. package/build/client/_app/immutable/chunks/BW39ik5x.js +0 -1
  349. package/build/client/_app/immutable/chunks/BW39ik5x.js.br +0 -0
  350. package/build/client/_app/immutable/chunks/BW39ik5x.js.gz +0 -0
  351. package/build/client/_app/immutable/chunks/BuFlayix.js.br +0 -0
  352. package/build/client/_app/immutable/chunks/BuFlayix.js.gz +0 -0
  353. package/build/client/_app/immutable/chunks/BwTF6U35.js +0 -3
  354. package/build/client/_app/immutable/chunks/BwTF6U35.js.br +0 -0
  355. package/build/client/_app/immutable/chunks/BwTF6U35.js.gz +0 -0
  356. package/build/client/_app/immutable/chunks/Cb_i8bV9.js +0 -1
  357. package/build/client/_app/immutable/chunks/Cb_i8bV9.js.br +0 -0
  358. package/build/client/_app/immutable/chunks/Cb_i8bV9.js.gz +0 -0
  359. package/build/client/_app/immutable/chunks/DXseS2Vw.js +0 -1
  360. package/build/client/_app/immutable/chunks/DXseS2Vw.js.br +0 -0
  361. package/build/client/_app/immutable/chunks/DXseS2Vw.js.gz +0 -0
  362. package/build/client/_app/immutable/chunks/os2NZ37U.js +0 -1
  363. package/build/client/_app/immutable/chunks/os2NZ37U.js.br +0 -1
  364. package/build/client/_app/immutable/chunks/os2NZ37U.js.gz +0 -0
  365. package/build/client/_app/immutable/chunks/yIwPo_wo.js +0 -5
  366. package/build/client/_app/immutable/chunks/yIwPo_wo.js.br +0 -0
  367. package/build/client/_app/immutable/chunks/yIwPo_wo.js.gz +0 -0
  368. package/build/client/_app/immutable/entry/app.v-Fuqj7D.js +0 -2
  369. package/build/client/_app/immutable/entry/app.v-Fuqj7D.js.br +0 -0
  370. package/build/client/_app/immutable/entry/app.v-Fuqj7D.js.gz +0 -0
  371. package/build/client/_app/immutable/entry/start.h2IOTLqd.js +0 -1
  372. package/build/client/_app/immutable/entry/start.h2IOTLqd.js.br +0 -0
  373. package/build/client/_app/immutable/entry/start.h2IOTLqd.js.gz +0 -0
  374. package/build/client/_app/immutable/nodes/0.BHFOJkcF.js +0 -1
  375. package/build/client/_app/immutable/nodes/0.BHFOJkcF.js.br +0 -0
  376. package/build/client/_app/immutable/nodes/0.BHFOJkcF.js.gz +0 -0
  377. package/build/client/_app/immutable/nodes/1.DZaTVyfp.js +0 -1
  378. package/build/client/_app/immutable/nodes/1.DZaTVyfp.js.br +0 -0
  379. package/build/client/_app/immutable/nodes/1.DZaTVyfp.js.gz +0 -0
  380. package/build/client/_app/immutable/nodes/2.ojh8oE7F.js +0 -1
  381. package/build/client/_app/immutable/nodes/2.ojh8oE7F.js.br +0 -0
  382. package/build/client/_app/immutable/nodes/2.ojh8oE7F.js.gz +0 -0
  383. package/build/client/_app/immutable/nodes/3.DeAC3yVJ.js +0 -1
  384. package/build/client/_app/immutable/nodes/3.DeAC3yVJ.js.br +0 -0
  385. package/build/client/_app/immutable/nodes/3.DeAC3yVJ.js.gz +0 -0
  386. package/build/client/_app/immutable/nodes/4.DXR2B9JX.js +0 -19
  387. package/build/client/_app/immutable/nodes/4.DXR2B9JX.js.br +0 -0
  388. package/build/client/_app/immutable/nodes/4.DXR2B9JX.js.gz +0 -0
  389. package/build/client/_app/immutable/nodes/5.DOoWjdno.js +0 -4
  390. package/build/client/_app/immutable/nodes/5.DOoWjdno.js.br +0 -0
  391. package/build/client/_app/immutable/nodes/5.DOoWjdno.js.gz +0 -0
  392. package/build/client/_app/immutable/nodes/6.Rdn2byIl.js +0 -1
  393. package/build/client/_app/immutable/nodes/6.Rdn2byIl.js.br +0 -0
  394. package/build/client/_app/immutable/nodes/6.Rdn2byIl.js.gz +0 -0
  395. package/build/client/_app/immutable/nodes/7.BPYbekMv.js +0 -15
  396. package/build/client/_app/immutable/nodes/7.BPYbekMv.js.br +0 -0
  397. package/build/client/_app/immutable/nodes/7.BPYbekMv.js.gz +0 -0
  398. package/build/client/_app/immutable/nodes/8.DNsQWKjK.js +0 -2
  399. package/build/client/_app/immutable/nodes/8.DNsQWKjK.js.br +0 -0
  400. package/build/client/_app/immutable/nodes/8.DNsQWKjK.js.gz +0 -0
  401. package/build/server/chunks/0-BV-dSgKl.js +0 -9
  402. package/build/server/chunks/1-BaC08_Sf.js +0 -9
  403. package/build/server/chunks/2-C2y4ydWU.js +0 -9
  404. package/build/server/chunks/4-aThWANXD.js +0 -9
  405. package/build/server/chunks/4-aThWANXD.js.map +0 -1
  406. package/build/server/chunks/5-DLhgTDFN.js +0 -9
  407. package/build/server/chunks/5-DLhgTDFN.js.map +0 -1
  408. package/build/server/chunks/6-DwkLbgop.js +0 -9
  409. package/build/server/chunks/6-DwkLbgop.js.map +0 -1
  410. package/build/server/chunks/7-D5gXKRbq.js +0 -9
  411. package/build/server/chunks/7-D5gXKRbq.js.map +0 -1
  412. package/build/server/chunks/8-b9MOJ1zI.js +0 -9
  413. package/build/server/chunks/8-b9MOJ1zI.js.map +0 -1
  414. package/build/server/chunks/AuthGate-DL3Htqtl.js +0 -773
  415. package/build/server/chunks/AuthGate-DL3Htqtl.js.map +0 -1
  416. package/build/server/chunks/_layout.svelte-CcloHuB_.js.map +0 -1
  417. package/build/server/chunks/_page.svelte-24A1xNrb.js.map +0 -1
  418. package/build/server/chunks/_page.svelte-BNcatsUe.js +0 -414
  419. package/build/server/chunks/_page.svelte-BNcatsUe.js.map +0 -1
  420. package/build/server/chunks/_page.svelte-CQXBb6Vv.js +0 -106
  421. package/build/server/chunks/_page.svelte-CQXBb6Vv.js.map +0 -1
  422. package/build/server/chunks/_page.svelte-D0gMlmzQ.js.map +0 -1
  423. package/build/server/chunks/_page.svelte-DJuM-_YW.js +0 -66
  424. package/build/server/chunks/_page.svelte-DJuM-_YW.js.map +0 -1
  425. package/build/server/chunks/_server.ts-C5s-OXCm.js.map +0 -1
  426. package/build/server/chunks/_server.ts-CtZuKotA.js.map +0 -1
  427. package/build/server/chunks/_server.ts-D2wlMMJl.js.map +0 -1
  428. package/build/server/chunks/_server.ts-DVekHgMN.js.map +0 -1
  429. package/build/server/chunks/_server.ts-DWN6TJv0.js.map +0 -1
  430. package/build/server/chunks/_server.ts-DqVJ1NqI.js.map +0 -1
  431. package/build/server/chunks/_server.ts-xO4nhxDx.js.map +0 -1
  432. package/build/server/chunks/dev-DjANv7AF.js.map +0 -1
  433. package/build/server/chunks/helpers-CX6xRBmt.js.map +0 -1
  434. package/build/server/chunks/hooks.server-BEVMYNQ4.js.map +0 -1
  435. package/build/server/chunks/internal-DRqRyEjV.js.map +0 -1
  436. package/build/server/chunks/src-BkvQ5Uuf.js.map +0 -1
  437. package/build/server/chunks/state-D0tEXcn4.js.map +0 -1
  438. package/build/server/chunks/theme-state.svelte-PtPMmKGN.js.map +0 -1
@@ -1,773 +0,0 @@
1
- import { d as attr, p as escape_html, m as derived, n as ensure_array_like, e as attr_class } from './dev-DjANv7AF.js';
2
- import { o as onDestroy, p as page } from './state-D0tEXcn4.js';
3
- import { b as fetchEndpoints, k as setActiveEndpoint, l as listSessions, j as getSessionMessages, c as createSession, s as sendChatMessage, v as voiceState, m as speakText, o as stopSpeaking, d as destroyVoice, t as themeService } from './theme-state.svelte-PtPMmKGN.js';
4
-
5
- //#region src/lib/chat/session-events.ts
6
- var INITIAL_BACKOFF_MS = 1e3;
7
- var MAX_BACKOFF_MS = 3e4;
8
- var STREAM_URL = "/proxy/assistant/event";
9
- /**
10
- * Parse one `\n\n`-delimited SSE frame. Multi-line `data:` fields are
11
- * concatenated with `\n` per the SSE spec.
12
- */
13
- function parseFrame(chunk) {
14
- const frame = {};
15
- const dataLines = [];
16
- for (const rawLine of chunk.split("\n")) {
17
- if (!rawLine || rawLine.startsWith(":")) continue;
18
- if (rawLine.startsWith("data:")) dataLines.push(rawLine.replace(/^data:\s?/, ""));
19
- else if (rawLine.startsWith("event:")) frame.event = rawLine.replace(/^event:\s?/, "");
20
- else if (rawLine.startsWith("id:")) frame.id = rawLine.replace(/^id:\s?/, "");
21
- }
22
- if (dataLines.length > 0) frame.data = dataLines.join("\n");
23
- return frame;
24
- }
25
- function dispatch(handlers, payload) {
26
- const info = payload.properties?.info;
27
- const id = info?.id;
28
- if (!id) return;
29
- switch (payload.type) {
30
- case "session.created":
31
- handlers.onCreated(id);
32
- return;
33
- case "session.updated":
34
- handlers.onUpdated(id, {
35
- title: info?.title,
36
- updatedAt: info?.time?.updated
37
- });
38
- return;
39
- case "session.deleted":
40
- handlers.onDeleted(id);
41
- return;
42
- default: return;
43
- }
44
- }
45
- /**
46
- * Open an SSE connection to `/proxy/assistant/event` and dispatch
47
- * session-scoped events. Returns an unsubscribe function that aborts the
48
- * stream and prevents reconnection.
49
- */
50
- function subscribeSessionEvents(handlers) {
51
- let stopped = false;
52
- let controller = new AbortController();
53
- let lastEventId;
54
- const sleep = (ms) => new Promise((resolve) => {
55
- const timer = setTimeout(resolve, ms);
56
- controller.signal.addEventListener("abort", () => {
57
- clearTimeout(timer);
58
- resolve();
59
- }, { once: true });
60
- });
61
- async function readStream() {
62
- const headers = { accept: "text/event-stream" };
63
- if (lastEventId !== void 0) headers["Last-Event-ID"] = lastEventId;
64
- const response = await fetch(STREAM_URL, {
65
- method: "GET",
66
- headers,
67
- credentials: "include",
68
- signal: controller.signal
69
- });
70
- if (!response.ok || !response.body) throw new Error(`SSE stream failed: ${response.status} ${response.statusText}`);
71
- handlers.onConnect?.();
72
- const reader = response.body.pipeThrough(new TextDecoderStream()).getReader();
73
- let buffer = "";
74
- try {
75
- while (true) {
76
- const { done, value } = await reader.read();
77
- if (done) break;
78
- buffer += value;
79
- const chunks = buffer.split("\n\n");
80
- buffer = chunks.pop() ?? "";
81
- for (const chunk of chunks) {
82
- if (!chunk) continue;
83
- const frame = parseFrame(chunk);
84
- if (frame.id !== void 0) lastEventId = frame.id;
85
- if (!frame.data) continue;
86
- let payload;
87
- try {
88
- payload = JSON.parse(frame.data);
89
- } catch (err) {
90
- console.warn("[session-events] Bad JSON in SSE frame", err);
91
- continue;
92
- }
93
- dispatch(handlers, payload);
94
- }
95
- }
96
- } finally {
97
- try {
98
- reader.releaseLock();
99
- } catch {}
100
- }
101
- }
102
- (async () => {
103
- let attempt = 0;
104
- while (!stopped) try {
105
- attempt++;
106
- await readStream();
107
- attempt = 0;
108
- if (!stopped) await sleep(500);
109
- } catch (err) {
110
- if (stopped) return;
111
- const error = err instanceof Error ? err : new Error(String(err));
112
- if (error.name !== "AbortError") {
113
- console.warn("[session-events] SSE error, reconnecting", error);
114
- handlers.onDisconnect?.(error);
115
- }
116
- await sleep(Math.min(INITIAL_BACKOFF_MS * 2 ** Math.max(0, attempt - 1), MAX_BACKOFF_MS));
117
- if (controller.signal.aborted && !stopped) controller = new AbortController();
118
- }
119
- })();
120
- return () => {
121
- stopped = true;
122
- try {
123
- controller.abort();
124
- } catch {}
125
- };
126
- }
127
- //#endregion
128
- //#region src/lib/chat/chat-state.svelte.ts
129
- function emptyEndpointState() {
130
- return {
131
- sessions: [],
132
- sessionsLoaded: false,
133
- sessionsLoading: false,
134
- sessionsError: "",
135
- activeSessionId: null
136
- };
137
- }
138
- var ChatService = class {
139
- /**
140
- * Per-endpoint session cache. Reassigned on every mutation so Svelte 5
141
- * picks up the change. Never mutate the existing Map in place.
142
- */
143
- byEndpoint = /* @__PURE__ */ new Map();
144
- /**
145
- * Mirrored from `endpointsService.activeId` via `onEndpointChanged()`
146
- * so the chat layer doesn't have to import the endpoint store.
147
- */
148
- activeEndpointId = "default";
149
- /** Messages for the currently rendered session only. */
150
- entries = [];
151
- entriesLoading = false;
152
- sending = false;
153
- error = "";
154
- /**
155
- * Set true while the SSE event stream is connected. Surfaced by the
156
- * SessionPicker as a tiny green/gray dot so the operator can see at a
157
- * glance whether live updates are flowing.
158
- */
159
- liveConnected = false;
160
- /**
161
- * Active SSE subscription handle. Reassigned on every endpoint switch.
162
- * Plain field (not `$state`) — only the chat service touches it.
163
- */
164
- _unsubscribeEvents = null;
165
- #activeSessionId = derived(() => this.byEndpoint.get(this.activeEndpointId)?.activeSessionId ?? null);
166
- get activeSessionId() {
167
- return this.#activeSessionId();
168
- }
169
- set activeSessionId($$value) {
170
- return this.#activeSessionId($$value);
171
- }
172
- setEndpointState(id, patch) {
173
- const next = {
174
- ...this.byEndpoint.get(id) ?? emptyEndpointState(),
175
- ...patch
176
- };
177
- this.byEndpoint = new Map(this.byEndpoint).set(id, next);
178
- return next;
179
- }
180
- /**
181
- * Handle an endpoint switch: load sessions, restore prior or pick
182
- * newest, fetch messages. Mid-generation switches are blocked.
183
- */
184
- async onEndpointChanged(id) {
185
- if (this.sending) {
186
- this.error = "Wait for the current reply to finish before switching.";
187
- return;
188
- }
189
- this.activeEndpointId = id;
190
- this.entries = [];
191
- this.error = "";
192
- if (!this.byEndpoint.get(id)?.sessionsLoaded) await this.loadSessions();
193
- const state = this.byEndpoint.get(id) ?? emptyEndpointState();
194
- const sessions = state.sessions;
195
- const previous = state.activeSessionId;
196
- let nextSessionId = null;
197
- if (previous && sessions.some((s) => s.id === previous)) nextSessionId = previous;
198
- else if (sessions.length > 0) nextSessionId = sessions[0].id;
199
- if (nextSessionId !== state.activeSessionId) this.setEndpointState(id, { activeSessionId: nextSessionId });
200
- if (nextSessionId) await this.openSession(nextSessionId);
201
- this._resubscribeEvents();
202
- }
203
- /**
204
- * Tear down any prior SSE subscription and open a new one. Handlers
205
- * dispatch session.created / updated / deleted into the per-endpoint
206
- * cache, mirroring out-of-band changes (CLI, other clients).
207
- */
208
- _resubscribeEvents() {
209
- if (this._unsubscribeEvents) {
210
- try {
211
- this._unsubscribeEvents();
212
- } catch (err) {
213
- console.warn("[chat] failed to unsubscribe from previous event stream", err);
214
- }
215
- this._unsubscribeEvents = null;
216
- }
217
- this.liveConnected = false;
218
- this._unsubscribeEvents = subscribeSessionEvents({
219
- onCreated: (id) => {
220
- this._onSessionCreated(id);
221
- },
222
- onUpdated: (id, info) => {
223
- this._onSessionUpdated(id, info);
224
- },
225
- onDeleted: (id) => {
226
- this._onSessionDeleted(id);
227
- },
228
- onConnect: () => {
229
- this.liveConnected = true;
230
- },
231
- onDisconnect: () => {
232
- this.liveConnected = false;
233
- }
234
- });
235
- }
236
- /**
237
- * A session was created out-of-band — prepend to the active endpoint's
238
- * list if not already known. Do not auto-switch to it: the user owns
239
- * navigation.
240
- */
241
- _onSessionCreated(sessionId) {
242
- const endpointId = this.activeEndpointId;
243
- const prev = this.byEndpoint.get(endpointId) ?? emptyEndpointState();
244
- if (prev.sessions.some((s) => s.id === sessionId)) return;
245
- const now = Date.now();
246
- const summary = {
247
- id: sessionId,
248
- title: "",
249
- createdAt: now,
250
- updatedAt: now
251
- };
252
- this.setEndpointState(endpointId, {
253
- sessions: [summary, ...prev.sessions],
254
- sessionsLoaded: true
255
- });
256
- }
257
- /**
258
- * A session was touched out-of-band — patch its updatedAt (and title if
259
- * the event carries one) and re-sort. Do NOT refetch messages: if the
260
- * user is viewing this session, leave the in-memory entries alone for
261
- * v1. A follow-up phase can reconcile message deltas via the assistant
262
- * event stream.
263
- */
264
- _onSessionUpdated(sessionId, info) {
265
- const endpointId = this.activeEndpointId;
266
- const prev = this.byEndpoint.get(endpointId);
267
- if (!prev) return;
268
- const idx = prev.sessions.findIndex((s) => s.id === sessionId);
269
- if (idx === -1) return;
270
- const existing = prev.sessions[idx];
271
- const sessions = [{
272
- ...existing,
273
- title: info?.title ?? existing.title,
274
- updatedAt: info?.updatedAt ?? Date.now()
275
- }, ...prev.sessions.filter((s) => s.id !== sessionId)];
276
- sessions.sort((a, b) => b.updatedAt - a.updatedAt);
277
- this.setEndpointState(endpointId, { sessions });
278
- }
279
- /**
280
- * A session was deleted out-of-band. Remove it from the list; if it was
281
- * the active session, fall back to the newest remaining session (or
282
- * null) and reload its messages.
283
- */
284
- async _onSessionDeleted(sessionId) {
285
- const endpointId = this.activeEndpointId;
286
- const prev = this.byEndpoint.get(endpointId);
287
- if (!prev) return;
288
- if (!prev.sessions.some((s) => s.id === sessionId)) return;
289
- const sessions = prev.sessions.filter((s) => s.id !== sessionId);
290
- const wasActive = prev.activeSessionId === sessionId;
291
- const nextActive = wasActive ? sessions[0]?.id ?? null : prev.activeSessionId;
292
- this.setEndpointState(endpointId, {
293
- sessions,
294
- activeSessionId: nextActive
295
- });
296
- if (wasActive) {
297
- this.entries = [];
298
- if (nextActive) await this.openSession(nextActive);
299
- }
300
- }
301
- /** Fetch the session list for the active endpoint. */
302
- async loadSessions() {
303
- const id = this.activeEndpointId;
304
- this.setEndpointState(id, {
305
- sessionsLoading: true,
306
- sessionsError: ""
307
- });
308
- try {
309
- const sessions = await listSessions();
310
- this.setEndpointState(id, {
311
- sessions,
312
- sessionsLoaded: true,
313
- sessionsLoading: false,
314
- sessionsError: ""
315
- });
316
- } catch (e) {
317
- const err = e;
318
- const message = err.status === 503 || err.status === 502 ? "Assistant is not reachable." : err.message ?? "Failed to load sessions.";
319
- this.setEndpointState(id, {
320
- sessionsLoading: false,
321
- sessionsError: message
322
- });
323
- }
324
- }
325
- /** Select a session and render its messages. */
326
- async openSession(sessionId) {
327
- if (this.sending) {
328
- this.error = "Wait for the current reply to finish before switching.";
329
- return;
330
- }
331
- const endpointId = this.activeEndpointId;
332
- this.setEndpointState(endpointId, { activeSessionId: sessionId });
333
- this.entries = [];
334
- this.entriesLoading = true;
335
- this.error = "";
336
- try {
337
- const messages = await getSessionMessages(sessionId);
338
- if (this.activeEndpointId === endpointId && this.byEndpoint.get(endpointId)?.activeSessionId === sessionId) this.entries = messages;
339
- } catch (e) {
340
- const err = e;
341
- if (err.status === 503 || err.status === 502) this.error = "Assistant is not reachable. Try reconnecting.";
342
- else if (err.status === 401) this.error = "Sign-in required.";
343
- else this.error = err.message ?? "Failed to load messages.";
344
- } finally {
345
- this.entriesLoading = false;
346
- }
347
- }
348
- /** Create a new session on the active endpoint and select it. */
349
- async startNewSession() {
350
- if (this.sending) {
351
- this.error = "Wait for the current reply to finish before switching.";
352
- return null;
353
- }
354
- const endpointId = this.activeEndpointId;
355
- this.error = "";
356
- try {
357
- const { id } = await createSession();
358
- const now = Date.now();
359
- const summary = {
360
- id,
361
- title: "",
362
- createdAt: now,
363
- updatedAt: now
364
- };
365
- const prev = this.byEndpoint.get(endpointId) ?? emptyEndpointState();
366
- this.setEndpointState(endpointId, {
367
- sessions: [summary, ...prev.sessions.filter((s) => s.id !== id)],
368
- sessionsLoaded: true,
369
- activeSessionId: id
370
- });
371
- this.entries = [];
372
- return id;
373
- } catch (e) {
374
- const err = e;
375
- this.error = `Failed to start session: ${err.message ?? "unknown error"}`;
376
- return null;
377
- }
378
- }
379
- /**
380
- * Send a message in the active session. If none is active, create one
381
- * first (matches the "zero sessions" empty-state flow).
382
- */
383
- async send(text) {
384
- if (this.sending) return;
385
- const trimmed = text.trim();
386
- if (!trimmed) return;
387
- let sessionId = this.activeSessionId;
388
- if (!sessionId) {
389
- sessionId = await this.startNewSession();
390
- if (!sessionId) return;
391
- }
392
- const userEntry = {
393
- id: crypto.randomUUID(),
394
- role: "user",
395
- text: trimmed,
396
- timestamp: Date.now()
397
- };
398
- this.entries = [...this.entries, userEntry];
399
- this.error = "";
400
- this.sending = true;
401
- try {
402
- const replyText = (await sendChatMessage(sessionId, trimmed)).parts.filter((p) => p.type === "text" && p.text).map((p) => p.text ?? "").join("");
403
- const assistantEntry = {
404
- id: crypto.randomUUID(),
405
- role: "assistant",
406
- text: replyText || "(no response)",
407
- timestamp: Date.now()
408
- };
409
- this.entries = [...this.entries, assistantEntry];
410
- const endpointId = this.activeEndpointId;
411
- const prev = this.byEndpoint.get(endpointId);
412
- if (prev) {
413
- const now = Date.now();
414
- const existing = prev.sessions.find((s) => s.id === sessionId);
415
- const updated = existing ? {
416
- ...existing,
417
- updatedAt: now
418
- } : {
419
- id: sessionId,
420
- title: "",
421
- createdAt: now,
422
- updatedAt: now
423
- };
424
- const rest = prev.sessions.filter((s) => s.id !== sessionId);
425
- this.setEndpointState(endpointId, { sessions: [updated, ...rest] });
426
- }
427
- if (voiceState.ttsSupported && voiceState.ttsAutoEnabled && replyText) speakText(replyText);
428
- } catch (e) {
429
- const err = e;
430
- if (err.status === 503 || err.status === 502) {
431
- this.error = "Assistant is not reachable. Try reconnecting.";
432
- this.setEndpointState(this.activeEndpointId, { activeSessionId: null });
433
- } else if (err.status === 401) this.error = "Sign-in required.";
434
- else this.error = err.message ?? "Message failed.";
435
- } finally {
436
- this.sending = false;
437
- }
438
- }
439
- reset() {
440
- stopSpeaking();
441
- this.entries = [];
442
- this.error = "";
443
- this.byEndpoint = /* @__PURE__ */ new Map();
444
- if (this._unsubscribeEvents) {
445
- try {
446
- this._unsubscribeEvents();
447
- } catch (err) {
448
- console.warn("[chat] failed to unsubscribe from event stream during reset", err);
449
- }
450
- this._unsubscribeEvents = null;
451
- }
452
- this.liveConnected = false;
453
- }
454
- };
455
- var chat = new ChatService();
456
- //#endregion
457
- //#region src/lib/components/VoiceControl.svelte
458
- function VoiceControl($$renderer, $$props) {
459
- $$renderer.component(($$renderer) => {
460
- const MAX_INTERIM_CHARS = 48;
461
- let mounted = false;
462
- onDestroy(() => {
463
- destroyVoice();
464
- });
465
- let supported = derived(() => mounted);
466
- let ttsAvailable = derived(() => mounted);
467
- let isRecording = derived(() => voiceState.status === "recording");
468
- let isTranscribing = derived(() => voiceState.status === "transcribing");
469
- let isProcessing = derived(() => !isRecording() && !isTranscribing() && chat.sending);
470
- let isSpeaking = derived(() => voiceState.status === "speaking");
471
- if (supported() || ttsAvailable() || voiceState.autoplayBlocked) {
472
- $$renderer.push("<!--[0-->");
473
- $$renderer.push(`<div class="voice-control svelte-1a5q9sh" role="toolbar" aria-label="Voice controls">`);
474
- if (isRecording() && voiceState.interimTranscript) {
475
- $$renderer.push("<!--[0-->");
476
- $$renderer.push(`<span class="voice-interim svelte-1a5q9sh" aria-hidden="true"${attr("title", voiceState.interimTranscript)}>${escape_html(voiceState.interimTranscript.length > MAX_INTERIM_CHARS ? voiceState.interimTranscript.slice(0, MAX_INTERIM_CHARS) + "…" : voiceState.interimTranscript)}</span>`);
477
- } else $$renderer.push("<!--[-1-->");
478
- $$renderer.push(`<!--]--> `);
479
- if (voiceState.autoplayBlocked) {
480
- $$renderer.push("<!--[0-->");
481
- $$renderer.push(`<button type="button" class="voice-autoplay-banner svelte-1a5q9sh" aria-label="Resume paused audio" title="Audio was blocked by the browser. Click to resume."><svg aria-hidden="true" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svelte-1a5q9sh"><polygon points="11 5 6 9 2 9 2 15 6 15 11 19 11 5" class="svelte-1a5q9sh"></polygon><line x1="23" y1="9" x2="17" y2="15" class="svelte-1a5q9sh"></line><line x1="17" y1="9" x2="23" y2="15" class="svelte-1a5q9sh"></line></svg> <span class="svelte-1a5q9sh">Audio paused — click to resume</span></button>`);
482
- } else $$renderer.push("<!--[-1-->");
483
- $$renderer.push(`<!--]--> `);
484
- if (ttsAvailable()) {
485
- $$renderer.push("<!--[0-->");
486
- $$renderer.push(`<button${attr_class("voice-btn svelte-1a5q9sh", void 0, {
487
- "voice-btn-on": voiceState.ttsAutoEnabled,
488
- "voice-btn-speaking": isSpeaking()
489
- })}${attr("aria-label", voiceState.ttsAutoEnabled ? "Turn off spoken responses" : "Turn on spoken responses")}${attr("aria-pressed", voiceState.ttsAutoEnabled)}${attr("title", isSpeaking() ? "Speaking — click to turn off spoken responses" : voiceState.ttsAutoEnabled ? "Spoken responses are on — click to turn off" : "Spoken responses are off — click to turn on")}><svg aria-hidden="true" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svelte-1a5q9sh"><polygon points="11 5 6 9 2 9 2 15 6 15 11 19 11 5" class="svelte-1a5q9sh"></polygon>`);
490
- if (voiceState.ttsAutoEnabled) {
491
- $$renderer.push("<!--[0-->");
492
- $$renderer.push(`<path d="M15.54 8.46a5 5 0 0 1 0 7.07"${attr_class("svelte-1a5q9sh", void 0, { "wave-anim": isSpeaking() })}></path><path d="M19.07 4.93a10 10 0 0 1 0 14.14"${attr_class("svelte-1a5q9sh", void 0, { "wave-anim-2": isSpeaking() })}></path>`);
493
- } else {
494
- $$renderer.push("<!--[-1-->");
495
- $$renderer.push(`<line x1="23" y1="9" x2="17" y2="15" class="svelte-1a5q9sh"></line><line x1="17" y1="9" x2="23" y2="15" class="svelte-1a5q9sh"></line>`);
496
- }
497
- $$renderer.push(`<!--]--></svg></button>`);
498
- } else $$renderer.push("<!--[-1-->");
499
- $$renderer.push(`<!--]--> `);
500
- if (supported()) {
501
- $$renderer.push("<!--[0-->");
502
- $$renderer.push(`<button${attr_class("voice-btn svelte-1a5q9sh", void 0, {
503
- "voice-btn-active": isRecording(),
504
- "voice-btn-processing": isProcessing() || isTranscribing()
505
- })}${attr("disabled", isProcessing(), true)}${attr("aria-label", isRecording() ? "Stop recording" : isTranscribing() ? "Transcribing…" : isProcessing() ? "Sending message…" : "Start recording")}${attr("aria-pressed", isRecording())}${attr("title", isRecording() ? "Stop recording" : isTranscribing() ? "Transcribing…" : isProcessing() ? "Sending message…" : "Speak — message will be sent to the selected assistant")}>`);
506
- if (isTranscribing() || isProcessing()) {
507
- $$renderer.push("<!--[0-->");
508
- $$renderer.push(`<span class="voice-spinner svelte-1a5q9sh" aria-hidden="true"></span>`);
509
- } else if (isRecording()) {
510
- $$renderer.push("<!--[1-->");
511
- $$renderer.push(`<svg aria-hidden="true" width="14" height="14" viewBox="0 0 24 24" fill="currentColor" class="svelte-1a5q9sh"><rect x="6" y="6" width="12" height="12" rx="1.5" class="svelte-1a5q9sh"></rect></svg> <span class="voice-pulse svelte-1a5q9sh" aria-hidden="true"></span>`);
512
- } else {
513
- $$renderer.push("<!--[-1-->");
514
- $$renderer.push(`<svg aria-hidden="true" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svelte-1a5q9sh"><path d="M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z" class="svelte-1a5q9sh"></path><path d="M19 10v2a7 7 0 0 1-14 0v-2" class="svelte-1a5q9sh"></path><line x1="12" y1="19" x2="12" y2="23" class="svelte-1a5q9sh"></line><line x1="8" y1="23" x2="16" y2="23" class="svelte-1a5q9sh"></line></svg>`);
515
- }
516
- $$renderer.push(`<!--]--></button>`);
517
- } else $$renderer.push("<!--[-1-->");
518
- $$renderer.push(`<!--]--> <span class="sr-only svelte-1a5q9sh" aria-live="polite">${escape_html(isRecording() && voiceState.interimTranscript ? voiceState.interimTranscript : isRecording() ? "Recording" : isTranscribing() ? "Transcribing" : isProcessing() ? "Sending message to assistant" : isSpeaking() ? "Assistant is speaking" : voiceState.ttsAutoEnabled ? "Spoken responses on" : "")}</span></div>`);
519
- } else $$renderer.push("<!--[-1-->");
520
- $$renderer.push(`<!--]-->`);
521
- });
522
- }
523
- //#endregion
524
- //#region src/lib/endpoints-state.svelte.ts
525
- var EndpointsService = class {
526
- endpoints = [];
527
- activeId = "default";
528
- loading = false;
529
- loaded = false;
530
- error = "";
531
- #active = derived(() => this.endpoints.find((e) => e.id === this.activeId) ?? this.endpoints[0] ?? null);
532
- get active() {
533
- return this.#active();
534
- }
535
- set active($$value) {
536
- return this.#active($$value);
537
- }
538
- async load(force = false) {
539
- if (this.loading) return;
540
- if (this.loaded && !force) return;
541
- this.loading = true;
542
- this.error = "";
543
- try {
544
- const { endpoints, activeId } = await fetchEndpoints();
545
- this.endpoints = endpoints;
546
- this.activeId = activeId;
547
- this.loaded = true;
548
- } catch (e) {
549
- const err = e;
550
- if (err.status !== 401) this.error = err.message ?? "Failed to load endpoints";
551
- } finally {
552
- this.loading = false;
553
- }
554
- }
555
- async activate(id) {
556
- if (id === this.activeId) return;
557
- if (chat.sending) {
558
- this.error = "Wait for the current reply to finish before switching.";
559
- throw new Error(this.error);
560
- }
561
- const previous = this.activeId;
562
- this.activeId = id;
563
- try {
564
- await setActiveEndpoint(id);
565
- await chat.onEndpointChanged(id);
566
- } catch (e) {
567
- this.activeId = previous;
568
- const err = e;
569
- this.error = err.message ?? "Failed to switch endpoint";
570
- throw e;
571
- }
572
- }
573
- };
574
- var endpointsService = new EndpointsService();
575
- //#endregion
576
- //#region src/lib/components/EndpointSwitcher.svelte
577
- function EndpointSwitcher($$renderer, $$props) {
578
- $$renderer.component(($$renderer) => {
579
- const menuId = "endpoint-menu";
580
- let switching = false;
581
- let isOpen = false;
582
- const active = derived(() => endpointsService.active);
583
- const endpoints = derived(() => endpointsService.endpoints);
584
- const hasChoices = derived(() => endpoints().length > 1);
585
- $$renderer.push(`<div class="switcher svelte-1gh51ee"><button type="button" class="trigger svelte-1gh51ee" id="endpoint-trigger"${attr("popovertarget", hasChoices() ? menuId : void 0)} aria-haspopup="menu"${attr("aria-expanded", isOpen)}${attr("aria-controls", menuId)}${attr("aria-label", active() ? `Assistant endpoint: ${active().label}` : "Assistant endpoints")}${attr("title", active() ? `Connected to: ${active().label} (${active().url})` : "Assistant endpoints")}${attr("disabled", endpointsService.loading, true)}><svg class="trigger-icon svelte-1gh51ee" aria-hidden="true" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="2" width="20" height="8" rx="2" ry="2"></rect><rect x="2" y="14" width="20" height="8" rx="2" ry="2"></rect><line x1="6" y1="6" x2="6.01" y2="6"></line><line x1="6" y1="18" x2="6.01" y2="18"></line></svg> <span class="dot svelte-1gh51ee" aria-hidden="true"></span> <span class="label svelte-1gh51ee">${escape_html(active()?.label ?? "Endpoint…")}</span> <span class="caret svelte-1gh51ee" aria-hidden="true">▾</span></button> <div${attr("id", menuId)} class="menu svelte-1gh51ee" popover="auto" role="menu" tabindex="-1"><div class="menu-header svelte-1gh51ee">Assistant endpoint</div> <!--[-->`);
586
- const each_array = ensure_array_like(endpoints());
587
- for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
588
- let ep = each_array[$$index];
589
- $$renderer.push(`<button type="button"${attr_class("menu-item svelte-1gh51ee", void 0, { "active": ep.id === active()?.id })} role="menuitemradio"${attr("aria-checked", ep.id === active()?.id)}${attr("popovertarget", menuId)} popovertargetaction="hide"${attr("disabled", switching, true)}><span class="check svelte-1gh51ee" aria-hidden="true">${escape_html(ep.id === active()?.id ? "●" : "○")}</span> <span class="menu-item-text svelte-1gh51ee"><span class="menu-item-label svelte-1gh51ee">${escape_html(ep.label)}</span> <span class="menu-item-url svelte-1gh51ee">${escape_html(ep.url)}</span></span></button>`);
590
- }
591
- $$renderer.push(`<!--]--> <div class="menu-divider svelte-1gh51ee"></div> <a class="menu-item link svelte-1gh51ee" href="/admin/endpoints" role="menuitem">Manage endpoints…</a></div></div>`);
592
- });
593
- }
594
- //#endregion
595
- //#region src/lib/components/SessionPicker.svelte
596
- function SessionPicker($$renderer, $$props) {
597
- $$renderer.component(($$renderer) => {
598
- const menuId = "session-menu";
599
- let isOpen = false;
600
- const SESSION_LIST_CAP = 50;
601
- const active = derived(() => endpointsService.active);
602
- const endpointState = derived(() => active() ? chat.byEndpoint.get(active().id) ?? null : null);
603
- const sessions = derived(() => endpointState()?.sessions ?? []);
604
- const loading = derived(() => endpointState()?.sessionsLoading ?? false);
605
- const error = derived(() => endpointState()?.sessionsError ?? "");
606
- const activeSessionId = derived(() => chat.activeSessionId);
607
- const activeSummary = derived(() => sessions().find((s) => s.id === activeSessionId()) ?? null);
608
- const triggerLabel = derived(() => activeSummary() ? activeSummary().title || `Untitled · ${formatRelative(activeSummary().updatedAt)}` : "New session");
609
- /**
610
- * Live-updates indicator. True when the chat service's SSE stream to
611
- * `/proxy/assistant/event` is connected — out-of-band session changes
612
- * (CLI, other clients) will flow through. Shown as a tiny dot so the
613
- * operator can tell at a glance whether the picker is reactive or
614
- * snapshot.
615
- */
616
- const liveConnected = derived(() => chat.liveConnected);
617
- const visibleSessions = derived(() => sessions().slice(0, SESSION_LIST_CAP));
618
- const overflowCount = derived(() => Math.max(0, sessions().length - SESSION_LIST_CAP));
619
- /**
620
- * Tiny relative-time helper. No date-fns dep — that would be ~30 KB for
621
- * 4 cases.
622
- */
623
- function formatRelative(ts) {
624
- if (!ts) return "";
625
- const diffSec = Math.max(0, (Date.now() - ts) / 1e3);
626
- if (diffSec < 60) return "just now";
627
- const min = Math.floor(diffSec / 60);
628
- if (min < 60) return `${min}m ago`;
629
- const hr = Math.floor(min / 60);
630
- if (hr < 24) return `${hr}h ago`;
631
- const day = Math.floor(hr / 24);
632
- if (day === 1) return "yesterday";
633
- if (day < 7) return `${day}d ago`;
634
- const wk = Math.floor(day / 7);
635
- if (wk < 5) return `${wk}w ago`;
636
- const mo = Math.floor(day / 30);
637
- if (mo < 12) return `${mo}mo ago`;
638
- return `${Math.floor(day / 365)}y ago`;
639
- }
640
- $$renderer.push(`<div class="picker svelte-1owsj0q"><button type="button" class="trigger svelte-1owsj0q" id="session-trigger"${attr("popovertarget", menuId)} aria-haspopup="menu"${attr("aria-expanded", isOpen)}${attr("aria-controls", menuId)} aria-label="Sessions"${attr("title", triggerLabel())}><svg class="trigger-icon svelte-1owsj0q" aria-hidden="true" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 9a2 2 0 0 1-2 2H6l-4 4V4c0-1.1.9-2 2-2h8a2 2 0 0 1 2 2z"></path><path d="M18 9h2a2 2 0 0 1 2 2v11l-4-4h-6a2 2 0 0 1-2-2v-1"></path></svg> <span${attr_class("dot svelte-1owsj0q", void 0, { "connected": liveConnected() })} aria-hidden="true"${attr("title", liveConnected() ? "Live updates connected" : "Live updates disconnected")}></span> <span class="label svelte-1owsj0q">${escape_html(triggerLabel())}</span> <span class="caret svelte-1owsj0q" aria-hidden="true">▾</span></button> <div${attr("id", menuId)} class="menu svelte-1owsj0q" popover="auto" role="menu" tabindex="-1"><div class="menu-header svelte-1owsj0q">Sessions on ${escape_html(active()?.label ?? "this endpoint")}</div> `);
641
- if (chat.sending) {
642
- $$renderer.push("<!--[0-->");
643
- $$renderer.push(`<div class="notice svelte-1owsj0q">Wait for the current reply to finish before switching.</div>`);
644
- } else $$renderer.push("<!--[-1-->");
645
- $$renderer.push(`<!--]--> <button type="button" class="menu-item new-btn svelte-1owsj0q" role="menuitem"${attr("popovertarget", menuId)} popovertargetaction="hide"${attr("disabled", chat.sending, true)}><span class="check svelte-1owsj0q" aria-hidden="true">+</span> <span class="menu-item-text svelte-1owsj0q"><span class="menu-item-label svelte-1owsj0q">New session</span></span></button> <div class="menu-divider svelte-1owsj0q"></div> `);
646
- if (loading()) {
647
- $$renderer.push("<!--[0-->");
648
- $$renderer.push(`<div class="empty svelte-1owsj0q"><span class="spinner svelte-1owsj0q" aria-hidden="true"></span> <span>Loading sessions…</span></div>`);
649
- } else if (error()) {
650
- $$renderer.push("<!--[1-->");
651
- $$renderer.push(`<div class="error svelte-1owsj0q"><span class="svelte-1owsj0q">${escape_html(error())}</span> <button type="button" class="retry-btn svelte-1owsj0q">Retry</button></div>`);
652
- } else if (sessions().length === 0) {
653
- $$renderer.push("<!--[2-->");
654
- $$renderer.push(`<div class="empty svelte-1owsj0q">No sessions yet. Start the first one.</div>`);
655
- } else {
656
- $$renderer.push("<!--[-1-->");
657
- $$renderer.push(`<div class="session-list svelte-1owsj0q" role="none"><!--[-->`);
658
- const each_array = ensure_array_like(visibleSessions());
659
- for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
660
- let s = each_array[$$index];
661
- $$renderer.push(`<button type="button"${attr_class("menu-item session-item svelte-1owsj0q", void 0, { "active": s.id === activeSessionId() })} role="menuitemradio"${attr("aria-checked", s.id === activeSessionId())}${attr("popovertarget", menuId)} popovertargetaction="hide"${attr("disabled", chat.sending, true)}><span class="check svelte-1owsj0q" aria-hidden="true">${escape_html(s.id === activeSessionId() ? "●" : "○")}</span> <span class="menu-item-text svelte-1owsj0q"><span class="menu-item-label svelte-1owsj0q">${escape_html(s.title || "Untitled")}</span> <span class="menu-item-meta svelte-1owsj0q">${escape_html(formatRelative(s.updatedAt))}</span></span></button>`);
662
- }
663
- $$renderer.push(`<!--]--></div> `);
664
- if (overflowCount() > 0) {
665
- $$renderer.push("<!--[0-->");
666
- $$renderer.push(`<button type="button" class="show-all svelte-1owsj0q">Show all (${escape_html(overflowCount())} more)</button>`);
667
- } else $$renderer.push("<!--[-1-->");
668
- $$renderer.push(`<!--]-->`);
669
- }
670
- $$renderer.push(`<!--]--></div></div>`);
671
- });
672
- }
673
- //#endregion
674
- //#region src/lib/components/ThemeToggle.svelte
675
- function ThemeToggle($$renderer, $$props) {
676
- $$renderer.component(($$renderer) => {
677
- const isDark = derived(() => themeService.resolved === "dark");
678
- const label = derived(() => isDark() ? "Switch to light mode" : "Switch to dark mode");
679
- $$renderer.push(`<button type="button" class="theme-toggle svelte-1cmi4dh"${attr("aria-label", label())}${attr("aria-pressed", isDark())}${attr("title", label())}>`);
680
- if (isDark()) {
681
- $$renderer.push("<!--[0-->");
682
- $$renderer.push(`<svg aria-hidden="true" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="4"></circle><path d="M12 2v2"></path><path d="M12 20v2"></path><path d="m4.93 4.93 1.41 1.41"></path><path d="m17.66 17.66 1.41 1.41"></path><path d="M2 12h2"></path><path d="M20 12h2"></path><path d="m6.34 17.66-1.41 1.41"></path><path d="m19.07 4.93-1.41 1.41"></path></svg>`);
683
- } else {
684
- $$renderer.push("<!--[-1-->");
685
- $$renderer.push(`<svg aria-hidden="true" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9z"></path></svg>`);
686
- }
687
- $$renderer.push(`<!--]--></button>`);
688
- });
689
- }
690
- //#endregion
691
- //#region src/lib/components/Navbar.svelte
692
- function Navbar($$renderer, $$props) {
693
- $$renderer.component(($$renderer) => {
694
- const NAV_ITEMS = [
695
- {
696
- href: "/chat",
697
- label: "Chat",
698
- icon: "chat"
699
- },
700
- {
701
- href: "/advanced",
702
- label: "Advanced",
703
- icon: "advanced"
704
- },
705
- {
706
- href: "/admin",
707
- label: "Admin",
708
- icon: "admin"
709
- }
710
- ];
711
- const pathname = derived(() => page.url?.pathname ?? "");
712
- function isActive(href) {
713
- return pathname() === href || pathname().startsWith(href + "/");
714
- }
715
- let mobileMenuOpen = false;
716
- $$renderer.push(`<header class="navbar svelte-rfuq4y"><div class="navbar-inner svelte-rfuq4y"><div class="navbar-brand svelte-rfuq4y"><span class="brand-icon svelte-rfuq4y" aria-hidden="true"><img src="/logo-128.png" alt="OpenPalm Logo" class="svelte-rfuq4y"/></span> <span class="brand-text svelte-rfuq4y">OpenPalm</span></div> <nav class="navbar-nav svelte-rfuq4y" aria-label="Primary navigation"><!--[-->`);
717
- const each_array = ensure_array_like(NAV_ITEMS);
718
- for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
719
- let item = each_array[$$index];
720
- $$renderer.push(`<a${attr("href", item.href)}${attr_class("nav-tab svelte-rfuq4y", void 0, { "active": isActive(item.href) })}${attr("aria-current", isActive(item.href) ? "page" : void 0)}>`);
721
- if (item.icon === "chat") {
722
- $$renderer.push("<!--[0-->");
723
- $$renderer.push(`<svg class="nav-icon svelte-rfuq4y" aria-hidden="true" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path></svg>`);
724
- } else if (item.icon === "advanced") {
725
- $$renderer.push("<!--[1-->");
726
- $$renderer.push(`<svg class="nav-icon svelte-rfuq4y" aria-hidden="true" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><path d="m7 9 3 3-3 3"></path><line x1="13" y1="15" x2="17" y2="15"></line></svg>`);
727
- } else {
728
- $$renderer.push("<!--[-1-->");
729
- $$renderer.push(`<svg class="nav-icon svelte-rfuq4y" aria-hidden="true" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="4" y1="21" x2="4" y2="14"></line><line x1="4" y1="10" x2="4" y2="3"></line><line x1="12" y1="21" x2="12" y2="12"></line><line x1="12" y1="8" x2="12" y2="3"></line><line x1="20" y1="21" x2="20" y2="16"></line><line x1="20" y1="12" x2="20" y2="3"></line><line x1="1" y1="14" x2="7" y2="14"></line><line x1="9" y1="8" x2="15" y2="8"></line><line x1="17" y1="16" x2="23" y2="16"></line></svg>`);
730
- }
731
- $$renderer.push(`<!--]--> <span class="nav-label svelte-rfuq4y">${escape_html(item.label)}</span></a>`);
732
- }
733
- $$renderer.push(`<!--]--></nav> <div id="navbar-drawer"${attr_class("navbar-actions svelte-rfuq4y", void 0, { "open": mobileMenuOpen })}${attr("role", void 0)}${attr("aria-modal", void 0)}${attr("aria-labelledby", void 0)}><div class="drawer-header svelte-rfuq4y"><h2 class="drawer-title svelte-rfuq4y" id="navbar-drawer-title">Settings</h2> <button type="button" class="drawer-close svelte-rfuq4y" aria-label="Close settings menu"${attr("tabindex", -1)}><svg aria-hidden="true" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><path d="M18 6 6 18"></path><path d="m6 6 12 12"></path></svg></button></div> <div class="drawer-body svelte-rfuq4y"><div class="drawer-section svelte-rfuq4y"><div class="section-label svelte-rfuq4y">Endpoint</div> <div class="control-row svelte-rfuq4y">`);
734
- EndpointSwitcher($$renderer);
735
- $$renderer.push(`<!----></div></div> <div class="drawer-section svelte-rfuq4y"><div class="section-label svelte-rfuq4y">Session</div> <div class="control-row svelte-rfuq4y">`);
736
- SessionPicker($$renderer);
737
- $$renderer.push(`<!----></div></div> <div class="drawer-section svelte-rfuq4y"><div class="section-label svelte-rfuq4y">Voice</div> <div class="control-row control-row--voice svelte-rfuq4y">`);
738
- VoiceControl($$renderer);
739
- $$renderer.push(`<!----></div></div> <div class="drawer-section svelte-rfuq4y"><div class="utility-row svelte-rfuq4y"><div class="utility-labels svelte-rfuq4y"><span class="utility-title svelte-rfuq4y">Theme</span> <span class="utility-copy svelte-rfuq4y">Switch between light and dark mode.</span></div> `);
740
- ThemeToggle($$renderer);
741
- $$renderer.push(`<!----></div></div></div></div> <button type="button" class="mobile-menu-btn svelte-rfuq4y"${attr("aria-label", "Open settings menu")}${attr("aria-expanded", mobileMenuOpen)} aria-controls="navbar-drawer" aria-haspopup="dialog"><svg aria-hidden="true" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round">`);
742
- $$renderer.push("<!--[-1-->");
743
- $$renderer.push(`<path d="M3 6h18"></path><path d="M3 12h18"></path><path d="M3 18h18"></path>`);
744
- $$renderer.push(`<!--]--></svg></button> `);
745
- $$renderer.push("<!--[-1-->");
746
- $$renderer.push(`<!--]--></div></header>`);
747
- });
748
- }
749
- //#endregion
750
- //#region src/lib/components/AuthGate.svelte
751
- function AuthGate($$renderer, $$props) {
752
- $$renderer.component(($$renderer) => {
753
- let { onSuccess, loading, error } = $$props;
754
- let tokenInput = "";
755
- $$renderer.push(`<main class="auth-gate svelte-1vviwqr" aria-label="Admin login gate"><section class="auth-card svelte-1vviwqr"><div class="auth-brand svelte-1vviwqr"><span class="brand-icon svelte-1vviwqr"><img src="/logo-128.png" alt="OpenPalm Logo" class="svelte-1vviwqr"/></span> <div><h1 class="svelte-1vviwqr">OpenPalm Console</h1> <p class="svelte-1vviwqr">Enter your admin password to unlock the control plane.</p></div></div> <form class="auth-form svelte-1vviwqr"><label for="admin-token" class="svelte-1vviwqr">Admin Password</label> <input type="text" name="username" autocomplete="username" value="admin" class="sr-only svelte-1vviwqr" tabindex="-1" aria-hidden="true"/> <div class="token-input-wrapper svelte-1vviwqr"><input id="admin-token" name="admin-token"${attr("type", "password")}${attr("value", tokenInput)} placeholder="Enter admin password" autocomplete="current-password" class="svelte-1vviwqr"/> <button type="button" class="btn-toggle svelte-1vviwqr"${attr("aria-label", "Show token")}>`);
756
- $$renderer.push("<!--[-1-->");
757
- $$renderer.push(`<svg aria-hidden="true" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"></path><circle cx="12" cy="12" r="3"></circle></svg>`);
758
- $$renderer.push(`<!--]--></button></div> `);
759
- if (error) {
760
- $$renderer.push("<!--[0-->");
761
- $$renderer.push(`<p class="auth-error svelte-1vviwqr" role="alert">${escape_html(error)}</p>`);
762
- } else $$renderer.push("<!--[-1-->");
763
- $$renderer.push(`<!--]--> <button class="btn btn-primary" type="submit"${attr("disabled", loading || !tokenInput.trim(), true)}>`);
764
- if (loading) {
765
- $$renderer.push("<!--[0-->");
766
- $$renderer.push(`<span class="spinner"></span>`);
767
- } else $$renderer.push("<!--[-1-->");
768
- $$renderer.push(`<!--]--> Unlock Console</button></form></section></main>`);
769
- });
770
- }
771
-
772
- export { AuthGate as A, Navbar as N, chat as c, endpointsService as e };
773
- //# sourceMappingURL=AuthGate-DL3Htqtl.js.map