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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (433) hide show
  1. package/README.md +3 -2
  2. package/build/.openpalm-ui-version +1 -1
  3. package/build/client/_app/immutable/assets/7.DHMKw-HL.css +1 -0
  4. package/build/client/_app/immutable/assets/7.DHMKw-HL.css.br +0 -0
  5. package/build/client/_app/immutable/assets/7.DHMKw-HL.css.gz +0 -0
  6. package/build/client/_app/immutable/assets/9.CmCaAuiy.css +1 -0
  7. package/build/client/_app/immutable/assets/9.CmCaAuiy.css.br +0 -0
  8. package/build/client/_app/immutable/assets/9.CmCaAuiy.css.gz +0 -0
  9. package/build/client/_app/immutable/chunks/{BE_4J5sS.js → B9uMOgDZ.js} +2 -2
  10. package/build/client/_app/immutable/chunks/B9uMOgDZ.js.br +0 -0
  11. package/build/client/_app/immutable/chunks/B9uMOgDZ.js.gz +0 -0
  12. package/build/client/_app/immutable/chunks/BwKrb5qD.js +1 -0
  13. package/build/client/_app/immutable/chunks/BwKrb5qD.js.br +2 -0
  14. package/build/client/_app/immutable/chunks/BwKrb5qD.js.gz +0 -0
  15. package/build/client/_app/immutable/chunks/{mNzUu332.js → C092q_Hl.js} +1 -1
  16. package/build/client/_app/immutable/chunks/C092q_Hl.js.br +0 -0
  17. package/build/client/_app/immutable/chunks/C092q_Hl.js.gz +0 -0
  18. package/build/client/_app/immutable/chunks/C7g46Pjm.js +1 -0
  19. package/build/client/_app/immutable/chunks/C7g46Pjm.js.br +0 -0
  20. package/build/client/_app/immutable/chunks/C7g46Pjm.js.gz +0 -0
  21. package/build/client/_app/immutable/chunks/{CuKFR3Qo.js → CR3nChHO.js} +2 -2
  22. package/build/client/_app/immutable/chunks/CR3nChHO.js.br +0 -0
  23. package/build/client/_app/immutable/chunks/CR3nChHO.js.gz +0 -0
  24. package/build/client/_app/immutable/chunks/{Clt9pCG1.js → CXv_deBx.js} +1 -1
  25. package/build/client/_app/immutable/chunks/CXv_deBx.js.br +0 -0
  26. package/build/client/_app/immutable/chunks/CXv_deBx.js.gz +0 -0
  27. package/build/client/_app/immutable/chunks/D-DB6zTo.js +9 -0
  28. package/build/client/_app/immutable/chunks/D-DB6zTo.js.br +0 -0
  29. package/build/client/_app/immutable/chunks/D-DB6zTo.js.gz +0 -0
  30. package/build/client/_app/immutable/chunks/DDSqq1hR.js +1 -0
  31. package/build/client/_app/immutable/chunks/DDSqq1hR.js.br +0 -0
  32. package/build/client/_app/immutable/chunks/DDSqq1hR.js.gz +0 -0
  33. package/build/client/_app/immutable/chunks/d1cxvUgj.js +1 -0
  34. package/build/client/_app/immutable/chunks/d1cxvUgj.js.br +0 -0
  35. package/build/client/_app/immutable/chunks/d1cxvUgj.js.gz +0 -0
  36. package/build/client/_app/immutable/chunks/{BdIq5WIo.js → qrqTdjh7.js} +1 -1
  37. package/build/client/_app/immutable/chunks/qrqTdjh7.js.br +0 -0
  38. package/build/client/_app/immutable/chunks/qrqTdjh7.js.gz +0 -0
  39. package/build/client/_app/immutable/entry/{app.DKG33-gU.js → app.CXHi3StM.js} +2 -2
  40. package/build/client/_app/immutable/entry/app.CXHi3StM.js.br +0 -0
  41. package/build/client/_app/immutable/entry/app.CXHi3StM.js.gz +0 -0
  42. package/build/client/_app/immutable/entry/start.eS_-xLIC.js +1 -0
  43. package/build/client/_app/immutable/entry/start.eS_-xLIC.js.br +1 -0
  44. package/build/client/_app/immutable/entry/start.eS_-xLIC.js.gz +0 -0
  45. package/build/client/_app/immutable/nodes/{0.eA5H3idZ.js → 0.Bfv0aXoG.js} +1 -1
  46. package/build/client/_app/immutable/nodes/0.Bfv0aXoG.js.br +0 -0
  47. package/build/client/_app/immutable/nodes/0.Bfv0aXoG.js.gz +0 -0
  48. package/build/client/_app/immutable/nodes/{1.CvKFymDh.js → 1.B8Ebge5I.js} +1 -1
  49. package/build/client/_app/immutable/nodes/1.B8Ebge5I.js.br +0 -0
  50. package/build/client/_app/immutable/nodes/1.B8Ebge5I.js.gz +0 -0
  51. package/build/client/_app/immutable/nodes/{10.DFMf8WUQ.js → 10.Di4b61Rb.js} +1 -1
  52. package/build/client/_app/immutable/nodes/10.Di4b61Rb.js.br +0 -0
  53. package/build/client/_app/immutable/nodes/10.Di4b61Rb.js.gz +0 -0
  54. package/build/client/_app/immutable/nodes/11.CUlazdDv.js +8 -0
  55. package/build/client/_app/immutable/nodes/11.CUlazdDv.js.br +0 -0
  56. package/build/client/_app/immutable/nodes/11.CUlazdDv.js.gz +0 -0
  57. package/build/client/_app/immutable/nodes/4.DQOL0qY_.js +1 -0
  58. package/build/client/_app/immutable/nodes/4.DQOL0qY_.js.br +0 -0
  59. package/build/client/_app/immutable/nodes/4.DQOL0qY_.js.gz +0 -0
  60. package/build/client/_app/immutable/nodes/{5.bgdUYUlr.js → 5.BGqmDWpO.js} +1 -1
  61. package/build/client/_app/immutable/nodes/5.BGqmDWpO.js.br +0 -0
  62. package/build/client/_app/immutable/nodes/5.BGqmDWpO.js.gz +0 -0
  63. package/build/client/_app/immutable/nodes/6.Cf2kRGl-.js +2 -0
  64. package/build/client/_app/immutable/nodes/6.Cf2kRGl-.js.br +0 -0
  65. package/build/client/_app/immutable/nodes/6.Cf2kRGl-.js.gz +0 -0
  66. package/build/client/_app/immutable/nodes/7.CvaILUo5.js +16 -0
  67. package/build/client/_app/immutable/nodes/7.CvaILUo5.js.br +0 -0
  68. package/build/client/_app/immutable/nodes/7.CvaILUo5.js.gz +0 -0
  69. package/build/client/_app/immutable/nodes/9.DvOR66Q0.js +128 -0
  70. package/build/client/_app/immutable/nodes/9.DvOR66Q0.js.br +0 -0
  71. package/build/client/_app/immutable/nodes/9.DvOR66Q0.js.gz +0 -0
  72. package/build/client/_app/version.json +1 -1
  73. package/build/client/_app/version.json.br +1 -1
  74. package/build/client/_app/version.json.gz +0 -0
  75. package/build/server/chunks/{0-D9FIO-Bk.js → 0-D8UAPThv.js} +12 -6
  76. package/build/server/chunks/0-D8UAPThv.js.map +1 -0
  77. package/build/server/chunks/1-bS23Eg-d.js +9 -0
  78. package/build/server/chunks/{1-ItPJxTHP.js.map → 1-bS23Eg-d.js.map} +1 -1
  79. package/build/server/chunks/{10-B4fDiATl.js → 10-C5TUqG1t.js} +3 -3
  80. package/build/server/chunks/{10-B4fDiATl.js.map → 10-C5TUqG1t.js.map} +1 -1
  81. package/build/server/chunks/11-DSjZgp33.js +9 -0
  82. package/build/server/chunks/11-DSjZgp33.js.map +1 -0
  83. package/build/server/chunks/{3-DpC38K23.js → 3-D0iTJ9v2.js} +6 -6
  84. package/build/server/chunks/{3-DpC38K23.js.map → 3-D0iTJ9v2.js.map} +1 -1
  85. package/build/server/chunks/{4-DrJ64j1x.js → 4-CHJRF8qs.js} +3 -3
  86. package/build/server/chunks/{4-DrJ64j1x.js.map → 4-CHJRF8qs.js.map} +1 -1
  87. package/build/server/chunks/{5-BxzwX0rY.js → 5-CwCiwnFt.js} +3 -3
  88. package/build/server/chunks/{5-BxzwX0rY.js.map → 5-CwCiwnFt.js.map} +1 -1
  89. package/build/server/chunks/6-raswytzE.js +9 -0
  90. package/build/server/chunks/{6-DxXeT1e3.js.map → 6-raswytzE.js.map} +1 -1
  91. package/build/server/chunks/7-NC4-KlW9.js +9 -0
  92. package/build/server/chunks/7-NC4-KlW9.js.map +1 -0
  93. package/build/server/chunks/9-rIsHxfiY.js +9 -0
  94. package/build/server/chunks/9-rIsHxfiY.js.map +1 -0
  95. package/build/server/chunks/{ChatNavbar-CJYo_Hbc.js → ChatNavbar-DqdxDR5U.js} +9 -9
  96. package/build/server/chunks/{ChatNavbar-CJYo_Hbc.js.map → ChatNavbar-DqdxDR5U.js.map} +1 -1
  97. package/build/server/chunks/IconMic-CZN60P6B.js +10 -0
  98. package/build/server/chunks/IconMic-CZN60P6B.js.map +1 -0
  99. package/build/server/chunks/{IconServer-DkywyVFu.js → IconServer-BwcRjcsS.js} +4 -4
  100. package/build/server/chunks/{IconServer-DkywyVFu.js.map → IconServer-BwcRjcsS.js.map} +1 -1
  101. package/build/server/chunks/{IconSoundOn-DoAiK-qp.js → IconSoundOn-DTZuBn2-.js} +4 -4
  102. package/build/server/chunks/{IconSoundOn-DoAiK-qp.js.map → IconSoundOn-DTZuBn2-.js.map} +1 -1
  103. package/build/server/chunks/{IconStop-DKVpXPKq.js → IconStop-BxUfqTaV.js} +114 -847
  104. package/build/server/chunks/IconStop-BxUfqTaV.js.map +1 -0
  105. package/build/server/chunks/{QuestionCard-BCfoxMiS.js → QuestionCard-DOLuSSbI.js} +2 -2
  106. package/build/server/chunks/{QuestionCard-BCfoxMiS.js.map → QuestionCard-DOLuSSbI.js.map} +1 -1
  107. package/build/server/chunks/Spinner-2WZW6r_I.js +12 -0
  108. package/build/server/chunks/Spinner-2WZW6r_I.js.map +1 -0
  109. package/build/server/chunks/{_layout.svelte-DArOWGd3.js → _layout.svelte-CBBWJ3m3.js} +2 -3
  110. package/build/server/chunks/{_layout.svelte-DArOWGd3.js.map → _layout.svelte-CBBWJ3m3.js.map} +1 -1
  111. package/build/server/chunks/{_page.svelte-S90xJHRa.js → _page.svelte-CYzntFY4.js} +10 -10
  112. package/build/server/chunks/{_page.svelte-S90xJHRa.js.map → _page.svelte-CYzntFY4.js.map} +1 -1
  113. package/build/server/chunks/{_page.svelte-CGEtuNmS.js → _page.svelte-CysG6Te2.js} +13 -13
  114. package/build/server/chunks/_page.svelte-CysG6Te2.js.map +1 -0
  115. package/build/server/chunks/{_page.svelte-Dpf94Jor.js → _page.svelte-D-_cPU8e.js} +3 -3
  116. package/build/server/chunks/{_page.svelte-Dpf94Jor.js.map → _page.svelte-D-_cPU8e.js.map} +1 -1
  117. package/build/server/chunks/{_page.svelte-qxgG6hsh.js → _page.svelte-D4hOWjfm.js} +61 -351
  118. package/build/server/chunks/_page.svelte-D4hOWjfm.js.map +1 -0
  119. package/build/server/chunks/_page.svelte-D9au75wl.js +183 -0
  120. package/build/server/chunks/_page.svelte-D9au75wl.js.map +1 -0
  121. package/build/server/chunks/{_page.svelte-FOm-OMQe.js → _page.svelte-DjldYxQn.js} +25 -133
  122. package/build/server/chunks/_page.svelte-DjldYxQn.js.map +1 -0
  123. package/build/server/chunks/{_page.svelte-B2cX_j9w.js → _page.svelte-DsJgu4mW.js} +3 -3
  124. package/build/server/chunks/{_page.svelte-B2cX_j9w.js.map → _page.svelte-DsJgu4mW.js.map} +1 -1
  125. package/build/server/chunks/_server.ts-1qbl_1NY.js +87 -0
  126. package/build/server/chunks/_server.ts-1qbl_1NY.js.map +1 -0
  127. package/build/server/chunks/{_server.ts-DQI9hYcE.js → _server.ts-2VPdIZFH.js} +6 -6
  128. package/build/server/chunks/{_server.ts-DQI9hYcE.js.map → _server.ts-2VPdIZFH.js.map} +1 -1
  129. package/build/server/chunks/{_server.ts-C5T_Zuoy.js → _server.ts-68MuZYx_.js} +7 -7
  130. package/build/server/chunks/{_server.ts-C5T_Zuoy.js.map → _server.ts-68MuZYx_.js.map} +1 -1
  131. package/build/server/chunks/{_server.ts-Cph8nHvr.js → _server.ts-8AfutA1j.js} +6 -6
  132. package/build/server/chunks/{_server.ts-Cph8nHvr.js.map → _server.ts-8AfutA1j.js.map} +1 -1
  133. package/build/server/chunks/{_server.ts-ZKEBn-qW.js → _server.ts-B-5y1hA4.js} +8 -8
  134. package/build/server/chunks/{_server.ts-ZKEBn-qW.js.map → _server.ts-B-5y1hA4.js.map} +1 -1
  135. package/build/server/chunks/{_server.ts-Cjo35hc1.js → _server.ts-B1CunPF7.js} +6 -6
  136. package/build/server/chunks/{_server.ts-Cjo35hc1.js.map → _server.ts-B1CunPF7.js.map} +1 -1
  137. package/build/server/chunks/{_server.ts-DYLc6Os9.js → _server.ts-B1KGSkdl.js} +6 -6
  138. package/build/server/chunks/{_server.ts-DYLc6Os9.js.map → _server.ts-B1KGSkdl.js.map} +1 -1
  139. package/build/server/chunks/{_server.ts-B_7lGoo_.js → _server.ts-B2NALEcR.js} +6 -6
  140. package/build/server/chunks/{_server.ts-B_7lGoo_.js.map → _server.ts-B2NALEcR.js.map} +1 -1
  141. package/build/server/chunks/{_server.ts-i9TaUbWr.js → _server.ts-B2iUBxXh.js} +8 -8
  142. package/build/server/chunks/{_server.ts-i9TaUbWr.js.map → _server.ts-B2iUBxXh.js.map} +1 -1
  143. package/build/server/chunks/{_server.ts-IEM_8o6U.js → _server.ts-BN8EkPAZ.js} +7 -7
  144. package/build/server/chunks/{_server.ts-IEM_8o6U.js.map → _server.ts-BN8EkPAZ.js.map} +1 -1
  145. package/build/server/chunks/{_server.ts-N_mH0t0f.js → _server.ts-BQJfEfl9.js} +6 -6
  146. package/build/server/chunks/{_server.ts-N_mH0t0f.js.map → _server.ts-BQJfEfl9.js.map} +1 -1
  147. package/build/server/chunks/{_server.ts-C4tBc7fm.js → _server.ts-BQSMacks.js} +9 -9
  148. package/build/server/chunks/{_server.ts-C4tBc7fm.js.map → _server.ts-BQSMacks.js.map} +1 -1
  149. package/build/server/chunks/{_server.ts-vJBq3idp.js → _server.ts-BYt64wi5.js} +2 -2
  150. package/build/server/chunks/{_server.ts-vJBq3idp.js.map → _server.ts-BYt64wi5.js.map} +1 -1
  151. package/build/server/chunks/{_server.ts-BWMJRzwx.js → _server.ts-Ba0MJSs9.js} +6 -6
  152. package/build/server/chunks/{_server.ts-BWMJRzwx.js.map → _server.ts-Ba0MJSs9.js.map} +1 -1
  153. package/build/server/chunks/{_server.ts-B1vQkdVA.js → _server.ts-BdIM_pWg.js} +8 -8
  154. package/build/server/chunks/{_server.ts-B1vQkdVA.js.map → _server.ts-BdIM_pWg.js.map} +1 -1
  155. package/build/server/chunks/{_server.ts-DYg52Wyj.js → _server.ts-BfxTJHa-.js} +6 -6
  156. package/build/server/chunks/{_server.ts-DYg52Wyj.js.map → _server.ts-BfxTJHa-.js.map} +1 -1
  157. package/build/server/chunks/{_server.ts-CMfz71Do.js → _server.ts-BiVyFRNv.js} +6 -6
  158. package/build/server/chunks/{_server.ts-CMfz71Do.js.map → _server.ts-BiVyFRNv.js.map} +1 -1
  159. package/build/server/chunks/{_server.ts-vlaPk3to.js → _server.ts-BrgEQhDo.js} +6 -6
  160. package/build/server/chunks/{_server.ts-vlaPk3to.js.map → _server.ts-BrgEQhDo.js.map} +1 -1
  161. package/build/server/chunks/{_server.ts-BKnCIXe5.js → _server.ts-BtZN_8lV.js} +6 -6
  162. package/build/server/chunks/{_server.ts-BKnCIXe5.js.map → _server.ts-BtZN_8lV.js.map} +1 -1
  163. package/build/server/chunks/{_server.ts-BhA9ywuA.js → _server.ts-Bx0PXf1w.js} +6 -6
  164. package/build/server/chunks/{_server.ts-BhA9ywuA.js.map → _server.ts-Bx0PXf1w.js.map} +1 -1
  165. package/build/server/chunks/{_server.ts-CkVeEW46.js → _server.ts-Byaj9iKd.js} +6 -6
  166. package/build/server/chunks/{_server.ts-CkVeEW46.js.map → _server.ts-Byaj9iKd.js.map} +1 -1
  167. package/build/server/chunks/{_server.ts-oSGbQw4A.js → _server.ts-C1kDLq6m.js} +6 -6
  168. package/build/server/chunks/{_server.ts-oSGbQw4A.js.map → _server.ts-C1kDLq6m.js.map} +1 -1
  169. package/build/server/chunks/{_server.ts-CLMsuxkK.js → _server.ts-C28zIW49.js} +6 -6
  170. package/build/server/chunks/{_server.ts-CLMsuxkK.js.map → _server.ts-C28zIW49.js.map} +1 -1
  171. package/build/server/chunks/{_server.ts-BHaFrgm9.js → _server.ts-C2F80x6V.js} +7 -7
  172. package/build/server/chunks/{_server.ts-BHaFrgm9.js.map → _server.ts-C2F80x6V.js.map} +1 -1
  173. package/build/server/chunks/{_server.ts-BOn4TCRw.js → _server.ts-C70sKEjH.js} +7 -7
  174. package/build/server/chunks/{_server.ts-BOn4TCRw.js.map → _server.ts-C70sKEjH.js.map} +1 -1
  175. package/build/server/chunks/{_server.ts-CYu5XSM8.js → _server.ts-C754EzJA.js} +6 -6
  176. package/build/server/chunks/{_server.ts-CYu5XSM8.js.map → _server.ts-C754EzJA.js.map} +1 -1
  177. package/build/server/chunks/{_server.ts-B7319d6O.js → _server.ts-C8n83Xl1.js} +6 -6
  178. package/build/server/chunks/{_server.ts-B7319d6O.js.map → _server.ts-C8n83Xl1.js.map} +1 -1
  179. package/build/server/chunks/{_server.ts-DQTJ_bFp.js → _server.ts-CC6Bt-9t.js} +7 -7
  180. package/build/server/chunks/{_server.ts-DQTJ_bFp.js.map → _server.ts-CC6Bt-9t.js.map} +1 -1
  181. package/build/server/chunks/{_server.ts-Y5pBzFz4.js → _server.ts-CJ76gcOX.js} +6 -6
  182. package/build/server/chunks/{_server.ts-Y5pBzFz4.js.map → _server.ts-CJ76gcOX.js.map} +1 -1
  183. package/build/server/chunks/{_server.ts-B3iKXyUo.js → _server.ts-CMW6wbwP.js} +6 -6
  184. package/build/server/chunks/{_server.ts-B3iKXyUo.js.map → _server.ts-CMW6wbwP.js.map} +1 -1
  185. package/build/server/chunks/{_server.ts-pf6WrGLo.js → _server.ts-CNjG4x1a.js} +6 -6
  186. package/build/server/chunks/{_server.ts-pf6WrGLo.js.map → _server.ts-CNjG4x1a.js.map} +1 -1
  187. package/build/server/chunks/{_server.ts-DhcBS9KQ.js → _server.ts-CRl7GqvU.js} +6 -6
  188. package/build/server/chunks/{_server.ts-DhcBS9KQ.js.map → _server.ts-CRl7GqvU.js.map} +1 -1
  189. package/build/server/chunks/{_server.ts-D6-C5ctd.js → _server.ts-CUBWjRlp.js} +7 -7
  190. package/build/server/chunks/{_server.ts-D6-C5ctd.js.map → _server.ts-CUBWjRlp.js.map} +1 -1
  191. package/build/server/chunks/{_server.ts-B-uAgtQC.js → _server.ts-CYoKjlbj.js} +6 -6
  192. package/build/server/chunks/{_server.ts-B-uAgtQC.js.map → _server.ts-CYoKjlbj.js.map} +1 -1
  193. package/build/server/chunks/{_server.ts-Cu48eVwM.js → _server.ts-CafJDVBQ.js} +2 -2
  194. package/build/server/chunks/{_server.ts-Cu48eVwM.js.map → _server.ts-CafJDVBQ.js.map} +1 -1
  195. package/build/server/chunks/{_server.ts-CvjVUcFR.js → _server.ts-Cd9hDiKk.js} +6 -6
  196. package/build/server/chunks/{_server.ts-CvjVUcFR.js.map → _server.ts-Cd9hDiKk.js.map} +1 -1
  197. package/build/server/chunks/{_server.ts-BgL3_hTS.js → _server.ts-CgQfVR3g.js} +7 -7
  198. package/build/server/chunks/{_server.ts-BgL3_hTS.js.map → _server.ts-CgQfVR3g.js.map} +1 -1
  199. package/build/server/chunks/{_server.ts-BtZ9-ZYu.js → _server.ts-CilbVIRO.js} +2 -2
  200. package/build/server/chunks/{_server.ts-BtZ9-ZYu.js.map → _server.ts-CilbVIRO.js.map} +1 -1
  201. package/build/server/chunks/{_server.ts-CSBd_6yC.js → _server.ts-Ck25Xm32.js} +7 -7
  202. package/build/server/chunks/{_server.ts-CSBd_6yC.js.map → _server.ts-Ck25Xm32.js.map} +1 -1
  203. package/build/server/chunks/{_server.ts-DvUVX3X0.js → _server.ts-Cp-_qWC_.js} +7 -7
  204. package/build/server/chunks/{_server.ts-DvUVX3X0.js.map → _server.ts-Cp-_qWC_.js.map} +1 -1
  205. package/build/server/chunks/{_server.ts-7pcCO8Pf.js → _server.ts-CuEFmJ07.js} +7 -7
  206. package/build/server/chunks/{_server.ts-7pcCO8Pf.js.map → _server.ts-CuEFmJ07.js.map} +1 -1
  207. package/build/server/chunks/{_server.ts-DR0kmbl9.js → _server.ts-D5vc4lGC.js} +6 -6
  208. package/build/server/chunks/{_server.ts-DR0kmbl9.js.map → _server.ts-D5vc4lGC.js.map} +1 -1
  209. package/build/server/chunks/{_server.ts-CtkA_Ld0.js → _server.ts-DDLE66QT.js} +7 -7
  210. package/build/server/chunks/{_server.ts-CtkA_Ld0.js.map → _server.ts-DDLE66QT.js.map} +1 -1
  211. package/build/server/chunks/{_server.ts-xQhNjF_X.js → _server.ts-DEF1ChPD.js} +6 -6
  212. package/build/server/chunks/{_server.ts-xQhNjF_X.js.map → _server.ts-DEF1ChPD.js.map} +1 -1
  213. package/build/server/chunks/{_server.ts-BH8Y1mmb.js → _server.ts-DHUtPRWK.js} +4 -4
  214. package/build/server/chunks/{_server.ts-BH8Y1mmb.js.map → _server.ts-DHUtPRWK.js.map} +1 -1
  215. package/build/server/chunks/{_server.ts-B0MK-ynu.js → _server.ts-DHoTyKXL.js} +14 -10
  216. package/build/server/chunks/_server.ts-DHoTyKXL.js.map +1 -0
  217. package/build/server/chunks/{_server.ts-BaEUZaLH.js → _server.ts-DSB9Fzwa.js} +4 -4
  218. package/build/server/chunks/{_server.ts-BaEUZaLH.js.map → _server.ts-DSB9Fzwa.js.map} +1 -1
  219. package/build/server/chunks/{_server.ts-Dc1s3sLN.js → _server.ts-DW36Vbiq.js} +6 -6
  220. package/build/server/chunks/{_server.ts-Dc1s3sLN.js.map → _server.ts-DW36Vbiq.js.map} +1 -1
  221. package/build/server/chunks/{_server.ts-v3cF2xWi.js → _server.ts-DWG4CKWG.js} +6 -6
  222. package/build/server/chunks/{_server.ts-v3cF2xWi.js.map → _server.ts-DWG4CKWG.js.map} +1 -1
  223. package/build/server/chunks/{_server.ts-CCTZbI7L.js → _server.ts-DXxQIT2o.js} +7 -7
  224. package/build/server/chunks/{_server.ts-CCTZbI7L.js.map → _server.ts-DXxQIT2o.js.map} +1 -1
  225. package/build/server/chunks/{_server.ts-CSYdjKAH.js → _server.ts-Da8_J1a4.js} +7 -7
  226. package/build/server/chunks/{_server.ts-CSYdjKAH.js.map → _server.ts-Da8_J1a4.js.map} +1 -1
  227. package/build/server/chunks/{_server.ts-DeuURP8u.js → _server.ts-DcH5edss.js} +6 -6
  228. package/build/server/chunks/{_server.ts-DeuURP8u.js.map → _server.ts-DcH5edss.js.map} +1 -1
  229. package/build/server/chunks/{_server.ts-iXjPBf7J.js → _server.ts-DiHLYNbQ.js} +7 -7
  230. package/build/server/chunks/{_server.ts-iXjPBf7J.js.map → _server.ts-DiHLYNbQ.js.map} +1 -1
  231. package/build/server/chunks/{_server.ts-fenM6Iln.js → _server.ts-Dio2CslE.js} +7 -7
  232. package/build/server/chunks/_server.ts-Dio2CslE.js.map +1 -0
  233. package/build/server/chunks/{_server.ts-DcpOpD6s.js → _server.ts-Dlt1obi9.js} +6 -6
  234. package/build/server/chunks/{_server.ts-DcpOpD6s.js.map → _server.ts-Dlt1obi9.js.map} +1 -1
  235. package/build/server/chunks/{_server.ts-CEUFtmpE.js → _server.ts-Ds0U_zKR.js} +7 -7
  236. package/build/server/chunks/{_server.ts-CEUFtmpE.js.map → _server.ts-Ds0U_zKR.js.map} +1 -1
  237. package/build/server/chunks/{_server.ts-DlKT-RbM.js → _server.ts-DsVsFcf8.js} +15 -10
  238. package/build/server/chunks/_server.ts-DsVsFcf8.js.map +1 -0
  239. package/build/server/chunks/{_server.ts-BCpQ8Qdr.js → _server.ts-Du3PIYf8.js} +6 -6
  240. package/build/server/chunks/{_server.ts-BCpQ8Qdr.js.map → _server.ts-Du3PIYf8.js.map} +1 -1
  241. package/build/server/chunks/{_server.ts-3bBG0DBN.js → _server.ts-Duzj6Wm_.js} +6 -18
  242. package/build/server/chunks/_server.ts-Duzj6Wm_.js.map +1 -0
  243. package/build/server/chunks/{_server.ts-BGTw6w-C.js → _server.ts-DyaoaWIS.js} +7 -7
  244. package/build/server/chunks/{_server.ts-BGTw6w-C.js.map → _server.ts-DyaoaWIS.js.map} +1 -1
  245. package/build/server/chunks/{_server.ts-CxH-7UEc.js → _server.ts-EYtSo6HZ.js} +6 -6
  246. package/build/server/chunks/{_server.ts-CxH-7UEc.js.map → _server.ts-EYtSo6HZ.js.map} +1 -1
  247. package/build/server/chunks/{_server.ts-BgOS_sDK.js → _server.ts-JvnkkOhX.js} +7 -7
  248. package/build/server/chunks/{_server.ts-BgOS_sDK.js.map → _server.ts-JvnkkOhX.js.map} +1 -1
  249. package/build/server/chunks/{_server.ts-DzV6EO26.js → _server.ts-N0u5ruZe.js} +6 -6
  250. package/build/server/chunks/{_server.ts-DzV6EO26.js.map → _server.ts-N0u5ruZe.js.map} +1 -1
  251. package/build/server/chunks/{_server.ts-D0XsGdhx.js → _server.ts-NdCztCBP.js} +6 -6
  252. package/build/server/chunks/{_server.ts-D0XsGdhx.js.map → _server.ts-NdCztCBP.js.map} +1 -1
  253. package/build/server/chunks/{_server.ts-CFKGqT4L.js → _server.ts-OGUKP5Tu.js} +6 -6
  254. package/build/server/chunks/{_server.ts-CFKGqT4L.js.map → _server.ts-OGUKP5Tu.js.map} +1 -1
  255. package/build/server/chunks/{_server.ts-DuO_GU5A.js → _server.ts-Q1KEyBck.js} +6 -6
  256. package/build/server/chunks/{_server.ts-DuO_GU5A.js.map → _server.ts-Q1KEyBck.js.map} +1 -1
  257. package/build/server/chunks/{_server.ts-z5C3PAAB.js → _server.ts-TIRuudir.js} +2 -2
  258. package/build/server/chunks/{_server.ts-z5C3PAAB.js.map → _server.ts-TIRuudir.js.map} +1 -1
  259. package/build/server/chunks/{_server.ts-DXwG4w1_.js → _server.ts-WTZtC5sX.js} +10 -4
  260. package/build/server/chunks/_server.ts-WTZtC5sX.js.map +1 -0
  261. package/build/server/chunks/{_server.ts-DR_9WXW4.js → _server.ts-WsWoJE5V.js} +8 -8
  262. package/build/server/chunks/{_server.ts-DR_9WXW4.js.map → _server.ts-WsWoJE5V.js.map} +1 -1
  263. package/build/server/chunks/{_server.ts-CjeMP5Vf.js → _server.ts-X8GX4ChJ.js} +6 -6
  264. package/build/server/chunks/{_server.ts-CjeMP5Vf.js.map → _server.ts-X8GX4ChJ.js.map} +1 -1
  265. package/build/server/chunks/{_server.ts--F22byeV.js → _server.ts-XIc2PDRd.js} +7 -7
  266. package/build/server/chunks/{_server.ts--F22byeV.js.map → _server.ts-XIc2PDRd.js.map} +1 -1
  267. package/build/server/chunks/{_server.ts-CQeqwCqj.js → _server.ts-YsFgaaVd.js} +6 -6
  268. package/build/server/chunks/{_server.ts-CQeqwCqj.js.map → _server.ts-YsFgaaVd.js.map} +1 -1
  269. package/build/server/chunks/{_server.ts-CpyfojV9.js → _server.ts-bOcb37D9.js} +7 -7
  270. package/build/server/chunks/{_server.ts-CpyfojV9.js.map → _server.ts-bOcb37D9.js.map} +1 -1
  271. package/build/server/chunks/{_server.ts-yZ8CGJNE.js → _server.ts-e_8LykNe.js} +7 -7
  272. package/build/server/chunks/{_server.ts-yZ8CGJNE.js.map → _server.ts-e_8LykNe.js.map} +1 -1
  273. package/build/server/chunks/{_server.ts-CY-GNKZT.js → _server.ts-hLimfy8i.js} +6 -6
  274. package/build/server/chunks/{_server.ts-CY-GNKZT.js.map → _server.ts-hLimfy8i.js.map} +1 -1
  275. package/build/server/chunks/{_server.ts-AC1zqetQ.js → _server.ts-khI1sqja.js} +2 -2
  276. package/build/server/chunks/{_server.ts-AC1zqetQ.js.map → _server.ts-khI1sqja.js.map} +1 -1
  277. package/build/server/chunks/{_server.ts-BF5JzSrs.js → _server.ts-p1Z3DBlr.js} +6 -6
  278. package/build/server/chunks/{_server.ts-BF5JzSrs.js.map → _server.ts-p1Z3DBlr.js.map} +1 -1
  279. package/build/server/chunks/{_server.ts-DvfnkNfI.js → _server.ts-uzB454LO.js} +7 -7
  280. package/build/server/chunks/{_server.ts-DvfnkNfI.js.map → _server.ts-uzB454LO.js.map} +1 -1
  281. package/build/server/chunks/{_server.ts-jqktLs6L.js → _server.ts-wKSTgSwf.js} +6 -6
  282. package/build/server/chunks/{_server.ts-jqktLs6L.js.map → _server.ts-wKSTgSwf.js.map} +1 -1
  283. package/build/server/chunks/addon-helpers-DaC3GR9u.js +153 -0
  284. package/build/server/chunks/addon-helpers-DaC3GR9u.js.map +1 -0
  285. package/build/server/chunks/{admin-update-lock-B-z4UE8R.js → admin-update-lock-Bu3VvAoN.js} +3 -3
  286. package/build/server/chunks/{admin-update-lock-B-z4UE8R.js.map → admin-update-lock-Bu3VvAoN.js.map} +1 -1
  287. package/build/server/chunks/{akm-C4NCZfJB.js → akm-DsJ8_uuW.js} +2 -2
  288. package/build/server/chunks/{akm-C4NCZfJB.js.map → akm-DsJ8_uuW.js.map} +1 -1
  289. package/build/server/chunks/{_server.ts-08JCSzPu.js → bring-up-BBKMJltU.js} +30 -228
  290. package/build/server/chunks/bring-up-BBKMJltU.js.map +1 -0
  291. package/build/server/chunks/{catalog-Czlhb_2V.js → catalog-8d-U0FbY.js} +5 -5
  292. package/build/server/chunks/{catalog-Czlhb_2V.js.map → catalog-8d-U0FbY.js.map} +1 -1
  293. package/build/server/chunks/{client-HEAniq5u.js → client-CHoZA_w9.js} +2 -2
  294. package/build/server/chunks/{client-HEAniq5u.js.map → client-CHoZA_w9.js.map} +1 -1
  295. package/build/server/chunks/{compose-args2-B1cYvF5r.js → compose-args2-C9sLS6QR.js} +2 -2
  296. package/build/server/chunks/compose-args2-C9sLS6QR.js.map +1 -0
  297. package/build/server/chunks/{config-C15S-ENd.js → config-ChxZZk6h.js} +2 -2
  298. package/build/server/chunks/{config-C15S-ENd.js.map → config-ChxZZk6h.js.map} +1 -1
  299. package/build/server/chunks/{docker2-CF7qyd1U.js → docker2-DGq6J3Kp.js} +2 -2
  300. package/build/server/chunks/docker2-DGq6J3Kp.js.map +1 -0
  301. package/build/server/chunks/{docker3-BsPagEza.js → docker3-DFlJ-o_d.js} +2 -2
  302. package/build/server/chunks/{docker3-BsPagEza.js.map → docker3-DFlJ-o_d.js.map} +1 -1
  303. package/build/server/chunks/environment-BYp8JQYM.js.map +1 -1
  304. package/build/server/chunks/{error.svelte-C-lukbaB.js → error.svelte-BXxIEYd4.js} +4 -4
  305. package/build/server/chunks/{error.svelte-C-lukbaB.js.map → error.svelte-BXxIEYd4.js.map} +1 -1
  306. package/build/server/chunks/{features-DltizIi4.js → features-D8Ez2vwC.js} +26 -4
  307. package/build/server/chunks/features-D8Ez2vwC.js.map +1 -0
  308. package/build/server/chunks/{helpers-DWpoPvHz.js → helpers-BrD1e__f.js} +4 -4
  309. package/build/server/chunks/{helpers-DWpoPvHz.js.map → helpers-BrD1e__f.js.map} +1 -1
  310. package/build/server/chunks/{hooks.server-BcdEyWVU.js → hooks.server-Blba-Qw7.js} +9 -9
  311. package/build/server/chunks/{hooks.server-BcdEyWVU.js.map → hooks.server-Blba-Qw7.js.map} +1 -1
  312. package/build/server/chunks/{http-7E5W3vGt.js → http-B4Us23Mo.js} +2 -2
  313. package/build/server/chunks/{http-7E5W3vGt.js.map → http-B4Us23Mo.js.map} +1 -1
  314. package/build/server/chunks/{internal-BNSUwl-r.js → internal-CSnzBDeT.js} +3 -3
  315. package/build/server/chunks/{internal-BNSUwl-r.js.map → internal-CSnzBDeT.js.map} +1 -1
  316. package/build/server/chunks/{landing-DY53l_CN.js → landing-DxFOhZxH.js} +5 -5
  317. package/build/server/chunks/{landing-DY53l_CN.js.map → landing-DxFOhZxH.js.map} +1 -1
  318. package/build/server/chunks/{opencode-target-DYD2zQ4l.js → opencode-target-D4BxXYHJ.js} +3 -3
  319. package/build/server/chunks/{opencode-target-DYD2zQ4l.js.map → opencode-target-D4BxXYHJ.js.map} +1 -1
  320. package/build/server/chunks/{paths-BVdkvR9U.js → paths-6f-5gYkd.js} +2 -2
  321. package/build/server/chunks/{paths-BVdkvR9U.js.map → paths-6f-5gYkd.js.map} +1 -1
  322. package/build/server/chunks/{session-cookie-D2_H1UEW.js → session-cookie-5J3xCH94.js} +2 -2
  323. package/build/server/chunks/{session-cookie-D2_H1UEW.js.map → session-cookie-5J3xCH94.js.map} +1 -1
  324. package/build/server/chunks/{setup-deploy-C1h733rH.js → setup-deploy-DUbX3fHm.js} +2 -2
  325. package/build/server/chunks/{setup-deploy-C1h733rH.js.map → setup-deploy-DUbX3fHm.js.map} +1 -1
  326. package/build/server/chunks/{src-B2-r_9oB.js → src-B2wHibme.js} +55 -70
  327. package/build/server/chunks/src-B2wHibme.js.map +1 -0
  328. package/build/server/chunks/{state-Dkjz2T4C.js → state-JIy0tegD.js} +2 -2
  329. package/build/server/chunks/{state-Dkjz2T4C.js.map → state-JIy0tegD.js.map} +1 -1
  330. package/build/server/chunks/{state2-CS9rhust.js → state2-Br2snAqo.js} +2 -2
  331. package/build/server/chunks/{state2-CS9rhust.js.map → state2-Br2snAqo.js.map} +1 -1
  332. package/build/server/chunks/voice-state.svelte-DU9g_xEh.js +1610 -0
  333. package/build/server/chunks/voice-state.svelte-DU9g_xEh.js.map +1 -0
  334. package/build/server/index.js +1 -1
  335. package/build/server/manifest.js +96 -110
  336. package/build/server/manifest.js.map +1 -1
  337. package/package.json +3 -3
  338. package/build/client/_app/immutable/assets/7.BsquVIMw.css +0 -1
  339. package/build/client/_app/immutable/assets/7.BsquVIMw.css.br +0 -0
  340. package/build/client/_app/immutable/assets/7.BsquVIMw.css.gz +0 -0
  341. package/build/client/_app/immutable/assets/9.D8zTZB7v.css +0 -1
  342. package/build/client/_app/immutable/assets/9.D8zTZB7v.css.br +0 -0
  343. package/build/client/_app/immutable/assets/9.D8zTZB7v.css.gz +0 -0
  344. package/build/client/_app/immutable/chunks/BE_4J5sS.js.br +0 -0
  345. package/build/client/_app/immutable/chunks/BE_4J5sS.js.gz +0 -0
  346. package/build/client/_app/immutable/chunks/BdIq5WIo.js.br +0 -5
  347. package/build/client/_app/immutable/chunks/BdIq5WIo.js.gz +0 -0
  348. package/build/client/_app/immutable/chunks/Clt9pCG1.js.br +0 -0
  349. package/build/client/_app/immutable/chunks/Clt9pCG1.js.gz +0 -0
  350. package/build/client/_app/immutable/chunks/CuKFR3Qo.js.br +0 -0
  351. package/build/client/_app/immutable/chunks/CuKFR3Qo.js.gz +0 -0
  352. package/build/client/_app/immutable/chunks/D1VTYdXF.js +0 -1
  353. package/build/client/_app/immutable/chunks/D1VTYdXF.js.br +0 -0
  354. package/build/client/_app/immutable/chunks/D1VTYdXF.js.gz +0 -0
  355. package/build/client/_app/immutable/chunks/DF5Aoa59.js +0 -1
  356. package/build/client/_app/immutable/chunks/DF5Aoa59.js.br +0 -2
  357. package/build/client/_app/immutable/chunks/DF5Aoa59.js.gz +0 -0
  358. package/build/client/_app/immutable/chunks/DaRQZQEK.js +0 -5
  359. package/build/client/_app/immutable/chunks/DaRQZQEK.js.br +0 -0
  360. package/build/client/_app/immutable/chunks/DaRQZQEK.js.gz +0 -0
  361. package/build/client/_app/immutable/chunks/Dz-hw4Sz.js +0 -5
  362. package/build/client/_app/immutable/chunks/Dz-hw4Sz.js.br +0 -0
  363. package/build/client/_app/immutable/chunks/Dz-hw4Sz.js.gz +0 -0
  364. package/build/client/_app/immutable/chunks/mNzUu332.js.br +0 -0
  365. package/build/client/_app/immutable/chunks/mNzUu332.js.gz +0 -0
  366. package/build/client/_app/immutable/entry/app.DKG33-gU.js.br +0 -0
  367. package/build/client/_app/immutable/entry/app.DKG33-gU.js.gz +0 -0
  368. package/build/client/_app/immutable/entry/start.vDtUfDrT.js +0 -1
  369. package/build/client/_app/immutable/entry/start.vDtUfDrT.js.br +0 -1
  370. package/build/client/_app/immutable/entry/start.vDtUfDrT.js.gz +0 -0
  371. package/build/client/_app/immutable/nodes/0.eA5H3idZ.js.br +0 -0
  372. package/build/client/_app/immutable/nodes/0.eA5H3idZ.js.gz +0 -0
  373. package/build/client/_app/immutable/nodes/1.CvKFymDh.js.br +0 -0
  374. package/build/client/_app/immutable/nodes/1.CvKFymDh.js.gz +0 -0
  375. package/build/client/_app/immutable/nodes/10.DFMf8WUQ.js.br +0 -0
  376. package/build/client/_app/immutable/nodes/10.DFMf8WUQ.js.gz +0 -0
  377. package/build/client/_app/immutable/nodes/11.BZQW5Y67.js +0 -8
  378. package/build/client/_app/immutable/nodes/11.BZQW5Y67.js.br +0 -0
  379. package/build/client/_app/immutable/nodes/11.BZQW5Y67.js.gz +0 -0
  380. package/build/client/_app/immutable/nodes/4.B-36aGPk.js +0 -1
  381. package/build/client/_app/immutable/nodes/4.B-36aGPk.js.br +0 -0
  382. package/build/client/_app/immutable/nodes/4.B-36aGPk.js.gz +0 -0
  383. package/build/client/_app/immutable/nodes/5.bgdUYUlr.js.br +0 -0
  384. package/build/client/_app/immutable/nodes/5.bgdUYUlr.js.gz +0 -0
  385. package/build/client/_app/immutable/nodes/6.D0P837Li.js +0 -2
  386. package/build/client/_app/immutable/nodes/6.D0P837Li.js.br +0 -0
  387. package/build/client/_app/immutable/nodes/6.D0P837Li.js.gz +0 -0
  388. package/build/client/_app/immutable/nodes/7.C4seSCJq.js +0 -14
  389. package/build/client/_app/immutable/nodes/7.C4seSCJq.js.br +0 -0
  390. package/build/client/_app/immutable/nodes/7.C4seSCJq.js.gz +0 -0
  391. package/build/client/_app/immutable/nodes/9.DCgNAMuD.js +0 -128
  392. package/build/client/_app/immutable/nodes/9.DCgNAMuD.js.br +0 -0
  393. package/build/client/_app/immutable/nodes/9.DCgNAMuD.js.gz +0 -0
  394. package/build/server/chunks/0-D9FIO-Bk.js.map +0 -1
  395. package/build/server/chunks/1-ItPJxTHP.js +0 -9
  396. package/build/server/chunks/11-CZj9K6K7.js +0 -9
  397. package/build/server/chunks/11-CZj9K6K7.js.map +0 -1
  398. package/build/server/chunks/6-DxXeT1e3.js +0 -9
  399. package/build/server/chunks/7-CuHe_mFY.js +0 -9
  400. package/build/server/chunks/7-CuHe_mFY.js.map +0 -1
  401. package/build/server/chunks/9-CVIPxN5B.js +0 -9
  402. package/build/server/chunks/9-CVIPxN5B.js.map +0 -1
  403. package/build/server/chunks/IconMic-BbjkE_nG.js +0 -18
  404. package/build/server/chunks/IconMic-BbjkE_nG.js.map +0 -1
  405. package/build/server/chunks/IconStop-DKVpXPKq.js.map +0 -1
  406. package/build/server/chunks/_page.svelte-BcpGl-vl.js +0 -91
  407. package/build/server/chunks/_page.svelte-BcpGl-vl.js.map +0 -1
  408. package/build/server/chunks/_page.svelte-CGEtuNmS.js.map +0 -1
  409. package/build/server/chunks/_page.svelte-FOm-OMQe.js.map +0 -1
  410. package/build/server/chunks/_page.svelte-qxgG6hsh.js.map +0 -1
  411. package/build/server/chunks/_server.ts-08JCSzPu.js.map +0 -1
  412. package/build/server/chunks/_server.ts-3bBG0DBN.js.map +0 -1
  413. package/build/server/chunks/_server.ts-B0MK-ynu.js.map +0 -1
  414. package/build/server/chunks/_server.ts-BS4UTF4H.js +0 -93
  415. package/build/server/chunks/_server.ts-BS4UTF4H.js.map +0 -1
  416. package/build/server/chunks/_server.ts-DXwG4w1_.js.map +0 -1
  417. package/build/server/chunks/_server.ts-DlKT-RbM.js.map +0 -1
  418. package/build/server/chunks/_server.ts-fenM6Iln.js.map +0 -1
  419. package/build/server/chunks/_server.ts-zt3yI2wU.js +0 -97
  420. package/build/server/chunks/_server.ts-zt3yI2wU.js.map +0 -1
  421. package/build/server/chunks/addon-helpers-B7bkHg-K.js +0 -64
  422. package/build/server/chunks/addon-helpers-B7bkHg-K.js.map +0 -1
  423. package/build/server/chunks/compose-args2-B1cYvF5r.js.map +0 -1
  424. package/build/server/chunks/docker2-CF7qyd1U.js.map +0 -1
  425. package/build/server/chunks/features-DltizIi4.js.map +0 -1
  426. package/build/server/chunks/speakable-text-BflxDDdY.js +0 -65
  427. package/build/server/chunks/speakable-text-BflxDDdY.js.map +0 -1
  428. package/build/server/chunks/src-B2-r_9oB.js.map +0 -1
  429. package/build/server/chunks/voice-state.svelte-CSmyLPRH.js +0 -561
  430. package/build/server/chunks/voice-state.svelte-CSmyLPRH.js.map +0 -1
  431. /package/build/client/_app/immutable/chunks/{DD22UF1L.js → DD22UF1L2.js} +0 -0
  432. /package/build/client/_app/immutable/chunks/{DD22UF1L.js.br → DD22UF1L2.js.br} +0 -0
  433. /package/build/client/_app/immutable/chunks/{DD22UF1L.js.gz → DD22UF1L2.js.gz} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"_server.ts-jqktLs6L.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/host/providers/assistant-clis/_toolId_/use-provider/_server.ts.js"],"sourcesContent":["import { Ot as createLogger } from \"../../../../../../../../chunks/compose-args.js\";\nimport { J as useExistingProviderForAssistantCli } from \"../../../../../../../../chunks/src.js\";\nimport { t as getState } from \"../../../../../../../../chunks/state.js\";\nimport { a as getRequestId, c as jsonResponse, d as requireCapability, l as parseJsonBody, r as errorResponse, s as jsonBodyError, u as requireAdmin } from \"../../../../../../../../chunks/helpers.js\";\n//#region src/routes/api/host/providers/assistant-clis/[toolId]/use-provider/+server.ts\nvar logger = createLogger(\"admin.assistant-cli-tools\");\nfunction isAssistantCliToolId(value) {\n\treturn value === \"codex\" || value === \"claude\" || value === \"copilot\" || value === \"pi\";\n}\nvar POST = async (event) => {\n\tconst requestId = getRequestId(event);\n\tconst capabilityError = requireCapability(event, \"host:secrets\", requestId);\n\tif (capabilityError) return capabilityError;\n\tconst authError = requireAdmin(event, requestId);\n\tif (authError) return authError;\n\tconst toolId = event.params.toolId ?? \"\";\n\tif (!isAssistantCliToolId(toolId)) return errorResponse(400, \"bad_request\", \"Invalid assistant CLI tool id\", {}, requestId);\n\tconst result = await parseJsonBody(event.request);\n\tif (\"error\" in result) return jsonBodyError(result, requestId);\n\tconst providerId = typeof result.data.providerId === \"string\" ? result.data.providerId.trim() : \"\";\n\tif (!providerId) return errorResponse(400, \"bad_request\", \"providerId is required\", {}, requestId);\n\ttry {\n\t\tconst writtenPaths = useExistingProviderForAssistantCli(getState(), toolId, providerId);\n\t\tlogger.info(\"assistant CLI provider mapping written\", {\n\t\t\trequestId,\n\t\t\ttoolId,\n\t\t\tproviderId,\n\t\t\twrittenPaths\n\t\t});\n\t\treturn jsonResponse(200, {\n\t\t\tok: true,\n\t\t\ttoolId,\n\t\t\tproviderId,\n\t\t\twrittenPaths\n\t\t}, requestId);\n\t} catch (error) {\n\t\treturn errorResponse(400, \"bad_request\", error instanceof Error ? error.message : \"Failed to write assistant CLI credentials\", {}, requestId);\n\t}\n};\n//#endregion\nexport { POST };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA;AACA,IAAI,MAAM,GAAG,YAAY,CAAC,2BAA2B,CAAC;AACtD,SAAS,oBAAoB,CAAC,KAAK,EAAE;AACrC,CAAC,OAAO,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;AACxF;AACG,IAAC,IAAI,GAAG,OAAO,KAAK,KAAK;AAC5B,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC;AACtC,CAAC,MAAM,eAAe,GAAG,iBAAiB,CAAC,KAAK,EAAE,cAAc,EAAE,SAAS,CAAC;AAC5E,CAAC,IAAI,eAAe,EAAE,OAAO,eAAe;AAC5C,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC;AACjD,CAAC,IAAI,SAAS,EAAE,OAAO,SAAS;AAChC,CAAC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE;AACzC,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,OAAO,aAAa,CAAC,GAAG,EAAE,aAAa,EAAE,+BAA+B,EAAE,EAAE,EAAE,SAAS,CAAC;AAC5H,CAAC,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC;AAClD,CAAC,IAAI,OAAO,IAAI,MAAM,EAAE,OAAO,aAAa,CAAC,MAAM,EAAE,SAAS,CAAC;AAC/D,CAAC,MAAM,UAAU,GAAG,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU,KAAK,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE;AACnG,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,aAAa,CAAC,GAAG,EAAE,aAAa,EAAE,wBAAwB,EAAE,EAAE,EAAE,SAAS,CAAC;AACnG,CAAC,IAAI;AACL,EAAE,MAAM,YAAY,GAAG,kCAAkC,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC;AACzF,EAAE,MAAM,CAAC,IAAI,CAAC,wCAAwC,EAAE;AACxD,GAAG,SAAS;AACZ,GAAG,MAAM;AACT,GAAG,UAAU;AACb,GAAG;AACH,GAAG,CAAC;AACJ,EAAE,OAAO,YAAY,CAAC,GAAG,EAAE;AAC3B,GAAG,EAAE,EAAE,IAAI;AACX,GAAG,MAAM;AACT,GAAG,UAAU;AACb,GAAG;AACH,GAAG,EAAE,SAAS,CAAC;AACf,CAAC,CAAC,CAAC,OAAO,KAAK,EAAE;AACjB,EAAE,OAAO,aAAa,CAAC,GAAG,EAAE,aAAa,EAAE,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,2CAA2C,EAAE,EAAE,EAAE,SAAS,CAAC;AAC/I,CAAC;AACD;;;;"}
