@openpalm/ui 0.13.0-beta.2 → 0.13.0-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (343) hide show
  1. package/build/.openpalm-ui-version +1 -1
  2. package/build/client/_app/immutable/chunks/C3ad4Ajc.js +1 -0
  3. package/build/client/_app/immutable/chunks/C3ad4Ajc.js.br +2 -0
  4. package/build/client/_app/immutable/chunks/C3ad4Ajc.js.gz +0 -0
  5. package/build/client/_app/immutable/chunks/{Be7qat4r.js → CItB5oU8.js} +2 -2
  6. package/build/client/_app/immutable/chunks/CItB5oU8.js.br +0 -0
  7. package/build/client/_app/immutable/chunks/CItB5oU8.js.gz +0 -0
  8. package/build/client/_app/immutable/chunks/{9mRSvTWj.js → DuFsBiCS.js} +1 -1
  9. package/build/client/_app/immutable/chunks/DuFsBiCS.js.br +0 -0
  10. package/build/client/_app/immutable/chunks/DuFsBiCS.js.gz +0 -0
  11. package/build/client/_app/immutable/chunks/{BoOBAdGl.js → Gis7OmMK.js} +1 -1
  12. package/build/client/_app/immutable/chunks/Gis7OmMK.js.br +0 -0
  13. package/build/client/_app/immutable/chunks/Gis7OmMK.js.gz +0 -0
  14. package/build/client/_app/immutable/chunks/{DSs95sLz.js → S17SDfo_.js} +1 -1
  15. package/build/client/_app/immutable/chunks/S17SDfo_.js.br +0 -0
  16. package/build/client/_app/immutable/chunks/S17SDfo_.js.gz +0 -0
  17. package/build/client/_app/immutable/entry/{app.DZwy1Y3W.js → app.C4X372ym.js} +2 -2
  18. package/build/client/_app/immutable/entry/app.C4X372ym.js.br +0 -0
  19. package/build/client/_app/immutable/entry/app.C4X372ym.js.gz +0 -0
  20. package/build/client/_app/immutable/entry/start.ggMsTuLf.js +1 -0
  21. package/build/client/_app/immutable/entry/start.ggMsTuLf.js.br +0 -0
  22. package/build/client/_app/immutable/entry/start.ggMsTuLf.js.gz +0 -0
  23. package/build/client/_app/immutable/nodes/{1.Bxihn5f1.js → 1.CAn1ptt2.js} +1 -1
  24. package/build/client/_app/immutable/nodes/1.CAn1ptt2.js.br +1 -0
  25. package/build/client/_app/immutable/nodes/1.CAn1ptt2.js.gz +0 -0
  26. package/build/client/_app/immutable/nodes/{10.BZ76_WLP.js → 10.3GZpnfRU.js} +1 -1
  27. package/build/client/_app/immutable/nodes/10.3GZpnfRU.js.br +0 -0
  28. package/build/client/_app/immutable/nodes/10.3GZpnfRU.js.gz +0 -0
  29. package/build/client/_app/immutable/nodes/{11.Bzf3G5G0.js → 11.D1-UoUiI.js} +1 -1
  30. package/build/client/_app/immutable/nodes/11.D1-UoUiI.js.br +0 -0
  31. package/build/client/_app/immutable/nodes/11.D1-UoUiI.js.gz +0 -0
  32. package/build/client/_app/immutable/nodes/{4.D-CwW2PH.js → 4.6EwsExLl.js} +1 -1
  33. package/build/client/_app/immutable/nodes/4.6EwsExLl.js.br +0 -0
  34. package/build/client/_app/immutable/nodes/4.6EwsExLl.js.gz +0 -0
  35. package/build/client/_app/immutable/nodes/{5.BbStivMI.js → 5.DLFettGd.js} +1 -1
  36. package/build/client/_app/immutable/nodes/5.DLFettGd.js.br +0 -0
  37. package/build/client/_app/immutable/nodes/5.DLFettGd.js.gz +0 -0
  38. package/build/client/_app/immutable/nodes/{6.BKVgKxKO.js → 6.inuW_1g7.js} +1 -1
  39. package/build/client/_app/immutable/nodes/6.inuW_1g7.js.br +0 -0
  40. package/build/client/_app/immutable/nodes/6.inuW_1g7.js.gz +0 -0
  41. package/build/client/_app/immutable/nodes/{7.DuXt155R.js → 7.Dc4BVu5u.js} +1 -1
  42. package/build/client/_app/immutable/nodes/7.Dc4BVu5u.js.br +0 -0
  43. package/build/client/_app/immutable/nodes/7.Dc4BVu5u.js.gz +0 -0
  44. package/build/client/_app/immutable/nodes/{9.BdeFVi2a.js → 9.CJ5rBqR8.js} +1 -1
  45. package/build/client/_app/immutable/nodes/9.CJ5rBqR8.js.br +0 -0
  46. package/build/client/_app/immutable/nodes/9.CJ5rBqR8.js.gz +0 -0
  47. package/build/client/_app/version.json +1 -1
  48. package/build/client/_app/version.json.br +1 -1
  49. package/build/client/_app/version.json.gz +0 -0
  50. package/build/server/chunks/{0-C7zzjezl.js → 0-C44Ua1bY.js} +3 -3
  51. package/build/server/chunks/{0-C7zzjezl.js.map → 0-C44Ua1bY.js.map} +1 -1
  52. package/build/server/chunks/1-DPdXHBBi.js +9 -0
  53. package/build/server/chunks/{1-Ceq9WsUZ.js.map → 1-DPdXHBBi.js.map} +1 -1
  54. package/build/server/chunks/{10-DbLLQ-Uy.js → 10-B6ZAGGzR.js} +3 -3
  55. package/build/server/chunks/{10-DbLLQ-Uy.js.map → 10-B6ZAGGzR.js.map} +1 -1
  56. package/build/server/chunks/{11-Dryt5Piv.js → 11-Bi4ih8mU.js} +3 -3
  57. package/build/server/chunks/{11-Dryt5Piv.js.map → 11-Bi4ih8mU.js.map} +1 -1
  58. package/build/server/chunks/{3-CAH3EmhU.js → 3-DqhvOSLm.js} +6 -6
  59. package/build/server/chunks/{3-CAH3EmhU.js.map → 3-DqhvOSLm.js.map} +1 -1
  60. package/build/server/chunks/{4-DxmFWVQJ.js → 4-bICPXf8d.js} +3 -3
  61. package/build/server/chunks/{4-DxmFWVQJ.js.map → 4-bICPXf8d.js.map} +1 -1
  62. package/build/server/chunks/{5-CQ9cELI7.js → 5-pYxB3IGQ.js} +3 -3
  63. package/build/server/chunks/{5-CQ9cELI7.js.map → 5-pYxB3IGQ.js.map} +1 -1
  64. package/build/server/chunks/{6-B-hnmc7F.js → 6-2tNBfccH.js} +3 -3
  65. package/build/server/chunks/{6-B-hnmc7F.js.map → 6-2tNBfccH.js.map} +1 -1
  66. package/build/server/chunks/{7-BE6BzHsh.js → 7-IbStFnJM.js} +3 -3
  67. package/build/server/chunks/{7-BE6BzHsh.js.map → 7-IbStFnJM.js.map} +1 -1
  68. package/build/server/chunks/{9-BWzd_hmh.js → 9-PfezrnbG.js} +4 -4
  69. package/build/server/chunks/{9-BWzd_hmh.js.map → 9-PfezrnbG.js.map} +1 -1
  70. package/build/server/chunks/{ChatNavbar-BonHVqfi.js → ChatNavbar-f5OrMEL5.js} +5 -5
  71. package/build/server/chunks/{ChatNavbar-BonHVqfi.js.map → ChatNavbar-f5OrMEL5.js.map} +1 -1
  72. package/build/server/chunks/{IconServer-fOHYHe-O.js → IconServer-C0heXLme.js} +2 -2
  73. package/build/server/chunks/{IconServer-fOHYHe-O.js.map → IconServer-C0heXLme.js.map} +1 -1
  74. package/build/server/chunks/{_page.svelte-BXeh8wzh.js → _page.svelte-BXLl2Q4a.js} +3 -3
  75. package/build/server/chunks/{_page.svelte-BXeh8wzh.js.map → _page.svelte-BXLl2Q4a.js.map} +1 -1
  76. package/build/server/chunks/{_page.svelte-Bovrn7AQ.js → _page.svelte-BgKDQB1v.js} +3 -3
  77. package/build/server/chunks/{_page.svelte-Bovrn7AQ.js.map → _page.svelte-BgKDQB1v.js.map} +1 -1
  78. package/build/server/chunks/{_page.svelte-BWNjxN63.js → _page.svelte-Cqsoa84V.js} +7 -7
  79. package/build/server/chunks/{_page.svelte-BWNjxN63.js.map → _page.svelte-Cqsoa84V.js.map} +1 -1
  80. package/build/server/chunks/{_page.svelte-DkZsmNYc.js → _page.svelte-DV50Zgo7.js} +3 -3
  81. package/build/server/chunks/{_page.svelte-DkZsmNYc.js.map → _page.svelte-DV50Zgo7.js.map} +1 -1
  82. package/build/server/chunks/{_page.svelte-LsoJ7E5M.js → _page.svelte-DpFvF_2S.js} +6 -6
  83. package/build/server/chunks/{_page.svelte-LsoJ7E5M.js.map → _page.svelte-DpFvF_2S.js.map} +1 -1
  84. package/build/server/chunks/{_page.svelte-0Rf024eH.js → _page.svelte-MAzX_A0b.js} +4 -4
  85. package/build/server/chunks/{_page.svelte-0Rf024eH.js.map → _page.svelte-MAzX_A0b.js.map} +1 -1
  86. package/build/server/chunks/{_page.svelte-COf36oAu.js → _page.svelte-fk6X6VPw.js} +7 -7
  87. package/build/server/chunks/{_page.svelte-COf36oAu.js.map → _page.svelte-fk6X6VPw.js.map} +1 -1
  88. package/build/server/chunks/{_server.ts-DE-c3Y5D.js → _server.ts-2o4Kzn8i.js} +7 -7
  89. package/build/server/chunks/{_server.ts-DE-c3Y5D.js.map → _server.ts-2o4Kzn8i.js.map} +1 -1
  90. package/build/server/chunks/{_server.ts-BKWx8K8U.js → _server.ts-6-piDAMf.js} +7 -7
  91. package/build/server/chunks/{_server.ts-BKWx8K8U.js.map → _server.ts-6-piDAMf.js.map} +1 -1
  92. package/build/server/chunks/{_server.ts-DQozxLn6.js → _server.ts-6BViNoJ6.js} +6 -6
  93. package/build/server/chunks/{_server.ts-DQozxLn6.js.map → _server.ts-6BViNoJ6.js.map} +1 -1
  94. package/build/server/chunks/{_server.ts-BUDMOZOz.js → _server.ts-B-6OFzv-.js} +6 -6
  95. package/build/server/chunks/{_server.ts-BUDMOZOz.js.map → _server.ts-B-6OFzv-.js.map} +1 -1
  96. package/build/server/chunks/{_server.ts-CG60Cdqf.js → _server.ts-B2iTN8SC.js} +8 -8
  97. package/build/server/chunks/{_server.ts-CG60Cdqf.js.map → _server.ts-B2iTN8SC.js.map} +1 -1
  98. package/build/server/chunks/{_server.ts-CMAepV0J.js → _server.ts-BB6y3ZlT.js} +6 -6
  99. package/build/server/chunks/{_server.ts-CMAepV0J.js.map → _server.ts-BB6y3ZlT.js.map} +1 -1
  100. package/build/server/chunks/{_server.ts-Dy65kWxL.js → _server.ts-BBxdJ3b2.js} +7 -7
  101. package/build/server/chunks/{_server.ts-Dy65kWxL.js.map → _server.ts-BBxdJ3b2.js.map} +1 -1
  102. package/build/server/chunks/{_server.ts-BhAp0vvt.js → _server.ts-BJ27moeF.js} +6 -6
  103. package/build/server/chunks/{_server.ts-BhAp0vvt.js.map → _server.ts-BJ27moeF.js.map} +1 -1
  104. package/build/server/chunks/{_server.ts-BjjicBDy.js → _server.ts-BM6hefLc.js} +6 -6
  105. package/build/server/chunks/{_server.ts-BjjicBDy.js.map → _server.ts-BM6hefLc.js.map} +1 -1
  106. package/build/server/chunks/{_server.ts-BTPbwN92.js → _server.ts-BNQHTPJK.js} +6 -6
  107. package/build/server/chunks/{_server.ts-BTPbwN92.js.map → _server.ts-BNQHTPJK.js.map} +1 -1
  108. package/build/server/chunks/{_server.ts-xPuEhFJO.js → _server.ts-BNnRODmS.js} +7 -7
  109. package/build/server/chunks/{_server.ts-xPuEhFJO.js.map → _server.ts-BNnRODmS.js.map} +1 -1
  110. package/build/server/chunks/{_server.ts-BLn_cTkK.js → _server.ts-BQyuBKbf.js} +6 -6
  111. package/build/server/chunks/{_server.ts-BLn_cTkK.js.map → _server.ts-BQyuBKbf.js.map} +1 -1
  112. package/build/server/chunks/{_server.ts-DJqSQny9.js → _server.ts-BQzhAVgc.js} +2 -2
  113. package/build/server/chunks/{_server.ts-DJqSQny9.js.map → _server.ts-BQzhAVgc.js.map} +1 -1
  114. package/build/server/chunks/{_server.ts-BjD0Uf0U.js → _server.ts-BTey3b5e.js} +6 -6
  115. package/build/server/chunks/{_server.ts-BjD0Uf0U.js.map → _server.ts-BTey3b5e.js.map} +1 -1
  116. package/build/server/chunks/{_server.ts-BWO1Eoro.js → _server.ts-BWeAmxEz.js} +6 -6
  117. package/build/server/chunks/{_server.ts-BWO1Eoro.js.map → _server.ts-BWeAmxEz.js.map} +1 -1
  118. package/build/server/chunks/{_server.ts-COcv1puW.js → _server.ts-BageNPqU.js} +7 -7
  119. package/build/server/chunks/{_server.ts-COcv1puW.js.map → _server.ts-BageNPqU.js.map} +1 -1
  120. package/build/server/chunks/{_server.ts-DHeSwA7p.js → _server.ts-BcsSKsVE.js} +6 -6
  121. package/build/server/chunks/{_server.ts-DHeSwA7p.js.map → _server.ts-BcsSKsVE.js.map} +1 -1
  122. package/build/server/chunks/{_server.ts-D-6mgHZB.js → _server.ts-Bd15KCCI.js} +6 -6
  123. package/build/server/chunks/{_server.ts-D-6mgHZB.js.map → _server.ts-Bd15KCCI.js.map} +1 -1
  124. package/build/server/chunks/{_server.ts-DdoJFQaX.js → _server.ts-BiGuckTs.js} +8 -8
  125. package/build/server/chunks/{_server.ts-DdoJFQaX.js.map → _server.ts-BiGuckTs.js.map} +1 -1
  126. package/build/server/chunks/{_server.ts-CcoaYeM8.js → _server.ts-BlCDDGQe.js} +6 -6
  127. package/build/server/chunks/{_server.ts-CcoaYeM8.js.map → _server.ts-BlCDDGQe.js.map} +1 -1
  128. package/build/server/chunks/{_server.ts-DTQe-U35.js → _server.ts-Bsxn3ZEt.js} +6 -6
  129. package/build/server/chunks/{_server.ts-DTQe-U35.js.map → _server.ts-Bsxn3ZEt.js.map} +1 -1
  130. package/build/server/chunks/{_server.ts-CX_CwTW0.js → _server.ts-BtlVh8sp.js} +3 -3
  131. package/build/server/chunks/{_server.ts-CX_CwTW0.js.map → _server.ts-BtlVh8sp.js.map} +1 -1
  132. package/build/server/chunks/{_server.ts-Ddqhnr_7.js → _server.ts-BunhH3W1.js} +6 -6
  133. package/build/server/chunks/{_server.ts-Ddqhnr_7.js.map → _server.ts-BunhH3W1.js.map} +1 -1
  134. package/build/server/chunks/{_server.ts-BR24J2uB.js → _server.ts-BwMkzx-i.js} +7 -7
  135. package/build/server/chunks/{_server.ts-BR24J2uB.js.map → _server.ts-BwMkzx-i.js.map} +1 -1
  136. package/build/server/chunks/{_server.ts-CnrWBkQ7.js → _server.ts-Bx0tx6Hd.js} +6 -6
  137. package/build/server/chunks/{_server.ts-CnrWBkQ7.js.map → _server.ts-Bx0tx6Hd.js.map} +1 -1
  138. package/build/server/chunks/{_server.ts-6EuPIrt7.js → _server.ts-ByVaX_Hp.js} +6 -6
  139. package/build/server/chunks/{_server.ts-6EuPIrt7.js.map → _server.ts-ByVaX_Hp.js.map} +1 -1
  140. package/build/server/chunks/{_server.ts-LokXM9hH.js → _server.ts-C-VVdGFH.js} +6 -6
  141. package/build/server/chunks/{_server.ts-LokXM9hH.js.map → _server.ts-C-VVdGFH.js.map} +1 -1
  142. package/build/server/chunks/{_server.ts-BARmSEZ2.js → _server.ts-C17zuPHB.js} +6 -6
  143. package/build/server/chunks/{_server.ts-BARmSEZ2.js.map → _server.ts-C17zuPHB.js.map} +1 -1
  144. package/build/server/chunks/{_server.ts-BVMpHE3G.js → _server.ts-C24KcaLY.js} +6 -6
  145. package/build/server/chunks/{_server.ts-BVMpHE3G.js.map → _server.ts-C24KcaLY.js.map} +1 -1
  146. package/build/server/chunks/{_server.ts-Bi0rRbcw.js → _server.ts-C8Tvzew7.js} +2 -2
  147. package/build/server/chunks/{_server.ts-Bi0rRbcw.js.map → _server.ts-C8Tvzew7.js.map} +1 -1
  148. package/build/server/chunks/{_server.ts-JO0zy17P.js → _server.ts-CA37rdjz.js} +6 -6
  149. package/build/server/chunks/{_server.ts-JO0zy17P.js.map → _server.ts-CA37rdjz.js.map} +1 -1
  150. package/build/server/chunks/{_server.ts-CS2LQKMb.js → _server.ts-CBv61dGN.js} +7 -7
  151. package/build/server/chunks/{_server.ts-CS2LQKMb.js.map → _server.ts-CBv61dGN.js.map} +1 -1
  152. package/build/server/chunks/{_server.ts-CjPhaG_g.js → _server.ts-CEgqNbg2.js} +7 -7
  153. package/build/server/chunks/{_server.ts-CjPhaG_g.js.map → _server.ts-CEgqNbg2.js.map} +1 -1
  154. package/build/server/chunks/{_server.ts-DrGzrygC.js → _server.ts-CF6j3bbg.js} +6 -6
  155. package/build/server/chunks/{_server.ts-DrGzrygC.js.map → _server.ts-CF6j3bbg.js.map} +1 -1
  156. package/build/server/chunks/{_server.ts-B28SfXaZ.js → _server.ts-CFlF9O0n.js} +6 -6
  157. package/build/server/chunks/{_server.ts-B28SfXaZ.js.map → _server.ts-CFlF9O0n.js.map} +1 -1
  158. package/build/server/chunks/{_server.ts-BA7wxHYg.js → _server.ts-CM8lR2Jk.js} +6 -6
  159. package/build/server/chunks/{_server.ts-BA7wxHYg.js.map → _server.ts-CM8lR2Jk.js.map} +1 -1
  160. package/build/server/chunks/{_server.ts-6muCM4Nz.js → _server.ts-CMi1odxU.js} +6 -6
  161. package/build/server/chunks/{_server.ts-6muCM4Nz.js.map → _server.ts-CMi1odxU.js.map} +1 -1
  162. package/build/server/chunks/{_server.ts-DdocuErM.js → _server.ts-CPolXmaB.js} +7 -7
  163. package/build/server/chunks/{_server.ts-DdocuErM.js.map → _server.ts-CPolXmaB.js.map} +1 -1
  164. package/build/server/chunks/{_server.ts-BEaiuN8Q.js → _server.ts-CZ-P41xW.js} +6 -6
  165. package/build/server/chunks/{_server.ts-BEaiuN8Q.js.map → _server.ts-CZ-P41xW.js.map} +1 -1
  166. package/build/server/chunks/{_server.ts-BJv74_DI.js → _server.ts-Cc6blM9a.js} +6 -6
  167. package/build/server/chunks/{_server.ts-BJv74_DI.js.map → _server.ts-Cc6blM9a.js.map} +1 -1
  168. package/build/server/chunks/{_server.ts-D6wuFDe4.js → _server.ts-CcFK2dxk.js} +6 -6
  169. package/build/server/chunks/{_server.ts-D6wuFDe4.js.map → _server.ts-CcFK2dxk.js.map} +1 -1
  170. package/build/server/chunks/{_server.ts-CnQ4hgIT.js → _server.ts-CfB1cDLU.js} +7 -7
  171. package/build/server/chunks/{_server.ts-CnQ4hgIT.js.map → _server.ts-CfB1cDLU.js.map} +1 -1
  172. package/build/server/chunks/{_server.ts-CGZizh2V.js → _server.ts-ChK8wuma.js} +6 -6
  173. package/build/server/chunks/{_server.ts-CGZizh2V.js.map → _server.ts-ChK8wuma.js.map} +1 -1
  174. package/build/server/chunks/{_server.ts-CJVwtNhA.js → _server.ts-ClJrWUgt.js} +2 -2
  175. package/build/server/chunks/{_server.ts-CJVwtNhA.js.map → _server.ts-ClJrWUgt.js.map} +1 -1
  176. package/build/server/chunks/{_server.ts-Ds62LEMU.js → _server.ts-CpMO1w5D.js} +8 -8
  177. package/build/server/chunks/{_server.ts-Ds62LEMU.js.map → _server.ts-CpMO1w5D.js.map} +1 -1
  178. package/build/server/chunks/{_server.ts-DH3Uc_0m.js → _server.ts-CpwGXL04.js} +6 -6
  179. package/build/server/chunks/{_server.ts-DH3Uc_0m.js.map → _server.ts-CpwGXL04.js.map} +1 -1
  180. package/build/server/chunks/{_server.ts-D9yQyMbZ.js → _server.ts-CrUHXfa7.js} +6 -6
  181. package/build/server/chunks/{_server.ts-D9yQyMbZ.js.map → _server.ts-CrUHXfa7.js.map} +1 -1
  182. package/build/server/chunks/{_server.ts-C83FzZfP.js → _server.ts-CtNaQ39q.js} +6 -6
  183. package/build/server/chunks/{_server.ts-C83FzZfP.js.map → _server.ts-CtNaQ39q.js.map} +1 -1
  184. package/build/server/chunks/{_server.ts-Dy9l5NMO.js → _server.ts-Cu39Y3ON.js} +6 -6
  185. package/build/server/chunks/{_server.ts-Dy9l5NMO.js.map → _server.ts-Cu39Y3ON.js.map} +1 -1
  186. package/build/server/chunks/{_server.ts-D7X0LmkL.js → _server.ts-CyHlj4Xc.js} +6 -6
  187. package/build/server/chunks/{_server.ts-D7X0LmkL.js.map → _server.ts-CyHlj4Xc.js.map} +1 -1
  188. package/build/server/chunks/{_server.ts-DJCIu42O.js → _server.ts-CyMs8VXZ.js} +4 -4
  189. package/build/server/chunks/{_server.ts-DJCIu42O.js.map → _server.ts-CyMs8VXZ.js.map} +1 -1
  190. package/build/server/chunks/{_server.ts-BA11l9Z1.js → _server.ts-CydVYzX1.js} +6 -6
  191. package/build/server/chunks/{_server.ts-BA11l9Z1.js.map → _server.ts-CydVYzX1.js.map} +1 -1
  192. package/build/server/chunks/{_server.ts-Dj6nwJgl.js → _server.ts-CyiErd_B.js} +9 -9
  193. package/build/server/chunks/{_server.ts-Dj6nwJgl.js.map → _server.ts-CyiErd_B.js.map} +1 -1
  194. package/build/server/chunks/{_server.ts-CspCDw2x.js → _server.ts-Czl57SUr.js} +6 -6
  195. package/build/server/chunks/{_server.ts-CspCDw2x.js.map → _server.ts-Czl57SUr.js.map} +1 -1
  196. package/build/server/chunks/{_server.ts-DM9EsKQc.js → _server.ts-D7I9KZ4H.js} +6 -6
  197. package/build/server/chunks/{_server.ts-DM9EsKQc.js.map → _server.ts-D7I9KZ4H.js.map} +1 -1
  198. package/build/server/chunks/{_server.ts-D5F-pzp2.js → _server.ts-DDweV2eg.js} +6 -6
  199. package/build/server/chunks/{_server.ts-D5F-pzp2.js.map → _server.ts-DDweV2eg.js.map} +1 -1
  200. package/build/server/chunks/{_server.ts-CmUo0zla.js → _server.ts-DFq2AVjG.js} +6 -6
  201. package/build/server/chunks/{_server.ts-CmUo0zla.js.map → _server.ts-DFq2AVjG.js.map} +1 -1
  202. package/build/server/chunks/{_server.ts-CQHkw9ni.js → _server.ts-DPJJQkZp.js} +6 -6
  203. package/build/server/chunks/{_server.ts-CQHkw9ni.js.map → _server.ts-DPJJQkZp.js.map} +1 -1
  204. package/build/server/chunks/{_server.ts-CCmsGl_u.js → _server.ts-DQFO2xa9.js} +6 -6
  205. package/build/server/chunks/{_server.ts-CCmsGl_u.js.map → _server.ts-DQFO2xa9.js.map} +1 -1
  206. package/build/server/chunks/{_server.ts-BRdjsMSd.js → _server.ts-DYS4PknE.js} +6 -6
  207. package/build/server/chunks/{_server.ts-BRdjsMSd.js.map → _server.ts-DYS4PknE.js.map} +1 -1
  208. package/build/server/chunks/{_server.ts-D-Rf8If2.js → _server.ts-DcBrsY-a.js} +8 -8
  209. package/build/server/chunks/{_server.ts-D-Rf8If2.js.map → _server.ts-DcBrsY-a.js.map} +1 -1
  210. package/build/server/chunks/{_server.ts-C-tvKaFE.js → _server.ts-DcZIXa7_.js} +6 -6
  211. package/build/server/chunks/{_server.ts-C-tvKaFE.js.map → _server.ts-DcZIXa7_.js.map} +1 -1
  212. package/build/server/chunks/{_server.ts-BeP_sHqj.js → _server.ts-DdWIcyaa.js} +2 -2
  213. package/build/server/chunks/{_server.ts-BeP_sHqj.js.map → _server.ts-DdWIcyaa.js.map} +1 -1
  214. package/build/server/chunks/{_server.ts-CIv0zM75.js → _server.ts-DhZ0i-VZ.js} +7 -7
  215. package/build/server/chunks/{_server.ts-CIv0zM75.js.map → _server.ts-DhZ0i-VZ.js.map} +1 -1
  216. package/build/server/chunks/{_server.ts-Dcf84tjG.js → _server.ts-DiY7qGzB.js} +2 -2
  217. package/build/server/chunks/{_server.ts-Dcf84tjG.js.map → _server.ts-DiY7qGzB.js.map} +1 -1
  218. package/build/server/chunks/{_server.ts-CfuLncMW.js → _server.ts-DkWPvbVT.js} +6 -6
  219. package/build/server/chunks/{_server.ts-CfuLncMW.js.map → _server.ts-DkWPvbVT.js.map} +1 -1
  220. package/build/server/chunks/{_server.ts-DnczK3Pw.js → _server.ts-DmuQV3XR.js} +4 -4
  221. package/build/server/chunks/{_server.ts-DnczK3Pw.js.map → _server.ts-DmuQV3XR.js.map} +1 -1
  222. package/build/server/chunks/{_server.ts-DKYXeaKr.js → _server.ts-DprY8V8n.js} +6 -6
  223. package/build/server/chunks/{_server.ts-DKYXeaKr.js.map → _server.ts-DprY8V8n.js.map} +1 -1
  224. package/build/server/chunks/{_server.ts-DsVbuYhj.js → _server.ts-Dr7DPWfx.js} +7 -7
  225. package/build/server/chunks/{_server.ts-DsVbuYhj.js.map → _server.ts-Dr7DPWfx.js.map} +1 -1
  226. package/build/server/chunks/{_server.ts-Dl-Rn5Ku.js → _server.ts-DsRKY-Kc.js} +6 -6
  227. package/build/server/chunks/{_server.ts-Dl-Rn5Ku.js.map → _server.ts-DsRKY-Kc.js.map} +1 -1
  228. package/build/server/chunks/{_server.ts-C8eCqXP6.js → _server.ts-DtY45qj6.js} +6 -6
  229. package/build/server/chunks/{_server.ts-C8eCqXP6.js.map → _server.ts-DtY45qj6.js.map} +1 -1
  230. package/build/server/chunks/{_server.ts-2Z0JYuCr.js → _server.ts-DxbCMYot.js} +6 -6
  231. package/build/server/chunks/{_server.ts-2Z0JYuCr.js.map → _server.ts-DxbCMYot.js.map} +1 -1
  232. package/build/server/chunks/{_server.ts-42ZGRWhn.js → _server.ts-DzO2o8u_.js} +6 -6
  233. package/build/server/chunks/{_server.ts-42ZGRWhn.js.map → _server.ts-DzO2o8u_.js.map} +1 -1
  234. package/build/server/chunks/{_server.ts-DdHx6Xig.js → _server.ts-G80g1-Vi.js} +6 -6
  235. package/build/server/chunks/{_server.ts-DdHx6Xig.js.map → _server.ts-G80g1-Vi.js.map} +1 -1
  236. package/build/server/chunks/{_server.ts-2-50j5S8.js → _server.ts-RjE7mkg4.js} +6 -6
  237. package/build/server/chunks/{_server.ts-2-50j5S8.js.map → _server.ts-RjE7mkg4.js.map} +1 -1
  238. package/build/server/chunks/{_server.ts-Ba8xSIQn.js → _server.ts-SqpxZ5hM.js} +6 -6
  239. package/build/server/chunks/{_server.ts-Ba8xSIQn.js.map → _server.ts-SqpxZ5hM.js.map} +1 -1
  240. package/build/server/chunks/{_server.ts-DH343hlx.js → _server.ts-TecIejZG.js} +7 -7
  241. package/build/server/chunks/{_server.ts-DH343hlx.js.map → _server.ts-TecIejZG.js.map} +1 -1
  242. package/build/server/chunks/{_server.ts-BBewn2kP.js → _server.ts-UMlNzGum.js} +6 -6
  243. package/build/server/chunks/{_server.ts-BBewn2kP.js.map → _server.ts-UMlNzGum.js.map} +1 -1
  244. package/build/server/chunks/{_server.ts-C9F005zM.js → _server.ts-WTL-RZDk.js} +6 -6
  245. package/build/server/chunks/{_server.ts-C9F005zM.js.map → _server.ts-WTL-RZDk.js.map} +1 -1
  246. package/build/server/chunks/{_server.ts-pRYFJihh.js → _server.ts-YQAFFkYo.js} +7 -7
  247. package/build/server/chunks/{_server.ts-pRYFJihh.js.map → _server.ts-YQAFFkYo.js.map} +1 -1
  248. package/build/server/chunks/{_server.ts-CncBUb14.js → _server.ts-ZkptKFXP.js} +6 -6
  249. package/build/server/chunks/{_server.ts-CncBUb14.js.map → _server.ts-ZkptKFXP.js.map} +1 -1
  250. package/build/server/chunks/{_server.ts-Dq4RvC5F.js → _server.ts-opJkoWRS.js} +6 -6
  251. package/build/server/chunks/{_server.ts-Dq4RvC5F.js.map → _server.ts-opJkoWRS.js.map} +1 -1
  252. package/build/server/chunks/{_server.ts-BJrYBXpY.js → _server.ts-s_DZwJLK.js} +6 -6
  253. package/build/server/chunks/{_server.ts-BJrYBXpY.js.map → _server.ts-s_DZwJLK.js.map} +1 -1
  254. package/build/server/chunks/{_server.ts-BsPu8Fny.js → _server.ts-ukIYk-_Z.js} +6 -6
  255. package/build/server/chunks/{_server.ts-BsPu8Fny.js.map → _server.ts-ukIYk-_Z.js.map} +1 -1
  256. package/build/server/chunks/{_server.ts-D7VWMcNm.js → _server.ts-vXf4p_i0.js} +7 -7
  257. package/build/server/chunks/{_server.ts-D7VWMcNm.js.map → _server.ts-vXf4p_i0.js.map} +1 -1
  258. package/build/server/chunks/{addon-helpers-Cgg8lPxe.js → addon-helpers-CEjIrSBN.js} +3 -3
  259. package/build/server/chunks/{addon-helpers-Cgg8lPxe.js.map → addon-helpers-CEjIrSBN.js.map} +1 -1
  260. package/build/server/chunks/{akm-5HN45xWY.js → akm-rRfSaKvH.js} +2 -2
  261. package/build/server/chunks/{akm-5HN45xWY.js.map → akm-rRfSaKvH.js.map} +1 -1
  262. package/build/server/chunks/{catalog-7z8dgrJF.js → catalog-DMG_Bwji.js} +5 -5
  263. package/build/server/chunks/{catalog-7z8dgrJF.js.map → catalog-DMG_Bwji.js.map} +1 -1
  264. package/build/server/chunks/{client-D2lMniPd.js → client-BvFq2PRx.js} +2 -2
  265. package/build/server/chunks/{client-D2lMniPd.js.map → client-BvFq2PRx.js.map} +1 -1
  266. package/build/server/chunks/{compose-args2-BFdWixAZ.js → compose-args2-C39WGM9r.js} +2 -2
  267. package/build/server/chunks/compose-args2-C39WGM9r.js.map +1 -0
  268. package/build/server/chunks/{config-I5hb-W80.js → config-BndRz7Yl.js} +2 -2
  269. package/build/server/chunks/{config-I5hb-W80.js.map → config-BndRz7Yl.js.map} +1 -1
  270. package/build/server/chunks/{connections-api-NkotVLIl.js → connections-api-BvJpsZBj.js} +2 -2
  271. package/build/server/chunks/{connections-api-NkotVLIl.js.map → connections-api-BvJpsZBj.js.map} +1 -1
  272. package/build/server/chunks/{docker2-HZnACjh6.js → docker2-Ba2Whd9Y.js} +2 -2
  273. package/build/server/chunks/docker2-Ba2Whd9Y.js.map +1 -0
  274. package/build/server/chunks/{docker3-Dj9Pc_Pt.js → docker3-DhaO_Pxj.js} +2 -2
  275. package/build/server/chunks/{docker3-Dj9Pc_Pt.js.map → docker3-DhaO_Pxj.js.map} +1 -1
  276. package/build/server/chunks/{endpoints-B9ePqrMw.js → endpoints-CuL8lAcu.js} +3 -3
  277. package/build/server/chunks/{endpoints-B9ePqrMw.js.map → endpoints-CuL8lAcu.js.map} +1 -1
  278. package/build/server/chunks/environment-BYp8JQYM.js.map +1 -1
  279. package/build/server/chunks/{error.svelte-DGngrZ2V.js → error.svelte-C8Qx6FF6.js} +4 -4
  280. package/build/server/chunks/{error.svelte-DGngrZ2V.js.map → error.svelte-C8Qx6FF6.js.map} +1 -1
  281. package/build/server/chunks/{features-0lgyQreD.js → features-WsEodW5F.js} +3 -3
  282. package/build/server/chunks/{features-0lgyQreD.js.map → features-WsEodW5F.js.map} +1 -1
  283. package/build/server/chunks/{helpers-q4Ng8QTq.js → helpers-XmKveZFr.js} +4 -4
  284. package/build/server/chunks/{helpers-q4Ng8QTq.js.map → helpers-XmKveZFr.js.map} +1 -1
  285. package/build/server/chunks/{hooks.server-BTXqUhpH.js → hooks.server-o4bkPFRD.js} +9 -9
  286. package/build/server/chunks/{hooks.server-BTXqUhpH.js.map → hooks.server-o4bkPFRD.js.map} +1 -1
  287. package/build/server/chunks/{http-jBNJXVHg.js → http-CL5QncYd.js} +2 -2
  288. package/build/server/chunks/{http-jBNJXVHg.js.map → http-CL5QncYd.js.map} +1 -1
  289. package/build/server/chunks/{internal-G-Uk-kCA.js → internal-D66tKQSe.js} +3 -3
  290. package/build/server/chunks/{internal-G-Uk-kCA.js.map → internal-D66tKQSe.js.map} +1 -1
  291. package/build/server/chunks/{landing-BR5KUuDz.js → landing-DvVXSE_x.js} +5 -5
  292. package/build/server/chunks/{landing-BR5KUuDz.js.map → landing-DvVXSE_x.js.map} +1 -1
  293. package/build/server/chunks/{paths-tzRSDsKc.js → paths-BpdOajoE.js} +2 -2
  294. package/build/server/chunks/{paths-tzRSDsKc.js.map → paths-BpdOajoE.js.map} +1 -1
  295. package/build/server/chunks/{session-cookie-qHDuQboc.js → session-cookie-B0Fc-L8S.js} +2 -2
  296. package/build/server/chunks/{session-cookie-qHDuQboc.js.map → session-cookie-B0Fc-L8S.js.map} +1 -1
  297. package/build/server/chunks/{setup-deploy-DleJTifu.js → setup-deploy-BjJIt1Gf.js} +2 -2
  298. package/build/server/chunks/{setup-deploy-DleJTifu.js.map → setup-deploy-BjJIt1Gf.js.map} +1 -1
  299. package/build/server/chunks/{src-BwQUi60U.js → src-i2v6xhSC.js} +4 -4
  300. package/build/server/chunks/{src-BwQUi60U.js.map → src-i2v6xhSC.js.map} +1 -1
  301. package/build/server/chunks/{state-Dm7U51xT.js → state-fVG29xFj.js} +2 -2
  302. package/build/server/chunks/{state-Dm7U51xT.js.map → state-fVG29xFj.js.map} +1 -1
  303. package/build/server/chunks/{state2-BhKHITEo.js → state2-Dl7-d1h_.js} +2 -2
  304. package/build/server/chunks/{state2-BhKHITEo.js.map → state2-Dl7-d1h_.js.map} +1 -1
  305. package/build/server/index.js +1 -1
  306. package/build/server/manifest.js +96 -96
  307. package/build/server/manifest.js.map +1 -1
  308. package/package.json +2 -2
  309. package/build/client/_app/immutable/chunks/9mRSvTWj.js.br +0 -0
  310. package/build/client/_app/immutable/chunks/9mRSvTWj.js.gz +0 -0
  311. package/build/client/_app/immutable/chunks/B_Sgy7qx.js +0 -1
  312. package/build/client/_app/immutable/chunks/B_Sgy7qx.js.br +0 -2
  313. package/build/client/_app/immutable/chunks/B_Sgy7qx.js.gz +0 -0
  314. package/build/client/_app/immutable/chunks/Be7qat4r.js.br +0 -0
  315. package/build/client/_app/immutable/chunks/Be7qat4r.js.gz +0 -0
  316. package/build/client/_app/immutable/chunks/BoOBAdGl.js.br +0 -0
  317. package/build/client/_app/immutable/chunks/BoOBAdGl.js.gz +0 -0
  318. package/build/client/_app/immutable/chunks/DSs95sLz.js.br +0 -0
  319. package/build/client/_app/immutable/chunks/DSs95sLz.js.gz +0 -0
  320. package/build/client/_app/immutable/entry/app.DZwy1Y3W.js.br +0 -0
  321. package/build/client/_app/immutable/entry/app.DZwy1Y3W.js.gz +0 -0
  322. package/build/client/_app/immutable/entry/start.C0ic7Ewp.js +0 -1
  323. package/build/client/_app/immutable/entry/start.C0ic7Ewp.js.br +0 -1
  324. package/build/client/_app/immutable/entry/start.C0ic7Ewp.js.gz +0 -0
  325. package/build/client/_app/immutable/nodes/1.Bxihn5f1.js.br +0 -0
  326. package/build/client/_app/immutable/nodes/1.Bxihn5f1.js.gz +0 -0
  327. package/build/client/_app/immutable/nodes/10.BZ76_WLP.js.br +0 -0
  328. package/build/client/_app/immutable/nodes/10.BZ76_WLP.js.gz +0 -0
  329. package/build/client/_app/immutable/nodes/11.Bzf3G5G0.js.br +0 -0
  330. package/build/client/_app/immutable/nodes/11.Bzf3G5G0.js.gz +0 -0
  331. package/build/client/_app/immutable/nodes/4.D-CwW2PH.js.br +0 -0
  332. package/build/client/_app/immutable/nodes/4.D-CwW2PH.js.gz +0 -0
  333. package/build/client/_app/immutable/nodes/5.BbStivMI.js.br +0 -0
  334. package/build/client/_app/immutable/nodes/5.BbStivMI.js.gz +0 -0
  335. package/build/client/_app/immutable/nodes/6.BKVgKxKO.js.br +0 -0
  336. package/build/client/_app/immutable/nodes/6.BKVgKxKO.js.gz +0 -0
  337. package/build/client/_app/immutable/nodes/7.DuXt155R.js.br +0 -0
  338. package/build/client/_app/immutable/nodes/7.DuXt155R.js.gz +0 -0
  339. package/build/client/_app/immutable/nodes/9.BdeFVi2a.js.br +0 -0
  340. package/build/client/_app/immutable/nodes/9.BdeFVi2a.js.gz +0 -0
  341. package/build/server/chunks/1-Ceq9WsUZ.js +0 -9
  342. package/build/server/chunks/compose-args2-BFdWixAZ.js.map +0 -1
  343. package/build/server/chunks/docker2-HZnACjh6.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import{B as e,F as t,I as n,K as r,L as i,M as a,N as o,P as s,R as c,U as l,V as u,X as d,Y as f,a as p,at as m,b as h,bt as g,c as _,dt as v,f as y,h as b,ht as x,it as S,k as C,lt as w,m as T,mt as E,nt as D,o as O,p as k,r as A,rt as j,st as M,tt as N,w as P,xt as F,y as I,z as L}from"../chunks/BzIvC31O.js";import{l as R}from"../chunks/Be7qat4r.js";import"../chunks/xihTtKlq.js";import"../chunks/DfZbBavE.js";import{t as z}from"../chunks/BDK50g8a.js";import{t as B}from"../chunks/NR-JVJz-.js";import{t as V}from"../chunks/SXdvPq3_.js";import{t as H}from"../chunks/D5FtEngX.js";import{n as ee,t as U}from"../chunks/CUa5ff3d.js";var W=Object.fromEntries(Object.entries({"openai/text-embedding-3-small":1536,"openai/text-embedding-3-large":3072,"openai/text-embedding-ada-002":1536,"ollama/nomic-embed-text":768,"ollama/mxbai-embed-large":1024,"ollama/mxbai-embed-large-v1":1024,"ollama/all-minilm":384,"ollama/snowflake-arctic-embed":1024,"model-runner/ai/mxbai-embed-large-v1":1024,"mistral/mistral-embed":1024,"google/text-embedding-004":768,"huggingface/sentence-transformers/all-MiniLM-L6-v2":384,"huggingface/intfloat/multilingual-e5-large":1024}).map(([e,t])=>[e.slice(e.indexOf(`/`)+1),t])),G={chat:`llama3.2:latest`,embedding:`nomic-embed-text`}.chat;function K(e,t){return`addon.${e}.${t}`}var q=[{id:`ollama`,name:`Ollama`,kind:`local`,group:`recommended`,order:1,icon:`🦙`,desc:`Run open models on your hardware`,needsKey:!1,placeholder:``,baseUrl:`http://localhost:11434`,llmModel:`llama3.2`,embModel:`nomic-embed-text`,embDims:768,canDetect:!0},{id:`huggingface`,name:`Hugging Face`,kind:`cloud`,group:`recommended`,order:2,icon:`🤗`,desc:`10,000+ open models via Inference Providers`,needsKey:!0,placeholder:`hf_...`,baseUrl:`https://router.huggingface.co/v1`,llmModel:`Qwen/Qwen3-32B`,embModel:`intfloat/multilingual-e5-large`,embDims:1024,keyPrefix:`hf_`},{id:`openai`,name:`OpenAI`,kind:`cloud`,group:`recommended`,order:3,icon:`◐`,desc:`GPT and o-series reasoning models`,needsKey:!0,placeholder:`sk-...`,baseUrl:`https://api.openai.com`,llmModel:`gpt-4o`,embModel:`text-embedding-3-small`,embDims:1536},{id:`google`,name:`Google`,kind:`cloud`,group:`recommended`,order:4,icon:`◆`,desc:`Gemini models with large context`,needsKey:!0,placeholder:`AIza...`,baseUrl:`https://generativelanguage.googleapis.com`,llmModel:`gemini-2.5-flash`,embModel:``,embDims:0,keyPrefix:`AI`},{id:`model-runner`,name:`Docker Model Runner`,kind:`local`,group:`local`,order:1,icon:`🐳`,desc:`Docker-managed model runtime`,needsKey:!1,placeholder:``,baseUrl:`http://localhost:12434`,llmModel:`ai/llama3.2`,embModel:`ai/mxbai-embed-large-v1`,embDims:1024,canDetect:!0},{id:`lmstudio`,name:`LM Studio`,kind:`local`,group:`local`,order:2,icon:`🔬`,desc:`Desktop app for local inference`,needsKey:!1,placeholder:``,baseUrl:`http://localhost:1234`,llmModel:`loaded-model`,embModel:``,embDims:0,canDetect:!0},{id:`groq`,name:`Groq`,kind:`cloud`,group:`cloud`,order:1,icon:`⚡`,desc:`Ultra-fast inference`,needsKey:!0,placeholder:`gsk_...`,baseUrl:`https://api.groq.com/openai`,llmModel:`llama-3.3-70b-versatile`,embModel:``,embDims:0},{id:`mistral`,name:`Mistral`,kind:`cloud`,group:`cloud`,order:2,icon:`◆`,desc:`Mistral & Codestral models`,needsKey:!0,placeholder:`...`,baseUrl:`https://api.mistral.ai`,llmModel:`mistral-large-latest`,embModel:`mistral-embed`,embDims:1024},{id:`together`,name:`Together AI`,kind:`cloud`,group:`cloud`,order:3,icon:`✦`,desc:`Open models at scale`,needsKey:!0,placeholder:`...`,baseUrl:`https://api.together.xyz`,llmModel:`meta-llama/Llama-3.3-70B-Instruct-Turbo`,embModel:``,embDims:0},{id:`deepseek`,name:`DeepSeek`,kind:`cloud`,group:`advanced`,order:1,icon:`◎`,desc:`DeepSeek chat & reasoning`,needsKey:!0,placeholder:`sk-...`,baseUrl:`https://api.deepseek.com`,llmModel:`deepseek-chat`,embModel:``,embDims:0},{id:`xai`,name:`xAI (Grok)`,kind:`cloud`,group:`advanced`,order:2,icon:`✦`,desc:`Grok models`,needsKey:!0,placeholder:`xai-...`,baseUrl:`https://api.x.ai`,llmModel:`grok-2`,embModel:``,embDims:0},{id:`openai-compatible`,name:`Custom API server`,kind:`cloud`,group:`advanced`,order:3,icon:`~`,desc:`Connect any AI server that uses the standard OpenAI API format.`,needsKey:!1,needsUrl:!0,optionalKey:!0,placeholder:`API key (optional)`,baseUrl:``,llmModel:``,embModel:``,embDims:0}],J=[`llamacpp`,`localai`],Y=new Set([...q.filter(e=>e.kind===`local`).map(e=>e.id),...J]),te={openai:`ChatGPT (OpenAI)`,google:`Gemini (Google)`,"github-copilot":`GitHub Copilot`,groq:`Groq`,anthropic:`Claude (Anthropic)`,mistral:`Mistral`,cohere:`Cohere`};function ne(e,t={}){return e?te[e]||(t.localLabel&&Y.has(e)?t.localLabel:t.extraProviders?.find(t=>t.id===e)?.name||(q.find(t=>t.id===e)?.name??e)):``}var X=new Set([`anthropic`]),re=[{id:`api`,name:`API`,icon:`🔌`,desc:`OpenAI-compatible REST API endpoint`,locked:!0},{id:`discord`,name:`Discord`,icon:`🎮`,desc:`Connect to a Discord server`,credentials:[{key:`botToken`,label:`Bot Token`,placeholder:`Paste Discord bot token`,required:!0},{key:`applicationId`,label:`Application ID`,placeholder:`Discord application ID`,secret:!1}]},{id:`slack`,name:`Slack`,icon:`💼`,desc:`Access via Slack bot`,credentials:[{key:`slackBotToken`,label:`Bot Token`,placeholder:`xoxb-...`,required:!0},{key:`slackAppToken`,label:`App Token`,placeholder:`xapp-...`,required:!0}]}],ie=[{id:`ollama`,name:`Ollama`,env:[],models:{},localUrl:`http://localhost:11434`},{id:`model-runner`,name:`Docker Model Runner`,env:[],models:{},localUrl:`http://localhost:12434`},{id:`lmstudio`,name:`LM Studio`,env:[],models:{},localUrl:`http://localhost:1234`},{id:`openai-compatible`,name:`Custom API server`,env:[],models:{},localUrl:``}];function ae(e,t,n,r){let i=e=>e.available!==!1,a=K(t,r??(n?`cuda`:`cpu`)),o=K(t,`cpu`);return(e.find(e=>e.id===a&&i(e))??e.find(e=>e.default&&i(e))??e.find(e=>e.id===o&&i(e))??e.find(e=>i(e)))?.id}function oe(e){return e.replace(/:.*$/,``)}function se(e){let t=oe(e);return W[e]!==void 0||W[t]!==void 0?!0:/(?:^|[-/_.])(embed|embedding|bge|gte|e5|nomic|mxbai|arctic-embed|minilm)/i.test(e)}function ce(e,t){let n=t.toLowerCase(),r=0;/instruct|chat|-it\b|\bit\b/.test(n)&&(r+=30),/coder|code/.test(n)&&(r+=8);let i=n.match(/(\d+(?:\.\d+)?)\s*x?\s*b\b/),a=i?parseFloat(i[1]):0;return e===`llm`?r+=Math.min(40,a):r+=Math.max(0,20-Math.min(20,a)),r}function Z(e,t,n){let r=[];for(let i of t){let t=n[i.id];if(!t)continue;let a=e===`embedding`?i.embModel:i.llmModel,o=t.models.length>0?t.models:[],s=a?o.find(e=>e===a||oe(e)===oe(a)):void 0;for(let n of o){if(e!==`embedding`&&se(n))continue;let a=e===`embedding`?W[n]??W[oe(n)]??(n===s?i.embDims:0)??0:0;r.push({id:n,connId:i.id,providerName:i.name,baseUrl:t.baseUrl||i.baseUrl,isDefault:n===s,dims:a})}}return e===`embedding`?r.filter(e=>e.isDefault||e.dims>0):r.sort((t,n)=>!!Y.has(t.connId)-+!!Y.has(n.connId)||!!n.isDefault-+!!t.isDefault||ce(e,n.id)-ce(e,t.id))}function le(e,t,n){return e.engine?e:t?{engine:`openpalm-voice`}:{engine:n}}function ue(e,t,n){if(n)return!0;let r=e[t];return typeof r==`object`&&r?r.enabled:!!r}function de(e,t,n){let r=e[t];return typeof r==`object`&&r?String(r[n]??``):``}function fe(){let e=new Uint8Array(16);return crypto.getRandomValues(e),Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(``)}function pe(e){let t={};for(let n of re){let r=e[n.id];if(n.locked)t[n.id]=!0;else if(typeof r==`object`&&r){if(r.enabled){let e={enabled:!0};if(n.credentials)for(let t of n.credentials){let n=r[t.key];n&&(e[t.key]=n)}t[n.id]=e}}else r&&(t[n.id]=!0)}return t}function me(e,t,n){if(e){let e=t.filter(e=>n[e.id]?.verified).map(e=>{let t=n[e.id],r=q.find(t=>t.id===e.id);return{id:e.id,name:e.name??e.id,kind:`cloud`,group:``,order:0,icon:``,desc:``,baseUrl:t?.baseUrl??``,llmModel:r?.llmModel??``,embModel:r?.embModel??``,embDims:r?.embDims??0}}),r=new Set(e.map(e=>e.id)),i=q.filter(e=>!r.has(e.id)&&n[e.id]?.verified).map(e=>{let t=n[e.id];return{id:e.id,name:e.name,kind:e.kind,group:e.group,order:e.order,icon:e.icon,desc:e.desc,baseUrl:t?.baseUrl??e.baseUrl,llmModel:e.llmModel,embModel:e.embModel,embDims:e.embDims}});return[...e,...i]}return q.filter(e=>n[e.id]?.verified)}function he(e,t,n){let r={...e};for(let e of[`llm`,`embedding`,`small`]){if(r[e]||e===`embedding`)continue;let i=Z(e,t,n);if(i.length===0)continue;let a=i[0];r[e]={connId:a.connId,model:a.id,dims:a.dims}}return r}function ge(e,t,n,r){if(!t)return;let i=t.indexOf(`/`),a=i>0?t.slice(0,i):``,o=i>0?t.slice(i+1):t,s=Z(e,n,r),c=s.find(e=>e.id===t);if(c)return{connId:c.connId,model:c.id,dims:c.dims};let l=a?s.find(e=>e.connId===a&&e.id===o):void 0;if(l)return{connId:l.connId,model:l.id,dims:l.dims};let u=s.find(e=>e.id===o);if(u)return{connId:u.connId,model:u.id,dims:u.dims};if(a&&n.some(e=>e.id===a))return{connId:a,model:o,dims:0}}function _e(e){if(!e.engine||e.engine.startsWith(`skip-`))return;let t={enabled:!0,engine:e.engine};return e.provider&&(t.provider=e.provider),e.baseURL&&(t.baseURL=e.baseURL),e.model&&(t.model=e.model),e.voice&&(t.voice=e.voice),e.language&&(t.language=e.language),e.apiKey&&(t.apiKey=e.apiKey),t}function ve(e){let{modelSelection:t,verifiedProviders:n,providerState:r,ollamaEnabled:i,hostLocalLlmRunning:a,persistedVoiceTts:o,persistedVoiceStt:s,selectedVoiceProfile:c,selectedOllamaProfile:l,portalSelection:u,uiLoginPassword:d,imageTag:f,hostAkmEnabled:p}=e,m=t.llm,h=t.embedding,g=t.small,_={};m&&(_[m.connId]=!0),h&&(_[h.connId]=!0),g?.model&&(_[g.connId]=!0);let v=n.filter(e=>_[e.id]).map(e=>{let t=r[e.id];return{id:e.id,name:e.name,provider:e.id,baseUrl:t?.baseUrl??e.baseUrl,apiKey:t?.apiKey??``}}),y=m?.connId??``,b=h?.connId??``,x=v.find(e=>e.id===y),S=v.find(e=>e.id===b),C=x?.provider??``,w=S?.provider??``,T={};i&&!a&&(T.ollama=!0),(o.engine===`openpalm-voice`||s.engine===`openpalm-voice`)&&(T.voice=!0);let E={},D=pe(u);for(let e of Object.keys(D)){let t=D[e];if(t===!0)T[e]=!0;else if(typeof t==`object`&&t){T[e]=!0;let n={};for(let e of Object.keys(t))e!==`enabled`&&t[e]&&(n[e]=String(t[e]));Object.keys(n).length>0&&(E[e]=n)}}let O={version:2,addons:T,security:{uiLoginPassword:d},connections:v};C&&m?.model&&(O.llm={provider:C,model:m.model,baseUrl:x?.baseUrl??``}),w&&h?.model&&(O.embedding={provider:w,model:h.model,dims:h.dims??1536,baseUrl:S?.baseUrl??``});let k=_e(o);k&&(O.tts=k);let A=_e(s);return A&&(O.stt=A),(o.engine===`openpalm-voice`||s.engine===`openpalm-voice`)&&c&&(O.voiceProfile=c),i&&l&&(O.ollamaProfile=l),Object.keys(E).length>0&&(O.portalCredentials=E),f.trim()&&(O.imageTag=f.trim()),p&&(O.hostAkm=!0),O}function ye(e){let t={enabledAddons:[],portalCredentials:{}};if(typeof e.hostAkm==`boolean`&&(t.hostAkmEnabled=e.hostAkm),e.llm?.provider&&e.llm?.model&&(t.llm={connId:e.llm.provider,model:e.llm.model}),e.embedding?.provider&&e.embedding?.model&&(t.embedding={connId:e.embedding.provider,model:e.embedding.model,dims:e.embedding.dims}),e.voice?.tts){let n=e.voice.tts;t.voiceTts=n.engine?{...n,engine:n.engine}:{engine:``}}if(e.voice?.stt){let n=e.voice.stt;t.voiceStt=n.engine?{...n,engine:n.engine}:{engine:``}}e.voice?.selectedProfile&&typeof e.voice.selectedProfile==`string`&&(t.selectedVoiceProfile=e.voice.selectedProfile);let n=e.importedModelPreferences;n?.model&&(t.importedLlmModel=n.model),n?.small_model&&(t.importedSmallModel=n.small_model);let r=Array.isArray(e.enabledAddons)?e.enabledAddons:[];return t.enabledAddons=r,r.includes(`ollama`)&&(t.ollamaEnabled=!0),e.ollama?.selectedProfile&&typeof e.ollama.selectedProfile==`string`&&(t.selectedOllamaProfile=e.ollama.selectedProfile),t.portalCredentials=e.portalCredentials??{},t}var be=`/api/setup`;async function Q(e,t,n,r){let i={method:e};return n!==void 0&&(i.headers={"Content-Type":`application/json`},i.body=JSON.stringify(n)),r&&(i.signal=r),fetch(`${be}${t}`,i)}async function xe(){let e=await Q(`GET`,`/voice-profiles`);return e.ok?await e.json():null}async function Se(){let e=await Q(`GET`,`/ollama-profiles`);return e.ok?await e.json():null}async function Ce(){let e=await Q(`GET`,`/recommend`);return e.ok?await e.json():null}async function we(){let e=await Q(`POST`,`/opencode/ensure`);return e.ok?await e.json():null}async function Te(){let e=await Q(`GET`,`/opencode/status`);return e.ok?await e.json():null}async function Ee(){let e=await Q(`GET`,`/opencode/providers`);return e.ok?await e.json():null}async function De(){let e=await Q(`GET`,`/detect-providers`);return e.ok?await e.json():null}async function Oe(e,t){let n=await Q(`POST`,`/models/${encodeURIComponent(e)}`,{apiKey:t.apiKey??``,baseUrl:t.baseUrl??``}),r=await n.json();if(!n.ok||r.status===`recoverable_error`)throw Error(r.error??`Failed to fetch models (HTTP ${n.status})`);return r}async function ke(e,t){let n=await Q(`POST`,`/opencode/provider/${encodeURIComponent(e)}/oauth/authorize`,{method:t}),r=await n.json();if(!n.ok)throw Error(r.message??`OAuth failed`);return r}async function Ae(e,t,n){let r=await Q(`POST`,`/opencode/provider/${encodeURIComponent(e)}/oauth/callback`,{method:t},n),i=await r.json().catch(()=>null);return{ok:r.ok,data:i}}async function je(e){let t=await Q(`POST`,`/complete`,e),n=await t.json().catch(()=>({}));return{ok:t.ok,data:n}}async function Me(){let e=await Q(`GET`,`/deploy-status`);return e.ok?{ok:!0,data:await e.json()}:{ok:!1,data:null}}async function Ne(){let e=await Q(`POST`,`/retry-deploy`),t=await e.json().catch(()=>({}));return{ok:e.ok,data:t}}async function Pe(){let e=await Q(`GET`,`/host-status`);return e.ok?await e.json():null}async function Fe(){let e=await Q(`POST`,`/import-host`),t=await e.json().catch(()=>null);return{ok:e.ok,data:t}}async function Ie(){let e=await Q(`GET`,`/current-config`);return e.ok?await e.json():null}async function Le(){return await(await Q(`GET`,`/status`)).json()}var $={currentStep:0,maxVisitedStep:0,showDeploy:!1,systemCheckPassed:!1,modelMode:`cloud`,voiceEnabled:!1,uiLoginPassword:``,step0Error:``,autoModeImporting:!1,gpuDetected:!1,providerState:{},detectedHostProviders:[],detectedProviders:[],opencodeAvailable:!1,opencodeProviders:[],opencodeAuth:{},hostProviderCount:0,allowEmptyInstall:!1,recommendation:null,recommendationAlert:``,recommendationApplied:!1,detectedGpuVramMb:0,detectedGpuVendor:``,detectedGpuName:``,modelSelection:{},voiceTts:{engine:``},voiceStt:{engine:``},voiceProfiles:[],selectedVoiceProfile:``,importedLlmModel:void 0,importedSmallModel:void 0,portalSelection:{discord:{enabled:!1,botToken:``,applicationId:``},slack:{enabled:!1,slackBotToken:``,slackAppToken:``}},ollamaEnabled:!1,ollamaProfiles:[],selectedOllamaProfile:``,imageTag:``,hostAkmEnabled:!1,installError:``,installing:!1,emptyAiAck:!1,deployData:{},deployDone:!1,deployHasWarnings:!1,deployError:null,deployPollErrors:0,savedCloudLlm:void 0,detectedCloudConn:``,hostImportTriggered:!1,hostImporting:!1,hostImportError:``,isRerun:!1},Re=new class{#e=w(m($.currentStep));get currentStep(){return l(this.#e)}set currentStep(e){M(this.#e,e,!0)}#t=w(m($.maxVisitedStep));get maxVisitedStep(){return l(this.#t)}set maxVisitedStep(e){M(this.#t,e,!0)}#n=w(m($.showDeploy));get showDeploy(){return l(this.#n)}set showDeploy(e){M(this.#n,e,!0)}#r=w(m($.systemCheckPassed));get systemCheckPassed(){return l(this.#r)}set systemCheckPassed(e){M(this.#r,e,!0)}#i=w(m($.modelMode));get modelMode(){return l(this.#i)}set modelMode(e){M(this.#i,e,!0)}#a=w(m($.voiceEnabled));get voiceEnabled(){return l(this.#a)}set voiceEnabled(e){M(this.#a,e,!0)}#o=w(m($.uiLoginPassword));get uiLoginPassword(){return l(this.#o)}set uiLoginPassword(e){M(this.#o,e,!0)}#s=w(m($.step0Error));get step0Error(){return l(this.#s)}set step0Error(e){M(this.#s,e,!0)}#c=w(m($.autoModeImporting));get autoModeImporting(){return l(this.#c)}set autoModeImporting(e){M(this.#c,e,!0)}#l=w(m($.gpuDetected));get gpuDetected(){return l(this.#l)}set gpuDetected(e){M(this.#l,e,!0)}#u=w(m($.providerState));get providerState(){return l(this.#u)}set providerState(e){M(this.#u,e,!0)}#d=w(m($.detectedHostProviders));get detectedHostProviders(){return l(this.#d)}set detectedHostProviders(e){M(this.#d,e,!0)}#f=w(m($.detectedProviders));get detectedProviders(){return l(this.#f)}set detectedProviders(e){M(this.#f,e,!0)}#p=w(m($.opencodeAvailable));get opencodeAvailable(){return l(this.#p)}set opencodeAvailable(e){M(this.#p,e,!0)}#m=w(m($.opencodeProviders));get opencodeProviders(){return l(this.#m)}set opencodeProviders(e){M(this.#m,e,!0)}#h=w(m($.opencodeAuth));get opencodeAuth(){return l(this.#h)}set opencodeAuth(e){M(this.#h,e,!0)}#g=w(m($.hostProviderCount));get hostProviderCount(){return l(this.#g)}set hostProviderCount(e){M(this.#g,e,!0)}#_=w(m($.allowEmptyInstall));get allowEmptyInstall(){return l(this.#_)}set allowEmptyInstall(e){M(this.#_,e,!0)}#v=w(m($.recommendation));get recommendation(){return l(this.#v)}set recommendation(e){M(this.#v,e,!0)}#y=w(m($.recommendationAlert));get recommendationAlert(){return l(this.#y)}set recommendationAlert(e){M(this.#y,e,!0)}#b=w(m($.recommendationApplied));get recommendationApplied(){return l(this.#b)}set recommendationApplied(e){M(this.#b,e,!0)}#x=w(m($.detectedGpuVramMb));get detectedGpuVramMb(){return l(this.#x)}set detectedGpuVramMb(e){M(this.#x,e,!0)}#S=w(m($.detectedGpuVendor));get detectedGpuVendor(){return l(this.#S)}set detectedGpuVendor(e){M(this.#S,e,!0)}#C=w(m($.detectedGpuName));get detectedGpuName(){return l(this.#C)}set detectedGpuName(e){M(this.#C,e,!0)}verifyGeneration={};oauthAbortControllers={};#w=w(m($.modelSelection));get modelSelection(){return l(this.#w)}set modelSelection(e){M(this.#w,e,!0)}#T=w(m($.voiceTts));get voiceTts(){return l(this.#T)}set voiceTts(e){M(this.#T,e,!0)}#E=w(m($.voiceStt));get voiceStt(){return l(this.#E)}set voiceStt(e){M(this.#E,e,!0)}#D=w(m($.voiceProfiles));get voiceProfiles(){return l(this.#D)}set voiceProfiles(e){M(this.#D,e,!0)}#O=w(m($.selectedVoiceProfile));get selectedVoiceProfile(){return l(this.#O)}set selectedVoiceProfile(e){M(this.#O,e,!0)}#k=w(m($.importedLlmModel));get importedLlmModel(){return l(this.#k)}set importedLlmModel(e){M(this.#k,e,!0)}#A=w(m($.importedSmallModel));get importedSmallModel(){return l(this.#A)}set importedSmallModel(e){M(this.#A,e,!0)}#j=w(m($.portalSelection));get portalSelection(){return l(this.#j)}set portalSelection(e){M(this.#j,e,!0)}#M=w(m($.ollamaEnabled));get ollamaEnabled(){return l(this.#M)}set ollamaEnabled(e){M(this.#M,e,!0)}#N=w(m($.ollamaProfiles));get ollamaProfiles(){return l(this.#N)}set ollamaProfiles(e){M(this.#N,e,!0)}#P=w(m($.selectedOllamaProfile));get selectedOllamaProfile(){return l(this.#P)}set selectedOllamaProfile(e){M(this.#P,e,!0)}#F=w(m($.imageTag));get imageTag(){return l(this.#F)}set imageTag(e){M(this.#F,e,!0)}#I=w(m($.hostAkmEnabled));get hostAkmEnabled(){return l(this.#I)}set hostAkmEnabled(e){M(this.#I,e,!0)}#L=w(m($.installError));get installError(){return l(this.#L)}set installError(e){M(this.#L,e,!0)}#R=w(m($.installing));get installing(){return l(this.#R)}set installing(e){M(this.#R,e,!0)}#z=w(m($.emptyAiAck));get emptyAiAck(){return l(this.#z)}set emptyAiAck(e){M(this.#z,e,!0)}#B=w(m($.deployData));get deployData(){return l(this.#B)}set deployData(e){M(this.#B,e,!0)}#V=w(m($.deployDone));get deployDone(){return l(this.#V)}set deployDone(e){M(this.#V,e,!0)}#H=w(m($.deployHasWarnings));get deployHasWarnings(){return l(this.#H)}set deployHasWarnings(e){M(this.#H,e,!0)}#U=w(m($.deployError));get deployError(){return l(this.#U)}set deployError(e){M(this.#U,e,!0)}#W=w(m($.deployPollErrors));get deployPollErrors(){return l(this.#W)}set deployPollErrors(e){M(this.#W,e,!0)}deployTimer=null;#G=w(m($.savedCloudLlm));get savedCloudLlm(){return l(this.#G)}set savedCloudLlm(e){M(this.#G,e,!0)}#K=w(m($.detectedCloudConn));get detectedCloudConn(){return l(this.#K)}set detectedCloudConn(e){M(this.#K,e,!0)}#q=w(m($.hostImportTriggered));get hostImportTriggered(){return l(this.#q)}set hostImportTriggered(e){M(this.#q,e,!0)}#J=w(m($.hostImporting));get hostImporting(){return l(this.#J)}set hostImporting(e){M(this.#J,e,!0)}#Y=w(m($.hostImportError));get hostImportError(){return l(this.#Y)}set hostImportError(e){M(this.#Y,e,!0)}#X=w(m($.isRerun));get isRerun(){return l(this.#X)}set isRerun(e){M(this.#X,e,!0)}constructor(){Object.assign(this,structuredClone($))}#Z=v(()=>this.providerState.ollama?.ollamaMode===`running`||this.detectedHostProviders.some(e=>e.provider===`ollama`||e.provider===`lmstudio`));get hostLocalLlmRunning(){return l(this.#Z)}set hostLocalLlmRunning(e){M(this.#Z,e)}#Q=v(()=>(this.opencodeAvailable?this.opencodeProviders.map(e=>e.id):q.map(e=>e.id)).filter(e=>this.providerState[e]?.verified).length);get verifiedCount(){return l(this.#Q)}set verifiedCount(e){M(this.#Q,e)}#$=v(()=>!!this.modelSelection.llm?.model);get hasUsableAI(){return l(this.#$)}set hasUsableAI(e){M(this.#$,e)}#ee=v(()=>me(this.opencodeAvailable,this.opencodeProviders,this.providerState));get verifiedProviders(){return l(this.#ee)}set verifiedProviders(e){M(this.#ee,e)}#te=v(()=>!!this.modelSelection.llm?.model||this.allowEmptyInstall);get canComplete(){return l(this.#te)}set canComplete(e){M(this.#te,e)}#ne=v(()=>q.some(e=>e.id===`openai`&&this.providerState[e.id]?.verified));get hasOpenAI(){return l(this.#ne)}set hasOpenAI(e){M(this.#ne,e)}#re=v(()=>this.hasOpenAI?{tts:`openai-tts`,stt:`openai-stt`}:{tts:`browser-tts`,stt:`browser-stt`});get voiceDefaults(){return l(this.#re)}set voiceDefaults(e){M(this.#re,e)}#ie=v(()=>this.voiceTts.engine===`openpalm-voice`||this.voiceStt.engine===`openpalm-voice`);get enableVoice(){return l(this.#ie)}set enableVoice(e){M(this.#ie,e)}#ae=v(()=>le(this.voiceTts,this.enableVoice,this.voiceDefaults.tts));get displayedVoiceTts(){return l(this.#ae)}set displayedVoiceTts(e){M(this.#ae,e)}#oe=v(()=>le(this.voiceStt,this.enableVoice,this.voiceDefaults.stt));get displayedVoiceStt(){return l(this.#oe)}set displayedVoiceStt(e){M(this.#oe,e)}#se=v(()=>le(this.voiceTts,this.enableVoice,``));get persistedVoiceTts(){return l(this.#se)}set persistedVoiceTts(e){M(this.#se,e)}#ce=v(()=>le(this.voiceStt,this.enableVoice,``));get persistedVoiceStt(){return l(this.#ce)}set persistedVoiceStt(e){M(this.#ce,e)}#le=v(()=>ve({modelSelection:this.modelSelection,verifiedProviders:this.verifiedProviders,providerState:this.providerState,ollamaEnabled:this.ollamaEnabled,hostLocalLlmRunning:this.hostLocalLlmRunning,persistedVoiceTts:this.persistedVoiceTts,persistedVoiceStt:this.persistedVoiceStt,selectedVoiceProfile:this.selectedVoiceProfile,selectedOllamaProfile:this.selectedOllamaProfile,portalSelection:this.portalSelection,uiLoginPassword:this.uiLoginPassword,imageTag:this.imageTag,hostAkmEnabled:this.hostAkmEnabled}));get payload(){return l(this.#le)}set payload(e){M(this.#le,e)}async loadVoiceProfiles(){try{let e=await xe();if(!e||!Array.isArray(e.profiles))return;this.voiceProfiles=e.profiles;let t=ae(e.profiles,`voice`,this.gpuDetected);if(t&&(this.selectedVoiceProfile=t),this.gpuDetected&&this.selectedVoiceProfile!==K(`voice`,`cuda`)){let e=this.voiceProfiles.find(e=>e.id===K(`voice`,`cuda`)&&e.available!==!1);e&&(this.selectedVoiceProfile=e.id)}}catch{}}async loadOllamaProfiles(){try{let e=await Se();if(!e||!Array.isArray(e.profiles))return;this.ollamaProfiles=e.profiles;let t=this.gpuDetected?e.profiles.find(e=>e.id===K(`ollama`,`cuda`)&&e.available!==!1)??e.profiles.find(e=>e.default&&e.available!==!1)??e.profiles.find(e=>e.available!==!1):e.profiles.find(e=>e.id===K(`ollama`,`cpu`)&&e.available!==!1)??e.profiles.find(e=>e.default&&e.available!==!1)??e.profiles.find(e=>e.available!==!1);e.selectedProfile&&typeof e.selectedProfile==`string`?this.selectedOllamaProfile=e.selectedProfile:t&&(this.selectedOllamaProfile=t.id)}catch{}}initProviderState(){let e={};for(let t of q)e[t.id]={selected:!1,verified:!1,verifying:!1,error:!1,apiKey:``,baseUrl:t.baseUrl??``,models:[],ollamaMode:null};this.providerState=e}enableRecommendedOllama(e){this.ollamaEnabled=!0;let t=this.providerState.ollama;t&&(t.selected=!0,t.verified=!0,t.ollamaMode=`instack`,t.baseUrl=`http://ollama:11434`,t.models.length===0&&(t.models=[G])),this.selectedOllamaProfile=ae(this.ollamaProfiles,`ollama`,this.gpuDetected,e)??K(`ollama`,e??(this.gpuDetected?`cuda`:`cpu`))}handleConnectModeChange(e){if(this.modelMode=e,e===`local`){this.modelSelection.llm&&!Y.has(this.modelSelection.llm.connId)&&(this.savedCloudLlm=this.modelSelection.llm),this.hostLocalLlmRunning||this.enableRecommendedOllama();let e=this.getModelOptionsForRole(`llm`).find(e=>Y.has(e.connId));this.modelSelection.llm=e?{connId:e.connId,model:e.id,dims:e.dims}:{connId:`ollama`,model:G,dims:0}}else e===`cloud`&&this.savedCloudLlm&&(this.modelSelection.llm=this.savedCloudLlm)}async fetchAndApplyRecommendation(){if(this.recommendationApplied)return;let e;if(this.recommendation)e=this.recommendation;else try{let t=await Ce();if(!t||!t.ok||!t.recommendation)return;e=t.recommendation,Array.isArray(t.hostProviders)&&(this.detectedHostProviders=t.hostProviders),t.gpu&&(this.detectedGpuVramMb=t.gpu.vramMb??0,this.detectedGpuVendor=t.gpu.vendor??``,this.detectedGpuName=t.gpu.name??``)}catch(e){console.warn(`fetchAndApplyRecommendation failed`,e);return}switch(this.recommendationApplied=!0,this.recommendation=e,e.action){case`use-cloud`:this.recommendationAlert=``;break;case`use-host-providers`:this.recommendationAlert=e.alert,this.hostImportTriggered||(this.hostImportTriggered=!0,await this.handleHostImport());break;case`enable-ollama`:this.recommendationAlert=e.alert,this.enableRecommendedOllama(e.profileVariant);break;case`connect-manually`:this.recommendationAlert=e.alert;break}}handleEnableVoiceChange(e){if(e){if(this.voiceTts.engine!==`openpalm-voice`&&(this.voiceTts={engine:`openpalm-voice`}),this.voiceStt.engine!==`openpalm-voice`&&(this.voiceStt={engine:`openpalm-voice`}),!this.selectedVoiceProfile){let e=ae(this.voiceProfiles,`voice`,this.gpuDetected);e&&(this.selectedVoiceProfile=e)}}else this.voiceTts.engine===`openpalm-voice`&&(this.voiceTts={engine:``}),this.voiceStt.engine===`openpalm-voice`&&(this.voiceStt={engine:``})}goToStep(e){e<0||e>3||e>0&&!this.systemCheckPassed||(this.currentStep=e,e>this.maxVisitedStep&&(this.maxVisitedStep=e),this.showDeploy=!1,e===1&&!this.isRerun&&(this.fetchAndApplyRecommendation(),this.applyImportedModelPreferences(),this.autoSelectModels()))}autoSelectModels(){let e=he(this.modelSelection,this.verifiedProviders,this.providerState);for(let t of[`llm`,`small`])!this.modelSelection[t]&&e[t]&&(this.modelSelection[t]=e[t])}getModelOptionsForRole(e){return Z(e,this.verifiedProviders,this.providerState)}applyImportedOpenCodeModelSelections(e){e&&(e.llm&&(this.importedLlmModel=e.llm),e.small&&(this.importedSmallModel=e.small),this.applyImportedModelPreferences())}applyImportedModelPreferences(){if(this.importedLlmModel){let e=ge(`llm`,this.importedLlmModel,this.verifiedProviders,this.providerState);e&&(this.modelSelection.llm=e)}if(this.importedSmallModel){let e=ge(`small`,this.importedSmallModel,this.verifiedProviders,this.providerState);e&&(this.modelSelection.small=e)}}async checkOpenCodeAndInit(){try{if((await we())?.ok){this.opencodeAvailable=!0,await this.loadOpenCodeProviders();return}}catch{}try{(await Te())?.available&&(this.opencodeAvailable=!0,await this.loadOpenCodeProviders())}catch{}}async loadOpenCodeProviders(){let e=await Ee();if(!e||!e.available||!Array.isArray(e.providers))return;let t=e.providers,n=e.auth??{},r=new Set(Array.isArray(e.connected)?e.connected:[]),i=new Set(t.map(e=>e.id));for(let e of ie)i.has(e.id)||t.push(e);this.opencodeProviders=t,this.opencodeAuth=n;let a={...this.providerState};for(let e of t){a[e.id]||(a[e.id]={selected:!1,verified:!1,verifying:!1,error:!1,apiKey:``,baseUrl:e.localUrl??``,models:[],ollamaMode:null});let t=Object.keys(e.models??{});t.length>0&&a[e.id].models.length===0&&(a[e.id].models=t),r.has(e.id)&&(a[e.id].verified=!0)}this.providerState=a,this.applyImportedOpenCodeModelSelections(e.selectedModels)}async detectProviders(){try{let e=await De();if(e){this.detectedProviders=e.providers??[];for(let e of this.detectedProviders){if(!e.available)continue;let t=this.providerState[e.provider];t&&(t.baseUrl=e.url,t.selected||(t.selected=!0,e.provider===`ollama`&&(t.ollamaMode=`running`)),this.verifyProvider(e.provider))}}}catch{this.detectedProviders=[]}}async verifyProvider(e){let t=q.find(t=>t.id===e);if(!t)return;let n=this.providerState[e];if(!n)return;if(e===`ollama`&&n.ollamaMode===`instack`){n.verified=!0,n.error=!1;return}let r=(this.verifyGeneration[e]??0)+1;this.verifyGeneration[e]=r,n.verifying=!0,n.error=!1;let i=(n.baseUrl||t.baseUrl).trim(),a=(n.apiKey??``).trim();try{let t=await Oe(e,{baseUrl:i,apiKey:a});if(this.verifyGeneration[e]!==r)return;n.verified=!0,n.error=!1,n.models=t.models??[]}catch(t){if(this.verifyGeneration[e]!==r)return;n.verified=!1,n.error=!0,n.errorMessage=t instanceof Error?t.message:``,n.models=[]}n.verifying=!1}async startOpenCodeOAuth(e,t){let n=this.providerState[e];if(n){n.verifying=!0,n.error=!1;try{let r=await ke(e,t);n.oauthPolling=!0,n.oauthUrl=r.url??``,n.oauthInstructions=r.instructions??``,r.url&&r.method===`auto`&&window.open(r.url,`_blank`),await this.pollOpenCodeOAuth(e,t)}catch(e){n.verifying=!1,n.error=!0,n.errorMessage=e instanceof Error?e.message:`OAuth failed`,n.oauthPolling=!1}}}async pollOpenCodeOAuth(e,t){let n=this.providerState[e],r=new AbortController;this.oauthAbortControllers[e]=r;let i=AbortSignal.timeout(10*6e4),a=AbortSignal.any?AbortSignal.any([r.signal,i]):r.signal;try{let{ok:r,data:i}=await Ae(e,t,a);r&&i?.ok?(n.verified=!0,n.error=!1):(n.error=!0,n.errorMessage=i?.message??`Authorization failed`)}catch(e){if(e instanceof Error&&e.name===`AbortError`&&r.signal.aborted)return;e instanceof Error&&e.name===`AbortError`?(n.error=!0,n.errorMessage=`Authorization timed out. Try again.`):(n.error=!0,n.errorMessage=e instanceof Error?e.message:`Authorization failed`)}finally{delete this.oauthAbortControllers[e],n.oauthPolling=!1,n.verifying=!1}}cancelOAuth(e){let t=this.oauthAbortControllers[e];t&&(t.abort(),delete this.oauthAbortControllers[e]);let n=this.providerState[e];n&&(n.oauthPolling=!1,n.verifying=!1)}async handleInstall(){if(!this.installing){if(this.installError=``,!this.payload.llm&&!this.isRerun&&!this.emptyAiAck){if(!window.confirm(`No AI is set up here. You can connect this app to an assistant running on another computer, or add a provider later from your dashboard.
1
+ import{B as e,F as t,I as n,K as r,L as i,M as a,N as o,P as s,R as c,U as l,V as u,X as d,Y as f,a as p,at as m,b as h,bt as g,c as _,dt as v,f as y,h as b,ht as x,it as S,k as C,lt as w,m as T,mt as E,nt as D,o as O,p as k,r as A,rt as j,st as M,tt as N,w as P,xt as F,y as I,z as L}from"../chunks/BzIvC31O.js";import{l as R}from"../chunks/CItB5oU8.js";import"../chunks/xihTtKlq.js";import"../chunks/DfZbBavE.js";import{t as z}from"../chunks/BDK50g8a.js";import{t as B}from"../chunks/NR-JVJz-.js";import{t as V}from"../chunks/SXdvPq3_.js";import{t as H}from"../chunks/D5FtEngX.js";import{n as ee,t as U}from"../chunks/CUa5ff3d.js";var W=Object.fromEntries(Object.entries({"openai/text-embedding-3-small":1536,"openai/text-embedding-3-large":3072,"openai/text-embedding-ada-002":1536,"ollama/nomic-embed-text":768,"ollama/mxbai-embed-large":1024,"ollama/mxbai-embed-large-v1":1024,"ollama/all-minilm":384,"ollama/snowflake-arctic-embed":1024,"model-runner/ai/mxbai-embed-large-v1":1024,"mistral/mistral-embed":1024,"google/text-embedding-004":768,"huggingface/sentence-transformers/all-MiniLM-L6-v2":384,"huggingface/intfloat/multilingual-e5-large":1024}).map(([e,t])=>[e.slice(e.indexOf(`/`)+1),t])),G={chat:`llama3.2:latest`,embedding:`nomic-embed-text`}.chat;function K(e,t){return`addon.${e}.${t}`}var q=[{id:`ollama`,name:`Ollama`,kind:`local`,group:`recommended`,order:1,icon:`🦙`,desc:`Run open models on your hardware`,needsKey:!1,placeholder:``,baseUrl:`http://localhost:11434`,llmModel:`llama3.2`,embModel:`nomic-embed-text`,embDims:768,canDetect:!0},{id:`huggingface`,name:`Hugging Face`,kind:`cloud`,group:`recommended`,order:2,icon:`🤗`,desc:`10,000+ open models via Inference Providers`,needsKey:!0,placeholder:`hf_...`,baseUrl:`https://router.huggingface.co/v1`,llmModel:`Qwen/Qwen3-32B`,embModel:`intfloat/multilingual-e5-large`,embDims:1024,keyPrefix:`hf_`},{id:`openai`,name:`OpenAI`,kind:`cloud`,group:`recommended`,order:3,icon:`◐`,desc:`GPT and o-series reasoning models`,needsKey:!0,placeholder:`sk-...`,baseUrl:`https://api.openai.com`,llmModel:`gpt-4o`,embModel:`text-embedding-3-small`,embDims:1536},{id:`google`,name:`Google`,kind:`cloud`,group:`recommended`,order:4,icon:`◆`,desc:`Gemini models with large context`,needsKey:!0,placeholder:`AIza...`,baseUrl:`https://generativelanguage.googleapis.com`,llmModel:`gemini-2.5-flash`,embModel:``,embDims:0,keyPrefix:`AI`},{id:`model-runner`,name:`Docker Model Runner`,kind:`local`,group:`local`,order:1,icon:`🐳`,desc:`Docker-managed model runtime`,needsKey:!1,placeholder:``,baseUrl:`http://localhost:12434`,llmModel:`ai/llama3.2`,embModel:`ai/mxbai-embed-large-v1`,embDims:1024,canDetect:!0},{id:`lmstudio`,name:`LM Studio`,kind:`local`,group:`local`,order:2,icon:`🔬`,desc:`Desktop app for local inference`,needsKey:!1,placeholder:``,baseUrl:`http://localhost:1234`,llmModel:`loaded-model`,embModel:``,embDims:0,canDetect:!0},{id:`groq`,name:`Groq`,kind:`cloud`,group:`cloud`,order:1,icon:`⚡`,desc:`Ultra-fast inference`,needsKey:!0,placeholder:`gsk_...`,baseUrl:`https://api.groq.com/openai`,llmModel:`llama-3.3-70b-versatile`,embModel:``,embDims:0},{id:`mistral`,name:`Mistral`,kind:`cloud`,group:`cloud`,order:2,icon:`◆`,desc:`Mistral & Codestral models`,needsKey:!0,placeholder:`...`,baseUrl:`https://api.mistral.ai`,llmModel:`mistral-large-latest`,embModel:`mistral-embed`,embDims:1024},{id:`together`,name:`Together AI`,kind:`cloud`,group:`cloud`,order:3,icon:`✦`,desc:`Open models at scale`,needsKey:!0,placeholder:`...`,baseUrl:`https://api.together.xyz`,llmModel:`meta-llama/Llama-3.3-70B-Instruct-Turbo`,embModel:``,embDims:0},{id:`deepseek`,name:`DeepSeek`,kind:`cloud`,group:`advanced`,order:1,icon:`◎`,desc:`DeepSeek chat & reasoning`,needsKey:!0,placeholder:`sk-...`,baseUrl:`https://api.deepseek.com`,llmModel:`deepseek-chat`,embModel:``,embDims:0},{id:`xai`,name:`xAI (Grok)`,kind:`cloud`,group:`advanced`,order:2,icon:`✦`,desc:`Grok models`,needsKey:!0,placeholder:`xai-...`,baseUrl:`https://api.x.ai`,llmModel:`grok-2`,embModel:``,embDims:0},{id:`openai-compatible`,name:`Custom API server`,kind:`cloud`,group:`advanced`,order:3,icon:`~`,desc:`Connect any AI server that uses the standard OpenAI API format.`,needsKey:!1,needsUrl:!0,optionalKey:!0,placeholder:`API key (optional)`,baseUrl:``,llmModel:``,embModel:``,embDims:0}],J=[`llamacpp`,`localai`],Y=new Set([...q.filter(e=>e.kind===`local`).map(e=>e.id),...J]),te={openai:`ChatGPT (OpenAI)`,google:`Gemini (Google)`,"github-copilot":`GitHub Copilot`,groq:`Groq`,anthropic:`Claude (Anthropic)`,mistral:`Mistral`,cohere:`Cohere`};function ne(e,t={}){return e?te[e]||(t.localLabel&&Y.has(e)?t.localLabel:t.extraProviders?.find(t=>t.id===e)?.name||(q.find(t=>t.id===e)?.name??e)):``}var X=new Set([`anthropic`]),re=[{id:`api`,name:`API`,icon:`🔌`,desc:`OpenAI-compatible REST API endpoint`,locked:!0},{id:`discord`,name:`Discord`,icon:`🎮`,desc:`Connect to a Discord server`,credentials:[{key:`botToken`,label:`Bot Token`,placeholder:`Paste Discord bot token`,required:!0},{key:`applicationId`,label:`Application ID`,placeholder:`Discord application ID`,secret:!1}]},{id:`slack`,name:`Slack`,icon:`💼`,desc:`Access via Slack bot`,credentials:[{key:`slackBotToken`,label:`Bot Token`,placeholder:`xoxb-...`,required:!0},{key:`slackAppToken`,label:`App Token`,placeholder:`xapp-...`,required:!0}]}],ie=[{id:`ollama`,name:`Ollama`,env:[],models:{},localUrl:`http://localhost:11434`},{id:`model-runner`,name:`Docker Model Runner`,env:[],models:{},localUrl:`http://localhost:12434`},{id:`lmstudio`,name:`LM Studio`,env:[],models:{},localUrl:`http://localhost:1234`},{id:`openai-compatible`,name:`Custom API server`,env:[],models:{},localUrl:``}];function ae(e,t,n,r){let i=e=>e.available!==!1,a=K(t,r??(n?`cuda`:`cpu`)),o=K(t,`cpu`);return(e.find(e=>e.id===a&&i(e))??e.find(e=>e.default&&i(e))??e.find(e=>e.id===o&&i(e))??e.find(e=>i(e)))?.id}function oe(e){return e.replace(/:.*$/,``)}function se(e){let t=oe(e);return W[e]!==void 0||W[t]!==void 0?!0:/(?:^|[-/_.])(embed|embedding|bge|gte|e5|nomic|mxbai|arctic-embed|minilm)/i.test(e)}function ce(e,t){let n=t.toLowerCase(),r=0;/instruct|chat|-it\b|\bit\b/.test(n)&&(r+=30),/coder|code/.test(n)&&(r+=8);let i=n.match(/(\d+(?:\.\d+)?)\s*x?\s*b\b/),a=i?parseFloat(i[1]):0;return e===`llm`?r+=Math.min(40,a):r+=Math.max(0,20-Math.min(20,a)),r}function Z(e,t,n){let r=[];for(let i of t){let t=n[i.id];if(!t)continue;let a=e===`embedding`?i.embModel:i.llmModel,o=t.models.length>0?t.models:[],s=a?o.find(e=>e===a||oe(e)===oe(a)):void 0;for(let n of o){if(e!==`embedding`&&se(n))continue;let a=e===`embedding`?W[n]??W[oe(n)]??(n===s?i.embDims:0)??0:0;r.push({id:n,connId:i.id,providerName:i.name,baseUrl:t.baseUrl||i.baseUrl,isDefault:n===s,dims:a})}}return e===`embedding`?r.filter(e=>e.isDefault||e.dims>0):r.sort((t,n)=>!!Y.has(t.connId)-+!!Y.has(n.connId)||!!n.isDefault-+!!t.isDefault||ce(e,n.id)-ce(e,t.id))}function le(e,t,n){return e.engine?e:t?{engine:`openpalm-voice`}:{engine:n}}function ue(e,t,n){if(n)return!0;let r=e[t];return typeof r==`object`&&r?r.enabled:!!r}function de(e,t,n){let r=e[t];return typeof r==`object`&&r?String(r[n]??``):``}function fe(){let e=new Uint8Array(16);return crypto.getRandomValues(e),Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(``)}function pe(e){let t={};for(let n of re){let r=e[n.id];if(n.locked)t[n.id]=!0;else if(typeof r==`object`&&r){if(r.enabled){let e={enabled:!0};if(n.credentials)for(let t of n.credentials){let n=r[t.key];n&&(e[t.key]=n)}t[n.id]=e}}else r&&(t[n.id]=!0)}return t}function me(e,t,n){if(e){let e=t.filter(e=>n[e.id]?.verified).map(e=>{let t=n[e.id],r=q.find(t=>t.id===e.id);return{id:e.id,name:e.name??e.id,kind:`cloud`,group:``,order:0,icon:``,desc:``,baseUrl:t?.baseUrl??``,llmModel:r?.llmModel??``,embModel:r?.embModel??``,embDims:r?.embDims??0}}),r=new Set(e.map(e=>e.id)),i=q.filter(e=>!r.has(e.id)&&n[e.id]?.verified).map(e=>{let t=n[e.id];return{id:e.id,name:e.name,kind:e.kind,group:e.group,order:e.order,icon:e.icon,desc:e.desc,baseUrl:t?.baseUrl??e.baseUrl,llmModel:e.llmModel,embModel:e.embModel,embDims:e.embDims}});return[...e,...i]}return q.filter(e=>n[e.id]?.verified)}function he(e,t,n){let r={...e};for(let e of[`llm`,`embedding`,`small`]){if(r[e]||e===`embedding`)continue;let i=Z(e,t,n);if(i.length===0)continue;let a=i[0];r[e]={connId:a.connId,model:a.id,dims:a.dims}}return r}function ge(e,t,n,r){if(!t)return;let i=t.indexOf(`/`),a=i>0?t.slice(0,i):``,o=i>0?t.slice(i+1):t,s=Z(e,n,r),c=s.find(e=>e.id===t);if(c)return{connId:c.connId,model:c.id,dims:c.dims};let l=a?s.find(e=>e.connId===a&&e.id===o):void 0;if(l)return{connId:l.connId,model:l.id,dims:l.dims};let u=s.find(e=>e.id===o);if(u)return{connId:u.connId,model:u.id,dims:u.dims};if(a&&n.some(e=>e.id===a))return{connId:a,model:o,dims:0}}function _e(e){if(!e.engine||e.engine.startsWith(`skip-`))return;let t={enabled:!0,engine:e.engine};return e.provider&&(t.provider=e.provider),e.baseURL&&(t.baseURL=e.baseURL),e.model&&(t.model=e.model),e.voice&&(t.voice=e.voice),e.language&&(t.language=e.language),e.apiKey&&(t.apiKey=e.apiKey),t}function ve(e){let{modelSelection:t,verifiedProviders:n,providerState:r,ollamaEnabled:i,hostLocalLlmRunning:a,persistedVoiceTts:o,persistedVoiceStt:s,selectedVoiceProfile:c,selectedOllamaProfile:l,portalSelection:u,uiLoginPassword:d,imageTag:f,hostAkmEnabled:p}=e,m=t.llm,h=t.embedding,g=t.small,_={};m&&(_[m.connId]=!0),h&&(_[h.connId]=!0),g?.model&&(_[g.connId]=!0);let v=n.filter(e=>_[e.id]).map(e=>{let t=r[e.id];return{id:e.id,name:e.name,provider:e.id,baseUrl:t?.baseUrl??e.baseUrl,apiKey:t?.apiKey??``}}),y=m?.connId??``,b=h?.connId??``,x=v.find(e=>e.id===y),S=v.find(e=>e.id===b),C=x?.provider??``,w=S?.provider??``,T={};i&&!a&&(T.ollama=!0),(o.engine===`openpalm-voice`||s.engine===`openpalm-voice`)&&(T.voice=!0);let E={},D=pe(u);for(let e of Object.keys(D)){let t=D[e];if(t===!0)T[e]=!0;else if(typeof t==`object`&&t){T[e]=!0;let n={};for(let e of Object.keys(t))e!==`enabled`&&t[e]&&(n[e]=String(t[e]));Object.keys(n).length>0&&(E[e]=n)}}let O={version:2,addons:T,security:{uiLoginPassword:d},connections:v};C&&m?.model&&(O.llm={provider:C,model:m.model,baseUrl:x?.baseUrl??``}),w&&h?.model&&(O.embedding={provider:w,model:h.model,dims:h.dims??1536,baseUrl:S?.baseUrl??``});let k=_e(o);k&&(O.tts=k);let A=_e(s);return A&&(O.stt=A),(o.engine===`openpalm-voice`||s.engine===`openpalm-voice`)&&c&&(O.voiceProfile=c),i&&l&&(O.ollamaProfile=l),Object.keys(E).length>0&&(O.portalCredentials=E),f.trim()&&(O.imageTag=f.trim()),p&&(O.hostAkm=!0),O}function ye(e){let t={enabledAddons:[],portalCredentials:{}};if(typeof e.hostAkm==`boolean`&&(t.hostAkmEnabled=e.hostAkm),e.llm?.provider&&e.llm?.model&&(t.llm={connId:e.llm.provider,model:e.llm.model}),e.embedding?.provider&&e.embedding?.model&&(t.embedding={connId:e.embedding.provider,model:e.embedding.model,dims:e.embedding.dims}),e.voice?.tts){let n=e.voice.tts;t.voiceTts=n.engine?{...n,engine:n.engine}:{engine:``}}if(e.voice?.stt){let n=e.voice.stt;t.voiceStt=n.engine?{...n,engine:n.engine}:{engine:``}}e.voice?.selectedProfile&&typeof e.voice.selectedProfile==`string`&&(t.selectedVoiceProfile=e.voice.selectedProfile);let n=e.importedModelPreferences;n?.model&&(t.importedLlmModel=n.model),n?.small_model&&(t.importedSmallModel=n.small_model);let r=Array.isArray(e.enabledAddons)?e.enabledAddons:[];return t.enabledAddons=r,r.includes(`ollama`)&&(t.ollamaEnabled=!0),e.ollama?.selectedProfile&&typeof e.ollama.selectedProfile==`string`&&(t.selectedOllamaProfile=e.ollama.selectedProfile),t.portalCredentials=e.portalCredentials??{},t}var be=`/api/setup`;async function Q(e,t,n,r){let i={method:e};return n!==void 0&&(i.headers={"Content-Type":`application/json`},i.body=JSON.stringify(n)),r&&(i.signal=r),fetch(`${be}${t}`,i)}async function xe(){let e=await Q(`GET`,`/voice-profiles`);return e.ok?await e.json():null}async function Se(){let e=await Q(`GET`,`/ollama-profiles`);return e.ok?await e.json():null}async function Ce(){let e=await Q(`GET`,`/recommend`);return e.ok?await e.json():null}async function we(){let e=await Q(`POST`,`/opencode/ensure`);return e.ok?await e.json():null}async function Te(){let e=await Q(`GET`,`/opencode/status`);return e.ok?await e.json():null}async function Ee(){let e=await Q(`GET`,`/opencode/providers`);return e.ok?await e.json():null}async function De(){let e=await Q(`GET`,`/detect-providers`);return e.ok?await e.json():null}async function Oe(e,t){let n=await Q(`POST`,`/models/${encodeURIComponent(e)}`,{apiKey:t.apiKey??``,baseUrl:t.baseUrl??``}),r=await n.json();if(!n.ok||r.status===`recoverable_error`)throw Error(r.error??`Failed to fetch models (HTTP ${n.status})`);return r}async function ke(e,t){let n=await Q(`POST`,`/opencode/provider/${encodeURIComponent(e)}/oauth/authorize`,{method:t}),r=await n.json();if(!n.ok)throw Error(r.message??`OAuth failed`);return r}async function Ae(e,t,n){let r=await Q(`POST`,`/opencode/provider/${encodeURIComponent(e)}/oauth/callback`,{method:t},n),i=await r.json().catch(()=>null);return{ok:r.ok,data:i}}async function je(e){let t=await Q(`POST`,`/complete`,e),n=await t.json().catch(()=>({}));return{ok:t.ok,data:n}}async function Me(){let e=await Q(`GET`,`/deploy-status`);return e.ok?{ok:!0,data:await e.json()}:{ok:!1,data:null}}async function Ne(){let e=await Q(`POST`,`/retry-deploy`),t=await e.json().catch(()=>({}));return{ok:e.ok,data:t}}async function Pe(){let e=await Q(`GET`,`/host-status`);return e.ok?await e.json():null}async function Fe(){let e=await Q(`POST`,`/import-host`),t=await e.json().catch(()=>null);return{ok:e.ok,data:t}}async function Ie(){let e=await Q(`GET`,`/current-config`);return e.ok?await e.json():null}async function Le(){return await(await Q(`GET`,`/status`)).json()}var $={currentStep:0,maxVisitedStep:0,showDeploy:!1,systemCheckPassed:!1,modelMode:`cloud`,voiceEnabled:!1,uiLoginPassword:``,step0Error:``,autoModeImporting:!1,gpuDetected:!1,providerState:{},detectedHostProviders:[],detectedProviders:[],opencodeAvailable:!1,opencodeProviders:[],opencodeAuth:{},hostProviderCount:0,allowEmptyInstall:!1,recommendation:null,recommendationAlert:``,recommendationApplied:!1,detectedGpuVramMb:0,detectedGpuVendor:``,detectedGpuName:``,modelSelection:{},voiceTts:{engine:``},voiceStt:{engine:``},voiceProfiles:[],selectedVoiceProfile:``,importedLlmModel:void 0,importedSmallModel:void 0,portalSelection:{discord:{enabled:!1,botToken:``,applicationId:``},slack:{enabled:!1,slackBotToken:``,slackAppToken:``}},ollamaEnabled:!1,ollamaProfiles:[],selectedOllamaProfile:``,imageTag:``,hostAkmEnabled:!1,installError:``,installing:!1,emptyAiAck:!1,deployData:{},deployDone:!1,deployHasWarnings:!1,deployError:null,deployPollErrors:0,savedCloudLlm:void 0,detectedCloudConn:``,hostImportTriggered:!1,hostImporting:!1,hostImportError:``,isRerun:!1},Re=new class{#e=w(m($.currentStep));get currentStep(){return l(this.#e)}set currentStep(e){M(this.#e,e,!0)}#t=w(m($.maxVisitedStep));get maxVisitedStep(){return l(this.#t)}set maxVisitedStep(e){M(this.#t,e,!0)}#n=w(m($.showDeploy));get showDeploy(){return l(this.#n)}set showDeploy(e){M(this.#n,e,!0)}#r=w(m($.systemCheckPassed));get systemCheckPassed(){return l(this.#r)}set systemCheckPassed(e){M(this.#r,e,!0)}#i=w(m($.modelMode));get modelMode(){return l(this.#i)}set modelMode(e){M(this.#i,e,!0)}#a=w(m($.voiceEnabled));get voiceEnabled(){return l(this.#a)}set voiceEnabled(e){M(this.#a,e,!0)}#o=w(m($.uiLoginPassword));get uiLoginPassword(){return l(this.#o)}set uiLoginPassword(e){M(this.#o,e,!0)}#s=w(m($.step0Error));get step0Error(){return l(this.#s)}set step0Error(e){M(this.#s,e,!0)}#c=w(m($.autoModeImporting));get autoModeImporting(){return l(this.#c)}set autoModeImporting(e){M(this.#c,e,!0)}#l=w(m($.gpuDetected));get gpuDetected(){return l(this.#l)}set gpuDetected(e){M(this.#l,e,!0)}#u=w(m($.providerState));get providerState(){return l(this.#u)}set providerState(e){M(this.#u,e,!0)}#d=w(m($.detectedHostProviders));get detectedHostProviders(){return l(this.#d)}set detectedHostProviders(e){M(this.#d,e,!0)}#f=w(m($.detectedProviders));get detectedProviders(){return l(this.#f)}set detectedProviders(e){M(this.#f,e,!0)}#p=w(m($.opencodeAvailable));get opencodeAvailable(){return l(this.#p)}set opencodeAvailable(e){M(this.#p,e,!0)}#m=w(m($.opencodeProviders));get opencodeProviders(){return l(this.#m)}set opencodeProviders(e){M(this.#m,e,!0)}#h=w(m($.opencodeAuth));get opencodeAuth(){return l(this.#h)}set opencodeAuth(e){M(this.#h,e,!0)}#g=w(m($.hostProviderCount));get hostProviderCount(){return l(this.#g)}set hostProviderCount(e){M(this.#g,e,!0)}#_=w(m($.allowEmptyInstall));get allowEmptyInstall(){return l(this.#_)}set allowEmptyInstall(e){M(this.#_,e,!0)}#v=w(m($.recommendation));get recommendation(){return l(this.#v)}set recommendation(e){M(this.#v,e,!0)}#y=w(m($.recommendationAlert));get recommendationAlert(){return l(this.#y)}set recommendationAlert(e){M(this.#y,e,!0)}#b=w(m($.recommendationApplied));get recommendationApplied(){return l(this.#b)}set recommendationApplied(e){M(this.#b,e,!0)}#x=w(m($.detectedGpuVramMb));get detectedGpuVramMb(){return l(this.#x)}set detectedGpuVramMb(e){M(this.#x,e,!0)}#S=w(m($.detectedGpuVendor));get detectedGpuVendor(){return l(this.#S)}set detectedGpuVendor(e){M(this.#S,e,!0)}#C=w(m($.detectedGpuName));get detectedGpuName(){return l(this.#C)}set detectedGpuName(e){M(this.#C,e,!0)}verifyGeneration={};oauthAbortControllers={};#w=w(m($.modelSelection));get modelSelection(){return l(this.#w)}set modelSelection(e){M(this.#w,e,!0)}#T=w(m($.voiceTts));get voiceTts(){return l(this.#T)}set voiceTts(e){M(this.#T,e,!0)}#E=w(m($.voiceStt));get voiceStt(){return l(this.#E)}set voiceStt(e){M(this.#E,e,!0)}#D=w(m($.voiceProfiles));get voiceProfiles(){return l(this.#D)}set voiceProfiles(e){M(this.#D,e,!0)}#O=w(m($.selectedVoiceProfile));get selectedVoiceProfile(){return l(this.#O)}set selectedVoiceProfile(e){M(this.#O,e,!0)}#k=w(m($.importedLlmModel));get importedLlmModel(){return l(this.#k)}set importedLlmModel(e){M(this.#k,e,!0)}#A=w(m($.importedSmallModel));get importedSmallModel(){return l(this.#A)}set importedSmallModel(e){M(this.#A,e,!0)}#j=w(m($.portalSelection));get portalSelection(){return l(this.#j)}set portalSelection(e){M(this.#j,e,!0)}#M=w(m($.ollamaEnabled));get ollamaEnabled(){return l(this.#M)}set ollamaEnabled(e){M(this.#M,e,!0)}#N=w(m($.ollamaProfiles));get ollamaProfiles(){return l(this.#N)}set ollamaProfiles(e){M(this.#N,e,!0)}#P=w(m($.selectedOllamaProfile));get selectedOllamaProfile(){return l(this.#P)}set selectedOllamaProfile(e){M(this.#P,e,!0)}#F=w(m($.imageTag));get imageTag(){return l(this.#F)}set imageTag(e){M(this.#F,e,!0)}#I=w(m($.hostAkmEnabled));get hostAkmEnabled(){return l(this.#I)}set hostAkmEnabled(e){M(this.#I,e,!0)}#L=w(m($.installError));get installError(){return l(this.#L)}set installError(e){M(this.#L,e,!0)}#R=w(m($.installing));get installing(){return l(this.#R)}set installing(e){M(this.#R,e,!0)}#z=w(m($.emptyAiAck));get emptyAiAck(){return l(this.#z)}set emptyAiAck(e){M(this.#z,e,!0)}#B=w(m($.deployData));get deployData(){return l(this.#B)}set deployData(e){M(this.#B,e,!0)}#V=w(m($.deployDone));get deployDone(){return l(this.#V)}set deployDone(e){M(this.#V,e,!0)}#H=w(m($.deployHasWarnings));get deployHasWarnings(){return l(this.#H)}set deployHasWarnings(e){M(this.#H,e,!0)}#U=w(m($.deployError));get deployError(){return l(this.#U)}set deployError(e){M(this.#U,e,!0)}#W=w(m($.deployPollErrors));get deployPollErrors(){return l(this.#W)}set deployPollErrors(e){M(this.#W,e,!0)}deployTimer=null;#G=w(m($.savedCloudLlm));get savedCloudLlm(){return l(this.#G)}set savedCloudLlm(e){M(this.#G,e,!0)}#K=w(m($.detectedCloudConn));get detectedCloudConn(){return l(this.#K)}set detectedCloudConn(e){M(this.#K,e,!0)}#q=w(m($.hostImportTriggered));get hostImportTriggered(){return l(this.#q)}set hostImportTriggered(e){M(this.#q,e,!0)}#J=w(m($.hostImporting));get hostImporting(){return l(this.#J)}set hostImporting(e){M(this.#J,e,!0)}#Y=w(m($.hostImportError));get hostImportError(){return l(this.#Y)}set hostImportError(e){M(this.#Y,e,!0)}#X=w(m($.isRerun));get isRerun(){return l(this.#X)}set isRerun(e){M(this.#X,e,!0)}constructor(){Object.assign(this,structuredClone($))}#Z=v(()=>this.providerState.ollama?.ollamaMode===`running`||this.detectedHostProviders.some(e=>e.provider===`ollama`||e.provider===`lmstudio`));get hostLocalLlmRunning(){return l(this.#Z)}set hostLocalLlmRunning(e){M(this.#Z,e)}#Q=v(()=>(this.opencodeAvailable?this.opencodeProviders.map(e=>e.id):q.map(e=>e.id)).filter(e=>this.providerState[e]?.verified).length);get verifiedCount(){return l(this.#Q)}set verifiedCount(e){M(this.#Q,e)}#$=v(()=>!!this.modelSelection.llm?.model);get hasUsableAI(){return l(this.#$)}set hasUsableAI(e){M(this.#$,e)}#ee=v(()=>me(this.opencodeAvailable,this.opencodeProviders,this.providerState));get verifiedProviders(){return l(this.#ee)}set verifiedProviders(e){M(this.#ee,e)}#te=v(()=>!!this.modelSelection.llm?.model||this.allowEmptyInstall);get canComplete(){return l(this.#te)}set canComplete(e){M(this.#te,e)}#ne=v(()=>q.some(e=>e.id===`openai`&&this.providerState[e.id]?.verified));get hasOpenAI(){return l(this.#ne)}set hasOpenAI(e){M(this.#ne,e)}#re=v(()=>this.hasOpenAI?{tts:`openai-tts`,stt:`openai-stt`}:{tts:`browser-tts`,stt:`browser-stt`});get voiceDefaults(){return l(this.#re)}set voiceDefaults(e){M(this.#re,e)}#ie=v(()=>this.voiceTts.engine===`openpalm-voice`||this.voiceStt.engine===`openpalm-voice`);get enableVoice(){return l(this.#ie)}set enableVoice(e){M(this.#ie,e)}#ae=v(()=>le(this.voiceTts,this.enableVoice,this.voiceDefaults.tts));get displayedVoiceTts(){return l(this.#ae)}set displayedVoiceTts(e){M(this.#ae,e)}#oe=v(()=>le(this.voiceStt,this.enableVoice,this.voiceDefaults.stt));get displayedVoiceStt(){return l(this.#oe)}set displayedVoiceStt(e){M(this.#oe,e)}#se=v(()=>le(this.voiceTts,this.enableVoice,``));get persistedVoiceTts(){return l(this.#se)}set persistedVoiceTts(e){M(this.#se,e)}#ce=v(()=>le(this.voiceStt,this.enableVoice,``));get persistedVoiceStt(){return l(this.#ce)}set persistedVoiceStt(e){M(this.#ce,e)}#le=v(()=>ve({modelSelection:this.modelSelection,verifiedProviders:this.verifiedProviders,providerState:this.providerState,ollamaEnabled:this.ollamaEnabled,hostLocalLlmRunning:this.hostLocalLlmRunning,persistedVoiceTts:this.persistedVoiceTts,persistedVoiceStt:this.persistedVoiceStt,selectedVoiceProfile:this.selectedVoiceProfile,selectedOllamaProfile:this.selectedOllamaProfile,portalSelection:this.portalSelection,uiLoginPassword:this.uiLoginPassword,imageTag:this.imageTag,hostAkmEnabled:this.hostAkmEnabled}));get payload(){return l(this.#le)}set payload(e){M(this.#le,e)}async loadVoiceProfiles(){try{let e=await xe();if(!e||!Array.isArray(e.profiles))return;this.voiceProfiles=e.profiles;let t=ae(e.profiles,`voice`,this.gpuDetected);if(t&&(this.selectedVoiceProfile=t),this.gpuDetected&&this.selectedVoiceProfile!==K(`voice`,`cuda`)){let e=this.voiceProfiles.find(e=>e.id===K(`voice`,`cuda`)&&e.available!==!1);e&&(this.selectedVoiceProfile=e.id)}}catch{}}async loadOllamaProfiles(){try{let e=await Se();if(!e||!Array.isArray(e.profiles))return;this.ollamaProfiles=e.profiles;let t=this.gpuDetected?e.profiles.find(e=>e.id===K(`ollama`,`cuda`)&&e.available!==!1)??e.profiles.find(e=>e.default&&e.available!==!1)??e.profiles.find(e=>e.available!==!1):e.profiles.find(e=>e.id===K(`ollama`,`cpu`)&&e.available!==!1)??e.profiles.find(e=>e.default&&e.available!==!1)??e.profiles.find(e=>e.available!==!1);e.selectedProfile&&typeof e.selectedProfile==`string`?this.selectedOllamaProfile=e.selectedProfile:t&&(this.selectedOllamaProfile=t.id)}catch{}}initProviderState(){let e={};for(let t of q)e[t.id]={selected:!1,verified:!1,verifying:!1,error:!1,apiKey:``,baseUrl:t.baseUrl??``,models:[],ollamaMode:null};this.providerState=e}enableRecommendedOllama(e){this.ollamaEnabled=!0;let t=this.providerState.ollama;t&&(t.selected=!0,t.verified=!0,t.ollamaMode=`instack`,t.baseUrl=`http://ollama:11434`,t.models.length===0&&(t.models=[G])),this.selectedOllamaProfile=ae(this.ollamaProfiles,`ollama`,this.gpuDetected,e)??K(`ollama`,e??(this.gpuDetected?`cuda`:`cpu`))}handleConnectModeChange(e){if(this.modelMode=e,e===`local`){this.modelSelection.llm&&!Y.has(this.modelSelection.llm.connId)&&(this.savedCloudLlm=this.modelSelection.llm),this.hostLocalLlmRunning||this.enableRecommendedOllama();let e=this.getModelOptionsForRole(`llm`).find(e=>Y.has(e.connId));this.modelSelection.llm=e?{connId:e.connId,model:e.id,dims:e.dims}:{connId:`ollama`,model:G,dims:0}}else e===`cloud`&&this.savedCloudLlm&&(this.modelSelection.llm=this.savedCloudLlm)}async fetchAndApplyRecommendation(){if(this.recommendationApplied)return;let e;if(this.recommendation)e=this.recommendation;else try{let t=await Ce();if(!t||!t.ok||!t.recommendation)return;e=t.recommendation,Array.isArray(t.hostProviders)&&(this.detectedHostProviders=t.hostProviders),t.gpu&&(this.detectedGpuVramMb=t.gpu.vramMb??0,this.detectedGpuVendor=t.gpu.vendor??``,this.detectedGpuName=t.gpu.name??``)}catch(e){console.warn(`fetchAndApplyRecommendation failed`,e);return}switch(this.recommendationApplied=!0,this.recommendation=e,e.action){case`use-cloud`:this.recommendationAlert=``;break;case`use-host-providers`:this.recommendationAlert=e.alert,this.hostImportTriggered||(this.hostImportTriggered=!0,await this.handleHostImport());break;case`enable-ollama`:this.recommendationAlert=e.alert,this.enableRecommendedOllama(e.profileVariant);break;case`connect-manually`:this.recommendationAlert=e.alert;break}}handleEnableVoiceChange(e){if(e){if(this.voiceTts.engine!==`openpalm-voice`&&(this.voiceTts={engine:`openpalm-voice`}),this.voiceStt.engine!==`openpalm-voice`&&(this.voiceStt={engine:`openpalm-voice`}),!this.selectedVoiceProfile){let e=ae(this.voiceProfiles,`voice`,this.gpuDetected);e&&(this.selectedVoiceProfile=e)}}else this.voiceTts.engine===`openpalm-voice`&&(this.voiceTts={engine:``}),this.voiceStt.engine===`openpalm-voice`&&(this.voiceStt={engine:``})}goToStep(e){e<0||e>3||e>0&&!this.systemCheckPassed||(this.currentStep=e,e>this.maxVisitedStep&&(this.maxVisitedStep=e),this.showDeploy=!1,e===1&&!this.isRerun&&(this.fetchAndApplyRecommendation(),this.applyImportedModelPreferences(),this.autoSelectModels()))}autoSelectModels(){let e=he(this.modelSelection,this.verifiedProviders,this.providerState);for(let t of[`llm`,`small`])!this.modelSelection[t]&&e[t]&&(this.modelSelection[t]=e[t])}getModelOptionsForRole(e){return Z(e,this.verifiedProviders,this.providerState)}applyImportedOpenCodeModelSelections(e){e&&(e.llm&&(this.importedLlmModel=e.llm),e.small&&(this.importedSmallModel=e.small),this.applyImportedModelPreferences())}applyImportedModelPreferences(){if(this.importedLlmModel){let e=ge(`llm`,this.importedLlmModel,this.verifiedProviders,this.providerState);e&&(this.modelSelection.llm=e)}if(this.importedSmallModel){let e=ge(`small`,this.importedSmallModel,this.verifiedProviders,this.providerState);e&&(this.modelSelection.small=e)}}async checkOpenCodeAndInit(){try{if((await we())?.ok){this.opencodeAvailable=!0,await this.loadOpenCodeProviders();return}}catch{}try{(await Te())?.available&&(this.opencodeAvailable=!0,await this.loadOpenCodeProviders())}catch{}}async loadOpenCodeProviders(){let e=await Ee();if(!e||!e.available||!Array.isArray(e.providers))return;let t=e.providers,n=e.auth??{},r=new Set(Array.isArray(e.connected)?e.connected:[]),i=new Set(t.map(e=>e.id));for(let e of ie)i.has(e.id)||t.push(e);this.opencodeProviders=t,this.opencodeAuth=n;let a={...this.providerState};for(let e of t){a[e.id]||(a[e.id]={selected:!1,verified:!1,verifying:!1,error:!1,apiKey:``,baseUrl:e.localUrl??``,models:[],ollamaMode:null});let t=Object.keys(e.models??{});t.length>0&&a[e.id].models.length===0&&(a[e.id].models=t),r.has(e.id)&&(a[e.id].verified=!0)}this.providerState=a,this.applyImportedOpenCodeModelSelections(e.selectedModels)}async detectProviders(){try{let e=await De();if(e){this.detectedProviders=e.providers??[];for(let e of this.detectedProviders){if(!e.available)continue;let t=this.providerState[e.provider];t&&(t.baseUrl=e.url,t.selected||(t.selected=!0,e.provider===`ollama`&&(t.ollamaMode=`running`)),this.verifyProvider(e.provider))}}}catch{this.detectedProviders=[]}}async verifyProvider(e){let t=q.find(t=>t.id===e);if(!t)return;let n=this.providerState[e];if(!n)return;if(e===`ollama`&&n.ollamaMode===`instack`){n.verified=!0,n.error=!1;return}let r=(this.verifyGeneration[e]??0)+1;this.verifyGeneration[e]=r,n.verifying=!0,n.error=!1;let i=(n.baseUrl||t.baseUrl).trim(),a=(n.apiKey??``).trim();try{let t=await Oe(e,{baseUrl:i,apiKey:a});if(this.verifyGeneration[e]!==r)return;n.verified=!0,n.error=!1,n.models=t.models??[]}catch(t){if(this.verifyGeneration[e]!==r)return;n.verified=!1,n.error=!0,n.errorMessage=t instanceof Error?t.message:``,n.models=[]}n.verifying=!1}async startOpenCodeOAuth(e,t){let n=this.providerState[e];if(n){n.verifying=!0,n.error=!1;try{let r=await ke(e,t);n.oauthPolling=!0,n.oauthUrl=r.url??``,n.oauthInstructions=r.instructions??``,r.url&&r.method===`auto`&&window.open(r.url,`_blank`),await this.pollOpenCodeOAuth(e,t)}catch(e){n.verifying=!1,n.error=!0,n.errorMessage=e instanceof Error?e.message:`OAuth failed`,n.oauthPolling=!1}}}async pollOpenCodeOAuth(e,t){let n=this.providerState[e],r=new AbortController;this.oauthAbortControllers[e]=r;let i=AbortSignal.timeout(10*6e4),a=AbortSignal.any?AbortSignal.any([r.signal,i]):r.signal;try{let{ok:r,data:i}=await Ae(e,t,a);r&&i?.ok?(n.verified=!0,n.error=!1):(n.error=!0,n.errorMessage=i?.message??`Authorization failed`)}catch(e){if(e instanceof Error&&e.name===`AbortError`&&r.signal.aborted)return;e instanceof Error&&e.name===`AbortError`?(n.error=!0,n.errorMessage=`Authorization timed out. Try again.`):(n.error=!0,n.errorMessage=e instanceof Error?e.message:`Authorization failed`)}finally{delete this.oauthAbortControllers[e],n.oauthPolling=!1,n.verifying=!1}}cancelOAuth(e){let t=this.oauthAbortControllers[e];t&&(t.abort(),delete this.oauthAbortControllers[e]);let n=this.providerState[e];n&&(n.oauthPolling=!1,n.verifying=!1)}async handleInstall(){if(!this.installing){if(this.installError=``,!this.payload.llm&&!this.isRerun&&!this.emptyAiAck){if(!window.confirm(`No AI is set up here. You can connect this app to an assistant running on another computer, or add a provider later from your dashboard.
2
2
 
3
3
  Install now?`))return;this.emptyAiAck=!0}this.installing=!0,(this.persistedVoiceTts.engine===`openpalm-voice`||this.persistedVoiceStt.engine===`openpalm-voice`)&&!this.selectedVoiceProfile&&(this.selectedVoiceProfile=ae(this.voiceProfiles,`voice`,this.gpuDetected)??K(`voice`,`cpu`)),this.ollamaEnabled&&!this.selectedOllamaProfile&&(this.selectedOllamaProfile=K(`ollama`,this.gpuDetected?`cuda`:`cpu`));try{let{ok:e,data:t}=await je(this.payload);if(!e||!t.ok){this.installError=t.message??t.error??`Install failed.`,this.installing=!1,this.showDeploy=!1;return}this.showDeploy=!0,this.startDeployPolling()}catch(e){this.installError=`Network error: ${e instanceof Error?e.message:`unable to reach server.`}`,this.installing=!1}}}startDeployPolling(){this.stopDeployPolling(),this.pollDeployStatus(),this.deployTimer=setInterval(()=>{this.pollDeployStatus()},2500)}stopDeployPolling(){this.deployTimer&&=(clearInterval(this.deployTimer),null)}async pollDeployStatus(){try{let{ok:e,data:t}=await Me();if(!e||!t){this.deployPollErrors++,this.deployPollErrors>=5&&(this.stopDeployPolling(),this.deployError=`Lost contact with the installer. Services may still be starting in the background.`);return}if(this.deployPollErrors=0,this.deployData=t,t.deployError)this.stopDeployPolling(),this.deployError=t.deployError;else if(t.setupComplete&&t.deployStatus&&t.deployStatus.length>0){let e=t.deployStatus,n=e.every(e=>e.status===`running`),r=!t.deploying&&e.every(e=>e.status===`running`||e.status===`warning`)&&e.some(e=>e.status===`warning`);n?(this.stopDeployPolling(),this.deployDone=!0):r&&(this.stopDeployPolling(),this.deployHasWarnings=!0,this.deployDone=!0)}else t.setupComplete&&!t.deploying&&(!t.deployStatus||t.deployStatus.length===0)&&(this.stopDeployPolling(),this.deployDone=!0)}catch(e){this.deployPollErrors++,this.deployPollErrors>=5&&(this.stopDeployPolling(),this.deployError=e instanceof Error?`Lost contact with the installer: ${e.message}`:`Lost contact with the installer.`)}}handlePortalToggle(e){let t=this.portalSelection[e];typeof t==`object`&&t?t.enabled=!t.enabled:this.portalSelection[e]=!t}handleCredentialChange(e,t,n){let r=this.portalSelection[e];typeof r==`object`&&r&&(r[t]=n)}async handleDeployRetry(){this.installing=!1,this.deployError=null,this.deployDone=!1,this.deployHasWarnings=!1,this.deployData={},this.deployPollErrors=0;let{ok:e,data:t}=await Ne();if(!e||t?.ok===!1){this.deployError=t?.message??`Retry failed.`;return}this.installing=!0,this.pollDeployStatus()}handleDeployBack(){this.installing=!1,this.deployError=null,this.deployDone=!1,this.deployHasWarnings=!1,this.deployData={},this.deployPollErrors=0,this.showDeploy=!1,this.currentStep=3}handleSystemCheckPass(){this.systemCheckPassed=!0,this.goToStep(1)}handleGpuDetected(){if(this.gpuDetected=!0,this.voiceProfiles.length>0&&this.selectedVoiceProfile!==K(`voice`,`cuda`)){let e=this.voiceProfiles.find(e=>e.id===K(`voice`,`cuda`)&&e.available!==!1);e&&(this.selectedVoiceProfile=e.id)}}async loadHostStatus(){try{let e=await Pe();e&&(this.hostProviderCount=Math.max(e.providerCount??0,e.credentialCount??0),e.imageTag&&!this.imageTag&&(this.imageTag=e.imageTag),typeof e.hostAkmAvailable==`boolean`&&(this.isRerun||(this.hostAkmEnabled=e.hostAkmAvailable)),e.modelPreferences?.model&&(this.importedLlmModel=e.modelPreferences.model),e.modelPreferences?.small_model&&(this.importedSmallModel=e.modelPreferences.small_model),this.hostProviderCount>0&&!this.hostImportTriggered&&(this.currentStep===1||this.isRerun)&&(this.hostImportTriggered=!0,this.handleHostImport()))}catch(e){console.warn(`loadHostStatus failed`,e)}}markProviderVerifiedFromImport(e){let t=this.providerState[e];if(!t){t={selected:!0,verified:!0,verifying:!1,error:!1,apiKey:``,baseUrl:``,models:[],ollamaMode:null},this.providerState[e]=t;return}t.verified=!0,t.error=!1}async handleHostImport(){this.hostImporting=!0,this.hostImportError=``;try{let{ok:e,data:t}=await Fe();if(!e||!t?.ok){this.hostImportError=t?.error??`Couldn't import providers from this computer. You can sign in or add a provider manually instead.`,this.hostImporting=!1;return}let n=t.importedProviders??t.pushedProviders??[];for(let e of n)this.markProviderVerifiedFromImport(e);if(this.opencodeAvailable)try{await this.loadOpenCodeProviders()}catch(e){console.warn(`handleHostImport: reloading OpenCode providers failed`,e)}this.applyImportedModelPreferences(),await Promise.allSettled(Object.keys(this.providerState).filter(e=>!this.providerState[e].verified&&q.some(t=>t.id===e)).map(e=>this.verifyProvider(e))),this.applyImportedModelPreferences(),this.autoSelectModels(),this.hostImporting=!1,this.isRerun||this.goToStep(1)}catch(e){this.hostImportError=`Network error importing providers from this computer: `+(e instanceof Error?e.message:`unable to reach the server.`),this.hostImporting=!1}}reset(){this.stopDeployPolling();for(let e of Object.keys(this.oauthAbortControllers)){try{this.oauthAbortControllers[e].abort()}catch{}delete this.oauthAbortControllers[e]}this.verifyGeneration={},Object.assign(this,structuredClone($))}init(){this.reset(),this.initProviderState();let e=new URLSearchParams(window.location.search);this.isRerun=e.get(`rerun`)===`1`,this.isRerun?(this.systemCheckPassed=!0,this.maxVisitedStep=3,this.uiLoginPassword=fe(),Ie().then(e=>{if(!e)return;let t=ye(e);t.hostAkmEnabled!==void 0&&(this.hostAkmEnabled=t.hostAkmEnabled),t.llm&&(this.modelSelection.llm=t.llm),t.embedding&&(this.modelSelection.embedding=t.embedding),t.voiceTts&&(this.voiceTts=t.voiceTts),t.voiceStt&&(this.voiceStt=t.voiceStt),t.selectedVoiceProfile&&(this.selectedVoiceProfile=t.selectedVoiceProfile),t.importedLlmModel&&(this.importedLlmModel=t.importedLlmModel),t.importedSmallModel&&(this.importedSmallModel=t.importedSmallModel),t.ollamaEnabled&&(this.ollamaEnabled=!0),t.selectedOllamaProfile&&(this.selectedOllamaProfile=t.selectedOllamaProfile);for(let e of[`discord`,`slack`]){let n=this.portalSelection[e];if(typeof n==`object`&&n){t.enabledAddons.includes(e)&&(n.enabled=!0);let r=t.portalCredentials[e];r&&typeof r==`object`&&Object.assign(n,r)}}}).catch(e=>{console.error(`[setup] failed to load existing config:`,e)})):(this.uiLoginPassword=fe(),Le().then(e=>{e.setupComplete&&(window.location.href=`/`)}).catch(e=>{console.error(`[setup] failed to check setup status:`,e)})),Me().then(({ok:e,data:t})=>{!e||!t||(t.deploying||t.deployError)&&(this.deployData=t,this.showDeploy=!0,this.startDeployPolling())}).catch(e=>{console.error(`[setup] failed to fetch deploy status:`,e)}),this.loadHostStatus(),this.loadVoiceProfiles(),this.loadOllamaProfiles(),this.checkOpenCodeAndInit().then(()=>this.detectProviders()).catch(e=>{console.error(`[setup] provider detection failed:`,e)})}dispose(){this.stopDeployPolling();for(let e of Object.keys(this.oauthAbortControllers)){try{this.oauthAbortControllers[e].abort()}catch{}delete this.oauthAbortControllers[e]}}},ze=n(`<p class="friendly-error-body svelte-jyx78z"> </p>`),Be=n(`<p class="friendly-error-hint svelte-jyx78z"> </p>`),Ve=n(`<a target="_blank" rel="noopener noreferrer" class="friendly-error-link svelte-jyx78z"> </a>`),He=n(`<div class="friendly-error-links svelte-jyx78z"></div>`),Ue=n(`<details class="friendly-error-details svelte-jyx78z"><summary class="svelte-jyx78z">Technical details</summary> <pre class="svelte-jyx78z"> </pre></details>`),We=n(`<div class="friendly-error svelte-jyx78z"><div class="friendly-error-header svelte-jyx78z"><!> <strong class="friendly-error-title svelte-jyx78z"> </strong></div> <!> <!> <!> <!></div>`);function Ge(e,n){x(n,!0);let r=p(n,`role`,3,`alert`),i=p(n,`compact`,3,!1);var c=t(),u=j(c),f=e=>{var t=We(),c=D(t),u=D(c);ee(u,{size:18});var f=S(u,2),p=D(f,!0);F(f),F(c);var m=S(c,2),h=e=>{var t=ze(),r=D(t,!0);F(t),d(()=>o(r,n.error.body)),s(e,t)};a(m,e=>{n.error.body&&e(h)});var g=S(m,2),_=e=>{var t=Be(),r=D(t,!0);F(t),d(()=>o(r,n.error.hint)),s(e,t)};a(g,e=>{n.error.hint&&e(_)});var v=S(g,2),y=e=>{var t=He();C(t,21,()=>n.error.links,e=>e.href,(e,t)=>{var n=Ve(),r=D(n);F(n),d(()=>{k(n,`href`,l(t).href),o(r,`${l(t).label??``} →`)}),s(e,n)}),F(t),s(e,t)};a(v,e=>{n.error.links&&n.error.links.length>0&&e(y)});var b=S(v,2),x=e=>{var t=Ue(),r=S(D(t),2),i=D(r,!0);F(r),F(t),d(()=>o(i,n.error.raw)),s(e,t)};a(b,e=>{!i()&&n.error.raw&&n.error.raw!==n.error.body&&e(x)}),F(t),d(()=>{k(t,`role`,r()),o(p,n.error.title)}),s(e,t)};a(u,e=>{n.error&&e(f)}),s(e,c),E()}var Ke=i(`<svg aria-hidden="true" viewBox="0 0 24 24"><circle fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" cx="12" cy="12" r="3.4"></circle><path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M9 9l-2.6-2.6"></path><path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M15 9l2.6-2.6"></path><path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M9 15l-2.6 2.6"></path><path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M15 15l2.6 2.6"></path><path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M6.4 6.4l1.2-1.2"></path><path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M17.6 6.4l-1.2-1.2"></path></svg>`);function qe(e,t){let n=p(t,`size`,3,20),r=p(t,`class`,3,``);var i=Ke();d(()=>{k(i,`width`,n()),k(i,`height`,n()),h(i,0,`s-icon ${r()??``}`)}),s(e,i)}var Je={label:`Docker setup`,href:`https://docs.docker.com/get-docker/`};function Ye(e){if(!e)return``;if(e instanceof Error)return e.message;if(typeof e==`string`)return e;try{return JSON.stringify(e)}catch{return String(e)}}function Xe(e,t=`generic`,n={}){let r=Ye(e),i=r.toLowerCase(),a=n.providerName?`${n.providerName} didn't accept that key`:`API key rejected`;if(/\b(401|403|unauthorized|forbidden|invalid.?api.?key)\b/i.test(r))return{title:a,body:`The provider rejected the API key.`,hint:`Common causes: extra spaces, wrong account, or the key was revoked. Double-check the key and that it has access to the model you selected. Most providers show the key in their dashboard.`,raw:r};if(/\b(ENOTFOUND|ECONNREFUSED|getaddrinfo|EAI_AGAIN|EHOSTUNREACH)\b/i.test(r))return{title:`Couldn't reach the host`,body:r,hint:`Confirm the URL is correct and the service is online. For local providers (Ollama, LM Studio) make sure the server is running on this machine.`,raw:r};if(/(timeout|timed out|AbortError|ETIMEDOUT)/i.test(r))return{title:`Request timed out`,body:`The provider didn't respond in time.`,hint:`It may be slow or temporarily down. Try again in a moment.`,raw:r};if(i.includes(`docker`)||i.includes(`compose`)||i.includes(`daemon`))return{title:`Docker isn't available`,body:`OpenPalm needs Docker (with Compose v2) installed and running.`,hint:`Start Docker Desktop (macOS/Windows) or the docker daemon (Linux), then retry.`,links:[Je],raw:r};if(/EADDRINUSE/i.test(r)||/port.*in.?use/i.test(i))return{title:`A required port is already in use`,body:r,hint:`Another program is using one of OpenPalm's default ports. Quit the conflicting app, or change OpenPalm's port from the Admin Dashboard after setup.`,raw:r};if(/EACCES|EPERM|permission denied/i.test(r))return{title:`Permission denied`,body:r,hint:`OpenPalm couldn't write to its data directory. Check that ~/.openpalm/ is writable by your user.`,raw:r};switch(t){case`provider-verify`:case`model-fetch`:return{title:`Couldn't connect to the provider`,body:r||`Verification failed.`,hint:`Check the API key and base URL, then click Verify again.`,raw:r};case`setup-complete`:return{title:`Setup couldn't finish`,body:r||`Writing configuration failed.`,hint:`Check the technical details below, then retry. If the issue persists, the admin dashboard logs may help.`,raw:r};case`deploy`:case`deploy-poll`:return{title:`Deployment ran into a problem`,body:r||`One or more services failed to start.`,hint:`Image pulls can take several minutes on first install. Retry to attempt again; check Docker logs if it keeps failing.`,raw:r};case`system-check`:return{title:`System check failed`,body:r||`A required dependency is missing.`,hint:`Resolve the failing check above, then click Retry.`,raw:r};case`portal`:return{title:`Portal credential issue`,body:r||`A required field is missing or invalid.`,hint:`Confirm the bot token and other required fields are correct.`,raw:r};case`port-conflict`:return{title:`A required port is already in use`,body:r||`Another process is using one of OpenPalm's ports.`,hint:`Another program is using one of OpenPalm's default ports. Quit the conflicting app, or change OpenPalm's port from the Admin Dashboard after setup.`,raw:r};default:return{title:`Something went wrong`,body:r||`An unexpected error occurred.`,hint:`Try again. If the problem persists, check the admin dashboard logs.`,raw:r}}}var Ze=i(`<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="var(--s-moss)" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"></polyline></svg>`),Qe=i(`<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="var(--s-seal)" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg>`),$e=n(`<div class="syscheck-meta svelte-1txhq2p"> </div>`),et=n(`<div class="syscheck-hint svelte-1txhq2p"> </div> <a class="syscheck-link svelte-1txhq2p" target="_blank" rel="noopener noreferrer"> </a>`,1),tt=i(`<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="var(--s-moss)" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"></polyline></svg>`),nt=i(`<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="var(--s-seal)" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg>`),rt=n(`<div class="syscheck-meta svelte-1txhq2p"> </div>`),it=n('<div class="syscheck-hint svelte-1txhq2p">Compose v2 ships with Docker Desktop. Linux users may need to install the `docker-compose-plugin` package.</div> <a class="syscheck-link svelte-1txhq2p" href="https://docs.docker.com/compose/install/" target="_blank" rel="noopener noreferrer">Compose installation guide →</a>',1),at=n(`<div class="syscheck-row syscheck-row--ok svelte-1txhq2p"><div class="syscheck-icon svelte-1txhq2p"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="var(--s-moss)" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"></polyline></svg></div> <div class="syscheck-body svelte-1txhq2p"><div class="syscheck-title svelte-1txhq2p">GPU detected</div> <div class="syscheck-meta svelte-1txhq2p"> </div></div></div>`),ot=n(`<div class="syscheck-row syscheck-row--info svelte-1txhq2p"><div class="syscheck-icon svelte-1txhq2p" aria-hidden="true"><!></div> <div class="syscheck-body svelte-1txhq2p"><div class="syscheck-title svelte-1txhq2p"> </div> <div class="syscheck-meta svelte-1txhq2p"> </div> <div class="syscheck-hint svelte-1txhq2p">We can use this automatically — pick your model on the Models step.</div></div></div>`),st=n(`<div><div class="syscheck-icon svelte-1txhq2p"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke-width="2.3" stroke-linecap="round" stroke-linejoin="round"><path d="M12 9v4"></path><path d="M12 17h.01"></path><path d="M10.29 3.86 1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path></svg></div> <div class="syscheck-body svelte-1txhq2p"><div class="syscheck-title svelte-1txhq2p"> </div> <div class="syscheck-hint svelte-1txhq2p"><!></div></div></div>`),ct=n(`<h2>System Check</h2> <p class="step-description">Let's make sure your machine has everything OpenPalm needs.</p> <!> <div class="syscheck-list svelte-1txhq2p" aria-live="polite"><div><div class="syscheck-icon svelte-1txhq2p"><!></div> <div class="syscheck-body svelte-1txhq2p"><div class="syscheck-title svelte-1txhq2p">Docker is installed and running</div> <!></div></div> <div><div class="syscheck-icon svelte-1txhq2p"><!></div> <div class="syscheck-body svelte-1txhq2p"><div class="syscheck-title svelte-1txhq2p">Docker can run multi-container apps</div> <!></div></div> <!> <!> <!></div> <div class="step-actions"><button class="btn btn-secondary" id="btn-syscheck-retry"> </button> <button class="btn btn-primary" id="btn-syscheck-next">Continue</button></div>`,1);function lt(n,r){x(r,!0);let i={ollama:`Ollama`,lmstudio:`LM Studio`,"model-runner":`Docker Model Runner`},u=new Set([`ollama`,`lmstudio`,`model-runner`]),f=Re,p=()=>f.handleSystemCheckPass(),m=()=>f.handleSystemCheckPass(),_=()=>f.handleGpuDetected(),y=v(()=>f.isRerun),b=w(!0),T=w(null),O=w(null),N=v(()=>l(y)?[]:l(T)?.ports.filter(e=>!e.available)??[]),P=v(()=>l(N).filter(e=>e.blocking)),I=v(()=>l(P).length>0),L=v(()=>!!l(T)?.docker.ok&&!!l(T)?.compose.ok&&!l(I));function R(e){return e===`darwin`?{label:`Install Docker Desktop for Mac`,href:`https://www.docker.com/products/docker-desktop/`}:e===`win32`?{label:`Install Docker Desktop for Windows`,href:`https://www.docker.com/products/docker-desktop/`}:{label:`Install Docker Engine for Linux`,href:`https://docs.docker.com/engine/install/`}}function z(e){return e===`darwin`||e===`win32`?`Open Docker Desktop and wait for it to finish starting, then click Retry.`:"Run `sudo systemctl start docker` (or your distro's equivalent), then click Retry."}async function H(){M(b,!0),M(O,null);try{let e=await fetch(`/api/setup/system-check`);if(!e.ok)throw Error(`HTTP ${e.status}`);let t=await e.json();M(T,t,!0),t.docker.ok&&t.compose.ok&&m(),t.gpu&&_()}catch(e){M(O,Xe(e,`system-check`),!0),M(T,null)}finally{M(b,!1)}}A(()=>{H()});var ee=ct(),U=S(j(ee),4),W=e=>{Ge(e,{get error(){return l(O)}})};a(U,e=>{l(O)&&e(W)});var G=S(U,2),K=D(G);let q;var J=D(K),Y=D(J),te=e=>{V(e,{size:16})},ne=e=>{s(e,Ze())},X=e=>{s(e,Qe())};a(Y,e=>{l(b)?e(te):l(T)?.docker.ok?e(ne,1):e(X,-1)}),F(J);var re=S(J,2),ie=S(D(re),2),ae=e=>{var t=$e(),n=D(t);F(t),d(()=>o(n,`${l(T).runtime?.runtimeName??`Docker`??``} server ${l(T).docker.version??``}`)),s(e,t)},oe=e=>{var t=et(),n=j(t),r=D(n,!0);F(n);var i=S(n,2),a=D(i);F(i),d((e,t,n)=>{o(r,e),k(i,`href`,t),o(a,`${n??``} →`)},[()=>l(T).docker.error?.includes(`not found`)||l(T).docker.error?.includes(`ENOENT`)?`Docker isn't installed yet.`:z(l(T).platform),()=>R(l(T).platform).href,()=>R(l(T).platform).label]),s(e,t)};a(ie,e=>{l(T)?.docker.ok&&l(T).docker.version?e(ae):l(T)&&!l(T).docker.ok&&e(oe,1)}),F(re),F(K);var se=S(K,2);let ce;var Z=D(se),le=D(Z),ue=e=>{V(e,{size:16})},de=e=>{s(e,tt())},fe=e=>{s(e,nt())};a(le,e=>{l(b)?e(ue):l(T)?.compose.ok?e(de,1):e(fe,-1)}),F(Z);var pe=S(Z,2),me=S(D(pe),2),he=e=>{var t=rt(),n=D(t,!0);F(t),d(()=>o(n,l(T).compose.version)),s(e,t)},ge=e=>{var t=it();g(2),s(e,t)};a(me,e=>{l(T)?.compose.ok&&l(T).compose.version?e(he):l(T)&&!l(T).compose.ok&&e(ge,1)}),F(pe),F(se);var _e=S(se,2),ve=e=>{var t=at(),n=S(D(t),2),r=S(D(n),2),i=D(r,!0);F(r),F(n),F(t),d(()=>o(i,l(T).gpu)),s(e,t)};a(_e,e=>{l(T)?.gpu&&e(ve)});var ye=S(_e,2),be=e=>{var n=t();C(j(n),17,()=>l(T).hostProviders,e=>e.provider,(e,t)=>{var n=ot(),r=D(n),c=D(r),f=e=>{B(e,{size:18})},p=v(()=>u.has(l(t).provider)),m=e=>{qe(e,{size:18})};a(c,e=>{l(p)?e(f):e(m,-1)}),F(r);var h=S(r,2),_=D(h),y=D(_);F(_);var b=S(_,2),x=D(b,!0);F(b),g(2),F(h),F(n),d(()=>{o(y,`${i[l(t).provider]??l(t).provider??``} is running`),o(x,l(t).url)}),s(e,n)}),s(e,n)};a(ye,e=>{l(T)?.hostProviders&&l(T).hostProviders.length>0&&e(be)});var Q=S(ye,2),xe=e=>{var t=st(),n=D(t),r=D(n);F(n);var i=S(n,2),u=D(i),f=D(u);F(u);var p=S(u,2),m=D(p),g=e=>{s(e,c(`Docker is not running — start Docker and click Retry to confirm.`))},_=e=>{s(e,c(`Another program is using this port. Quit it and click Retry.`))};a(m,e=>{l(T).portCheckReliable?e(_,-1):e(g)}),F(p),F(i),F(t),d(e=>{h(t,1,`syscheck-row ${l(I)?`syscheck-row--fail`:`syscheck-row--warn`}`,`svelte-1txhq2p`),k(r,`stroke`,l(I)?`var(--s-seal)`:`var(--s-ink-2)`),o(f,`Port conflict on ${e??``}`)},[()=>l(N).map(e=>e.port).join(`, `)]),s(e,t)};a(Q,e=>{l(T)&&l(N).length>0&&e(xe)}),F(G);var Se=S(G,2),Ce=D(Se),we=D(Ce,!0);F(Ce);var Te=S(Ce,2);F(Se),d(()=>{q=h(K,1,`syscheck-row svelte-1txhq2p`,null,q,{"syscheck-row--ok":l(T)?.docker.ok,"syscheck-row--fail":l(T)&&!l(T).docker.ok}),ce=h(se,1,`syscheck-row svelte-1txhq2p`,null,ce,{"syscheck-row--ok":l(T)?.compose.ok,"syscheck-row--fail":l(T)&&!l(T).compose.ok}),Ce.disabled=l(b),o(we,l(b)?`Checking…`:`Retry checks`),Te.disabled=l(b)||!l(L)}),e(`click`,Ce,()=>H()),e(`click`,Te,p),s(n,ee),E()}L([`click`]);var ut=n(`<p class="oauth-empty svelte-1kgjxt0">Nothing more to add — you're all connected.</p>`),dt=n(`<span class="oauth-status oauth-status--ok svelte-1kgjxt0">Connected ✓</span>`),ft=n(`<a target="_blank" rel="noopener" class="oauth-open-link svelte-1kgjxt0">Open authorization page →</a>`),pt=n(`<p class="oauth-instructions svelte-1kgjxt0"> </p>`),mt=n(`<div class="oauth-polling svelte-1kgjxt0"><!> <!> <div class="oauth-waiting svelte-1kgjxt0"><!> Waiting for authorization…</div> <button type="button" class="btn-oauth-cancel svelte-1kgjxt0">Cancel</button></div>`),ht=n(`<button type="button" class="btn btn-secondary btn-sm"> </button>`),gt=n(`<span class="oauth-error svelte-1kgjxt0" role="alert"> </span>`),_t=n(`<div class="oauth-row svelte-1kgjxt0" role="listitem"><span class="oauth-name svelte-1kgjxt0"> </span> <!> <!></div>`),vt=n(`<button type="button" class="oauth-more svelte-1kgjxt0"> </button>`),yt=n(`<!> <!>`,1),bt=n(`<div class="oauth-list svelte-1kgjxt0" role="list"><!></div>`);function xt(t,n){x(n,!0);let r=Re,i=v(()=>r.opencodeProviders),c=v(()=>r.opencodeAuth),u=v(()=>r.providerState),f=(e,t)=>void r.startOpenCodeOAuth(e,t),p=e=>r.cancelOAuth(e),m=[`openai`,`google`,`github-copilot`,`groq`,`mistral`,`huggingface`],h=v(()=>l(i).filter(e=>X.has(e.id)||l(u)[e.id]?.verified?!1:(l(c)[e.id]??[]).some(e=>e.type===`oauth`)).sort((e,t)=>{let n=m.indexOf(e.id),r=m.indexOf(t.id);return(n===-1?99:n)-(r===-1?99:r)})),_=w(!1),y=v(()=>l(_)?l(h):l(h).slice(0,4)),b=v(()=>Math.max(0,l(h).length-4));function T(e){return l(u)[e]??{selected:!1,verified:!1,verifying:!1,error:!1,apiKey:``,baseUrl:``,models:[],ollamaMode:null}}function O(e){return(l(c)[e]??[]).findIndex(e=>e.type===`oauth`)}var A=bt(),N=D(A),P=e=>{s(e,ut())},I=t=>{var n=yt(),r=j(n);C(r,17,()=>l(y),e=>e.id,(t,n)=>{let r=v(()=>T(l(n).id)),i=v(()=>O(l(n).id));var c=_t(),u=D(c),m=D(u,!0);F(u);var h=S(u,2),_=e=>{var t=dt();d(()=>k(t,`aria-label`,`${l(n).name??``} connected`)),s(e,t)},y=t=>{var i=mt(),c=D(i),u=e=>{var t=ft();d(()=>k(t,`href`,l(r).oauthUrl)),s(e,t)};a(c,e=>{l(r).oauthUrl&&e(u)});var f=S(c,2),m=e=>{var t=pt(),n=D(t,!0);F(t),d(()=>o(n,l(r).oauthInstructions)),s(e,t)};a(f,e=>{l(r).oauthInstructions&&e(m)});var h=S(f,2);V(D(h),{}),g(),F(h);var _=S(h,2);F(i),e(`click`,_,()=>p(l(n).id)),s(t,i)},b=t=>{var a=ht(),c=D(a,!0);F(a),d(()=>{a.disabled=l(r).verifying,o(c,l(r).verifying?`Signing in…`:`Sign in`)}),e(`click`,a,()=>f(l(n).id,l(i))),s(t,a)};a(h,e=>{l(r).verified?e(_):l(r).oauthPolling?e(y,1):e(b,-1)});var x=S(h,2),C=e=>{var t=gt(),n=D(t,!0);F(t),d(()=>o(n,l(r).errorMessage??`Authorization failed`)),s(e,t)};a(x,e=>{l(r).error&&!l(r).oauthPolling&&e(C)}),F(c),d(()=>{k(c,`data-provider`,l(n).id),o(m,l(n).name)}),s(t,c)});var i=S(r,2),c=t=>{var n=vt(),r=D(n,!0);F(n),d(()=>o(r,l(_)?`Show fewer`:`Show ${l(b)} more services`)),e(`click`,n,()=>{M(_,!l(_))}),s(t,n)};a(i,e=>{l(b)>0&&e(c)}),s(t,n)};a(N,e=>{l(h).length===0?e(P):e(I,-1)}),F(A),s(t,A),E()}L([`click`]);var St=n(`<p class="connected svelte-v318we" role="status"><span class="check svelte-v318we" aria-hidden="true">✓</span> Connected your AI account.</p> <button type="button" class="account-link svelte-v318we">Use a different account</button>`,1),Ct=n(`<p class="connecting svelte-v318we" role="status"><!> Connecting your AI account…</p>`),wt=n(`<p class="lead svelte-v318we">We found an AI account on this computer.</p> <button type="button" class="btn-connect svelte-v318we" id="btn-host-import">Use this account</button> <button type="button" class="account-link svelte-v318we">Use a different account</button>`,1),Tt=n(`<button type="button" class="account-link svelte-v318we">Use the account on this computer instead</button>`),Et=n(`<p class="lead svelte-v318we">Sign in to your AI service:</p> <!> <!>`,1),Dt=n(`<div class="cloud-attach svelte-v318we"><!></div>`);function Ot(n){let r=Re,i=[],o=v(()=>r.hostImporting),c=v(()=>r.verifiedCount),u=()=>void r.handleHostImport(),d=v(()=>i.length>0),f=v(()=>l(c)>0),p=w(!1),m=v(()=>!l(d)||l(p));var h=Dt(),_=D(h),y=n=>{var r=t(),i=j(r),c=t=>{var n=St();e(`click`,S(j(n),2),()=>M(p,!0)),s(t,n)},d=e=>{var t=Ct();V(D(t),{}),g(),F(t),s(e,t)},m=t=>{var n=wt(),r=S(j(n),2),i=S(r,2);e(`click`,r,u),e(`click`,i,()=>M(p,!0)),s(t,n)};a(i,e=>{l(f)?e(c):l(o)?e(d,1):e(m,-1)}),s(n,r)},b=t=>{var n=Et(),r=S(j(n),2);xt(r,{});var i=S(r,2),o=t=>{var n=Tt();e(`click`,n,()=>M(p,!1)),s(t,n)};a(i,e=>{l(d)&&e(o)}),s(t,n)};a(_,e=>{l(m)?e(b,-1):e(y)}),F(h),s(n,h)}L([`click`]);var kt=n(`<div class="status-row status-row--running svelte-1fl6n4z" role="status"><span class="status-icon svelte-1fl6n4z" aria-hidden="true">●</span> <span class="status-text svelte-1fl6n4z"> </span></div>`),At=n(`<div class="status-callout status-callout--apple svelte-1fl6n4z" role="note"><div class="callout-icon svelte-1fl6n4z" aria-hidden="true"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line></svg></div> <div class="callout-body svelte-1fl6n4z"><p class="callout-title svelte-1fl6n4z">Apple Silicon detected</p> <p class="callout-desc svelte-1fl6n4z">For best performance, install <a href="https://ollama.com/download" target="_blank" rel="noopener" class="svelte-1fl6n4z">Ollama for macOS</a> and leave it running before continuing. Once Ollama is running, click Re-check to continue.</p> <button class="btn-recheck svelte-1fl6n4z" type="button" id="btn-local-recheck">Re-check</button></div></div>`),jt=n(`<div class="status-row status-row--will-install svelte-1fl6n4z" role="status"><span class="status-icon svelte-1fl6n4z" aria-hidden="true">◎</span> <span class="status-text svelte-1fl6n4z">Will install Ollama in the stack <!>.
4
4
  First pull downloads ~4–8 GB.</span></div>`),Mt=n(`<div class="status-row status-row--will-install svelte-1fl6n4z" role="status"><span class="status-icon svelte-1fl6n4z" aria-hidden="true">◎</span> <span class="status-text svelte-1fl6n4z">Will install Ollama in the stack (CPU mode). First pull downloads ~4–8 GB.</span></div>`),Nt=n(`<div class="local-models-status svelte-1fl6n4z"><!></div>`);function Pt(t,n){x(n,!0);let r=Re,i=v(()=>r.detectedHostProviders),u=v(()=>r.detectedGpuVramMb),f=v(()=>r.detectedGpuVendor),p=v(()=>r.detectedGpuName),m=v(()=>r.ollamaEnabled),h=v(()=>r.selectedOllamaProfile),_=()=>void r.fetchAndApplyRecommendation(),y=v(()=>l(f)===`apple`),b=v(()=>l(i).length>0),C=v(()=>Math.round(l(u)/1024)),w=v(()=>l(h).endsWith(`cuda`)?`CUDA`:l(h).endsWith(`rocm`)?`ROCm`:`CPU`);function T(e){return e===`ollama`?`Ollama`:e===`lmstudio`?`LM Studio`:e===`model-runner`?`Docker Model Runner`:e}var O=Nt(),k=D(O),A=e=>{var t=kt(),n=S(D(t),2),r=D(n);F(n),F(t),d(e=>o(r,`Using ${e??``} already running on your machine.`),[()=>l(i).map(e=>T(e.provider)).join(`, `)]),s(e,t)},j=t=>{var n=At(),r=S(D(n),2),i=S(D(r),4);F(r),F(n),e(`click`,i,_),s(t,n)},M=e=>{var t=jt(),n=S(D(t),2),r=S(D(n)),i=e=>{var t=c();d(()=>o(t,`(GPU: ${l(p)??``}, ${l(C)??``} GB, profile: ${l(w)??``})`)),s(e,t)};a(r,e=>{l(p)&&e(i)}),g(),F(n),F(t),s(e,t)},N=e=>{s(e,Mt())};a(k,e=>{l(b)?e(A):l(y)?e(j,1):l(m)&&l(u)>=8192?e(M,2):l(m)&&e(N,3)}),F(O),s(t,O),E()}L([`click`]);var Ft=n(`<div class="s1-alert s1-alert--error svelte-z6usuj" role="alert"><span class="s1-alert-text svelte-z6usuj"> </span> <button type="button" class="s1-alert-btn svelte-z6usuj" id="btn-syscheck-retry">Retry</button></div>`),It=n(`<div class="s1-shimmer svelte-z6usuj" aria-busy="true" aria-label="Detecting AI services…"><span class="s1-shimmer-bar svelte-z6usuj"></span> <span class="s1-shimmer-bar s1-shimmer-bar--short svelte-z6usuj"></span> <span class="s1-shimmer-bar s1-shimmer-bar--shorter svelte-z6usuj"></span></div>`),Lt=n(`<div class="s1-detected-banner svelte-z6usuj" role="status"><div class="s1-detected-check svelte-z6usuj" aria-hidden="true">✓</div> <div class="s1-detected-text svelte-z6usuj"><div class="s1-detected-title svelte-z6usuj"> </div> <div class="s1-detected-sub svelte-z6usuj">We found your account on this computer. Just continue, or choose something different below.</div></div></div>`),Rt=n(`<button type="button" role="radio"><div class="s1-radio-dot svelte-z6usuj"><div class="s1-radio-dot-inner svelte-z6usuj"></div></div> <div class="s1-choice-body svelte-z6usuj"><div class="s1-choice-title svelte-z6usuj"> </div> <div class="s1-choice-sub svelte-z6usuj"> </div></div> <span class="s1-badge-recommended svelte-z6usuj">Recommended</span></button>`),zt=n(`<div class="s1-local-panel svelte-z6usuj" aria-live="polite"><!></div>`),Bt=n(`<div class="s1-signin-panel svelte-z6usuj" aria-live="polite"><!></div>`),Vt=n(`<div class="s1-empty-install-row svelte-z6usuj"><p class="s1-empty-install-hint svelte-z6usuj">No AI here? You can still continue — connect this app to an assistant
@@ -1 +1 @@
1
- import{B as e,F as t,I as n,M as r,N as i,P as a,U as o,X as s,Y as c,dt as l,ht as u,it as d,j as f,lt as p,mt as m,nt as h,p as g,r as _,rt as v,st as y,tt as b,ut as x,w as S,xt as C,z as w}from"../chunks/BzIvC31O.js";import{t as T}from"../chunks/Be7qat4r.js";import"../chunks/xihTtKlq.js";import{u as E}from"../chunks/B_jhBV5Z.js";import{t as D}from"../chunks/9mRSvTWj.js";import"../chunks/B_Sgy7qx.js";import{t as O}from"../chunks/BoOBAdGl.js";import{c as k,f as A}from"../chunks/BApqEZP1.js";var j=n(`<iframe class="opencode-frame svelte-1z0msvj" title="OpenCode — Advanced Chat" allow="clipboard-read; clipboard-write; microphone"></iframe>`),M=n(`<p class="status-line svelte-1z0msvj"> </p>`),N=n(`<h2 class="svelte-1z0msvj"> </h2> <p class="svelte-1z0msvj">The connection looks dead or its session expired. Reconnect to try again, or pick a different assistant from the switcher above.</p> <button class="btn btn-primary btn-lg svelte-1z0msvj"> </button>`,1),P=n(`<div class="advanced-status svelte-1z0msvj" aria-live="polite"><!></div>`),F=n(`<!> <div class="advanced-layout svelte-1z0msvj"><!></div>`,1);function I(n,w){u(w,!0);let I=l(()=>E.active),L=l(()=>D.url.searchParams.get(`session`)),R=p(``),z=p(`checking`),B=p(!1),V=p(0),H=0;async function U(){let e=++H;y(z,`checking`);let t=o(I)?.url??`http://127.0.0.1:3800`;try{let n=await fetch(`/proxy/assistant/`,{headers:{accept:`text/html`}});if(e!==H)return;if(!n.ok){y(z,`dead`);return}let r=t;if(o(L)){let n=await fetch(`/proxy/assistant/session/${encodeURIComponent(o(L))}`,{headers:{accept:`application/json`}});if(e!==H)return;if(n.ok){let i=await n.json().catch(()=>null);if(e!==H)return;r=k(t,o(L),i?.directory)}}y(R,r,!0),y(z,`ready`)}catch{if(e!==H)return;y(z,`dead`)}}async function W(){if(!o(B)){y(B,!0);try{await E.load(!0),await U(),o(z)===`ready`&&x(V)}finally{y(B,!1)}}}_(()=>(document.documentElement.classList.add(`chat-locked`),document.body.classList.add(`chat-locked`),()=>{document.documentElement.classList.remove(`chat-locked`),document.body.classList.remove(`chat-locked`)})),T(({to:e})=>{let t=e?.url.searchParams.get(`session`)??null;t&&A.setActiveSessionId(t),E.load().then(()=>U())});var G=F();S(`1z0msvj`,e=>{c(()=>{b.title=`Advanced Chat — OpenPalm`})});var K=v(G);O(K,{});var q=d(K,2),J=h(q),Y=e=>{var n=t();f(v(n),()=>o(V),e=>{var t=j();s(()=>g(t,`src`,o(R))),a(e,t)}),a(e,n)},X=t=>{var n=P(),c=h(n),l=e=>{var t=M(),n=h(t);C(t),s(()=>i(n,`Connecting to ${o(I)?.label??`your assistant`??``}…`)),a(e,t)},u=t=>{var n=N(),r=v(n),c=h(r);C(r);var l=d(r,4),u=h(l,!0);C(l),s(()=>{i(c,`Can’t reach ${o(I)?.label??`your assistant`??``}`),l.disabled=o(B),i(u,o(B)?`Reconnecting…`:`Reconnect`)}),e(`click`,l,W),a(t,n)};r(c,e=>{o(z)===`checking`?e(l):e(u,-1)}),C(n),s(()=>g(n,`role`,o(z)===`dead`?`alert`:`status`)),a(t,n)};r(J,e=>{o(z)===`ready`?e(Y):e(X,-1)}),C(q),a(n,G),m()}w([`click`]);export{I as component};
1
+ import{B as e,F as t,I as n,M as r,N as i,P as a,U as o,X as s,Y as c,dt as l,ht as u,it as d,j as f,lt as p,mt as m,nt as h,p as g,r as _,rt as v,st as y,tt as b,ut as x,w as S,xt as C,z as w}from"../chunks/BzIvC31O.js";import{t as T}from"../chunks/CItB5oU8.js";import"../chunks/xihTtKlq.js";import{u as E}from"../chunks/B_jhBV5Z.js";import{t as D}from"../chunks/DuFsBiCS.js";import"../chunks/C3ad4Ajc.js";import{t as O}from"../chunks/Gis7OmMK.js";import{c as k,f as A}from"../chunks/BApqEZP1.js";var j=n(`<iframe class="opencode-frame svelte-1z0msvj" title="OpenCode — Advanced Chat" allow="clipboard-read; clipboard-write; microphone"></iframe>`),M=n(`<p class="status-line svelte-1z0msvj"> </p>`),N=n(`<h2 class="svelte-1z0msvj"> </h2> <p class="svelte-1z0msvj">The connection looks dead or its session expired. Reconnect to try again, or pick a different assistant from the switcher above.</p> <button class="btn btn-primary btn-lg svelte-1z0msvj"> </button>`,1),P=n(`<div class="advanced-status svelte-1z0msvj" aria-live="polite"><!></div>`),F=n(`<!> <div class="advanced-layout svelte-1z0msvj"><!></div>`,1);function I(n,w){u(w,!0);let I=l(()=>E.active),L=l(()=>D.url.searchParams.get(`session`)),R=p(``),z=p(`checking`),B=p(!1),V=p(0),H=0;async function U(){let e=++H;y(z,`checking`);let t=o(I)?.url??`http://127.0.0.1:3800`;try{let n=await fetch(`/proxy/assistant/`,{headers:{accept:`text/html`}});if(e!==H)return;if(!n.ok){y(z,`dead`);return}let r=t;if(o(L)){let n=await fetch(`/proxy/assistant/session/${encodeURIComponent(o(L))}`,{headers:{accept:`application/json`}});if(e!==H)return;if(n.ok){let i=await n.json().catch(()=>null);if(e!==H)return;r=k(t,o(L),i?.directory)}}y(R,r,!0),y(z,`ready`)}catch{if(e!==H)return;y(z,`dead`)}}async function W(){if(!o(B)){y(B,!0);try{await E.load(!0),await U(),o(z)===`ready`&&x(V)}finally{y(B,!1)}}}_(()=>(document.documentElement.classList.add(`chat-locked`),document.body.classList.add(`chat-locked`),()=>{document.documentElement.classList.remove(`chat-locked`),document.body.classList.remove(`chat-locked`)})),T(({to:e})=>{let t=e?.url.searchParams.get(`session`)??null;t&&A.setActiveSessionId(t),E.load().then(()=>U())});var G=F();S(`1z0msvj`,e=>{c(()=>{b.title=`Advanced Chat — OpenPalm`})});var K=v(G);O(K,{});var q=d(K,2),J=h(q),Y=e=>{var n=t();f(v(n),()=>o(V),e=>{var t=j();s(()=>g(t,`src`,o(R))),a(e,t)}),a(e,n)},X=t=>{var n=P(),c=h(n),l=e=>{var t=M(),n=h(t);C(t),s(()=>i(n,`Connecting to ${o(I)?.label??`your assistant`??``}…`)),a(e,t)},u=t=>{var n=N(),r=v(n),c=h(r);C(r);var l=d(r,4),u=h(l,!0);C(l),s(()=>{i(c,`Can’t reach ${o(I)?.label??`your assistant`??``}`),l.disabled=o(B),i(u,o(B)?`Reconnecting…`:`Reconnect`)}),e(`click`,l,W),a(t,n)};r(c,e=>{o(z)===`checking`?e(l):e(u,-1)}),C(n),s(()=>g(n,`role`,o(z)===`dead`?`alert`:`status`)),a(t,n)};r(J,e=>{o(z)===`ready`?e(Y):e(X,-1)}),C(q),a(n,G),m()}w([`click`]);export{I as component};
@@ -1,2 +1,2 @@
1
- import{B as e,I as t,P as n,X as r,Y as i,bt as a,ht as o,it as s,mt as c,nt as l,o as u,p as d,tt as f,w as p,xt as m,z as h}from"../chunks/BzIvC31O.js";import{l as g}from"../chunks/Be7qat4r.js";import"../chunks/xihTtKlq.js";import"../chunks/DfZbBavE.js";import{t as _}from"../chunks/BDK50g8a.js";var v=t(`<div class="setup-page"><header class="wiz-topbar svelte-nhph2d"><div class="wiz-wordmark"><!> <b>OpenPalm</b></div></header> <main class="attention-stage svelte-nhph2d"><div class="attention-panel svelte-nhph2d"><p class="wiz-eyebrow svelte-nhph2d"><span class="sev-dot svelte-nhph2d" aria-hidden="true"></span>Needs attention</p> <h1 class="wiz-title">Before your assistant can continue</h1> <p class="wiz-lede">A blocking task — such as a data migration — has to finish before OpenPalm can start
1
+ import{B as e,I as t,P as n,X as r,Y as i,bt as a,ht as o,it as s,mt as c,nt as l,o as u,p as d,tt as f,w as p,xt as m,z as h}from"../chunks/BzIvC31O.js";import{l as g}from"../chunks/CItB5oU8.js";import"../chunks/xihTtKlq.js";import"../chunks/DfZbBavE.js";import{t as _}from"../chunks/BDK50g8a.js";var v=t(`<div class="setup-page"><header class="wiz-topbar svelte-nhph2d"><div class="wiz-wordmark"><!> <b>OpenPalm</b></div></header> <main class="attention-stage svelte-nhph2d"><div class="attention-panel svelte-nhph2d"><p class="wiz-eyebrow svelte-nhph2d"><span class="sev-dot svelte-nhph2d" aria-hidden="true"></span>Needs attention</p> <h1 class="wiz-title">Before your assistant can continue</h1> <p class="wiz-lede">A blocking task — such as a data migration — has to finish before OpenPalm can start
2
2
  normally. Follow the steps shown here, then reload.</p> <div class="attention-actions svelte-nhph2d"><button class="btn btn-primary btn-lg svelte-nhph2d">Reload</button> <a class="btn btn-outline btn-lg svelte-nhph2d">Open dashboard</a></div></div></main></div>`);function y(t,h){o(h,!1),u();var y=v();p(`nhph2d`,e=>{i(()=>{f.title=`OpenPalm — needs attention`})});var b=l(y),x=l(b);_(l(x),{size:30}),a(2),m(x),m(b);var S=s(b,2),C=l(S),w=s(l(C),6),T=l(w),E=s(T,2);m(w),m(C),m(S),m(y),r(e=>d(E,`href`,e),[()=>g(`/host`)]),e(`click`,T,()=>window.location.reload()),n(t,y),c()}h([`click`]);export{y as component};
@@ -1,2 +1,2 @@
1
- import{B as e,C as t,F as n,I as r,J as i,L as a,M as o,N as s,O as c,P as l,S as u,U as d,V as f,X as p,a as m,at as h,b as g,bt as _,c as v,d as y,dt as b,et as x,f as S,h as C,ht as w,it as T,k as E,lt as D,mt as O,nt as k,p as A,r as j,rt as M,st as N,tt as P,w as F,xt as I,y as L,z as R}from"../chunks/BzIvC31O.js";import{l as z,n as B}from"../chunks/Be7qat4r.js";import"../chunks/xihTtKlq.js";import{c as V,d as H,i as ee,l as te,n as ne,o as re,r as ie,s as ae,y as U}from"../chunks/c0lkYAgh.js";import{t as oe}from"../chunks/DmFbAjwW.js";import{A as se,G as ce,J as le,K as ue,L as de,M as fe,U as pe,Y as me,Z as he,c as ge,j as _e,l as ve,q as ye,s as be,t as xe,u as W}from"../chunks/B_jhBV5Z.js";import{t as Se}from"../chunks/9mRSvTWj.js";import"../chunks/B_Sgy7qx.js";import{f as G,i as Ce,l as we,n as Te,o as Ee,p as De,r as Oe,s as ke,t as Ae}from"../chunks/BApqEZP1.js";import{t as je}from"../chunks/D5FtEngX.js";import{a as Me,c as Ne,d as Pe,i as Fe,l as Ie,n as K,o as Le,r as q,s as Re,t as ze,u as Be}from"../chunks/R6GPcDBF.js";import{n as Ve,t as He}from"../chunks/CUa5ff3d.js";var Ue=a(`<svg aria-hidden="true" viewBox="0 0 24 24"><path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M21 4L3 11l7 3 3 7z"></path><path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M21 4L10 14"></path></svg>`);function J(e,t){let n=m(t,`size`,3,20),r=m(t,`class`,3,``);var i=Ue();p(()=>{A(i,`width`,n()),A(i,`height`,n()),g(i,0,`s-icon ${r()??``}`)}),l(e,i)}var We=a(`<svg aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="1" fill="currentColor"></circle><path d="M8.5 8.5a5 5 0 0 0 0 7"></path><path d="M15.5 8.5a5 5 0 0 1 0 7"></path><path d="M5.6 5.6a9 9 0 0 0 0 12.8"></path><path d="M18.4 5.6a9 9 0 0 1 0 12.8"></path></svg>`);function Ge(e,t){let n=m(t,`size`,3,20),r=m(t,`class`,3,``);var i=We();p(()=>{A(i,`width`,n()),A(i,`height`,n()),g(i,0,`s-icon ${r()??``}`)}),l(e,i)}var Ke=r(`<button type="button"><!></button>`),Y=r(`<button type="button"><!></button>`),qe=r(`<button class="s-send-btn svelte-j7h4bp" type="button" aria-label="Stop generating"><!></button>`),Je=r(`<button class="s-send-btn svelte-j7h4bp" type="submit" aria-label="Send message"><!></button>`),Ye=r(`<form><textarea placeholder="Write a message..." rows="1" aria-label="Message input" autocomplete="off" spellcheck="false" class="svelte-j7h4bp"></textarea> <div class="s-footer svelte-j7h4bp"><div class="s-rule svelte-j7h4bp"></div> <!> <!> <!></div></form>`);function Xe(t,n){w(n,!0);let r=m(n,`questionPending`,3,!1),i=m(n,`voiceEnabled`,3,!1),a=m(n,`voiceActive`,3,!1),s=m(n,`draft`,15,``),c=m(n,`conversationEnabled`,3,!1),u=m(n,`conversationActive`,3,!1),h=D(void 0),_=b(()=>n.sending&&!r()),S=b(()=>s().trim().length>0),C=b(()=>d(_)&&!!n.onStop);function E(e){e.isComposing||e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),j())}function j(){let e=s().trim();!e||d(_)||(n.onSend(e),s(``),d(h)&&(d(h).style.height=`auto`))}function M(){d(h)&&(d(h).style.height=`auto`,d(h).style.height=`${Math.min(d(h).scrollHeight,window.innerHeight*.3)}px`)}var P=Ye();let F;var L=k(P);x(L),v(L,e=>N(h,e),()=>d(h));var R=T(L,2),z=T(k(R),2),B=t=>{var r=Ke();let i;je(k(r),{size:16}),I(r),p(()=>{i=g(r,1,`s-mic-btn svelte-j7h4bp`,null,i,{active:a()}),A(r,`aria-label`,a()?`Stop listening`:`Start listening`),A(r,`aria-pressed`,a())}),e(`click`,r,function(...e){n.onMicToggle?.apply(this,e)}),l(t,r)};o(z,e=>{i()&&e(B)});var V=T(z,2),H=t=>{var r=Y();let i;Ge(k(r),{size:16}),I(r),p(()=>{i=g(r,1,`s-mic-btn svelte-j7h4bp`,null,i,{active:u()}),A(r,`aria-label`,u()?`End conversation mode`:`Start conversation mode`),A(r,`aria-pressed`,u())}),e(`click`,r,function(...e){n.onConversationToggle?.apply(this,e)}),l(t,r)};o(V,e=>{c()&&e(H)});var ee=T(V,2),te=t=>{var r=qe();xe(k(r),{size:16}),I(r),e(`click`,r,function(...e){n.onStop?.apply(this,e)}),l(t,r)},ne=e=>{var t=Je();J(k(t),{size:16}),I(t),p(()=>t.disabled=!d(S)||d(_)),l(e,t)};o(ee,e=>{d(C)?e(te):e(ne,-1)}),I(R),I(P),p(()=>F=g(P,1,`s-composer svelte-j7h4bp`,null,F,{active:d(S),sending:n.sending})),f(`submit`,P,e=>{e.preventDefault(),j()}),e(`keydown`,L,E),e(`input`,L,M),y(L,s),l(t,P),O()}R([`keydown`,`input`,`click`]);var Ze=r(`<span class="voice-status-interim svelte-1ceij29"> </span> <button type="button" class="voice-status-end svelte-1ceij29" aria-label="End conversation mode">End</button>`,1),Qe=r(`<span class="voice-status-interim svelte-1ceij29"> </span>`),$e=r(`<span class="voice-status-transcribing svelte-1ceij29">transcribing…</span>`),et=r(`<button type="button" class="voice-status-autoplay svelte-1ceij29" aria-label="Resume paused audio" title="Audio was blocked by the browser. Click to resume."><!> <span>Audio paused — click to resume</span></button>`),tt=r(`<div class="voice-status-strip svelte-1ceij29"><!> <!></div>`),nt=r(`<!> <span class="sr-only svelte-1ceij29" aria-live="polite"> </span>`,1);function rt(t,n){w(n,!0);let r=m(n,`thinking`,3,!1),i=b(()=>H.status===`recording`&&H.interimTranscript.length>0),a=b(()=>H.status===`transcribing`),c=b(()=>H.autoplayBlocked),u=b(()=>H.conversationActive),f=b(()=>H.status===`speaking`?`speaking…`:H.status===`transcribing`||r()?`thinking…`:`listening…`),h=b(()=>d(u)||d(i)||d(a)||d(c)),g=b(()=>[d(u)?`Conversation: ${H.interimTranscript||d(f)}`:d(i)?`Recording: ${H.interimTranscript}`:d(a)?`Transcribing`:``,d(c)?`Audio paused — click to resume`:``].filter(Boolean).join(`. `));var v=nt(),y=M(v),x=t=>{var n=tt(),r=k(n),m=t=>{var n=Ze(),r=M(n),i=k(r,!0);I(r);var a=T(r,2);p(()=>s(i,H.interimTranscript||d(f))),e(`click`,a,()=>V()),l(t,n)},h=e=>{var t=Qe(),n=k(t,!0);I(t),p(()=>s(n,H.interimTranscript)),l(e,t)},g=e=>{l(e,$e())};o(r,e=>{d(u)?e(m):d(i)?e(h,1):d(a)&&e(g,2)});var v=T(r,2),y=t=>{var n=et();Te(k(n),{size:14}),_(2),I(n),e(`click`,n,()=>ie()),l(t,n)};o(v,e=>{d(c)&&e(y)}),I(n),l(t,n)};o(y,e=>{d(h)&&e(x)});var S=T(y,2),C=k(S,!0);I(S),p(()=>s(C,d(g))),l(t,v),O()}R([`click`]);var it=0,at=r(`<span class="tool-log-time svelte-1wgps4r"> </span>`),ot=r(`<span class="tool-log-status svelte-1wgps4r"> </span>`),st=r(`<pre> </pre>`),ct=r(`<div> </div>`),lt=r(`<div class="tool-log-row svelte-1wgps4r"><div class="tool-log-label svelte-1wgps4r"> </div> <div class="tool-log-value svelte-1wgps4r"><!></div></div>`),X=r(`<div class="tool-log-details svelte-1wgps4r"></div>`),ut=r(`<li><button class="tool-log-summary svelte-1wgps4r" type="button"><span class="tool-log-icon svelte-1wgps4r" aria-hidden="true"><!></span> <span class="tool-log-main svelte-1wgps4r"><span class="tool-log-title svelte-1wgps4r"> </span> <!></span> <!> <span aria-hidden="true"><svg width="11" height="11" viewBox="0 0 12 12" fill="none" class="svelte-1wgps4r"><path d="M3 4.5 6 7.5 9 4.5" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" class="svelte-1wgps4r"></path></svg></span></button> <!></li>`),dt=r(`<section class="tool-log svelte-1wgps4r"><h2 class="tool-log-heading svelte-1wgps4r">activity</h2> <div class="tool-log-live svelte-1wgps4r" aria-live="polite" aria-atomic="true"> </div> <ul class="tool-log-list svelte-1wgps4r"></ul></section>`);function ft(t,r){w(r,!0),it+=1;let i=`tool-log-heading-${it}`,a=D(h({}));function c(e){N(a,{...d(a),[e]:!d(a)[e]},!0)}function u(e){return e!==`completed`&&e!==`error`&&e!==`failed`}function f(e){return e===`error`||e===`failed`}function m(e){if(e<=0)return!1;let t=r.items[e].turnKey,n=r.items[e-1].turnKey;return t===void 0||n===void 0?!1:t!==n}let _=b(()=>r.items.filter(e=>f(e.status)).map(e=>`${pe(e)} failed`).join(`, `));var v=n(),y=M(v),x=t=>{var n=dt(),h=k(n),v=T(h,2),y=k(v,!0);I(v);var x=T(v,2);E(x,23,()=>r.items,e=>e.id,(t,n,r)=>{let i=b(()=>me(d(n).tool,d(n).status)),h=b(()=>!!d(a)[d(n).id]),_=b(()=>u(d(n).status)),v=b(()=>f(d(n).status)),y=b(()=>ce(d(n).updatedAt));var x=ut();let S;var C=k(x),w=k(C),D=k(w),O=e=>{Ve(e,{size:15})},j=e=>{Ne(e,{size:15})},M=e=>{Ie(e,{size:15})},N=e=>{Re(e,{size:15})},P=e=>{Le(e,{size:15})},F=e=>{Me(e,{size:15})},L=e=>{Fe(e,{size:15})},R=e=>{q(e,{size:15})},z=e=>{He(e,{size:15})},B=e=>{oe(e,{size:15})},V=e=>{K(e,{size:15})};o(D,e=>{d(i)===`alert`?e(O):d(i)===`done-circle`?e(j,1):d(i)===`refresh`?e(M,2):d(i)===`terminal`?e(N,3):d(i)===`search`?e(P,4):d(i)===`file`?e(F,5):d(i)===`edit`?e(L,6):d(i)===`link`?e(R,7):d(i)===`agent`?e(z,8):d(i)===`done`?e(B,9):e(V,-1)}),I(w);var H=T(w,2),ee=k(H),te=k(ee,!0);I(ee);var ne=T(ee,2),re=e=>{var t=at(),n=k(t,!0);I(t),p(()=>s(n,d(y))),l(e,t)};o(ne,e=>{d(y)&&e(re)}),I(H);var ie=T(H,2),ae=e=>{var t=ot(),r=k(t,!0);I(t),p(e=>s(r,e),[()=>he(d(n).status)]),l(e,t)};o(ie,e=>{(d(_)||d(v))&&e(ae)});var U=T(ie,2);let se;I(C);var de=T(C,2),fe=e=>{var t=X();E(t,21,()=>le(d(n)),e=>`${d(n).id}:${e.label}`,(e,t)=>{var n=lt(),r=k(n),i=k(r,!0);I(r);var a=T(r,2),c=k(a),u=e=>{var n=st();let r;var i=k(n,!0);I(n),p(()=>{r=g(n,1,`svelte-1wgps4r`,null,r,{"tool-log-error":d(t).tone===`error`}),s(i,d(t).value)}),l(e,n)},f=b(()=>d(t).value.includes(`
1
+ import{B as e,C as t,F as n,I as r,J as i,L as a,M as o,N as s,O as c,P as l,S as u,U as d,V as f,X as p,a as m,at as h,b as g,bt as _,c as v,d as y,dt as b,et as x,f as S,h as C,ht as w,it as T,k as E,lt as D,mt as O,nt as k,p as A,r as j,rt as M,st as N,tt as P,w as F,xt as I,y as L,z as R}from"../chunks/BzIvC31O.js";import{l as z,n as B}from"../chunks/CItB5oU8.js";import"../chunks/xihTtKlq.js";import{c as V,d as H,i as ee,l as te,n as ne,o as re,r as ie,s as ae,y as U}from"../chunks/c0lkYAgh.js";import{t as oe}from"../chunks/DmFbAjwW.js";import{A as se,G as ce,J as le,K as ue,L as de,M as fe,U as pe,Y as me,Z as he,c as ge,j as _e,l as ve,q as ye,s as be,t as xe,u as W}from"../chunks/B_jhBV5Z.js";import{t as Se}from"../chunks/DuFsBiCS.js";import"../chunks/C3ad4Ajc.js";import{f as G,i as Ce,l as we,n as Te,o as Ee,p as De,r as Oe,s as ke,t as Ae}from"../chunks/BApqEZP1.js";import{t as je}from"../chunks/D5FtEngX.js";import{a as Me,c as Ne,d as Pe,i as Fe,l as Ie,n as K,o as Le,r as q,s as Re,t as ze,u as Be}from"../chunks/R6GPcDBF.js";import{n as Ve,t as He}from"../chunks/CUa5ff3d.js";var Ue=a(`<svg aria-hidden="true" viewBox="0 0 24 24"><path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M21 4L3 11l7 3 3 7z"></path><path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M21 4L10 14"></path></svg>`);function J(e,t){let n=m(t,`size`,3,20),r=m(t,`class`,3,``);var i=Ue();p(()=>{A(i,`width`,n()),A(i,`height`,n()),g(i,0,`s-icon ${r()??``}`)}),l(e,i)}var We=a(`<svg aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="1" fill="currentColor"></circle><path d="M8.5 8.5a5 5 0 0 0 0 7"></path><path d="M15.5 8.5a5 5 0 0 1 0 7"></path><path d="M5.6 5.6a9 9 0 0 0 0 12.8"></path><path d="M18.4 5.6a9 9 0 0 1 0 12.8"></path></svg>`);function Ge(e,t){let n=m(t,`size`,3,20),r=m(t,`class`,3,``);var i=We();p(()=>{A(i,`width`,n()),A(i,`height`,n()),g(i,0,`s-icon ${r()??``}`)}),l(e,i)}var Ke=r(`<button type="button"><!></button>`),Y=r(`<button type="button"><!></button>`),qe=r(`<button class="s-send-btn svelte-j7h4bp" type="button" aria-label="Stop generating"><!></button>`),Je=r(`<button class="s-send-btn svelte-j7h4bp" type="submit" aria-label="Send message"><!></button>`),Ye=r(`<form><textarea placeholder="Write a message..." rows="1" aria-label="Message input" autocomplete="off" spellcheck="false" class="svelte-j7h4bp"></textarea> <div class="s-footer svelte-j7h4bp"><div class="s-rule svelte-j7h4bp"></div> <!> <!> <!></div></form>`);function Xe(t,n){w(n,!0);let r=m(n,`questionPending`,3,!1),i=m(n,`voiceEnabled`,3,!1),a=m(n,`voiceActive`,3,!1),s=m(n,`draft`,15,``),c=m(n,`conversationEnabled`,3,!1),u=m(n,`conversationActive`,3,!1),h=D(void 0),_=b(()=>n.sending&&!r()),S=b(()=>s().trim().length>0),C=b(()=>d(_)&&!!n.onStop);function E(e){e.isComposing||e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),j())}function j(){let e=s().trim();!e||d(_)||(n.onSend(e),s(``),d(h)&&(d(h).style.height=`auto`))}function M(){d(h)&&(d(h).style.height=`auto`,d(h).style.height=`${Math.min(d(h).scrollHeight,window.innerHeight*.3)}px`)}var P=Ye();let F;var L=k(P);x(L),v(L,e=>N(h,e),()=>d(h));var R=T(L,2),z=T(k(R),2),B=t=>{var r=Ke();let i;je(k(r),{size:16}),I(r),p(()=>{i=g(r,1,`s-mic-btn svelte-j7h4bp`,null,i,{active:a()}),A(r,`aria-label`,a()?`Stop listening`:`Start listening`),A(r,`aria-pressed`,a())}),e(`click`,r,function(...e){n.onMicToggle?.apply(this,e)}),l(t,r)};o(z,e=>{i()&&e(B)});var V=T(z,2),H=t=>{var r=Y();let i;Ge(k(r),{size:16}),I(r),p(()=>{i=g(r,1,`s-mic-btn svelte-j7h4bp`,null,i,{active:u()}),A(r,`aria-label`,u()?`End conversation mode`:`Start conversation mode`),A(r,`aria-pressed`,u())}),e(`click`,r,function(...e){n.onConversationToggle?.apply(this,e)}),l(t,r)};o(V,e=>{c()&&e(H)});var ee=T(V,2),te=t=>{var r=qe();xe(k(r),{size:16}),I(r),e(`click`,r,function(...e){n.onStop?.apply(this,e)}),l(t,r)},ne=e=>{var t=Je();J(k(t),{size:16}),I(t),p(()=>t.disabled=!d(S)||d(_)),l(e,t)};o(ee,e=>{d(C)?e(te):e(ne,-1)}),I(R),I(P),p(()=>F=g(P,1,`s-composer svelte-j7h4bp`,null,F,{active:d(S),sending:n.sending})),f(`submit`,P,e=>{e.preventDefault(),j()}),e(`keydown`,L,E),e(`input`,L,M),y(L,s),l(t,P),O()}R([`keydown`,`input`,`click`]);var Ze=r(`<span class="voice-status-interim svelte-1ceij29"> </span> <button type="button" class="voice-status-end svelte-1ceij29" aria-label="End conversation mode">End</button>`,1),Qe=r(`<span class="voice-status-interim svelte-1ceij29"> </span>`),$e=r(`<span class="voice-status-transcribing svelte-1ceij29">transcribing…</span>`),et=r(`<button type="button" class="voice-status-autoplay svelte-1ceij29" aria-label="Resume paused audio" title="Audio was blocked by the browser. Click to resume."><!> <span>Audio paused — click to resume</span></button>`),tt=r(`<div class="voice-status-strip svelte-1ceij29"><!> <!></div>`),nt=r(`<!> <span class="sr-only svelte-1ceij29" aria-live="polite"> </span>`,1);function rt(t,n){w(n,!0);let r=m(n,`thinking`,3,!1),i=b(()=>H.status===`recording`&&H.interimTranscript.length>0),a=b(()=>H.status===`transcribing`),c=b(()=>H.autoplayBlocked),u=b(()=>H.conversationActive),f=b(()=>H.status===`speaking`?`speaking…`:H.status===`transcribing`||r()?`thinking…`:`listening…`),h=b(()=>d(u)||d(i)||d(a)||d(c)),g=b(()=>[d(u)?`Conversation: ${H.interimTranscript||d(f)}`:d(i)?`Recording: ${H.interimTranscript}`:d(a)?`Transcribing`:``,d(c)?`Audio paused — click to resume`:``].filter(Boolean).join(`. `));var v=nt(),y=M(v),x=t=>{var n=tt(),r=k(n),m=t=>{var n=Ze(),r=M(n),i=k(r,!0);I(r);var a=T(r,2);p(()=>s(i,H.interimTranscript||d(f))),e(`click`,a,()=>V()),l(t,n)},h=e=>{var t=Qe(),n=k(t,!0);I(t),p(()=>s(n,H.interimTranscript)),l(e,t)},g=e=>{l(e,$e())};o(r,e=>{d(u)?e(m):d(i)?e(h,1):d(a)&&e(g,2)});var v=T(r,2),y=t=>{var n=et();Te(k(n),{size:14}),_(2),I(n),e(`click`,n,()=>ie()),l(t,n)};o(v,e=>{d(c)&&e(y)}),I(n),l(t,n)};o(y,e=>{d(h)&&e(x)});var S=T(y,2),C=k(S,!0);I(S),p(()=>s(C,d(g))),l(t,v),O()}R([`click`]);var it=0,at=r(`<span class="tool-log-time svelte-1wgps4r"> </span>`),ot=r(`<span class="tool-log-status svelte-1wgps4r"> </span>`),st=r(`<pre> </pre>`),ct=r(`<div> </div>`),lt=r(`<div class="tool-log-row svelte-1wgps4r"><div class="tool-log-label svelte-1wgps4r"> </div> <div class="tool-log-value svelte-1wgps4r"><!></div></div>`),X=r(`<div class="tool-log-details svelte-1wgps4r"></div>`),ut=r(`<li><button class="tool-log-summary svelte-1wgps4r" type="button"><span class="tool-log-icon svelte-1wgps4r" aria-hidden="true"><!></span> <span class="tool-log-main svelte-1wgps4r"><span class="tool-log-title svelte-1wgps4r"> </span> <!></span> <!> <span aria-hidden="true"><svg width="11" height="11" viewBox="0 0 12 12" fill="none" class="svelte-1wgps4r"><path d="M3 4.5 6 7.5 9 4.5" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" class="svelte-1wgps4r"></path></svg></span></button> <!></li>`),dt=r(`<section class="tool-log svelte-1wgps4r"><h2 class="tool-log-heading svelte-1wgps4r">activity</h2> <div class="tool-log-live svelte-1wgps4r" aria-live="polite" aria-atomic="true"> </div> <ul class="tool-log-list svelte-1wgps4r"></ul></section>`);function ft(t,r){w(r,!0),it+=1;let i=`tool-log-heading-${it}`,a=D(h({}));function c(e){N(a,{...d(a),[e]:!d(a)[e]},!0)}function u(e){return e!==`completed`&&e!==`error`&&e!==`failed`}function f(e){return e===`error`||e===`failed`}function m(e){if(e<=0)return!1;let t=r.items[e].turnKey,n=r.items[e-1].turnKey;return t===void 0||n===void 0?!1:t!==n}let _=b(()=>r.items.filter(e=>f(e.status)).map(e=>`${pe(e)} failed`).join(`, `));var v=n(),y=M(v),x=t=>{var n=dt(),h=k(n),v=T(h,2),y=k(v,!0);I(v);var x=T(v,2);E(x,23,()=>r.items,e=>e.id,(t,n,r)=>{let i=b(()=>me(d(n).tool,d(n).status)),h=b(()=>!!d(a)[d(n).id]),_=b(()=>u(d(n).status)),v=b(()=>f(d(n).status)),y=b(()=>ce(d(n).updatedAt));var x=ut();let S;var C=k(x),w=k(C),D=k(w),O=e=>{Ve(e,{size:15})},j=e=>{Ne(e,{size:15})},M=e=>{Ie(e,{size:15})},N=e=>{Re(e,{size:15})},P=e=>{Le(e,{size:15})},F=e=>{Me(e,{size:15})},L=e=>{Fe(e,{size:15})},R=e=>{q(e,{size:15})},z=e=>{He(e,{size:15})},B=e=>{oe(e,{size:15})},V=e=>{K(e,{size:15})};o(D,e=>{d(i)===`alert`?e(O):d(i)===`done-circle`?e(j,1):d(i)===`refresh`?e(M,2):d(i)===`terminal`?e(N,3):d(i)===`search`?e(P,4):d(i)===`file`?e(F,5):d(i)===`edit`?e(L,6):d(i)===`link`?e(R,7):d(i)===`agent`?e(z,8):d(i)===`done`?e(B,9):e(V,-1)}),I(w);var H=T(w,2),ee=k(H),te=k(ee,!0);I(ee);var ne=T(ee,2),re=e=>{var t=at(),n=k(t,!0);I(t),p(()=>s(n,d(y))),l(e,t)};o(ne,e=>{d(y)&&e(re)}),I(H);var ie=T(H,2),ae=e=>{var t=ot(),r=k(t,!0);I(t),p(e=>s(r,e),[()=>he(d(n).status)]),l(e,t)};o(ie,e=>{(d(_)||d(v))&&e(ae)});var U=T(ie,2);let se;I(C);var de=T(C,2),fe=e=>{var t=X();E(t,21,()=>le(d(n)),e=>`${d(n).id}:${e.label}`,(e,t)=>{var n=lt(),r=k(n),i=k(r,!0);I(r);var a=T(r,2),c=k(a),u=e=>{var n=st();let r;var i=k(n,!0);I(n),p(()=>{r=g(n,1,`svelte-1wgps4r`,null,r,{"tool-log-error":d(t).tone===`error`}),s(i,d(t).value)}),l(e,n)},f=b(()=>d(t).value.includes(`
2
2
  `)||d(t).value.length>80),m=e=>{var n=ct();let r;var i=k(n,!0);I(n),p(()=>{r=g(n,1,`svelte-1wgps4r`,null,r,{"tool-log-error":d(t).tone===`error`}),s(i,d(t).value)}),l(e,n)};o(c,e=>{d(f)?e(u):e(m,-1)}),I(a),I(n),p(()=>s(i,d(t).label)),l(e,n)}),I(t),l(e,t)};o(de,e=>{d(h)&&e(fe)}),I(x),p((e,t,n,r)=>{S=g(x,1,`tool-log-item svelte-1wgps4r`,null,S,e),A(C,`aria-expanded`,d(h)),A(C,`aria-label`,t),A(C,`title`,n),s(te,r),se=g(U,1,`tool-log-chevron svelte-1wgps4r`,null,se,{open:d(h)})},[()=>({running:d(_),failed:d(v),"new-turn":m(d(r))}),()=>ye(d(n)),()=>ue(d(n)),()=>pe(d(n))]),e(`click`,C,()=>c(d(n).id)),l(t,x)}),I(x),I(n),p(()=>{A(n,`aria-labelledby`,i),A(h,`id`,i),s(y,d(_))}),l(t,n)};o(y,e=>{r.items.length>0&&e(x)}),l(t,v),O()}R([`click`]);var pt=r(`<svg width="0" height="0" style="position:absolute" aria-hidden="true" class="svelte-3vj2oe"><defs class="svelte-3vj2oe"><filter id="s-brush" x="-20%" y="-20%" width="140%" height="140%" class="svelte-3vj2oe"><feTurbulence type="fractalNoise" baseFrequency="0.018 0.026" numOctaves="2" seed="7" result="t" class="svelte-3vj2oe"></feTurbulence><feDisplacementMap in="SourceGraphic" in2="t" scale="3.4" xChannelSelector="R" yChannelSelector="G" class="svelte-3vj2oe"></feDisplacementMap></filter><filter id="s-wave-brush" filterUnits="userSpaceOnUse" x="-10" y="-10" width="120" height="120" class="svelte-3vj2oe"><feTurbulence type="fractalNoise" baseFrequency="0.026 0.032" numOctaves="1" seed="3" result="nA" class="svelte-3vj2oe"></feTurbulence><feDisplacementMap in="SourceGraphic" in2="nA" scale="2.4" xChannelSelector="R" yChannelSelector="G" result="dA" class="svelte-3vj2oe"></feDisplacementMap><feTurbulence type="fractalNoise" baseFrequency="0.034 0.028" numOctaves="1" seed="17" result="nB" class="svelte-3vj2oe"></feTurbulence><feDisplacementMap in="SourceGraphic" in2="nB" scale="3.0" xChannelSelector="R" yChannelSelector="G" result="dB" class="svelte-3vj2oe"></feDisplacementMap><feMerge result="strokes" class="svelte-3vj2oe"><feMergeNode in="dA" class="svelte-3vj2oe"></feMergeNode><feMergeNode in="dB" class="svelte-3vj2oe"></feMergeNode></feMerge><feTurbulence type="turbulence" baseFrequency="0.7 0.7" numOctaves="2" seed="7" result="g" class="svelte-3vj2oe"></feTurbulence><feComponentTransfer in="g" result="gm" class="svelte-3vj2oe"><feFuncA type="linear" slope="0.55" intercept="0.52" class="svelte-3vj2oe"></feFuncA></feComponentTransfer><feComposite in="strokes" in2="gm" operator="in" class="svelte-3vj2oe"></feComposite></filter><filter id="s-bloom" x="-40%" y="-40%" width="180%" height="180%" class="svelte-3vj2oe"><feGaussianBlur stdDeviation="2.4" class="svelte-3vj2oe"></feGaussianBlur></filter></defs></svg> <div id="s-presence"><svg class="s-enso svelte-3vj2oe" viewBox="0 0 100 100" aria-hidden="true"><path class="s-echo svelte-3vj2oe"></path><path class="s-ripple s-ripple-listen s-l1 svelte-3vj2oe"></path><path class="s-ripple s-ripple-listen s-l2 svelte-3vj2oe"></path><path class="s-wet svelte-3vj2oe"></path><path class="s-draw svelte-3vj2oe"></path><path class="s-dry svelte-3vj2oe"></path><g class="s-waveform svelte-3vj2oe" aria-hidden="true"><line class="s-waveform-bar s-wb1 svelte-3vj2oe" x1="18" y1="38" x2="18" y2="62"></line><line class="s-waveform-bar s-wb2 svelte-3vj2oe" x1="32" y1="24" x2="32" y2="76"></line><line class="s-waveform-bar s-wb3 svelte-3vj2oe" x1="46" y1="12" x2="46" y2="88"></line><line class="s-waveform-bar s-wb4 svelte-3vj2oe" x1="60" y1="18" x2="60" y2="82"></line><line class="s-waveform-bar s-wb5 svelte-3vj2oe" x1="74" y1="32" x2="74" y2="68"></line></g></svg></div>`,1);function mt(t,n){w(n,!0);let r=D(void 0),i=D(void 0),a=D(void 0),o=D(void 0),s=D(void 0),c=D(void 0),u=0,f=b(()=>!n.sending&&n.voiceStatus!==`speaking`);function m(){!d(a)||!d(r)||(d(r).style.opacity=`0`,d(a).style.transition=`none`,d(a).style.opacity=`1`,d(a).style.strokeDasharray=String(u),d(a).style.strokeDashoffset=String(u),d(a).getBoundingClientRect(),d(a).style.transition=`stroke-dashoffset var(--s-t-draw) var(--s-ease-draw)`,d(a).style.strokeDashoffset=`0`)}function h(){!d(a)||!d(r)||(d(a).style.transition=`opacity 0.4s ease`,d(a).style.opacity=`0`,d(r).style.removeProperty(`opacity`))}j(()=>{[d(r),d(i),d(o),d(a),d(s),d(c)].forEach(e=>{e?.setAttribute(`d`,`M60.1244 5L62.0057 27.9635L64.4287 9.00887L79.3326 5.24671L79.9277 25.889L81.4519 17.468L95 13.7365L91.3023 74.2325L80.2203 94.5104L76.8802 92.6756L87.5529 73.1466L90.8727 18.8331L84.7715 20.5135L80.424 44.5332L76.6468 44.2474L75.6626 10.1107L67.8764 12.0762L63.4799 46.4686L59.6931 46.3822L56.7419 10.3574L47.8228 13.7251V50.3803L44.0772 50.8677L34.1996 13.3604L26.7978 17.3103C28.0204 24.0062 29.6096 35.4296 30.9221 45.4104C31.6281 50.779 32.2566 55.7505 32.7086 59.3796C32.9346 61.1942 33.1165 62.6735 33.2419 63.6994C33.4531 65.4268 33.66 67.1548 33.8682 68.8826L12.9705 58.0378L9.48426 67.1466L36.7143 92.186L34.1399 95L5 68.2044L10.9401 52.6845L29.2165 62.169C29.1313 61.4788 29.0351 60.7026 28.9293 59.8527C28.478 56.2295 27.8507 51.2671 27.1461 45.9095C25.7337 35.1688 24.0214 22.9203 22.7978 16.6515L22.5269 15.2638L36.6546 7.72465L44.0141 35.6703V11.0829L60.1244 5Z`)});try{u=d(a).getTotalLength()}catch{u=400}m(),setTimeout(()=>{h()},2400)});var y=pt(),x=T(M(y),2);let S;var C=k(x),E=k(C);v(E,e=>N(o,e),()=>d(o));var P=T(E);v(P,e=>N(s,e),()=>d(s));var F=T(P);v(F,e=>N(c,e),()=>d(c));var R=T(F);v(R,e=>N(i,e),()=>d(i));var z=T(R);v(z,e=>N(a,e),()=>d(a)),v(T(z),e=>N(r,e),()=>d(r)),_(),I(C),I(x),p(()=>{S=g(x,1,`s-presence svelte-3vj2oe`,null,S,{breathing:d(f),listening:n.voiceStatus===`recording`,speaking:n.voiceStatus===`speaking`,"s-presence--mic":n.voiceEnabled,processing:n.sending}),L(x,n.height==null?void 0:`--s-enso-size: ${n.height}px`),A(x,`role`,n.voiceEnabled?`button`:void 0),A(x,`tabindex`,n.voiceEnabled?0:void 0),A(x,`aria-label`,n.voiceEnabled?n.voiceStatus===`recording`?`Stop listening`:`Speak to the agent`:void 0),A(x,`aria-pressed`,n.voiceEnabled?n.voiceStatus===`recording`:void 0)}),e(`click`,x,function(...e){(n.voiceEnabled?n.onToggle:void 0)?.apply(this,e)}),e(`keydown`,x,function(...e){(n.voiceEnabled?e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),n.onToggle())}:void 0)?.apply(this,e)}),l(t,y),O()}R([`click`,`keydown`]);var Z=r(`<p class="s-action-body svelte-141raqu"> </p>`),ht=r(`<code class="s-action-code svelte-141raqu"> </code>`),gt=r(`<code class="s-action-code svelte-141raqu"> </code>`),_t=r(`<p class="s-action-body svelte-141raqu"> </p>`),vt=r(`<div class="s-action-card svelte-141raqu" role="group" aria-label="Permission request"><div class="s-action-kicker svelte-141raqu">permission request</div> <div class="s-action-title svelte-141raqu"> </div> <!> <!> <!> <!> <div class="s-action-btns svelte-141raqu"><button class="s-action-btn s-action-btn-primary svelte-141raqu" type="button"> </button> <button class="s-action-btn svelte-141raqu" type="button"> </button> <button class="s-action-btn s-action-btn-danger svelte-141raqu" type="button"> </button></div></div>`);function yt(t,n){w(n,!0);let r=b(()=>n.permission.status===`submitting`||n.permission.status===`resolved`);function i(e,t=160){return e.length>t?`${e.slice(0,t-1)}…`:e}var a=vt(),c=T(k(a),2),u=k(c,!0);I(c);var f=T(c,2),m=e=>{var t=Z(),r=k(t,!0);I(t),p(e=>s(r,e),[()=>i(n.permission.detail)]),l(e,t)};o(f,e=>{n.permission.detail&&e(m)});var h=T(f,2),g=e=>{var t=ht(),r=k(t,!0);I(t),p(e=>s(r,e),[()=>n.permission.patterns.join(`, `)]),l(e,t)};o(h,e=>{n.permission.patterns.length>0&&e(g)});var _=T(h,2),v=e=>{var t=gt(),r=k(t,!0);I(t),p(e=>s(r,e),[()=>n.permission.always.join(`, `)]),l(e,t)};o(_,e=>{n.permission.always.length>0&&e(v)});var y=T(_,2),x=e=>{var t=_t(),r=k(t,!0);I(t),p(()=>s(r,n.permission.message)),l(e,t)};o(y,e=>{n.permission.message&&e(x)});var S=T(y,2),C=k(S),E=k(C,!0);I(C);var D=T(C,2),A=k(D,!0);I(D);var j=T(D,2),M=k(j,!0);I(j),I(S),I(a),p(()=>{s(u,n.permission.permission),C.disabled=d(r),s(E,n.actionInFlight===`once`?`sending…`:`allow this once`),D.disabled=d(r),s(A,n.actionInFlight===`always`?`sending…`:`always allow`),j.disabled=d(r),s(M,n.actionInFlight===`reject`?`sending…`:`deny`)}),e(`click`,C,()=>n.onReply(`once`)),e(`click`,D,()=>n.onReply(`always`)),e(`click`,j,()=>n.onReply(`reject`)),l(t,a),O()}R([`click`]);var bt=r(`<button class="s-action-btn svelte-11d88fd" type="button"> </button>`),xt=r(`<div class="s-action-options svelte-11d88fd"></div>`),St=r(`<p class="s-action-question svelte-11d88fd"> </p> <!> <p class="s-action-hint svelte-11d88fd">or write your answer below</p>`,1),Ct=r(`<div class="s-action-kicker svelte-11d88fd"> </div>`),wt=r(`<button type="button"> </button>`),Tt=r(`<div class="s-action-options svelte-11d88fd"></div>`),Et=r(`<div class="s-question-item svelte-11d88fd"><!> <p class="s-action-question svelte-11d88fd"> </p> <!> <input class="s-question-input svelte-11d88fd" type="text" placeholder="Type an answer"/></div>`),Dt=r(`<div class="s-multi-questions svelte-11d88fd"></div> <div class="s-action-btns svelte-11d88fd"><button class="s-action-btn s-action-btn-primary svelte-11d88fd" type="button">submit answers</button> <button class="s-action-btn svelte-11d88fd" type="button">can't answer</button></div>`,1),Ot=r(`<div class="s-action-card svelte-11d88fd" role="group" aria-label="Assistant question"><div class="s-action-kicker svelte-11d88fd">a question for you</div> <!></div>`);function kt(t,n){w(n,!0);let r=b(()=>n.question.status===`submitting`||n.question.status===`answered`||n.question.status===`rejected`);var i=Ot(),a=T(k(i),2),c=t=>{var i=St(),a=M(i),c=k(a,!0);I(a);var u=T(a,2),f=t=>{var i=xt();E(i,23,()=>n.question.questions[0].options,(e,t)=>`${n.question.requestID}:${t}`,(t,i)=>{var a=bt(),o=k(a,!0);I(a),p(()=>{a.disabled=d(r),s(o,d(i).label)}),e(`click`,a,()=>n.onOption(d(i).label)),l(t,a)}),I(i),l(t,i)};o(u,e=>{n.question.questions[0].options.length>0&&e(f)}),_(2),p(()=>s(c,n.question.questions[0].question)),l(t,i)},u=t=>{var i=Dt(),a=M(i);E(a,23,()=>n.question.questions,(e,t)=>`${n.question.requestID}:question:${t}`,(t,i,a)=>{var c=Et(),u=k(c),f=e=>{var t=Ct(),n=k(t,!0);I(t),p(()=>s(n,d(i).header)),l(e,t)};o(u,e=>{d(i).header&&e(f)});var m=T(u,2),h=k(m,!0);I(m);var _=T(m,2),v=t=>{var o=Tt();E(o,23,()=>d(i).options,(e,t)=>`${n.question.requestID}:${d(a)}:${t}`,(t,i)=>{var o=wt();let c;var u=k(o,!0);I(o),p(()=>{c=g(o,1,`s-action-btn svelte-11d88fd`,null,c,{selected:n.question.answers[d(a)]===d(i).label}),o.disabled=d(r),s(u,d(i).label)}),e(`click`,o,()=>n.onSelect(d(a),d(i).label)),l(t,o)}),I(o),l(t,o)};o(_,e=>{d(i).options.length>0&&e(v)});var y=T(_,2);S(y),I(c),p(()=>{s(h,d(i).question),C(y,n.question.answers[d(a)]),y.disabled=d(r)}),e(`input`,y,e=>n.onDraft(d(a),e.currentTarget.value)),l(t,c)}),I(a);var c=T(a,2),u=k(c),f=T(u,2);I(c),p(()=>{u.disabled=d(r),f.disabled=d(r)}),e(`click`,u,()=>n.onSubmit()),e(`click`,f,()=>n.onReject()),l(t,i)};o(a,e=>{n.question.questions.length===1&&n.question.questions[0]?e(c):e(u,-1)}),I(i),l(t,i),O()}R([`click`,`input`]);function At(e,t,n){return n-(e+t)<120}function jt(e,t,n,r,i){return At(n,r,i)?!0:n<t?!1:e}var Mt=r(`<div class="s-glyph-cell svelte-23dtxz"><span class="s-glyph-label svelte-23dtxz">voice</span> <button class="s-glyph-btn svelte-23dtxz" type="button"><!></button></div>`),Nt=r(`<div class="s-loading svelte-23dtxz" aria-live="polite"><span class="s-loading-text svelte-23dtxz">loading…</span></div>`),Pt=r(`<div class="turn master"><div class="master-words settled s-streaming svelte-23dtxz"><div class="markdown-body"></div></div></div>`),Ft=r(`<div class="s-thinking svelte-23dtxz"><span class="s-thinking-text svelte-23dtxz">thinking…</span></div>`),It=r(`<div class="s-pending svelte-23dtxz" aria-live="polite"><!> <!> <!></div>`),Lt=r(`<button class="s-error-reconnect svelte-23dtxz" type="button">retry</button>`),Rt=r(`<div class="s-error-banner svelte-23dtxz" role="alert"><span class="s-error-msg svelte-23dtxz"> </span> <!> <button class="s-error-reconnect svelte-23dtxz" type="button">reconnect</button> <button class="s-error-dismiss svelte-23dtxz" type="button" aria-label="Dismiss">×</button></div>`),zt=r(`<button class="s-jump-latest svelte-23dtxz" type="button" aria-label="Jump to latest">↓ latest</button>`),Bt=r(`<div class="s-veil-sub svelte-23dtxz"> </div>`),Vt=r(`<a class="s-endpoint-manage svelte-23dtxz">manage this assistant</a>`),Ht=r(`<div class="s-endpoint-item svelte-23dtxz"><button type="button"><div class="s-endpoint-label svelte-23dtxz"> </div> <div class="s-endpoint-url svelte-23dtxz"> </div></button> <!></div>`),Ut=r(`<button class="s-tool-scrim svelte-23dtxz" type="button" aria-label="Close activity overlay"></button>`),Wt=r(`<p class="s-tool-drawer-empty svelte-23dtxz">Steps the assistant takes — searches, edits, commands — will show up here as it works.</p>`),Gt=r(`<h1 class="sr-only svelte-23dtxz">Chat</h1> <div class="s-field svelte-23dtxz"></div> <div class="s-moon svelte-23dtxz"></div> <div class="s-grain svelte-23dtxz"></div> <div class="s-corner s-corner-left svelte-23dtxz"><!></div> <div><div class="s-glyph-cell svelte-23dtxz"><button class="s-glyph-btn svelte-23dtxz" type="button" aria-label="Advanced mode"><!></button> <span class="s-glyph-label svelte-23dtxz">advanced</span></div></div> <div class="s-corner s-corner-bottom-left svelte-23dtxz"><!> <div class="s-glyph-cell svelte-23dtxz"><span class="s-glyph-label svelte-23dtxz">theme</span> <button class="s-glyph-btn s-orb-btn svelte-23dtxz" type="button"><!></button></div></div> <div><div class="s-glyph-cell s-tool-toggle-cell svelte-23dtxz"><span class="s-glyph-label svelte-23dtxz">activity</span> <button class="s-glyph-btn svelte-23dtxz" type="button" aria-haspopup="dialog" aria-controls="s-tool-drawer" aria-label="Activity"><!></button></div> <div class="s-glyph-cell svelte-23dtxz"><span class="s-glyph-label svelte-23dtxz"> </span> <button class="s-glyph-btn svelte-23dtxz" type="button" aria-haspopup="dialog" aria-controls="s-garden-veil"><!></button></div></div> <aside aria-label="Assistant activity"><!></aside> <main class="s-scroll svelte-23dtxz" id="s-scroll" aria-label="Chat history"><div class="s-thread svelte-23dtxz" id="s-thread"><!> <!> <!> <div aria-hidden="true" style="height:1px"></div></div></main> <!> <!> <div class="s-base svelte-23dtxz"><!> <!></div> <div id="s-garden-veil" role="dialog" aria-modal="true" aria-label="Conversations and assistant"><div class="s-veil-head svelte-23dtxz"><div><div class="s-veil-title svelte-23dtxz">Conversations</div> <!></div> <button class="s-head-close svelte-23dtxz" type="button" aria-label="Close conversations"><!></button></div> <div class="s-veil-body svelte-23dtxz"><section class="s-veil-section svelte-23dtxz"><div class="s-section-head svelte-23dtxz"><div class="s-veil-section-label svelte-23dtxz">assistant</div> <a class="s-new-convo svelte-23dtxz"><span class="s-new-mark svelte-23dtxz" aria-hidden="true"><svg width="11" height="11" viewBox="0 0 12 12" fill="none"><circle cx="6" cy="6" r="2.4" stroke="currentColor" stroke-width="1.1"></circle><line x1="4.5" y1="3.6" x2="4.5" y2="1.5" stroke="currentColor" stroke-width="1.1" stroke-linecap="round"></line><line x1="7.5" y1="3.6" x2="7.5" y2="1.5" stroke="currentColor" stroke-width="1.1" stroke-linecap="round"></line><line x1="6" y1="8.4" x2="6" y2="10.5" stroke="currentColor" stroke-width="1.1" stroke-linecap="round"></line></svg></span> manage connections</a></div> <div class="s-endpoint-list svelte-23dtxz" role="group" aria-label="Assistant endpoints"></div></section> <section class="s-veil-section svelte-23dtxz"><div class="s-section-head svelte-23dtxz"><div class="s-veil-section-label svelte-23dtxz">conversations</div> <button class="s-new-convo svelte-23dtxz" type="button"><span class="s-new-mark svelte-23dtxz" aria-hidden="true">+</span> begin anew</button></div> <!></section></div></div> <!> <div id="s-tool-drawer" role="dialog" aria-modal="true" aria-label="Assistant activity"><div class="s-tool-drawer-head svelte-23dtxz"><button class="s-head-close svelte-23dtxz" type="button" aria-label="Close activity"><!></button></div> <div class="s-tool-drawer-body svelte-23dtxz"><!></div></div>`,1);function Kt(n,r){w(r,!0);let a=D(void 0),f=b(()=>G.entriesLoading),m=b(()=>G.byEndpoint.get(G.activeEndpointId)?.sessionsLoading??!1),h=D(!1);function y(){N(h,!0)}function x(){N(h,!1)}let S=D(!1);function C(){N(S,!d(S))}function L(){N(S,!1)}async function R(){G.error=``,await G.onEndpointChanged(W.activeId)}async function ie(){let e=G.lastFailedText;e&&(G.error=``,await G.send(e))}async function oe(e){await G.send(e)}let ce=D(null);async function le(e){N(ce,e,!0);try{await G.answerPermission(e)}finally{N(ce,null)}}async function ue(e){await G.answerQuestion(e)}function pe(e,t){G.setQuestionAnswer(e,t)}async function me(){await G.answerQuestion()}async function he(){await G.rejectQuestion()}let ye=D(!0);function xe(e){N(ye,e,!0)}function je(){let e=window.matchMedia(`(prefers-reduced-motion: reduce)`).matches;d(a)?.scrollIntoView({behavior:e?`auto`:`smooth`})}function Me(){N(ye,!0),je()}function Ne(e,t){let n=e.closest(`.s-scroll`),r=n?.scrollTop??0;function i(){if(!n)return;let e=t.isFollowing(),i=jt(e,r,n.scrollTop,n.clientHeight,n.scrollHeight);r=n.scrollTop,i!==e&&t.onFollowChange(i)}n?.addEventListener(`scroll`,i,{passive:!0});let o=new MutationObserver(()=>{if(!t.isFollowing())return;let e=typeof window<`u`&&window.matchMedia(`(prefers-reduced-motion: reduce)`).matches;queueMicrotask(()=>d(a)?.scrollIntoView({behavior:e?`auto`:`smooth`}))});return o.observe(e,{childList:!0,subtree:!0,characterData:!0}),{destroy(){o.disconnect(),n?.removeEventListener(`scroll`,i)}}}let Fe=b(()=>!H.conversationActive&&(H.status===`recording`||H.status===`transcribing`)),Ie=b(()=>H.ttsAutoEnabled),K=b(()=>H.sttEngine!==`disabled`&&H.sttSupported),Le=b(()=>H.ttsSupported),q=D(``);function Re(){if(H.conversationActive){V();return}d(Fe)?te():ae(e=>{let t=e.trim();t&&N(q,d(q).trim().length>0?`${d(q).trimEnd()} ${t}`:t,!0)})}function Ve(){H.conversationActive?V():re(e=>{G.sendUtterance(e)})}function He(){ee(!H.ttsAutoEnabled)}async function Ue(){await G.startNewSession(),await B(z(`/chat`),{replaceState:!0}),x()}let J=D(!1);async function We(e){if(!d(J)){if(e===W.active?.id){x();return}N(J,!0);try{await W.activate(e),x()}catch{}finally{N(J,!1)}}}j(()=>{document.documentElement.classList.add(`chat-locked`),document.body.classList.add(`chat-locked`,`stillness-mode`);function e(e){e.key===`Escape`&&(V(),x(),L())}document.addEventListener(`keydown`,e);let t=!1;function n(){t||document.visibilityState!==`visible`||(async()=>{!await de()&&!t?G.error=`Assistant is not reachable. Try reconnecting.`:t||await G.loadSessions()})()}return document.addEventListener(`visibilitychange`,n),ne(),(async()=>{try{De.init();let e=Se.url.searchParams.get(`session`);if(De.enabled){await B(we(e),{replaceState:!0});return}await W.load(),await G.onEndpointChanged(W.activeId),e&&await G.openSession(e),Se.url.searchParams.get(`new`)===`1`&&(await G.startNewSession(),await B(z(`/chat`),{replaceState:!0}))}catch{G.error=`Unable to reach the assistant.`}})(),()=>{t=!0,V(),document.documentElement.classList.remove(`chat-locked`),document.body.classList.remove(`chat-locked`,`stillness-mode`),document.removeEventListener(`keydown`,e),document.removeEventListener(`visibilitychange`,n)}});var Ge=Gt();F(`23dtxz`,e=>{i(()=>{P.title=W.active?.label??`OpenPalm`??``})});var Ke=T(M(Ge),8);mt(k(Ke),{height:32,get voiceEnabled(){return d(K)},get sending(){return G.sending},get voiceStatus(){return H.status},onToggle:Re}),I(Ke);var Y=T(Ke,2);let qe;var Je=k(Y),Ye=k(Je);ke(k(Ye),{size:20}),I(Ye),_(2),I(Je),I(Y);var Ze=T(Y,2),Qe=k(Ze),$e=t=>{var n=Mt(),r=T(k(n),2),i=k(r),a=e=>{Ae(e,{size:20})},s=e=>{Te(e,{size:20})};o(i,e=>{d(Ie)?e(a):e(s,-1)}),I(r),I(n),p(()=>{A(r,`aria-label`,d(Ie)?`Turn off spoken responses`:`Turn on spoken responses`),A(r,`aria-pressed`,d(Ie))}),e(`click`,r,He),l(t,n)};o(Qe,e=>{d(Le)&&d(K)&&e($e)});var et=T(Qe,2),tt=T(k(et),2),nt=k(tt),it=e=>{_e(e,{size:20})},at=e=>{se(e,{size:20})},ot=e=>{fe(e,{size:20})};o(nt,e=>{U.preference===`light`?e(it):U.preference===`dark`?e(at,1):e(ot,-1)}),I(tt),I(et),I(Ze);var st=T(Ze,2);let ct;var lt=k(st),X=T(k(lt),2);ze(k(X),{size:20}),I(X),I(lt);var ut=T(lt,2),dt=k(ut),pt=k(dt,!0);I(dt);var Z=T(dt,2),ht=k(Z),gt=e=>{ve(e,{size:20})},_t=e=>{Oe(e,{size:22})};o(ht,e=>{d(h)?e(gt):e(_t,-1)}),I(Z),I(ut),I(st);var vt=T(st,2);let bt;ft(k(vt),{get items(){return G.toolLog}}),I(vt);var xt=T(vt,2),St=k(xt),Ct=k(St),wt=e=>{l(e,Nt())};o(Ct,e=>{(d(m)||d(f))&&e(wt)});var Tt=T(Ct,2);E(Tt,17,()=>G.entries,e=>e.id,(e,t)=>{Be(e,{get entry(){return d(t)}})});var Et=T(Tt,2),Dt=e=>{var t=It(),n=k(t),r=e=>{var t=Pt(),n=k(t),r=k(n);c(r,()=>Pe(G.pendingAssistantText),!0),I(r),I(n),I(t),l(e,t)},i=e=>{l(e,Ft())};o(n,e=>{G.pendingAssistantText?e(r):!G.pendingPermission&&!G.pendingQuestion&&e(i,1)});var a=T(n,2),s=e=>{yt(e,{get permission(){return G.pendingPermission},get actionInFlight(){return d(ce)},onReply:le})};o(a,e=>{G.pendingPermission&&e(s)});var u=T(a,2),f=e=>{kt(e,{get question(){return G.pendingQuestion},onOption:ue,onSelect:(e,t)=>G.setQuestionAnswer(e,t),onDraft:pe,onSubmit:me,onReject:he})};o(u,e=>{G.pendingQuestion&&e(f)}),I(t),l(e,t)};o(Et,e=>{G.sending&&e(Dt)}),v(T(Et,2),e=>N(a,e),()=>d(a)),I(St),t(St,(e,t)=>Ne?.(e,t),()=>({isFollowing:()=>d(ye),onFollowChange:xe})),I(xt);var Ot=T(xt,2),At=t=>{var n=Rt(),r=k(n),i=k(r,!0);I(r);var a=T(r,2),c=t=>{var n=Lt();e(`click`,n,ie),l(t,n)};o(a,e=>{G.lastFailedText&&e(c)});var u=T(a,2),d=T(u,2);I(n),p(()=>s(i,G.error)),e(`click`,u,R),e(`click`,d,()=>{G.error=``}),l(t,n)};o(Ot,e=>{G.error&&e(At)});var Kt=T(Ot,2),qt=t=>{var n=zt();p(()=>n.inert=d(S)||d(h)),e(`click`,n,Me),l(t,n)};o(Kt,e=>{!d(ye)&&G.sending&&e(qt)});var Jt=T(Kt,2),Yt=k(Jt);rt(Yt,{get thinking(){return G.sending}});var Xt=T(Yt,2);{let e=b(()=>!!G.pendingQuestion&&G.pendingQuestion.questions.length===1);Xe(Xt,{get sending(){return G.sending},get questionPending(){return d(e)},onSend:oe,onStop:()=>void G.stopTurn(),get voiceEnabled(){return d(K)},get voiceActive(){return d(Fe)},onMicToggle:Re,get conversationEnabled(){return d(K)},get conversationActive(){return H.conversationActive},onConversationToggle:Ve,get draft(){return d(q)},set draft(e){N(q,e,!0)}})}I(Jt);var Q=T(Jt,2);let Zt;var Qt=k(Q),$t=k(Qt),en=T(k($t),2),tn=e=>{var t=Bt(),n=k(t,!0);I(t),p(()=>s(n,W.active.label)),l(e,t)};o(en,e=>{W.active&&e(tn)}),I($t);var nn=T($t,2);ve(k(nn),{size:20}),I(nn),I(Qt);var rn=T(Qt,2),an=k(rn),on=k(an),sn=T(k(on),2);I(on);var cn=T(on,2);E(cn,21,()=>W.endpoints,e=>e.id,(t,n)=>{var r=Ht(),i=k(r);let a;var c=k(i),u=k(c,!0);I(c);var f=T(c,2),m=k(f,!0);I(f),I(i);var h=T(i,2),_=t=>{var n=Vt();p(e=>A(n,`href`,e),[()=>z(`/host`)]),e(`click`,n,x),l(t,n)},v=b(()=>d(n).url&&Ee(d(n).url));o(h,e=>{d(v)&&e(_)}),I(r),p(()=>{a=g(i,1,`s-endpoint svelte-23dtxz`,null,a,{active:d(n).id===W.active?.id}),A(i,`aria-current`,d(n).id===W.active?.id?`true`:void 0),i.disabled=d(J),s(u,d(n).label),s(m,d(n).url)}),e(`click`,i,()=>void We(d(n).id)),l(t,r)}),I(cn),I(an);var ln=T(an,2),un=k(ln),dn=T(k(un),2);I(un),Ce(T(un,2),{onChosen:x,hideNewBtn:!0}),I(ln),I(rn),I(Q),u(Q,()=>be({active:d(h),deferRestore:!0}));var fn=T(Q,2),pn=t=>{var n=Ut();A(n,`tabindex`,-1),e(`click`,n,L),l(t,n)};o(fn,e=>{d(S)&&e(pn)});var $=T(fn,2);let mn;var hn=k($),gn=k(hn);ve(k(gn),{size:20}),I(gn),I(hn);var _n=T(hn,2),vn=k(_n),yn=e=>{ft(e,{get items(){return G.toolLog}})},bn=e=>{l(e,Wt())};o(vn,e=>{G.toolLog.length>0?e(yn):e(bn,-1)}),I(_n),I($),u($,()=>be({active:d(S),deferRestore:!0})),p(e=>{qe=g(Y,1,`s-corner s-corner-right svelte-23dtxz`,null,qe,{"drawer-hidden":d(S)}),A(Ye,`aria-pressed`,De.enabled),A(tt,`aria-label`,U.preference===`system`?`Switch to light theme`:U.preference===`light`?`Switch to dark theme`:`Switch to system theme`),ct=g(st,1,`s-corner s-corner-bottom-right svelte-23dtxz`,null,ct,{"drawer-hidden":d(S)}),A(X,`aria-expanded`,d(S)),s(pt,d(h)?`close`:`conversations`),A(Z,`aria-expanded`,d(h)),A(Z,`aria-label`,d(h)?`Return to the conversation`:`Conversations`),bt=g(vt,1,`s-tool-rail svelte-23dtxz`,null,bt,{"has-items":G.toolLog.length>0}),xt.inert=d(S)||d(h),Jt.inert=d(S)||d(h),Zt=g(Q,1,`s-veil svelte-23dtxz`,null,Zt,{open:d(h)}),Q.inert=!d(h),A(Q,`aria-hidden`,!d(h)),A(sn,`href`,e),mn=g($,1,`s-tool-drawer svelte-23dtxz`,null,mn,{open:d(S)}),$.inert=!d(S),A($,`aria-hidden`,!d(S))},[()=>z(`/connections`)]),e(`click`,Ye,()=>{De.setEnabled(!0),B(we(Se.url.searchParams.get(`session`)??G.activeSessionId))}),e(`click`,tt,()=>U.toggle()),e(`click`,X,C),e(`click`,Z,function(...e){(d(h)?x:y)?.apply(this,e)}),e(`keydown`,Q,e=>ge(e,x)),e(`click`,nn,x),e(`click`,sn,x),e(`click`,dn,()=>void Ue()),e(`keydown`,$,e=>ge(e,L)),e(`click`,gn,L),l(n,Ge),O()}R([`click`,`keydown`]);export{Kt as component};
