@openpalm/ui 0.12.3 → 0.12.4

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 (161) hide show
  1. package/build/.openpalm-ui-version +1 -1
  2. package/build/client/_app/immutable/assets/{0.iY5Na-jC.css → 0.03HRqLzj.css} +1 -1
  3. package/build/client/_app/immutable/assets/0.03HRqLzj.css.br +0 -0
  4. package/build/client/_app/immutable/assets/0.03HRqLzj.css.gz +0 -0
  5. package/build/client/_app/immutable/assets/4.DImH8cdy.css +1 -0
  6. package/build/client/_app/immutable/assets/4.DImH8cdy.css.br +0 -0
  7. package/build/client/_app/immutable/assets/4.DImH8cdy.css.gz +0 -0
  8. package/build/client/_app/immutable/assets/7.DkzfFoKA.css +1 -0
  9. package/build/client/_app/immutable/assets/7.DkzfFoKA.css.br +0 -0
  10. package/build/client/_app/immutable/assets/7.DkzfFoKA.css.gz +0 -0
  11. package/build/client/_app/immutable/assets/{ChatMessage.DDPla6Cg.css → ChatMessage.Ctff5YI9.css} +1 -1
  12. package/build/client/_app/immutable/assets/ChatMessage.Ctff5YI9.css.br +0 -0
  13. package/build/client/_app/immutable/assets/ChatMessage.Ctff5YI9.css.gz +0 -0
  14. package/build/client/_app/immutable/assets/Navbar.CjL-3tw0.css +1 -0
  15. package/build/client/_app/immutable/assets/Navbar.CjL-3tw0.css.br +0 -0
  16. package/build/client/_app/immutable/assets/Navbar.CjL-3tw0.css.gz +0 -0
  17. package/build/client/_app/immutable/chunks/{Drz9G_H2.js → B7Tzub6z.js} +1 -1
  18. package/build/client/_app/immutable/chunks/B7Tzub6z.js.br +0 -0
  19. package/build/client/_app/immutable/chunks/B7Tzub6z.js.gz +0 -0
  20. package/build/client/_app/immutable/chunks/{sgaXYa0m.js → BJvGvX8w.js} +2 -2
  21. package/build/client/_app/immutable/chunks/BJvGvX8w.js.br +0 -0
  22. package/build/client/_app/immutable/chunks/BJvGvX8w.js.gz +0 -0
  23. package/build/client/_app/immutable/chunks/CgKtEGfl.js +1 -0
  24. package/build/client/_app/immutable/chunks/CgKtEGfl.js.br +0 -0
  25. package/build/client/_app/immutable/chunks/CgKtEGfl.js.gz +0 -0
  26. package/build/client/_app/immutable/chunks/Cob61iTa.js +1 -0
  27. package/build/client/_app/immutable/chunks/Cob61iTa.js.br +2 -0
  28. package/build/client/_app/immutable/chunks/Cob61iTa.js.gz +0 -0
  29. package/build/client/_app/immutable/chunks/{CAK5Edqg.js → CwrbcpZa.js} +1 -1
  30. package/build/client/_app/immutable/chunks/CwrbcpZa.js.br +0 -0
  31. package/build/client/_app/immutable/chunks/CwrbcpZa.js.gz +0 -0
  32. package/build/client/_app/immutable/chunks/{DO47CNbP.js → DF0a4TzS.js} +2 -2
  33. package/build/client/_app/immutable/chunks/DF0a4TzS.js.br +0 -0
  34. package/build/client/_app/immutable/chunks/DF0a4TzS.js.gz +0 -0
  35. package/build/client/_app/immutable/entry/{app.6md9OlJ2.js → app.BKfeVXCZ.js} +2 -2
  36. package/build/client/_app/immutable/entry/app.BKfeVXCZ.js.br +0 -0
  37. package/build/client/_app/immutable/entry/app.BKfeVXCZ.js.gz +0 -0
  38. package/build/client/_app/immutable/entry/start.BXYu_Ydh.js +1 -0
  39. package/build/client/_app/immutable/entry/start.BXYu_Ydh.js.br +1 -0
  40. package/build/client/_app/immutable/entry/start.BXYu_Ydh.js.gz +0 -0
  41. package/build/client/_app/immutable/nodes/{0.MDxT-fmf.js → 0.6LuHgRwe.js} +1 -1
  42. package/build/client/_app/immutable/nodes/0.6LuHgRwe.js.br +0 -0
  43. package/build/client/_app/immutable/nodes/0.6LuHgRwe.js.gz +0 -0
  44. package/build/client/_app/immutable/nodes/{1.CM0yndw4.js → 1.DmI_S0q4.js} +1 -1
  45. package/build/client/_app/immutable/nodes/1.DmI_S0q4.js.br +0 -0
  46. package/build/client/_app/immutable/nodes/1.DmI_S0q4.js.gz +0 -0
  47. package/build/client/_app/immutable/nodes/4.BHriocBq.js +134 -0
  48. package/build/client/_app/immutable/nodes/4.BHriocBq.js.br +0 -0
  49. package/build/client/_app/immutable/nodes/4.BHriocBq.js.gz +0 -0
  50. package/build/client/_app/immutable/nodes/{5.C9NIa29a.js → 5.BAEivWeB.js} +2 -2
  51. package/build/client/_app/immutable/nodes/5.BAEivWeB.js.br +0 -0
  52. package/build/client/_app/immutable/nodes/5.BAEivWeB.js.gz +0 -0
  53. package/build/client/_app/immutable/nodes/{6.cqN5Stp1.js → 6.BbQyuQdv.js} +1 -1
  54. package/build/client/_app/immutable/nodes/6.BbQyuQdv.js.br +0 -0
  55. package/build/client/_app/immutable/nodes/6.BbQyuQdv.js.gz +0 -0
  56. package/build/client/_app/immutable/nodes/7.gUDOE-wS.js +2 -0
  57. package/build/client/_app/immutable/nodes/7.gUDOE-wS.js.br +0 -0
  58. package/build/client/_app/immutable/nodes/7.gUDOE-wS.js.gz +0 -0
  59. package/build/client/_app/immutable/nodes/{8.DJBNOtRi.js → 8.CzwJhXsi.js} +1 -1
  60. package/build/client/_app/immutable/nodes/8.CzwJhXsi.js.br +0 -0
  61. package/build/client/_app/immutable/nodes/8.CzwJhXsi.js.gz +0 -0
  62. package/build/client/_app/version.json +1 -1
  63. package/build/client/_app/version.json.br +1 -1
  64. package/build/client/_app/version.json.gz +0 -0
  65. package/build/server/chunks/{0-BiSWCuvS.js → 0-pjhEnsU9.js} +3 -3
  66. package/build/server/chunks/{0-BiSWCuvS.js.map → 0-pjhEnsU9.js.map} +1 -1
  67. package/build/server/chunks/1-CpEwLT5m.js +9 -0
  68. package/build/server/chunks/{1-DHLtH_NT.js.map → 1-CpEwLT5m.js.map} +1 -1
  69. package/build/server/chunks/4-DeEbyG9L.js +9 -0
  70. package/build/server/chunks/{4-CCp6hL3j.js.map → 4-DeEbyG9L.js.map} +1 -1
  71. package/build/server/chunks/5-C_AVL3ML.js +9 -0
  72. package/build/server/chunks/{5-CHP_UBw9.js.map → 5-C_AVL3ML.js.map} +1 -1
  73. package/build/server/chunks/6-CeQz74iU.js +9 -0
  74. package/build/server/chunks/{6-CgkIqX20.js.map → 6-CeQz74iU.js.map} +1 -1
  75. package/build/server/chunks/7-C2UdjZEe.js +9 -0
  76. package/build/server/chunks/{7-BZlbBsX9.js.map → 7-C2UdjZEe.js.map} +1 -1
  77. package/build/server/chunks/{8-D_XxnYIA.js → 8-CRJQbNkU.js} +3 -3
  78. package/build/server/chunks/{8-D_XxnYIA.js.map → 8-CRJQbNkU.js.map} +1 -1
  79. package/build/server/chunks/{ChatMessage-1e2ESOBs.js → ChatMessage-C3zhSEqG.js} +2 -2
  80. package/build/server/chunks/{ChatMessage-1e2ESOBs.js.map → ChatMessage-C3zhSEqG.js.map} +1 -1
  81. package/build/server/chunks/{Navbar-B0-fGFL_.js → Navbar-BcinocU9.js} +3 -3
  82. package/build/server/chunks/{Navbar-B0-fGFL_.js.map → Navbar-BcinocU9.js.map} +1 -1
  83. package/build/server/chunks/{_page.svelte-Bqdqv3S3.js → _page.svelte-BVDl6JeB.js} +5 -5
  84. package/build/server/chunks/{_page.svelte-Bqdqv3S3.js.map → _page.svelte-BVDl6JeB.js.map} +1 -1
  85. package/build/server/chunks/{_page.svelte-DNdlZVFS.js → _page.svelte-Bb7vzt_Z.js} +5 -5
  86. package/build/server/chunks/{_page.svelte-DNdlZVFS.js.map → _page.svelte-Bb7vzt_Z.js.map} +1 -1
  87. package/build/server/chunks/{_page.svelte-CYV4wWfL.js → _page.svelte-BvrVz6_-.js} +16 -11
  88. package/build/server/chunks/_page.svelte-BvrVz6_-.js.map +1 -0
  89. package/build/server/chunks/{_page.svelte-CnKBwraZ.js → _page.svelte-DJfYktUM.js} +110 -25
  90. package/build/server/chunks/_page.svelte-DJfYktUM.js.map +1 -0
  91. package/build/server/chunks/{_page.svelte-EzMb--fb.js → _page.svelte-lgQ0Kbg5.js} +3 -3
  92. package/build/server/chunks/{_page.svelte-EzMb--fb.js.map → _page.svelte-lgQ0Kbg5.js.map} +1 -1
  93. package/build/server/chunks/{client-DM1VhaMs.js → client-BsbnGrZJ.js} +2 -2
  94. package/build/server/chunks/{client-DM1VhaMs.js.map → client-BsbnGrZJ.js.map} +1 -1
  95. package/build/server/chunks/{environment-Di_KLnnZ.js → environment-CTDQmO1c.js} +2 -2
  96. package/build/server/chunks/{environment-Di_KLnnZ.js.map → environment-CTDQmO1c.js.map} +1 -1
  97. package/build/server/chunks/{error.svelte-3KB3-NVK.js → error.svelte-z9fDkMtQ.js} +4 -4
  98. package/build/server/chunks/{error.svelte-3KB3-NVK.js.map → error.svelte-z9fDkMtQ.js.map} +1 -1
  99. package/build/server/chunks/{internal-CMoDKelY.js → internal-U63OU4kM.js} +2 -2
  100. package/build/server/chunks/{internal-CMoDKelY.js.map → internal-U63OU4kM.js.map} +1 -1
  101. package/build/server/chunks/{state2-B_F3w1a9.js → state2-BdbHTMvo.js} +2 -2
  102. package/build/server/chunks/{state2-B_F3w1a9.js.map → state2-BdbHTMvo.js.map} +1 -1
  103. package/build/server/index.js +2 -2
  104. package/build/server/manifest.js +8 -8
  105. package/build/server/manifest.js.map +1 -1
  106. package/package.json +1 -1
  107. package/build/client/_app/immutable/assets/0.iY5Na-jC.css.br +0 -0
  108. package/build/client/_app/immutable/assets/0.iY5Na-jC.css.gz +0 -0
  109. package/build/client/_app/immutable/assets/4.S0ueu2e9.css +0 -1
  110. package/build/client/_app/immutable/assets/4.S0ueu2e9.css.br +0 -0
  111. package/build/client/_app/immutable/assets/4.S0ueu2e9.css.gz +0 -0
  112. package/build/client/_app/immutable/assets/7.BzioASK3.css +0 -1
  113. package/build/client/_app/immutable/assets/7.BzioASK3.css.br +0 -0
  114. package/build/client/_app/immutable/assets/7.BzioASK3.css.gz +0 -0
  115. package/build/client/_app/immutable/assets/ChatMessage.DDPla6Cg.css.br +0 -0
  116. package/build/client/_app/immutable/assets/ChatMessage.DDPla6Cg.css.gz +0 -0
  117. package/build/client/_app/immutable/assets/Navbar.Bnqciy-R.css +0 -1
  118. package/build/client/_app/immutable/assets/Navbar.Bnqciy-R.css.br +0 -0
  119. package/build/client/_app/immutable/assets/Navbar.Bnqciy-R.css.gz +0 -0
  120. package/build/client/_app/immutable/chunks/CAK5Edqg.js.br +0 -0
  121. package/build/client/_app/immutable/chunks/CAK5Edqg.js.gz +0 -0
  122. package/build/client/_app/immutable/chunks/DO47CNbP.js.br +0 -0
  123. package/build/client/_app/immutable/chunks/DO47CNbP.js.gz +0 -0
  124. package/build/client/_app/immutable/chunks/DYDX4LXd.js +0 -1
  125. package/build/client/_app/immutable/chunks/DYDX4LXd.js.br +0 -2
  126. package/build/client/_app/immutable/chunks/DYDX4LXd.js.gz +0 -0
  127. package/build/client/_app/immutable/chunks/DjDrL9ap.js +0 -1
  128. package/build/client/_app/immutable/chunks/DjDrL9ap.js.br +0 -0
  129. package/build/client/_app/immutable/chunks/DjDrL9ap.js.gz +0 -0
  130. package/build/client/_app/immutable/chunks/Drz9G_H2.js.br +0 -0
  131. package/build/client/_app/immutable/chunks/Drz9G_H2.js.gz +0 -0
  132. package/build/client/_app/immutable/chunks/sgaXYa0m.js.br +0 -0
  133. package/build/client/_app/immutable/chunks/sgaXYa0m.js.gz +0 -0
  134. package/build/client/_app/immutable/entry/app.6md9OlJ2.js.br +0 -0
  135. package/build/client/_app/immutable/entry/app.6md9OlJ2.js.gz +0 -0
  136. package/build/client/_app/immutable/entry/start.B4TE50J5.js +0 -1
  137. package/build/client/_app/immutable/entry/start.B4TE50J5.js.br +0 -0
  138. package/build/client/_app/immutable/entry/start.B4TE50J5.js.gz +0 -0
  139. package/build/client/_app/immutable/nodes/0.MDxT-fmf.js.br +0 -0
  140. package/build/client/_app/immutable/nodes/0.MDxT-fmf.js.gz +0 -0
  141. package/build/client/_app/immutable/nodes/1.CM0yndw4.js.br +0 -3
  142. package/build/client/_app/immutable/nodes/1.CM0yndw4.js.gz +0 -0
  143. package/build/client/_app/immutable/nodes/4.BfOOWhHl.js +0 -132
  144. package/build/client/_app/immutable/nodes/4.BfOOWhHl.js.br +0 -0
  145. package/build/client/_app/immutable/nodes/4.BfOOWhHl.js.gz +0 -0
  146. package/build/client/_app/immutable/nodes/5.C9NIa29a.js.br +0 -0
  147. package/build/client/_app/immutable/nodes/5.C9NIa29a.js.gz +0 -0
  148. package/build/client/_app/immutable/nodes/6.cqN5Stp1.js.br +0 -0
  149. package/build/client/_app/immutable/nodes/6.cqN5Stp1.js.gz +0 -0
  150. package/build/client/_app/immutable/nodes/7.C9bMWAVS.js +0 -1
  151. package/build/client/_app/immutable/nodes/7.C9bMWAVS.js.br +0 -0
  152. package/build/client/_app/immutable/nodes/7.C9bMWAVS.js.gz +0 -0
  153. package/build/client/_app/immutable/nodes/8.DJBNOtRi.js.br +0 -0
  154. package/build/client/_app/immutable/nodes/8.DJBNOtRi.js.gz +0 -0
  155. package/build/server/chunks/1-DHLtH_NT.js +0 -9
  156. package/build/server/chunks/4-CCp6hL3j.js +0 -9
  157. package/build/server/chunks/5-CHP_UBw9.js +0 -9
  158. package/build/server/chunks/6-CgkIqX20.js +0 -9
  159. package/build/server/chunks/7-BZlbBsX9.js +0 -9
  160. package/build/server/chunks/_page.svelte-CYV4wWfL.js.map +0 -1
  161. package/build/server/chunks/_page.svelte-CnKBwraZ.js.map +0 -1