1
+ {"version":3,"file":"_server.ts-wKSTgSwf.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/host/providers/assistant-clis/_toolId_/use-provider/_server.ts.js"],"sourcesContent":["import { Dt as createLogger } from \"../../../../../../../../chunks/compose-args.js\";\nimport { q as useExistingProviderForAssistantCli } from \"../../../../../../../../chunks/src.js\";\nimport { t as getState } from \"../../../../../../../../chunks/state.js\";\nimport { a as getRequestId, c as jsonResponse, d as requireCapability, l as parseJsonBody, r as errorResponse, s as jsonBodyError, u as requireAdmin } from \"../../../../../../../../chunks/helpers.js\";\n//#region src/routes/api/host/providers/assistant-clis/[toolId]/use-provider/+server.ts\nvar logger = createLogger(\"admin.assistant-cli-tools\");\nfunction isAssistantCliToolId(value) {\n\treturn value === \"codex\" || value === \"claude\" || value === \"copilot\" || value === \"pi\";\n}\nvar POST = async (event) => {\n\tconst requestId = getRequestId(event);\n\tconst capabilityError = requireCapability(event, \"host:secrets\", requestId);\n\tif (capabilityError) return capabilityError;\n\tconst authError = requireAdmin(event, requestId);\n\tif (authError) return authError;\n\tconst toolId = event.params.toolId ?? \"\";\n\tif (!isAssistantCliToolId(toolId)) return errorResponse(400, \"bad_request\", \"Invalid assistant CLI tool id\", {}, requestId);\n\tconst result = await parseJsonBody(event.request);\n\tif (\"error\" in result) return jsonBodyError(result, requestId);\n\tconst providerId = typeof result.data.providerId === \"string\" ? result.data.providerId.trim() : \"\";\n\tif (!providerId) return errorResponse(400, \"bad_request\", \"providerId is required\", {}, requestId);\n\ttry {\n\t\tconst writtenPaths = useExistingProviderForAssistantCli(getState(), toolId, providerId);\n\t\tlogger.info(\"assistant CLI provider mapping written\", {\n\t\t\trequestId,\n\t\t\ttoolId,\n\t\t\tproviderId,\n\t\t\twrittenPaths\n\t\t});\n\t\treturn jsonResponse(200, {\n\t\t\tok: true,\n\t\t\ttoolId,\n\t\t\tproviderId,\n\t\t\twrittenPaths\n\t\t}, requestId);\n\t} catch (error) {\n\t\treturn errorResponse(400, \"bad_request\", error instanceof Error ? error.message : \"Failed to write assistant CLI credentials\", {}, requestId);\n\t}\n};\n//#endregion\nexport { POST };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA;AACA,IAAI,MAAM,GAAG,YAAY,CAAC,2BAA2B,CAAC;AACtD,SAAS,oBAAoB,CAAC,KAAK,EAAE;AACrC,CAAC,OAAO,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;AACxF;AACG,IAAC,IAAI,GAAG,OAAO,KAAK,KAAK;AAC5B,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC;AACtC,CAAC,MAAM,eAAe,GAAG,iBAAiB,CAAC,KAAK,EAAE,cAAc,EAAE,SAAS,CAAC;AAC5E,CAAC,IAAI,eAAe,EAAE,OAAO,eAAe;AAC5C,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC;AACjD,CAAC,IAAI,SAAS,EAAE,OAAO,SAAS;AAChC,CAAC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE;AACzC,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,OAAO,aAAa,CAAC,GAAG,EAAE,aAAa,EAAE,+BAA+B,EAAE,EAAE,EAAE,SAAS,CAAC;AAC5H,CAAC,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC;AAClD,CAAC,IAAI,OAAO,IAAI,MAAM,EAAE,OAAO,aAAa,CAAC,MAAM,EAAE,SAAS,CAAC;AAC/D,CAAC,MAAM,UAAU,GAAG,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU,KAAK,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE;AACnG,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,aAAa,CAAC,GAAG,EAAE,aAAa,EAAE,wBAAwB,EAAE,EAAE,EAAE,SAAS,CAAC;AACnG,CAAC,IAAI;AACL,EAAE,MAAM,YAAY,GAAG,kCAAkC,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC;AACzF,EAAE,MAAM,CAAC,IAAI,CAAC,wCAAwC,EAAE;AACxD,GAAG,SAAS;AACZ,GAAG,MAAM;AACT,GAAG,UAAU;AACb,GAAG;AACH,GAAG,CAAC;AACJ,EAAE,OAAO,YAAY,CAAC,GAAG,EAAE;AAC3B,GAAG,EAAE,EAAE,IAAI;AACX,GAAG,MAAM;AACT,GAAG,UAAU;AACb,GAAG;AACH,GAAG,EAAE,SAAS,CAAC;AACf,CAAC,CAAC,CAAC,OAAO,KAAK,EAAE;AACjB,EAAE,OAAO,aAAa,CAAC,GAAG,EAAE,aAAa,EAAE,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,2CAA2C,EAAE,EAAE,EAAE,SAAS,CAAC;AAC/I,CAAC;AACD;;;;"}
@@ -0,0 +1,153 @@
1
+ import { ah as listEnabledAddonIds, a2 as getAddonProfiles, a3 as getAddonServiceNames, p as checkDocker, C as composeStop, m as buildComposeOptions, aU as setAddonEnabled, D as createLogger, aV as setAddonProfileSelection } from './src-B2wHibme.js';
2
+ import { r as resetState } from './state-JIy0tegD.js';
3
+ import { e as errorResponse, k as jsonResponse } from './helpers-BrD1e__f.js';
4
+ import { w as withAdminUpdateLock } from './admin-update-lock-Bu3VvAoN.js';
5
+ import { V as VOICE_ADDON, e as engageVoiceAddon } from './bring-up-BBKMJltU.js';
6
+
7
+ //#region src/lib/server/addon-helpers.ts
8
+ /**
9
+ * Shared addon enable/disable logic for admin route handlers.
10
+ *
11
+ * Both /admin/addons and /admin/addons/:name share the same POST flow:
12
+ * validate → stop running services if disabling → mutate state → audit.
13
+ * This module houses the shared mutation step so neither route duplicates it.
14
+ */
15
+ var logger = createLogger("addon-helpers");
16
+ /**
17
+ * Stop running services if disabling, then call setAddonEnabled.
18
+ */
19
+ async function performAddonToggleMutation(state, name, requestedEnabled, requestId) {
20
+ const wasEnabled = listEnabledAddonIds(state.homeDir).includes(name);
21
+ const nextEnabled = requestedEnabled !== void 0 ? requestedEnabled : wasEnabled;
22
+ if (!nextEnabled && wasEnabled) {
23
+ const serviceNames = getAddonServiceNames(state.homeDir, name);
24
+ if (serviceNames.length > 0) {
25
+ if ((await checkDocker()).ok) try {
26
+ await composeStop(serviceNames, buildComposeOptions(state));
27
+ logger.info("stopped addon services before disable", {
28
+ name,
29
+ services: serviceNames,
30
+ requestId
31
+ });
32
+ } catch (err) {
33
+ logger.warn("failed to stop addon services before disable", {
34
+ name,
35
+ services: serviceNames,
36
+ error: String(err),
37
+ requestId
38
+ });
39
+ }
40
+ }
41
+ }
42
+ const mutation = setAddonEnabled(state.homeDir, name, nextEnabled, state);
43
+ if (!mutation.ok) return mutation;
44
+ if (mutation.changed) resetState();
45
+ return {
46
+ ok: true,
47
+ enabled: listEnabledAddonIds(state.homeDir).includes(name),
48
+ changed: mutation.changed
49
+ };
50
+ }
51
+ function performAddonToggle(state, name, requestedEnabled, requestId) {
52
+ return withAdminUpdateLock(state, requestId, async () => {
53
+ const toggle = await performAddonToggleMutation(state, name, requestedEnabled, requestId);
54
+ if (!toggle.ok) return errorResponse(500, "internal_error", toggle.error, {}, requestId);
55
+ return jsonResponse(200, {
56
+ ok: true,
57
+ addon: name,
58
+ enabled: toggle.enabled,
59
+ changed: toggle.changed
60
+ }, requestId);
61
+ });
62
+ }
63
+ /**
64
+ * Voice-addon enable / hardware-profile change: unlike a plain toggle, an
65
+ * enable must actually bring the chosen compose profile up (port pre-flight,
66
+ * first-pull background job, CDI/rootless overlay selection) — the
67
+ * engageVoiceAddon engine. Returns 200 (healthy/warming), 202 (image pulling
68
+ * in the background — the UI polls GET /api/host/addons/voice for the
69
+ * activeJob), 400 (unknown profile), or 502 (bring-up failed).
70
+ */
71
+ function performVoiceEngage(state, requestedProfile, requestId) {
72
+ return withAdminUpdateLock(state, requestId, async (_lock, deferReleaseUntil) => {
73
+ const result = await engageVoiceAddon({
74
+ state,
75
+ wantsVoiceAddon: true,
76
+ requestedProfile
77
+ });
78
+ switch (result.status) {
79
+ case "invalid_profile": return errorResponse(400, "invalid_profile", result.message, {}, requestId);
80
+ case "error":
81
+ if (!result.wasAlreadyEnabled) resetState();
82
+ return jsonResponse(502, {
83
+ ok: false,
84
+ addon: VOICE_ADDON,
85
+ enabled: result.wasAlreadyEnabled || result.steps.some((s) => s.step === "enable" && s.ok),
86
+ voiceAddon: {
87
+ steps: result.steps,
88
+ error: result.error
89
+ }
90
+ }, requestId);
91
+ case "background":
92
+ if (!result.wasAlreadyEnabled) resetState();
93
+ deferReleaseUntil(result.completion);
94
+ return jsonResponse(202, {
95
+ ok: true,
96
+ addon: VOICE_ADDON,
97
+ enabled: true,
98
+ voiceAddon: {
99
+ status: "pulling",
100
+ steps: result.steps,
101
+ message: result.message
102
+ }
103
+ }, requestId);
104
+ case "final":
105
+ if (!result.wasAlreadyEnabled) resetState();
106
+ return jsonResponse(result.healthy || result.warming ? 200 : 502, {
107
+ ok: result.healthy || result.warming,
108
+ addon: VOICE_ADDON,
109
+ enabled: true,
110
+ voiceAddon: {
111
+ steps: result.steps,
112
+ ...result.warming ? { warming: true } : {},
113
+ ...result.healthy || result.warming ? {} : { error: "Voice addon is starting but did not become healthy in time." }
114
+ }
115
+ }, requestId);
116
+ case "disengaged": return jsonResponse(200, {
117
+ ok: true,
118
+ addon: VOICE_ADDON,
119
+ enabled: true
120
+ }, requestId);
121
+ }
122
+ });
123
+ }
124
+ /**
125
+ * Route a POST /api/host/addons(/:name) body to the right mutation:
126
+ * - voice + enable (or a profile change while enabled) → the bring-up engine
127
+ * - voice + profile change while DISABLED → persist the selection only
128
+ * - everything else → the generic enable/disable toggle
129
+ */
130
+ function handleAddonToggleRequest(state, name, body, requestId) {
131
+ const requestedEnabled = typeof body.enabled === "boolean" ? body.enabled : void 0;
132
+ const requestedProfile = typeof body.profile === "string" ? body.profile.trim() : "";
133
+ if (name === "voice" && requestedEnabled !== false) {
134
+ const isEnabled = listEnabledAddonIds(state.homeDir).includes(VOICE_ADDON);
135
+ if (requestedEnabled === true || requestedProfile && isEnabled) return performVoiceEngage(state, requestedProfile, requestId);
136
+ if (requestedProfile && !isEnabled) {
137
+ if (!getAddonProfiles(state.homeDir, "voice").some((p) => p.id === requestedProfile)) return Promise.resolve(errorResponse(400, "invalid_profile", `Unknown voice profile "${requestedProfile}"`, {}, requestId));
138
+ return withAdminUpdateLock(state, requestId, () => {
139
+ setAddonProfileSelection(state.homeDir, VOICE_ADDON, requestedProfile);
140
+ return jsonResponse(200, {
141
+ ok: true,
142
+ addon: VOICE_ADDON,
143
+ enabled: false,
144
+ changed: false
145
+ }, requestId);
146
+ });
147
+ }
148
+ }
149
+ return performAddonToggle(state, name, requestedEnabled, requestId);
150
+ }
151
+
152
+ export { handleAddonToggleRequest as h };
153
+ //# sourceMappingURL=addon-helpers-DaC3GR9u.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addon-helpers-DaC3GR9u.js","sources":["../../../.svelte-kit/adapter-node/chunks/addon-helpers.js"],"sourcesContent":["import { A as setAddonProfileSelection, C as getAddonProfiles, Dt as createLogger, O as listEnabledAddonIds, k as setAddonEnabled, t as buildComposeOptions, w as getAddonServiceNames } from \"./compose-args.js\";\nimport { i as checkDocker, v as composeStop } from \"./docker.js\";\nimport \"./src.js\";\nimport { n as resetState } from \"./state.js\";\nimport { c as jsonResponse, r as errorResponse } from \"./helpers.js\";\nimport { t as withAdminUpdateLock } from \"./admin-update-lock.js\";\nimport { n as engageVoiceAddon, t as VOICE_ADDON } from \"./bring-up.js\";\n//#region src/lib/server/addon-helpers.ts\n/**\n* Shared addon enable/disable logic for admin route handlers.\n*\n* Both /admin/addons and /admin/addons/:name share the same POST flow:\n* validate → stop running services if disabling → mutate state → audit.\n* This module houses the shared mutation step so neither route duplicates it.\n*/\nvar logger = createLogger(\"addon-helpers\");\n/**\n* Stop running services if disabling, then call setAddonEnabled.\n*/\nasync function performAddonToggleMutation(state, name, requestedEnabled, requestId) {\n\tconst wasEnabled = listEnabledAddonIds(state.homeDir).includes(name);\n\tconst nextEnabled = requestedEnabled !== void 0 ? requestedEnabled : wasEnabled;\n\tif (!nextEnabled && wasEnabled) {\n\t\tconst serviceNames = getAddonServiceNames(state.homeDir, name);\n\t\tif (serviceNames.length > 0) {\n\t\t\tif ((await checkDocker()).ok) try {\n\t\t\t\tawait composeStop(serviceNames, buildComposeOptions(state));\n\t\t\t\tlogger.info(\"stopped addon services before disable\", {\n\t\t\t\t\tname,\n\t\t\t\t\tservices: serviceNames,\n\t\t\t\t\trequestId\n\t\t\t\t});\n\t\t\t} catch (err) {\n\t\t\t\tlogger.warn(\"failed to stop addon services before disable\", {\n\t\t\t\t\tname,\n\t\t\t\t\tservices: serviceNames,\n\t\t\t\t\terror: String(err),\n\t\t\t\t\trequestId\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\tconst mutation = setAddonEnabled(state.homeDir, name, nextEnabled, state);\n\tif (!mutation.ok) return mutation;\n\tif (mutation.changed) resetState();\n\treturn {\n\t\tok: true,\n\t\tenabled: listEnabledAddonIds(state.homeDir).includes(name),\n\t\tchanged: mutation.changed\n\t};\n}\nfunction performAddonToggle(state, name, requestedEnabled, requestId) {\n\treturn withAdminUpdateLock(state, requestId, async () => {\n\t\tconst toggle = await performAddonToggleMutation(state, name, requestedEnabled, requestId);\n\t\tif (!toggle.ok) return errorResponse(500, \"internal_error\", toggle.error, {}, requestId);\n\t\treturn jsonResponse(200, {\n\t\t\tok: true,\n\t\t\taddon: name,\n\t\t\tenabled: toggle.enabled,\n\t\t\tchanged: toggle.changed\n\t\t}, requestId);\n\t});\n}\n/**\n* Voice-addon enable / hardware-profile change: unlike a plain toggle, an\n* enable must actually bring the chosen compose profile up (port pre-flight,\n* first-pull background job, CDI/rootless overlay selection) — the\n* engageVoiceAddon engine. Returns 200 (healthy/warming), 202 (image pulling\n* in the background — the UI polls GET /api/host/addons/voice for the\n* activeJob), 400 (unknown profile), or 502 (bring-up failed).\n*/\nfunction performVoiceEngage(state, requestedProfile, requestId) {\n\treturn withAdminUpdateLock(state, requestId, async (_lock, deferReleaseUntil) => {\n\t\tconst result = await engageVoiceAddon({\n\t\t\tstate,\n\t\t\twantsVoiceAddon: true,\n\t\t\trequestedProfile\n\t\t});\n\t\tswitch (result.status) {\n\t\t\tcase \"invalid_profile\": return errorResponse(400, \"invalid_profile\", result.message, {}, requestId);\n\t\t\tcase \"error\":\n\t\t\t\tif (!result.wasAlreadyEnabled) resetState();\n\t\t\t\treturn jsonResponse(502, {\n\t\t\t\t\tok: false,\n\t\t\t\t\taddon: VOICE_ADDON,\n\t\t\t\t\tenabled: result.wasAlreadyEnabled || result.steps.some((s) => s.step === \"enable\" && s.ok),\n\t\t\t\t\tvoiceAddon: {\n\t\t\t\t\t\tsteps: result.steps,\n\t\t\t\t\t\terror: result.error\n\t\t\t\t\t}\n\t\t\t\t}, requestId);\n\t\t\tcase \"background\":\n\t\t\t\tif (!result.wasAlreadyEnabled) resetState();\n\t\t\t\tdeferReleaseUntil(result.completion);\n\t\t\t\treturn jsonResponse(202, {\n\t\t\t\t\tok: true,\n\t\t\t\t\taddon: VOICE_ADDON,\n\t\t\t\t\tenabled: true,\n\t\t\t\t\tvoiceAddon: {\n\t\t\t\t\t\tstatus: \"pulling\",\n\t\t\t\t\t\tsteps: result.steps,\n\t\t\t\t\t\tmessage: result.message\n\t\t\t\t\t}\n\t\t\t\t}, requestId);\n\t\t\tcase \"final\":\n\t\t\t\tif (!result.wasAlreadyEnabled) resetState();\n\t\t\t\treturn jsonResponse(result.healthy || result.warming ? 200 : 502, {\n\t\t\t\t\tok: result.healthy || result.warming,\n\t\t\t\t\taddon: VOICE_ADDON,\n\t\t\t\t\tenabled: true,\n\t\t\t\t\tvoiceAddon: {\n\t\t\t\t\t\tsteps: result.steps,\n\t\t\t\t\t\t...result.warming ? { warming: true } : {},\n\t\t\t\t\t\t...result.healthy || result.warming ? {} : { error: \"Voice addon is starting but did not become healthy in time.\" }\n\t\t\t\t\t}\n\t\t\t\t}, requestId);\n\t\t\tcase \"disengaged\": return jsonResponse(200, {\n\t\t\t\tok: true,\n\t\t\t\taddon: VOICE_ADDON,\n\t\t\t\tenabled: true\n\t\t\t}, requestId);\n\t\t}\n\t});\n}\n/**\n* Route a POST /api/host/addons(/:name) body to the right mutation:\n* - voice + enable (or a profile change while enabled) → the bring-up engine\n* - voice + profile change while DISABLED → persist the selection only\n* - everything else → the generic enable/disable toggle\n*/\nfunction handleAddonToggleRequest(state, name, body, requestId) {\n\tconst requestedEnabled = typeof body.enabled === \"boolean\" ? body.enabled : void 0;\n\tconst requestedProfile = typeof body.profile === \"string\" ? body.profile.trim() : \"\";\n\tif (name === \"voice\" && requestedEnabled !== false) {\n\t\tconst isEnabled = listEnabledAddonIds(state.homeDir).includes(VOICE_ADDON);\n\t\tif (requestedEnabled === true || requestedProfile && isEnabled) return performVoiceEngage(state, requestedProfile, requestId);\n\t\tif (requestedProfile && !isEnabled) {\n\t\t\tif (!getAddonProfiles(state.homeDir, \"voice\").some((p) => p.id === requestedProfile)) return Promise.resolve(errorResponse(400, \"invalid_profile\", `Unknown voice profile \"${requestedProfile}\"`, {}, requestId));\n\t\t\treturn withAdminUpdateLock(state, requestId, () => {\n\t\t\t\tsetAddonProfileSelection(state.homeDir, VOICE_ADDON, requestedProfile);\n\t\t\t\treturn jsonResponse(200, {\n\t\t\t\t\tok: true,\n\t\t\t\t\taddon: VOICE_ADDON,\n\t\t\t\t\tenabled: false,\n\t\t\t\t\tchanged: false\n\t\t\t\t}, requestId);\n\t\t\t});\n\t\t}\n\t}\n\treturn performAddonToggle(state, name, requestedEnabled, requestId);\n}\n//#endregion\nexport { handleAddonToggleRequest as t };\n"],"names":[],"mappings":";;;;;;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,GAAG,YAAY,CAAC,eAAe,CAAC;AAC1C;AACA;AACA;AACA,eAAe,0BAA0B,CAAC,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE;AACpF,CAAC,MAAM,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;AACrE,CAAC,MAAM,WAAW,GAAG,gBAAgB,KAAK,MAAM,GAAG,gBAAgB,GAAG,UAAU;AAChF,CAAC,IAAI,CAAC,WAAW,IAAI,UAAU,EAAE;AACjC,EAAE,MAAM,YAAY,GAAG,oBAAoB,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;AAChE,EAAE,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/B,GAAG,IAAI,CAAC,MAAM,WAAW,EAAE,EAAE,EAAE,EAAE,IAAI;AACrC,IAAI,MAAM,WAAW,CAAC,YAAY,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC;AAC/D,IAAI,MAAM,CAAC,IAAI,CAAC,uCAAuC,EAAE;AACzD,KAAK,IAAI;AACT,KAAK,QAAQ,EAAE,YAAY;AAC3B,KAAK;AACL,KAAK,CAAC;AACN,GAAG,CAAC,CAAC,OAAO,GAAG,EAAE;AACjB,IAAI,MAAM,CAAC,IAAI,CAAC,8CAA8C,EAAE;AAChE,KAAK,IAAI;AACT,KAAK,QAAQ,EAAE,YAAY;AAC3B,KAAK,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC;AACvB,KAAK;AACL,KAAK,CAAC;AACN,GAAG;AACH,EAAE;AACF,CAAC;AACD,CAAC,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC;AAC1E,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,QAAQ;AAClC,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE;AACnC,CAAC,OAAO;AACR,EAAE,EAAE,EAAE,IAAI;AACV,EAAE,OAAO,EAAE,mBAAmB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC5D,EAAE,OAAO,EAAE,QAAQ,CAAC;AACpB,EAAE;AACF;AACA,SAAS,kBAAkB,CAAC,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE;AACtE,CAAC,OAAO,mBAAmB,CAAC,KAAK,EAAE,SAAS,EAAE,YAAY;AAC1D,EAAE,MAAM,MAAM,GAAG,MAAM,0BAA0B,CAAC,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,CAAC;AAC3F,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,aAAa,CAAC,GAAG,EAAE,gBAAgB,EAAE,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,SAAS,CAAC;AAC1F,EAAE,OAAO,YAAY,CAAC,GAAG,EAAE;AAC3B,GAAG,EAAE,EAAE,IAAI;AACX,GAAG,KAAK,EAAE,IAAI;AACd,GAAG,OAAO,EAAE,MAAM,CAAC,OAAO;AAC1B,GAAG,OAAO,EAAE,MAAM,CAAC;AACnB,GAAG,EAAE,SAAS,CAAC;AACf,CAAC,CAAC,CAAC;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,kBAAkB,CAAC,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE;AAChE,CAAC,OAAO,mBAAmB,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,KAAK,EAAE,iBAAiB,KAAK;AAClF,EAAE,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC;AACxC,GAAG,KAAK;AACR,GAAG,eAAe,EAAE,IAAI;AACxB,GAAG;AACH,GAAG,CAAC;AACJ,EAAE,QAAQ,MAAM,CAAC,MAAM;AACvB,GAAG,KAAK,iBAAiB,EAAE,OAAO,aAAa,CAAC,GAAG,EAAE,iBAAiB,EAAE,MAAM,CAAC,OAAO,EAAE,EAAE,EAAE,SAAS,CAAC;AACtG,GAAG,KAAK,OAAO;AACf,IAAI,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,UAAU,EAAE;AAC/C,IAAI,OAAO,YAAY,CAAC,GAAG,EAAE;AAC7B,KAAK,EAAE,EAAE,KAAK;AACd,KAAK,KAAK,EAAE,WAAW;AACvB,KAAK,OAAO,EAAE,MAAM,CAAC,iBAAiB,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,EAAE,CAAC;AAC/F,KAAK,UAAU,EAAE;AACjB,MAAM,KAAK,EAAE,MAAM,CAAC,KAAK;AACzB,MAAM,KAAK,EAAE,MAAM,CAAC;AACpB;AACA,KAAK,EAAE,SAAS,CAAC;AACjB,GAAG,KAAK,YAAY;AACpB,IAAI,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,UAAU,EAAE;AAC/C,IAAI,iBAAiB,CAAC,MAAM,CAAC,UAAU,CAAC;AACxC,IAAI,OAAO,YAAY,CAAC,GAAG,EAAE;AAC7B,KAAK,EAAE,EAAE,IAAI;AACb,KAAK,KAAK,EAAE,WAAW;AACvB,KAAK,OAAO,EAAE,IAAI;AAClB,KAAK,UAAU,EAAE;AACjB,MAAM,MAAM,EAAE,SAAS;AACvB,MAAM,KAAK,EAAE,MAAM,CAAC,KAAK;AACzB,MAAM,OAAO,EAAE,MAAM,CAAC;AACtB;AACA,KAAK,EAAE,SAAS,CAAC;AACjB,GAAG,KAAK,OAAO;AACf,IAAI,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,UAAU,EAAE;AAC/C,IAAI,OAAO,YAAY,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,GAAG,GAAG,GAAG,GAAG,EAAE;AACtE,KAAK,EAAE,EAAE,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO;AACzC,KAAK,KAAK,EAAE,WAAW;AACvB,KAAK,OAAO,EAAE,IAAI;AAClB,KAAK,UAAU,EAAE;AACjB,MAAM,KAAK,EAAE,MAAM,CAAC,KAAK;AACzB,MAAM,GAAG,MAAM,CAAC,OAAO,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE;AAChD,MAAM,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,6DAA6D;AACvH;AACA,KAAK,EAAE,SAAS,CAAC;AACjB,GAAG,KAAK,YAAY,EAAE,OAAO,YAAY,CAAC,GAAG,EAAE;AAC/C,IAAI,EAAE,EAAE,IAAI;AACZ,IAAI,KAAK,EAAE,WAAW;AACtB,IAAI,OAAO,EAAE;AACb,IAAI,EAAE,SAAS,CAAC;AAChB;AACA,CAAC,CAAC,CAAC;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,wBAAwB,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE;AAChE,CAAC,MAAM,gBAAgB,GAAG,OAAO,IAAI,CAAC,OAAO,KAAK,SAAS,GAAG,IAAI,CAAC,OAAO,GAAG,MAAM;AACnF,CAAC,MAAM,gBAAgB,GAAG,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE;AACrF,CAAC,IAAI,IAAI,KAAK,OAAO,IAAI,gBAAgB,KAAK,KAAK,EAAE;AACrD,EAAE,MAAM,SAAS,GAAG,mBAAmB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;AAC5E,EAAE,IAAI,gBAAgB,KAAK,IAAI,IAAI,gBAAgB,IAAI,SAAS,EAAE,OAAO,kBAAkB,CAAC,KAAK,EAAE,gBAAgB,EAAE,SAAS,CAAC;AAC/H,EAAE,IAAI,gBAAgB,IAAI,CAAC,SAAS,EAAE;AACtC,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,gBAAgB,CAAC,EAAE,OAAO,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,EAAE,iBAAiB,EAAE,CAAC,uBAAuB,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;AACpN,GAAG,OAAO,mBAAmB,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM;AACtD,IAAI,wBAAwB,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,gBAAgB,CAAC;AAC1E,IAAI,OAAO,YAAY,CAAC,GAAG,EAAE;AAC7B,KAAK,EAAE,EAAE,IAAI;AACb,KAAK,KAAK,EAAE,WAAW;AACvB,KAAK,OAAO,EAAE,KAAK;AACnB,KAAK,OAAO,EAAE;AACd,KAAK,EAAE,SAAS,CAAC;AACjB,GAAG,CAAC,CAAC;AACL,EAAE;AACF,CAAC;AACD,CAAC,OAAO,kBAAkB,CAAC,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,CAAC;AACpE;;;;"}
@@ -1,5 +1,5 @@
1
- import { a as acquireInstallLock, aI as releaseInstallLock } from './src-B2-r_9oB.js';
2
- import { e as errorResponse } from './helpers-DWpoPvHz.js';
1
+ import { a as acquireInstallLock, aI as releaseInstallLock } from './src-B2wHibme.js';
2
+ import { e as errorResponse } from './helpers-BrD1e__f.js';
3
3
 