@@ -1,4 +1,4 @@
1
- import{B as e,I as t,M as n,N as r,P as i,U as a,V as o,X as s,Y as c,b as l,bt as u,d,dt as f,f as p,ht as m,it as h,k as g,l as _,lt as v,mt as y,nt as b,p as x,r as S,rt as C,st as w,tt as T,w as E,xt as D,z as O}from"../chunks/BzIvC31O.js";import"../chunks/xihTtKlq.js";import{$ as k,Q as A,et as j,u as M}from"../chunks/B_jhBV5Z.js";import{t as N}from"../chunks/9mRSvTWj.js";import{t as P}from"../chunks/BoOBAdGl.js";import{t as F}from"../chunks/hSjQday7.js";var ee=t(`<div class="alert error svelte-xxtt2y" role="alert"> </div>`),te=t(`<span class="badge default svelte-xxtt2y">Default</span>`),ne=t(`<span class="badge active svelte-xxtt2y">Active</span>`),re=t(`<span class="badge password svelte-xxtt2y" title="Server password configured"><!></span>`),I=t(`<button type="button" class="btn btn-primary btn-sm">Use this</button>`),ie=t(`<button type="button" class="btn btn-secondary btn-sm">Edit</button> <button type="button" class="btn btn-danger btn-sm svelte-xxtt2y"> </button>`,1),ae=t(`<article><div class="connection-main svelte-xxtt2y"><div class="connection-title svelte-xxtt2y"><span class="connection-label svelte-xxtt2y"> </span> <!> <!> <!></div> <div class="connection-url svelte-xxtt2y"> </div></div> <div class="connection-actions svelte-xxtt2y"><!> <!></div></article>`),oe=t(`<button type="button" class="btn btn-primary">+ Add connection</button>`),se=t(`<small class="rotate-hint svelte-xxtt2y"><strong class="svelte-xxtt2y">Rotating this password?</strong> OpenCode reads <code class="svelte-xxtt2y">OPENCODE_SERVER_PASSWORD</code> from its env at startup, so
1
+ import{B as e,I as t,M as n,N as r,P as i,U as a,V as o,X as s,Y as c,b as l,bt as u,d,dt as f,f as p,ht as m,it as h,k as g,l as _,lt as v,mt as y,nt as b,p as x,r as S,rt as C,st as w,tt as T,w as E,xt as D,z as O}from"../chunks/BzIvC31O.js";import"../chunks/xihTtKlq.js";import{$ as k,Q as A,et as j,u as M}from"../chunks/B_jhBV5Z.js";import{t as N}from"../chunks/DuFsBiCS.js";import{t as P}from"../chunks/Gis7OmMK.js";import{t as F}from"../chunks/hSjQday7.js";var ee=t(`<div class="alert error svelte-xxtt2y" role="alert"> </div>`),te=t(`<span class="badge default svelte-xxtt2y">Default</span>`),ne=t(`<span class="badge active svelte-xxtt2y">Active</span>`),re=t(`<span class="badge password svelte-xxtt2y" title="Server password configured"><!></span>`),I=t(`<button type="button" class="btn btn-primary btn-sm">Use this</button>`),ie=t(`<button type="button" class="btn btn-secondary btn-sm">Edit</button> <button type="button" class="btn btn-danger btn-sm svelte-xxtt2y"> </button>`,1),ae=t(`<article><div class="connection-main svelte-xxtt2y"><div class="connection-title svelte-xxtt2y"><span class="connection-label svelte-xxtt2y"> </span> <!> <!> <!></div> <div class="connection-url svelte-xxtt2y"> </div></div> <div class="connection-actions svelte-xxtt2y"><!> <!></div></article>`),oe=t(`<button type="button" class="btn btn-primary">+ Add connection</button>`),se=t(`<small class="rotate-hint svelte-xxtt2y"><strong class="svelte-xxtt2y">Rotating this password?</strong> OpenCode reads <code class="svelte-xxtt2y">OPENCODE_SERVER_PASSWORD</code> from its env at startup, so
2
2
  rotation is a two-step process: <ol class="svelte-xxtt2y"><li>On the remote host: update <code class="svelte-xxtt2y">OP_OPENCODE_PASSWORD</code> in <code class="svelte-xxtt2y">stack.env</code> and restart the <code class="svelte-xxtt2y">assistant</code> container.</li> <li>Paste the new value here and save.</li></ol></small>`),ce=t(`<label class="field-inline svelte-xxtt2y"><input type="checkbox"/> <span>Clear stored password</span></label>`),le=t(`<div class="alert error svelte-xxtt2y" role="alert"> </div>`),ue=t(`<form class="connection-form svelte-xxtt2y"><h2 class="svelte-xxtt2y"> </h2> <label class="field svelte-xxtt2y"><span class="svelte-xxtt2y">Label</span> <input type="text" placeholder="e.g. Home server" required="" autocomplete="off" class="svelte-xxtt2y"/></label> <label class="field svelte-xxtt2y"><span class="svelte-xxtt2y">URL</span> <input type="url" placeholder="http://10.0.0.5:3800" required="" autocomplete="off" class="svelte-xxtt2y"/> <small class="svelte-xxtt2y">The host:port where the remote OpenPalm assistant (OpenCode) is reachable.</small></label> <label class="field svelte-xxtt2y"><span class="svelte-xxtt2y">Server password (optional)</span> <input type="password" autocomplete="new-password" class="svelte-xxtt2y"/> <small class="svelte-xxtt2y">Forwarded as HTTP Basic auth. Only required if the remote OpenCode was started with <code class="svelte-xxtt2y">OPENCODE_SERVER_PASSWORD</code>.</small> <!></label> <!> <!> <div class="form-actions svelte-xxtt2y"><button type="submit" class="btn btn-primary"> </button> <button type="button" class="btn btn-secondary">Cancel</button></div></form>`),de=t(`<!> <main class="page svelte-xxtt2y"><header class="page-header svelte-xxtt2y"><h1 class="svelte-xxtt2y">Connections</h1> <p class="lede svelte-xxtt2y">Connect to local or remote OpenPalm assistants. The <strong>Default</strong> entry comes
3
3
  from the environment (set by the launcher) and cannot be deleted. Add more connections to
4
4
  switch between assistants at any time.</p></header> <!> <section class="connections-list svelte-xxtt2y" aria-label="Configured connections"></section> <!></main>`,1);function L(t,O){m(O,!0);let L=v(`idle`),R=v(null),z=v(``),B=v(``),V=v(``),H=v(!1),U=v(!1),W=v(``),G=v(null),fe=f(()=>M.endpoints),K=f(()=>M.active);S(()=>{M.load(!0),N.url.searchParams.get(`new`)===`1`&&q()});function q(){w(L,`add`),w(R,null),w(z,``),w(B,``),w(V,``),w(H,!1),w(W,``)}function pe(e){w(L,`edit`),w(R,e.id,!0),w(z,e.label,!0),w(B,e.url,!0),w(V,``),w(H,!1),w(W,``)}function me(){w(L,`idle`),w(W,``)}async function he(e){if(e.preventDefault(),a(U))return;let t=a(z).trim(),n=a(B).trim();if(!t||!n){w(W,`Label and URL are required.`);return}w(U,!0),w(W,``);try{if(a(L)===`add`)await A({label:t,url:n,...a(V)?{password:a(V)}:{}});else if(a(L)===`edit`&&a(R)){let e={label:t,url:n};a(H)?e.password=null:a(V)&&(e.password=a(V)),await j(a(R),e)}await M.load(!0),w(L,`idle`)}catch(e){w(W,e.message??`Save failed.`,!0)}finally{w(U,!1)}}async function ge(e){try{await M.activate(e)}catch{}}async function _e(e){if(!e.isDefault&&confirm(`Remove connection "${e.label}"?`)){w(G,e.id,!0);try{await k(e.id),await M.load(!0)}catch(e){M.error=e.message??`Delete failed.`}finally{w(G,null)}}}var J=de();E(`xxtt2y`,e=>{c(()=>{T.title=`Connections — OpenPalm`})});var Y=C(J);P(Y,{});var X=h(Y,2),Z=h(b(X),2),Q=e=>{var t=ee(),n=b(t,!0);D(t),s(()=>r(n,M.error)),i(e,t)};n(Z,e=>{M.error&&e(Q)});var $=h(Z,2);g($,21,()=>a(fe),e=>e.id,(t,o)=>{var c=ae();let u;var d=b(c),f=b(d),p=b(f),m=b(p,!0);D(p);var g=h(p,2),_=e=>{i(e,te())};n(g,e=>{a(o).isDefault&&e(_)});var v=h(g,2),y=e=>{i(e,ne())};n(v,e=>{a(o).id===a(K)?.id&&e(y)});var x=h(v,2),S=e=>{var t=re();F(b(t),{size:11}),D(t),i(e,t)};n(x,e=>{a(o).hasPassword&&e(S)}),D(f);var w=h(f,2),T=b(w,!0);D(w),D(d);var E=h(d,2),O=b(E),k=t=>{var n=I();e(`click`,n,()=>ge(a(o).id)),i(t,n)};n(O,e=>{a(o).id!==a(K)?.id&&e(k)});var A=h(O,2),j=t=>{var n=ie(),c=C(n),l=h(c,2),u=b(l,!0);D(l),s(()=>{l.disabled=a(G)===a(o).id,r(u,a(G)===a(o).id?`Removing…`:`Remove`)}),e(`click`,c,()=>pe(a(o))),e(`click`,l,()=>_e(a(o))),i(t,n)};n(A,e=>{a(o).isDefault||e(j)}),D(E),D(c),s(()=>{u=l(c,1,`connection-card svelte-xxtt2y`,null,u,{active:a(o).id===a(K)?.id}),r(m,a(o).label),r(T,a(o).url)}),i(t,c)}),D($);var ve=h($,2),ye=t=>{var n=oe();e(`click`,n,q),i(t,n)},be=t=>{var c=ue(),l=b(c),f=b(l,!0);D(l);var m=h(l,2),g=h(b(m),2);p(g),D(m);var v=h(m,2),y=h(b(v),2);p(y),u(2),D(v);var S=h(v,2),C=h(b(S),2);p(C);var T=h(C,4),E=e=>{i(e,se())};n(T,e=>{a(L)===`edit`&&e(E)}),D(S);var O=h(S,2),k=e=>{var t=ce(),n=b(t);p(n),u(2),D(t),_(n,()=>a(H),e=>w(H,e)),i(e,t)};n(O,e=>{a(L)===`edit`&&e(k)});var A=h(O,2),j=e=>{var t=le(),n=b(t,!0);D(t),s(()=>r(n,a(W))),i(e,t)};n(A,e=>{a(W)&&e(j)});var M=h(A,2),N=b(M),P=b(N,!0);D(N);var F=h(N,2);D(M),D(c),s(()=>{r(f,a(L)===`add`?`Add connection`:`Edit connection`),x(C,`placeholder`,a(L)===`edit`?`Leave blank to keep current`:``),N.disabled=a(U),r(P,a(U)?`Saving…`:`Save`),F.disabled=a(U)}),o(`submit`,c,he),d(g,()=>a(z),e=>w(z,e)),d(y,()=>a(B),e=>w(B,e)),d(C,()=>a(V),e=>w(V,e)),e(`click`,F,me),i(t,c)};n(ve,e=>{a(L)===`idle`?e(ye):e(be,-1)}),D(X),i(t,J),y()}O([`click`]);export{L as component};