@@ -1,5 +1,5 @@
1
- import{$ as e,A as t,B as n,C as r,E as i,F as a,G as o,I as s,K as c,L as l,M as u,N as d,P as f,Q as p,Z as m,_ as h,a as g,b as _,ct as v,dt as y,et as b,f as x,ft as S,g as C,it as w,j as T,k as E,n as D,nt as O,r as k,st as A,tt as j,v as M,y as N}from"./BBI__kVO.js";import{n as P,t as F}from"./sgaXYa0m.js";import"./xihTtKlq.js";import{I,X as L,Y as R,a as ee,c as te,dt as z,ft as B,i as ne,it as V,l as re,mt as ie,n as ae,nt as oe,o as H,r as se,rt as ce,s as le,t as U,u as W,v as ue}from"./DjDrL9ap.js";import{t as G}from"./Drz9G_H2.js";import"./DYDX4LXd.js";import{t as de}from"./Oz5B_hgH.js";var fe=new Intl.DateTimeFormat(void 0,{hour:`numeric`,minute:`2-digit`}),pe=new Intl.DateTimeFormat(void 0,{year:`numeric`,month:`short`,day:`numeric`,hour:`numeric`,minute:`2-digit`});function me(e){return e?fe.format(e):``}function he(e){return e?pe.format(e):``}function ge(e){if(!e)return``;let t=Math.max(0,(Date.now()-e)/1e3);if(t<60)return`just now`;let n=Math.floor(t/60);if(n<60)return`${n}m ago`;let r=Math.floor(n/60);if(r<24)return`${r}h ago`;let i=Math.floor(r/24);if(i===1)return`yesterday`;if(i<7)return`${i}d ago`;let a=Math.floor(i/7);if(a<5)return`${a}w ago`;let o=Math.floor(i/30);return o<12?`${o}mo ago`:`${Math.floor(i/365)}y ago`}var _e=d(`<span class="icon-btn-label svelte-vx1yib"> </span>`),ve=d(`<a><!> <!></a>`),ye=d(`<span class="icon-btn-label svelte-vx1yib"> </span>`),be=d(`<button><!> <!></button>`);function K(n,i){let a=g(i,`disabled`,3,!1),s=g(i,`type`,3,`button`),c=g(i,`selected`,3,!1),d=g(i,`tone`,3,`primary`);var f=u(),h=p(f),_=n=>{var s=ve();let u;var f=m(s);r(f,()=>i.icon);var p=e(f,2),h=e=>{var n=_e(),r=m(n,!0);S(n),o(()=>t(r,i.label)),T(e,n)};E(p,e=>{i.label&&e(h)}),S(s),o(()=>{u=N(s,1,`icon-btn svelte-vx1yib`,null,u,{"has-label":i.label,selected:c(),"tone-danger":d()===`danger`}),x(s,`href`,i.href),x(s,`title`,i.title??i.ariaLabel??i.label),x(s,`aria-label`,i.ariaLabel??i.label),x(s,`aria-disabled`,a()||void 0)}),l(`click`,s,function(...e){i.onclick?.apply(this,e)}),T(n,s)},v=n=>{var u=be();let f;var p=m(u);r(p,()=>i.icon);var h=e(p,2),g=e=>{var n=ye(),r=m(n,!0);S(n),o(()=>t(r,i.label)),T(e,n)};E(h,e=>{i.label&&e(g)}),S(u),o(()=>{f=N(u,1,`icon-btn svelte-vx1yib`,null,f,{"has-label":i.label,selected:c(),"tone-danger":d()===`danger`}),x(u,`type`,s()),u.disabled=a(),x(u,`title`,i.title??i.ariaLabel??i.label),x(u,`aria-label`,i.ariaLabel??i.label),x(u,`aria-pressed`,i.ariaPressed)}),l(`click`,u,function(...e){i.onclick?.apply(this,e)}),T(n,u)};E(h,e=>{i.href?e(_):e(v,-1)}),T(n,f)}s([`click`]);function xe(e,t){let r=g(t,`disabled`,3,!1),i=g(t,`tone`,3,`primary`);{let a=w(()=>t.pressed&&t.selectedIcon?t.selectedIcon:t.icon);K(e,{get icon(){return n(a)},get label(){return t.label},get title(){return t.title},get ariaLabel(){return t.ariaLabel},get disabled(){return r()},get tone(){return i()},get selected(){return t.pressed},get ariaPressed(){return t.pressed},get onclick(){return t.onToggle}})}}var Se=`openpalm.chat.advanced`,q=new class{#e=O(!1);get enabled(){return n(this.#e)}set enabled(e){j(this.#e,e,!0)}#t=O(!1);get initialized(){return n(this.#t)}set initialized(e){j(this.#t,e,!0)}init(){typeof window>`u`||this.initialized||(this.enabled=this.#n(),this.initialized=!0)}setEnabled(e){this.enabled=e,this.#r(e)}toggle(){let e=!this.enabled;return this.setEnabled(e),e}preferredChatPath(){return this.enabled?`/advanced`:`/chat`}#n(){if(typeof window>`u`)return!1;try{return window.localStorage.getItem(Se)===`1`}catch{return!1}}#r(e){if(!(typeof window>`u`))try{window.localStorage.setItem(Se,e?`1`:`0`)}catch{}}};function J(e,t){let n=e?.[t];return typeof n==`string`?n:void 0}function Ce(e){if(e.type!==`message.part.updated`)return null;let t=e.properties?.part;return typeof t?.id==`string`&&typeof t.type==`string`?{partID:t.id,type:t.type}:null}function we(e,t,n){let r=e.properties??{};if(J(r,`sessionID`)!==t)return null;if(e.type===`session.next.text.delta`)return J(r,`delta`)??J(r,`text`)??null;if(e.type===`message.part.delta`){let e=J(r,`field`);if(e&&e!==`text`)return null;let t=J(r,`partID`);return t&&n?.has(t)?null:J(r,`delta`)??null}return null}function Te(e){if(typeof e==`string`)return e;if(e&&typeof e==`object`&&typeof e.type==`string`)return e.type}function Ee(e,t){let n=e.properties??{};if(J(n,`sessionID`)!==t)return!1;if(e.type===`session.idle`)return!0;if(e.type===`session.status`){let e=Te(n.status);return e===`idle`||e===`completed`||e===`done`}return!1}function De(e){if(typeof e==`string`)return e;if(e!=null){if(typeof e==`number`||typeof e==`boolean`)return String(e);try{return JSON.stringify(e)}catch{return}}}function Y(...e){for(let t of e){let e=De(t);if(e)return e}}function Oe(e,t){let n=e.properties??{};if(J(n,`sessionID`)!==t)return null;let r=n.part??n.tool;if(e.type===`message.part.updated`&&r&&(r.type===`tool`||r.state)){let e=r.state??{};return{callID:String(r.callID??r.id??``),tool:String(r.tool??`tool`),status:String(e.status??`running`),title:typeof e.title==`string`?e.title:void 0,detail:Y(e.input,e.metadata,e.progress,e.output),output:De(e.output),error:typeof e.error==`string`?e.error:void 0}}if(e.type.startsWith(`session.next.tool.`)){let t=e.type.replace(`session.next.tool.`,``);return{callID:J(n,`callID`)??``,tool:J(n,`tool`)??`tool`,status:t===`completed`?`completed`:t===`failed`?`error`:t===`called`?`running`:J(n,`status`)??`running`,title:J(n,`title`)??J(n,`tool`),detail:Y(n.message,n.delta,n.progress,n.input,n.metadata),output:Y(n.output,n.result),error:Y(n.error)}}return null}function ke(e,t){return e.type===`session.error`&&J(e.properties,`sessionID`)===t}function Ae(e,t){if(e.type!==`permission.asked`||J(e.properties,`sessionID`)!==t)return null;let n=J(e.properties,`id`);if(!n)return null;let r=Array.isArray(e.properties?.patterns)?e.properties.patterns.filter(e=>typeof e==`string`):[],i=Array.isArray(e.properties?.always)?e.properties.always.filter(e=>typeof e==`string`):[],a=e.properties?.tool;return{requestID:n,permission:J(e.properties,`permission`)??`tool`,patterns:r,always:i,tool:J(a,`callID`)??J(e.properties,`permission`)??`tool`,detail:Y(e.properties?.metadata,e.properties?.message)??``}}function je(e,t){if(e.type!==`question.asked`||J(e.properties,`sessionID`)!==t)return null;let n=J(e.properties,`id`);if(!n)return null;let r=Array.isArray(e.properties?.questions)?e.properties.questions:[],i=[];for(let e of r){let t=e,n=Array.isArray(t.options)?t.options.map(e=>e).filter(e=>typeof e.label==`string`).map(e=>({label:e.label,description:typeof e.description==`string`?e.description:``})):[];i.push({question:typeof t.question==`string`?t.question:``,header:typeof t.header==`string`?t.header:``,options:n})}return i.length===0?null:{requestID:n,questions:i}}function Me(e,t){let n=e.properties??{};return J(n,`sessionID`)!==t||e.type!==`session.next.step.started`&&e.type!==`session.next.step.ended`?null:{id:J(n,`stepID`)??J(n,`id`)??e.type,title:J(n,`title`)??J(n,`step`)??(e.type===`session.next.step.started`?`Working`:`Step complete`),status:e.type===`session.next.step.ended`?`completed`:`running`,detail:Y(n.detail,n.message)}}var Ne=1e3,Pe=3e4,Fe=`/proxy/assistant/event`;function Ie(e){let t={},n=[];for(let r of e.split(`
1
+ import{$ as e,A as t,B as n,C as r,E as i,F as a,G as o,I as s,K as c,L as l,M as u,N as d,P as f,Q as p,Z as m,_ as h,a as g,b as _,ct as v,dt as y,et as b,f as x,ft as S,g as C,it as w,j as T,k as E,n as D,nt as O,r as k,st as A,tt as j,v as M,y as N}from"./BBI__kVO.js";import{n as P,t as F}from"./BJvGvX8w.js";import"./xihTtKlq.js";import{L as I,X as L,Z as R,a as ee,at as z,c as te,gt as B,i as ne,it as V,l as re,mt as ie,n as ae,o as H,pt as oe,r as se,rt as ce,s as le,t as U,u as W,v as ue}from"./CgKtEGfl.js";import{t as G}from"./B7Tzub6z.js";import"./Cob61iTa.js";import{t as de}from"./Oz5B_hgH.js";var fe=new Intl.DateTimeFormat(void 0,{hour:`numeric`,minute:`2-digit`}),pe=new Intl.DateTimeFormat(void 0,{year:`numeric`,month:`short`,day:`numeric`,hour:`numeric`,minute:`2-digit`});function me(e){return e?fe.format(e):``}function he(e){return e?pe.format(e):``}function ge(e){if(!e)return``;let t=Math.max(0,(Date.now()-e)/1e3);if(t<60)return`just now`;let n=Math.floor(t/60);if(n<60)return`${n}m ago`;let r=Math.floor(n/60);if(r<24)return`${r}h ago`;let i=Math.floor(r/24);if(i===1)return`yesterday`;if(i<7)return`${i}d ago`;let a=Math.floor(i/7);if(a<5)return`${a}w ago`;let o=Math.floor(i/30);return o<12?`${o}mo ago`:`${Math.floor(i/365)}y ago`}var _e=d(`<span class="icon-btn-label svelte-vx1yib"> </span>`),ve=d(`<a><!> <!></a>`),ye=d(`<span class="icon-btn-label svelte-vx1yib"> </span>`),be=d(`<button><!> <!></button>`);function K(n,i){let a=g(i,`disabled`,3,!1),s=g(i,`type`,3,`button`),c=g(i,`selected`,3,!1),d=g(i,`tone`,3,`primary`);var f=u(),h=p(f),_=n=>{var s=ve();let u;var f=m(s);r(f,()=>i.icon);var p=e(f,2),h=e=>{var n=_e(),r=m(n,!0);S(n),o(()=>t(r,i.label)),T(e,n)};E(p,e=>{i.label&&e(h)}),S(s),o(()=>{u=N(s,1,`icon-btn svelte-vx1yib`,null,u,{"has-label":i.label,selected:c(),"tone-danger":d()===`danger`}),x(s,`href`,i.href),x(s,`title`,i.title??i.ariaLabel??i.label),x(s,`aria-label`,i.ariaLabel??i.label),x(s,`aria-disabled`,a()||void 0)}),l(`click`,s,function(...e){i.onclick?.apply(this,e)}),T(n,s)},v=n=>{var u=be();let f;var p=m(u);r(p,()=>i.icon);var h=e(p,2),g=e=>{var n=ye(),r=m(n,!0);S(n),o(()=>t(r,i.label)),T(e,n)};E(h,e=>{i.label&&e(g)}),S(u),o(()=>{f=N(u,1,`icon-btn svelte-vx1yib`,null,f,{"has-label":i.label,selected:c(),"tone-danger":d()===`danger`}),x(u,`type`,s()),u.disabled=a(),x(u,`title`,i.title??i.ariaLabel??i.label),x(u,`aria-label`,i.ariaLabel??i.label),x(u,`aria-pressed`,i.ariaPressed)}),l(`click`,u,function(...e){i.onclick?.apply(this,e)}),T(n,u)};E(h,e=>{i.href?e(_):e(v,-1)}),T(n,f)}s([`click`]);function xe(e,t){let r=g(t,`disabled`,3,!1),i=g(t,`tone`,3,`primary`);{let a=w(()=>t.pressed&&t.selectedIcon?t.selectedIcon:t.icon);K(e,{get icon(){return n(a)},get label(){return t.label},get title(){return t.title},get ariaLabel(){return t.ariaLabel},get disabled(){return r()},get tone(){return i()},get selected(){return t.pressed},get ariaPressed(){return t.pressed},get onclick(){return t.onToggle}})}}var Se=`openpalm.chat.advanced`,q=new class{#e=O(!1);get enabled(){return n(this.#e)}set enabled(e){j(this.#e,e,!0)}#t=O(!1);get initialized(){return n(this.#t)}set initialized(e){j(this.#t,e,!0)}init(){typeof window>`u`||this.initialized||(this.enabled=this.#n(),this.initialized=!0)}setEnabled(e){this.enabled=e,this.#r(e)}toggle(){let e=!this.enabled;return this.setEnabled(e),e}preferredChatPath(){return this.enabled?`/advanced`:`/chat`}#n(){if(typeof window>`u`)return!1;try{return window.localStorage.getItem(Se)===`1`}catch{return!1}}#r(e){if(!(typeof window>`u`))try{window.localStorage.setItem(Se,e?`1`:`0`)}catch{}}};function J(e,t){let n=e?.[t];return typeof n==`string`?n:void 0}function Ce(e){if(e.type!==`message.part.updated`)return null;let t=e.properties?.part;return typeof t?.id==`string`&&typeof t.type==`string`?{partID:t.id,type:t.type}:null}function we(e,t,n){let r=e.properties??{};if(J(r,`sessionID`)!==t)return null;if(e.type===`session.next.text.delta`)return J(r,`delta`)??J(r,`text`)??null;if(e.type===`message.part.delta`){let e=J(r,`field`);if(e&&e!==`text`)return null;let t=J(r,`partID`);return t&&n?.has(t)?null:J(r,`delta`)??null}return null}function Te(e){if(typeof e==`string`)return e;if(e&&typeof e==`object`&&typeof e.type==`string`)return e.type}function Ee(e,t){let n=e.properties??{};if(J(n,`sessionID`)!==t)return!1;if(e.type===`session.idle`)return!0;if(e.type===`session.status`){let e=Te(n.status);return e===`idle`||e===`completed`||e===`done`}return!1}function De(e){if(typeof e==`string`)return e;if(e!=null){if(typeof e==`number`||typeof e==`boolean`)return String(e);try{return JSON.stringify(e)}catch{return}}}function Y(...e){for(let t of e){let e=De(t);if(e)return e}}function Oe(e,t){let n=e.properties??{};if(J(n,`sessionID`)!==t)return null;let r=n.part??n.tool;if(e.type===`message.part.updated`&&r&&(r.type===`tool`||r.state)){let e=r.state??{};return{callID:String(r.callID??r.id??``),tool:String(r.tool??`tool`),status:String(e.status??`running`),title:typeof e.title==`string`?e.title:void 0,detail:Y(e.input,e.metadata,e.progress,e.output),output:De(e.output),error:typeof e.error==`string`?e.error:void 0}}if(e.type.startsWith(`session.next.tool.`)){let t=e.type.replace(`session.next.tool.`,``);return{callID:J(n,`callID`)??``,tool:J(n,`tool`)??`tool`,status:t===`completed`?`completed`:t===`failed`?`error`:t===`called`?`running`:J(n,`status`)??`running`,title:J(n,`title`)??J(n,`tool`),detail:Y(n.message,n.delta,n.progress,n.input,n.metadata),output:Y(n.output,n.result),error:Y(n.error)}}return null}function ke(e,t){return e.type===`session.error`&&J(e.properties,`sessionID`)===t}function Ae(e,t){if(e.type!==`permission.asked`||J(e.properties,`sessionID`)!==t)return null;let n=J(e.properties,`id`);if(!n)return null;let r=Array.isArray(e.properties?.patterns)?e.properties.patterns.filter(e=>typeof e==`string`):[],i=Array.isArray(e.properties?.always)?e.properties.always.filter(e=>typeof e==`string`):[],a=e.properties?.tool;return{requestID:n,permission:J(e.properties,`permission`)??`tool`,patterns:r,always:i,tool:J(a,`callID`)??J(e.properties,`permission`)??`tool`,detail:Y(e.properties?.metadata,e.properties?.message)??``}}function je(e,t){if(e.type!==`question.asked`||J(e.properties,`sessionID`)!==t)return null;let n=J(e.properties,`id`);if(!n)return null;let r=Array.isArray(e.properties?.questions)?e.properties.questions:[],i=[];for(let e of r){let t=e,n=Array.isArray(t.options)?t.options.map(e=>e).filter(e=>typeof e.label==`string`).map(e=>({label:e.label,description:typeof e.description==`string`?e.description:``})):[];i.push({question:typeof t.question==`string`?t.question:``,header:typeof t.header==`string`?t.header:``,options:n})}return i.length===0?null:{requestID:n,questions:i}}function Me(e,t){let n=e.properties??{};return J(n,`sessionID`)!==t||e.type!==`session.next.step.started`&&e.type!==`session.next.step.ended`?null:{id:J(n,`stepID`)??J(n,`id`)??e.type,title:J(n,`title`)??J(n,`step`)??(e.type===`session.next.step.started`?`Working`:`Step complete`),status:e.type===`session.next.step.ended`?`completed`:`running`,detail:Y(n.detail,n.message)}}var Ne=1e3,Pe=3e4,Fe=`/proxy/assistant/event`;function Ie(e){let t={},n=[];for(let r of e.split(`
2
2
  `))!r||r.startsWith(`:`)||(r.startsWith(`data:`)?n.push(r.replace(/^data:\s?/,``)):r.startsWith(`event:`)?t.event=r.replace(/^event:\s?/,``):r.startsWith(`id:`)&&(t.id=r.replace(/^id:\s?/,``)));return n.length>0&&(t.data=n.join(`
3
3
  `)),t}function Le(e,t){let n=t.properties?.info,r=n?.id;if(r)switch(t.type){case`session.created`:e.onCreated(r);return;case`session.updated`:e.onUpdated(r,{title:n?.title,updatedAt:n?.time?.updated});return;case`session.deleted`:e.onDeleted(r);return;default:return}}function Re(e){let t=!1,n=new AbortController,r,i=e=>new Promise(t=>{let r=setTimeout(t,e);n.signal.addEventListener(`abort`,()=>{clearTimeout(r),t()},{once:!0})});async function a(){let t={accept:`text/event-stream`};r!==void 0&&(t[`Last-Event-ID`]=r);let i=await fetch(Fe,{method:`GET`,headers:t,credentials:`include`,signal:n.signal});if(!i.ok||!i.body)throw Error(`SSE stream failed: ${i.status} ${i.statusText}`);e.onConnect?.();let a=i.body.pipeThrough(new TextDecoderStream).getReader(),o=``;try{for(;;){let{done:t,value:n}=await a.read();if(t)break;o+=n;let i=o.split(`
4
4
 
5
- `);o=i.pop()??``;for(let t of i){if(!t)continue;let n=Ie(t);if(n.id!==void 0&&(r=n.id),!n.data)continue;let i;try{i=JSON.parse(n.data)}catch(e){console.warn(`[session-events] Bad JSON in SSE frame`,e);continue}e.onEvent?.(i),Le(e,i)}}}finally{try{a.releaseLock()}catch{}}}return(async()=>{let r=0;for(;!t;)try{r++,await a(),r=0,t||await i(500)}catch(a){if(t)return;let o=a instanceof Error?a:Error(String(a));o.name!==`AbortError`&&(console.warn(`[session-events] SSE error, reconnecting`,o),e.onDisconnect?.(o)),await i(Math.min(Ne*2**Math.max(0,r-1),Pe)),n.signal.aborted&&!t&&(n=new AbortController)}})(),()=>{t=!0;try{n.abort()}catch{}}}var ze=`openpalm.desktop.notify`,Be=`openpalm.desktop.notify.preview`;function Ve(e){if(typeof window>`u`)return!1;try{return window.localStorage.getItem(e)===`1`}catch{return!1}}function He(e,t){if(!(typeof window>`u`))try{window.localStorage.setItem(e,t?`1`:`0`)}catch{}}function Ue(){return Ve(ze)}function We(){return Ve(Be)}function Ge(e){He(ze,e)}function Ke(e){He(Be,e)}function qe(){return typeof document>`u`||document.hasFocus()||!Ue()?!1:typeof window<`u`&&typeof window.openpalm?.notify==`function`}function Je(e){if(!qe())return;let t=We()&&e.trim()?e.trim():`Assistant replied`;window.openpalm?.notify?.(`OpenPalm`,t)}function Ye(){qe()&&window.openpalm?.notify?.(`OpenPalm`,`Assistant error`)}var Xe=15e4;function X(){return{sessions:[],sessionsLoaded:!1,sessionsLoading:!1,sessionsError:``,activeSessionId:null}}var Z=new class{#e=O(b(new Map));get byEndpoint(){return n(this.#e)}set byEndpoint(e){j(this.#e,e,!0)}#t=O(`default`);get activeEndpointId(){return n(this.#t)}set activeEndpointId(e){j(this.#t,e,!0)}#n=O(b([]));get entries(){return n(this.#n)}set entries(e){j(this.#n,e,!0)}#r=O(!1);get entriesLoading(){return n(this.#r)}set entriesLoading(e){j(this.#r,e,!0)}#i=O(!1);get sending(){return n(this.#i)}set sending(e){j(this.#i,e,!0)}#a=O(``);get error(){return n(this.#a)}set error(e){j(this.#a,e,!0)}#o=O(``);get pendingAssistantText(){return n(this.#o)}set pendingAssistantText(e){j(this.#o,e,!0)}#s=O(b([]));get pendingToolStates(){return n(this.#s)}set pendingToolStates(e){j(this.#s,e,!0)}#c=O(null);get pendingPermission(){return n(this.#c)}set pendingPermission(e){j(this.#c,e,!0)}#l=O(null);get pendingQuestion(){return n(this.#l)}set pendingQuestion(e){j(this.#l,e,!0)}#u=O(!1);get liveConnected(){return n(this.#u)}set liveConnected(e){j(this.#u,e,!0)}_unsubscribeEvents=null;_pendingTurn=null;#d=w(()=>this.byEndpoint.get(this.activeEndpointId)?.activeSessionId??null);get activeSessionId(){return n(this.#d)}set activeSessionId(e){j(this.#d,e)}setEndpointState(e,t){let n={...this.byEndpoint.get(e)??X(),...t};return this.byEndpoint=new Map(this.byEndpoint).set(e,n),n}async onEndpointChanged(e){if(this.sending){this.error=`Wait for the current reply to finish before switching.`;return}this.activeEndpointId=e,this.entries=[],this.error=``,this.byEndpoint.get(e)?.sessionsLoaded||await this.loadSessions();let t=this.byEndpoint.get(e)??X(),n=t.sessions,r=t.activeSessionId,i=null;r&&n.some(e=>e.id===r)?i=r:n.length>0&&(i=n[0].id),i!==t.activeSessionId&&this.setEndpointState(e,{activeSessionId:i}),i&&await this.openSession(i),this._resubscribeEvents()}_resubscribeEvents(){if(this._unsubscribeEvents){try{this._unsubscribeEvents()}catch(e){console.warn(`[chat] failed to unsubscribe from previous event stream`,e)}this._unsubscribeEvents=null}this.liveConnected=!1,this._unsubscribeEvents=Re({onCreated:e=>{this._onSessionCreated(e)},onUpdated:(e,t)=>{this._onSessionUpdated(e,t)},onDeleted:e=>{this._onSessionDeleted(e)},onEvent:e=>{this._onLiveEvent(e)},onConnect:()=>{this.liveConnected=!0},onDisconnect:()=>{this.liveConnected=!1,this._pendingTurn&&this._failPendingTurn(Error(`Assistant event stream disconnected.`))}})}_toRawEvent(e){return{type:e.type,properties:e.properties??{}}}_upsertPendingToolState(e){let t=e.callID||`${e.tool}:${this.pendingToolStates.length}`,n={id:t,kind:`tool`,tool:e.tool,status:e.status,title:e.title??e.tool,detail:e.detail??``,output:e.output??``,error:e.error??``,updatedAt:Date.now()};if(!this.pendingToolStates.find(e=>e.id===t)){this.pendingToolStates=[...this.pendingToolStates,n];return}this.pendingToolStates=this.pendingToolStates.map(e=>e.id===t?{...e,...n}:e)}_upsertPendingStepState(e){let t={id:e.id,kind:`step`,tool:`step`,status:e.status,title:e.title,detail:e.detail??``,output:``,error:``,updatedAt:Date.now()};if(!this.pendingToolStates.find(t=>t.id===e.id)){this.pendingToolStates=[...this.pendingToolStates,t];return}this.pendingToolStates=this.pendingToolStates.map(n=>n.id===e.id?{...n,...t}:n)}_resetPendingRenderState(){this.pendingAssistantText=``,this.pendingToolStates=[],this.pendingPermission=null,this.pendingQuestion=null}_appendAssistantReply(e,t){let n={id:crypto.randomUUID(),role:`assistant`,text:e,timestamp:Date.now(),...t&&t.length>0?{toolStates:[...t]}:{}};this.entries=[...this.entries,n]}_clearPendingTurn(){let e=this._pendingTurn;return e?(clearTimeout(e.timeout),this._pendingTurn=null,e):null}_finishPendingTurn(e){let t=this._clearPendingTurn();if(!t)return;let n=(e??this.pendingAssistantText).trim()||`(no response)`;if(this.pendingQuestion?.status===`answered`&&this.pendingQuestion.message){let e={id:crypto.randomUUID(),type:`note`,label:`Question answered`,text:this.pendingQuestion.message,timestamp:Date.now()};this.entries=[...this.entries,e]}let r=this.pendingToolStates.length>0?[...this.pendingToolStates]:void 0;this._appendAssistantReply(n,r),this._resetPendingRenderState(),this._bumpSession(t.sessionId),W.ttsSupported&&W.ttsAutoEnabled&&n&&n!==`(no response)`&&H(n,{mode:`chat_reply`,userText:t.userText,assistantText:n}),Je(n===`(no response)`?``:n),t.resolve()}_failPendingTurn(e){let t=this._clearPendingTurn();t&&(this._resetPendingRenderState(),t.reject(e))}_bumpSession(e){let t=this.activeEndpointId,n=this.byEndpoint.get(t);if(!n)return;let r=Date.now(),i=n.sessions.find(t=>t.id===e),a=i?{...i,updatedAt:r}:{id:e,title:``,createdAt:r,updatedAt:r},o=n.sessions.filter(t=>t.id!==e);this.setEndpointState(t,{sessions:[a,...o]})}_onLiveEvent(e){let t=this._pendingTurn;if(!t)return;let n=this._toRawEvent(e);if(t.endpointId!==this.activeEndpointId)return;let r=Ce(n);r?.type===`reasoning`&&t.reasoningPartIds.add(r.partID);let i=we(n,t.sessionId,t.reasoningPartIds);i&&(this.pendingAssistantText+=i);let a=Oe(n,t.sessionId);a&&this._upsertPendingToolState(a);let o=Me(n,t.sessionId);o&&this._upsertPendingStepState(o);let s=Ae(n,t.sessionId);s&&(this.pendingPermission={...s,status:`pending`,decision:``,message:``});let c=je(n,t.sessionId);if(c&&(this.pendingQuestion={...c,status:`pending`,answers:c.questions.map(()=>``),message:``}),ke(n,t.sessionId)){this._failPendingTurn(Error(`Assistant session ended unexpectedly.`));return}Ee(n,t.sessionId)&&this._finishPendingTurn()}_onSessionCreated(e){let t=this.activeEndpointId,n=this.byEndpoint.get(t)??X();if(n.sessions.some(t=>t.id===e))return;let r=Date.now(),i={id:e,title:``,createdAt:r,updatedAt:r};this.setEndpointState(t,{sessions:[i,...n.sessions],sessionsLoaded:!0})}_onSessionUpdated(e,t){let n=this.activeEndpointId,r=this.byEndpoint.get(n);if(!r)return;let i=r.sessions.findIndex(t=>t.id===e);if(i===-1)return;let a=r.sessions[i],o=[{...a,title:t?.title??a.title,updatedAt:t?.updatedAt??Date.now()},...r.sessions.filter(t=>t.id!==e)];o.sort((e,t)=>t.updatedAt-e.updatedAt),this.setEndpointState(n,{sessions:o})}async _onSessionDeleted(e){let t=this.activeEndpointId,n=this.byEndpoint.get(t);if(!n||!n.sessions.some(t=>t.id===e))return;let r=n.sessions.filter(t=>t.id!==e),i=n.activeSessionId===e,a=i?r[0]?.id??null:n.activeSessionId;this.setEndpointState(t,{sessions:r,activeSessionId:a}),i&&(this.entries=[],a&&await this.openSession(a))}async loadSessions(){let e=this.activeEndpointId;this.setEndpointState(e,{sessionsLoading:!0,sessionsError:``});try{let t=await L();this.setEndpointState(e,{sessions:t,sessionsLoaded:!0,sessionsLoading:!1,sessionsError:``})}catch(t){let n=t,r=n.status===503||n.status===502?`Assistant is not reachable.`:n.message??`Failed to load sessions.`;this.setEndpointState(e,{sessionsLoading:!1,sessionsError:r})}}async openSession(e){if(this.sending){this.error=`Wait for the current reply to finish before switching.`;return}let t=this.activeEndpointId;this.setEndpointState(t,{activeSessionId:e}),this.entries=[],this._resetPendingRenderState(),this.entriesLoading=!0,this.error=``;try{let n=await R(e);this.activeEndpointId===t&&this.byEndpoint.get(t)?.activeSessionId===e&&(this.entries=n)}catch(e){let t=e;t.status===503||t.status===502?this.error=`Assistant is not reachable. Try reconnecting.`:t.status===401?this.error=`Sign-in required.`:this.error=t.message??`Failed to load messages.`}finally{this.entriesLoading=!1}}async startNewSession(){if(this.sending)return this.error=`Wait for the current reply to finish before switching.`,null;let e=this.activeEndpointId;this.error=``;try{let{id:t}=await ue(),n=Date.now(),r={id:t,title:``,createdAt:n,updatedAt:n},i=this.byEndpoint.get(e)??X();return this.setEndpointState(e,{sessions:[r,...i.sessions.filter(e=>e.id!==t)],sessionsLoaded:!0,activeSessionId:t}),this.entries=[],this._resetPendingRenderState(),t}catch(e){let t=e;return this.error=`Failed to start session: ${t.message??`unknown error`}`,null}}async send(e){let t=e.trim();if(!t)return;if(this.pendingQuestion&&this.pendingQuestion.questions.length===1&&this.sending){await this.answerQuestion(t);return}if(this.pendingQuestion&&this.sending){this.pendingQuestion={...this.pendingQuestion,status:`error`,message:`This question has multiple parts and must be answered with the provided controls.`};return}if(this.sending)return;let n=this.activeSessionId;if(!n&&(n=await this.startNewSession(),!n))return;let r={id:crypto.randomUUID(),role:`user`,text:t,timestamp:Date.now()};this.entries=[...this.entries,r],this._resetPendingRenderState(),this.error=``,this.sending=!0,W.ttsSupported&&W.ttsAutoEnabled&&H(`Working on it.`,{mode:`chat_ack`,userText:t});try{if(this._unsubscribeEvents&&this.liveConnected)await new Promise((e,r)=>{let i=setTimeout(()=>{this._failPendingTurn(Error(`Timed out waiting for the assistant response.`))},Xe);this._pendingTurn={endpointId:this.activeEndpointId,sessionId:n,userText:t,reasoningPartIds:new Set,resolve:e,reject:r,timeout:i},ie(n,t).catch(e=>{this._failPendingTurn(e instanceof Error?e:Error(String(e)))})});else{let e=(await z(n,t)).parts.filter(e=>e.type===`text`&&e.text).map(e=>e.text??``).join(``).trim()||`(no response)`,r=this.pendingToolStates.length>0?[...this.pendingToolStates]:void 0;this._appendAssistantReply(e,r),this._resetPendingRenderState(),this._bumpSession(n),W.ttsSupported&&W.ttsAutoEnabled&&e!==`(no response)`&&H(e,{mode:`chat_reply`,userText:t,assistantText:e}),Je(e===`(no response)`?``:e)}}catch(e){let t=e;this._resetPendingRenderState(),t.status===503||t.status===502?(this.error=`Assistant is not reachable. Try reconnecting.`,this.setEndpointState(this.activeEndpointId,{activeSessionId:null})):t.status===401?this.error=`Sign-in required.`:this.error=t.message??`Message failed.`,Ye()}finally{this.sending=!1}}async answerPermission(e){if(!this.pendingPermission||this.pendingPermission.status===`submitting`)return;let t=this.pendingPermission;this.pendingPermission={...t,status:`submitting`,decision:e,message:``};try{await ce(t.requestID,e),this.pendingPermission={...t,status:`resolved`,decision:e,message:e===`once`?`Allowed ${t.permission} once. Waiting for the assistant to continue...`:e===`always`?`Always allowed future matching ${t.permission} requests.`:`Denied ${t.permission}. Waiting for the assistant to continue...`}}catch(n){let r=n instanceof Error?n.message:`Failed to record permission reply.`;this.pendingPermission={...t,status:`error`,decision:e,message:r}}}setQuestionAnswer(e,t){if(!this.pendingQuestion||e<0||e>=this.pendingQuestion.questions.length)return;let n=[...this.pendingQuestion.answers];n[e]=t,this.pendingQuestion={...this.pendingQuestion,answers:n,message:``}}async answerQuestion(e){if(!this.pendingQuestion||this.pendingQuestion.status===`submitting`)return;let t=this.pendingQuestion,n=t.questions.length===1&&typeof e==`string`?[e.trim()]:t.answers.map(e=>e.trim());if(n.some(e=>!e)){this.pendingQuestion={...t,status:`error`,message:`Answer every question before submitting.`};return}this.pendingQuestion={...t,status:`submitting`,answers:n,message:``};try{await V(t.requestID,n.map(e=>[e])),this.pendingQuestion={...t,status:`answered`,answers:n,message:`Answer sent.`}}catch(e){let r=e instanceof Error?e.message:`Failed to send answer.`;this.pendingQuestion={...t,status:`error`,answers:n,message:r}}}async rejectQuestion(){if(!this.pendingQuestion||this.pendingQuestion.status===`submitting`)return;let e=this.pendingQuestion;this.pendingQuestion={...e,status:`submitting`,message:``};try{await oe(e.requestID),this.pendingQuestion={...e,status:`rejected`,message:`Question declined.`}}catch(t){let n=t instanceof Error?t.message:`Failed to reject question.`;this.pendingQuestion={...e,status:`error`,message:n}}}reset(){if(re(),this._clearPendingTurn(),this.entries=[],this.error=``,this._resetPendingRenderState(),this.byEndpoint=new Map,this._unsubscribeEvents){try{this._unsubscribeEvents()}catch(e){console.warn(`[chat] failed to unsubscribe from event stream during reset`,e)}this._unsubscribeEvents=null}this.liveConnected=!1}};function Ze(e){let t=new TextEncoder().encode(e),n=``;for(let e of t)n+=String.fromCharCode(e);return btoa(n).replace(/=+$/g,``)}function Qe(){return Z.activeSessionId}function $e(e){let t=new URLSearchParams;e&&t.set(`session`,e);let n=t.toString();return n?`/advanced?${n}`:`/advanced`}function et(e,t){let n=new URLSearchParams;e&&n.set(`session`,e),t?.newChat&&n.set(`new`,`1`);let r=n.toString();return r?`/chat?${r}`:`/chat`}function tt(e,t,n){return!t||!n?e:`${e.replace(/\/$/,``)}/${Ze(n)}/session/${encodeURIComponent(t)}`}var nt=e=>{T(e,rt())},rt=f(`<svg aria-hidden="true" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><path d="m7 9 3 3-3 3"></path><line x1="13" y1="15" x2="17" y2="15"></line></svg>`);function it(e,t){v(t,!0);let r=w(()=>G.url?.pathname??``),i=w(()=>n(r)===`/admin`||n(r).startsWith(`/admin/`));w(()=>n(r)===`/advanced`||n(r).startsWith(`/advanced/`));function a(){let e=q.toggle();if(n(i))return;let t=G.url.searchParams.get(`session`)??Qe();P(e?$e(t):et(t))}xe(e,{get pressed(){return q.enabled},onToggle:a,ariaLabel:`Advanced mode`,title:`Advanced mode (embedded OpenCode)`,get icon(){return nt}}),A()}var at=d(`<footer class="drawer-footer svelte-1u2o1qj"><!></footer>`),ot=d(`<div class="drawer-scrim svelte-1u2o1qj"></div> <div class="drawer svelte-1u2o1qj" role="dialog" aria-modal="true" tabindex="-1"><header class="drawer-header svelte-1u2o1qj"><!> <h3 class="drawer-title svelte-1u2o1qj"> </h3> <button class="drawer-close svelte-1u2o1qj" aria-label="Close"><svg aria-hidden="true" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><path d="M18 6 6 18"></path><path d="m6 6 12 12"></path></svg></button></header> <div class="drawer-body svelte-1u2o1qj"><!></div> <!></div>`,1);function Q(n,i){v(i,!0);let a=g(i,`width`,3,`32rem`);function s(e){return Array.from(e.querySelectorAll(`a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])`)).filter(e=>!e.hasAttribute(`hidden`)&&e.getAttribute(`aria-hidden`)!==`true`)}function c(e){let t=document.activeElement,n=e.querySelector(`.drawer-body`);return((n&&s(n)[0])??s(e)[0]??e).focus(),()=>t?.focus?.()}function d(e){if(e.key===`Escape`){i.onClose();return}if(e.key!==`Tab`)return;let t=e.currentTarget,n=s(t);if(n.length===0){e.preventDefault(),t.focus();return}let r=n[0],a=n[n.length-1],o=document.activeElement;e.shiftKey&&(o===r||o===t)?(e.preventDefault(),a.focus()):!e.shiftKey&&o===a&&(e.preventDefault(),r.focus())}var f=u(),h=p(f),y=n=>{var s=ot(),f=p(s),h=e(f,2),g=m(h),v=m(g),y=e=>{var t=u();r(p(t),()=>i.headerStart),T(e,t)};E(v,e=>{i.headerStart&&e(y)});var b=e(v,2),C=m(b,!0);S(b);var w=e(b,2);S(g);var D=e(g,2);r(m(D),()=>i.children),S(D);var O=e(D,2),k=e=>{var t=at();r(m(t),()=>i.footer),S(t),T(e,t)};E(O,e=>{i.footer&&e(k)}),S(h),_(h,()=>c),o(()=>{M(h,`--drawer-width: ${a()??``}`),x(h,`aria-label`,i.title),t(C,i.title)}),l(`click`,f,function(...e){i.onClose?.apply(this,e)}),l(`keydown`,h,d),l(`click`,w,function(...e){i.onClose?.apply(this,e)}),T(n,s)};E(h,e=>{i.open&&e(y)}),T(n,f),A()}s([`click`,`keydown`]);var st=e=>{T(e,ct())},ct=f(`<svg aria-hidden="true" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="3"></circle><path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 1 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 1 1-2.83-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 1 1 2.83-2.83l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 1 1 2.83 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z"></path></svg>`),lt=d(`<a class="settings-link svelte-4kbm5j" href="/admin">Manage this assistant...</a>`),ut=d(`<div class="settings-drawer svelte-4kbm5j"><label class="field svelte-4kbm5j" for="theme-preference"><span class="field-label svelte-4kbm5j">Theme</span> <select id="theme-preference" class="field-select svelte-4kbm5j"><option>System</option><option>Light</option><option>Dark</option></select></label> <nav class="settings-links svelte-4kbm5j" aria-label="Settings links"><!> <a class="settings-link svelte-4kbm5j" href="/admin/endpoints">Manage assistant connections...</a></nav></div>`),dt=d(`<!> <!>`,1);function ft(t,r){v(r,!0);let i=g(r,`showManageAssistant`,3,!0),a=O(!1);F(()=>{j(a,!1)});function s(e){let t=e.currentTarget.value;(t===`light`||t===`dark`||t===`system`)&&U.setPreference(t)}var c=dt(),u=p(c);K(u,{get icon(){return st},ariaLabel:`Settings`,title:`Settings`,get selected(){return n(a)},get ariaPressed(){return n(a)},onclick:()=>j(a,!0)}),Q(e(u,2),{get open(){return n(a)},title:`Settings`,onClose:()=>j(a,!1),width:`24rem`,children:(t,n)=>{var r=ut(),c=m(r),u=e(m(c),2),d=m(u);d.value=d.__value=`system`;var f=e(d);f.value=f.__value=`light`;var p=e(f);p.value=p.__value=`dark`,S(u);var g;C(u),S(c);var _=e(c,2),v=m(_),y=e=>{var t=lt();l(`click`,t,()=>j(a,!1)),T(e,t)};E(v,e=>{i()&&e(y)});var b=e(v,2);S(_),S(r),o(()=>{g!==(g=U.preference)&&(u.value=(u.__value=U.preference)??``,h(u,U.preference))}),l(`change`,u,s),l(`click`,b,()=>j(a,!1)),T(t,r)},$$slots:{default:!0}}),T(t,c),A()}s([`change`,`click`]);var $=new class{#e=O(b([]));get endpoints(){return n(this.#e)}set endpoints(e){j(this.#e,e,!0)}#t=O(`default`);get activeId(){return n(this.#t)}set activeId(e){j(this.#t,e,!0)}#n=O(!1);get loading(){return n(this.#n)}set loading(e){j(this.#n,e,!0)}#r=O(!1);get loaded(){return n(this.#r)}set loaded(e){j(this.#r,e,!0)}#i=O(``);get error(){return n(this.#i)}set error(e){j(this.#i,e,!0)}#a=w(()=>this.endpoints.find(e=>e.id===this.activeId)??this.endpoints[0]??null);get active(){return n(this.#a)}set active(e){j(this.#a,e)}async load(e=!1){if(!this.loading&&!(this.loaded&&!e)){this.loading=!0,this.error=``;try{let{endpoints:e,activeId:t}=await I();this.endpoints=e,this.activeId=t,this.loaded=!0}catch(e){let t=e;t.status!==401&&(this.error=t.message??`Failed to load endpoints`)}finally{this.loading=!1}}}async activate(e){if(e===this.activeId)return;if(Z.sending)throw this.error=`Wait for the current reply to finish before switching.`,Error(this.error);let t=this.activeId;this.activeId=e;try{await B(e),await Z.onEndpointChanged(e)}catch(e){this.activeId=t;let n=e;throw this.error=n.message??`Failed to switch endpoint`,e}}};function pt(e){if(!e)return!0;try{let t=new URL(e).hostname;return t===`localhost`||t===`127.0.0.1`||t===`::1`||t===`host.docker.internal`}catch{return!0}}var mt=d(`<p class="list-error svelte-dlw00e" role="alert"> </p>`),ht=d(`<span class="sr-only svelte-dlw00e">(current)</span>`),gt=d(`<button type="button"><span class="item-text svelte-dlw00e"><span class="item-label svelte-dlw00e"> <!></span> <span class="item-url svelte-dlw00e"> </span></span></button>`),_t=d(`<a class="list-item link svelte-dlw00e" href="/admin">Manage this assistant…</a>`),vt=d(`<div class="endpoint-list svelte-dlw00e"><!> <div class="group" role="group" aria-label="Assistant endpoints"></div> <div class="divider svelte-dlw00e"></div> <!> <a class="list-item link svelte-dlw00e" href="/admin/endpoints">Manage assistant connections…</a></div>`);function yt(r,a){v(a,!0);let s=w(()=>$.active),c=w(()=>$.endpoints),u=w(()=>pt(n(s)?.url)),d=O(!1);async function f(e){if(!n(d)){if(e===n(s)?.id){a.onChosen?.();return}j(d,!0);try{await $.activate(e),a.onChosen?.()}catch{}finally{j(d,!1)}}}var p=vt(),h=m(p),g=e=>{var n=mt(),r=m(n,!0);S(n),o(()=>t(r,$.error)),T(e,n)};E(h,e=>{$.error&&e(g)});var _=e(h,2);i(_,21,()=>n(c),e=>e.id,(r,i)=>{var a=gt();let c;var u=m(a),p=m(u),h=m(p,!0),g=e(h),_=e=>{T(e,ht())};E(g,e=>{n(i).id===n(s)?.id&&e(_)}),S(p);var v=e(p,2),y=m(v,!0);S(v),S(u),S(a),o(()=>{c=N(a,1,`list-item svelte-dlw00e`,null,c,{active:n(i).id===n(s)?.id}),x(a,`aria-current`,n(i).id===n(s)?.id?`true`:void 0),a.disabled=n(d),t(h,n(i).label),t(y,n(i).url)}),l(`click`,a,()=>f(n(i).id)),T(r,a)}),S(_);var y=e(_,4),b=e=>{var t=_t();l(`click`,t,()=>a.onChosen?.()),T(e,t)};E(y,e=>{n(u)&&e(b)});var C=e(y,2);S(p),l(`click`,C,()=>a.onChosen?.()),T(r,p),A()}s([`click`]);var bt=d(`<button type="button" class="trigger svelte-48xr05" aria-haspopup="dialog"><svg class="trigger-icon svelte-48xr05" aria-hidden="true" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="2" width="20" height="8" rx="2" ry="2"></rect><rect x="2" y="14" width="20" height="8" rx="2" ry="2"></rect><line x1="6" y1="6" x2="6.01" y2="6"></line><line x1="6" y1="18" x2="6.01" y2="18"></line></svg> <span class="dot svelte-48xr05" aria-hidden="true"></span> <span class="label svelte-48xr05"> </span> <span class="caret svelte-48xr05" aria-hidden="true">▾</span></button> <!>`,1);function xt(r,i){v(i,!0);let a=O(!1),s=w(()=>$.active);k(()=>{$.load()});var c=bt(),u=p(c),d=e(m(u),4),f=m(d,!0);S(d),y(2),S(u),Q(e(u,2),{get open(){return n(a)},title:`Assistant endpoint`,onClose:()=>j(a,!1),width:`26rem`,children:(e,t)=>{yt(e,{onChosen:()=>j(a,!1)})},$$slots:{default:!0}}),o(()=>{x(u,`aria-expanded`,n(a)),x(u,`aria-label`,n(s)?`Assistant endpoint: ${n(s).label}`:`Assistant endpoints`),x(u,`title`,n(s)?`Connected to: ${n(s).label} (${n(s).url})`:`Assistant endpoints`),u.disabled=$.loading,t(f,n(s)?.label??`Endpoint…`)}),l(`click`,u,()=>j(a,!0)),T(r,c),A()}s([`click`]);var St=/^New session - (\d{4}-\d{2}-\d{2}T[0-9:.]+Z?)$/;function Ct(e){let t=(e??``).trim();if(!t)return`Untitled session`;let n=St.exec(t);if(n){let e=Date.parse(n[1]);if(!Number.isNaN(e))return he(e)}return t}function wt(e,r){v(r,!0);let i=w(()=>Ct(r.title));y();var s=a();o(()=>t(s,n(i))),T(e,s),A()}var Tt=d(`<div class="notice svelte-1o6rxhb">Wait for the current reply to finish before switching.</div>`),Et=d(`<div class="empty svelte-1o6rxhb"><!><span>Loading sessions…</span></div>`),Dt=d(`<div class="list-error svelte-1o6rxhb"><span class="svelte-1o6rxhb"> </span> <button type="button" class="retry-btn svelte-1o6rxhb">Retry</button></div>`),Ot=d(`<div class="empty svelte-1o6rxhb">No sessions yet. Start the first one.</div>`),kt=d(`<span class="sr-only svelte-1o6rxhb">(current)</span>`),At=d(`<button type="button"><span class="item-text svelte-1o6rxhb"><span class="item-label svelte-1o6rxhb"><!><!></span> <span class="item-meta svelte-1o6rxhb"> </span></span></button>`),jt=d(`<button type="button" class="show-all svelte-1o6rxhb"> </button>`),Mt=d(`<div class="session-list svelte-1o6rxhb" role="group" aria-label="Sessions"></div> <!>`,1),Nt=d(`<div class="session-body svelte-1o6rxhb"><!> <!> <div class="divider svelte-1o6rxhb"></div> <button type="button" class="list-item new-btn svelte-1o6rxhb"><span class="check svelte-1o6rxhb" aria-hidden="true">+</span> <span class="item-text svelte-1o6rxhb"><span class="item-label svelte-1o6rxhb">New session</span></span></button></div>`);function Pt(r,a){v(a,!0);let s=O(!1),c=w(()=>$.active),u=w(()=>n(c)?Z.byEndpoint.get(n(c).id)??null:null),d=w(()=>n(u)?.sessions??[]),f=w(()=>n(u)?.sessionsLoading??!1),h=w(()=>n(u)?.sessionsError??``),g=w(()=>Z.activeSessionId),_=w(()=>n(s)?n(d):n(d).slice(0,50)),b=w(()=>Math.max(0,n(d).length-50));k(()=>{n(c)&&!n(u)?.sessionsLoaded&&!n(f)&&Z.loadSessions()});async function C(e){Z.sending||(await Z.openSession(e),a.onChosen?.())}async function D(){Z.sending||(await Z.startNewSession(),a.onChosen?.())}async function M(){await Z.loadSessions()}var P=Nt(),F=m(P),I=e=>{T(e,Tt())};E(F,e=>{Z.sending&&e(I)});var L=e(F,2),R=e=>{var t=Et();de(m(t),{size:12}),y(),S(t),T(e,t)},ee=r=>{var i=Dt(),a=m(i),s=m(a,!0);S(a);var c=e(a,2);S(i),o(()=>t(s,n(h))),l(`click`,c,M),T(r,i)},te=e=>{T(e,Ot())},z=r=>{var a=Mt(),c=p(a);i(c,21,()=>n(_),e=>e.id,(r,i)=>{var a=At();let s;var c=m(a),u=m(c),d=m(u);wt(d,{get title(){return n(i).title}});var f=e(d),p=e=>{T(e,kt())};E(f,e=>{n(i).id===n(g)&&e(p)}),S(u);var h=e(u,2),_=m(h,!0);S(h),S(c),S(a),o((e,r)=>{s=N(a,1,`list-item session-item svelte-1o6rxhb`,null,s,{active:n(i).id===n(g)}),x(a,`aria-current`,n(i).id===n(g)?`true`:void 0),a.disabled=Z.sending,x(a,`title`,e),t(_,r)},[()=>he(n(i).updatedAt),()=>ge(n(i).updatedAt)]),l(`click`,a,()=>C(n(i).id)),T(r,a)}),S(c);var u=e(c,2),d=e=>{var r=jt(),i=m(r);S(r),o(()=>t(i,`Show all (${n(b)??``} more)`)),l(`click`,r,()=>j(s,!0)),T(e,r)};E(u,e=>{!n(s)&&n(b)>0&&e(d)}),T(r,a)};E(L,e=>{n(f)?e(R):n(h)?e(ee,1):n(d).length===0?e(te,2):e(z,-1)});var B=e(L,4);S(P),o(()=>B.disabled=Z.sending),l(`click`,B,D),T(r,P),A()}s([`click`]);var Ft=d(`<button type="button" class="trigger svelte-cihcnl" aria-haspopup="dialog" aria-label="Sessions"><svg class="trigger-icon svelte-cihcnl" aria-hidden="true" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 9a2 2 0 0 1-2 2H6l-4 4V4c0-1.1.9-2 2-2h8a2 2 0 0 1 2 2z"></path><path d="M18 9h2a2 2 0 0 1 2 2v11l-4-4h-6a2 2 0 0 1-2-2v-1"></path></svg> <span aria-hidden="true"></span> <span class="label svelte-cihcnl"> </span> <span class="caret svelte-cihcnl" aria-hidden="true">▾</span></button> <!>`,1);function It(r,i){v(i,!0);let a=O(!1),s=w(()=>$.active),c=w(()=>n(s)?Z.byEndpoint.get(n(s).id)??null:null),u=w(()=>n(c)?.sessions??[]),d=w(()=>Z.activeSessionId),f=w(()=>Z.liveConnected),h=w(()=>n(u).find(e=>e.id===n(d))??null),g=w(()=>n(h)?Ct(n(h).title):`New session`);var _=Ft(),b=p(_),C=e(m(b),2);let E;var D=e(C,2),k=m(D,!0);S(D),y(2),S(b);var M=e(b,2);{let e=w(()=>n(s)?.label??`this endpoint`);Q(M,{get open(){return n(a)},get title(){return`Sessions on ${n(e)??``}`},onClose:()=>j(a,!1),width:`26rem`,children:(e,t)=>{Pt(e,{onChosen:()=>j(a,!1)})},$$slots:{default:!0}})}o(()=>{x(b,`aria-expanded`,n(a)),x(b,`title`,n(g)),E=N(C,1,`dot svelte-cihcnl`,null,E,{connected:n(f)}),x(C,`title`,n(f)?`Live updates connected`:`Live updates disconnected`),t(k,n(g))}),l(`click`,b,()=>j(a,!0)),T(r,_),A()}s([`click`]);var Lt=d(`<span class="voice-interim svelte-7elv0w" aria-hidden="true"> </span>`),Rt=d(`<button type="button" class="voice-autoplay-banner svelte-7elv0w" aria-label="Resume paused audio" title="Audio was blocked by the browser. Click to resume."><svg aria-hidden="true" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svelte-7elv0w"><polygon points="11 5 6 9 2 9 2 15 6 15 11 19 11 5" class="svelte-7elv0w"></polygon><line x1="23" y1="9" x2="17" y2="15" class="svelte-7elv0w"></line><line x1="17" y1="9" x2="23" y2="15" class="svelte-7elv0w"></line></svg> <span class="svelte-7elv0w">Audio paused — click to resume</span></button>`),zt=f(`<path d="M15.54 8.46a5 5 0 0 1 0 7.07"></path><path d="M19.07 4.93a10 10 0 0 1 0 14.14"></path>`,1),Bt=f(`<line x1="23" y1="9" x2="17" y2="15" class="svelte-7elv0w"></line><line x1="17" y1="9" x2="23" y2="15" class="svelte-7elv0w"></line>`,1),Vt=d(`<button><svg aria-hidden="true" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svelte-7elv0w"><polygon points="11 5 6 9 2 9 2 15 6 15 11 19 11 5" class="svelte-7elv0w"></polygon><!></svg></button>`),Ht=f(`<svg aria-hidden="true" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svelte-7elv0w"><line x1="1" y1="1" x2="23" y2="23" class="svelte-7elv0w"></line><path d="M9 9v3a3 3 0 0 0 5.12 2.12M15 9.34V4a3 3 0 0 0-5.94-.6" class="svelte-7elv0w"></path><path d="M17 16.95A7 7 0 0 1 5 12v-2m14 0v2a7 7 0 0 1-.11 1.23" class="svelte-7elv0w"></path><line x1="12" y1="19" x2="12" y2="23" class="svelte-7elv0w"></line><line x1="8" y1="23" x2="16" y2="23" class="svelte-7elv0w"></line></svg>`),Ut=d(`<span class="voice-spinner svelte-7elv0w" aria-hidden="true"></span>`),Wt=d(`<svg aria-hidden="true" width="14" height="14" viewBox="0 0 24 24" fill="currentColor" class="svelte-7elv0w"><rect x="6" y="6" width="12" height="12" rx="1.5" class="svelte-7elv0w"></rect></svg> <span class="voice-pulse svelte-7elv0w" aria-hidden="true"></span>`,1),Gt=f(`<svg aria-hidden="true" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svelte-7elv0w"><path d="M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z" class="svelte-7elv0w"></path><path d="M19 10v2a7 7 0 0 1-14 0v-2" class="svelte-7elv0w"></path><line x1="12" y1="19" x2="12" y2="23" class="svelte-7elv0w"></line><line x1="8" y1="23" x2="16" y2="23" class="svelte-7elv0w"></line></svg>`),Kt=d(`<div class="voice-control svelte-7elv0w" role="toolbar" aria-label="Voice controls"><!> <!> <!> <button><!></button> <span class="sr-only svelte-7elv0w" aria-live="polite"> </span></div>`);function qt(r,i){v(i,!0);let a=O(!1),s=null;k(()=>{se().then(()=>{j(a,!0)}),s=window.openpalm?.onGlobalMicToggle?.(()=>{b()})??null}),D(()=>{typeof window<`u`&&window.openpalm?.setTrayMicRecording?.(!1),s?.(),s=null,ae()}),c(()=>{n(a)&&window.openpalm?.setTrayMicRecording?.(n(f))});let u=w(()=>n(a)&&W.sttEngine!==`disabled`&&W.sttSupported),d=w(()=>n(a)&&W.ttsSupported),f=w(()=>W.status===`recording`),h=w(()=>W.status===`transcribing`),g=w(()=>!n(f)&&!n(h)&&Z.sending),_=w(()=>W.status===`speaking`);async function b(){if(n(g))return;if(n(f)){te();return}if(n(h))return;re();let e=window.openpalm;if(e?.requestMicPermission){let t=await e.requestMicPermission();if(t===`denied-no-prompt`){W.errorMessage=`This OpenPalm build cannot request microphone access on macOS. Please update to the latest version of the desktop app.`;return}if(t===`denied`||t===`restricted`){W.errorMessage=`Microphone access is turned off. In the System Settings window that just opened, enable OpenPalm under Microphone, then quit and reopen the app.`;return}}le(e=>{let t=e.trim();t&&Z.send(t)})}function C(){ee(!W.ttsAutoEnabled)}var M=Kt(),P=m(M),F=e=>{var n=Lt(),r=m(n,!0);S(n),o(e=>{x(n,`title`,W.interimTranscript),t(r,e)},[()=>W.interimTranscript.length>48?W.interimTranscript.slice(0,48)+`…`:W.interimTranscript]),T(e,n)};E(P,e=>{n(f)&&W.interimTranscript&&e(F)});var I=e(P,2),L=e=>{var t=Rt();l(`click`,t,()=>ne()),T(e,t)};E(I,e=>{W.autoplayBlocked&&e(L)});var R=e(I,2),z=t=>{var r=Vt();let i;var a=m(r),s=e(m(a)),c=t=>{var r=zt(),i=p(r);let a;var s=e(i);let c;o(()=>{a=N(i,0,`svelte-7elv0w`,null,a,{"wave-anim":n(_)}),c=N(s,0,`svelte-7elv0w`,null,c,{"wave-anim-2":n(_)})}),T(t,r)},u=e=>{var t=Bt();y(),T(e,t)};E(s,e=>{W.ttsAutoEnabled?e(c):e(u,-1)}),S(a),S(r),o(()=>{i=N(r,1,`voice-btn svelte-7elv0w`,null,i,{"voice-btn-on":W.ttsAutoEnabled,"voice-btn-speaking":n(_)}),x(r,`aria-label`,W.ttsAutoEnabled?`Turn off spoken responses`:`Turn on spoken responses`),x(r,`aria-pressed`,W.ttsAutoEnabled),x(r,`title`,n(_)?`Speaking — click to turn off spoken responses`:W.ttsAutoEnabled?`Spoken responses are on — click to turn off`:`Spoken responses are off — click to turn on`)}),l(`click`,r,C),T(t,r)};E(R,e=>{n(d)&&e(z)});var B=e(R,2);let V;var ie=m(B),oe=e=>{T(e,Ht())},H=e=>{T(e,Ut())},ce=e=>{var t=Wt();y(2),T(e,t)},U=e=>{T(e,Gt())};E(ie,e=>{n(u)?n(h)||n(g)?e(H,1):n(f)?e(ce,2):e(U,-1):e(oe)}),S(B);var ue=e(B,2),G=m(ue,!0);S(ue),S(M),o(()=>{V=N(B,1,`voice-btn svelte-7elv0w`,null,V,{"voice-btn-active":n(f),"voice-btn-processing":n(g)||n(h),"voice-btn-disabled":!n(u)}),B.disabled=!n(u)||n(g),x(B,`aria-label`,n(u)?n(f)?`Stop recording`:n(h)?`Transcribing…`:n(g)?`Sending message…`:`Start recording`:`Voice input unavailable`),x(B,`aria-pressed`,n(f)),x(B,`title`,n(u)?n(f)?`Stop recording`:n(h)?`Transcribing…`:n(g)?`Sending message…`:`Speak — message will be sent to the selected assistant`:`Voice input is unavailable — no speech-to-text engine is configured for this browser`),t(G,n(f)&&W.interimTranscript?W.interimTranscript:n(f)?`Recording`:n(h)?`Transcribing`:n(g)?`Sending message to assistant`:n(_)?`Assistant is speaking`:W.ttsAutoEnabled?`Spoken responses on`:``)}),l(`click`,B,b),T(r,M),A()}s([`click`]);var Jt=e=>{T(e,Yt())},Yt=f(`<svg aria-hidden="true" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path></svg>`),Xt=d(`<span class="chat-selectors svelte-66bgq1"><!> <!></span>`),Zt=d(`<header class="navbar svelte-66bgq1"><div class="navbar-inner svelte-66bgq1"><a class="navbar-brand svelte-66bgq1" aria-label="OpenPalm — go to chat"><span class="brand-icon svelte-66bgq1" aria-hidden="true"><img src="/logo-128.png" alt="" class="svelte-66bgq1"/></span> <span class="brand-text svelte-66bgq1">OpenPalm</span></a> <div class="navbar-actions svelte-66bgq1"><!> <!> <!> <!></div></div></header>`);function Qt(t,r){v(r,!0);let i=w(()=>G.url?.pathname??``),a=w(()=>n(i)===`/admin`||n(i).startsWith(`/admin/`)),s=w(()=>n(i)===`/chat`||n(i).startsWith(`/chat/`)),c=w(()=>n(i)===`/advanced`||n(i).startsWith(`/advanced/`)),l=w(()=>n(s)||n(c)),u=w(()=>pt($.active?.url)),d=w(()=>{let e=G.url.searchParams.get(`session`)??Qe();return q.enabled?$e(e):et(e)});k(()=>{q.init()});var f=Zt(),p=m(f),h=m(p),g=e(h,2),_=m(g),y=e=>{K(e,{get href(){return n(d)},ariaLabel:`Back to chat`,title:`Chat`,get icon(){return Jt}})},b=e=>{ft(e,{get showManageAssistant(){return n(u)}})};E(_,e=>{n(a)?e(y):n(l)&&e(b,1)});var C=e(_,2),D=t=>{var n=Xt(),r=m(n);xt(r,{}),It(e(r,2),{}),S(n),T(t,n)};E(C,e=>{n(l)&&e(D)});var O=e(C,2);it(O,{}),qt(e(O,2),{}),S(g),S(p),S(f),o(()=>x(h,`href`,n(d))),T(t,f),A()}export{K as _,Q as a,Z as c,Ge as d,Ke as f,q as g,Oe as h,$ as i,Ue as l,Me as m,Pt as n,tt as o,Re as p,yt as r,$e as s,Qt as t,We as u,me as v};
5
+ `);o=i.pop()??``;for(let t of i){if(!t)continue;let n=Ie(t);if(n.id!==void 0&&(r=n.id),!n.data)continue;let i;try{i=JSON.parse(n.data)}catch(e){console.warn(`[session-events] Bad JSON in SSE frame`,e);continue}e.onEvent?.(i),Le(e,i)}}}finally{try{a.releaseLock()}catch{}}}return(async()=>{let r=0;for(;!t;)try{r++,await a(),r=0,t||await i(500)}catch(a){if(t)return;let o=a instanceof Error?a:Error(String(a));o.name!==`AbortError`&&(console.warn(`[session-events] SSE error, reconnecting`,o),e.onDisconnect?.(o)),await i(Math.min(Ne*2**Math.max(0,r-1),Pe)),n.signal.aborted&&!t&&(n=new AbortController)}})(),()=>{t=!0;try{n.abort()}catch{}}}var ze=`openpalm.desktop.notify`,Be=`openpalm.desktop.notify.preview`;function Ve(e){if(typeof window>`u`)return!1;try{return window.localStorage.getItem(e)===`1`}catch{return!1}}function He(e,t){if(!(typeof window>`u`))try{window.localStorage.setItem(e,t?`1`:`0`)}catch{}}function Ue(){return Ve(ze)}function We(){return Ve(Be)}function Ge(e){He(ze,e)}function Ke(e){He(Be,e)}function qe(){return typeof document>`u`||document.hasFocus()||!Ue()?!1:typeof window<`u`&&typeof window.openpalm?.notify==`function`}function Je(e){if(!qe())return;let t=We()&&e.trim()?e.trim():`Assistant replied`;window.openpalm?.notify?.(`OpenPalm`,t)}function Ye(){qe()&&window.openpalm?.notify?.(`OpenPalm`,`Assistant error`)}var Xe=15e4;function X(){return{sessions:[],sessionsLoaded:!1,sessionsLoading:!1,sessionsError:``,activeSessionId:null}}var Z=new class{#e=O(b(new Map));get byEndpoint(){return n(this.#e)}set byEndpoint(e){j(this.#e,e,!0)}#t=O(`default`);get activeEndpointId(){return n(this.#t)}set activeEndpointId(e){j(this.#t,e,!0)}#n=O(b([]));get entries(){return n(this.#n)}set entries(e){j(this.#n,e,!0)}#r=O(!1);get entriesLoading(){return n(this.#r)}set entriesLoading(e){j(this.#r,e,!0)}#i=O(!1);get sending(){return n(this.#i)}set sending(e){j(this.#i,e,!0)}#a=O(``);get error(){return n(this.#a)}set error(e){j(this.#a,e,!0)}#o=O(``);get pendingAssistantText(){return n(this.#o)}set pendingAssistantText(e){j(this.#o,e,!0)}#s=O(b([]));get pendingToolStates(){return n(this.#s)}set pendingToolStates(e){j(this.#s,e,!0)}#c=O(null);get pendingPermission(){return n(this.#c)}set pendingPermission(e){j(this.#c,e,!0)}#l=O(null);get pendingQuestion(){return n(this.#l)}set pendingQuestion(e){j(this.#l,e,!0)}#u=O(!1);get liveConnected(){return n(this.#u)}set liveConnected(e){j(this.#u,e,!0)}_unsubscribeEvents=null;_pendingTurn=null;#d=w(()=>this.byEndpoint.get(this.activeEndpointId)?.activeSessionId??null);get activeSessionId(){return n(this.#d)}set activeSessionId(e){j(this.#d,e)}setEndpointState(e,t){let n={...this.byEndpoint.get(e)??X(),...t};return this.byEndpoint=new Map(this.byEndpoint).set(e,n),n}async onEndpointChanged(e){if(this.sending){this.error=`Wait for the current reply to finish before switching.`;return}this.activeEndpointId=e,this.entries=[],this.error=``,this.byEndpoint.get(e)?.sessionsLoaded||await this.loadSessions();let t=this.byEndpoint.get(e)??X(),n=t.sessions,r=t.activeSessionId,i=null;r&&n.some(e=>e.id===r)?i=r:n.length>0&&(i=n[0].id),i!==t.activeSessionId&&this.setEndpointState(e,{activeSessionId:i}),i&&await this.openSession(i),this._resubscribeEvents()}_resubscribeEvents(){if(this._unsubscribeEvents){try{this._unsubscribeEvents()}catch(e){console.warn(`[chat] failed to unsubscribe from previous event stream`,e)}this._unsubscribeEvents=null}this.liveConnected=!1,this._unsubscribeEvents=Re({onCreated:e=>{this._onSessionCreated(e)},onUpdated:(e,t)=>{this._onSessionUpdated(e,t)},onDeleted:e=>{this._onSessionDeleted(e)},onEvent:e=>{this._onLiveEvent(e)},onConnect:()=>{this.liveConnected=!0},onDisconnect:()=>{this.liveConnected=!1,this._pendingTurn&&this._failPendingTurn(Error(`Assistant event stream disconnected.`))}})}_toRawEvent(e){return{type:e.type,properties:e.properties??{}}}_upsertPendingToolState(e){let t=e.callID||`${e.tool}:${this.pendingToolStates.length}`,n={id:t,kind:`tool`,tool:e.tool,status:e.status,title:e.title??e.tool,detail:e.detail??``,output:e.output??``,error:e.error??``,updatedAt:Date.now()};if(!this.pendingToolStates.find(e=>e.id===t)){this.pendingToolStates=[...this.pendingToolStates,n];return}this.pendingToolStates=this.pendingToolStates.map(e=>e.id===t?{...e,...n}:e)}_upsertPendingStepState(e){let t={id:e.id,kind:`step`,tool:`step`,status:e.status,title:e.title,detail:e.detail??``,output:``,error:``,updatedAt:Date.now()};if(!this.pendingToolStates.find(t=>t.id===e.id)){this.pendingToolStates=[...this.pendingToolStates,t];return}this.pendingToolStates=this.pendingToolStates.map(n=>n.id===e.id?{...n,...t}:n)}_resetPendingRenderState(){this.pendingAssistantText=``,this.pendingToolStates=[],this.pendingPermission=null,this.pendingQuestion=null}_appendAssistantReply(e,t){let n={id:crypto.randomUUID(),role:`assistant`,text:e,timestamp:Date.now(),...t&&t.length>0?{toolStates:[...t]}:{}};this.entries=[...this.entries,n]}_clearPendingTurn(){let e=this._pendingTurn;return e?(clearTimeout(e.timeout),this._pendingTurn=null,e):null}_finishPendingTurn(e){let t=this._clearPendingTurn();if(!t)return;let n=(e??this.pendingAssistantText).trim()||`(no response)`;if(this.pendingQuestion?.status===`answered`&&this.pendingQuestion.message){let e={id:crypto.randomUUID(),type:`note`,label:`Question answered`,text:this.pendingQuestion.message,timestamp:Date.now()};this.entries=[...this.entries,e]}let r=this.pendingToolStates.length>0?[...this.pendingToolStates]:void 0;this._appendAssistantReply(n,r),this._resetPendingRenderState(),this._bumpSession(t.sessionId),W.ttsSupported&&W.ttsAutoEnabled&&n&&n!==`(no response)`&&H(n,{mode:`chat_reply`,userText:t.userText,assistantText:n}),Je(n===`(no response)`?``:n),t.resolve()}_failPendingTurn(e){let t=this._clearPendingTurn();t&&(this._resetPendingRenderState(),t.reject(e))}_bumpSession(e){let t=this.activeEndpointId,n=this.byEndpoint.get(t);if(!n)return;let r=Date.now(),i=n.sessions.find(t=>t.id===e),a=i?{...i,updatedAt:r}:{id:e,title:``,createdAt:r,updatedAt:r},o=n.sessions.filter(t=>t.id!==e);this.setEndpointState(t,{sessions:[a,...o]})}_onLiveEvent(e){let t=this._pendingTurn;if(!t)return;let n=this._toRawEvent(e);if(t.endpointId!==this.activeEndpointId)return;let r=Ce(n);r?.type===`reasoning`&&t.reasoningPartIds.add(r.partID);let i=we(n,t.sessionId,t.reasoningPartIds);i&&(this.pendingAssistantText+=i);let a=Oe(n,t.sessionId);a&&this._upsertPendingToolState(a);let o=Me(n,t.sessionId);o&&this._upsertPendingStepState(o);let s=Ae(n,t.sessionId);s&&(this.pendingPermission={...s,status:`pending`,decision:``,message:``});let c=je(n,t.sessionId);if(c&&(this.pendingQuestion={...c,status:`pending`,answers:c.questions.map(()=>``),message:``}),ke(n,t.sessionId)){this._failPendingTurn(Error(`Assistant session ended unexpectedly.`));return}Ee(n,t.sessionId)&&this._finishPendingTurn()}_onSessionCreated(e){let t=this.activeEndpointId,n=this.byEndpoint.get(t)??X();if(n.sessions.some(t=>t.id===e))return;let r=Date.now(),i={id:e,title:``,createdAt:r,updatedAt:r};this.setEndpointState(t,{sessions:[i,...n.sessions],sessionsLoaded:!0})}_onSessionUpdated(e,t){let n=this.activeEndpointId,r=this.byEndpoint.get(n);if(!r)return;let i=r.sessions.findIndex(t=>t.id===e);if(i===-1)return;let a=r.sessions[i],o=[{...a,title:t?.title??a.title,updatedAt:t?.updatedAt??Date.now()},...r.sessions.filter(t=>t.id!==e)];o.sort((e,t)=>t.updatedAt-e.updatedAt),this.setEndpointState(n,{sessions:o})}async _onSessionDeleted(e){let t=this.activeEndpointId,n=this.byEndpoint.get(t);if(!n||!n.sessions.some(t=>t.id===e))return;let r=n.sessions.filter(t=>t.id!==e),i=n.activeSessionId===e,a=i?r[0]?.id??null:n.activeSessionId;this.setEndpointState(t,{sessions:r,activeSessionId:a}),i&&(this.entries=[],a&&await this.openSession(a))}async loadSessions(){let e=this.activeEndpointId;this.setEndpointState(e,{sessionsLoading:!0,sessionsError:``});try{let t=await R();this.setEndpointState(e,{sessions:t,sessionsLoaded:!0,sessionsLoading:!1,sessionsError:``})}catch(t){let n=t,r=n.status===503||n.status===502?`Assistant is not reachable.`:n.message??`Failed to load sessions.`;this.setEndpointState(e,{sessionsLoading:!1,sessionsError:r})}}async openSession(e){if(this.sending){this.error=`Wait for the current reply to finish before switching.`;return}let t=this.activeEndpointId;this.setEndpointState(t,{activeSessionId:e}),this.entries=[],this._resetPendingRenderState(),this.entriesLoading=!0,this.error=``;try{let n=await L(e);this.activeEndpointId===t&&this.byEndpoint.get(t)?.activeSessionId===e&&(this.entries=n)}catch(e){let t=e;t.status===503||t.status===502?this.error=`Assistant is not reachable. Try reconnecting.`:t.status===401?this.error=`Sign-in required.`:this.error=t.message??`Failed to load messages.`}finally{this.entriesLoading=!1}}async startNewSession(){if(this.sending)return this.error=`Wait for the current reply to finish before switching.`,null;let e=this.activeEndpointId;this.error=``;try{let{id:t}=await ue(),n=Date.now(),r={id:t,title:``,createdAt:n,updatedAt:n},i=this.byEndpoint.get(e)??X();return this.setEndpointState(e,{sessions:[r,...i.sessions.filter(e=>e.id!==t)],sessionsLoaded:!0,activeSessionId:t}),this.entries=[],this._resetPendingRenderState(),t}catch(e){let t=e;return this.error=`Failed to start session: ${t.message??`unknown error`}`,null}}async send(e){let t=e.trim();if(!t)return;if(this.pendingQuestion&&this.pendingQuestion.questions.length===1&&this.sending){await this.answerQuestion(t);return}if(this.pendingQuestion&&this.sending){this.pendingQuestion={...this.pendingQuestion,status:`error`,message:`This question has multiple parts and must be answered with the provided controls.`};return}if(this.sending)return;let n=this.activeSessionId;if(!n&&(n=await this.startNewSession(),!n))return;let r={id:crypto.randomUUID(),role:`user`,text:t,timestamp:Date.now()};this.entries=[...this.entries,r],this._resetPendingRenderState(),this.error=``,this.sending=!0,W.ttsSupported&&W.ttsAutoEnabled&&H(`Working on it.`,{mode:`chat_ack`,userText:t});try{if(this._unsubscribeEvents&&this.liveConnected)await new Promise((e,r)=>{let i=setTimeout(()=>{this._failPendingTurn(Error(`Timed out waiting for the assistant response.`))},Xe);this._pendingTurn={endpointId:this.activeEndpointId,sessionId:n,userText:t,reasoningPartIds:new Set,resolve:e,reject:r,timeout:i},B(n,t).catch(e=>{this._failPendingTurn(e instanceof Error?e:Error(String(e)))})});else{let e=(await oe(n,t)).parts.filter(e=>e.type===`text`&&e.text).map(e=>e.text??``).join(``).trim()||`(no response)`,r=this.pendingToolStates.length>0?[...this.pendingToolStates]:void 0;this._appendAssistantReply(e,r),this._resetPendingRenderState(),this._bumpSession(n),W.ttsSupported&&W.ttsAutoEnabled&&e!==`(no response)`&&H(e,{mode:`chat_reply`,userText:t,assistantText:e}),Je(e===`(no response)`?``:e)}}catch(e){let t=e;this._resetPendingRenderState(),t.status===503||t.status===502?(this.error=`Assistant is not reachable. Try reconnecting.`,this.setEndpointState(this.activeEndpointId,{activeSessionId:null})):t.status===401?this.error=`Sign-in required.`:this.error=t.message??`Message failed.`,Ye()}finally{this.sending=!1}}async answerPermission(e){if(!this.pendingPermission||this.pendingPermission.status===`submitting`)return;let t=this.pendingPermission;this.pendingPermission={...t,status:`submitting`,decision:e,message:``};try{await V(t.requestID,e),this.pendingPermission={...t,status:`resolved`,decision:e,message:e===`once`?`Allowed ${t.permission} once. Waiting for the assistant to continue...`:e===`always`?`Always allowed future matching ${t.permission} requests.`:`Denied ${t.permission}. Waiting for the assistant to continue...`}}catch(n){let r=n instanceof Error?n.message:`Failed to record permission reply.`;this.pendingPermission={...t,status:`error`,decision:e,message:r}}}setQuestionAnswer(e,t){if(!this.pendingQuestion||e<0||e>=this.pendingQuestion.questions.length)return;let n=[...this.pendingQuestion.answers];n[e]=t,this.pendingQuestion={...this.pendingQuestion,answers:n,message:``}}async answerQuestion(e){if(!this.pendingQuestion||this.pendingQuestion.status===`submitting`)return;let t=this.pendingQuestion,n=t.questions.length===1&&typeof e==`string`?[e.trim()]:t.answers.map(e=>e.trim());if(n.some(e=>!e)){this.pendingQuestion={...t,status:`error`,message:`Answer every question before submitting.`};return}this.pendingQuestion={...t,status:`submitting`,answers:n,message:``};try{await z(t.requestID,n.map(e=>[e])),this.pendingQuestion={...t,status:`answered`,answers:n,message:`Answer sent.`}}catch(e){let r=e instanceof Error?e.message:`Failed to send answer.`;this.pendingQuestion={...t,status:`error`,answers:n,message:r}}}async rejectQuestion(){if(!this.pendingQuestion||this.pendingQuestion.status===`submitting`)return;let e=this.pendingQuestion;this.pendingQuestion={...e,status:`submitting`,message:``};try{await ce(e.requestID),this.pendingQuestion={...e,status:`rejected`,message:`Question declined.`}}catch(t){let n=t instanceof Error?t.message:`Failed to reject question.`;this.pendingQuestion={...e,status:`error`,message:n}}}reset(){if(re(),this._clearPendingTurn(),this.entries=[],this.error=``,this._resetPendingRenderState(),this.byEndpoint=new Map,this._unsubscribeEvents){try{this._unsubscribeEvents()}catch(e){console.warn(`[chat] failed to unsubscribe from event stream during reset`,e)}this._unsubscribeEvents=null}this.liveConnected=!1}};function Ze(e){let t=new TextEncoder().encode(e),n=``;for(let e of t)n+=String.fromCharCode(e);return btoa(n).replace(/=+$/g,``)}function Qe(){return Z.activeSessionId}function $e(e){let t=new URLSearchParams;e&&t.set(`session`,e);let n=t.toString();return n?`/advanced?${n}`:`/advanced`}function et(e,t){let n=new URLSearchParams;e&&n.set(`session`,e),t?.newChat&&n.set(`new`,`1`);let r=n.toString();return r?`/chat?${r}`:`/chat`}function tt(e,t,n){return!t||!n?e:`${e.replace(/\/$/,``)}/${Ze(n)}/session/${encodeURIComponent(t)}`}var nt=e=>{T(e,rt())},rt=f(`<svg aria-hidden="true" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><path d="m7 9 3 3-3 3"></path><line x1="13" y1="15" x2="17" y2="15"></line></svg>`);function it(e,t){v(t,!0);let r=w(()=>G.url?.pathname??``),i=w(()=>n(r)===`/admin`||n(r).startsWith(`/admin/`));w(()=>n(r)===`/advanced`||n(r).startsWith(`/advanced/`));function a(){let e=q.toggle();if(n(i))return;let t=G.url.searchParams.get(`session`)??Qe();P(e?$e(t):et(t))}xe(e,{get pressed(){return q.enabled},onToggle:a,ariaLabel:`Advanced mode`,title:`Advanced mode (embedded OpenCode)`,get icon(){return nt}}),A()}var at=d(`<footer class="drawer-footer svelte-1u2o1qj"><!></footer>`),ot=d(`<div class="drawer-scrim svelte-1u2o1qj"></div> <div class="drawer svelte-1u2o1qj" role="dialog" aria-modal="true" tabindex="-1"><header class="drawer-header svelte-1u2o1qj"><!> <h3 class="drawer-title svelte-1u2o1qj"> </h3> <button class="drawer-close svelte-1u2o1qj" aria-label="Close"><svg aria-hidden="true" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><path d="M18 6 6 18"></path><path d="m6 6 12 12"></path></svg></button></header> <div class="drawer-body svelte-1u2o1qj"><!></div> <!></div>`,1);function Q(n,i){v(i,!0);let a=g(i,`width`,3,`32rem`);function s(e){return Array.from(e.querySelectorAll(`a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])`)).filter(e=>!e.hasAttribute(`hidden`)&&e.getAttribute(`aria-hidden`)!==`true`)}function c(e){let t=document.activeElement,n=e.querySelector(`.drawer-body`);return((n&&s(n)[0])??s(e)[0]??e).focus(),()=>t?.focus?.()}function d(e){if(e.key===`Escape`){i.onClose();return}if(e.key!==`Tab`)return;let t=e.currentTarget,n=s(t);if(n.length===0){e.preventDefault(),t.focus();return}let r=n[0],a=n[n.length-1],o=document.activeElement;e.shiftKey&&(o===r||o===t)?(e.preventDefault(),a.focus()):!e.shiftKey&&o===a&&(e.preventDefault(),r.focus())}var f=u(),h=p(f),y=n=>{var s=ot(),f=p(s),h=e(f,2),g=m(h),v=m(g),y=e=>{var t=u();r(p(t),()=>i.headerStart),T(e,t)};E(v,e=>{i.headerStart&&e(y)});var b=e(v,2),C=m(b,!0);S(b);var w=e(b,2);S(g);var D=e(g,2);r(m(D),()=>i.children),S(D);var O=e(D,2),k=e=>{var t=at();r(m(t),()=>i.footer),S(t),T(e,t)};E(O,e=>{i.footer&&e(k)}),S(h),_(h,()=>c),o(()=>{M(h,`--drawer-width: ${a()??``}`),x(h,`aria-label`,i.title),t(C,i.title)}),l(`click`,f,function(...e){i.onClose?.apply(this,e)}),l(`keydown`,h,d),l(`click`,w,function(...e){i.onClose?.apply(this,e)}),T(n,s)};E(h,e=>{i.open&&e(y)}),T(n,f),A()}s([`click`,`keydown`]);var st=e=>{T(e,ct())},ct=f(`<svg aria-hidden="true" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="3"></circle><path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 1 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 1 1-2.83-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 1 1 2.83-2.83l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 1 1 2.83 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z"></path></svg>`),lt=d(`<a class="settings-link svelte-4kbm5j" href="/admin">Manage this assistant...</a>`),ut=d(`<div class="settings-drawer svelte-4kbm5j"><label class="field svelte-4kbm5j" for="theme-preference"><span class="field-label svelte-4kbm5j">Theme</span> <select id="theme-preference" class="field-select svelte-4kbm5j"><option>System</option><option>Light</option><option>Dark</option></select></label> <nav class="settings-links svelte-4kbm5j" aria-label="Settings links"><!> <a class="settings-link svelte-4kbm5j" href="/admin/endpoints">Manage assistant connections...</a></nav></div>`),dt=d(`<!> <!>`,1);function ft(t,r){v(r,!0);let i=g(r,`showManageAssistant`,3,!0),a=O(!1);F(()=>{j(a,!1)});function s(e){let t=e.currentTarget.value;(t===`light`||t===`dark`||t===`system`)&&U.setPreference(t)}var c=dt(),u=p(c);K(u,{get icon(){return st},ariaLabel:`Settings`,title:`Settings`,get selected(){return n(a)},get ariaPressed(){return n(a)},onclick:()=>j(a,!0)}),Q(e(u,2),{get open(){return n(a)},title:`Settings`,onClose:()=>j(a,!1),width:`24rem`,children:(t,n)=>{var r=ut(),c=m(r),u=e(m(c),2),d=m(u);d.value=d.__value=`system`;var f=e(d);f.value=f.__value=`light`;var p=e(f);p.value=p.__value=`dark`,S(u);var g;C(u),S(c);var _=e(c,2),v=m(_),y=e=>{var t=lt();l(`click`,t,()=>j(a,!1)),T(e,t)};E(v,e=>{i()&&e(y)});var b=e(v,2);S(_),S(r),o(()=>{g!==(g=U.preference)&&(u.value=(u.__value=U.preference)??``,h(u,U.preference))}),l(`change`,u,s),l(`click`,b,()=>j(a,!1)),T(t,r)},$$slots:{default:!0}}),T(t,c),A()}s([`change`,`click`]);var $=new class{#e=O(b([]));get endpoints(){return n(this.#e)}set endpoints(e){j(this.#e,e,!0)}#t=O(`default`);get activeId(){return n(this.#t)}set activeId(e){j(this.#t,e,!0)}#n=O(!1);get loading(){return n(this.#n)}set loading(e){j(this.#n,e,!0)}#r=O(!1);get loaded(){return n(this.#r)}set loaded(e){j(this.#r,e,!0)}#i=O(``);get error(){return n(this.#i)}set error(e){j(this.#i,e,!0)}#a=w(()=>this.endpoints.find(e=>e.id===this.activeId)??this.endpoints[0]??null);get active(){return n(this.#a)}set active(e){j(this.#a,e)}async load(e=!1){if(!this.loading&&!(this.loaded&&!e)){this.loading=!0,this.error=``;try{let{endpoints:e,activeId:t}=await I();this.endpoints=e,this.activeId=t,this.loaded=!0}catch(e){let t=e;t.status!==401&&(this.error=t.message??`Failed to load endpoints`)}finally{this.loading=!1}}}async activate(e){if(e===this.activeId)return;if(Z.sending)throw this.error=`Wait for the current reply to finish before switching.`,Error(this.error);let t=this.activeId;this.activeId=e;try{await ie(e),await Z.onEndpointChanged(e)}catch(e){this.activeId=t;let n=e;throw this.error=n.message??`Failed to switch endpoint`,e}}};function pt(e){if(!e)return!0;try{let t=new URL(e).hostname;return t===`localhost`||t===`127.0.0.1`||t===`::1`||t===`host.docker.internal`}catch{return!0}}var mt=d(`<p class="list-error svelte-dlw00e" role="alert"> </p>`),ht=d(`<span class="sr-only svelte-dlw00e">(current)</span>`),gt=d(`<button type="button"><span class="item-text svelte-dlw00e"><span class="item-label svelte-dlw00e"> <!></span> <span class="item-url svelte-dlw00e"> </span></span></button>`),_t=d(`<a class="list-item link svelte-dlw00e" href="/admin">Manage this assistant…</a>`),vt=d(`<div class="endpoint-list svelte-dlw00e"><!> <div class="group" role="group" aria-label="Assistant endpoints"></div> <div class="divider svelte-dlw00e"></div> <!> <a class="list-item link svelte-dlw00e" href="/admin/endpoints">Manage assistant connections…</a></div>`);function yt(r,a){v(a,!0);let s=w(()=>$.active),c=w(()=>$.endpoints),u=w(()=>pt(n(s)?.url)),d=O(!1);async function f(e){if(!n(d)){if(e===n(s)?.id){a.onChosen?.();return}j(d,!0);try{await $.activate(e),a.onChosen?.()}catch{}finally{j(d,!1)}}}var p=vt(),h=m(p),g=e=>{var n=mt(),r=m(n,!0);S(n),o(()=>t(r,$.error)),T(e,n)};E(h,e=>{$.error&&e(g)});var _=e(h,2);i(_,21,()=>n(c),e=>e.id,(r,i)=>{var a=gt();let c;var u=m(a),p=m(u),h=m(p,!0),g=e(h),_=e=>{T(e,ht())};E(g,e=>{n(i).id===n(s)?.id&&e(_)}),S(p);var v=e(p,2),y=m(v,!0);S(v),S(u),S(a),o(()=>{c=N(a,1,`list-item svelte-dlw00e`,null,c,{active:n(i).id===n(s)?.id}),x(a,`aria-current`,n(i).id===n(s)?.id?`true`:void 0),a.disabled=n(d),t(h,n(i).label),t(y,n(i).url)}),l(`click`,a,()=>f(n(i).id)),T(r,a)}),S(_);var y=e(_,4),b=e=>{var t=_t();l(`click`,t,()=>a.onChosen?.()),T(e,t)};E(y,e=>{n(u)&&e(b)});var C=e(y,2);S(p),l(`click`,C,()=>a.onChosen?.()),T(r,p),A()}s([`click`]);var bt=d(`<button type="button" class="trigger svelte-48xr05" aria-haspopup="dialog"><svg class="trigger-icon svelte-48xr05" aria-hidden="true" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="2" width="20" height="8" rx="2" ry="2"></rect><rect x="2" y="14" width="20" height="8" rx="2" ry="2"></rect><line x1="6" y1="6" x2="6.01" y2="6"></line><line x1="6" y1="18" x2="6.01" y2="18"></line></svg> <span class="dot svelte-48xr05" aria-hidden="true"></span> <span class="label svelte-48xr05"> </span> <span class="caret svelte-48xr05" aria-hidden="true">▾</span></button> <!>`,1);function xt(r,i){v(i,!0);let a=O(!1),s=w(()=>$.active);k(()=>{$.load()});var c=bt(),u=p(c),d=e(m(u),4),f=m(d,!0);S(d),y(2),S(u),Q(e(u,2),{get open(){return n(a)},title:`Assistant endpoint`,onClose:()=>j(a,!1),width:`26rem`,children:(e,t)=>{yt(e,{onChosen:()=>j(a,!1)})},$$slots:{default:!0}}),o(()=>{x(u,`aria-expanded`,n(a)),x(u,`aria-label`,n(s)?`Assistant endpoint: ${n(s).label}`:`Assistant endpoints`),x(u,`title`,n(s)?`Connected to: ${n(s).label} (${n(s).url})`:`Assistant endpoints`),u.disabled=$.loading,t(f,n(s)?.label??`Endpoint…`)}),l(`click`,u,()=>j(a,!0)),T(r,c),A()}s([`click`]);var St=/^New session - (\d{4}-\d{2}-\d{2}T[0-9:.]+Z?)$/;function Ct(e){let t=(e??``).trim();if(!t)return`Untitled session`;let n=St.exec(t);if(n){let e=Date.parse(n[1]);if(!Number.isNaN(e))return he(e)}return t}function wt(e,r){v(r,!0);let i=w(()=>Ct(r.title));y();var s=a();o(()=>t(s,n(i))),T(e,s),A()}var Tt=d(`<div class="notice svelte-1o6rxhb">Wait for the current reply to finish before switching.</div>`),Et=d(`<div class="empty svelte-1o6rxhb"><!><span>Loading sessions…</span></div>`),Dt=d(`<div class="list-error svelte-1o6rxhb"><span class="svelte-1o6rxhb"> </span> <button type="button" class="retry-btn svelte-1o6rxhb">Retry</button></div>`),Ot=d(`<div class="empty svelte-1o6rxhb">No sessions yet. Start the first one.</div>`),kt=d(`<span class="sr-only svelte-1o6rxhb">(current)</span>`),At=d(`<button type="button"><span class="item-text svelte-1o6rxhb"><span class="item-label svelte-1o6rxhb"><!><!></span> <span class="item-meta svelte-1o6rxhb"> </span></span></button>`),jt=d(`<button type="button" class="show-all svelte-1o6rxhb"> </button>`),Mt=d(`<div class="session-list svelte-1o6rxhb" role="group" aria-label="Sessions"></div> <!>`,1),Nt=d(`<div class="session-body svelte-1o6rxhb"><!> <!> <div class="divider svelte-1o6rxhb"></div> <button type="button" class="list-item new-btn svelte-1o6rxhb"><span class="check svelte-1o6rxhb" aria-hidden="true">+</span> <span class="item-text svelte-1o6rxhb"><span class="item-label svelte-1o6rxhb">New session</span></span></button></div>`);function Pt(r,a){v(a,!0);let s=O(!1),c=w(()=>$.active),u=w(()=>n(c)?Z.byEndpoint.get(n(c).id)??null:null),d=w(()=>n(u)?.sessions??[]),f=w(()=>n(u)?.sessionsLoading??!1),h=w(()=>n(u)?.sessionsError??``),g=w(()=>Z.activeSessionId),_=w(()=>n(s)?n(d):n(d).slice(0,50)),b=w(()=>Math.max(0,n(d).length-50));k(()=>{n(c)&&!n(u)?.sessionsLoaded&&!n(f)&&Z.loadSessions()});async function C(e){Z.sending||(await Z.openSession(e),a.onChosen?.())}async function D(){Z.sending||(await Z.startNewSession(),a.onChosen?.())}async function M(){await Z.loadSessions()}var P=Nt(),F=m(P),I=e=>{T(e,Tt())};E(F,e=>{Z.sending&&e(I)});var L=e(F,2),R=e=>{var t=Et();de(m(t),{size:12}),y(),S(t),T(e,t)},ee=r=>{var i=Dt(),a=m(i),s=m(a,!0);S(a);var c=e(a,2);S(i),o(()=>t(s,n(h))),l(`click`,c,M),T(r,i)},z=e=>{T(e,Ot())},te=r=>{var a=Mt(),c=p(a);i(c,21,()=>n(_),e=>e.id,(r,i)=>{var a=At();let s;var c=m(a),u=m(c),d=m(u);wt(d,{get title(){return n(i).title}});var f=e(d),p=e=>{T(e,kt())};E(f,e=>{n(i).id===n(g)&&e(p)}),S(u);var h=e(u,2),_=m(h,!0);S(h),S(c),S(a),o((e,r)=>{s=N(a,1,`list-item session-item svelte-1o6rxhb`,null,s,{active:n(i).id===n(g)}),x(a,`aria-current`,n(i).id===n(g)?`true`:void 0),a.disabled=Z.sending,x(a,`title`,e),t(_,r)},[()=>he(n(i).updatedAt),()=>ge(n(i).updatedAt)]),l(`click`,a,()=>C(n(i).id)),T(r,a)}),S(c);var u=e(c,2),d=e=>{var r=jt(),i=m(r);S(r),o(()=>t(i,`Show all (${n(b)??``} more)`)),l(`click`,r,()=>j(s,!0)),T(e,r)};E(u,e=>{!n(s)&&n(b)>0&&e(d)}),T(r,a)};E(L,e=>{n(f)?e(R):n(h)?e(ee,1):n(d).length===0?e(z,2):e(te,-1)});var B=e(L,4);S(P),o(()=>B.disabled=Z.sending),l(`click`,B,D),T(r,P),A()}s([`click`]);var Ft=d(`<button type="button" class="trigger svelte-cihcnl" aria-haspopup="dialog" aria-label="Sessions"><svg class="trigger-icon svelte-cihcnl" aria-hidden="true" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 9a2 2 0 0 1-2 2H6l-4 4V4c0-1.1.9-2 2-2h8a2 2 0 0 1 2 2z"></path><path d="M18 9h2a2 2 0 0 1 2 2v11l-4-4h-6a2 2 0 0 1-2-2v-1"></path></svg> <span aria-hidden="true"></span> <span class="label svelte-cihcnl"> </span> <span class="caret svelte-cihcnl" aria-hidden="true">▾</span></button> <!>`,1);function It(r,i){v(i,!0);let a=O(!1),s=w(()=>$.active),c=w(()=>n(s)?Z.byEndpoint.get(n(s).id)??null:null),u=w(()=>n(c)?.sessions??[]),d=w(()=>Z.activeSessionId),f=w(()=>Z.liveConnected),h=w(()=>n(u).find(e=>e.id===n(d))??null),g=w(()=>n(h)?Ct(n(h).title):`New session`);var _=Ft(),b=p(_),C=e(m(b),2);let E;var D=e(C,2),k=m(D,!0);S(D),y(2),S(b);var M=e(b,2);{let e=w(()=>n(s)?.label??`this endpoint`);Q(M,{get open(){return n(a)},get title(){return`Sessions on ${n(e)??``}`},onClose:()=>j(a,!1),width:`26rem`,children:(e,t)=>{Pt(e,{onChosen:()=>j(a,!1)})},$$slots:{default:!0}})}o(()=>{x(b,`aria-expanded`,n(a)),x(b,`title`,n(g)),E=N(C,1,`dot svelte-cihcnl`,null,E,{connected:n(f)}),x(C,`title`,n(f)?`Live updates connected`:`Live updates disconnected`),t(k,n(g))}),l(`click`,b,()=>j(a,!0)),T(r,_),A()}s([`click`]);var Lt=d(`<span class="voice-interim svelte-7elv0w" aria-hidden="true"> </span>`),Rt=d(`<button type="button" class="voice-autoplay-banner svelte-7elv0w" aria-label="Resume paused audio" title="Audio was blocked by the browser. Click to resume."><svg aria-hidden="true" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svelte-7elv0w"><polygon points="11 5 6 9 2 9 2 15 6 15 11 19 11 5" class="svelte-7elv0w"></polygon><line x1="23" y1="9" x2="17" y2="15" class="svelte-7elv0w"></line><line x1="17" y1="9" x2="23" y2="15" class="svelte-7elv0w"></line></svg> <span class="svelte-7elv0w">Audio paused — click to resume</span></button>`),zt=f(`<path d="M15.54 8.46a5 5 0 0 1 0 7.07"></path><path d="M19.07 4.93a10 10 0 0 1 0 14.14"></path>`,1),Bt=f(`<line x1="23" y1="9" x2="17" y2="15" class="svelte-7elv0w"></line><line x1="17" y1="9" x2="23" y2="15" class="svelte-7elv0w"></line>`,1),Vt=d(`<button><svg aria-hidden="true" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svelte-7elv0w"><polygon points="11 5 6 9 2 9 2 15 6 15 11 19 11 5" class="svelte-7elv0w"></polygon><!></svg></button>`),Ht=f(`<svg aria-hidden="true" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svelte-7elv0w"><line x1="1" y1="1" x2="23" y2="23" class="svelte-7elv0w"></line><path d="M9 9v3a3 3 0 0 0 5.12 2.12M15 9.34V4a3 3 0 0 0-5.94-.6" class="svelte-7elv0w"></path><path d="M17 16.95A7 7 0 0 1 5 12v-2m14 0v2a7 7 0 0 1-.11 1.23" class="svelte-7elv0w"></path><line x1="12" y1="19" x2="12" y2="23" class="svelte-7elv0w"></line><line x1="8" y1="23" x2="16" y2="23" class="svelte-7elv0w"></line></svg>`),Ut=d(`<span class="voice-spinner svelte-7elv0w" aria-hidden="true"></span>`),Wt=d(`<svg aria-hidden="true" width="14" height="14" viewBox="0 0 24 24" fill="currentColor" class="svelte-7elv0w"><rect x="6" y="6" width="12" height="12" rx="1.5" class="svelte-7elv0w"></rect></svg> <span class="voice-pulse svelte-7elv0w" aria-hidden="true"></span>`,1),Gt=f(`<svg aria-hidden="true" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svelte-7elv0w"><path d="M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z" class="svelte-7elv0w"></path><path d="M19 10v2a7 7 0 0 1-14 0v-2" class="svelte-7elv0w"></path><line x1="12" y1="19" x2="12" y2="23" class="svelte-7elv0w"></line><line x1="8" y1="23" x2="16" y2="23" class="svelte-7elv0w"></line></svg>`),Kt=d(`<div class="voice-control svelte-7elv0w" role="toolbar" aria-label="Voice controls"><!> <!> <!> <button><!></button> <span class="sr-only svelte-7elv0w" aria-live="polite"> </span></div>`);function qt(r,i){v(i,!0);let a=O(!1),s=null;k(()=>{se().then(()=>{j(a,!0)}),s=window.openpalm?.onGlobalMicToggle?.(()=>{b()})??null}),D(()=>{typeof window<`u`&&window.openpalm?.setTrayMicRecording?.(!1),s?.(),s=null,ae()}),c(()=>{n(a)&&window.openpalm?.setTrayMicRecording?.(n(f))});let u=w(()=>n(a)&&W.sttEngine!==`disabled`&&W.sttSupported),d=w(()=>n(a)&&W.ttsSupported),f=w(()=>W.status===`recording`),h=w(()=>W.status===`transcribing`),g=w(()=>!n(f)&&!n(h)&&Z.sending),_=w(()=>W.status===`speaking`);async function b(){if(n(g))return;if(n(f)){te();return}if(n(h))return;re();let e=window.openpalm;if(e?.requestMicPermission){let t=await e.requestMicPermission();if(t===`denied-no-prompt`){W.errorMessage=`This OpenPalm build cannot request microphone access on macOS. Please update to the latest version of the desktop app.`;return}if(t===`denied`||t===`restricted`){W.errorMessage=`Microphone access is turned off. In the System Settings window that just opened, enable OpenPalm under Microphone, then quit and reopen the app.`;return}}le(e=>{let t=e.trim();t&&Z.send(t)})}function C(){ee(!W.ttsAutoEnabled)}var M=Kt(),P=m(M),F=e=>{var n=Lt(),r=m(n,!0);S(n),o(e=>{x(n,`title`,W.interimTranscript),t(r,e)},[()=>W.interimTranscript.length>48?W.interimTranscript.slice(0,48)+`…`:W.interimTranscript]),T(e,n)};E(P,e=>{n(f)&&W.interimTranscript&&e(F)});var I=e(P,2),L=e=>{var t=Rt();l(`click`,t,()=>ne()),T(e,t)};E(I,e=>{W.autoplayBlocked&&e(L)});var R=e(I,2),z=t=>{var r=Vt();let i;var a=m(r),s=e(m(a)),c=t=>{var r=zt(),i=p(r);let a;var s=e(i);let c;o(()=>{a=N(i,0,`svelte-7elv0w`,null,a,{"wave-anim":n(_)}),c=N(s,0,`svelte-7elv0w`,null,c,{"wave-anim-2":n(_)})}),T(t,r)},u=e=>{var t=Bt();y(),T(e,t)};E(s,e=>{W.ttsAutoEnabled?e(c):e(u,-1)}),S(a),S(r),o(()=>{i=N(r,1,`voice-btn svelte-7elv0w`,null,i,{"voice-btn-on":W.ttsAutoEnabled,"voice-btn-speaking":n(_)}),x(r,`aria-label`,W.ttsAutoEnabled?`Turn off spoken responses`:`Turn on spoken responses`),x(r,`aria-pressed`,W.ttsAutoEnabled),x(r,`title`,n(_)?`Speaking — click to turn off spoken responses`:W.ttsAutoEnabled?`Spoken responses are on — click to turn off`:`Spoken responses are off — click to turn on`)}),l(`click`,r,C),T(t,r)};E(R,e=>{n(d)&&e(z)});var B=e(R,2);let V;var ie=m(B),H=e=>{T(e,Ht())},oe=e=>{T(e,Ut())},ce=e=>{var t=Wt();y(2),T(e,t)},U=e=>{T(e,Gt())};E(ie,e=>{n(u)?n(h)||n(g)?e(oe,1):n(f)?e(ce,2):e(U,-1):e(H)}),S(B);var ue=e(B,2),G=m(ue,!0);S(ue),S(M),o(()=>{V=N(B,1,`voice-btn svelte-7elv0w`,null,V,{"voice-btn-active":n(f),"voice-btn-processing":n(g)||n(h),"voice-btn-disabled":!n(u)}),B.disabled=!n(u)||n(g),x(B,`aria-label`,n(u)?n(f)?`Stop recording`:n(h)?`Transcribing…`:n(g)?`Sending message…`:`Start recording`:`Voice input unavailable`),x(B,`aria-pressed`,n(f)),x(B,`title`,n(u)?n(f)?`Stop recording`:n(h)?`Transcribing…`:n(g)?`Sending message…`:`Speak — message will be sent to the selected assistant`:`Voice input is unavailable — no speech-to-text engine is configured for this browser`),t(G,n(f)&&W.interimTranscript?W.interimTranscript:n(f)?`Recording`:n(h)?`Transcribing`:n(g)?`Sending message to assistant`:n(_)?`Assistant is speaking`:W.ttsAutoEnabled?`Spoken responses on`:``)}),l(`click`,B,b),T(r,M),A()}s([`click`]);var Jt=e=>{T(e,Yt())},Yt=f(`<svg aria-hidden="true" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path></svg>`),Xt=d(`<span class="chat-selectors svelte-66bgq1"><!> <!></span>`),Zt=d(`<header class="navbar svelte-66bgq1"><div class="navbar-inner svelte-66bgq1"><a class="navbar-brand svelte-66bgq1" aria-label="OpenPalm — go to chat"><span class="brand-icon svelte-66bgq1" aria-hidden="true"><img src="/logo-128.png" alt="" class="svelte-66bgq1"/></span> <span class="brand-text svelte-66bgq1">OpenPalm</span></a> <div class="navbar-actions svelte-66bgq1"><!> <!> <!> <!></div></div></header>`);function Qt(t,r){v(r,!0);let i=w(()=>G.url?.pathname??``),a=w(()=>n(i)===`/admin`||n(i).startsWith(`/admin/`)),s=w(()=>n(i)===`/chat`||n(i).startsWith(`/chat/`)),c=w(()=>n(i)===`/advanced`||n(i).startsWith(`/advanced/`)),l=w(()=>n(s)||n(c)),u=w(()=>pt($.active?.url)),d=w(()=>{let e=G.url.searchParams.get(`session`)??Qe();return q.enabled?$e(e):et(e)});k(()=>{q.init()});var f=Zt(),p=m(f),h=m(p),g=e(h,2),_=m(g),y=e=>{K(e,{get href(){return n(d)},ariaLabel:`Back to chat`,title:`Chat`,get icon(){return Jt}})},b=e=>{ft(e,{get showManageAssistant(){return n(u)}})};E(_,e=>{n(a)?e(y):n(l)&&e(b,1)});var C=e(_,2),D=t=>{var n=Xt(),r=m(n);xt(r,{}),It(e(r,2),{}),S(n),T(t,n)};E(C,e=>{n(l)&&e(D)});var O=e(C,2);it(O,{}),qt(e(O,2),{}),S(g),S(p),S(f),o(()=>x(h,`href`,n(d))),T(t,f),A()}export{K as _,Q as a,Z as c,Ge as d,Ke as f,q as g,Oe as h,$ as i,Ue as l,Me as m,Pt as n,tt as o,Re as p,yt as r,$e as s,Qt as t,We as u,me as v};
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.MDxT-fmf.js","../chunks/BBI__kVO.js","../chunks/xihTtKlq.js","../chunks/DjDrL9ap.js","../assets/0.iY5Na-jC.css","../nodes/1.CM0yndw4.js","../chunks/Drz9G_H2.js","../chunks/sgaXYa0m.js","../chunks/CymRgjIC.js","../nodes/2.CWCgggRE.js","../chunks/D-V3sSGz.js","../nodes/3.s6beQKPO.js","../nodes/4.BfOOWhHl.js","../chunks/DYDX4LXd.js","../chunks/CAK5Edqg.js","../chunks/DO47CNbP.js","../chunks/Oz5B_hgH.js","../assets/Spinner.BtzHSsat.css","../assets/Navbar.Bnqciy-R.css","../assets/ChatMessage.DDPla6Cg.css","../chunks/Buy0D9D-.js","../assets/4.S0ueu2e9.css","../nodes/5.C9NIa29a.js","../assets/5.Cj0Mk9Gn.css","../nodes/6.cqN5Stp1.js","../assets/6.C9M6ETTz.css","../nodes/7.C9bMWAVS.js","../assets/7.BzioASK3.css","../nodes/8.DJBNOtRi.js","../assets/8.CY2RMSue.css","../nodes/9.OQRL7WC0.js","../assets/9.CkiNtsHc.css","../nodes/10.BzTAm6YU.js","../assets/10.C4zN9dGC.css"])))=>i.map(i=>d[i]);
2
- import{$ as e,A as t,B as n,F as r,G as i,H as a,K as o,M as s,N as c,Q as l,S as u,Z as d,a as f,ct as p,ft as m,i as h,it as g,j as _,k as v,nt as y,q as b,r as x,s as S,st as C,tt as w}from"../chunks/BBI__kVO.js";import{t as T}from"../chunks/kNaey6uv.js";import"../chunks/xihTtKlq.js";var E={},D=c(`<div id="svelte-announcer" aria-live="assertive" aria-atomic="true" style="position: absolute; left: 0; top: 0; clip: rect(0 0 0 0); clip-path: inset(50%); overflow: hidden; white-space: nowrap; width: 1px; height: 1px"><!></div>`),O=c(`<!> <!>`,1);function k(c,h){p(h,!0);let T=f(h,`components`,23,()=>[]),E=f(h,`data_0`,3,null),k=f(h,`data_1`,3,null),A=f(h,`data_2`,3,null);b(()=>h.stores.page.set(h.page)),o(()=>{h.stores,h.page,h.constructors,T(),h.form,E(),k(),A(),h.stores.page.notify()});let j=y(!1),M=y(!1),N=y(null);x(()=>{let e=h.stores.page.subscribe(()=>{n(j)&&(w(M,!0),a().then(()=>{w(N,document.title||`untitled page`,!0)}))});return w(j,!0),e});let P=g(()=>h.constructors[2]);var F=O(),I=l(F),L=e=>{let t=g(()=>h.constructors[0]);var r=s();u(l(r),()=>n(t),(e,t)=>{S(t(e,{get data(){return E()},get form(){return h.form},get params(){return h.page.params},children:(e,t)=>{var r=s(),i=l(r),a=e=>{let t=g(()=>h.constructors[1]);var r=s();u(l(r),()=>n(t),(e,t)=>{S(t(e,{get data(){return k()},get form(){return h.form},get params(){return h.page.params},children:(e,t)=>{var r=s();u(l(r),()=>n(P),(e,t)=>{S(t(e,{get data(){return A()},get form(){return h.form},get params(){return h.page.params}}),e=>T()[2]=e,()=>T()?.[2])}),_(e,r)},$$slots:{default:!0}}),e=>T()[1]=e,()=>T()?.[1])}),_(e,r)},o=e=>{let t=g(()=>h.constructors[1]);var r=s();u(l(r),()=>n(t),(e,t)=>{S(t(e,{get data(){return k()},get form(){return h.form},get params(){return h.page.params}}),e=>T()[1]=e,()=>T()?.[1])}),_(e,r)};v(i,e=>{h.constructors[2]?e(a):e(o,-1)}),_(e,r)},$$slots:{default:!0}}),e=>T()[0]=e,()=>T()?.[0])}),_(e,r)},R=e=>{let t=g(()=>h.constructors[0]);var r=s();u(l(r),()=>n(t),(e,t)=>{S(t(e,{get data(){return E()},get form(){return h.form},get params(){return h.page.params}}),e=>T()[0]=e,()=>T()?.[0])}),_(e,r)};v(I,e=>{h.constructors[1]?e(L):e(R,-1)});var z=e(I,2),B=e=>{var a=D(),o=d(a),s=e=>{var a=r();i(()=>t(a,n(N))),_(e,a)};v(o,e=>{n(M)&&e(s)}),m(a),_(e,a)};v(z,e=>{n(j)&&e(B)}),_(c,F),C()}var A=h(k),j=[()=>T(()=>import(`../nodes/0.MDxT-fmf.js`),__vite__mapDeps([0,1,2,3,4]),import.meta.url),()=>T(()=>import(`../nodes/1.CM0yndw4.js`),__vite__mapDeps([5,1,6,7,8,2]),import.meta.url),()=>T(()=>import(`../nodes/2.CWCgggRE.js`),__vite__mapDeps([9,1,2,10]),import.meta.url),()=>T(()=>import(`../nodes/3.s6beQKPO.js`),__vite__mapDeps([11,1,8,2,10]),import.meta.url),()=>T(()=>import(`../nodes/4.BfOOWhHl.js`),__vite__mapDeps([12,1,7,8,13,14,2,15,6,3,16,17,18,19,20,21]),import.meta.url),()=>T(()=>import(`../nodes/5.C9NIa29a.js`),__vite__mapDeps([22,1,2,15,7,8,13,6,3,16,17,18,23]),import.meta.url),()=>T(()=>import(`../nodes/6.cqN5Stp1.js`),__vite__mapDeps([24,1,6,7,8,2,15,13,3,16,17,18,25]),import.meta.url),()=>T(()=>import(`../nodes/7.C9bMWAVS.js`),__vite__mapDeps([26,1,7,8,13,6,14,2,15,3,16,17,18,19,27]),import.meta.url),()=>T(()=>import(`../nodes/8.DJBNOtRi.js`),__vite__mapDeps([28,1,7,8,13,2,16,17,29]),import.meta.url),()=>T(()=>import(`../nodes/9.OQRL7WC0.js`),__vite__mapDeps([30,1,2,20,16,17,31]),import.meta.url),()=>T(()=>import(`../nodes/10.BzTAm6YU.js`),__vite__mapDeps([32,1,2,33]),import.meta.url)],M=[],N={"/":[3],"/admin":[4],"/admin/endpoints":[5],"/advanced":[6],"/chat":[7],"/login":[-9],"/setup":[9,[2]],"/splash":[-11]},P={handleError:(({error:e})=>{console.error(e)}),reroute:(()=>{}),transport:{}},F=Object.fromEntries(Object.entries(P.transport).map(([e,t])=>[e,t.decode])),I=Object.fromEntries(Object.entries(P.transport).map(([e,t])=>[e,t.encode])),L=!1,R=(e,t)=>F[e](t);export{R as decode,F as decoders,N as dictionary,I as encoders,L as hash,P as hooks,E as matchers,j as nodes,A as root,M as server_loads};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.6LuHgRwe.js","../chunks/BBI__kVO.js","../chunks/xihTtKlq.js","../chunks/CgKtEGfl.js","../assets/0.03HRqLzj.css","../nodes/1.DmI_S0q4.js","../chunks/B7Tzub6z.js","../chunks/BJvGvX8w.js","../chunks/CymRgjIC.js","../nodes/2.CWCgggRE.js","../chunks/D-V3sSGz.js","../nodes/3.s6beQKPO.js","../nodes/4.BHriocBq.js","../chunks/Cob61iTa.js","../chunks/CwrbcpZa.js","../chunks/DF0a4TzS.js","../chunks/Oz5B_hgH.js","../assets/Spinner.BtzHSsat.css","../assets/Navbar.CjL-3tw0.css","../assets/ChatMessage.Ctff5YI9.css","../chunks/Buy0D9D-.js","../assets/4.DImH8cdy.css","../nodes/5.BAEivWeB.js","../assets/5.Cj0Mk9Gn.css","../nodes/6.BbQyuQdv.js","../assets/6.C9M6ETTz.css","../nodes/7.gUDOE-wS.js","../assets/7.DkzfFoKA.css","../nodes/8.CzwJhXsi.js","../assets/8.CY2RMSue.css","../nodes/9.OQRL7WC0.js","../assets/9.CkiNtsHc.css","../nodes/10.BzTAm6YU.js","../assets/10.C4zN9dGC.css"])))=>i.map(i=>d[i]);
2
+ import{$ as e,A as t,B as n,F as r,G as i,H as a,K as o,M as s,N as c,Q as l,S as u,Z as d,a as f,ct as p,ft as m,i as h,it as g,j as _,k as v,nt as y,q as b,r as x,s as S,st as C,tt as w}from"../chunks/BBI__kVO.js";import{t as T}from"../chunks/kNaey6uv.js";import"../chunks/xihTtKlq.js";var E={},D=c(`<div id="svelte-announcer" aria-live="assertive" aria-atomic="true" style="position: absolute; left: 0; top: 0; clip: rect(0 0 0 0); clip-path: inset(50%); overflow: hidden; white-space: nowrap; width: 1px; height: 1px"><!></div>`),O=c(`<!> <!>`,1);function k(c,h){p(h,!0);let T=f(h,`components`,23,()=>[]),E=f(h,`data_0`,3,null),k=f(h,`data_1`,3,null),A=f(h,`data_2`,3,null);b(()=>h.stores.page.set(h.page)),o(()=>{h.stores,h.page,h.constructors,T(),h.form,E(),k(),A(),h.stores.page.notify()});let j=y(!1),M=y(!1),N=y(null);x(()=>{let e=h.stores.page.subscribe(()=>{n(j)&&(w(M,!0),a().then(()=>{w(N,document.title||`untitled page`,!0)}))});return w(j,!0),e});let P=g(()=>h.constructors[2]);var F=O(),I=l(F),L=e=>{let t=g(()=>h.constructors[0]);var r=s();u(l(r),()=>n(t),(e,t)=>{S(t(e,{get data(){return E()},get form(){return h.form},get params(){return h.page.params},children:(e,t)=>{var r=s(),i=l(r),a=e=>{let t=g(()=>h.constructors[1]);var r=s();u(l(r),()=>n(t),(e,t)=>{S(t(e,{get data(){return k()},get form(){return h.form},get params(){return h.page.params},children:(e,t)=>{var r=s();u(l(r),()=>n(P),(e,t)=>{S(t(e,{get data(){return A()},get form(){return h.form},get params(){return h.page.params}}),e=>T()[2]=e,()=>T()?.[2])}),_(e,r)},$$slots:{default:!0}}),e=>T()[1]=e,()=>T()?.[1])}),_(e,r)},o=e=>{let t=g(()=>h.constructors[1]);var r=s();u(l(r),()=>n(t),(e,t)=>{S(t(e,{get data(){return k()},get form(){return h.form},get params(){return h.page.params}}),e=>T()[1]=e,()=>T()?.[1])}),_(e,r)};v(i,e=>{h.constructors[2]?e(a):e(o,-1)}),_(e,r)},$$slots:{default:!0}}),e=>T()[0]=e,()=>T()?.[0])}),_(e,r)},R=e=>{let t=g(()=>h.constructors[0]);var r=s();u(l(r),()=>n(t),(e,t)=>{S(t(e,{get data(){return E()},get form(){return h.form},get params(){return h.page.params}}),e=>T()[0]=e,()=>T()?.[0])}),_(e,r)};v(I,e=>{h.constructors[1]?e(L):e(R,-1)});var z=e(I,2),B=e=>{var a=D(),o=d(a),s=e=>{var a=r();i(()=>t(a,n(N))),_(e,a)};v(o,e=>{n(M)&&e(s)}),m(a),_(e,a)};v(z,e=>{n(j)&&e(B)}),_(c,F),C()}var A=h(k),j=[()=>T(()=>import(`../nodes/0.6LuHgRwe.js`),__vite__mapDeps([0,1,2,3,4]),import.meta.url),()=>T(()=>import(`../nodes/1.DmI_S0q4.js`),__vite__mapDeps([5,1,6,7,8,2]),import.meta.url),()=>T(()=>import(`../nodes/2.CWCgggRE.js`),__vite__mapDeps([9,1,2,10]),import.meta.url),()=>T(()=>import(`../nodes/3.s6beQKPO.js`),__vite__mapDeps([11,1,8,2,10]),import.meta.url),()=>T(()=>import(`../nodes/4.BHriocBq.js`),__vite__mapDeps([12,1,7,8,13,14,2,15,6,3,16,17,18,19,20,21]),import.meta.url),()=>T(()=>import(`../nodes/5.BAEivWeB.js`),__vite__mapDeps([22,1,2,15,7,8,13,6,3,16,17,18,23]),import.meta.url),()=>T(()=>import(`../nodes/6.BbQyuQdv.js`),__vite__mapDeps([24,1,6,7,8,2,15,13,3,16,17,18,25]),import.meta.url),()=>T(()=>import(`../nodes/7.gUDOE-wS.js`),__vite__mapDeps([26,1,7,8,13,6,14,2,15,3,16,17,18,19,27]),import.meta.url),()=>T(()=>import(`../nodes/8.CzwJhXsi.js`),__vite__mapDeps([28,1,7,8,13,2,16,17,29]),import.meta.url),()=>T(()=>import(`../nodes/9.OQRL7WC0.js`),__vite__mapDeps([30,1,2,20,16,17,31]),import.meta.url),()=>T(()=>import(`../nodes/10.BzTAm6YU.js`),__vite__mapDeps([32,1,2,33]),import.meta.url)],M=[],N={"/":[3],"/admin":[4],"/admin/endpoints":[5],"/advanced":[6],"/chat":[7],"/login":[-9],"/setup":[9,[2]],"/splash":[-11]},P={handleError:(({error:e})=>{console.error(e)}),reroute:(()=>{}),transport:{}},F=Object.fromEntries(Object.entries(P.transport).map(([e,t])=>[e,t.decode])),I=Object.fromEntries(Object.entries(P.transport).map(([e,t])=>[e,t.encode])),L=!1,R=(e,t)=>F[e](t);export{R as decode,F as decoders,N as dictionary,I as encoders,L as hash,P as hooks,E as matchers,j as nodes,A as root,M as server_loads};
@@ -0,0 +1 @@
1
+ import{c as e,r as t}from"../chunks/BJvGvX8w.js";export{e as load_css,t as start};
@@ -0,0 +1 @@
1
+ �(�import{c as e,r as t}from"../chunks/BJvGvX8w.js";export{e as load_css,t as start};
@@ -1 +1 @@
1
- import{$ as e,A as t,B as n,C as r,E as i,F as a,G as o,I as s,K as c,L as l,M as u,N as d,P as f,Q as p,Z as m,ct as h,f as g,ft as _,j as v,k as y,nt as b,pt as x,r as S,st as C,tt as w,y as T}from"../chunks/BBI__kVO.js";import"../chunks/xihTtKlq.js";import{d as E,t as D,u as O}from"../chunks/DjDrL9ap.js";var k=d(`<a target="_blank" rel="noopener noreferrer" class="update-banner-link svelte-1u6ojbd">Download</a>`),A=d(`<div class="update-banner svelte-1u6ojbd" role="status"><span class="update-banner-icon svelte-1u6ojbd" aria-hidden="true"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line></svg></span> <span class="update-banner-text svelte-1u6ojbd">A new version of OpenPalm is available — <strong> </strong> <!></span> <!> <button type="button" class="update-banner-dismiss svelte-1u6ojbd" aria-label="Dismiss">×</button></div>`);function j(r,i){h(i,!0);let s=b(null),c=b(!1);function d(e){return`openpalm.updateBanner.dismissed.${e}`}S(async()=>{try{let e=await fetch(`/api/electron/update-status`);if(!e.ok)return;let t=await e.json();if(!t.inElectron||!t.updateAvailable||!t.latestVersion||typeof localStorage<`u`&&localStorage.getItem(d(t.latestVersion)))return;w(s,t,!0)}catch{}});function f(){n(s)?.latestVersion&&typeof localStorage<`u`&&localStorage.setItem(d(n(s).latestVersion),`1`),w(c,!0)}var x=u(),T=p(x),E=r=>{var i=A(),c=e(m(i),2),u=e(m(c)),d=m(u);_(u);var p=e(u,2),h=e=>{var r=a();o(()=>t(r,`(you have v${n(s).currentVersion??``})`)),v(e,r)};y(p,e=>{n(s).currentVersion&&e(h)}),_(c);var b=e(c,2),x=e=>{var t=k();o(()=>g(t,`href`,n(s).latestUrl)),v(e,t)};y(b,e=>{n(s).latestUrl&&e(x)});var S=e(b,2);_(i),o(()=>t(d,`v${n(s).latestVersion??``}`)),l(`click`,S,f),v(r,i)};y(T,e=>{n(s)&&!n(c)&&e(E)}),v(r,x),C()}s([`click`]);var M=f(`<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"></polyline></svg>`),N=f(`<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line></svg>`),P=f(`<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="16" x2="12" y2="12"></line><line x1="12" y1="8" x2="12.01" y2="8"></line></svg>`),F=d(`<div><span class="toast-icon svelte-c82lj3" aria-hidden="true"><!> <span class="sr-only svelte-c82lj3"> </span></span> <span class="toast-message svelte-c82lj3"> </span> <button type="button" class="toast-dismiss svelte-c82lj3" aria-label="Dismiss">&times;</button></div>`),I=d(`<div class="toast-stack svelte-c82lj3" aria-live="polite"></div>`);function L(r,a){h(a,!0);let s=null;c(()=>{let e=O.errorMessage;e&&(s=E.push(`error`,e,{replaceId:s??void 0}),O.errorMessage=``)});function d(e){E.dismiss(e.id),e.id===s&&(s=null)}function f(e){return e.kind===`success`?`Success`:e.kind===`error`?`Error`:`Notice`}var b=u(),x=p(b),S=r=>{var a=I();i(a,21,()=>E.toasts,e=>e.id,(r,i)=>{var a=F(),s=m(a),c=m(s),u=e=>{v(e,M())},p=e=>{v(e,N())},h=e=>{v(e,P())};y(c,e=>{n(i).kind===`success`?e(u):n(i).kind===`error`?e(p,1):e(h,-1)});var b=e(c,2),x=m(b);_(b),_(s);var S=e(s,2),C=m(S,!0);_(S);var w=e(S,2);_(a),o(e=>{T(a,1,`toast toast-${n(i).kind??``}`,`svelte-c82lj3`),g(a,`role`,n(i).kind===`error`?`alert`:`status`),g(a,`aria-live`,n(i).kind===`error`?`assertive`:`polite`),t(x,`${e??``}:`),t(C,n(i).message)},[()=>f(n(i))]),l(`click`,w,()=>d(n(i))),v(r,a)}),_(a),v(r,a)};y(x,e=>{E.toasts.length>0&&e(S)}),v(r,b),C()}s([`click`]);var R=d(`<!> <!> <!>`,1);function z(t,n){h(n,!0),S(()=>{D.init()});var i=R(),a=p(i);j(a,{});var o=e(a,2);r(o,()=>n.children??x),L(e(o,2),{}),v(t,i),C()}export{z as component};
1
+ import{$ as e,A as t,B as n,C as r,E as i,F as a,G as o,I as s,K as c,L as l,M as u,N as d,P as f,Q as p,Z as m,ct as h,f as g,ft as _,j as v,k as y,nt as b,pt as x,r as S,st as C,tt as w,y as T}from"../chunks/BBI__kVO.js";import"../chunks/xihTtKlq.js";import{d as E,t as D,u as O}from"../chunks/CgKtEGfl.js";var k=d(`<a target="_blank" rel="noopener noreferrer" class="update-banner-link svelte-1u6ojbd">Download</a>`),A=d(`<div class="update-banner svelte-1u6ojbd" role="status"><span class="update-banner-icon svelte-1u6ojbd" aria-hidden="true"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line></svg></span> <span class="update-banner-text svelte-1u6ojbd">A new version of OpenPalm is available — <strong> </strong> <!></span> <!> <button type="button" class="update-banner-dismiss svelte-1u6ojbd" aria-label="Dismiss">×</button></div>`);function j(r,i){h(i,!0);let s=b(null),c=b(!1);function d(e){return`openpalm.updateBanner.dismissed.${e}`}S(async()=>{try{let e=await fetch(`/api/electron/update-status`);if(!e.ok)return;let t=await e.json();if(!t.inElectron||!t.updateAvailable||!t.latestVersion||typeof localStorage<`u`&&localStorage.getItem(d(t.latestVersion)))return;w(s,t,!0)}catch{}});function f(){n(s)?.latestVersion&&typeof localStorage<`u`&&localStorage.setItem(d(n(s).latestVersion),`1`),w(c,!0)}var x=u(),T=p(x),E=r=>{var i=A(),c=e(m(i),2),u=e(m(c)),d=m(u);_(u);var p=e(u,2),h=e=>{var r=a();o(()=>t(r,`(you have v${n(s).currentVersion??``})`)),v(e,r)};y(p,e=>{n(s).currentVersion&&e(h)}),_(c);var b=e(c,2),x=e=>{var t=k();o(()=>g(t,`href`,n(s).latestUrl)),v(e,t)};y(b,e=>{n(s).latestUrl&&e(x)});var S=e(b,2);_(i),o(()=>t(d,`v${n(s).latestVersion??``}`)),l(`click`,S,f),v(r,i)};y(T,e=>{n(s)&&!n(c)&&e(E)}),v(r,x),C()}s([`click`]);var M=f(`<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"></polyline></svg>`),N=f(`<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line></svg>`),P=f(`<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="16" x2="12" y2="12"></line><line x1="12" y1="8" x2="12.01" y2="8"></line></svg>`),F=d(`<div><span class="toast-icon svelte-c82lj3" aria-hidden="true"><!> <span class="sr-only svelte-c82lj3"> </span></span> <span class="toast-message svelte-c82lj3"> </span> <button type="button" class="toast-dismiss svelte-c82lj3" aria-label="Dismiss">&times;</button></div>`),I=d(`<div class="toast-stack svelte-c82lj3" aria-live="polite"></div>`);function L(r,a){h(a,!0);let s=null;c(()=>{let e=O.errorMessage;e&&(s=E.push(`error`,e,{replaceId:s??void 0}),O.errorMessage=``)});function d(e){E.dismiss(e.id),e.id===s&&(s=null)}function f(e){return e.kind===`success`?`Success`:e.kind===`error`?`Error`:`Notice`}var b=u(),x=p(b),S=r=>{var a=I();i(a,21,()=>E.toasts,e=>e.id,(r,i)=>{var a=F(),s=m(a),c=m(s),u=e=>{v(e,M())},p=e=>{v(e,N())},h=e=>{v(e,P())};y(c,e=>{n(i).kind===`success`?e(u):n(i).kind===`error`?e(p,1):e(h,-1)});var b=e(c,2),x=m(b);_(b),_(s);var S=e(s,2),C=m(S,!0);_(S);var w=e(S,2);_(a),o(e=>{T(a,1,`toast toast-${n(i).kind??``}`,`svelte-c82lj3`),g(a,`role`,n(i).kind===`error`?`alert`:`status`),g(a,`aria-live`,n(i).kind===`error`?`assertive`:`polite`),t(x,`${e??``}:`),t(C,n(i).message)},[()=>f(n(i))]),l(`click`,w,()=>d(n(i))),v(r,a)}),_(a),v(r,a)};y(x,e=>{E.toasts.length>0&&e(S)}),v(r,b),C()}s([`click`]);var R=d(`<!> <!> <!>`,1);function z(t,n){h(n,!0),S(()=>{D.init()});var i=R(),a=p(i);j(a,{});var o=e(a,2);r(o,()=>n.children??x),L(e(o,2),{}),v(t,i),C()}export{z as component};
@@ -1 +1 @@
1
- import{$ as e,A as t,G as n,N as r,Q as i,Z as a,ct as o,ft as s,j as c,st as l}from"../chunks/BBI__kVO.js";import"../chunks/xihTtKlq.js";import{t as u}from"../chunks/Drz9G_H2.js";var d=r(`<h1> </h1> <p> </p>`,1);function f(r,f){o(f,!0);var p=d(),m=i(p),h=a(m,!0);s(m);var g=e(m,2),_=a(g,!0);s(g),n(()=>{t(h,u.status),t(_,u.error?.message)}),c(r,p),l()}export{f as component};
1
+ import{$ as e,A as t,G as n,N as r,Q as i,Z as a,ct as o,ft as s,j as c,st as l}from"../chunks/BBI__kVO.js";import"../chunks/xihTtKlq.js";import{t as u}from"../chunks/B7Tzub6z.js";var d=r(`<h1> </h1> <p> </p>`,1);function f(r,f){o(f,!0);var p=d(),m=i(p),h=a(m,!0);s(m);var g=e(m,2),_=a(g,!0);s(g),n(()=>{t(h,u.status),t(_,u.error?.message)}),c(r,p),l()}export{f as component};