4
4
  //#region src/lib/server/admin-update-lock.ts
5
5
  var INSTALL_IN_PROGRESS_MESSAGE = "Another install or update is already running. Wait for it to finish, or run 'openpalm unlock' to clear a stale lock.";
@@ -21,4 +21,4 @@ function withAdminUpdateLock(state, requestId, run) {
21
21
  }
22
22
 
23
23
  export { withAdminUpdateLock as w };
24
- //# sourceMappingURL=admin-update-lock-B-z4UE8R.js.map
24
+ //# sourceMappingURL=admin-update-lock-Bu3VvAoN.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"admin-update-lock-B-z4UE8R.js","sources":["../../../.svelte-kit/adapter-node/chunks/admin-update-lock.js"],"sourcesContent":["import { d as acquireInstallLock, m as releaseInstallLock } from \"./compose-args.js\";\nimport \"./src.js\";\nimport { r as errorResponse } from \"./helpers.js\";\n//#region src/lib/server/admin-update-lock.ts\nvar INSTALL_IN_PROGRESS_MESSAGE = \"Another install or update is already running. Wait for it to finish, or run 'openpalm unlock' to clear a stale lock.\";\n/** Serialize rollback-protected admin mutations with lifecycle updates. */\nfunction withAdminUpdateLock(state, requestId, run) {\n\tconst lock = acquireInstallLock(state.dataDir);\n\tif (!lock) return Promise.resolve(errorResponse(409, \"install_in_progress\", INSTALL_IN_PROGRESS_MESSAGE, {}, requestId));\n\treturn (async () => {\n\t\tconst deferred = { work: null };\n\t\ttry {\n\t\t\treturn await run(lock, (work) => {\n\t\t\t\tdeferred.work = work;\n\t\t\t});\n\t\t} finally {\n\t\t\tif (deferred.work) deferred.work.then(() => releaseInstallLock(lock), () => releaseInstallLock(lock));\n\t\t\telse releaseInstallLock(lock);\n\t\t}\n\t})();\n}\n//#endregion\nexport { withAdminUpdateLock as t };\n"],"names":[],"mappings":";;;AAGA;AACA,IAAI,2BAA2B,GAAG,sHAAsH;AACxJ;AACA,SAAS,mBAAmB,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE;AACpD,CAAC,MAAM,IAAI,GAAG,kBAAkB,CAAC,KAAK,CAAC,OAAO,CAAC;AAC/C,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;AACzH,CAAC,OAAO,CAAC,YAAY;AACrB,EAAE,MAAM,QAAQ,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE;AACjC,EAAE,IAAI;AACN,GAAG,OAAO,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK;AACpC,IAAI,QAAQ,CAAC,IAAI,GAAG,IAAI;AACxB,GAAG,CAAC,CAAC;AACL,EAAE,CAAC,SAAS;AACZ,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,kBAAkB,CAAC,IAAI,CAAC,EAAE,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;AACxG,QAAQ,kBAAkB,CAAC,IAAI,CAAC;AAChC,EAAE;AACF,CAAC,CAAC,GAAG;AACL;;;;"}
1
+ {"version":3,"file":"admin-update-lock-Bu3VvAoN.js","sources":["../../../.svelte-kit/adapter-node/chunks/admin-update-lock.js"],"sourcesContent":["import { d as acquireInstallLock, m as releaseInstallLock } from \"./compose-args.js\";\nimport \"./src.js\";\nimport { r as errorResponse } from \"./helpers.js\";\n//#region src/lib/server/admin-update-lock.ts\nvar INSTALL_IN_PROGRESS_MESSAGE = \"Another install or update is already running. Wait for it to finish, or run 'openpalm unlock' to clear a stale lock.\";\n/** Serialize rollback-protected admin mutations with lifecycle updates. */\nfunction withAdminUpdateLock(state, requestId, run) {\n\tconst lock = acquireInstallLock(state.dataDir);\n\tif (!lock) return Promise.resolve(errorResponse(409, \"install_in_progress\", INSTALL_IN_PROGRESS_MESSAGE, {}, requestId));\n\treturn (async () => {\n\t\tconst deferred = { work: null };\n\t\ttry {\n\t\t\treturn await run(lock, (work) => {\n\t\t\t\tdeferred.work = work;\n\t\t\t});\n\t\t} finally {\n\t\t\tif (deferred.work) deferred.work.then(() => releaseInstallLock(lock), () => releaseInstallLock(lock));\n\t\t\telse releaseInstallLock(lock);\n\t\t}\n\t})();\n}\n//#endregion\nexport { withAdminUpdateLock as t };\n"],"names":[],"mappings":";;;AAGA;AACA,IAAI,2BAA2B,GAAG,sHAAsH;AACxJ;AACA,SAAS,mBAAmB,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE;AACpD,CAAC,MAAM,IAAI,GAAG,kBAAkB,CAAC,KAAK,CAAC,OAAO,CAAC;AAC/C,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;AACzH,CAAC,OAAO,CAAC,YAAY;AACrB,EAAE,MAAM,QAAQ,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE;AACjC,EAAE,IAAI;AACN,GAAG,OAAO,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK;AACpC,IAAI,QAAQ,CAAC,IAAI,GAAG,IAAI;AACxB,GAAG,CAAC,CAAC;AACL,EAAE,CAAC,SAAS;AACZ,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,kBAAkB,CAAC,IAAI,CAAC,EAAE,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;AACxG,QAAQ,kBAAkB,CAAC,IAAI,CAAC;AAChC,EAAE;AACF,CAAC,CAAC,GAAG;AACL;;;;"}
@@ -1,5 +1,5 @@
1
1
  import { l as lookupEmbeddingDims } from './network-preset-BvVAoagy.js';
