@juspay/shooter 1.24.2 → 1.25.0

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 (163) hide show
  1. package/.claude/hooks/notifier.cjs +32 -4
  2. package/build/client/_app/immutable/assets/{4.D4EDSN4H.css → 4.ChO_hlLs.css} +1 -1
  3. package/build/client/_app/immutable/assets/4.ChO_hlLs.css.br +0 -0
  4. package/build/client/_app/immutable/assets/4.ChO_hlLs.css.gz +0 -0
  5. package/build/client/_app/immutable/chunks/{BBuzUXZ9.js → BstJSK2K.js} +1 -1
  6. package/build/client/_app/immutable/chunks/BstJSK2K.js.br +0 -0
  7. package/build/client/_app/immutable/chunks/BstJSK2K.js.gz +0 -0
  8. package/build/client/_app/immutable/chunks/{Dqmsaccg.js → DINqYbXU.js} +1 -1
  9. package/build/client/_app/immutable/chunks/DINqYbXU.js.br +0 -0
  10. package/build/client/_app/immutable/chunks/DINqYbXU.js.gz +0 -0
  11. package/build/client/_app/immutable/chunks/ssAhjWfF.js +3 -0
  12. package/build/client/_app/immutable/chunks/ssAhjWfF.js.br +0 -0
  13. package/build/client/_app/immutable/chunks/ssAhjWfF.js.gz +0 -0
  14. package/build/client/_app/immutable/entry/{app.Bu4nq_bk.js → app.BPK9s2o5.js} +2 -2
  15. package/build/client/_app/immutable/entry/app.BPK9s2o5.js.br +0 -0
  16. package/build/client/_app/immutable/entry/app.BPK9s2o5.js.gz +0 -0
  17. package/build/client/_app/immutable/entry/start.DFPHuGE3.js +1 -0
  18. package/build/client/_app/immutable/entry/start.DFPHuGE3.js.br +2 -0
  19. package/build/client/_app/immutable/entry/start.DFPHuGE3.js.gz +0 -0
  20. package/build/client/_app/immutable/nodes/{0.CnSSjKHX.js → 0.BEbzRcwm.js} +1 -1
  21. package/build/client/_app/immutable/nodes/0.BEbzRcwm.js.br +0 -0
  22. package/build/client/_app/immutable/nodes/0.BEbzRcwm.js.gz +0 -0
  23. package/build/client/_app/immutable/nodes/{1.D_5wZINa.js → 1.C_V0SOr9.js} +1 -1
  24. package/build/client/_app/immutable/nodes/1.C_V0SOr9.js.br +0 -0
  25. package/build/client/_app/immutable/nodes/1.C_V0SOr9.js.gz +0 -0
  26. package/build/client/_app/immutable/nodes/{10.C_B2eMms.js → 10.6V-37_Rl.js} +1 -1
  27. package/build/client/_app/immutable/nodes/10.6V-37_Rl.js.br +0 -0
  28. package/build/client/_app/immutable/nodes/10.6V-37_Rl.js.gz +0 -0
  29. package/build/client/_app/immutable/nodes/{11.DUKnn5ja.js → 11.Lzf-KC6L.js} +1 -1
  30. package/build/client/_app/immutable/nodes/11.Lzf-KC6L.js.br +0 -0
  31. package/build/client/_app/immutable/nodes/11.Lzf-KC6L.js.gz +0 -0
  32. package/build/client/_app/immutable/nodes/{2.C37CZKYv.js → 2.Cl2dMP2L.js} +1 -1
  33. package/build/client/_app/immutable/nodes/2.Cl2dMP2L.js.br +0 -0
  34. package/build/client/_app/immutable/nodes/2.Cl2dMP2L.js.gz +0 -0
  35. package/build/client/_app/immutable/nodes/{3.C48G514u.js → 3.CuX2eSna.js} +1 -1
  36. package/build/client/_app/immutable/nodes/3.CuX2eSna.js.br +0 -0
  37. package/build/client/_app/immutable/nodes/3.CuX2eSna.js.gz +0 -0
  38. package/build/client/_app/immutable/nodes/4.2DvqoOaB.js +17 -0
  39. package/build/client/_app/immutable/nodes/4.2DvqoOaB.js.br +0 -0
  40. package/build/client/_app/immutable/nodes/4.2DvqoOaB.js.gz +0 -0
  41. package/build/client/_app/immutable/nodes/{6.DGlutNk6.js → 6.C7e6zQyP.js} +1 -1
  42. package/build/client/_app/immutable/nodes/6.C7e6zQyP.js.br +0 -0
  43. package/build/client/_app/immutable/nodes/6.C7e6zQyP.js.gz +0 -0
  44. package/build/client/_app/immutable/nodes/{7.BXAYsEHF.js → 7.1ygvNTnO.js} +1 -1
  45. package/build/client/_app/immutable/nodes/7.1ygvNTnO.js.br +0 -0
  46. package/build/client/_app/immutable/nodes/7.1ygvNTnO.js.gz +0 -0
  47. package/build/client/_app/immutable/nodes/{8.D-SxCq24.js → 8.CBVmgOk0.js} +1 -1
  48. package/build/client/_app/immutable/nodes/8.CBVmgOk0.js.br +0 -0
  49. package/build/client/_app/immutable/nodes/8.CBVmgOk0.js.gz +0 -0
  50. package/build/client/_app/immutable/nodes/{9.Bek2YR4U.js → 9.B-_ZFZhj.js} +1 -1
  51. package/build/client/_app/immutable/nodes/9.B-_ZFZhj.js.br +0 -0
  52. package/build/client/_app/immutable/nodes/9.B-_ZFZhj.js.gz +0 -0
  53. package/build/client/_app/version.json +1 -1
  54. package/build/client/_app/version.json.br +0 -0
  55. package/build/client/_app/version.json.gz +0 -0
  56. package/build/server/chunks/{0-ByOnI9Md.js → 0-BHU07xt9.js} +2 -2
  57. package/build/server/chunks/{0-ByOnI9Md.js.map → 0-BHU07xt9.js.map} +1 -1
  58. package/build/server/chunks/{1-DcJwehLu.js → 1-OVOd8GUH.js} +2 -2
  59. package/build/server/chunks/{1-DcJwehLu.js.map → 1-OVOd8GUH.js.map} +1 -1
  60. package/build/server/chunks/{10-B5bdfDfK.js → 10-CRHtvb_u.js} +2 -2
  61. package/build/server/chunks/{10-B5bdfDfK.js.map → 10-CRHtvb_u.js.map} +1 -1
  62. package/build/server/chunks/{11-DOJ9j7KC.js → 11-CdSex9j1.js} +2 -2
  63. package/build/server/chunks/{11-DOJ9j7KC.js.map → 11-CdSex9j1.js.map} +1 -1
  64. package/build/server/chunks/{2-BY0LGSMl.js → 2-bb78aIZ6.js} +2 -2
  65. package/build/server/chunks/{2-BY0LGSMl.js.map → 2-bb78aIZ6.js.map} +1 -1
  66. package/build/server/chunks/{3-DEa6RtDT.js → 3-CsTC6Lrn.js} +2 -2
  67. package/build/server/chunks/{3-DEa6RtDT.js.map → 3-CsTC6Lrn.js.map} +1 -1
  68. package/build/server/chunks/{4-w2W_T8ax.js → 4-DTTu8_Gr.js} +4 -4
  69. package/build/server/chunks/{4-w2W_T8ax.js.map → 4-DTTu8_Gr.js.map} +1 -1
  70. package/build/server/chunks/{6-DoTu6ygH.js → 6-BUgQGB_4.js} +2 -2
  71. package/build/server/chunks/{6-DoTu6ygH.js.map → 6-BUgQGB_4.js.map} +1 -1
  72. package/build/server/chunks/{7-CYQ9V6d4.js → 7-CsQZnkcG.js} +2 -2
  73. package/build/server/chunks/{7-CYQ9V6d4.js.map → 7-CsQZnkcG.js.map} +1 -1
  74. package/build/server/chunks/{8-DMwmCD5X.js → 8-DcIuPdyW.js} +2 -2
  75. package/build/server/chunks/{8-DMwmCD5X.js.map → 8-DcIuPdyW.js.map} +1 -1
  76. package/build/server/chunks/{9-CNmPa2Jo.js → 9-D8bkM1uj.js} +2 -2
  77. package/build/server/chunks/{9-CNmPa2Jo.js.map → 9-D8bkM1uj.js.map} +1 -1
  78. package/build/server/chunks/{_page.svelte-DDE2nChH.js → _page.svelte-BBbaKwNz.js} +101 -27
  79. package/build/server/chunks/_page.svelte-BBbaKwNz.js.map +1 -0
  80. package/build/server/chunks/{_server.ts-DfscXcFe.js → _server.ts-B7BLxK5u.js} +233 -186
  81. package/build/server/chunks/_server.ts-B7BLxK5u.js.map +1 -0
  82. package/build/server/chunks/{_server.ts-EJVmhLtg.js → _server.ts-BSS8cO80.js} +15 -3
  83. package/build/server/chunks/_server.ts-BSS8cO80.js.map +1 -0
  84. package/build/server/chunks/_server.ts-DNTxPoxO.js +115 -0
  85. package/build/server/chunks/_server.ts-DNTxPoxO.js.map +1 -0
  86. package/build/server/chunks/{_server.ts-D9_hkPQ6.js → _server.ts-DUb7fbuW.js} +17 -3
  87. package/build/server/chunks/_server.ts-DUb7fbuW.js.map +1 -0
  88. package/build/server/chunks/{_server.ts-v7TaT83B.js → _server.ts-FdKi8RwL.js} +7 -3
  89. package/build/server/chunks/_server.ts-FdKi8RwL.js.map +1 -0
  90. package/build/server/chunks/device-format-DTgEz4Yr.js +29 -0
  91. package/build/server/chunks/device-format-DTgEz4Yr.js.map +1 -0
  92. package/build/server/chunks/device-token-store-Ct7aTeR8.js +259 -0
  93. package/build/server/chunks/device-token-store-Ct7aTeR8.js.map +1 -0
  94. package/build/server/chunks/{library-apns-D8RPINlv.js → library-apns-DMlL1BAg.js} +158 -26
  95. package/build/server/chunks/library-apns-DMlL1BAg.js.map +1 -0
  96. package/build/server/index.js +1 -1
  97. package/build/server/index.js.map +1 -1
  98. package/build/server/manifest.js +17 -17
  99. package/build/server/manifest.js.map +1 -1
  100. package/package.json +2 -2
  101. package/server.ts +15 -1
  102. package/src/app.d.ts +4 -0
  103. package/src/lib/modules/server/apn/apns-classify.ts +103 -0
  104. package/src/lib/modules/server/apn/library-apns.ts +151 -35
  105. package/src/lib/modules/server/apn/notify-fanout.ts +40 -0
  106. package/src/lib/modules/server/fcm/fcm-classify.ts +61 -0
  107. package/src/lib/modules/server/fcm/fcm-service.ts +128 -29
  108. package/src/lib/modules/server/push/device-format.ts +42 -0
  109. package/src/lib/modules/server/push/device-token-store.ts +354 -0
  110. package/src/lib/types/apn.ts +4 -0
  111. package/src/lib/types/device.ts +156 -0
  112. package/src/lib/types/index.ts +1 -0
  113. package/src/routes/api/debug/+server.ts +13 -1
  114. package/src/routes/api/device-token/+server.ts +122 -37
  115. package/src/routes/api/health/+server.ts +16 -2
  116. package/src/routes/api/notify/+server.ts +175 -168
  117. package/src/routes/api/qr-config/+server.ts +9 -2
  118. package/src/routes/config/+page.svelte +182 -44
  119. package/build/client/_app/immutable/assets/4.D4EDSN4H.css.br +0 -0
  120. package/build/client/_app/immutable/assets/4.D4EDSN4H.css.gz +0 -0
  121. package/build/client/_app/immutable/chunks/BBuzUXZ9.js.br +0 -0
  122. package/build/client/_app/immutable/chunks/BBuzUXZ9.js.gz +0 -0
  123. package/build/client/_app/immutable/chunks/BPIV28L3.js +0 -3
  124. package/build/client/_app/immutable/chunks/BPIV28L3.js.br +0 -0
  125. package/build/client/_app/immutable/chunks/BPIV28L3.js.gz +0 -0
  126. package/build/client/_app/immutable/chunks/Dqmsaccg.js.br +0 -0
  127. package/build/client/_app/immutable/chunks/Dqmsaccg.js.gz +0 -0
  128. package/build/client/_app/immutable/entry/app.Bu4nq_bk.js.br +0 -0
  129. package/build/client/_app/immutable/entry/app.Bu4nq_bk.js.gz +0 -0
  130. package/build/client/_app/immutable/entry/start.CbpzR6Gp.js +0 -1
  131. package/build/client/_app/immutable/entry/start.CbpzR6Gp.js.br +0 -2
  132. package/build/client/_app/immutable/entry/start.CbpzR6Gp.js.gz +0 -0
  133. package/build/client/_app/immutable/nodes/0.CnSSjKHX.js.br +0 -0
  134. package/build/client/_app/immutable/nodes/0.CnSSjKHX.js.gz +0 -0
  135. package/build/client/_app/immutable/nodes/1.D_5wZINa.js.br +0 -0
  136. package/build/client/_app/immutable/nodes/1.D_5wZINa.js.gz +0 -0
  137. package/build/client/_app/immutable/nodes/10.C_B2eMms.js.br +0 -0
  138. package/build/client/_app/immutable/nodes/10.C_B2eMms.js.gz +0 -0
  139. package/build/client/_app/immutable/nodes/11.DUKnn5ja.js.br +0 -0
  140. package/build/client/_app/immutable/nodes/11.DUKnn5ja.js.gz +0 -0
  141. package/build/client/_app/immutable/nodes/2.C37CZKYv.js.br +0 -0
  142. package/build/client/_app/immutable/nodes/2.C37CZKYv.js.gz +0 -0
  143. package/build/client/_app/immutable/nodes/3.C48G514u.js.br +0 -0
  144. package/build/client/_app/immutable/nodes/3.C48G514u.js.gz +0 -0
  145. package/build/client/_app/immutable/nodes/4.C9fv_m2R.js +0 -16
  146. package/build/client/_app/immutable/nodes/4.C9fv_m2R.js.br +0 -0
  147. package/build/client/_app/immutable/nodes/4.C9fv_m2R.js.gz +0 -0
  148. package/build/client/_app/immutable/nodes/6.DGlutNk6.js.br +0 -0
  149. package/build/client/_app/immutable/nodes/6.DGlutNk6.js.gz +0 -0
  150. package/build/client/_app/immutable/nodes/7.BXAYsEHF.js.br +0 -0
  151. package/build/client/_app/immutable/nodes/7.BXAYsEHF.js.gz +0 -0
  152. package/build/client/_app/immutable/nodes/8.D-SxCq24.js.br +0 -0
  153. package/build/client/_app/immutable/nodes/8.D-SxCq24.js.gz +0 -0
  154. package/build/client/_app/immutable/nodes/9.Bek2YR4U.js.br +0 -0
  155. package/build/client/_app/immutable/nodes/9.Bek2YR4U.js.gz +0 -0
  156. package/build/server/chunks/_page.svelte-DDE2nChH.js.map +0 -1
  157. package/build/server/chunks/_server.ts-D2RS8TFd.js +0 -72
  158. package/build/server/chunks/_server.ts-D2RS8TFd.js.map +0 -1
  159. package/build/server/chunks/_server.ts-D9_hkPQ6.js.map +0 -1
  160. package/build/server/chunks/_server.ts-DfscXcFe.js.map +0 -1
  161. package/build/server/chunks/_server.ts-EJVmhLtg.js.map +0 -1
  162. package/build/server/chunks/_server.ts-v7TaT83B.js.map +0 -1
  163. package/build/server/chunks/library-apns-D8RPINlv.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import{d as he,i as N,s as _,b as Wt,a as p,f as h}from"../chunks/DoGIJDSZ.js";import{s as J,q as qt,g as r,b as w,p as Yt,v as ge,c as l,d as v,r as c,t as R,w as Ft,x as H,A as Mt,y as Ee,D as Te,$ as Ne,B as se}from"../chunks/kzeZOqU5.js";import{s as Tt,g as Dt,d as nt,e as dt,P as ye,l as Oe,j as Qt,B as Jt,c as $t,b as ze,i as ne}from"../chunks/aiM7Bbhi.js";import{h as Ie}from"../chunks/BQJR1fvD.js";import{g as ae}from"../chunks/BPIV28L3.js";import{B as Pe}from"../chunks/Bn-6X1BO.js";import{R as je,S as re}from"../chunks/etLjvmY8.js";import{S as Le}from"../chunks/CG453M9q.js";import{c as Me,s as De,g as Re}from"../chunks/xs1Xl3_e.js";import{g as oe,i as Be}from"../chunks/gQJcRhou.js";import"../chunks/Dk1NUsIU.js";import{f as Xt}from"../chunks/BLszSzTT.js";import{S as Ke}from"../chunks/DcXdn821.js";import{i as We,N as qe}from"../chunks/CnsJhNGt.js";import{d as Ye}from"../chunks/C87ZRWX0.js";import{E as ie}from"../chunks/DFa6kKPT.js";const Fe=2e4;function Ge(e){if(typeof document>"u")return()=>{};const t=()=>{Ut(e,document.visibilityState==="visible"?"foreground":"background")},n=()=>{Ut(e,"background")};t();const a=setInterval(t,Fe);return document.addEventListener("visibilitychange",t),window.addEventListener("pagehide",n),()=>{clearInterval(a),document.removeEventListener("visibilitychange",t),window.removeEventListener("pagehide",n),Ut(e,"background")}}function Ut(e,t){fetch("/api/presence",{body:JSON.stringify({state:t}),headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json"},keepalive:!0,method:"POST"}).catch(()=>{})}const Je={humanGraceMs:5e3,injectConfidence:.7,maxAutoActions:8,minIntervalMs:3e4},ce=400,$e=[/\brm\s+-[a-z]*r[a-z]*f?\s+(\/|~|\/\*|\$home)/i,/\brm\s+-[a-z]*f[a-z]*r?\s+(\/|~|\/\*|\$home)/i,/:\(\)\s*\{\s*:\s*\|\s*:\s*&\s*\}\s*;\s*:/,/\bdd\b[^\n]*\bof=\/dev\//i,/>\s*\/dev\/(sd|nvme|disk|hd)/i,/\bmkfs(\.[a-z0-9]+)?\b/i,/\b(shutdown|reboot|halt|poweroff)\b/i];function Ue(e,t,n,a=Je,s={}){const o=t.steps[0];return o?o.tentative&&!s.allowTentative?{act:!1,reason:"consensus is tentative (no quorum)"}:e.isManaged?e.lastEventType!=="agent-idle"?{act:!1,reason:`agent not idle (last event: ${e.lastEventType})`}:n-e.lastActivityAt<a.humanGraceMs?{act:!1,reason:"recent activity — within human grace window"}:n-e.lastInjectedAt<a.minIntervalMs?{act:!1,reason:"rate-limited (min inject interval)"}:e.autoActionCount>=a.maxAutoActions?{act:!1,reason:"circuit breaker — max consecutive auto-actions reached"}:o.confidence<a.injectConfidence?{act:!1,reason:`confidence ${o.confidence.toFixed(2)} below floor`}:e.lastActedStep!==null&&Zt(o.text)===e.lastActedStep?{act:!1,reason:"already acted on this step"}:{act:!0,reason:"idle + high-confidence consensus",step:o}:{act:!1,reason:"terminal is external / read-only (cannot inject)"}:{act:!1,reason:"no consensus step"}}function He(e,t){const n=e.trim();if(n.length===0)return{command:n,reason:"empty command",safe:!1};if(/[\r\n]/.test(e))return{command:n,reason:"multi-line command rejected (single command only)",safe:!1};if(n.length>ce)return{command:n,reason:`command too long (> ${ce})`,safe:!1};for(const a of $e)if(a.test(n))return{command:n,reason:"matches a dangerous-command pattern",safe:!1};return t!==null&&n===t.trim()?{command:n,reason:"duplicate of last injected command",safe:!1}:{command:n,reason:"ok",safe:!0}}function Zt(e){return e.toLowerCase().trim().replace(/\s+/g," ").replace(/[.,;:!?]+$/,"")}const _e="shooter_autonomy",Ve=6e3,Xe=3e3,Ze=5e3,Qe=40,ts=12e4,es=120,ss=/^[A-Za-z0-9_-]+$/,ns=new Set(["bun","cargo","cat","deno","echo","eslint","git","go","jest","ls","make","node","npm","npx","pnpm","prettier","pwd","python","python3","tsc","vitest","yarn"]),as=new Set(["claude","opencode"]);class rs{#t=J(qt([]));get actions(){return r(this.#t)}set actions(t){w(this.#t,t,!0)}#e=J(!1);get enabled(){return r(this.#e)}set enabled(t){w(this.#e,t,!0)}apiKey="";deps;eventsWs=null;pollTimer=null;reconnectTimer=null;started=!1;terminals=new Map;constructor(t){this.deps={now:t?.now??(()=>Date.now()),produceCommand:t?.produceCommand??os},this.enabled=us()}setEnabled(t){this.enabled=t;try{localStorage.setItem(_e,JSON.stringify({enabled:t}))}catch{}}start(t){this.apiKey=t,!this.started&&(this.started=!0,typeof window<"u"&&window.addEventListener("shooter:wake",this.onWake),this.connectEvents(),this.refresh(),this.pollTimer=setInterval(()=>{this.refresh()},Ve))}stop(){this.started=!1,typeof window<"u"&&window.removeEventListener("shooter:wake",this.onWake),this.pollTimer&&(clearInterval(this.pollTimer),this.pollTimer=null),this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.eventsWs&&(this.eventsWs.onclose=null,this.eventsWs.close(),this.eventsWs=null);for(const t of this.terminals.values())t.injectSocket?.close(),t.injectSocket=null}async connectEvents(){const t=await this.getTicket();if(!t||!this.started)return;const n=window.location.origin.replace(/^http/,"ws"),a=new WebSocket(`${n}/ws/events?ticket=${t}`);this.eventsWs=a,a.onmessage=s=>{try{const o=JSON.parse(s.data);o&&typeof o=="object"&&this.handleEvent(o)}catch{}},a.onclose=()=>{this.eventsWs=null,this.started&&this.scheduleReconnect()},a.onerror=()=>{}}createRuntime(t){const n={autoActionCount:0,busy:!1,command:"",consensus:null,injectSocket:null,isManaged:!1,lastActedStep:null,lastActivityAt:0,lastCommand:null,lastEventAt:0,lastEventType:"",lastInjectedAt:0,recentOutput:""};return this.terminals.set(t,n),n}async evaluate(t){if(!this.enabled)return;const n=this.terminals.get(t);if(!n||n.busy||!n.consensus)return;const a={autoActionCount:n.autoActionCount,isManaged:n.isManaged,lastActedStep:n.lastActedStep,lastActivityAt:n.lastActivityAt,lastEventType:n.lastEventType,lastInjectedAt:n.lastInjectedAt},s=Ue(a,n.consensus,this.deps.now(),void 0,{allowTentative:Ht(n.command)});if(!(!s.act||!s.step)){n.busy=!0;try{const o=Ht(n.command);let f;try{f=await this.deps.produceCommand({apiKey:this.apiKey,isAgentTerminal:o,recentOutput:n.recentOutput,step:s.step,terminalId:t})}catch{f=null}if(!f){this.log(t,"skipped",`no command for: ${s.step.text.slice(0,60)}`);return}const g=o?f.replace(/\s*[\r\n]+\s*/g," ").trim():f,k=He(g,n.lastCommand);if(!k.safe){n.lastActedStep=Zt(s.step.text),this.log(t,"skipped",`guard: ${k.reason}`);return}await this.inject(t,k.command)?(n.lastInjectedAt=this.deps.now(),n.lastCommand=k.command,n.lastActedStep=Zt(s.step.text),n.autoActionCount+=1,this.log(t,"injected",k.command)):this.log(t,"error",`inject failed: ${k.command}`)}finally{n.busy=!1}}}async fetchSummaries(){try{const t=await fetch("/api/summaries?limit=30",{headers:{Authorization:`Bearer ${this.apiKey}`}});if(!t.ok)return;const n=await t.json(),a=new Set;for(const s of n.summaries??[]){const o=s.terminalId;if(!o||a.has(o))continue;const f=this.terminals.get(o);if(!f)continue;a.add(o),f.consensus={agentCount:5,quorum:3,steps:ls(s.nextSteps)};const g=Date.parse(s.createdAt);s.trigger==="agent-idle"&&Number.isFinite(g)&&g>=f.lastEventAt&&this.deps.now()-g<ts&&(f.lastEventType="agent-idle")}}catch{}}async fetchTerminals(){try{const t=await fetch("/api/terminals",{headers:{Authorization:`Bearer ${this.apiKey}`}});if(!t.ok)return;const n=await t.json(),a=new Set;for(const s of n.terminals??[]){if(s.exitedAt!==null||s.status==="exited")continue;a.add(s.id);const o=this.terminals.get(s.id)??this.createRuntime(s.id);o.isManaged=!0,o.command=s.command??""}for(const s of[...this.terminals.keys()])a.has(s)||(this.terminals.get(s)?.injectSocket?.close(),this.terminals.delete(s))}catch{}}async getTicket(){try{const t=await fetch("/api/ws-ticket",{headers:{Authorization:`Bearer ${this.apiKey}`},method:"POST"});if(!t.ok)return null;const{ticket:n}=await t.json();return n}catch{return null}}handleEvent(t){const n=typeof t.type=="string"?t.type:"",a=typeof t.terminalId=="string"?t.terminalId:"";if(!n||n==="welcome"||!a)return;const s=this.terminals.get(a);s&&(s.lastEventType=n,s.lastEventAt=this.deps.now(),n!=="agent-idle"&&n!=="agent-question"&&(s.lastActivityAt=this.deps.now()),n==="tool-completed"&&t.success===!0&&(s.autoActionCount=0),n==="agent-idle"&&this.enabled&&this.evaluate(a))}async inject(t,n){const a=this.terminals.get(t);if(!a||!ss.test(t))return!1;let s=a.injectSocket;if(!s||s.readyState>WebSocket.OPEN){const o=await this.getTicket();if(!o)return!1;const f=window.location.origin.replace(/^http/,"ws");if(s=new WebSocket(`${f}/ws/terminal/${encodeURIComponent(t)}?ticket=${encodeURIComponent(o)}`),a.injectSocket=s,!await vs(s))return a.injectSocket=null,!1}if(s.readyState!==WebSocket.OPEN)return!1;if(Ht(a.command)){const o=n.replace(/\s*[\r\n]+\s*/g," ").trim();return!o||(s.send(JSON.stringify({data:o,type:"input"})),await is(es),s.readyState!==WebSocket.OPEN)?!1:(s.send(JSON.stringify({data:"\r",type:"input"})),!0)}return s.send(JSON.stringify({data:`${n}\r`,type:"input"})),!0}log(t,n,a){this.actions=[{at:this.deps.now(),detail:a,kind:n,terminalId:t},...this.actions].slice(0,Qe)}onWake=()=>{this.refresh()};async refresh(){if(this.apiKey&&(await Promise.allSettled([this.fetchTerminals(),this.fetchSummaries()]),this.enabled))for(const t of this.terminals.keys())this.evaluate(t)}scheduleReconnect(){this.reconnectTimer||(this.reconnectTimer=setTimeout(()=>{this.reconnectTimer=null,this.connectEvents()},Xe))}}async function os(e){if(e.isAgentTerminal){const f=e.step.text.trim();return f.length>0?f:null}const t=await ds(e);if(t)return t;const n=await cs(e);if(n)return n;const a=e.step.text.trim(),s=/`([^`]+)`/.exec(a);if(s)return s[1].trim();const o=a.split(/\s+/)[0]?.toLowerCase();return o&&ns.has(o)&&!/[\r\n]/.test(a)&&a.length<80?a:null}function is(e){return new Promise(t=>{setTimeout(t,e)})}function Ht(e){const n=(e.trim().split(/\s+/)[0]??"").split("/").pop()??"";return as.has(n)}async function cs(e){const t=le("LITELLM_BASE_URL");if(!t||!e.apiKey)return null;const n=le("LITELLM_MODEL")||"open-large",a=`Recent terminal output:
1
+ import{d as he,i as N,s as _,b as Wt,a as p,f as h}from"../chunks/DoGIJDSZ.js";import{s as J,q as qt,g as r,b as w,p as Yt,v as ge,c as l,d as v,r as c,t as R,w as Ft,x as H,A as Mt,y as Ee,D as Te,$ as Ne,B as se}from"../chunks/kzeZOqU5.js";import{s as Tt,g as Dt,d as nt,e as dt,P as ye,l as Oe,j as Qt,B as Jt,c as $t,b as ze,i as ne}from"../chunks/aiM7Bbhi.js";import{h as Ie}from"../chunks/BQJR1fvD.js";import{g as ae}from"../chunks/ssAhjWfF.js";import{B as Pe}from"../chunks/Bn-6X1BO.js";import{R as je,S as re}from"../chunks/etLjvmY8.js";import{S as Le}from"../chunks/CG453M9q.js";import{c as Me,s as De,g as Re}from"../chunks/xs1Xl3_e.js";import{g as oe,i as Be}from"../chunks/gQJcRhou.js";import"../chunks/Dk1NUsIU.js";import{f as Xt}from"../chunks/BLszSzTT.js";import{S as Ke}from"../chunks/DcXdn821.js";import{i as We,N as qe}from"../chunks/CnsJhNGt.js";import{d as Ye}from"../chunks/C87ZRWX0.js";import{E as ie}from"../chunks/DFa6kKPT.js";const Fe=2e4;function Ge(e){if(typeof document>"u")return()=>{};const t=()=>{Ut(e,document.visibilityState==="visible"?"foreground":"background")},n=()=>{Ut(e,"background")};t();const a=setInterval(t,Fe);return document.addEventListener("visibilitychange",t),window.addEventListener("pagehide",n),()=>{clearInterval(a),document.removeEventListener("visibilitychange",t),window.removeEventListener("pagehide",n),Ut(e,"background")}}function Ut(e,t){fetch("/api/presence",{body:JSON.stringify({state:t}),headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json"},keepalive:!0,method:"POST"}).catch(()=>{})}const Je={humanGraceMs:5e3,injectConfidence:.7,maxAutoActions:8,minIntervalMs:3e4},ce=400,$e=[/\brm\s+-[a-z]*r[a-z]*f?\s+(\/|~|\/\*|\$home)/i,/\brm\s+-[a-z]*f[a-z]*r?\s+(\/|~|\/\*|\$home)/i,/:\(\)\s*\{\s*:\s*\|\s*:\s*&\s*\}\s*;\s*:/,/\bdd\b[^\n]*\bof=\/dev\//i,/>\s*\/dev\/(sd|nvme|disk|hd)/i,/\bmkfs(\.[a-z0-9]+)?\b/i,/\b(shutdown|reboot|halt|poweroff)\b/i];function Ue(e,t,n,a=Je,s={}){const o=t.steps[0];return o?o.tentative&&!s.allowTentative?{act:!1,reason:"consensus is tentative (no quorum)"}:e.isManaged?e.lastEventType!=="agent-idle"?{act:!1,reason:`agent not idle (last event: ${e.lastEventType})`}:n-e.lastActivityAt<a.humanGraceMs?{act:!1,reason:"recent activity — within human grace window"}:n-e.lastInjectedAt<a.minIntervalMs?{act:!1,reason:"rate-limited (min inject interval)"}:e.autoActionCount>=a.maxAutoActions?{act:!1,reason:"circuit breaker — max consecutive auto-actions reached"}:o.confidence<a.injectConfidence?{act:!1,reason:`confidence ${o.confidence.toFixed(2)} below floor`}:e.lastActedStep!==null&&Zt(o.text)===e.lastActedStep?{act:!1,reason:"already acted on this step"}:{act:!0,reason:"idle + high-confidence consensus",step:o}:{act:!1,reason:"terminal is external / read-only (cannot inject)"}:{act:!1,reason:"no consensus step"}}function He(e,t){const n=e.trim();if(n.length===0)return{command:n,reason:"empty command",safe:!1};if(/[\r\n]/.test(e))return{command:n,reason:"multi-line command rejected (single command only)",safe:!1};if(n.length>ce)return{command:n,reason:`command too long (> ${ce})`,safe:!1};for(const a of $e)if(a.test(n))return{command:n,reason:"matches a dangerous-command pattern",safe:!1};return t!==null&&n===t.trim()?{command:n,reason:"duplicate of last injected command",safe:!1}:{command:n,reason:"ok",safe:!0}}function Zt(e){return e.toLowerCase().trim().replace(/\s+/g," ").replace(/[.,;:!?]+$/,"")}const _e="shooter_autonomy",Ve=6e3,Xe=3e3,Ze=5e3,Qe=40,ts=12e4,es=120,ss=/^[A-Za-z0-9_-]+$/,ns=new Set(["bun","cargo","cat","deno","echo","eslint","git","go","jest","ls","make","node","npm","npx","pnpm","prettier","pwd","python","python3","tsc","vitest","yarn"]),as=new Set(["claude","opencode"]);class rs{#t=J(qt([]));get actions(){return r(this.#t)}set actions(t){w(this.#t,t,!0)}#e=J(!1);get enabled(){return r(this.#e)}set enabled(t){w(this.#e,t,!0)}apiKey="";deps;eventsWs=null;pollTimer=null;reconnectTimer=null;started=!1;terminals=new Map;constructor(t){this.deps={now:t?.now??(()=>Date.now()),produceCommand:t?.produceCommand??os},this.enabled=us()}setEnabled(t){this.enabled=t;try{localStorage.setItem(_e,JSON.stringify({enabled:t}))}catch{}}start(t){this.apiKey=t,!this.started&&(this.started=!0,typeof window<"u"&&window.addEventListener("shooter:wake",this.onWake),this.connectEvents(),this.refresh(),this.pollTimer=setInterval(()=>{this.refresh()},Ve))}stop(){this.started=!1,typeof window<"u"&&window.removeEventListener("shooter:wake",this.onWake),this.pollTimer&&(clearInterval(this.pollTimer),this.pollTimer=null),this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.eventsWs&&(this.eventsWs.onclose=null,this.eventsWs.close(),this.eventsWs=null);for(const t of this.terminals.values())t.injectSocket?.close(),t.injectSocket=null}async connectEvents(){const t=await this.getTicket();if(!t||!this.started)return;const n=window.location.origin.replace(/^http/,"ws"),a=new WebSocket(`${n}/ws/events?ticket=${t}`);this.eventsWs=a,a.onmessage=s=>{try{const o=JSON.parse(s.data);o&&typeof o=="object"&&this.handleEvent(o)}catch{}},a.onclose=()=>{this.eventsWs=null,this.started&&this.scheduleReconnect()},a.onerror=()=>{}}createRuntime(t){const n={autoActionCount:0,busy:!1,command:"",consensus:null,injectSocket:null,isManaged:!1,lastActedStep:null,lastActivityAt:0,lastCommand:null,lastEventAt:0,lastEventType:"",lastInjectedAt:0,recentOutput:""};return this.terminals.set(t,n),n}async evaluate(t){if(!this.enabled)return;const n=this.terminals.get(t);if(!n||n.busy||!n.consensus)return;const a={autoActionCount:n.autoActionCount,isManaged:n.isManaged,lastActedStep:n.lastActedStep,lastActivityAt:n.lastActivityAt,lastEventType:n.lastEventType,lastInjectedAt:n.lastInjectedAt},s=Ue(a,n.consensus,this.deps.now(),void 0,{allowTentative:Ht(n.command)});if(!(!s.act||!s.step)){n.busy=!0;try{const o=Ht(n.command);let f;try{f=await this.deps.produceCommand({apiKey:this.apiKey,isAgentTerminal:o,recentOutput:n.recentOutput,step:s.step,terminalId:t})}catch{f=null}if(!f){this.log(t,"skipped",`no command for: ${s.step.text.slice(0,60)}`);return}const g=o?f.replace(/\s*[\r\n]+\s*/g," ").trim():f,k=He(g,n.lastCommand);if(!k.safe){n.lastActedStep=Zt(s.step.text),this.log(t,"skipped",`guard: ${k.reason}`);return}await this.inject(t,k.command)?(n.lastInjectedAt=this.deps.now(),n.lastCommand=k.command,n.lastActedStep=Zt(s.step.text),n.autoActionCount+=1,this.log(t,"injected",k.command)):this.log(t,"error",`inject failed: ${k.command}`)}finally{n.busy=!1}}}async fetchSummaries(){try{const t=await fetch("/api/summaries?limit=30",{headers:{Authorization:`Bearer ${this.apiKey}`}});if(!t.ok)return;const n=await t.json(),a=new Set;for(const s of n.summaries??[]){const o=s.terminalId;if(!o||a.has(o))continue;const f=this.terminals.get(o);if(!f)continue;a.add(o),f.consensus={agentCount:5,quorum:3,steps:ls(s.nextSteps)};const g=Date.parse(s.createdAt);s.trigger==="agent-idle"&&Number.isFinite(g)&&g>=f.lastEventAt&&this.deps.now()-g<ts&&(f.lastEventType="agent-idle")}}catch{}}async fetchTerminals(){try{const t=await fetch("/api/terminals",{headers:{Authorization:`Bearer ${this.apiKey}`}});if(!t.ok)return;const n=await t.json(),a=new Set;for(const s of n.terminals??[]){if(s.exitedAt!==null||s.status==="exited")continue;a.add(s.id);const o=this.terminals.get(s.id)??this.createRuntime(s.id);o.isManaged=!0,o.command=s.command??""}for(const s of[...this.terminals.keys()])a.has(s)||(this.terminals.get(s)?.injectSocket?.close(),this.terminals.delete(s))}catch{}}async getTicket(){try{const t=await fetch("/api/ws-ticket",{headers:{Authorization:`Bearer ${this.apiKey}`},method:"POST"});if(!t.ok)return null;const{ticket:n}=await t.json();return n}catch{return null}}handleEvent(t){const n=typeof t.type=="string"?t.type:"",a=typeof t.terminalId=="string"?t.terminalId:"";if(!n||n==="welcome"||!a)return;const s=this.terminals.get(a);s&&(s.lastEventType=n,s.lastEventAt=this.deps.now(),n!=="agent-idle"&&n!=="agent-question"&&(s.lastActivityAt=this.deps.now()),n==="tool-completed"&&t.success===!0&&(s.autoActionCount=0),n==="agent-idle"&&this.enabled&&this.evaluate(a))}async inject(t,n){const a=this.terminals.get(t);if(!a||!ss.test(t))return!1;let s=a.injectSocket;if(!s||s.readyState>WebSocket.OPEN){const o=await this.getTicket();if(!o)return!1;const f=window.location.origin.replace(/^http/,"ws");if(s=new WebSocket(`${f}/ws/terminal/${encodeURIComponent(t)}?ticket=${encodeURIComponent(o)}`),a.injectSocket=s,!await vs(s))return a.injectSocket=null,!1}if(s.readyState!==WebSocket.OPEN)return!1;if(Ht(a.command)){const o=n.replace(/\s*[\r\n]+\s*/g," ").trim();return!o||(s.send(JSON.stringify({data:o,type:"input"})),await is(es),s.readyState!==WebSocket.OPEN)?!1:(s.send(JSON.stringify({data:"\r",type:"input"})),!0)}return s.send(JSON.stringify({data:`${n}\r`,type:"input"})),!0}log(t,n,a){this.actions=[{at:this.deps.now(),detail:a,kind:n,terminalId:t},...this.actions].slice(0,Qe)}onWake=()=>{this.refresh()};async refresh(){if(this.apiKey&&(await Promise.allSettled([this.fetchTerminals(),this.fetchSummaries()]),this.enabled))for(const t of this.terminals.keys())this.evaluate(t)}scheduleReconnect(){this.reconnectTimer||(this.reconnectTimer=setTimeout(()=>{this.reconnectTimer=null,this.connectEvents()},Xe))}}async function os(e){if(e.isAgentTerminal){const f=e.step.text.trim();return f.length>0?f:null}const t=await ds(e);if(t)return t;const n=await cs(e);if(n)return n;const a=e.step.text.trim(),s=/`([^`]+)`/.exec(a);if(s)return s[1].trim();const o=a.split(/\s+/)[0]?.toLowerCase();return o&&ns.has(o)&&!/[\r\n]/.test(a)&&a.length<80?a:null}function is(e){return new Promise(t=>{setTimeout(t,e)})}function Ht(e){const n=(e.trim().split(/\s+/)[0]??"").split("/").pop()??"";return as.has(n)}async function cs(e){const t=le("LITELLM_BASE_URL");if(!t||!e.apiKey)return null;const n=le("LITELLM_MODEL")||"open-large",a=`Recent terminal output:
2
2
  ${e.recentOutput.slice(-2e3)}
3
3
 
4
4
  Suggested next step: ${e.step.text}
@@ -1,4 +1,4 @@
1
- import{i as P,s as h,a as g,t as Be,f as A}from"../chunks/DoGIJDSZ.js";import{s as b,q as ke,b as _,g as n,p as Ee,v as Pe,y as Ge,c as u,d as p,r as d,t as E,B as He,w as Ne,x as N,D as Ve,$ as We}from"../chunks/kzeZOqU5.js";import{h as Je}from"../chunks/BQJR1fvD.js";import{g as ce}from"../chunks/BPIV28L3.js";import{j as ue,e as le,B as qe,s as Ae,b as Xe}from"../chunks/aiM7Bbhi.js";import{g as je,i as Ze}from"../chunks/gQJcRhou.js";import"../chunks/Dk1NUsIU.js";import{f as we}from"../chunks/BLszSzTT.js";import{S as Qe}from"../chunks/DcXdn821.js";import{i as et,N as tt}from"../chunks/CnsJhNGt.js";import{d as ot}from"../chunks/C87ZRWX0.js";const rt=6e4,Se=3;let Q=null,Y=null,L=0,$e=0;async function st(e,t){if(e.length===0)return{error:null,text:""};let i;try{i=await it()}catch{const o=e.map(x=>w(x.data.tool)||x.type),l=Array.from(new Set(o));return{error:"AI SDK failed to load",text:`${e.length} events: ${l.join(", ")}`}}if(!i){const o=e.map(x=>w(x.data.tool)||x.type),l=Array.from(new Set(o));return{error:"No AI provider configured",text:`${e.length} events: ${l.join(", ")}`}}const s=at(e),a=`You are a coding activity summarizer. Given these events from active Claude Code sessions, write a 1-2 sentence summary (max 150 chars) of what's happening. Be specific — mention tool names, file names, and what's being accomplished.
1
+ import{i as P,s as h,a as g,t as Be,f as A}from"../chunks/DoGIJDSZ.js";import{s as b,q as ke,b as _,g as n,p as Ee,v as Pe,y as Ge,c as u,d as p,r as d,t as E,B as He,w as Ne,x as N,D as Ve,$ as We}from"../chunks/kzeZOqU5.js";import{h as Je}from"../chunks/BQJR1fvD.js";import{g as ce}from"../chunks/ssAhjWfF.js";import{j as ue,e as le,B as qe,s as Ae,b as Xe}from"../chunks/aiM7Bbhi.js";import{g as je,i as Ze}from"../chunks/gQJcRhou.js";import"../chunks/Dk1NUsIU.js";import{f as we}from"../chunks/BLszSzTT.js";import{S as Qe}from"../chunks/DcXdn821.js";import{i as et,N as tt}from"../chunks/CnsJhNGt.js";import{d as ot}from"../chunks/C87ZRWX0.js";const rt=6e4,Se=3;let Q=null,Y=null,L=0,$e=0;async function st(e,t){if(e.length===0)return{error:null,text:""};let i;try{i=await it()}catch{const o=e.map(x=>w(x.data.tool)||x.type),l=Array.from(new Set(o));return{error:"AI SDK failed to load",text:`${e.length} events: ${l.join(", ")}`}}if(!i){const o=e.map(x=>w(x.data.tool)||x.type),l=Array.from(new Set(o));return{error:"No AI provider configured",text:`${e.length} events: ${l.join(", ")}`}}const s=at(e),a=`You are a coding activity summarizer. Given these events from active Claude Code sessions, write a 1-2 sentence summary (max 150 chars) of what's happening. Be specific — mention tool names, file names, and what's being accomplished.
2
2
 
3
3
  ${t?`Project: ${t}
4
4
  `:""}Events:
@@ -0,0 +1,17 @@
1
+ import{a as s,f as l,i as N,s as Q,j as Ee}from"../chunks/DoGIJDSZ.js";import{c,g as t,r as i,t as P,p as Ue,w as Ae,d as g,s as k,q as Je,v as Me,D as ze,A as F,b as e,x as A,$ as Fe,B as xe}from"../chunks/kzeZOqU5.js";import{e as ve,k as Ge,s as ee,i as He,a as Ve,B as V,I as Ie,c as ce,b as Xe,d as Ye}from"../chunks/aiM7Bbhi.js";import{h as Ze}from"../chunks/BQJR1fvD.js";import{A as We}from"../chunks/DzuS5Nbr.js";import{i as et}from"../chunks/gQJcRhou.js";import"../chunks/Dk1NUsIU.js";import{P as tt}from"../chunks/C87ZRWX0.js";var rt=l("<div><!></div>"),at=l("<div></div>");function nt(w,v){var _=at();ve(_,21,()=>v.steps,He,(d,C,T)=>{var x=rt();let K;var u=c(x);Ge(u,{get onclick(){return v.onhandleStepClick},get label(){return t(C).label},get icon(){return t(C).icon},stepIndex:T+1}),i(x),P(()=>K=ee(x,1,"step-container svelte-dvxh34",null,K,{"active-step":v.currentStepIndex===T,"completed-step":v.currentStepIndex>T})),s(d,x)}),i(_),P(()=>ee(_,1,`container ${v.classes??""??""}`,"svelte-dvxh34")),s(w,_)}var ot=l('<div class="card-description svelte-15b0v7e"> </div>'),st=l('<div class="card-header svelte-15b0v7e"><div class="card-title svelte-15b0v7e"> </div> <!></div>'),it=l('<div><!> <div class="card-content svelte-15b0v7e"><!></div></div>');function X(w,v){Ue(v,!0);var _=it(),d=c(_);{var C=K=>{var u=st(),I=c(u),p=c(I,!0);i(I);var E=g(I,2);{var G=L=>{var B=ot(),J=c(B,!0);i(B),P(()=>Q(J,v.description)),s(L,B)};N(E,L=>{typeof v.description=="string"&&v.description.length>0&&L(G)})}i(u),P(()=>Q(p,v.title)),s(K,u)};N(d,K=>{typeof v.title=="string"&&v.title.length>0&&K(C)})}var T=g(d,2),x=c(T);Ve(x,()=>v.children),i(T),i(_),P(()=>ee(_,1,`card ${v.classes??""??""}`,"svelte-15b0v7e")),s(w,_),Ae()}function Y(w){return w instanceof Error?w.message:typeof w=="string"?w:String(w)}function lt(){return Te()!==null}async function ct(){const w=Te();if(!w)throw new Error("Scanner not available");return w()}function Te(){if(typeof window>"u")return null;const w=window.ShooterBridge?.scanner;if(w&&typeof w.scan=="function")return()=>w.scan();const v=window.ShooterNativeBridge?.scanner;return v&&typeof v.scan=="function"?()=>v.scan():null}const Pe=`<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
2
+ <path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"/>
3
+ <polyline points="22 4 12 14.01 9 11.01"/>
4
+ </svg>
5
+ `,vt=`<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
6
+ <polygon points="5 3 19 12 5 21 5 3"/>
7
+ </svg>
8
+ `,Re=`<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
9
+ <circle cx="12" cy="12" r="10"/>
10
+ <line x1="15" y1="9" x2="9" y2="15"/>
11
+ <line x1="9" y1="9" x2="15" y2="15"/>
12
+ </svg>
13
+ `;var dt=l('<meta name="description" content="Configure notification system settings"/>'),ut=l(`<!> <!> <p class="input-help svelte-1gp6n77">Find this in your <code class="svelte-1gp6n77">~/.shooter/.env</code> file. Run <code class="svelte-1gp6n77">shooter setup</code> to generate
14
+ one.</p>`,1),gt=l('<p class="input-help svelte-1gp6n77">Loading…</p>'),pt=l('<p class="input-help svelte-1gp6n77" style="color: var(--color-error, #f87171);"> </p>'),ft=l(`<p class="input-help svelte-1gp6n77">No devices registered yet. Open the Shooter app on your phone with this server's URL +
15
+ API key — it registers automatically. Every notification fans out to all devices here.</p>`),ht=l('<span class="device-badge svelte-1gp6n77">this device</span>'),mt=l('<li class="device-row svelte-1gp6n77"><div class="device-meta svelte-1gp6n77"><span class="device-name svelte-1gp6n77"> <!></span> <span class="device-sub svelte-1gp6n77"> </span></div> <!></li>'),_t=l('<ul class="device-list svelte-1gp6n77"></ul>'),yt=l("<!> Test Connection",1),wt=l(`<p class="qr-description svelte-1gp6n77">Scan the QR code shown on your server's settings page to auto-configure the
16
+ connection.</p> <!>`,1),St=l('<p class="qr-server-url svelte-1gp6n77">Server: <code class="svelte-1gp6n77"> </code></p>'),bt=l('<div class="qr-container svelte-1gp6n77"><img alt="QR code for mobile app pairing" class="qr-image svelte-1gp6n77"/></div> <p class="qr-hint svelte-1gp6n77">Scan this QR code with the Shooter iOS or Android app to connect.</p> <!>',1),kt=l('<div class="qr-placeholder svelte-1gp6n77"><p class="qr-loading-text svelte-1gp6n77">Generating QR code...</p></div>'),Ct=l('<p class="qr-error svelte-1gp6n77"> </p>'),xt=l(`<p class="qr-description svelte-1gp6n77">Generate a QR code containing your server URL and API key. Your mobile app can
17
+ scan it to auto-configure the connection.</p>`),It=l("<!> <!>",1),Pt=l('<div class="qr-section svelte-1gp6n77"><!></div>'),Rt=l('<div class="provider-row svelte-1gp6n77"><!> <span class="provider-label svelte-1gp6n77"> </span> <span> </span></div>'),Ut=l('<div class="active-provider svelte-1gp6n77">Active: <strong> </strong></div>'),At=l('<div class="active-provider svelte-1gp6n77">Auto-detected from configured keys</div>'),Tt=l('<p class="ai-help svelte-1gp6n77">Run <code class="svelte-1gp6n77">shooter setup</code> to configure AI providers for summaries.</p>'),Bt=l('<div class="ai-providers svelte-1gp6n77"><!> <!></div>'),Dt=l('<p class="danger-description svelte-1gp6n77">Clear all saved configuration data from this device.</p> <!>',1),qt=l('<main class="main"><div class="settings-container svelte-1gp6n77"><div style="margin-bottom: var(--space-4);"><a href="/" class="back-link">← Back to Projects</a></div> <div class="page-header"><h1 class="page-title">Settings</h1> <p class="page-description">Configure your API credentials and notification preferences</p></div> <div class="settings-grid svelte-1gp6n77"><section class="settings-section svelte-1gp6n77"><!> <!> <!> <div class="button-group svelte-1gp6n77"><!> <!></div></section> <aside class="settings-sidebar svelte-1gp6n77"><!> <!> <!> <!></aside></div></div></main>');function Jt(w,v){Ue(v,!0);let _=k(""),d=k(""),C=k(Je([])),T=k(!1),x=k(""),K=k(""),u=k(""),I=k(!1),p=k(""),E=k(""),G=k(""),L=k(!1),B=k(""),J=k(!1),Be=k(!1),de=!1,W=k(!1);async function De(){if(!t(d).trim()){e(B,"Save an API key first to generate a QR code");return}e(L,!0),e(B,""),e(E,""),e(G,"");try{const r=await fetch("/api/qr-config",{headers:{Authorization:`Bearer ${t(d).trim()}`}});if(!r.ok){const n=await r.json();e(B,n.error||"Failed to generate QR code",!0);return}const a=await r.json();e(E,a.dataUrl,!0),e(G,a.serverUrl,!0)}catch(r){e(B,`Network error: ${Y(r)}`)}finally{e(L,!1)}}async function qe(){e(W,!0),e(u,""),e(p,"");try{const r=await ct();try{const a=JSON.parse(r);typeof a.serverUrl=="string"&&a.serverUrl&&e(_,a.serverUrl,!0),typeof a.apiKey=="string"&&a.apiKey&&e(d,a.apiKey,!0),await ae();const n=t(p);n!=="error"&&n!=="warning"&&(e(u,"Configuration updated from QR code"),e(p,"success"))}catch{e(u,"Invalid QR code data"),e(p,"error")}}catch(r){const a=Y(r);a!=="cancelled"&&(e(u,`Scanner error: ${a}`),e(p,"error"))}finally{e(W,!1)}}function te(){return typeof window>"u"?null:window.ShooterBridge?window.ShooterBridge:window.ShooterNativeBridge?window.ShooterNativeBridge:null}function re(){return window.location.origin}function ue(){const r=te();if(r&&!de)try{const a=JSON.parse(r.getConfig?.()??"{}");a.serverUrl&&e(_,a.serverUrl,!0),a.apiKey&&e(d,a.apiKey,!0);const n=r.getDeviceId?.();n&&e(K,n,!0),de=!0}catch{}e(J,lt(),!0)}Me(()=>{{const r=window.location.hash.slice(1);if(r){const a=new URLSearchParams(r),n=a.get("key"),h=a.get("url");n&&(e(d,n,!0),h&&e(_,h,!0),ae(),window.history.replaceState({},"",window.location.pathname))}if(!t(d))try{const a=localStorage.getItem("shooter_config");if(a){const n=JSON.parse(a);et(n)?(n.apiKey&&e(d,n.apiKey,!0),n.serverUrl&&e(_,n.serverUrl,!0),n.deviceToken&&localStorage.setItem("shooter_config",JSON.stringify({...n,deviceToken:null}))):localStorage.removeItem("shooter_config")}}catch{}if(ue(),t(_)||e(_,re(),!0),e(Be,!0),ne(),!t(J)){const a=setInterval(()=>{ue(),t(J)&&clearInterval(a)},200),n=setTimeout(()=>{clearInterval(a)},3e3);return()=>{clearInterval(a),clearTimeout(n)}}}});async function ae(){e(I,!0),e(u,""),e(p,"");try{const r=t(_).trim().replace(/\/+$/,"");localStorage.setItem("shooter_config",JSON.stringify({apiKey:t(d).trim(),deviceToken:null,lastUpdated:Date.now(),serverUrl:r||re()}));const a=te();a&&a.saveConfig?.(JSON.stringify({apiKey:t(d).trim(),serverUrl:r||re()})),(await fetch("/api/health")).ok?(e(u,"Configuration saved successfully"),e(p,"success")):(e(u,"Configuration saved but system health check failed"),e(p,"warning")),ne()}catch(r){e(u,`Configuration failed: ${Y(r)}`),e(p,"error")}e(I,!1)}async function Ne(){if(!t(d).trim()){e(u,"API key is required for testing"),e(p,"error");return}e(I,!0),e(u,""),e(p,"");try{const r={data:{source:"config-test",timestamp:Date.now()},message:`Configuration test at ${new Date().toLocaleTimeString()}`,title:"Configuration Test"},a=await fetch("/api/notify",{body:JSON.stringify(r),headers:{Authorization:`Bearer ${t(d)}`,"Content-Type":"application/json"},method:"POST"}),n=await a.json();a.ok?(e(u,"Test notification sent successfully"),e(p,"success")):(e(u,`Test failed: ${typeof n.error=="string"?n.error:"Unknown error"}`),e(p,"error"))}catch(r){e(u,`Network error: ${Y(r)}`),e(p,"error")}e(I,!1)}function Qe(){{localStorage.removeItem("shooter_config"),e(_,typeof window<"u"?window.location.origin:"",!0),e(d,""),e(C,[],!0),e(u,"Configuration cleared"),e(p,"success");const r=te();r&&r.saveConfig?.(JSON.stringify({apiKey:"",serverUrl:""}))}}async function ne(){if(!t(d).trim()){e(C,[],!0),e(x,"");return}e(T,!0);try{const r=await fetch("/api/device-token",{headers:{Authorization:`Bearer ${t(d).trim()}`}});if(r.ok){const a=await r.json();e(C,Array.isArray(a.devices)?a.devices:[],!0),e(x,"")}else e(C,[],!0),e(x,r.status===401?"Could not load devices: the API key was rejected (401). Check the key above.":`Could not load devices (HTTP ${r.status}).`,!0)}catch(r){e(C,[],!0),e(x,`Could not load devices: ${Y(r)}`)}e(T,!1)}async function Ke(r){e(u,""),e(p,"");try{const a=await fetch("/api/device-token",{body:JSON.stringify({id:r}),headers:{Authorization:`Bearer ${t(d).trim()}`,"Content-Type":"application/json"},method:"DELETE"});if(!a.ok){const n=await a.json().catch(()=>({}));e(u,`Failed to remove device: ${n.error??a.statusText}`),e(p,"error");return}}catch(a){e(u,`Failed to remove device: ${Y(a)}`),e(p,"error");return}await ne()}var oe=qt();Ze("1gp6n77",r=>{var a=dt();ze(()=>{Fe.title="Settings - Shooter"}),s(r,a)});var ge=c(oe),pe=g(c(ge),4),se=c(pe),fe=c(se);X(fe,{title:"Server Configuration",description:"Configure server connection and credentials",children:(r,a)=>{var n=ut(),h=F(n);Ie(h,{name:"serverUrl",label:"Server URL",dataType:"text",placeholder:"https://shooter.breezehq.dev",infoMessage:"Base URL of your Shooter server. Apps will reload with this URL on next launch.",get value(){return t(_)},set value(U){e(_,U,!0)}});var R=g(h,2);Ie(R,{name:"apiKey",label:"API Key",dataType:"password",placeholder:"Enter your API key",infoMessage:"Required for sending notifications",get value(){return t(d)},set value(U){e(d,U,!0)}}),xe(2),s(r,n)},$$slots:{default:!0}});var he=g(fe,2);X(he,{title:"Registered Devices",description:"Phones that receive push notifications",children:(r,a)=>{var n=Ee(),h=F(n);{var R=y=>{var o=gt();s(y,o)},U=y=>{var o=pt(),f=c(o,!0);i(o),P(()=>Q(f,t(x))),s(y,o)},j=y=>{var o=ft();s(y,o)},D=y=>{var o=_t();ve(o,21,()=>t(C),f=>f.id,(f,S)=>{var q=mt(),O=c(q),M=c(O),m=c(M),b=g(m);{var $=z=>{var Z=ht();s(z,Z)};N(b,z=>{t(S).deviceId&&t(S).deviceId===t(K)&&z($)})}i(M);var H=g(M,2),ie=c(H);i(H),i(O);var le=g(O,2);V(le,{classes:"btn-secondary",onclick:()=>{Ke(t(S).id)},text:"Remove"}),i(q),P(()=>{Q(m,`${(t(S).friendlyName||t(S).deviceId||"Unknown device")??""} `),Q(ie,`${t(S).platform??""} · ${t(S).appEnv??""} · ${t(S).tokenMasked??""}`)}),s(f,q)}),i(o),s(y,o)};N(h,y=>{t(T)?y(R):t(x)?y(U,1):t(C).length===0?y(j,2):y(D,-1)})}s(r,n)},$$slots:{default:!0}});var me=g(he,2);{var je=r=>{const a=A(()=>t(p)==="success"?Pe:t(p)==="error"?Re:We);{const n=R=>{ce(R,{get svg(){return t(a)},classes:"icon-16"})};let h=A(()=>t(p)||"info");Xe(r,{get text(){return t(u)},get classes(){return`banner-${t(h)??""}`},icon:n,$$slots:{icon:!0}})}};N(me,r=>{t(u)&&r(je)})}var _e=g(me,2),ye=c(_e);{let r=A(()=>t(I)||!t(d).trim());V(ye,{classes:"btn-secondary",onclick:Ne,get disabled(){return t(r)},children:(a,n)=>{var h=yt(),R=F(h);{var U=j=>{ce(j,{get svg(){return vt},classes:"icon-14"})};N(R,j=>{t(I)||j(U)})}xe(),s(a,h)},$$slots:{default:!0}})}var Oe=g(ye,2);{let r=A(()=>t(I)||!t(d).trim());V(Oe,{classes:"btn-primary",onclick:ae,get disabled(){return t(r)},get showLoader(){return t(I)},text:"Save Changes"})}i(_e),i(se);var we=g(se,2),Se=c(we);X(Se,{title:"Setup Guide",children:(r,a)=>{{let n=A(()=>t(d).trim()&&t(C).length>0?2:t(d).trim()?1:0);nt(r,{steps:[{label:"Get API Key"},{label:"Register a Device"},{label:"Test Connection"}],get currentStepIndex(){return t(n)},classes:"setup-stepper"})}},$$slots:{default:!0}});var be=g(Se,2);{let r=A(()=>t(J)?"Scan a QR code to connect":"Scan to connect your mobile app");X(be,{title:"Mobile App Setup",get description(){return t(r)},children:(a,n)=>{var h=Pt(),R=c(h);{var U=D=>{var y=wt(),o=g(F(y),2);{let f=A(()=>t(W)?"Scanning...":"Scan QR Code");V(o,{classes:"btn-secondary btn-sm",onclick:qe,get disabled(){return t(W)},get text(){return t(f)}})}s(D,y)},j=D=>{var y=It(),o=F(y);{var f=m=>{var b=bt(),$=F(b),H=c($);i($);var ie=g($,4);{var le=z=>{var Z=St(),Ce=g(c(Z)),Le=c(Ce,!0);i(Ce),i(Z),P(()=>Q(Le,t(G))),s(z,Z)};N(ie,z=>{t(G)&&z(le)})}P(()=>Ye(H,"src",t(E))),s(m,b)},S=m=>{var b=kt();s(m,b)},q=m=>{var b=Ct(),$=c(b,!0);i(b),P(()=>Q($,t(B))),s(m,b)},O=m=>{var b=xt();s(m,b)};N(o,m=>{t(E)?m(f):t(L)?m(S,1):t(B)?m(q,2):m(O,-1)})}var M=g(o,2);{let m=A(()=>t(L)||!t(d).trim()),b=A(()=>t(E)?"Regenerate QR Code":"Generate QR Code");V(M,{classes:"btn-secondary btn-sm",onclick:De,get disabled(){return t(m)},get text(){return t(b)}})}s(D,y)};N(R,D=>{t(J)?D(U):D(j,-1)})}i(h),s(a,h)},$$slots:{default:!0}})}var ke=g(be,2);X(ke,{title:"AI Providers",description:"NeuroLink-powered summaries and AI features",children:(r,a)=>{var n=Bt(),h=c(n);ve(h,17,()=>tt,o=>o.id,(o,f)=>{var S=Rt(),q=c(S);{let H=A(()=>v.data.aiProviders[t(f).id]?Pe:Re);ce(q,{get svg(){return t(H)},classes:"icon-14"})}var O=g(q,2),M=c(O,!0);i(O);var m=g(O,2);let b;var $=c(m,!0);i(m),i(S),P(()=>{Q(M,t(f).label),b=ee(m,1,"provider-status svelte-1gp6n77",null,b,{configured:v.data.aiProviders[t(f).id]}),Q($,v.data.aiProviders[t(f).id]?"configured":"not configured")}),s(o,S)});var R=g(h,2);{var U=o=>{var f=Ut(),S=g(c(f)),q=c(S,!0);i(S),i(f),P(()=>Q(q,v.data.activeProvider)),s(o,f)},j=o=>{var f=At();s(o,f)},D=A(()=>Object.values(v.data.aiProviders).some(Boolean)),y=o=>{var f=Tt();s(o,f)};N(R,o=>{v.data.activeProvider?o(U):t(D)?o(j,1):o(y,-1)})}i(n),s(r,n)},$$slots:{default:!0}});var $e=g(ke,2);X($e,{title:"Danger Zone",children:(r,a)=>{var n=Dt(),h=g(F(n),2);V(h,{classes:"btn-danger btn-sm",onclick:Qe,text:"Clear Configuration"}),s(r,n)},$$slots:{default:!0}}),i(we),i(pe),i(ge),i(oe),s(w,oe),Ae()}export{Jt as component};
@@ -1 +1 @@
1
- import{i as w,a as p,f as m,s as $}from"../chunks/DoGIJDSZ.js";import{p as Qe,s as k,q as We,v as Xe,y as Ye,w as et,z as tt,g as e,b as c,$ as rt,c as o,d as l,r as a,x as u,A as K,B as Z,t as Q}from"../chunks/kzeZOqU5.js";import{b as st,e as ve,i as at,B as N,c as W,P as X,d as ot}from"../chunks/aiM7Bbhi.js";import{h as nt}from"../chunks/BQJR1fvD.js";import{g as it}from"../chunks/BPIV28L3.js";import{p as ct}from"../chunks/Dqmsaccg.js";import{A as lt}from"../chunks/DzuS5Nbr.js";import{B as dt}from"../chunks/Bn-6X1BO.js";import{S as ue,R as vt}from"../chunks/etLjvmY8.js";import{g as ut,s as ft,c as pt}from"../chunks/xs1Xl3_e.js";import{i as mt}from"../chunks/gQJcRhou.js";import"../chunks/Dk1NUsIU.js";import{s as fe,a as ht}from"../chunks/BdtLzPpO.js";import{f as _t}from"../chunks/BLszSzTT.js";import{E as pe}from"../chunks/DFa6kKPT.js";var gt=m('<meta name="description" content="Project sessions sorted by latest update"/>'),yt=m('<div class="loading-container"><!> <!></div>'),bt=m('<div class="project-back-row svelte-urn6fi"><a href="/" class="back-link"><span class="back-arrow">&larr;</span> Back to Projects</a></div> <!>',1),$t=m("<!> Refresh",1),jt=m('<div class="session-card-subtitle"> </div>'),St=m('<span class="connect-dot svelte-urn6fi"></span> Connect',1),Pt=m('<a class="session-card"><div class="session-card-header"><div><h3 class="session-card-title"> </h3> <!></div> <div class="session-card-actions svelte-urn6fi"><!> <!></div></div> <div class="session-stats"><span><strong> </strong> messages</span> <!> <!></div> <div class="session-meta-row svelte-urn6fi"><span class="session-modified svelte-urn6fi"> </span> <span class="session-duration svelte-urn6fi"> </span></div></a>'),xt=m('<div style="text-align: center; padding: 1rem;"><!></div>'),wt=m('<div class="sessions-container svelte-urn6fi"></div> <!>',1),kt=m('<div class="chat-session-header"><div class="chat-session-header-top svelte-urn6fi"><a href="/" class="back-link">&#8592; Back to Projects</a> <!></div> <h1 class="chat-session-title"> </h1> <div class="chat-session-meta"><span class="session-card-subtitle"> </span> <span> </span></div></div> <!>',1),Bt=m('<main class="main"><!> <!></main>');function Gt(me,he){Qe(he,!0);const _e=15e3,D=20;let i=k(null),g=k(!0),h=k(null),L=k(null),R=null,B=k(D),Y=k(We([])),j=k(null);const S=u(()=>ct.url.searchParams.get("id")||""),ge=u(()=>e(i)?e(i).sessions.slice(0,e(B)):[]),ye=u(()=>e(i)?e(B)<e(i).sessions.length:!1),be=u(()=>new Set(e(Y).map(t=>t.sessionId).filter(t=>typeof t=="string")));Xe(()=>{$e();const t=ut(`shooter_project_${e(S)}`);t&&(c(i,t,!0),c(g,!1)),setTimeout(()=>{M(),z()},50),R=setInterval(()=>{e(h)?.apiKey&&e(S)&&(M(),z())},_e)}),Ye(()=>{R&&(clearInterval(R),R=null)});function $e(){try{const t=localStorage.getItem("shooter_config");if(t){const r=JSON.parse(t);mt(r)?c(h,r,!0):(localStorage.removeItem("shooter_config"),c(h,null))}}catch{}}async function M(t=!1){if(!e(h)?.apiKey||!e(S)){c(g,!1);return}e(i)||c(g,!0);try{const d=await fetch(t?"/api/sessions?refresh=true":"/api/sessions",{headers:{Authorization:`Bearer ${e(h).apiKey}`}});if(!d.ok){c(L,`Failed to load project (HTTP ${d.status})`),c(g,!1);return}c(L,null);const f=(await d.json()).projects.find(T=>T.id===e(S))||null;c(i,f,!0),f&&ft(`shooter_project_${e(S)}`,f)}catch(r){console.error("Failed to fetch project:",r)}finally{c(g,!1)}}async function z(){if(e(h)?.apiKey)try{const t=await fetch("/api/sessions/detect",{headers:{Authorization:`Bearer ${e(h).apiKey}`}});if(t.ok){const r=await t.json();c(Y,r.processes,!0)}}catch{}}async function ee(t,r,d){if(t.preventDefault(),t.stopPropagation(),!(!e(h)?.apiKey||!e(i)||e(j))){c(j,r,!0);try{const v=await fetch("/api/sessions/connect",{body:JSON.stringify({command:d,cwd:e(i).fullPath,sessionId:r}),headers:{Authorization:`Bearer ${e(h).apiKey}`,"Content-Type":"application/json"},method:"POST"});if(v.ok){const f=await v.json();it(`/terminals/${f.terminalId}`)}}catch(v){console.error("Failed to connect to session:",v)}finally{c(j,null)}}}async function je(){c(g,!0),c(i,null),c(B,D),pt(`shooter_project_${e(S)}`),await M(!0),await z()}function Se(){c(B,e(B)+D)}function te(t){if(!t)return"";const r=new Date(t);return isNaN(r.getTime())?"":r.toLocaleDateString("en-US",{day:"numeric",hour:"2-digit",minute:"2-digit",month:"short"})}function Pe(t,r){return t.length<=r?t:`${t.slice(0,r).trimEnd()}...`}var F=Bt();nt("urn6fi",t=>{var r=gt();tt(()=>{rt.title=`${(e(i)?.name||"Project")??""} - Shooter`}),p(t,r)});var re=o(F);{var xe=t=>{st(t,{get text(){return e(L)},classes:"banner-error"})};w(re,t=>{e(L)&&t(xe)})}var we=l(re,2);{var ke=t=>{var r=yt(),d=o(r);ue(d,{classes:"shimmer-header"});var v=l(d,2);ve(v,16,()=>Array(4),at,(f,T)=>{ue(f,{classes:"shimmer-card"})}),a(r),p(t,r)},Be=t=>{var r=bt(),d=l(K(r),2);pe(d,{title:"Project Not Found",description:"The requested project could not be found.",icon:f=>{W(f,{get svg(){return lt},classes:"icon-24"})}}),p(t,r)},Te=t=>{var r=kt(),d=K(r),v=o(d),f=l(o(v),2);N(f,{classes:"btn-secondary",onclick:je,get disabled(){return e(g)},children:(y,E)=>{var b=$t(),q=K(b);W(q,{get svg(){return vt},classes:"icon-14"}),Z(),p(y,b)},$$slots:{default:!0}}),a(v);var T=l(v,2),Ce=o(T,!0);a(T);var se=l(T,2),O=o(se),Ie=o(O,!0);a(O);var ae=l(O,2),Ae=o(ae);a(ae),a(se),a(d);var Le=l(d,2);{var Re=y=>{pe(y,{title:"No sessions yet",description:"Sessions for this project will appear here",icon:b=>{W(b,{get svg(){return dt},classes:"icon-24"})}})},Ee=y=>{var E=wt(),b=K(E);ve(b,21,()=>e(ge),P=>P.id,(P,s)=>{var C=Pt(),I=o(C),J=o(I),G=o(J),Ne=o(G,!0);a(G);var De=l(G,2);{var Me=n=>{var _=jt(),A=o(_,!0);a(_),Q(x=>$(A,x),[()=>Pe(e(s).summary,80)]),p(n,_)};w(De,n=>{e(s).summary&&n(Me)})}a(J);var oe=l(J,2),ne=o(oe);{let n=u(()=>_t(e(s).modified));X(ne,{get text(){return e(n)},classes:"pill-session-time"})}var ze=l(ne,2);{var Fe=n=>{{let _=u(()=>e(j)===e(s).id),A=u(()=>e(j)===e(s).id);N(n,{classes:"btn-connect btn-xs",onclick:x=>{ee(x,e(s).id,fe(e(s).source))},get disabled(){return e(_)},get showLoader(){return e(A)},children:(x,Tt)=>{var Ze=St();Z(),p(x,Ze)},$$slots:{default:!0}})}},Oe=u(()=>e(be).has(e(s).id)),qe=n=>{{let _=u(()=>e(j)===e(s).id),A=u(()=>e(j)===e(s).id);N(n,{classes:"btn-resume btn-xs",onclick:x=>{ee(x,e(s).id,fe(e(s).source))},get disabled(){return e(_)},get showLoader(){return e(A)},text:"Resume"})}};w(ze,n=>{e(Oe)?n(Fe):n(qe,-1)})}a(oe),a(I);var H=l(I,2),U=o(H),ie=o(U),Je=o(ie,!0);a(ie),Z(),a(U);var ce=l(U,2);{var Ge=n=>{X(n,{get text(){return`🌿 ${e(s).gitBranch??""}`},classes:"pill-git-branch"})};w(ce,n=>{e(s).gitBranch&&n(Ge)})}var He=l(ce,2);{let n=u(()=>ht(e(s).source));X(He,{get text(){return e(n)},get classes(){return`pill-source-${e(s).source??""}`}})}a(H);var le=l(H,2),V=o(le),Ue=o(V);a(V);var de=l(V,2),Ve=o(de);a(de),a(le),a(C),Q((n,_)=>{ot(C,"href",`/session/${e(s).id??""}?project=${e(S)??""}`),$(Ne,e(s).title),$(Je,e(s).messageCount),$(Ue,`Last updated ${n??""}`),$(Ve,`Created ${_??""}`)},[()=>te(e(s).modified),()=>te(e(s).created)]),p(P,C)}),a(b);var q=l(b,2);{var Ke=P=>{var s=xt(),C=o(s);{let I=u(()=>`Load More (${e(i).sessions.length-e(B)} remaining)`);N(C,{classes:"btn-secondary",onclick:Se,get text(){return e(I)}})}a(s),p(P,s)};w(q,P=>{e(ye)&&P(Ke)})}p(y,E)};w(Le,y=>{e(i).sessions.length===0?y(Re):y(Ee,-1)})}Q(()=>{$(Ce,e(i).name),$(Ie,e(i).fullPath),$(Ae,`${e(i).sessionCount??""} sessions`)}),p(t,r)};w(we,t=>{e(g)&&!e(i)?t(ke):e(i)?t(Te,-1):t(Be,1)})}a(F),p(me,F),et()}export{Gt as component};
1
+ import{i as w,a as p,f as m,s as $}from"../chunks/DoGIJDSZ.js";import{p as Qe,s as k,q as We,v as Xe,y as Ye,w as et,z as tt,g as e,b as c,$ as rt,c as o,d as l,r as a,x as u,A as K,B as Z,t as Q}from"../chunks/kzeZOqU5.js";import{b as st,e as ve,i as at,B as N,c as W,P as X,d as ot}from"../chunks/aiM7Bbhi.js";import{h as nt}from"../chunks/BQJR1fvD.js";import{g as it}from"../chunks/ssAhjWfF.js";import{p as ct}from"../chunks/DINqYbXU.js";import{A as lt}from"../chunks/DzuS5Nbr.js";import{B as dt}from"../chunks/Bn-6X1BO.js";import{S as ue,R as vt}from"../chunks/etLjvmY8.js";import{g as ut,s as ft,c as pt}from"../chunks/xs1Xl3_e.js";import{i as mt}from"../chunks/gQJcRhou.js";import"../chunks/Dk1NUsIU.js";import{s as fe,a as ht}from"../chunks/BdtLzPpO.js";import{f as _t}from"../chunks/BLszSzTT.js";import{E as pe}from"../chunks/DFa6kKPT.js";var gt=m('<meta name="description" content="Project sessions sorted by latest update"/>'),yt=m('<div class="loading-container"><!> <!></div>'),bt=m('<div class="project-back-row svelte-urn6fi"><a href="/" class="back-link"><span class="back-arrow">&larr;</span> Back to Projects</a></div> <!>',1),$t=m("<!> Refresh",1),jt=m('<div class="session-card-subtitle"> </div>'),St=m('<span class="connect-dot svelte-urn6fi"></span> Connect',1),Pt=m('<a class="session-card"><div class="session-card-header"><div><h3 class="session-card-title"> </h3> <!></div> <div class="session-card-actions svelte-urn6fi"><!> <!></div></div> <div class="session-stats"><span><strong> </strong> messages</span> <!> <!></div> <div class="session-meta-row svelte-urn6fi"><span class="session-modified svelte-urn6fi"> </span> <span class="session-duration svelte-urn6fi"> </span></div></a>'),xt=m('<div style="text-align: center; padding: 1rem;"><!></div>'),wt=m('<div class="sessions-container svelte-urn6fi"></div> <!>',1),kt=m('<div class="chat-session-header"><div class="chat-session-header-top svelte-urn6fi"><a href="/" class="back-link">&#8592; Back to Projects</a> <!></div> <h1 class="chat-session-title"> </h1> <div class="chat-session-meta"><span class="session-card-subtitle"> </span> <span> </span></div></div> <!>',1),Bt=m('<main class="main"><!> <!></main>');function Gt(me,he){Qe(he,!0);const _e=15e3,D=20;let i=k(null),g=k(!0),h=k(null),L=k(null),R=null,B=k(D),Y=k(We([])),j=k(null);const S=u(()=>ct.url.searchParams.get("id")||""),ge=u(()=>e(i)?e(i).sessions.slice(0,e(B)):[]),ye=u(()=>e(i)?e(B)<e(i).sessions.length:!1),be=u(()=>new Set(e(Y).map(t=>t.sessionId).filter(t=>typeof t=="string")));Xe(()=>{$e();const t=ut(`shooter_project_${e(S)}`);t&&(c(i,t,!0),c(g,!1)),setTimeout(()=>{M(),z()},50),R=setInterval(()=>{e(h)?.apiKey&&e(S)&&(M(),z())},_e)}),Ye(()=>{R&&(clearInterval(R),R=null)});function $e(){try{const t=localStorage.getItem("shooter_config");if(t){const r=JSON.parse(t);mt(r)?c(h,r,!0):(localStorage.removeItem("shooter_config"),c(h,null))}}catch{}}async function M(t=!1){if(!e(h)?.apiKey||!e(S)){c(g,!1);return}e(i)||c(g,!0);try{const d=await fetch(t?"/api/sessions?refresh=true":"/api/sessions",{headers:{Authorization:`Bearer ${e(h).apiKey}`}});if(!d.ok){c(L,`Failed to load project (HTTP ${d.status})`),c(g,!1);return}c(L,null);const f=(await d.json()).projects.find(T=>T.id===e(S))||null;c(i,f,!0),f&&ft(`shooter_project_${e(S)}`,f)}catch(r){console.error("Failed to fetch project:",r)}finally{c(g,!1)}}async function z(){if(e(h)?.apiKey)try{const t=await fetch("/api/sessions/detect",{headers:{Authorization:`Bearer ${e(h).apiKey}`}});if(t.ok){const r=await t.json();c(Y,r.processes,!0)}}catch{}}async function ee(t,r,d){if(t.preventDefault(),t.stopPropagation(),!(!e(h)?.apiKey||!e(i)||e(j))){c(j,r,!0);try{const v=await fetch("/api/sessions/connect",{body:JSON.stringify({command:d,cwd:e(i).fullPath,sessionId:r}),headers:{Authorization:`Bearer ${e(h).apiKey}`,"Content-Type":"application/json"},method:"POST"});if(v.ok){const f=await v.json();it(`/terminals/${f.terminalId}`)}}catch(v){console.error("Failed to connect to session:",v)}finally{c(j,null)}}}async function je(){c(g,!0),c(i,null),c(B,D),pt(`shooter_project_${e(S)}`),await M(!0),await z()}function Se(){c(B,e(B)+D)}function te(t){if(!t)return"";const r=new Date(t);return isNaN(r.getTime())?"":r.toLocaleDateString("en-US",{day:"numeric",hour:"2-digit",minute:"2-digit",month:"short"})}function Pe(t,r){return t.length<=r?t:`${t.slice(0,r).trimEnd()}...`}var F=Bt();nt("urn6fi",t=>{var r=gt();tt(()=>{rt.title=`${(e(i)?.name||"Project")??""} - Shooter`}),p(t,r)});var re=o(F);{var xe=t=>{st(t,{get text(){return e(L)},classes:"banner-error"})};w(re,t=>{e(L)&&t(xe)})}var we=l(re,2);{var ke=t=>{var r=yt(),d=o(r);ue(d,{classes:"shimmer-header"});var v=l(d,2);ve(v,16,()=>Array(4),at,(f,T)=>{ue(f,{classes:"shimmer-card"})}),a(r),p(t,r)},Be=t=>{var r=bt(),d=l(K(r),2);pe(d,{title:"Project Not Found",description:"The requested project could not be found.",icon:f=>{W(f,{get svg(){return lt},classes:"icon-24"})}}),p(t,r)},Te=t=>{var r=kt(),d=K(r),v=o(d),f=l(o(v),2);N(f,{classes:"btn-secondary",onclick:je,get disabled(){return e(g)},children:(y,E)=>{var b=$t(),q=K(b);W(q,{get svg(){return vt},classes:"icon-14"}),Z(),p(y,b)},$$slots:{default:!0}}),a(v);var T=l(v,2),Ce=o(T,!0);a(T);var se=l(T,2),O=o(se),Ie=o(O,!0);a(O);var ae=l(O,2),Ae=o(ae);a(ae),a(se),a(d);var Le=l(d,2);{var Re=y=>{pe(y,{title:"No sessions yet",description:"Sessions for this project will appear here",icon:b=>{W(b,{get svg(){return dt},classes:"icon-24"})}})},Ee=y=>{var E=wt(),b=K(E);ve(b,21,()=>e(ge),P=>P.id,(P,s)=>{var C=Pt(),I=o(C),J=o(I),G=o(J),Ne=o(G,!0);a(G);var De=l(G,2);{var Me=n=>{var _=jt(),A=o(_,!0);a(_),Q(x=>$(A,x),[()=>Pe(e(s).summary,80)]),p(n,_)};w(De,n=>{e(s).summary&&n(Me)})}a(J);var oe=l(J,2),ne=o(oe);{let n=u(()=>_t(e(s).modified));X(ne,{get text(){return e(n)},classes:"pill-session-time"})}var ze=l(ne,2);{var Fe=n=>{{let _=u(()=>e(j)===e(s).id),A=u(()=>e(j)===e(s).id);N(n,{classes:"btn-connect btn-xs",onclick:x=>{ee(x,e(s).id,fe(e(s).source))},get disabled(){return e(_)},get showLoader(){return e(A)},children:(x,Tt)=>{var Ze=St();Z(),p(x,Ze)},$$slots:{default:!0}})}},Oe=u(()=>e(be).has(e(s).id)),qe=n=>{{let _=u(()=>e(j)===e(s).id),A=u(()=>e(j)===e(s).id);N(n,{classes:"btn-resume btn-xs",onclick:x=>{ee(x,e(s).id,fe(e(s).source))},get disabled(){return e(_)},get showLoader(){return e(A)},text:"Resume"})}};w(ze,n=>{e(Oe)?n(Fe):n(qe,-1)})}a(oe),a(I);var H=l(I,2),U=o(H),ie=o(U),Je=o(ie,!0);a(ie),Z(),a(U);var ce=l(U,2);{var Ge=n=>{X(n,{get text(){return`🌿 ${e(s).gitBranch??""}`},classes:"pill-git-branch"})};w(ce,n=>{e(s).gitBranch&&n(Ge)})}var He=l(ce,2);{let n=u(()=>ht(e(s).source));X(He,{get text(){return e(n)},get classes(){return`pill-source-${e(s).source??""}`}})}a(H);var le=l(H,2),V=o(le),Ue=o(V);a(V);var de=l(V,2),Ve=o(de);a(de),a(le),a(C),Q((n,_)=>{ot(C,"href",`/session/${e(s).id??""}?project=${e(S)??""}`),$(Ne,e(s).title),$(Je,e(s).messageCount),$(Ue,`Last updated ${n??""}`),$(Ve,`Created ${_??""}`)},[()=>te(e(s).modified),()=>te(e(s).created)]),p(P,C)}),a(b);var q=l(b,2);{var Ke=P=>{var s=xt(),C=o(s);{let I=u(()=>`Load More (${e(i).sessions.length-e(B)} remaining)`);N(C,{classes:"btn-secondary",onclick:Se,get text(){return e(I)}})}a(s),p(P,s)};w(q,P=>{e(ye)&&P(Ke)})}p(y,E)};w(Le,y=>{e(i).sessions.length===0?y(Re):y(Ee,-1)})}Q(()=>{$(Ce,e(i).name),$(Ie,e(i).fullPath),$(Ae,`${e(i).sessionCount??""} sessions`)}),p(t,r)};w(we,t=>{e(g)&&!e(i)?t(ke):e(i)?t(Te,-1):t(Be,1)})}a(F),p(me,F),et()}export{Gt as component};
@@ -1,4 +1,4 @@
1
- import{i as K,a as h,f as g,s as V}from"../chunks/DoGIJDSZ.js";import{p as ge,s as v,q as we,v as ye,w as be,z as Se,b as s,g as e,$ as _e,c as _,r as $,x as P,A as H,d as D,t as Q}from"../chunks/kzeZOqU5.js";import{h as $e}from"../chunks/BQJR1fvD.js";import{d as X,B as ke}from"../chunks/aiM7Bbhi.js";import{p as x}from"../chunks/Dqmsaccg.js";import{g as Ie,s as Y}from"../chunks/xs1Xl3_e.js";import"../chunks/Dk1NUsIU.js";import{s as Z}from"../chunks/BdtLzPpO.js";import{C as je}from"../chunks/oIHVoAuz.js";var Ce=g('<meta name="description" content="Session conversation view"/>'),Oe=g('<div class="loading-container" aria-live="polite" aria-busy="true"><div class="shimmer shimmer-header" aria-hidden="true"></div> <div class="chat-container"><div class="shimmer shimmer-bubble shimmer-bubble-user" aria-hidden="true"></div> <div class="shimmer shimmer-bubble shimmer-bubble-assistant" aria-hidden="true"></div> <div class="shimmer shimmer-bubble shimmer-bubble-user-short" aria-hidden="true"></div> <div class="shimmer shimmer-bubble shimmer-bubble-assistant-wide" aria-hidden="true"></div></div></div>'),Me=g('<div class="session-back-row svelte-1a2wdfb"><a class="back-link">← Back</a></div> <p class="error-text svelte-1a2wdfb"> </p>',1),Ne=g('<span class="resume-status svelte-1a2wdfb">Connecting...</span>'),Ae=g('<span class="resume-status svelte-1a2wdfb">Resuming session...</span>'),Te=g('<span class="connection-dot connected svelte-1a2wdfb"></span>'),Pe=g('<span class="connection-dot reconnecting svelte-1a2wdfb"></span>'),De=g('<div class="load-earlier-row svelte-1a2wdfb"><!></div>'),Re=g('<div class="session-header svelte-1a2wdfb"><div class="session-header-row svelte-1a2wdfb"><a class="back-link">← Back</a> <!></div> <h1 class="session-title svelte-1a2wdfb"> </h1></div> <div class="session-chat-container svelte-1a2wdfb"><!> <!></div>',1),We=g('<main class="main session-page-main svelte-1a2wdfb"><!></main>');function Fe(ee,te){ge(te,!0);let f=v(null),i=v(we([])),w=v(!0),I=v(null),R=v(!1),N=v(!1),A=v(200),j=v(null),k=v("idle"),c=v("idle"),y=null,b=null,C=null,O=null,d=!1;const W=P(()=>x.params.id),M=P(()=>x.url.searchParams.get("project")||""),se=P(()=>e(c)==="connecting"||e(c)==="resuming");function T(){try{const t=localStorage.getItem("shooter_config");return t?JSON.parse(t):null}catch{return null}}async function L(){const t=T();if(!t)return null;try{const n=await fetch("/api/ws-ticket",{headers:{Authorization:`Bearer ${t.apiKey}`},method:"POST"});return n.ok?(await n.json()).ticket:null}catch{return null}}async function z(t,n){if(d||C&&(C.readyState===WebSocket.OPEN||C.readyState===WebSocket.CONNECTING))return;const a=await L();if(!a||d)return;s(k,"connecting");const o=window.location.protocol==="https:"?"wss:":"ws:",r=new WebSocket(`${o}//${window.location.host}${t}?ticket=${a}`);r.onopen=()=>{if(d){r.close();return}s(k,"connected"),r.send(JSON.stringify({sessionId:n,type:"subscribe"}))},r.onmessage=u=>{if(!d)try{const p=JSON.parse(u.data);ne(p)}catch{}},r.onclose=()=>{d||(s(k,"disconnected"),C=null,e(j)&&(O&&clearTimeout(O),O=setTimeout(()=>{O=null,!d&&e(j)&&z(`/ws/session/${e(j)}`,e(j))},2e3)))},r.onerror=()=>{d||s(k,"disconnected")},C=r}async function q(t){if(d)return;const n=await L();if(!n||d)return;const a=window.location.protocol==="https:"?"wss:":"ws:",o=new WebSocket(`${a}//${window.location.host}${t}?ticket=${n}`);o.onopen=()=>{if(d){o.close();return}b=o,e(c)==="ready"&&y&&(o.send(JSON.stringify({data:`${y}
1
+ import{i as K,a as h,f as g,s as V}from"../chunks/DoGIJDSZ.js";import{p as ge,s as v,q as we,v as ye,w as be,z as Se,b as s,g as e,$ as _e,c as _,r as $,x as P,A as H,d as D,t as Q}from"../chunks/kzeZOqU5.js";import{h as $e}from"../chunks/BQJR1fvD.js";import{d as X,B as ke}from"../chunks/aiM7Bbhi.js";import{p as x}from"../chunks/DINqYbXU.js";import{g as Ie,s as Y}from"../chunks/xs1Xl3_e.js";import"../chunks/Dk1NUsIU.js";import{s as Z}from"../chunks/BdtLzPpO.js";import{C as je}from"../chunks/oIHVoAuz.js";var Ce=g('<meta name="description" content="Session conversation view"/>'),Oe=g('<div class="loading-container" aria-live="polite" aria-busy="true"><div class="shimmer shimmer-header" aria-hidden="true"></div> <div class="chat-container"><div class="shimmer shimmer-bubble shimmer-bubble-user" aria-hidden="true"></div> <div class="shimmer shimmer-bubble shimmer-bubble-assistant" aria-hidden="true"></div> <div class="shimmer shimmer-bubble shimmer-bubble-user-short" aria-hidden="true"></div> <div class="shimmer shimmer-bubble shimmer-bubble-assistant-wide" aria-hidden="true"></div></div></div>'),Me=g('<div class="session-back-row svelte-1a2wdfb"><a class="back-link">← Back</a></div> <p class="error-text svelte-1a2wdfb"> </p>',1),Ne=g('<span class="resume-status svelte-1a2wdfb">Connecting...</span>'),Ae=g('<span class="resume-status svelte-1a2wdfb">Resuming session...</span>'),Te=g('<span class="connection-dot connected svelte-1a2wdfb"></span>'),Pe=g('<span class="connection-dot reconnecting svelte-1a2wdfb"></span>'),De=g('<div class="load-earlier-row svelte-1a2wdfb"><!></div>'),Re=g('<div class="session-header svelte-1a2wdfb"><div class="session-header-row svelte-1a2wdfb"><a class="back-link">← Back</a> <!></div> <h1 class="session-title svelte-1a2wdfb"> </h1></div> <div class="session-chat-container svelte-1a2wdfb"><!> <!></div>',1),We=g('<main class="main session-page-main svelte-1a2wdfb"><!></main>');function Fe(ee,te){ge(te,!0);let f=v(null),i=v(we([])),w=v(!0),I=v(null),R=v(!1),N=v(!1),A=v(200),j=v(null),k=v("idle"),c=v("idle"),y=null,b=null,C=null,O=null,d=!1;const W=P(()=>x.params.id),M=P(()=>x.url.searchParams.get("project")||""),se=P(()=>e(c)==="connecting"||e(c)==="resuming");function T(){try{const t=localStorage.getItem("shooter_config");return t?JSON.parse(t):null}catch{return null}}async function L(){const t=T();if(!t)return null;try{const n=await fetch("/api/ws-ticket",{headers:{Authorization:`Bearer ${t.apiKey}`},method:"POST"});return n.ok?(await n.json()).ticket:null}catch{return null}}async function z(t,n){if(d||C&&(C.readyState===WebSocket.OPEN||C.readyState===WebSocket.CONNECTING))return;const a=await L();if(!a||d)return;s(k,"connecting");const o=window.location.protocol==="https:"?"wss:":"ws:",r=new WebSocket(`${o}//${window.location.host}${t}?ticket=${a}`);r.onopen=()=>{if(d){r.close();return}s(k,"connected"),r.send(JSON.stringify({sessionId:n,type:"subscribe"}))},r.onmessage=u=>{if(!d)try{const p=JSON.parse(u.data);ne(p)}catch{}},r.onclose=()=>{d||(s(k,"disconnected"),C=null,e(j)&&(O&&clearTimeout(O),O=setTimeout(()=>{O=null,!d&&e(j)&&z(`/ws/session/${e(j)}`,e(j))},2e3)))},r.onerror=()=>{d||s(k,"disconnected")},C=r}async function q(t){if(d)return;const n=await L();if(!n||d)return;const a=window.location.protocol==="https:"?"wss:":"ws:",o=new WebSocket(`${a}//${window.location.host}${t}?ticket=${n}`);o.onopen=()=>{if(d){o.close();return}b=o,e(c)==="ready"&&y&&(o.send(JSON.stringify({data:`${y}
2
2
  `,type:"input"})),y=null)},o.onclose=()=>{b===o&&(b=null)}}function ne(t){if(t.type==="history"){const n=t.messages||[];s(i,n.map(a=>({id:a.id,parts:a.content,role:a.role,timestamp:a.timestamp})),!0),s(R,!1),e(c)==="resuming"&&(s(c,"ready"),y&&b?.readyState===WebSocket.OPEN&&(b.send(JSON.stringify({data:`${y}
3
3
  `,type:"input"})),y=null))}else if(t.type==="message")s(i,[...e(i),{id:`msg-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,parts:t.content||[],role:t.role||"assistant",timestamp:t.timestamp||new Date().toISOString()}],!0);else if(t.type==="tool-use"){const n={id:t.id||`tool-${Date.now()}`,input:t.input||{},toolName:t.name,type:"tool_use"},a=e(i).length>0?e(i)[e(i).length-1]:null;a?.role==="assistant"?s(i,[...e(i).slice(0,-1),{...a,parts:[...a.parts,n]}],!0):s(i,[...e(i),{id:`tool-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,parts:[n],role:"assistant",timestamp:new Date().toISOString()}],!0)}else if(t.type==="tool-result"){const n={isError:t.isError||!1,output:t.output||"",toolUseId:t.id,type:"tool_result"},a=e(i).length>0?e(i)[e(i).length-1]:null;a?.role==="system"?s(i,[...e(i).slice(0,-1),{...a,parts:[...a.parts,n]}],!0):s(i,[...e(i),{id:`result-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,parts:[n],role:"system",timestamp:new Date().toISOString()}],!0)}else if(t.type==="thinking"){const n={content:t.text||"",type:"thinking"},a=e(i).length>0?e(i)[e(i).length-1]:null;a?.role==="assistant"?s(i,[...e(i).slice(0,-1),{...a,parts:[...a.parts,n]}],!0):s(i,[...e(i),{id:`think-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,parts:[n],role:"assistant",timestamp:new Date().toISOString()}],!0)}else t.type==="session-end"&&s(c,"idle")}async function ae(){if(!e(f)||d){s(c,"idle");return}const t=T();if(!t){s(c,"idle");return}s(c,"connecting");try{const n=Z(e(f).source),a=await fetch("/api/sessions/connect",{body:JSON.stringify({command:n,cwd:e(f).projectPath,sessionId:e(W)}),headers:{Authorization:`Bearer ${t.apiKey}`,"Content-Type":"application/json"},method:"POST"});if(!a.ok||d){s(c,"idle");return}const o=await a.json();s(j,o.terminalId,!0),s(c,"resuming"),z(o.sessionWs,o.terminalId),q(o.ws)}catch{s(c,"idle")}}function ie(t){if(t.trim()){if(e(c)==="ready"&&b?.readyState===WebSocket.OPEN){b.send(JSON.stringify({data:`${t}
4
4
  `,type:"input"}));return}if(e(c)==="connecting"||e(c)==="resuming"){y=t;return}y=t,ae()}}async function oe(){e(i).length===0&&s(w,!0);try{const t=T();if(!t){s(I,"No configuration found. Please configure settings first."),s(w,!1);return}const n=e(W)??"",a=e(M);if(!n){s(I,"No session ID"),s(w,!1);return}const o=a?`id=${encodeURIComponent(n)}&project=${encodeURIComponent(a)}&limit=${e(A)}`:`id=${encodeURIComponent(n)}&limit=${e(A)}`;let r=await fetch(`/api/sessions?${o}`,{headers:{Authorization:`Bearer ${t.apiKey}`}});if(r.status===404&&!a){const S=await fetch("/api/sessions",{headers:{Authorization:`Bearer ${t.apiKey}`}});if(S.ok){const J=await S.json();for(const B of J.projects||[])if((B.sessions||[]).find(U=>U.id===n)){r=await fetch(`/api/sessions?id=${encodeURIComponent(n)}&project=${encodeURIComponent(B.id)}`,{headers:{Authorization:`Bearer ${t.apiKey}`}});break}}}if(!r.ok){s(I,"Session not found"),s(w,!1);return}const u=await r.json(),p=Array.isArray(u.messages)?u.messages:[];Y(`shooter_session_${n}`,{messages:p,session:u.session}),s(f,u.session,!0),s(i,p,!0),s(R,p.length>=e(A)),s(w,!1);return}catch{s(I,"Failed to load session")}s(w,!1)}async function re(){if(e(N))return;const t=T();if(t){s(N,!0);try{const n=e(A)+200,a=e(W)??"",o=e(M);if(!a)return;const r=[`id=${encodeURIComponent(a)}`,`limit=${n}`];o&&r.push(`project=${encodeURIComponent(o)}`);const u=await fetch(`/api/sessions?${r.join("&")}`,{headers:{Authorization:`Bearer ${t.apiKey}`}});if(!u.ok)return;const p=await u.json(),S=Array.isArray(p.messages)?p.messages:[];s(i,S,!0),s(A,n),s(R,S.length>=n),Y(`shooter_session_${a}`,{messages:S,session:p.session})}catch{}finally{s(N,!1)}}}ye(()=>{const t=Ie(`shooter_session_${x.params.id}`);return t&&(s(f,t.session,!0),s(i,Array.isArray(t.messages)?t.messages:[],!0),s(w,!1)),oe().then(async()=>{if(!e(f)||d)return;const n=T();if(n)try{const a=Z(e(f).source),o=await fetch("/api/sessions/connect",{body:JSON.stringify({command:a,cwd:e(f).projectPath,noCreate:!0,sessionId:e(W)}),headers:{Authorization:`Bearer ${n.apiKey}`,"Content-Type":"application/json"},method:"POST"});if(o.ok&&!d){const r=await o.json();s(j,r.terminalId,!0),s(c,"resuming"),z(r.sessionWs,r.terminalId),q(r.ws)}}catch{}}),()=>{d=!0,O&&clearTimeout(O),C?.close(),b?.close()}});var E=We();$e("1a2wdfb",t=>{var n=Ce();Se(()=>{_e.title=`${(e(f)?.title||"Session")??""} - Shooter`}),h(t,n)});var ce=_(E);{var le=t=>{var n=Oe();h(t,n)},de=t=>{var n=Me(),a=H(n),o=_(a);$(a);var r=D(a,2),u=_(r,!0);$(r),Q(()=>{X(o,"href",e(M)?`/project?id=${e(M)}`:"/"),V(u,e(I))}),h(t,n)},ue=t=>{var n=Re(),a=H(n),o=_(a),r=_(o),u=D(r,2);{var p=l=>{var m=Ne();h(l,m)},S=l=>{var m=Ae();h(l,m)},J=l=>{var m=Te();h(l,m)},B=l=>{var m=Pe();h(l,m)};K(u,l=>{e(c)==="connecting"?l(p):e(c)==="resuming"?l(S,1):e(k)==="connected"?l(J,2):e(k)==="reconnecting"&&l(B,3)})}$(o);var U=D(o,2),fe=_(U,!0);$(U),$(a);var F=D(a,2),G=_(F);{var pe=l=>{var m=De(),he=_(m);{let ve=P(()=>e(N)?"Loading...":"Load earlier messages");ke(he,{get text(){return e(ve)},classes:"btn-ghost btn-sm",get disabled(){return e(N)},onclick:re})}$(m),h(l,m)};K(G,l=>{e(R)&&l(pe)})}var me=D(G,2);{let l=P(()=>[...e(i)].reverse());je(me,{get messages(){return e(l)},newestFirst:!0,get connectionState(){return e(k)},showInput:!0,get sendDisabled(){return e(se)},onSendInput:ie,sessionEnded:!1})}$(F),Q(()=>{X(r,"href",e(M)?`/project?id=${e(M)}`:"/"),V(fe,e(f).title)}),h(t,n)};K(ce,t=>{e(w)&&e(i).length===0?t(le):e(I)?t(de,1):e(f)&&t(ue,2)})}$(E),h(ee,E),be()}export{Fe as component};
@@ -1 +1 @@
1
- import{i as B,a as p,f,s as $}from"../chunks/DoGIJDSZ.js";import{p as G,s as g,q as H,v as Q,w as U,D as V,b as a,g as s,c as o,x as j,d as c,$ as W,r as n,t as X}from"../chunks/kzeZOqU5.js";import{I as Y,B as Z,b as ee,e as se,P as te,d as ae}from"../chunks/aiM7Bbhi.js";import{h as re}from"../chunks/BQJR1fvD.js";import{g as ne}from"../chunks/BPIV28L3.js";import{E as oe}from"../chunks/DFa6kKPT.js";var ie=f('<p class="muted svelte-1ggfn1w">Loading…</p>'),le=f('<a class="ss-card svelte-1ggfn1w"><div class="ss-card-head svelte-1ggfn1w"><span class="ss-label svelte-1ggfn1w"> </span> <!></div> <div class="ss-meta svelte-1ggfn1w"><span> </span> <span> </span></div></a>'),ce=f('<div class="ss-grid svelte-1ggfn1w"></div>'),ve=f('<main class="main sos-list svelte-1ggfn1w"><div class="page-head svelte-1ggfn1w"><div><h1 class="svelte-1ggfn1w">Session Over Sessions</h1> <p class="subtitle svelte-1ggfn1w">Coordinate multiple running agents as one super-session.</p></div></div> <div class="create-row svelte-1ggfn1w"><!> <!></div> <!> <!></main>');function he(I,P){G(P,!0);let m=g(H([])),h=g(!0),i=g(""),v=g(""),d=g(!1);function x(){try{const e=localStorage.getItem("shooter_config");return e?JSON.parse(e):null}catch{return null}}async function T(){const e=x();if(!e){a(i,"No configuration found. Open Settings first."),a(h,!1);return}try{const t=await fetch("/api/sos",{headers:{Authorization:`Bearer ${e.apiKey}`}});if(!t.ok){a(i,`Failed to load (${t.status})`);return}const r=await t.json();a(m,r.superSessions??[],!0)}catch{a(i,"Network error — is the server running?")}finally{a(h,!1)}}async function z(){const e=x();if(!(!e||!s(v).trim())){a(d,!0);try{const t=await fetch("/api/sos",{body:JSON.stringify({label:s(v).trim()}),headers:{Authorization:`Bearer ${e.apiKey}`,"Content-Type":"application/json"},method:"POST"});if(t.ok){const r=await t.json();ne(`/sos/${r.id}`)}else{const r=await t.json().catch(()=>({}));a(i,r.error??`Failed to create (${t.status})`,!0)}}catch{a(i,"Network error — could not create super-session")}finally{a(d,!1)}}}Q(()=>{T()});var w=ve();re("1ggfn1w",e=>{V(()=>{W.title="Session Over Sessions - Shooter"})});var _=c(o(w),2),k=o(_);Y(k,{dataType:"text",placeholder:"New super-session label…",classes:"sos-create-input",get value(){return s(v)},set value(e){a(v,e,!0)}});var A=c(k,2);{let e=j(()=>s(d)?"Creating…":"Create"),t=j(()=>s(d)||!s(v).trim());Z(A,{get text(){return s(e)},get disabled(){return s(t)},onclick:z,classes:"btn-create"})}n(_);var N=c(_,2);{var E=e=>{ee(e,{get text(){return s(i)},classes:"banner-error"})};B(N,e=>{s(i)&&e(E)})}var F=c(N,2);{var J=e=>{var t=ie();p(e,t)},K=e=>{oe(e,{title:"No super-sessions yet",description:"Create one above, then add running agent sessions as members."})},L=e=>{var t=ce();se(t,21,()=>s(m),r=>r.id,(r,l)=>{var u=le(),b=o(u),y=o(b),R=o(y,!0);n(y);var q=c(y,2);te(q,{get text(){return s(l).status},classes:"pill-status-unknown"}),n(b);var C=c(b,2),S=o(C),D=o(S);n(S);var O=c(S,2),M=o(O);n(O),n(C),n(u),X(()=>{ae(u,"href",`/sos/${s(l).id}`),$(R,s(l).label),$(D,`${s(l).members.length??""} member${s(l).members.length===1?"":"s"}`),$(M,`${s(l).routingRules.length??""} rule${s(l).routingRules.length===1?"":"s"}`)}),p(r,u)}),n(t),p(e,t)};B(F,e=>{s(h)?e(J):s(m).length===0?e(K,1):e(L,-1)})}n(w),p(I,w),U()}export{he as component};
1
+ import{i as B,a as p,f,s as $}from"../chunks/DoGIJDSZ.js";import{p as G,s as g,q as H,v as Q,w as U,D as V,b as a,g as s,c as o,x as j,d as c,$ as W,r as n,t as X}from"../chunks/kzeZOqU5.js";import{I as Y,B as Z,b as ee,e as se,P as te,d as ae}from"../chunks/aiM7Bbhi.js";import{h as re}from"../chunks/BQJR1fvD.js";import{g as ne}from"../chunks/ssAhjWfF.js";import{E as oe}from"../chunks/DFa6kKPT.js";var ie=f('<p class="muted svelte-1ggfn1w">Loading…</p>'),le=f('<a class="ss-card svelte-1ggfn1w"><div class="ss-card-head svelte-1ggfn1w"><span class="ss-label svelte-1ggfn1w"> </span> <!></div> <div class="ss-meta svelte-1ggfn1w"><span> </span> <span> </span></div></a>'),ce=f('<div class="ss-grid svelte-1ggfn1w"></div>'),ve=f('<main class="main sos-list svelte-1ggfn1w"><div class="page-head svelte-1ggfn1w"><div><h1 class="svelte-1ggfn1w">Session Over Sessions</h1> <p class="subtitle svelte-1ggfn1w">Coordinate multiple running agents as one super-session.</p></div></div> <div class="create-row svelte-1ggfn1w"><!> <!></div> <!> <!></main>');function he(I,P){G(P,!0);let m=g(H([])),h=g(!0),i=g(""),v=g(""),d=g(!1);function x(){try{const e=localStorage.getItem("shooter_config");return e?JSON.parse(e):null}catch{return null}}async function T(){const e=x();if(!e){a(i,"No configuration found. Open Settings first."),a(h,!1);return}try{const t=await fetch("/api/sos",{headers:{Authorization:`Bearer ${e.apiKey}`}});if(!t.ok){a(i,`Failed to load (${t.status})`);return}const r=await t.json();a(m,r.superSessions??[],!0)}catch{a(i,"Network error — is the server running?")}finally{a(h,!1)}}async function z(){const e=x();if(!(!e||!s(v).trim())){a(d,!0);try{const t=await fetch("/api/sos",{body:JSON.stringify({label:s(v).trim()}),headers:{Authorization:`Bearer ${e.apiKey}`,"Content-Type":"application/json"},method:"POST"});if(t.ok){const r=await t.json();ne(`/sos/${r.id}`)}else{const r=await t.json().catch(()=>({}));a(i,r.error??`Failed to create (${t.status})`,!0)}}catch{a(i,"Network error — could not create super-session")}finally{a(d,!1)}}}Q(()=>{T()});var w=ve();re("1ggfn1w",e=>{V(()=>{W.title="Session Over Sessions - Shooter"})});var _=c(o(w),2),k=o(_);Y(k,{dataType:"text",placeholder:"New super-session label…",classes:"sos-create-input",get value(){return s(v)},set value(e){a(v,e,!0)}});var A=c(k,2);{let e=j(()=>s(d)?"Creating…":"Create"),t=j(()=>s(d)||!s(v).trim());Z(A,{get text(){return s(e)},get disabled(){return s(t)},onclick:z,classes:"btn-create"})}n(_);var N=c(_,2);{var E=e=>{ee(e,{get text(){return s(i)},classes:"banner-error"})};B(N,e=>{s(i)&&e(E)})}var F=c(N,2);{var J=e=>{var t=ie();p(e,t)},K=e=>{oe(e,{title:"No super-sessions yet",description:"Create one above, then add running agent sessions as members."})},L=e=>{var t=ce();se(t,21,()=>s(m),r=>r.id,(r,l)=>{var u=le(),b=o(u),y=o(b),R=o(y,!0);n(y);var q=c(y,2);te(q,{get text(){return s(l).status},classes:"pill-status-unknown"}),n(b);var C=c(b,2),S=o(C),D=o(S);n(S);var O=c(S,2),M=o(O);n(O),n(C),n(u),X(()=>{ae(u,"href",`/sos/${s(l).id}`),$(R,s(l).label),$(D,`${s(l).members.length??""} member${s(l).members.length===1?"":"s"}`),$(M,`${s(l).routingRules.length??""} rule${s(l).routingRules.length===1?"":"s"}`)}),p(r,u)}),n(t),p(e,t)};B(F,e=>{s(h)?e(J):s(m).length===0?e(K,1):e(L,-1)})}n(w),p(I,w),U()}export{he as component};
@@ -1,2 +1,2 @@
1
- import{i as Y,a as I,c as tt,e as rt,f as S,s as _,g as st}from"../chunks/DoGIJDSZ.js";import{p as at,s as m,q as Te,E as ot,g as e,v as nt,y as lt,w as it,z as ct,$ as dt,d as l,c as i,r as c,b as s,x as v,A as ut,t as q}from"../chunks/kzeZOqU5.js";import{b as vt,P as ie,e as Z,B as F,s as pt,S as D,I as ee,d as mt}from"../chunks/aiM7Bbhi.js";import{h as gt}from"../chunks/BQJR1fvD.js";import{p as ft}from"../chunks/BBuzUXZ9.js";var ht=S('<div class="pending svelte-4802gc"><span class="pending-text svelte-4802gc"> <em> </em></span> <div class="pending-actions svelte-4802gc"><!> <!></div></div>'),bt=S('<p class="muted svelte-4802gc">No messages yet. Add members below.</p>'),yt=S('<span class="relay-badge svelte-4802gc">relayed</span>'),_t=S('<div><div class="entry-tag svelte-4802gc"><!> <span class="member-id svelte-4802gc"> </span> <!></div> <pre class="entry-body svelte-4802gc"> </pre></div>'),wt=S('<div class="member-row svelte-4802gc"><!> <span class="member-key svelte-4802gc"> </span> <span class="member-flag svelte-4802gc"> </span> <!></div>'),$t=S('<div class="rule-row svelte-4802gc"><span> </span> <span class="rule-action svelte-4802gc"> </span> <span class="rule-pattern svelte-4802gc"> </span> <!></div>'),kt=S('<div class="head svelte-4802gc"><h1 class="svelte-4802gc"> </h1> <!></div> <!> <section class="panel svelte-4802gc"><h2 class="svelte-4802gc">Merged transcript</h2> <div class="transcript svelte-4802gc"><!> <!></div></section> <section class="panel svelte-4802gc"><h2 class="svelte-4802gc">Forward to a member</h2> <div class="row svelte-4802gc"><!> <!> <!></div></section> <section class="panel svelte-4802gc"><h2 class="svelte-4802gc">Members</h2> <!> <div class="row add-row svelte-4802gc"><!> <!> <!> <!></div></section> <section class="panel svelte-4802gc"><h2 class="svelte-4802gc">Routing rules</h2> <!> <div class="row add-row svelte-4802gc"><!> <!> <!> <!> <!></div></section>',1),xt=S('<main class="main sos-view svelte-4802gc"><a class="back svelte-4802gc" href="/sos">← All super-sessions</a> <!> <!></main>');function At(Ne,Ae){at(Ae,!0);const je=()=>tt(ft,"$page",Oe),[Oe,Pe]=rt(),Re=["claude-code","codex","opencode","gemini","qwen","cursor","copilot","amp"],M=je().params.id??"";let d=m(null),T=m(Te([])),W=m(Te([])),p=m(""),N=null,z=!1,w=m(""),C=m(""),E=m(""),te=m("claude-code"),U=m(""),J=m(""),K=m(""),re=m("relay"),G=m("");const $=v(()=>e(d)?.members??[]),Q=v(()=>e(d)?.routingRules??[]);let B=m(void 0);ot(()=>{e(B)&&e(T).length>0&&(e(B).scrollTop=e(B).scrollHeight)});function Fe(){try{const t=localStorage.getItem("shooter_config");return t?JSON.parse(t):null}catch{return null}}function Ce(){return Fe()?.apiKey??""}function A(t=!1){const o={Authorization:`Bearer ${Ce()}`};return t&&(o["Content-Type"]="application/json"),o}function j(t){const o=e($).find(u=>u.id===t);return o?`${V(o.provider)} · ${o.id.slice(0,6)}`:t.slice(0,6)}function V(t){return t==="claude-code"?"Claude":t.charAt(0).toUpperCase()+t.slice(1)}function Ee(t){return t.message.parts.map(o=>o.type==="text"||o.type==="thinking"?o.content:o.type==="tool_use"?`🔧 ${o.toolName}`:`↳ ${o.output.slice(0,200)}`).join(`
1
+ import{i as Y,a as I,c as tt,e as rt,f as S,s as _,g as st}from"../chunks/DoGIJDSZ.js";import{p as at,s as m,q as Te,E as ot,g as e,v as nt,y as lt,w as it,z as ct,$ as dt,d as l,c as i,r as c,b as s,x as v,A as ut,t as q}from"../chunks/kzeZOqU5.js";import{b as vt,P as ie,e as Z,B as F,s as pt,S as D,I as ee,d as mt}from"../chunks/aiM7Bbhi.js";import{h as gt}from"../chunks/BQJR1fvD.js";import{p as ft}from"../chunks/BstJSK2K.js";var ht=S('<div class="pending svelte-4802gc"><span class="pending-text svelte-4802gc"> <em> </em></span> <div class="pending-actions svelte-4802gc"><!> <!></div></div>'),bt=S('<p class="muted svelte-4802gc">No messages yet. Add members below.</p>'),yt=S('<span class="relay-badge svelte-4802gc">relayed</span>'),_t=S('<div><div class="entry-tag svelte-4802gc"><!> <span class="member-id svelte-4802gc"> </span> <!></div> <pre class="entry-body svelte-4802gc"> </pre></div>'),wt=S('<div class="member-row svelte-4802gc"><!> <span class="member-key svelte-4802gc"> </span> <span class="member-flag svelte-4802gc"> </span> <!></div>'),$t=S('<div class="rule-row svelte-4802gc"><span> </span> <span class="rule-action svelte-4802gc"> </span> <span class="rule-pattern svelte-4802gc"> </span> <!></div>'),kt=S('<div class="head svelte-4802gc"><h1 class="svelte-4802gc"> </h1> <!></div> <!> <section class="panel svelte-4802gc"><h2 class="svelte-4802gc">Merged transcript</h2> <div class="transcript svelte-4802gc"><!> <!></div></section> <section class="panel svelte-4802gc"><h2 class="svelte-4802gc">Forward to a member</h2> <div class="row svelte-4802gc"><!> <!> <!></div></section> <section class="panel svelte-4802gc"><h2 class="svelte-4802gc">Members</h2> <!> <div class="row add-row svelte-4802gc"><!> <!> <!> <!></div></section> <section class="panel svelte-4802gc"><h2 class="svelte-4802gc">Routing rules</h2> <!> <div class="row add-row svelte-4802gc"><!> <!> <!> <!> <!></div></section>',1),xt=S('<main class="main sos-view svelte-4802gc"><a class="back svelte-4802gc" href="/sos">← All super-sessions</a> <!> <!></main>');function At(Ne,Ae){at(Ae,!0);const je=()=>tt(ft,"$page",Oe),[Oe,Pe]=rt(),Re=["claude-code","codex","opencode","gemini","qwen","cursor","copilot","amp"],M=je().params.id??"";let d=m(null),T=m(Te([])),W=m(Te([])),p=m(""),N=null,z=!1,w=m(""),C=m(""),E=m(""),te=m("claude-code"),U=m(""),J=m(""),K=m(""),re=m("relay"),G=m("");const $=v(()=>e(d)?.members??[]),Q=v(()=>e(d)?.routingRules??[]);let B=m(void 0);ot(()=>{e(B)&&e(T).length>0&&(e(B).scrollTop=e(B).scrollHeight)});function Fe(){try{const t=localStorage.getItem("shooter_config");return t?JSON.parse(t):null}catch{return null}}function Ce(){return Fe()?.apiKey??""}function A(t=!1){const o={Authorization:`Bearer ${Ce()}`};return t&&(o["Content-Type"]="application/json"),o}function j(t){const o=e($).find(u=>u.id===t);return o?`${V(o.provider)} · ${o.id.slice(0,6)}`:t.slice(0,6)}function V(t){return t==="claude-code"?"Claude":t.charAt(0).toUpperCase()+t.slice(1)}function Ee(t){return t.message.parts.map(o=>o.type==="text"||o.type==="thinking"?o.content:o.type==="tool_use"?`🔧 ${o.toolName}`:`↳ ${o.output.slice(0,200)}`).join(`
2
2
  `).trim()}async function Je(){try{const t=await fetch(`/api/sos/${M}`,{headers:A()});return t.ok?(s(d,await t.json(),!0),s(T,e(d).transcript??[],!0),!e(w)&&e($)[0]&&s(w,e($)[0].id,!0),!0):(s(p,t.status===404?"Super-session not found":`Failed to load (${t.status})`,!0),!1)}catch{return s(p,"Network error"),!1}}async function Ke(){try{const t=await fetch("/api/ws-ticket",{headers:A(),method:"POST"});if(!t.ok){s(p,"Failed to open the live connection (ticket request failed)");return}const{ticket:o}=await t.json();if(z)return;const u=window.location.protocol==="https:"?"wss:":"ws:";N=new WebSocket(`${u}//${window.location.host}/ws/super-session/${M}?ticket=${o}`),N.onmessage=O=>{let X;try{X=JSON.parse(O.data)}catch{return}We(X)},N.onerror=()=>{s(p,"Live connection error")}}catch{s(p,"Failed to open the live connection (network error)")}}function We(t){switch(t.type){case"sos-error":s(p,t.message,!0);break;case"sos-history":s(T,t.entries,!0);break;case"sos-member-added":e(d)&&s(d,{...e(d),members:[...e(d).members,t.member]},!0);break;case"sos-member-removed":e(d)&&s(d,{...e(d),members:e(d).members.filter(o=>o.id!==t.memberId)},!0);break;case"sos-message":s(T,[...e(T),t.entry],!0);break;case"sos-relay-pending":s(W,[...e(W),{expiresAt:t.expiresAt,fromMemberId:t.fromMemberId,preview:t.preview,relayId:t.relayId,toMemberId:t.toMemberId}],!0);break;case"sos-relay-resolved":s(W,e(W).filter(o=>o.relayId!==t.relayId),!0);break}}function ce(t){N?.readyState===WebSocket.OPEN&&N.send(JSON.stringify(t))}async function Be(){if(!(!e(w)||!e(C).trim()))try{const t=await fetch(`/api/sos/${M}/inject`,{body:JSON.stringify({text:e(C),toMemberId:e(w)}),headers:A(!0),method:"POST"});if(!t.ok){const o=await t.json().catch(()=>({}));s(p,o.error??"Failed to forward message",!0);return}s(C,"")}catch{s(p,"Network error — could not forward message")}}async function He(){if(e(E).trim())try{const t=await fetch(`/api/sos/${M}/members`,{body:JSON.stringify({provider:e(te),sessionKey:e(E).trim(),terminalId:e(U).trim()||void 0}),headers:A(!0),method:"POST"});if(t.ok)s(E,""),s(U,"");else{const o=await t.json().catch(()=>({}));s(p,o.error??"Failed to add member",!0)}}catch{s(p,"Network error — could not add member")}}async function Le(t){try{const o=await fetch(`/api/sos/${M}/members/${t}`,{headers:A(),method:"DELETE"});if(!o.ok){const u=await o.json().catch(()=>({}));s(p,u.error??"Failed to remove member",!0)}}catch{s(p,"Network error — could not remove member")}}async function qe(){if(!e(J)||!e(K))return;const t=[...e(Q),{action:e(re),fromMemberId:e(J),id:"",matchPattern:e(G),priority:e(Q).length+1,toMemberId:e(K)}];try{const o=await fetch(`/api/sos/${M}/rules`,{body:JSON.stringify({routingRules:t}),headers:A(!0),method:"PATCH"});if(o.ok&&e(d)){const u=await o.json();s(d,{...e(d),routingRules:u.routingRules},!0),s(G,"")}else{const u=await o.json().catch(()=>({}));s(p,u.error??"Failed to add rule",!0)}}catch{s(p,"Network error — could not add rule")}}async function De(t){const o=e(Q).filter(u=>u.id!==t);try{const u=await fetch(`/api/sos/${M}/rules`,{body:JSON.stringify({routingRules:o}),headers:A(!0),method:"PATCH"});if(u.ok&&e(d))s(d,{...e(d),routingRules:o},!0);else if(!u.ok){const O=await u.json().catch(()=>({}));s(p,O.error??"Failed to delete rule",!0)}}catch{s(p,"Network error — could not delete rule")}}nt(()=>(Je().then(t=>{t&&!z&&Ke()}),()=>{z=!0,N?.close()})),lt(()=>{z=!0,N?.close()});var se=xt();gt("4802gc",t=>{ct(()=>{dt.title=`${e(d)?.label??"Super-session"??""} - Shooter`})});var de=l(i(se),2);{var ze=t=>{vt(t,{get text(){return e(p)},classes:"banner-error"})};Y(de,t=>{e(p)&&t(ze)})}var Ue=l(de,2);{var Ge=t=>{var o=kt(),u=ut(o),O=i(u),X=i(O,!0);c(O);var Qe=l(O,2);{let r=v(()=>`${e($).length} members`);ie(Qe,{get text(){return e(r)},classes:"pill-status-unknown"})}c(u);var ue=l(u,2);Z(ue,17,()=>e(W),r=>r.relayId,(r,a)=>{var n=ht(),g=i(n),f=i(g),h=l(f),b=i(h,!0);c(h),c(g);var y=l(g,2),k=i(y);F(k,{text:"Approve",classes:"btn-approve",onclick:()=>{ce({relayId:e(a).relayId,type:"relay-approve"})}});var P=l(k,2);F(P,{text:"Deny",classes:"btn-deny",onclick:()=>{ce({relayId:e(a).relayId,type:"relay-deny"})}}),c(y),c(n),q((x,H)=>{_(f,`Relay ${x??""} → ${H??""}: `),_(b,e(a).preview)},[()=>j(e(a).fromMemberId),()=>j(e(a).toMemberId)]),I(r,n)});var ae=l(ue,2),oe=l(i(ae),2),ve=i(oe);{var Ve=r=>{var a=bt();I(r,a)};Y(ve,r=>{e(T).length===0&&r(Ve)})}var Xe=l(ve,2);Z(Xe,19,()=>e(T),(r,a)=>`${r.message.id}-${a}`,(r,a)=>{var n=_t();let g;var f=i(n),h=i(f);{let R=v(()=>V(e(a).provider)),L=v(()=>`pill-source-${e(a).provider}`);ie(h,{get text(){return e(R)},get classes(){return e(L)}})}var b=l(h,2),y=i(b,!0);c(b);var k=l(b,2);{var P=R=>{var L=yt();I(R,L)};Y(k,R=>{e(a).relayed&&R(P)})}c(f);var x=l(f,2),H=i(x,!0);c(x),c(n),q((R,L)=>{g=pt(n,1,"entry svelte-4802gc",null,g,{relayed:e(a).relayed}),_(y,R),_(H,L)},[()=>e(a).memberId.slice(0,6),()=>Ee(e(a))]),I(r,n)}),c(oe),st(oe,r=>s(B,r),()=>e(B)),c(ae);var ne=l(ae,2),pe=l(i(ne),2),me=i(pe);{let r=v(()=>e($).map(n=>({id:n.id,label:j(n.id)}))),a=v(()=>e(w)?[e(w)]:[]);D(me,{get items(){return e(r)},get value(){return e(a)},placeholder:"Member",onchange:n=>{s(w,n[0]??"",!0)},classes:"sos-select"})}var ge=l(me,2);ee(ge,{dataType:"text",placeholder:"Message to inject…",classes:"sos-input",get value(){return e(C)},set value(r){s(C,r,!0)}});var Ye=l(ge,2);{let r=v(()=>!e(w)||!e(C).trim());F(Ye,{text:"Send",get disabled(){return e(r)},onclick:Be,classes:"btn-send"})}c(pe),c(ne);var le=l(ne,2),fe=l(i(le),2);Z(fe,17,()=>e($),r=>r.id,(r,a)=>{var n=wt(),g=i(n);{let P=v(()=>V(e(a).provider)),x=v(()=>`pill-source-${e(a).provider}`);ie(g,{get text(){return e(P)},get classes(){return e(x)}})}var f=l(g,2),h=i(f,!0);c(f);var b=l(f,2),y=i(b,!0);c(b);var k=l(b,2);F(k,{text:"Remove",classes:"btn-remove",onclick:()=>{Le(e(a).id)}}),c(n),q(()=>{mt(f,"title",e(a).sessionKey),_(h,e(a).sessionKey),_(y,e(a).terminalId?"⌁ terminal":"observed")}),I(r,n)});var he=l(fe,2),be=i(he);ee(be,{dataType:"text",placeholder:"sessionKey (file path or session id)",classes:"sos-input",get value(){return e(E)},set value(r){s(E,r,!0)}});var ye=l(be,2);{let r=v(()=>Re.map(n=>({id:n,label:V(n)}))),a=v(()=>[e(te)]);D(ye,{get items(){return e(r)},get value(){return e(a)},onchange:n=>{s(te,n[0]??"claude-code",!0)},classes:"sos-select"})}var _e=l(ye,2);ee(_e,{dataType:"text",placeholder:"terminalId (optional)",classes:"sos-input",get value(){return e(U)},set value(r){s(U,r,!0)}});var Ze=l(_e,2);{let r=v(()=>!e(E).trim());F(Ze,{text:"Add",get disabled(){return e(r)},onclick:He,classes:"btn-send"})}c(he),c(le);var we=l(le,2),$e=l(i(we),2);Z($e,17,()=>e(Q),r=>r.id,(r,a)=>{var n=$t(),g=i(n),f=i(g);c(g);var h=l(g,2),b=i(h,!0);c(h);var y=l(h,2),k=i(y,!0);c(y);var P=l(y,2);F(P,{text:"✕",classes:"btn-remove",onclick:()=>{De(e(a).id)}}),c(n),q((x,H)=>{_(f,`${x??""} → ${H??""}`),_(b,e(a).action),_(k,e(a).matchPattern||"(any)")},[()=>j(e(a).fromMemberId),()=>j(e(a).toMemberId)]),I(r,n)});var ke=l($e,2),xe=i(ke);{let r=v(()=>e($).map(n=>({id:n.id,label:j(n.id)}))),a=v(()=>e(J)?[e(J)]:[]);D(xe,{get items(){return e(r)},get value(){return e(a)},placeholder:"From",onchange:n=>{s(J,n[0]??"",!0)},classes:"sos-select"})}var Ie=l(xe,2);{let r=v(()=>e($).map(n=>({id:n.id,label:j(n.id)}))),a=v(()=>e(K)?[e(K)]:[]);D(Ie,{get items(){return e(r)},get value(){return e(a)},placeholder:"To",onchange:n=>{s(K,n[0]??"",!0)},classes:"sos-select"})}var Se=l(Ie,2);{let r=v(()=>[e(re)]);D(Se,{items:[{id:"relay",label:"relay"},{id:"block",label:"block"},{id:"escalate",label:"escalate"}],get value(){return e(r)},onchange:a=>{s(re,a[0]??"relay",!0)},classes:"sos-select"})}var Me=l(Se,2);ee(Me,{dataType:"text",placeholder:"match (substring, empty=any)",classes:"sos-input",get value(){return e(G)},set value(r){s(G,r,!0)}});var et=l(Me,2);{let r=v(()=>!e(J)||!e(K));F(et,{text:"Add rule",get disabled(){return e(r)},onclick:qe,classes:"btn-send"})}c(ke),c(we),q(()=>_(X,e(d).label)),I(t,o)};Y(Ue,t=>{e(d)&&t(Ge)})}c(se),I(Ne,se),it(),Pe()}export{At as component};
@@ -1 +1 @@
1
- {"version":"1782542904214"}
1
+ {"version":"1782544936668"}
Binary file
Binary file
@@ -17,9 +17,9 @@ const index = 0;
17
17
  let component_cache;
18
18
  const component = async () => component_cache ??= (await import('./_layout.svelte-BlI9weU7.js')).default;
19
19
  const server_id = "src/routes/+layout.server.ts";
20
- const imports = ["_app/immutable/nodes/0.CnSSjKHX.js","_app/immutable/chunks/DoGIJDSZ.js","_app/immutable/chunks/kzeZOqU5.js","_app/immutable/chunks/aiM7Bbhi.js","_app/immutable/chunks/BPIV28L3.js","_app/immutable/chunks/BBuzUXZ9.js","_app/immutable/chunks/Bn-6X1BO.js","_app/immutable/chunks/CG453M9q.js","_app/immutable/chunks/CSjf4fBs.js"];
20
+ const imports = ["_app/immutable/nodes/0.BEbzRcwm.js","_app/immutable/chunks/DoGIJDSZ.js","_app/immutable/chunks/kzeZOqU5.js","_app/immutable/chunks/aiM7Bbhi.js","_app/immutable/chunks/ssAhjWfF.js","_app/immutable/chunks/BstJSK2K.js","_app/immutable/chunks/Bn-6X1BO.js","_app/immutable/chunks/CG453M9q.js","_app/immutable/chunks/CSjf4fBs.js"];
21
21
  const stylesheets = ["_app/immutable/assets/ColorPicker.CV4IKef4.css","_app/immutable/assets/0.BwNtE8TX.css"];
22
22
  const fonts = [];
23
23
 
24
24
  export { component, fonts, imports, index, _layout_server_ts as server, server_id, stylesheets };
25
- //# sourceMappingURL=0-ByOnI9Md.js.map
25
+ //# sourceMappingURL=0-BHU07xt9.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"0-ByOnI9Md.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/_layout.server.ts.js","../../../.svelte-kit/adapter-node/nodes/0.js"],"sourcesContent":["import { b as private_env } from \"../../chunks/shared-server.js\";\nimport { g as getProviderAvailability } from \"../../chunks/providers.js\";\nconst load = () => ({\n aiProviders: getProviderAvailability(private_env),\n litellmBaseUrl: private_env.LITELLM_BASE_URL ?? \"\",\n litellmModel: private_env.LITELLM_MODEL ?? \"open-large\",\n neurolinkProvider: private_env.NEUROLINK_PROVIDER ?? \"\"\n});\nexport {\n load\n};\n","import * as server from '../entries/pages/_layout.server.ts.js';\n\nexport const index = 0;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/_layout.svelte.js')).default;\nexport { server };\nexport const server_id = \"src/routes/+layout.server.ts\";\nexport const imports = [\"_app/immutable/nodes/0.CnSSjKHX.js\",\"_app/immutable/chunks/DoGIJDSZ.js\",\"_app/immutable/chunks/kzeZOqU5.js\",\"_app/immutable/chunks/aiM7Bbhi.js\",\"_app/immutable/chunks/BPIV28L3.js\",\"_app/immutable/chunks/BBuzUXZ9.js\",\"_app/immutable/chunks/Bn-6X1BO.js\",\"_app/immutable/chunks/CG453M9q.js\",\"_app/immutable/chunks/CSjf4fBs.js\"];\nexport const stylesheets = [\"_app/immutable/assets/ColorPicker.CV4IKef4.css\",\"_app/immutable/assets/0.BwNtE8TX.css\"];\nexport const fonts = [];\n"],"names":[],"mappings":";;;AAEA,MAAM,IAAI,GAAG,OAAO;AACpB,EAAE,WAAW,EAAE,uBAAuB,CAAC,WAAW,CAAC;AACnD,EAAE,cAAc,EAAE,WAAW,CAAC,gBAAgB,IAAI,EAAE;AACpD,EAAE,YAAY,EAAE,WAAW,CAAC,aAAa,IAAI,YAAY;AACzD,EAAE,iBAAiB,EAAE,WAAW,CAAC,kBAAkB,IAAI;AACvD,CAAC,CAAC;;;;;;;ACLU,MAAC,KAAK,GAAG;AACrB,IAAI,eAAe;AACP,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,8BAAoC,CAAC,EAAE;AAElG,MAAC,SAAS,GAAG;AACb,MAAC,OAAO,GAAG,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC;AAChV,MAAC,WAAW,GAAG,CAAC,gDAAgD,CAAC,sCAAsC;AACvG,MAAC,KAAK,GAAG;;;;"}
1
+ {"version":3,"file":"0-BHU07xt9.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/_layout.server.ts.js","../../../.svelte-kit/adapter-node/nodes/0.js"],"sourcesContent":["import { b as private_env } from \"../../chunks/shared-server.js\";\nimport { g as getProviderAvailability } from \"../../chunks/providers.js\";\nconst load = () => ({\n aiProviders: getProviderAvailability(private_env),\n litellmBaseUrl: private_env.LITELLM_BASE_URL ?? \"\",\n litellmModel: private_env.LITELLM_MODEL ?? \"open-large\",\n neurolinkProvider: private_env.NEUROLINK_PROVIDER ?? \"\"\n});\nexport {\n load\n};\n","import * as server from '../entries/pages/_layout.server.ts.js';\n\nexport const index = 0;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/_layout.svelte.js')).default;\nexport { server };\nexport const server_id = \"src/routes/+layout.server.ts\";\nexport const imports = [\"_app/immutable/nodes/0.BEbzRcwm.js\",\"_app/immutable/chunks/DoGIJDSZ.js\",\"_app/immutable/chunks/kzeZOqU5.js\",\"_app/immutable/chunks/aiM7Bbhi.js\",\"_app/immutable/chunks/ssAhjWfF.js\",\"_app/immutable/chunks/BstJSK2K.js\",\"_app/immutable/chunks/Bn-6X1BO.js\",\"_app/immutable/chunks/CG453M9q.js\",\"_app/immutable/chunks/CSjf4fBs.js\"];\nexport const stylesheets = [\"_app/immutable/assets/ColorPicker.CV4IKef4.css\",\"_app/immutable/assets/0.BwNtE8TX.css\"];\nexport const fonts = [];\n"],"names":[],"mappings":";;;AAEA,MAAM,IAAI,GAAG,OAAO;AACpB,EAAE,WAAW,EAAE,uBAAuB,CAAC,WAAW,CAAC;AACnD,EAAE,cAAc,EAAE,WAAW,CAAC,gBAAgB,IAAI,EAAE;AACpD,EAAE,YAAY,EAAE,WAAW,CAAC,aAAa,IAAI,YAAY;AACzD,EAAE,iBAAiB,EAAE,WAAW,CAAC,kBAAkB,IAAI;AACvD,CAAC,CAAC;;;;;;;ACLU,MAAC,KAAK,GAAG;AACrB,IAAI,eAAe;AACP,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,8BAAoC,CAAC,EAAE;AAElG,MAAC,SAAS,GAAG;AACb,MAAC,OAAO,GAAG,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC;AAChV,MAAC,WAAW,GAAG,CAAC,gDAAgD,CAAC,sCAAsC;AACvG,MAAC,KAAK,GAAG;;;;"}
@@ -1,9 +1,9 @@
1
1
  const index = 1;
2
2
  let component_cache;
3
3
  const component = async () => component_cache ??= (await import('./_error.svelte-r3eJvFdN.js')).default;
4
- const imports = ["_app/immutable/nodes/1.D_5wZINa.js","_app/immutable/chunks/DoGIJDSZ.js","_app/immutable/chunks/kzeZOqU5.js","_app/immutable/chunks/BQJR1fvD.js","_app/immutable/chunks/BPIV28L3.js","_app/immutable/chunks/BBuzUXZ9.js","_app/immutable/chunks/aiM7Bbhi.js"];
4
+ const imports = ["_app/immutable/nodes/1.C_V0SOr9.js","_app/immutable/chunks/DoGIJDSZ.js","_app/immutable/chunks/kzeZOqU5.js","_app/immutable/chunks/BQJR1fvD.js","_app/immutable/chunks/ssAhjWfF.js","_app/immutable/chunks/BstJSK2K.js","_app/immutable/chunks/aiM7Bbhi.js"];
5
5
  const stylesheets = ["_app/immutable/assets/ColorPicker.CV4IKef4.css","_app/immutable/assets/1.B_AnTlN1.css"];
6
6
  const fonts = [];
7
7
 
8
8
  export { component, fonts, imports, index, stylesheets };
9
- //# sourceMappingURL=1-DcJwehLu.js.map
9
+ //# sourceMappingURL=1-OVOd8GUH.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"1-DcJwehLu.js","sources":["../../../.svelte-kit/adapter-node/nodes/1.js"],"sourcesContent":["\n\nexport const index = 1;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/_error.svelte.js')).default;\nexport const imports = [\"_app/immutable/nodes/1.D_5wZINa.js\",\"_app/immutable/chunks/DoGIJDSZ.js\",\"_app/immutable/chunks/kzeZOqU5.js\",\"_app/immutable/chunks/BQJR1fvD.js\",\"_app/immutable/chunks/BPIV28L3.js\",\"_app/immutable/chunks/BBuzUXZ9.js\",\"_app/immutable/chunks/aiM7Bbhi.js\"];\nexport const stylesheets = [\"_app/immutable/assets/ColorPicker.CV4IKef4.css\",\"_app/immutable/assets/1.B_AnTlN1.css\"];\nexport const fonts = [];\n"],"names":[],"mappings":"AAEY,MAAC,KAAK,GAAG;AACrB,IAAI,eAAe;AACP,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,6BAAmC,CAAC,EAAE;AACjG,MAAC,OAAO,GAAG,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC;AACxQ,MAAC,WAAW,GAAG,CAAC,gDAAgD,CAAC,sCAAsC;AACvG,MAAC,KAAK,GAAG;;;;"}
1
+ {"version":3,"file":"1-OVOd8GUH.js","sources":["../../../.svelte-kit/adapter-node/nodes/1.js"],"sourcesContent":["\n\nexport const index = 1;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/_error.svelte.js')).default;\nexport const imports = [\"_app/immutable/nodes/1.C_V0SOr9.js\",\"_app/immutable/chunks/DoGIJDSZ.js\",\"_app/immutable/chunks/kzeZOqU5.js\",\"_app/immutable/chunks/BQJR1fvD.js\",\"_app/immutable/chunks/ssAhjWfF.js\",\"_app/immutable/chunks/BstJSK2K.js\",\"_app/immutable/chunks/aiM7Bbhi.js\"];\nexport const stylesheets = [\"_app/immutable/assets/ColorPicker.CV4IKef4.css\",\"_app/immutable/assets/1.B_AnTlN1.css\"];\nexport const fonts = [];\n"],"names":[],"mappings":"AAEY,MAAC,KAAK,GAAG;AACrB,IAAI,eAAe;AACP,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,6BAAmC,CAAC,EAAE;AACjG,MAAC,OAAO,GAAG,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC;AACxQ,MAAC,WAAW,GAAG,CAAC,gDAAgD,CAAC,sCAAsC;AACvG,MAAC,KAAK,GAAG;;;;"}
@@ -1,9 +1,9 @@
1
1
  const index = 10;
2
2
  let component_cache;
3
3
  const component = async () => component_cache ??= (await import('./_page.svelte-CS4GU4ex.js')).default;
4
- const imports = ["_app/immutable/nodes/10.C_B2eMms.js","_app/immutable/chunks/DoGIJDSZ.js","_app/immutable/chunks/kzeZOqU5.js","_app/immutable/chunks/aiM7Bbhi.js","_app/immutable/chunks/BQJR1fvD.js","_app/immutable/chunks/BPIV28L3.js","_app/immutable/chunks/etLjvmY8.js","_app/immutable/chunks/CG453M9q.js","_app/immutable/chunks/CSjf4fBs.js","_app/immutable/chunks/xs1Xl3_e.js","_app/immutable/chunks/gQJcRhou.js","_app/immutable/chunks/Dk1NUsIU.js","_app/immutable/chunks/BdtLzPpO.js","_app/immutable/chunks/DFa6kKPT.js"];
4
+ const imports = ["_app/immutable/nodes/10.6V-37_Rl.js","_app/immutable/chunks/DoGIJDSZ.js","_app/immutable/chunks/kzeZOqU5.js","_app/immutable/chunks/aiM7Bbhi.js","_app/immutable/chunks/BQJR1fvD.js","_app/immutable/chunks/ssAhjWfF.js","_app/immutable/chunks/etLjvmY8.js","_app/immutable/chunks/CG453M9q.js","_app/immutable/chunks/CSjf4fBs.js","_app/immutable/chunks/xs1Xl3_e.js","_app/immutable/chunks/gQJcRhou.js","_app/immutable/chunks/Dk1NUsIU.js","_app/immutable/chunks/BdtLzPpO.js","_app/immutable/chunks/DFa6kKPT.js"];
5
5
  const stylesheets = ["_app/immutable/assets/ColorPicker.CV4IKef4.css","_app/immutable/assets/10.BhoBXADL.css"];
6
6
  const fonts = [];
7
7
 
8
8
  export { component, fonts, imports, index, stylesheets };
9
- //# sourceMappingURL=10-B5bdfDfK.js.map
9
+ //# sourceMappingURL=10-CRHtvb_u.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"10-B5bdfDfK.js","sources":["../../../.svelte-kit/adapter-node/nodes/10.js"],"sourcesContent":["\n\nexport const index = 10;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/terminals/_page.svelte.js')).default;\nexport const imports = [\"_app/immutable/nodes/10.C_B2eMms.js\",\"_app/immutable/chunks/DoGIJDSZ.js\",\"_app/immutable/chunks/kzeZOqU5.js\",\"_app/immutable/chunks/aiM7Bbhi.js\",\"_app/immutable/chunks/BQJR1fvD.js\",\"_app/immutable/chunks/BPIV28L3.js\",\"_app/immutable/chunks/etLjvmY8.js\",\"_app/immutable/chunks/CG453M9q.js\",\"_app/immutable/chunks/CSjf4fBs.js\",\"_app/immutable/chunks/xs1Xl3_e.js\",\"_app/immutable/chunks/gQJcRhou.js\",\"_app/immutable/chunks/Dk1NUsIU.js\",\"_app/immutable/chunks/BdtLzPpO.js\",\"_app/immutable/chunks/DFa6kKPT.js\"];\nexport const stylesheets = [\"_app/immutable/assets/ColorPicker.CV4IKef4.css\",\"_app/immutable/assets/10.BhoBXADL.css\"];\nexport const fonts = [];\n"],"names":[],"mappings":"AAEY,MAAC,KAAK,GAAG;AACrB,IAAI,eAAe;AACP,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,4BAA4C,CAAC,EAAE;AAC1G,MAAC,OAAO,GAAG,CAAC,qCAAqC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC;AACrgB,MAAC,WAAW,GAAG,CAAC,gDAAgD,CAAC,uCAAuC;AACxG,MAAC,KAAK,GAAG;;;;"}
1
+ {"version":3,"file":"10-CRHtvb_u.js","sources":["../../../.svelte-kit/adapter-node/nodes/10.js"],"sourcesContent":["\n\nexport const index = 10;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/terminals/_page.svelte.js')).default;\nexport const imports = [\"_app/immutable/nodes/10.6V-37_Rl.js\",\"_app/immutable/chunks/DoGIJDSZ.js\",\"_app/immutable/chunks/kzeZOqU5.js\",\"_app/immutable/chunks/aiM7Bbhi.js\",\"_app/immutable/chunks/BQJR1fvD.js\",\"_app/immutable/chunks/ssAhjWfF.js\",\"_app/immutable/chunks/etLjvmY8.js\",\"_app/immutable/chunks/CG453M9q.js\",\"_app/immutable/chunks/CSjf4fBs.js\",\"_app/immutable/chunks/xs1Xl3_e.js\",\"_app/immutable/chunks/gQJcRhou.js\",\"_app/immutable/chunks/Dk1NUsIU.js\",\"_app/immutable/chunks/BdtLzPpO.js\",\"_app/immutable/chunks/DFa6kKPT.js\"];\nexport const stylesheets = [\"_app/immutable/assets/ColorPicker.CV4IKef4.css\",\"_app/immutable/assets/10.BhoBXADL.css\"];\nexport const fonts = [];\n"],"names":[],"mappings":"AAEY,MAAC,KAAK,GAAG;AACrB,IAAI,eAAe;AACP,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,4BAA4C,CAAC,EAAE;AAC1G,MAAC,OAAO,GAAG,CAAC,qCAAqC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC;AACrgB,MAAC,WAAW,GAAG,CAAC,gDAAgD,CAAC,uCAAuC;AACxG,MAAC,KAAK,GAAG;;;;"}
@@ -1,9 +1,9 @@
1
1
  const index = 11;
2
2
  let component_cache;
3
3
  const component = async () => component_cache ??= (await import('./_page.svelte-B7_oMI0l.js')).default;
4
- const imports = ["_app/immutable/nodes/11.DUKnn5ja.js","_app/immutable/chunks/PPVm8Dsz.js","_app/immutable/chunks/DoGIJDSZ.js","_app/immutable/chunks/kzeZOqU5.js","_app/immutable/chunks/BQJR1fvD.js","_app/immutable/chunks/aiM7Bbhi.js","_app/immutable/chunks/BPIV28L3.js","_app/immutable/chunks/BBuzUXZ9.js","_app/immutable/chunks/DzuS5Nbr.js","_app/immutable/chunks/Dk1NUsIU.js","_app/immutable/chunks/BdtLzPpO.js","_app/immutable/chunks/oIHVoAuz.js","_app/immutable/chunks/DcXdn821.js","_app/immutable/chunks/gQJcRhou.js","_app/immutable/chunks/DFa6kKPT.js"];
4
+ const imports = ["_app/immutable/nodes/11.Lzf-KC6L.js","_app/immutable/chunks/PPVm8Dsz.js","_app/immutable/chunks/DoGIJDSZ.js","_app/immutable/chunks/kzeZOqU5.js","_app/immutable/chunks/BQJR1fvD.js","_app/immutable/chunks/aiM7Bbhi.js","_app/immutable/chunks/ssAhjWfF.js","_app/immutable/chunks/BstJSK2K.js","_app/immutable/chunks/DzuS5Nbr.js","_app/immutable/chunks/Dk1NUsIU.js","_app/immutable/chunks/BdtLzPpO.js","_app/immutable/chunks/oIHVoAuz.js","_app/immutable/chunks/DcXdn821.js","_app/immutable/chunks/gQJcRhou.js","_app/immutable/chunks/DFa6kKPT.js"];
5
5
  const stylesheets = ["_app/immutable/assets/ColorPicker.CV4IKef4.css","_app/immutable/assets/ChatView.Bnlg-oAF.css","_app/immutable/assets/11.F10lvwyh.css"];
6
6
  const fonts = [];
7
7
 
8
8
  export { component, fonts, imports, index, stylesheets };
9
- //# sourceMappingURL=11-DOJ9j7KC.js.map
9
+ //# sourceMappingURL=11-CdSex9j1.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"11-DOJ9j7KC.js","sources":["../../../.svelte-kit/adapter-node/nodes/11.js"],"sourcesContent":["\n\nexport const index = 11;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/terminals/_id_/_page.svelte.js')).default;\nexport const imports = [\"_app/immutable/nodes/11.DUKnn5ja.js\",\"_app/immutable/chunks/PPVm8Dsz.js\",\"_app/immutable/chunks/DoGIJDSZ.js\",\"_app/immutable/chunks/kzeZOqU5.js\",\"_app/immutable/chunks/BQJR1fvD.js\",\"_app/immutable/chunks/aiM7Bbhi.js\",\"_app/immutable/chunks/BPIV28L3.js\",\"_app/immutable/chunks/BBuzUXZ9.js\",\"_app/immutable/chunks/DzuS5Nbr.js\",\"_app/immutable/chunks/Dk1NUsIU.js\",\"_app/immutable/chunks/BdtLzPpO.js\",\"_app/immutable/chunks/oIHVoAuz.js\",\"_app/immutable/chunks/DcXdn821.js\",\"_app/immutable/chunks/gQJcRhou.js\",\"_app/immutable/chunks/DFa6kKPT.js\"];\nexport const stylesheets = [\"_app/immutable/assets/ColorPicker.CV4IKef4.css\",\"_app/immutable/assets/ChatView.Bnlg-oAF.css\",\"_app/immutable/assets/11.F10lvwyh.css\"];\nexport const fonts = [];\n"],"names":[],"mappings":"AAEY,MAAC,KAAK,GAAG;AACrB,IAAI,eAAe;AACP,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,4BAAiD,CAAC,EAAE;AAC/G,MAAC,OAAO,GAAG,CAAC,qCAAqC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC;AACziB,MAAC,WAAW,GAAG,CAAC,gDAAgD,CAAC,6CAA6C,CAAC,uCAAuC;AACtJ,MAAC,KAAK,GAAG;;;;"}
1
+ {"version":3,"file":"11-CdSex9j1.js","sources":["../../../.svelte-kit/adapter-node/nodes/11.js"],"sourcesContent":["\n\nexport const index = 11;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/terminals/_id_/_page.svelte.js')).default;\nexport const imports = [\"_app/immutable/nodes/11.Lzf-KC6L.js\",\"_app/immutable/chunks/PPVm8Dsz.js\",\"_app/immutable/chunks/DoGIJDSZ.js\",\"_app/immutable/chunks/kzeZOqU5.js\",\"_app/immutable/chunks/BQJR1fvD.js\",\"_app/immutable/chunks/aiM7Bbhi.js\",\"_app/immutable/chunks/ssAhjWfF.js\",\"_app/immutable/chunks/BstJSK2K.js\",\"_app/immutable/chunks/DzuS5Nbr.js\",\"_app/immutable/chunks/Dk1NUsIU.js\",\"_app/immutable/chunks/BdtLzPpO.js\",\"_app/immutable/chunks/oIHVoAuz.js\",\"_app/immutable/chunks/DcXdn821.js\",\"_app/immutable/chunks/gQJcRhou.js\",\"_app/immutable/chunks/DFa6kKPT.js\"];\nexport const stylesheets = [\"_app/immutable/assets/ColorPicker.CV4IKef4.css\",\"_app/immutable/assets/ChatView.Bnlg-oAF.css\",\"_app/immutable/assets/11.F10lvwyh.css\"];\nexport const fonts = [];\n"],"names":[],"mappings":"AAEY,MAAC,KAAK,GAAG;AACrB,IAAI,eAAe;AACP,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,4BAAiD,CAAC,EAAE;AAC/G,MAAC,OAAO,GAAG,CAAC,qCAAqC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC;AACziB,MAAC,WAAW,GAAG,CAAC,gDAAgD,CAAC,6CAA6C,CAAC,uCAAuC;AACtJ,MAAC,KAAK,GAAG;;;;"}
@@ -13,9 +13,9 @@ const index = 2;
13
13
  let component_cache;
14
14
  const component = async () => component_cache ??= (await import('./_page.svelte-CMryWeEG.js')).default;
15
15
  const server_id = "src/routes/+page.server.ts";
16
- const imports = ["_app/immutable/nodes/2.C37CZKYv.js","_app/immutable/chunks/DoGIJDSZ.js","_app/immutable/chunks/kzeZOqU5.js","_app/immutable/chunks/aiM7Bbhi.js","_app/immutable/chunks/BQJR1fvD.js","_app/immutable/chunks/BPIV28L3.js","_app/immutable/chunks/Bn-6X1BO.js","_app/immutable/chunks/etLjvmY8.js","_app/immutable/chunks/CG453M9q.js","_app/immutable/chunks/xs1Xl3_e.js","_app/immutable/chunks/gQJcRhou.js","_app/immutable/chunks/Dk1NUsIU.js","_app/immutable/chunks/BLszSzTT.js","_app/immutable/chunks/DcXdn821.js","_app/immutable/chunks/CnsJhNGt.js","_app/immutable/chunks/C87ZRWX0.js","_app/immutable/chunks/DFa6kKPT.js"];
16
+ const imports = ["_app/immutable/nodes/2.Cl2dMP2L.js","_app/immutable/chunks/DoGIJDSZ.js","_app/immutable/chunks/kzeZOqU5.js","_app/immutable/chunks/aiM7Bbhi.js","_app/immutable/chunks/BQJR1fvD.js","_app/immutable/chunks/ssAhjWfF.js","_app/immutable/chunks/Bn-6X1BO.js","_app/immutable/chunks/etLjvmY8.js","_app/immutable/chunks/CG453M9q.js","_app/immutable/chunks/xs1Xl3_e.js","_app/immutable/chunks/gQJcRhou.js","_app/immutable/chunks/Dk1NUsIU.js","_app/immutable/chunks/BLszSzTT.js","_app/immutable/chunks/DcXdn821.js","_app/immutable/chunks/CnsJhNGt.js","_app/immutable/chunks/C87ZRWX0.js","_app/immutable/chunks/DFa6kKPT.js"];
17
17
  const stylesheets = ["_app/immutable/assets/ColorPicker.CV4IKef4.css","_app/immutable/assets/2.JWRrnR-w.css"];
18
18
  const fonts = [];
19
19
 
20
20
  export { component, fonts, imports, index, _page_server_ts as server, server_id, stylesheets };
21
- //# sourceMappingURL=2-BY0LGSMl.js.map
21
+ //# sourceMappingURL=2-bb78aIZ6.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"2-BY0LGSMl.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/_page.server.ts.js","../../../.svelte-kit/adapter-node/nodes/2.js"],"sourcesContent":["import { b as private_env } from \"../../chunks/shared-server.js\";\nconst load = () => ({\n googleAiConfigured: Boolean(private_env.GOOGLE_AI_API_KEY?.trim())\n});\nexport {\n load\n};\n","import * as server from '../entries/pages/_page.server.ts.js';\n\nexport const index = 2;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/_page.svelte.js')).default;\nexport { server };\nexport const server_id = \"src/routes/+page.server.ts\";\nexport const imports = [\"_app/immutable/nodes/2.C37CZKYv.js\",\"_app/immutable/chunks/DoGIJDSZ.js\",\"_app/immutable/chunks/kzeZOqU5.js\",\"_app/immutable/chunks/aiM7Bbhi.js\",\"_app/immutable/chunks/BQJR1fvD.js\",\"_app/immutable/chunks/BPIV28L3.js\",\"_app/immutable/chunks/Bn-6X1BO.js\",\"_app/immutable/chunks/etLjvmY8.js\",\"_app/immutable/chunks/CG453M9q.js\",\"_app/immutable/chunks/xs1Xl3_e.js\",\"_app/immutable/chunks/gQJcRhou.js\",\"_app/immutable/chunks/Dk1NUsIU.js\",\"_app/immutable/chunks/BLszSzTT.js\",\"_app/immutable/chunks/DcXdn821.js\",\"_app/immutable/chunks/CnsJhNGt.js\",\"_app/immutable/chunks/C87ZRWX0.js\",\"_app/immutable/chunks/DFa6kKPT.js\"];\nexport const stylesheets = [\"_app/immutable/assets/ColorPicker.CV4IKef4.css\",\"_app/immutable/assets/2.JWRrnR-w.css\"];\nexport const fonts = [];\n"],"names":[],"mappings":";;AACA,MAAM,IAAI,GAAG,OAAO;AACpB,EAAE,kBAAkB,EAAE,OAAO,CAAC,WAAW,CAAC,iBAAiB,EAAE,IAAI,EAAE;AACnE,CAAC,CAAC;;;;;;;ACDU,MAAC,KAAK,GAAG;AACrB,IAAI,eAAe;AACP,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,4BAAkC,CAAC,EAAE;AAEhG,MAAC,SAAS,GAAG;AACb,MAAC,OAAO,GAAG,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC;AAChnB,MAAC,WAAW,GAAG,CAAC,gDAAgD,CAAC,sCAAsC;AACvG,MAAC,KAAK,GAAG;;;;"}
1
+ {"version":3,"file":"2-bb78aIZ6.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/_page.server.ts.js","../../../.svelte-kit/adapter-node/nodes/2.js"],"sourcesContent":["import { b as private_env } from \"../../chunks/shared-server.js\";\nconst load = () => ({\n googleAiConfigured: Boolean(private_env.GOOGLE_AI_API_KEY?.trim())\n});\nexport {\n load\n};\n","import * as server from '../entries/pages/_page.server.ts.js';\n\nexport const index = 2;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/_page.svelte.js')).default;\nexport { server };\nexport const server_id = \"src/routes/+page.server.ts\";\nexport const imports = [\"_app/immutable/nodes/2.Cl2dMP2L.js\",\"_app/immutable/chunks/DoGIJDSZ.js\",\"_app/immutable/chunks/kzeZOqU5.js\",\"_app/immutable/chunks/aiM7Bbhi.js\",\"_app/immutable/chunks/BQJR1fvD.js\",\"_app/immutable/chunks/ssAhjWfF.js\",\"_app/immutable/chunks/Bn-6X1BO.js\",\"_app/immutable/chunks/etLjvmY8.js\",\"_app/immutable/chunks/CG453M9q.js\",\"_app/immutable/chunks/xs1Xl3_e.js\",\"_app/immutable/chunks/gQJcRhou.js\",\"_app/immutable/chunks/Dk1NUsIU.js\",\"_app/immutable/chunks/BLszSzTT.js\",\"_app/immutable/chunks/DcXdn821.js\",\"_app/immutable/chunks/CnsJhNGt.js\",\"_app/immutable/chunks/C87ZRWX0.js\",\"_app/immutable/chunks/DFa6kKPT.js\"];\nexport const stylesheets = [\"_app/immutable/assets/ColorPicker.CV4IKef4.css\",\"_app/immutable/assets/2.JWRrnR-w.css\"];\nexport const fonts = [];\n"],"names":[],"mappings":";;AACA,MAAM,IAAI,GAAG,OAAO;AACpB,EAAE,kBAAkB,EAAE,OAAO,CAAC,WAAW,CAAC,iBAAiB,EAAE,IAAI,EAAE;AACnE,CAAC,CAAC;;;;;;;ACDU,MAAC,KAAK,GAAG;AACrB,IAAI,eAAe;AACP,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,4BAAkC,CAAC,EAAE;AAEhG,MAAC,SAAS,GAAG;AACb,MAAC,OAAO,GAAG,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC;AAChnB,MAAC,WAAW,GAAG,CAAC,gDAAgD,CAAC,sCAAsC;AACvG,MAAC,KAAK,GAAG;;;;"}
@@ -13,9 +13,9 @@ const index = 3;
13
13
  let component_cache;
14
14
  const component = async () => component_cache ??= (await import('./_page.svelte-svT4jMLg.js')).default;
15
15
  const server_id = "src/routes/activity/+page.server.ts";
16
- const imports = ["_app/immutable/nodes/3.C48G514u.js","_app/immutable/chunks/DoGIJDSZ.js","_app/immutable/chunks/kzeZOqU5.js","_app/immutable/chunks/BQJR1fvD.js","_app/immutable/chunks/BPIV28L3.js","_app/immutable/chunks/aiM7Bbhi.js","_app/immutable/chunks/gQJcRhou.js","_app/immutable/chunks/Dk1NUsIU.js","_app/immutable/chunks/BLszSzTT.js","_app/immutable/chunks/DcXdn821.js","_app/immutable/chunks/CnsJhNGt.js","_app/immutable/chunks/C87ZRWX0.js"];
16
+ const imports = ["_app/immutable/nodes/3.CuX2eSna.js","_app/immutable/chunks/DoGIJDSZ.js","_app/immutable/chunks/kzeZOqU5.js","_app/immutable/chunks/BQJR1fvD.js","_app/immutable/chunks/ssAhjWfF.js","_app/immutable/chunks/aiM7Bbhi.js","_app/immutable/chunks/gQJcRhou.js","_app/immutable/chunks/Dk1NUsIU.js","_app/immutable/chunks/BLszSzTT.js","_app/immutable/chunks/DcXdn821.js","_app/immutable/chunks/CnsJhNGt.js","_app/immutable/chunks/C87ZRWX0.js"];
17
17
  const stylesheets = ["_app/immutable/assets/ColorPicker.CV4IKef4.css","_app/immutable/assets/3.DHxQoulp.css"];
18
18
  const fonts = [];
19
19
 
20
20
  export { component, fonts, imports, index, _page_server_ts as server, server_id, stylesheets };
21
- //# sourceMappingURL=3-DEa6RtDT.js.map
21
+ //# sourceMappingURL=3-CsTC6Lrn.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"3-DEa6RtDT.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/activity/_page.server.ts.js","../../../.svelte-kit/adapter-node/nodes/3.js"],"sourcesContent":["import { b as private_env } from \"../../../chunks/shared-server.js\";\nconst load = () => ({\n googleAiConfigured: Boolean(private_env.GOOGLE_AI_API_KEY?.trim())\n});\nexport {\n load\n};\n","import * as server from '../entries/pages/activity/_page.server.ts.js';\n\nexport const index = 3;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/activity/_page.svelte.js')).default;\nexport { server };\nexport const server_id = \"src/routes/activity/+page.server.ts\";\nexport const imports = [\"_app/immutable/nodes/3.C48G514u.js\",\"_app/immutable/chunks/DoGIJDSZ.js\",\"_app/immutable/chunks/kzeZOqU5.js\",\"_app/immutable/chunks/BQJR1fvD.js\",\"_app/immutable/chunks/BPIV28L3.js\",\"_app/immutable/chunks/aiM7Bbhi.js\",\"_app/immutable/chunks/gQJcRhou.js\",\"_app/immutable/chunks/Dk1NUsIU.js\",\"_app/immutable/chunks/BLszSzTT.js\",\"_app/immutable/chunks/DcXdn821.js\",\"_app/immutable/chunks/CnsJhNGt.js\",\"_app/immutable/chunks/C87ZRWX0.js\"];\nexport const stylesheets = [\"_app/immutable/assets/ColorPicker.CV4IKef4.css\",\"_app/immutable/assets/3.DHxQoulp.css\"];\nexport const fonts = [];\n"],"names":[],"mappings":";;AACA,MAAM,IAAI,GAAG,OAAO;AACpB,EAAE,kBAAkB,EAAE,OAAO,CAAC,WAAW,CAAC,iBAAiB,EAAE,IAAI,EAAE;AACnE,CAAC,CAAC;;;;;;;ACDU,MAAC,KAAK,GAAG;AACrB,IAAI,eAAe;AACP,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,4BAA2C,CAAC,EAAE;AAEzG,MAAC,SAAS,GAAG;AACb,MAAC,OAAO,GAAG,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC;AAC5b,MAAC,WAAW,GAAG,CAAC,gDAAgD,CAAC,sCAAsC;AACvG,MAAC,KAAK,GAAG;;;;"}
1
+ {"version":3,"file":"3-CsTC6Lrn.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/activity/_page.server.ts.js","../../../.svelte-kit/adapter-node/nodes/3.js"],"sourcesContent":["import { b as private_env } from \"../../../chunks/shared-server.js\";\nconst load = () => ({\n googleAiConfigured: Boolean(private_env.GOOGLE_AI_API_KEY?.trim())\n});\nexport {\n load\n};\n","import * as server from '../entries/pages/activity/_page.server.ts.js';\n\nexport const index = 3;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/activity/_page.svelte.js')).default;\nexport { server };\nexport const server_id = \"src/routes/activity/+page.server.ts\";\nexport const imports = [\"_app/immutable/nodes/3.CuX2eSna.js\",\"_app/immutable/chunks/DoGIJDSZ.js\",\"_app/immutable/chunks/kzeZOqU5.js\",\"_app/immutable/chunks/BQJR1fvD.js\",\"_app/immutable/chunks/ssAhjWfF.js\",\"_app/immutable/chunks/aiM7Bbhi.js\",\"_app/immutable/chunks/gQJcRhou.js\",\"_app/immutable/chunks/Dk1NUsIU.js\",\"_app/immutable/chunks/BLszSzTT.js\",\"_app/immutable/chunks/DcXdn821.js\",\"_app/immutable/chunks/CnsJhNGt.js\",\"_app/immutable/chunks/C87ZRWX0.js\"];\nexport const stylesheets = [\"_app/immutable/assets/ColorPicker.CV4IKef4.css\",\"_app/immutable/assets/3.DHxQoulp.css\"];\nexport const fonts = [];\n"],"names":[],"mappings":";;AACA,MAAM,IAAI,GAAG,OAAO;AACpB,EAAE,kBAAkB,EAAE,OAAO,CAAC,WAAW,CAAC,iBAAiB,EAAE,IAAI,EAAE;AACnE,CAAC,CAAC;;;;;;;ACDU,MAAC,KAAK,GAAG;AACrB,IAAI,eAAe;AACP,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,4BAA2C,CAAC,EAAE;AAEzG,MAAC,SAAS,GAAG;AACb,MAAC,OAAO,GAAG,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC;AAC5b,MAAC,WAAW,GAAG,CAAC,gDAAgD,CAAC,sCAAsC;AACvG,MAAC,KAAK,GAAG;;;;"}
@@ -13,11 +13,11 @@ var _page_server_ts = /*#__PURE__*/Object.freeze({
13
13
 
14
14
  const index = 4;
15
15
  let component_cache;
16
- const component = async () => component_cache ??= (await import('./_page.svelte-DDE2nChH.js')).default;
16
+ const component = async () => component_cache ??= (await import('./_page.svelte-BBbaKwNz.js')).default;
17
17
  const server_id = "src/routes/config/+page.server.ts";
18
- const imports = ["_app/immutable/nodes/4.C9fv_m2R.js","_app/immutable/chunks/DoGIJDSZ.js","_app/immutable/chunks/kzeZOqU5.js","_app/immutable/chunks/aiM7Bbhi.js","_app/immutable/chunks/BQJR1fvD.js","_app/immutable/chunks/DzuS5Nbr.js","_app/immutable/chunks/gQJcRhou.js","_app/immutable/chunks/Dk1NUsIU.js","_app/immutable/chunks/C87ZRWX0.js"];
19
- const stylesheets = ["_app/immutable/assets/ColorPicker.CV4IKef4.css","_app/immutable/assets/4.D4EDSN4H.css"];
18
+ const imports = ["_app/immutable/nodes/4.2DvqoOaB.js","_app/immutable/chunks/DoGIJDSZ.js","_app/immutable/chunks/kzeZOqU5.js","_app/immutable/chunks/aiM7Bbhi.js","_app/immutable/chunks/BQJR1fvD.js","_app/immutable/chunks/DzuS5Nbr.js","_app/immutable/chunks/gQJcRhou.js","_app/immutable/chunks/Dk1NUsIU.js","_app/immutable/chunks/C87ZRWX0.js"];
19
+ const stylesheets = ["_app/immutable/assets/ColorPicker.CV4IKef4.css","_app/immutable/assets/4.ChO_hlLs.css"];
20
20
  const fonts = [];
21
21
 
22
22
  export { component, fonts, imports, index, _page_server_ts as server, server_id, stylesheets };
23
- //# sourceMappingURL=4-w2W_T8ax.js.map
23
+ //# sourceMappingURL=4-DTTu8_Gr.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"4-w2W_T8ax.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/config/_page.server.ts.js","../../../.svelte-kit/adapter-node/nodes/4.js"],"sourcesContent":["import { b as private_env } from \"../../../chunks/shared-server.js\";\nimport { g as getProviderAvailability } from \"../../../chunks/providers.js\";\nconst load = () => ({\n activeProvider: private_env.NEUROLINK_PROVIDER ?? \"\",\n aiProviders: getProviderAvailability(private_env)\n});\nexport {\n load\n};\n","import * as server from '../entries/pages/config/_page.server.ts.js';\n\nexport const index = 4;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/config/_page.svelte.js')).default;\nexport { server };\nexport const server_id = \"src/routes/config/+page.server.ts\";\nexport const imports = [\"_app/immutable/nodes/4.C9fv_m2R.js\",\"_app/immutable/chunks/DoGIJDSZ.js\",\"_app/immutable/chunks/kzeZOqU5.js\",\"_app/immutable/chunks/aiM7Bbhi.js\",\"_app/immutable/chunks/BQJR1fvD.js\",\"_app/immutable/chunks/DzuS5Nbr.js\",\"_app/immutable/chunks/gQJcRhou.js\",\"_app/immutable/chunks/Dk1NUsIU.js\",\"_app/immutable/chunks/C87ZRWX0.js\"];\nexport const stylesheets = [\"_app/immutable/assets/ColorPicker.CV4IKef4.css\",\"_app/immutable/assets/4.D4EDSN4H.css\"];\nexport const fonts = [];\n"],"names":[],"mappings":";;;AAEA,MAAM,IAAI,GAAG,OAAO;AACpB,EAAE,cAAc,EAAE,WAAW,CAAC,kBAAkB,IAAI,EAAE;AACtD,EAAE,WAAW,EAAE,uBAAuB,CAAC,WAAW;AAClD,CAAC,CAAC;;;;;;;ACHU,MAAC,KAAK,GAAG;AACrB,IAAI,eAAe;AACP,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,4BAAyC,CAAC,EAAE;AAEvG,MAAC,SAAS,GAAG;AACb,MAAC,OAAO,GAAG,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC;AAChV,MAAC,WAAW,GAAG,CAAC,gDAAgD,CAAC,sCAAsC;AACvG,MAAC,KAAK,GAAG;;;;"}
1
+ {"version":3,"file":"4-DTTu8_Gr.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/config/_page.server.ts.js","../../../.svelte-kit/adapter-node/nodes/4.js"],"sourcesContent":["import { b as private_env } from \"../../../chunks/shared-server.js\";\nimport { g as getProviderAvailability } from \"../../../chunks/providers.js\";\nconst load = () => ({\n activeProvider: private_env.NEUROLINK_PROVIDER ?? \"\",\n aiProviders: getProviderAvailability(private_env)\n});\nexport {\n load\n};\n","import * as server from '../entries/pages/config/_page.server.ts.js';\n\nexport const index = 4;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/config/_page.svelte.js')).default;\nexport { server };\nexport const server_id = \"src/routes/config/+page.server.ts\";\nexport const imports = [\"_app/immutable/nodes/4.2DvqoOaB.js\",\"_app/immutable/chunks/DoGIJDSZ.js\",\"_app/immutable/chunks/kzeZOqU5.js\",\"_app/immutable/chunks/aiM7Bbhi.js\",\"_app/immutable/chunks/BQJR1fvD.js\",\"_app/immutable/chunks/DzuS5Nbr.js\",\"_app/immutable/chunks/gQJcRhou.js\",\"_app/immutable/chunks/Dk1NUsIU.js\",\"_app/immutable/chunks/C87ZRWX0.js\"];\nexport const stylesheets = [\"_app/immutable/assets/ColorPicker.CV4IKef4.css\",\"_app/immutable/assets/4.ChO_hlLs.css\"];\nexport const fonts = [];\n"],"names":[],"mappings":";;;AAEA,MAAM,IAAI,GAAG,OAAO;AACpB,EAAE,cAAc,EAAE,WAAW,CAAC,kBAAkB,IAAI,EAAE;AACtD,EAAE,WAAW,EAAE,uBAAuB,CAAC,WAAW;AAClD,CAAC,CAAC;;;;;;;ACHU,MAAC,KAAK,GAAG;AACrB,IAAI,eAAe;AACP,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,4BAAyC,CAAC,EAAE;AAEvG,MAAC,SAAS,GAAG;AACb,MAAC,OAAO,GAAG,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC;AAChV,MAAC,WAAW,GAAG,CAAC,gDAAgD,CAAC,sCAAsC;AACvG,MAAC,KAAK,GAAG;;;;"}
@@ -1,9 +1,9 @@
1
1
  const index = 6;
2
2
  let component_cache;
3
3
  const component = async () => component_cache ??= (await import('./_page.svelte-BB3pLObN.js')).default;
4
- const imports = ["_app/immutable/nodes/6.DGlutNk6.js","_app/immutable/chunks/DoGIJDSZ.js","_app/immutable/chunks/kzeZOqU5.js","_app/immutable/chunks/aiM7Bbhi.js","_app/immutable/chunks/BQJR1fvD.js","_app/immutable/chunks/BPIV28L3.js","_app/immutable/chunks/Dqmsaccg.js","_app/immutable/chunks/DzuS5Nbr.js","_app/immutable/chunks/Bn-6X1BO.js","_app/immutable/chunks/etLjvmY8.js","_app/immutable/chunks/xs1Xl3_e.js","_app/immutable/chunks/gQJcRhou.js","_app/immutable/chunks/Dk1NUsIU.js","_app/immutable/chunks/BdtLzPpO.js","_app/immutable/chunks/BLszSzTT.js","_app/immutable/chunks/DFa6kKPT.js"];
4
+ const imports = ["_app/immutable/nodes/6.C7e6zQyP.js","_app/immutable/chunks/DoGIJDSZ.js","_app/immutable/chunks/kzeZOqU5.js","_app/immutable/chunks/aiM7Bbhi.js","_app/immutable/chunks/BQJR1fvD.js","_app/immutable/chunks/ssAhjWfF.js","_app/immutable/chunks/DINqYbXU.js","_app/immutable/chunks/DzuS5Nbr.js","_app/immutable/chunks/Bn-6X1BO.js","_app/immutable/chunks/etLjvmY8.js","_app/immutable/chunks/xs1Xl3_e.js","_app/immutable/chunks/gQJcRhou.js","_app/immutable/chunks/Dk1NUsIU.js","_app/immutable/chunks/BdtLzPpO.js","_app/immutable/chunks/BLszSzTT.js","_app/immutable/chunks/DFa6kKPT.js"];
5
5
  const stylesheets = ["_app/immutable/assets/ColorPicker.CV4IKef4.css","_app/immutable/assets/6.DzV0p3l-.css"];
6
6
  const fonts = [];
7
7
 
8
8
  export { component, fonts, imports, index, stylesheets };
9
- //# sourceMappingURL=6-DoTu6ygH.js.map
9
+ //# sourceMappingURL=6-BUgQGB_4.js.map