2
- import { Q as detectLocalProviders, $ as fetchProviderModels, k as buildAkmEndpoint } from './src-B2-r_9oB.js';
2
+ import { Q as detectLocalProviders, $ as fetchProviderModels, k as buildAkmEndpoint } from './src-B2wHibme.js';
3
3
 
4
4
  //#region src/lib/server/akm.ts
5
5
  var EMBEDDING_MODEL_HINT_RE = /(?:^|[-/_.])(embed|embedding|bge|gte|e5|nomic|mxbai|arctic-embed|minilm)/i;
@@ -148,4 +148,4 @@ async function detectEmbeddingSettings(state) {
148
148
  }
149
149
 
150
150
  export { detectEmbeddingSettings as d, safeParseJsonObject as s, testEmbeddingSettings as t };
151
- //# sourceMappingURL=akm-C4NCZfJB.js.map
151
+ //# sourceMappingURL=akm-DsJ8_uuW.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"akm-C4NCZfJB.js","sources":["../../../.svelte-kit/adapter-node/chunks/akm.js"],"sourcesContent":["import { o as lookupEmbeddingDims } from \"./provider-constants.js\";\nimport { D as buildAkmEndpoint, O as fetchProviderModels, p as detectLocalProviders } from \"./src.js\";\n//#region src/lib/server/akm.ts\nvar EMBEDDING_MODEL_HINT_RE = /(?:^|[-/_.])(embed|embedding|bge|gte|e5|nomic|mxbai|arctic-embed|minilm)/i;\nvar PREFERRED_EMBEDDING_MODELS = {\n\tollama: [\n\t\t\"mxbai-embed-large:latest\",\n\t\t\"mxbai-embed-large\",\n\t\t\"mxbai-embed-large-v1\",\n\t\t\"nomic-embed-text:latest\",\n\t\t\"nomic-embed-text\",\n\t\t\"snowflake-arctic-embed\",\n\t\t\"all-minilm\"\n\t],\n\t\"model-runner\": [\"ai/mxbai-embed-large-v1\"],\n\tlmstudio: [\n\t\t\"mxbai-embed-large-v1\",\n\t\t\"mxbai-embed-large\",\n\t\t\"nomic-embed-text\"\n\t]\n};\nfunction safeParseJsonObject(s) {\n\ttry {\n\t\tconst v = JSON.parse(s);\n\t\treturn v && typeof v === \"object\" ? v : null;\n\t} catch {\n\t\treturn null;\n\t}\n}\nfunction isEmbeddingModel(provider, model) {\n\treturn lookupEmbeddingDims(provider, model) > 0 || EMBEDDING_MODEL_HINT_RE.test(model);\n}\nfunction compareModelPreference(provider, left, right) {\n\tconst preferred = PREFERRED_EMBEDDING_MODELS[provider] ?? [];\n\tconst leftIdx = preferred.indexOf(left);\n\tconst rightIdx = preferred.indexOf(right);\n\tif (leftIdx >= 0 || rightIdx >= 0) {\n\t\tif (leftIdx < 0) return 1;\n\t\tif (rightIdx < 0) return -1;\n\t\treturn leftIdx - rightIdx;\n\t}\n\tconst dimDelta = lookupEmbeddingDims(provider, right) - lookupEmbeddingDims(provider, left);\n\tif (dimDelta !== 0) return dimDelta;\n\treturn left.localeCompare(right);\n}\nfunction bestEmbeddingModel(provider, models) {\n\tconst candidates = models.filter((model) => isEmbeddingModel(provider, model));\n\tif (candidates.length === 0) return null;\n\treturn [...candidates].sort((left, right) => compareModelPreference(provider, left, right))[0] ?? null;\n}\nfunction detectionPriority(left, right) {\n\tconst order = [\n\t\t\"ollama\",\n\t\t\"model-runner\",\n\t\t\"lmstudio\"\n\t];\n\treturn order.indexOf(left.provider) - order.indexOf(right.provider);\n}\nfunction describeUpstreamError(status, raw) {\n\ttry {\n\t\tconst parsed = JSON.parse(raw);\n\t\tconst error = parsed.error;\n\t\tif (typeof error === \"string\" && error) return `Embedding request failed (${status}): ${error}`;\n\t\tif (error && typeof error === \"object\" && typeof error.message === \"string\") return `Embedding request failed (${status}): ${error.message}`;\n\t\tif (typeof parsed.message === \"string\" && parsed.message) return `Embedding request failed (${status}): ${parsed.message}`;\n\t} catch {}\n\treturn `Embedding request failed (${status}).`;\n}\nasync function testEmbeddingSettings(input) {\n\tconst endpoint = input.endpoint.trim();\n\tconst model = input.model.trim();\n\tif (!endpoint) return {\n\t\tok: false,\n\t\tmessage: \"Endpoint is required.\"\n\t};\n\tif (!model) return {\n\t\tok: false,\n\t\tmessage: \"Model is required.\"\n\t};\n\tconst headers = { \"content-type\": \"application/json\" };\n\tconst apiKey = input.apiKey?.trim() ?? \"\";\n\tif (apiKey) headers.authorization = `Bearer ${apiKey}`;\n\ttry {\n\t\tconst response = await fetch(endpoint, {\n\t\t\tmethod: \"POST\",\n\t\t\theaders,\n\t\t\tbody: JSON.stringify({\n\t\t\t\tmodel,\n\t\t\t\tinput: [\"OpenPalm embedding settings test\"]\n\t\t\t}),\n\t\t\tsignal: AbortSignal.timeout(1e4)\n\t\t});\n\t\tconst raw = await response.text();\n\t\tif (!response.ok) return {\n\t\t\tok: false,\n\t\t\tmessage: describeUpstreamError(response.status, raw)\n\t\t};\n\t\tconst parsed = safeParseJsonObject(raw);\n\t\tconst first = (Array.isArray(parsed?.data) ? parsed.data : [])[0];\n\t\tconst embedding = first && typeof first === \"object\" ? first.embedding : void 0;\n\t\tif (!Array.isArray(embedding) || embedding.length === 0 || !embedding.every((value) => typeof value === \"number\")) return {\n\t\t\tok: false,\n\t\t\tmessage: \"Endpoint responded, but not with an OpenAI-compatible embeddings payload.\"\n\t\t};\n\t\tconst dimension = embedding.length;\n\t\tconst configuredDimension = typeof input.dimension === \"number\" && input.dimension > 0 ? input.dimension : null;\n\t\treturn {\n\t\t\tok: true,\n\t\t\tdimension,\n\t\t\tmessage: configuredDimension && configuredDimension !== dimension ? `Embedding endpoint is working. Returned ${dimension} dimensions; the form has been updated to match.` : `Embedding endpoint is working. Returned ${dimension} dimensions.`,\n\t\t\tprovider: input.provider\n\t\t};\n\t} catch (error) {\n\t\treturn {\n\t\t\tok: false,\n\t\t\tmessage: error instanceof Error && error.name === \"TimeoutError\" ? \"Embedding request timed out after 10 seconds.\" : error instanceof Error ? `Embedding request failed: ${error.message}` : \"Embedding request failed.\"\n\t\t};\n\t}\n}\nasync function detectEmbeddingSettings(state) {\n\tconst detected = (await detectLocalProviders()).filter((provider) => provider.available && provider.url).sort(detectionPriority);\n\tfor (const provider of detected) {\n\t\tconst modelsResult = await fetchProviderModels(provider.provider, \"\", provider.url, state.homeDir);\n\t\tif (modelsResult.status !== \"ok\") continue;\n\t\tconst model = bestEmbeddingModel(provider.provider, modelsResult.models);\n\t\tif (!model) continue;\n\t\tconst endpoint = buildAkmEndpoint(provider.provider, provider.url, \"/embeddings\");\n\t\tconst probe = await testEmbeddingSettings({\n\t\t\tendpoint,\n\t\t\tmodel,\n\t\t\tprovider: provider.provider\n\t\t});\n\t\tif (!probe.ok) continue;\n\t\treturn {\n\t\t\tok: true,\n\t\t\tendpoint,\n\t\t\tmodel,\n\t\t\tprovider: provider.provider,\n\t\t\tdimension: probe.dimension,\n\t\t\tmessage: `Detected ${provider.provider} embedding model ${model}.`\n\t\t};\n\t}\n\treturn {\n\t\tok: false,\n\t\tmessage: \"No working local embedding endpoint was detected. Tried common runtimes such as Ollama, Docker Model Runner, and LM Studio.\"\n\t};\n}\n//#endregion\nexport { safeParseJsonObject as n, testEmbeddingSettings as r, detectEmbeddingSettings as t };\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"akm-DsJ8_uuW.js","sources":["../../../.svelte-kit/adapter-node/chunks/akm.js"],"sourcesContent":["import { o as lookupEmbeddingDims } from \"./provider-constants.js\";\nimport { D as fetchProviderModels, E as buildAkmEndpoint, f as detectLocalProviders } from \"./src.js\";\n//#region src/lib/server/akm.ts\nvar EMBEDDING_MODEL_HINT_RE = /(?:^|[-/_.])(embed|embedding|bge|gte|e5|nomic|mxbai|arctic-embed|minilm)/i;\nvar PREFERRED_EMBEDDING_MODELS = {\n\tollama: [\n\t\t\"mxbai-embed-large:latest\",\n\t\t\"mxbai-embed-large\",\n\t\t\"mxbai-embed-large-v1\",\n\t\t\"nomic-embed-text:latest\",\n\t\t\"nomic-embed-text\",\n\t\t\"snowflake-arctic-embed\",\n\t\t\"all-minilm\"\n\t],\n\t\"model-runner\": [\"ai/mxbai-embed-large-v1\"],\n\tlmstudio: [\n\t\t\"mxbai-embed-large-v1\",\n\t\t\"mxbai-embed-large\",\n\t\t\"nomic-embed-text\"\n\t]\n};\nfunction safeParseJsonObject(s) {\n\ttry {\n\t\tconst v = JSON.parse(s);\n\t\treturn v && typeof v === \"object\" ? v : null;\n\t} catch {\n\t\treturn null;\n\t}\n}\nfunction isEmbeddingModel(provider, model) {\n\treturn lookupEmbeddingDims(provider, model) > 0 || EMBEDDING_MODEL_HINT_RE.test(model);\n}\nfunction compareModelPreference(provider, left, right) {\n\tconst preferred = PREFERRED_EMBEDDING_MODELS[provider] ?? [];\n\tconst leftIdx = preferred.indexOf(left);\n\tconst rightIdx = preferred.indexOf(right);\n\tif (leftIdx >= 0 || rightIdx >= 0) {\n\t\tif (leftIdx < 0) return 1;\n\t\tif (rightIdx < 0) return -1;\n\t\treturn leftIdx - rightIdx;\n\t}\n\tconst dimDelta = lookupEmbeddingDims(provider, right) - lookupEmbeddingDims(provider, left);\n\tif (dimDelta !== 0) return dimDelta;\n\treturn left.localeCompare(right);\n}\nfunction bestEmbeddingModel(provider, models) {\n\tconst candidates = models.filter((model) => isEmbeddingModel(provider, model));\n\tif (candidates.length === 0) return null;\n\treturn [...candidates].sort((left, right) => compareModelPreference(provider, left, right))[0] ?? null;\n}\nfunction detectionPriority(left, right) {\n\tconst order = [\n\t\t\"ollama\",\n\t\t\"model-runner\",\n\t\t\"lmstudio\"\n\t];\n\treturn order.indexOf(left.provider) - order.indexOf(right.provider);\n}\nfunction describeUpstreamError(status, raw) {\n\ttry {\n\t\tconst parsed = JSON.parse(raw);\n\t\tconst error = parsed.error;\n\t\tif (typeof error === \"string\" && error) return `Embedding request failed (${status}): ${error}`;\n\t\tif (error && typeof error === \"object\" && typeof error.message === \"string\") return `Embedding request failed (${status}): ${error.message}`;\n\t\tif (typeof parsed.message === \"string\" && parsed.message) return `Embedding request failed (${status}): ${parsed.message}`;\n\t} catch {}\n\treturn `Embedding request failed (${status}).`;\n}\nasync function testEmbeddingSettings(input) {\n\tconst endpoint = input.endpoint.trim();\n\tconst model = input.model.trim();\n\tif (!endpoint) return {\n\t\tok: false,\n\t\tmessage: \"Endpoint is required.\"\n\t};\n\tif (!model) return {\n\t\tok: false,\n\t\tmessage: \"Model is required.\"\n\t};\n\tconst headers = { \"content-type\": \"application/json\" };\n\tconst apiKey = input.apiKey?.trim() ?? \"\";\n\tif (apiKey) headers.authorization = `Bearer ${apiKey}`;\n\ttry {\n\t\tconst response = await fetch(endpoint, {\n\t\t\tmethod: \"POST\",\n\t\t\theaders,\n\t\t\tbody: JSON.stringify({\n\t\t\t\tmodel,\n\t\t\t\tinput: [\"OpenPalm embedding settings test\"]\n\t\t\t}),\n\t\t\tsignal: AbortSignal.timeout(1e4)\n\t\t});\n\t\tconst raw = await response.text();\n\t\tif (!response.ok) return {\n\t\t\tok: false,\n\t\t\tmessage: describeUpstreamError(response.status, raw)\n\t\t};\n\t\tconst parsed = safeParseJsonObject(raw);\n\t\tconst first = (Array.isArray(parsed?.data) ? parsed.data : [])[0];\n\t\tconst embedding = first && typeof first === \"object\" ? first.embedding : void 0;\n\t\tif (!Array.isArray(embedding) || embedding.length === 0 || !embedding.every((value) => typeof value === \"number\")) return {\n\t\t\tok: false,\n\t\t\tmessage: \"Endpoint responded, but not with an OpenAI-compatible embeddings payload.\"\n\t\t};\n\t\tconst dimension = embedding.length;\n\t\tconst configuredDimension = typeof input.dimension === \"number\" && input.dimension > 0 ? input.dimension : null;\n\t\treturn {\n\t\t\tok: true,\n\t\t\tdimension,\n\t\t\tmessage: configuredDimension && configuredDimension !== dimension ? `Embedding endpoint is working. Returned ${dimension} dimensions; the form has been updated to match.` : `Embedding endpoint is working. Returned ${dimension} dimensions.`,\n\t\t\tprovider: input.provider\n\t\t};\n\t} catch (error) {\n\t\treturn {\n\t\t\tok: false,\n\t\t\tmessage: error instanceof Error && error.name === \"TimeoutError\" ? \"Embedding request timed out after 10 seconds.\" : error instanceof Error ? `Embedding request failed: ${error.message}` : \"Embedding request failed.\"\n\t\t};\n\t}\n}\nasync function detectEmbeddingSettings(state) {\n\tconst detected = (await detectLocalProviders()).filter((provider) => provider.available && provider.url).sort(detectionPriority);\n\tfor (const provider of detected) {\n\t\tconst modelsResult = await fetchProviderModels(provider.provider, \"\", provider.url, state.homeDir);\n\t\tif (modelsResult.status !== \"ok\") continue;\n\t\tconst model = bestEmbeddingModel(provider.provider, modelsResult.models);\n\t\tif (!model) continue;\n\t\tconst endpoint = buildAkmEndpoint(provider.provider, provider.url, \"/embeddings\");\n\t\tconst probe = await testEmbeddingSettings({\n\t\t\tendpoint,\n\t\t\tmodel,\n\t\t\tprovider: provider.provider\n\t\t});\n\t\tif (!probe.ok) continue;\n\t\treturn {\n\t\t\tok: true,\n\t\t\tendpoint,\n\t\t\tmodel,\n\t\t\tprovider: provider.provider,\n\t\t\tdimension: probe.dimension,\n\t\t\tmessage: `Detected ${provider.provider} embedding model ${model}.`\n\t\t};\n\t}\n\treturn {\n\t\tok: false,\n\t\tmessage: \"No working local embedding endpoint was detected. Tried common runtimes such as Ollama, Docker Model Runner, and LM Studio.\"\n\t};\n}\n//#endregion\nexport { safeParseJsonObject as n, testEmbeddingSettings as r, detectEmbeddingSettings as t };\n"],"names":[],"mappings":"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"}
@@ -1,31 +1,7 @@
1
- import { ax as readStackEnv, c as annotateAddonProfileAvailability, a2 as getAddonProfiles, a1 as getAddonProfileSelection, b as addonProfileId, b7 as writeVoiceVars, ah as listEnabledAddonIds, C as composeStop, m as buildComposeOptions, aV as setAddonProfileSelection, aU as setAddonEnabled, a0 as getAddonProfileAvailability, W as dockerHasNvidiaRuntime, R as detectRootlessDocker, Z as execFileNoThrow, aW as stackDirFor, e as applyStack } from './src-B2-r_9oB.js';
2
- import { g as getState } from './state-Dkjz2T4C.js';
3
- import { d as getRequestId, l as requireCapability, r as requireAdmin, k as jsonResponse, e as errorResponse } from './helpers-DWpoPvHz.js';
4
- import { w as withAdminUpdateLock } from './admin-update-lock-B-z4UE8R.js';
1
+ import { c as annotateAddonProfileAvailability, a2 as getAddonProfiles, a1 as getAddonProfileSelection, b as addonProfileId, aV as setAddonProfileSelection, ah as listEnabledAddonIds, aU as setAddonEnabled, m as buildComposeOptions, a0 as getAddonProfileAvailability, W as dockerHasNvidiaRuntime, R as detectRootlessDocker, Z as execFileNoThrow, aW as stackDirFor, C as composeStop, e as applyStack } from './src-B2wHibme.js';
5
2
  import { existsSync } from 'node:fs';
6
3
  import { join } from 'node:path';
7
4
  import { connect } from 'node:net';
8
- import './chunk-DOvWTNp_.js';
9
- import 'node:module';
10
- import './network-preset-BvVAoagy.js';
11
- import './dist-DtzrgNJ1.js';
12
- import 'node:child_process';
13
- import 'buffer';
14
- import 'node:url';
15
- import 'node:os';
16
- import 'node:crypto';
17
- import 'events';
18
- import 'fs';
19
- import 'node:events';
20
- import 'node:stream';
21
- import 'node:string_decoder';
22
- import 'path';
23
- import 'assert';
24
- import 'zlib';
25
- import 'node:assert';
26
- import 'node:fs/promises';
27
- import './opencode-target-DYD2zQ4l.js';
28
- import './features-DltizIi4.js';
29
5
 
30
6
  //#region src/lib/server/voice-errors.ts
31
7
  /**
@@ -53,10 +29,11 @@ function translateDockerError(stderr) {
53
29
  //#endregion
54
30
  //#region src/lib/server/voice/bring-up.ts
55
31
  /**
56
- * Voice addon bring-up engine — the Docker/compose infrastructure behind
57
- * PUT /api/host/voice. Extracted from the route so the HTTP handler stays a
58
- * thin request-validation + delegation layer (the thin-route-over-service
59
- * pattern used across the host-admin API).
32
+ * Voice addon bring-up engine — the Docker/compose infrastructure behind the
33
+ * voice addon toggle (POST /api/host/addons(/voice) via
34
+ * $lib/server/addon-helpers.performVoiceEngage). Kept out of the route so the
35
+ * HTTP handler stays a thin request-validation + delegation layer (the
36
+ * thin-route-over-service pattern used across the host-admin API).
60
37
  *
61
38
  * Responsibilities:
62
39
  * - Docker image inspection + resolution (dockerImagePresent / resolveServiceImage)
@@ -123,14 +100,28 @@ function resolveDefaultProfile(profiles) {
123
100
  if (firstAvailable) return firstAvailable.id;
124
101
  return profiles[0].id;
125
102
  }
103
+ /**
104
+ * The Capabilities-facing view of the voice addon: annotated hardware
105
+ * profiles, the current selection (falling back to the host-appropriate
106
+ * default), and the in-flight background job when one exists. Served by
107
+ * GET /api/host/addons(/voice) so the Add-ons drawer can render the
108
+ * hardware-profile picker and poll bring-up progress.
109
+ */
110
+ async function voiceAddonInfo(homeDir) {
111
+ const profiles = await annotateAddonProfileAvailability(getAddonProfiles(homeDir, VOICE_ADDON));
112
+ const selectedProfile = getAddonProfileSelection(homeDir, "voice") ?? resolveDefaultProfile(profiles);
113
+ const activeJob = getActiveJob(VOICE_ADDON);
114
+ return {
115
+ profiles,
116
+ selectedProfile,
117
+ ...activeJob ? { activeJob } : {}
118
+ };
119
+ }
126
120
  function voiceHostPort() {
127
121
  const raw = process.env.OP_VOICE_PORT_HOST?.trim();
128
122
  const n = raw ? Number(raw) : NaN;
129
123
  return Number.isFinite(n) && n > 0 ? n : 8880;
130
124
  }
131
- function openpalmVoiceBaseURL() {
132
- return `http://127.0.0.1:${voiceHostPort()}`;
133
- }
134
125
  /**
135
126
  * True when the local docker daemon already has the named image cached.
136
127
  * `docker image inspect` exits 0 only when the image is present locally.
@@ -319,7 +310,7 @@ async function runBringUp(input) {
319
310
  /**
320
311
  * Background variant: runs runBringUp and persists state transitions
321
312
  * into the activeJobs map. Returns nothing — the UI polls GET
322
- * /api/host/voice to observe completion.
313
+ * /api/host/addons to observe completion.
323
314
  */
324
315
  async function runBringUpJob(input) {
325
316
  const steps = [...input.baseSteps];
@@ -357,23 +348,13 @@ async function runBringUpJob(input) {
357
348
  }
358
349
  }
359
350
  /**
360
- * The full PUT /api/host/voice bring-up lifecycle after request validation:
351
+ * The full voice-addon bring-up lifecycle after request validation:
361
352
  * auto-stop when disengaging, else resolve profile → enable addon →
362
353
  * port pre-flight → image inspect → host fallback overlays → background
363
- * short-circuit or synchronous compose-up + /health poll.
354
+ * short-circuit or synchronous compose-up + health wait.
364
355
  */
365
356
  async function engageVoiceAddon(input) {
366
- const { state, wantsVoiceAddon, requestedProfile } = input;
367
- if (!wantsVoiceAddon) {
368
- if (listEnabledAddonIds(state.homeDir).includes("voice")) try {
369
- const voiceServiceNames = getAddonProfiles(state.homeDir, VOICE_ADDON).flatMap((p) => p.services);
370
- const unique = Array.from(new Set(voiceServiceNames));
371
- if (unique.length > 0) await composeStop(unique, buildComposeOptions(state));
372
- } catch (e) {
373
- console.warn("[voice] composeStop on disengage failed:", e);
374
- }
375
- return { status: "disengaged" };
376
- }
357
+ const { state, requestedProfile } = input;
377
358
  const availableProfiles = await annotateAddonProfileAvailability(getAddonProfiles(state.homeDir, VOICE_ADDON));
378
359
  let activeProfile = null;
379
360
  if (requestedProfile) {
@@ -500,7 +481,7 @@ async function engageVoiceAddon(input) {
500
481
  status: "background",
501
482
  wasAlreadyEnabled,
502
483
  steps,
503
- message: "Voice image is downloading in the background (~2–8 GB). Poll GET /api/host/voice for progress; UI auto-refreshes.",
484
+ message: "Voice image is downloading in the background (~2–8 GB). Poll GET /api/host/addons for progress; UI auto-refreshes.",
504
485
  completion: runBringUpJob({
505
486
  state,
506
487
  services,
@@ -533,185 +514,6 @@ async function engageVoiceAddon(input) {
533
514
  warming: outcome.warming
534
515
  };
535
516
  }
536
- //#endregion
537
- //#region src/routes/api/host/voice/+server.ts
538
- var REACHABILITY_TIMEOUT_MS = 1500;
539
- async function probeReachable(baseURL) {
540
- if (!baseURL) return false;
541
- const url = `${baseURL.replace(/\/+$/, "")}/v1/models`;
542
- try {
543
- return (await fetch(url, {
544
- method: "GET",
545
- signal: AbortSignal.timeout(REACHABILITY_TIMEOUT_MS)
546
- })).status < 500;
547
- } catch {
548
- return false;
549
- }
550
- }
551
- var GET = async (event) => {
552
- const requestId = getRequestId(event);
553
- const capabilityError = requireCapability(event, "host:stack:read", requestId);
554
- if (capabilityError) return capabilityError;
555
- const authError = requireAdmin(event, requestId);
556
- if (authError) return authError;
557
- const state = getState();
558
- const env = readStackEnv(state.homeDir);
559
- const ttsBaseURL = env.OP_TTS_BASE_URL ?? "";
560
- const sttBaseURL = env.OP_STT_BASE_URL ?? "";
561
- const profiles = await annotateAddonProfileAvailability(getAddonProfiles(state.homeDir, VOICE_ADDON));
562
- const selectedProfile = getAddonProfileSelection(state.homeDir, "voice") ?? resolveDefaultProfile(profiles);
563
- const [sttReachable, ttsReachable] = await Promise.all([probeReachable(sttBaseURL), probeReachable(ttsBaseURL)]);
564
- return jsonResponse(200, {
565
- tts: {
566
- enabled: true,
567
- engine: env.OP_TTS_ENGINE ?? "",
568
- provider: env.OP_TTS_PROVIDER ?? "",
569
- baseURL: ttsBaseURL,
570
- model: env.OP_TTS_MODEL ?? "",
571
- voice: env.OP_TTS_VOICE ?? ""
572
- },
573
- stt: {
574
- enabled: true,
575
- engine: env.OP_STT_ENGINE ?? "",
576
- provider: env.OP_STT_PROVIDER ?? "",
577
- baseURL: sttBaseURL,
578
- model: env.OP_STT_MODEL ?? "",
579
- language: env.OP_STT_LANGUAGE ?? ""
580
- },
581
- availability: {
582
- stt: {
583
- remoteConfigured: Boolean(sttBaseURL),
584
- remoteReachable: sttReachable
585
- },
586
- tts: {
587
- remoteConfigured: Boolean(ttsBaseURL),
588
- remoteReachable: ttsReachable
589
- }
590
- },
591
- addon: {
592
- profiles,
593
- selectedProfile,
594
- ...getActiveJob("voice") ? { activeJob: getActiveJob(VOICE_ADDON) } : {}
595
- }
596
- }, requestId);
597
- };
598
- function readSection(raw, kind) {
599
- if (!raw || typeof raw !== "object") return null;
600
- const section = {
601
- enabled: raw.enabled !== false,
602
- engine: typeof raw.engine === "string" ? raw.engine : void 0,
603
- provider: typeof raw.provider === "string" ? raw.provider : void 0,
604
- baseURL: typeof raw.baseURL === "string" ? raw.baseURL : void 0,
605
- model: typeof raw.model === "string" ? raw.model : void 0
606
- };
607
- if (kind === "tts" && typeof raw.voice === "string") section.voice = raw.voice;
608
- if (kind === "stt" && typeof raw.language === "string") section.language = raw.language;
609
- return section;
610
- }
611
- var OPENPALM_VOICE_TTS_MODEL = "kokoro";
612
- var OPENPALM_VOICE_STT_MODEL = "whisper-1";
613
- var OPENPALM_VOICE_DEFAULT_VOICE = "bf_isabella";
614
- /**
615
- * For `engine === 'openpalm-voice'`, fill in baseURL/model with the addon's
616
- * preset values when the user didn't provide them. This is the auto-config
617
- * that makes "select OpenPalm Voice → Save" Just Work as long as the addon
618
- * is enabled. The user can still override (e.g. point at a different
619
- * voice host on the LAN).
620
- */
621
- function applyOpenPalmVoicePreset(section, kind) {
622
- if (section.engine !== "openpalm-voice") return;
623
- if (!section.baseURL?.trim()) section.baseURL = openpalmVoiceBaseURL();
624
- if (!section.model?.trim()) section.model = kind === "tts" ? OPENPALM_VOICE_TTS_MODEL : OPENPALM_VOICE_STT_MODEL;
625
- if (kind === "tts" && !section.voice?.trim()) section.voice = OPENPALM_VOICE_DEFAULT_VOICE;
626
- }
627
- function validateSection(section, kind) {
628
- if (!section?.engine) return null;
629
- if (section.engine === "browser" || section.engine === "browser-stt" || section.engine === "browser-tts") return null;
630
- if (section.engine.startsWith("skip-")) return null;
631
- if (!section.baseURL?.trim()) return `Remote ${kind.toUpperCase()} requires an endpoint URL.`;
632
- return null;
633
- }
634
- var PUT = async (event) => {
635
- const requestId = getRequestId(event);
636
- const capabilityError = requireCapability(event, "host:stack:write", requestId);
637
- if (capabilityError) return capabilityError;
638
- const authError = requireAdmin(event, requestId);
639
- if (authError) return authError;
640
- const state = getState();
641
- let body;
642
- try {
643
- body = await event.request.json();
644
- } catch {
645
- return errorResponse(400, "Bad Request", "Invalid JSON body", {}, requestId);
646
- }
647
- if (!body || typeof body !== "object") return errorResponse(400, "Bad Request", "Body must be an object", {}, requestId);
648
- const b = body;
649
- const ttsSection = readSection(b.tts, "tts");
650
- const sttSection = readSection(b.stt, "stt");
651
- if (ttsSection) applyOpenPalmVoicePreset(ttsSection, "tts");
652
- if (sttSection) applyOpenPalmVoicePreset(sttSection, "stt");
653
- const ttsErr = validateSection(ttsSection, "tts");
654
- if (ttsErr) return errorResponse(400, "invalid_tts", ttsErr, {}, requestId);
655
- const sttErr = validateSection(sttSection, "stt");
656
- if (sttErr) return errorResponse(400, "invalid_stt", sttErr, {}, requestId);
657
- const config = {};
658
- if (ttsSection) config.tts = {
659
- enabled: ttsSection.enabled,
660
- engine: ttsSection.engine,
661
- provider: ttsSection.provider,
662
- baseURL: ttsSection.baseURL,
663
- model: ttsSection.model,
664
- voice: ttsSection.voice
665
- };
666
- if (sttSection) config.stt = {
667
- enabled: sttSection.enabled,
668
- engine: sttSection.engine,
669
- provider: sttSection.provider,
670
- baseURL: sttSection.baseURL,
671
- model: sttSection.model,
672
- language: sttSection.language
673
- };
674
- return withAdminUpdateLock(state, requestId, async (_lock, deferReleaseUntil) => {
675
- writeVoiceVars(config, state.homeDir);
676
- const result = await engageVoiceAddon({
677
- state,
678
- wantsVoiceAddon: ttsSection?.engine === "openpalm-voice" || sttSection?.engine === "openpalm-voice",
679
- requestedProfile: typeof b.profile === "string" ? b.profile.trim() : ""
680
- });
681
- switch (result.status) {
682
- case "disengaged": return jsonResponse(200, { ok: true }, requestId);
683
- case "invalid_profile": return errorResponse(400, "invalid_profile", result.message, {}, requestId);
684
- case "error": return jsonResponse(502, {
685
- ok: false,
686
- voiceAddon: {
687
- wasAlreadyEnabled: result.wasAlreadyEnabled,
688
- steps: result.steps,
689
- error: result.error
690
- }
691
- }, requestId);
692
- case "background":
693
- deferReleaseUntil(result.completion);
694
- return jsonResponse(202, {
695
- ok: true,
696
- voiceAddon: {
697
- wasAlreadyEnabled: result.wasAlreadyEnabled,
698
- status: "pulling",
699
- steps: result.steps,
700
- message: result.message
701
- }
702
- }, requestId);
703
- case "final": return jsonResponse(result.healthy || result.warming ? 200 : 502, {
704
- ok: result.healthy || result.warming,
705
- voiceAddon: {
706
- wasAlreadyEnabled: result.wasAlreadyEnabled,
707
- steps: result.steps,
708
- ...result.warming ? { warming: true } : {},
709
- ...result.healthy || result.warming ? {} : { error: "Voice addon is starting but did not become healthy in time." }
710
- }
711
- }, requestId);
712
- }
713
- });
714
- };
715
517
 
716
- export { GET, PUT };
717
- //# sourceMappingURL=_server.ts-08JCSzPu.js.map
518
+ export { VOICE_ADDON as V, voiceHostPort as a, engageVoiceAddon as e, voiceAddonInfo as v };
519
+ //# sourceMappingURL=bring-up-BBKMJltU.js.map