sliccy 5.64.0 → 5.65.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 (71) hide show
  1. package/dist/node-server/_cloud_core/tests/e2b-workerd-patch.test.d.ts +2 -0
  2. package/dist/node-server/_cloud_core/tests/e2b-workerd-patch.test.d.ts.map +1 -0
  3. package/dist/node-server/_cloud_core/tests/e2b-workerd-patch.test.js +27 -0
  4. package/dist/node-server/_shared/tray-sync-protocol.d.ts +15 -0
  5. package/dist/node-server/_shared/tray-sync-protocol.d.ts.map +1 -1
  6. package/dist/node-server/_shared/tray-sync-protocol.js.map +1 -1
  7. package/dist/ui/assets/{account-store-0KfyaB_Y.js → account-store-CK-N94Ou.js} +1 -1
  8. package/dist/ui/assets/{account-store-O8B4A1Cp.js → account-store-DBH6AYjF.js} +1 -1
  9. package/dist/ui/assets/{adobe-BA1lmOYx.js → adobe-BYSVTvmv.js} +1 -1
  10. package/dist/ui/assets/{adobe-DPWNL1tn.js → adobe-Byh9WsIW.js} +1 -1
  11. package/dist/ui/assets/{apps--X4sn_V2.js → apps-uHATN2fM.js} +1 -1
  12. package/dist/ui/assets/{azure-openai-DWNTc7zl.js → azure-openai-C1XJjbYl.js} +1 -1
  13. package/dist/ui/assets/{azure-openai-DG3rPUFz.js → azure-openai-WkZ8spz3.js} +1 -1
  14. package/dist/ui/assets/{cerebras-D8FzL0rQ.js → cerebras-DA8bHzeO.js} +1 -1
  15. package/dist/ui/assets/{cerebras-_3t84WRb.js → cerebras-d6g3fFrY.js} +1 -1
  16. package/dist/ui/assets/{connect-surface-DaZKS0Lr.js → connect-surface-C-sQsVm2.js} +1 -1
  17. package/dist/ui/assets/{fs-DVjU94G5.js → fs-BAbgPf5q.js} +1 -1
  18. package/dist/ui/assets/{fs-Bu2r8jU8.js → fs-D7BpCwRt.js} +2 -2
  19. package/dist/ui/assets/{github-DBqthTVS.js → github-68iLVdCs.js} +1 -1
  20. package/dist/ui/assets/{github-IAPS6ldF.js → github-BnId_hvT.js} +2 -2
  21. package/dist/ui/assets/{github-copilot-CYCZVUKg.js → github-copilot-CU-jRR03.js} +1 -1
  22. package/dist/ui/assets/{github-copilot-BCnsU1ES.js → github-copilot-Ctek3hky.js} +1 -1
  23. package/dist/ui/assets/{kernel-worker-DwA7Ndre.js → kernel-worker-D2aGb_82.js} +18 -18
  24. package/dist/ui/assets/leader-session-events-m7I5BMZy.js +1 -0
  25. package/dist/ui/assets/{lick-ws-bridge-BkMe-xPV.js → lick-ws-bridge-CJh2_Uld.js} +1 -1
  26. package/dist/ui/assets/{local-llm-BW8Tu5rb.js → local-llm-C00fbHJr.js} +1 -1
  27. package/dist/ui/assets/{local-llm-BaiaM-eK.js → local-llm-CPSWctNS.js} +1 -1
  28. package/dist/ui/assets/{main-BtekKitA.js → main-CmZaYL6M.js} +3 -3
  29. package/dist/ui/assets/{mount-DXVsSVpg.js → mount-BO2basnO.js} +2 -2
  30. package/dist/ui/assets/{mount-YiUVBgZj.js → mount-FCXht0UA.js} +1 -1
  31. package/dist/ui/assets/{mount-recovery-B98mAfuD.js → mount-recovery-Bbg4vjsg.js} +1 -1
  32. package/dist/ui/assets/{new-session-C7oDK2Kk.js → new-session-fSh3JDic.js} +2 -2
  33. package/dist/ui/assets/{oauth-bootstrap-B_ydSM5a.js → oauth-bootstrap-C6MrQSJ4.js} +2 -2
  34. package/dist/ui/assets/{openai-codex-Cx2WiSHz.js → openai-codex-B_EviANH.js} +1 -1
  35. package/dist/ui/assets/{openai-codex-Dx55_uE7.js → openai-codex-Bd8504PC.js} +1 -1
  36. package/dist/ui/assets/page-follower-tray-CuPgRSdw.js +5 -0
  37. package/dist/ui/assets/{panel-rpc-handlers-g-IcBZgz.js → panel-rpc-handlers-rjB40MzJ.js} +2 -2
  38. package/dist/ui/assets/{provider-D7tuUspk.js → provider-DQbRhNCb.js} +2 -2
  39. package/dist/ui/assets/{provider-DlfrkDnN.js → provider-DXYk5b_-.js} +1 -1
  40. package/dist/ui/assets/{provider-settings-DXZqWMxH.js → provider-settings-AHSP9_xw.js} +1 -1
  41. package/dist/ui/assets/{provider-settings-CLFfVTte.js → provider-settings-BAQroSjB.js} +1 -1
  42. package/dist/ui/assets/provider-store-access-CBm2YBYD.js +1 -0
  43. package/dist/ui/assets/{provider-store-access-B48zmrjF.js → provider-store-access-CX6QCCkY.js} +2 -2
  44. package/dist/ui/assets/{providers-DSGqRskI.js → providers-CMlMnOkB.js} +1 -1
  45. package/dist/ui/assets/{providers-C5IxOdJy.js → providers-lerk0za2.js} +2 -2
  46. package/dist/ui/assets/{quick-llm-DEwzmM-S.js → quick-llm-B7BQQiYz.js} +1 -1
  47. package/dist/ui/assets/{session-freezer-DdYYo55y.js → session-freezer-81utLS2y.js} +2 -2
  48. package/dist/ui/assets/{setup-sudo-CpuvPX2I.js → setup-sudo-h7qRDT2t.js} +2 -2
  49. package/dist/ui/assets/{skills-CllGu9dI.js → skills-AlJ6rIGf.js} +1 -1
  50. package/dist/ui/assets/{store-DJbSm8Z_.js → store-D5jYcqHh.js} +1 -1
  51. package/dist/ui/assets/{sudo-xF6nYDZf.js → sudo-FsW0M_G3.js} +1 -1
  52. package/dist/ui/assets/{upgrade-detection-Cein6N3L.js → upgrade-detection-B4owg_Xz.js} +1 -1
  53. package/dist/ui/assets/{wc-extension-D3wWW1XJ.js → wc-extension-7TX44Qkh.js} +2 -2
  54. package/dist/ui/assets/{wc-follower-DwatFMHA.js → wc-follower-C--23seG.js} +3 -3
  55. package/dist/ui/assets/wc-live-CUrQxCqR.js +8 -0
  56. package/dist/ui/assets/{wc-nav-wVpt4FYo.js → wc-nav-BDEr5OE6.js} +2 -2
  57. package/dist/ui/assets/{wc-onboarding-B5Jx6i_M.js → wc-onboarding-2Kx6qZhM.js} +2 -2
  58. package/dist/ui/assets/{wc-placeholder-DJEXeUOp.js → wc-placeholder-DxR1_zlj.js} +2 -2
  59. package/dist/ui/assets/{wc-settings-HdKp6PRa.js → wc-settings-C91mtm3p.js} +2 -2
  60. package/dist/ui/assets/{wc-shell-BcLe36CI.js → wc-shell-BSCmpIWS.js} +2 -2
  61. package/dist/ui/assets/{wc-sprinkles-Ce05-7PD.js → wc-sprinkles-Dn2Fn2mr.js} +2 -2
  62. package/dist/ui/assets/wc-tray-BV5t38Gb.js +2 -0
  63. package/dist/ui/assets/{xai-grok-170AT997.js → xai-grok-CI55pQsA.js} +1 -1
  64. package/dist/ui/assets/{xai-grok-C2qHyLFl.js → xai-grok-EQeZdJC8.js} +1 -1
  65. package/dist/ui/index.html +5 -5
  66. package/dist/ui/packages/webapp/index.html +5 -5
  67. package/package.json +2 -2
  68. package/dist/ui/assets/page-follower-tray-DFeLlotx.js +0 -5
  69. package/dist/ui/assets/provider-store-access-2_FnhYqS.js +0 -1
  70. package/dist/ui/assets/wc-live-DcaNrDBs.js +0 -8
  71. package/dist/ui/assets/wc-tray-CLX4el5K.js +0 -2
@@ -1,4 +1,4 @@
1
- import{i as e,t}from"./rolldown-runtime-aKtaBQYM.js";import{t as n}from"./logger-LESFN7Hj.js";import{n as r,r as i,t as a}from"./panel-rpc-CjFVE0nK.js";import{a as o}from"./providers-DSGqRskI.js";import{c as s,d as c,f as l,i as u,l as d,m as f,n as p,o as m,p as h,r as g,s as _,t as v,u as y}from"./proxied-fetch-sbHa3Tte.js";import{r as b,t as x}from"./src-Dk1QVJRd.js";import{D as S,E as C,F as w,I as T,L as E,M as D,N as O,P as k,R as A,T as j,_ as M,h as N,i as P,j as ee,o as te,v as ne}from"./account-store-O8B4A1Cp.js";import{t as re}from"./runtime-env-byAg9ij-.js";import{n as ie,r as ae,t as oe}from"./fetch-body-DDu_AU5I.js";import{a as se,i as F,n as I,r as ce}from"./transcript-limits-D0M7bLr9.js";import{n as le,o as ue,s as de}from"./tool-ui-t6ocn6AG.js";import{a as fe,i as pe,n as me,o as he,r as L,t as R}from"./backend-local-D4WZgy4J.js";import{t as ge}from"./types-idfTVsM8.js";import{n as _e,t as z}from"./mime-types-D7IV6i7k.js";import{a as ve,i as B,n as ye,r as V}from"./mount-YiUVBgZj.js";import{o as H}from"./mount-table-store-CTrzlrNn.js";import{t as be}from"./remote-cache-D59F5FOx.js";import{r as U,t as xe}from"./mount-recovery-B98mAfuD.js";import{S as Se,a as W,b as Ce,g as we,h as Te,i as Ee,l as De,m as Oe,n as ke,o as Ae,p as je,t as Me,u as Ne,v as Pe,w as Fe,x as Ie}from"./db-DjAqlQ2I.js";import{a as Le,i as Re,n as ze,r as Be}from"./tray-runtime-config-DlPGhxQs.js";import{a as Ve,i as He,n as Ue,o as We,r as Ge}from"./runtime-mode-M-qJL9jF.js";import{a as Ke,c as qe,d as Je,i as Ye,l as Xe,n as Ze,o as Qe,s as $e,t as et,u as tt}from"./lick-manager-Ct3WOtut.js";import{i as nt,n as rt,t as it}from"./path-utils-DU6QhF_k.js";import{u as at}from"./transform-messages-CVIV-EgO.js";import{l as ot,m as st}from"./bedrock-camp-CvxD6hHk.js";import{t as ct}from"./__vite-browser-external-SwrSgYTf.js";import{a as lt,n as ut,r as dt}from"./fs-DVjU94G5.js";import{a as ft,c as pt,i as G,n as mt,o as ht,r as gt,s as _t}from"./cost-command-Cpg2Em0Q.js";import{a as vt,c as yt,d as bt,f as xt,i as St,l as Ct,m as wt,n as Tt,o as Et,p as Dt,r as Ot,s as kt,u as At}from"./skills-CllGu9dI.js";import{n as jt,t as Mt}from"./llm-session-id-ZObKEXzb.js";import{a as Nt,c as Pt,d as Ft,f as It,i as Lt,l as Rt,n as zt,o as Bt,r as Vt,s as Ht,t as Ut,u as Wt}from"./installer-BmmE_GGY.js";import{n as Gt,t as Kt}from"./safe-buffer-C0pSmFaz.js";import{t as qt}from"./global-db-DvmmimLY.js";import{a as Jt,i as Yt,r as Xt,t as Zt}from"./git-config-Lj0BT7Oc.js";import{t as Qt}from"./process-manager-B5dz0PkO.js";import{D as $t,O as en,S as tn,_ as nn,a as rn,b as an,c as on,d as sn,f as cn,g as ln,h as un,i as dn,l as fn,m as pn,n as mn,o as hn,p as gn,r as _n,s as vn,t as yn,u as bn,v as xn,x as Sn,y as Cn}from"./shared-CZ95RVhr.js";import{i as wn,r as Tn,t as En}from"./magick-wasm-CdLQkNZO.js";import{a as Dn,i as On,r as kn,t as An}from"./script-catalog-BYXhqRAc.js";import{t as jn}from"./local-llm-BW8Tu5rb.js";import{t as Mn}from"./client-CpLUc-P8.js";const Nn=n(`cdp`);var Pn=class{ws=null;nextId=1;_superseded=!1;pending=new Map;listeners=new Map;_state=`disconnected`;get state(){return this._state}get superseded(){return this._superseded}async connect(e){if(this._state!==`disconnected`)throw Error(`Cannot connect: state is ${this._state}`);if(!e?.url)throw Error(`CDPClient.connect() requires a WebSocket URL`);let{url:t,timeout:n=5e3,protocols:r}=e;return this._state=`connecting`,new Promise((e,i)=>{let a=setTimeout(()=>{this.cleanup(),i(Error(`CDP connection timed out after ${n}ms`))},n);try{this.ws=r===void 0?new WebSocket(t):new WebSocket(t,r)}catch(e){clearTimeout(a),this._state=`disconnected`,i(e);return}this.ws.onopen=()=>{clearTimeout(a),this._state=`connected`,this._superseded=!1,Nn.info(`Connected`,{url:t}),e()},this.ws.onerror=e=>{clearTimeout(a),this._state===`connecting`&&(Nn.error(`Connection failed`,{url:t}),this.cleanup(),i(Error(`CDP WebSocket connection failed`)))},this.ws.onmessage=e=>{this.handleMessage(e.data)},this.ws.onclose=e=>{this.handleClose(e?.code)}})}disconnect(){this.ws&&(this.ws.onclose=null,this.ws.close()),this._superseded=!1,this.cleanup(),Nn.info(`Disconnected`)}async send(e,t,n,r=3e4){if(this._state!==`connected`||!this.ws)throw Error(`CDP client is not connected`);let i=this.nextId++,a={id:i,method:e};return t&&(a.params=t),n&&(a.sessionId=n),Nn.debug(`Send`,{method:e,id:i,sessionId:n}),new Promise((t,n)=>{let o=setTimeout(()=>{this.pending.delete(i),n(Error(`CDP command timed out after ${r}ms: ${e}`))},r);this.pending.set(i,{resolve:e=>{clearTimeout(o),t(e)},reject:e=>{clearTimeout(o),n(e)}}),this.ws.send(JSON.stringify(a))})}on(e,t){let n=this.listeners.get(e);n||(n=new Set,this.listeners.set(e,n)),n.add(t)}off(e,t){let n=this.listeners.get(e);n&&(n.delete(t),n.size===0&&this.listeners.delete(e))}once(e,t=3e4){return new Promise((n,r)=>{let i=setTimeout(()=>{this.off(e,a),r(Error(`Timed out waiting for event: ${e}`))},t),a=t=>{clearTimeout(i),this.off(e,a),n(t)};this.on(e,a)})}handleMessage(e){let t;try{t=JSON.parse(e)}catch{return}if(`id`in t&&typeof t.id==`number`){let e=t;Nn.debug(`Response`,{id:e.id,hasError:!!e.error});let n=this.pending.get(e.id);n&&(this.pending.delete(e.id),e.error?(Nn.error(`Command error`,{id:e.id,code:e.error.code,message:e.error.message}),n.reject(Error(`CDP error: ${e.error.message} (${e.error.code})`))):n.resolve(e.result??{}));return}if(`method`in t){let e=t;Nn.debug(`Event`,{method:e.method,sessionId:e.sessionId});let n=this.listeners.get(e.method);if(n){let t=e.sessionId?{...e.params,sessionId:e.sessionId}:e.params??{};for(let e of n)try{e(t)}catch{}}}}handleClose(e){let t=e===4001;t?(this._superseded=!0,Nn.warn(`CDP slot superseded by another SLICC tab/window on this instance`,{code:e})):Nn.error(`Connection closed unexpectedly`,{pendingCommands:this.pending.size});let n=t?`CDP connection superseded by another SLICC tab/window on this instance`:`CDP connection closed`;for(let[,e]of this.pending)e.reject(Error(n));this.cleanup()}cleanup(){this.ws=null,this._state=`disconnected`,this.pending.clear()}};const Fn=`(function() {
1
+ import{i as e,t}from"./rolldown-runtime-aKtaBQYM.js";import{t as n}from"./logger-LESFN7Hj.js";import{n as r,r as i,t as a}from"./panel-rpc-CjFVE0nK.js";import{a as o}from"./providers-CMlMnOkB.js";import{c as s,d as c,f as l,i as u,l as d,m as f,n as p,o as m,p as h,r as g,s as _,t as v,u as y}from"./proxied-fetch-sbHa3Tte.js";import{r as b,t as x}from"./src-Dk1QVJRd.js";import{D as S,E as C,F as w,I as T,L as E,M as D,N as O,P as k,R as A,T as j,_ as M,h as N,i as P,j as ee,o as te,v as ne}from"./account-store-DBH6AYjF.js";import{t as re}from"./runtime-env-byAg9ij-.js";import{n as ie,r as ae,t as oe}from"./fetch-body-DDu_AU5I.js";import{a as se,i as F,n as I,r as ce}from"./transcript-limits-D0M7bLr9.js";import{n as le,o as ue,s as de}from"./tool-ui-t6ocn6AG.js";import{a as fe,i as pe,n as me,o as he,r as L,t as R}from"./backend-local-D4WZgy4J.js";import{t as ge}from"./types-idfTVsM8.js";import{n as _e,t as z}from"./mime-types-D7IV6i7k.js";import{a as ve,i as B,n as ye,r as V}from"./mount-FCXht0UA.js";import{o as H}from"./mount-table-store-CTrzlrNn.js";import{t as be}from"./remote-cache-D59F5FOx.js";import{r as U,t as xe}from"./mount-recovery-Bbg4vjsg.js";import{S as Se,a as W,b as Ce,g as we,h as Te,i as Ee,l as De,m as Oe,n as ke,o as Ae,p as je,t as Me,u as Ne,v as Pe,w as Fe,x as Ie}from"./db-DjAqlQ2I.js";import{a as Le,i as Re,n as ze,r as Be}from"./tray-runtime-config-DlPGhxQs.js";import{a as Ve,i as He,n as Ue,o as We,r as Ge}from"./runtime-mode-M-qJL9jF.js";import{a as Ke,c as qe,d as Je,i as Ye,l as Xe,n as Ze,o as Qe,s as $e,t as et,u as tt}from"./lick-manager-Ct3WOtut.js";import{i as nt,n as rt,t as it}from"./path-utils-DU6QhF_k.js";import{u as at}from"./transform-messages-CVIV-EgO.js";import{l as ot,m as st}from"./bedrock-camp-CvxD6hHk.js";import{t as ct}from"./__vite-browser-external-SwrSgYTf.js";import{a as lt,n as ut,r as dt}from"./fs-BAbgPf5q.js";import{a as ft,c as pt,i as G,n as mt,o as ht,r as gt,s as _t}from"./cost-command-Cpg2Em0Q.js";import{a as vt,c as yt,d as bt,f as xt,i as St,l as Ct,m as wt,n as Tt,o as Et,p as Dt,r as Ot,s as kt,u as At}from"./skills-AlJ6rIGf.js";import{n as jt,t as Mt}from"./llm-session-id-ZObKEXzb.js";import{a as Nt,c as Pt,d as Ft,f as It,i as Lt,l as Rt,n as zt,o as Bt,r as Vt,s as Ht,t as Ut,u as Wt}from"./installer-BmmE_GGY.js";import{n as Gt,t as Kt}from"./safe-buffer-C0pSmFaz.js";import{t as qt}from"./global-db-DvmmimLY.js";import{a as Jt,i as Yt,r as Xt,t as Zt}from"./git-config-Lj0BT7Oc.js";import{t as Qt}from"./process-manager-B5dz0PkO.js";import{D as $t,O as en,S as tn,_ as nn,a as rn,b as an,c as on,d as sn,f as cn,g as ln,h as un,i as dn,l as fn,m as pn,n as mn,o as hn,p as gn,r as _n,s as vn,t as yn,u as bn,v as xn,x as Sn,y as Cn}from"./shared-CZ95RVhr.js";import{i as wn,r as Tn,t as En}from"./magick-wasm-CdLQkNZO.js";import{a as Dn,i as On,r as kn,t as An}from"./script-catalog-BYXhqRAc.js";import{t as jn}from"./local-llm-C00fbHJr.js";import{t as Mn}from"./client-CpLUc-P8.js";const Nn=n(`cdp`);var Pn=class{ws=null;nextId=1;_superseded=!1;pending=new Map;listeners=new Map;_state=`disconnected`;get state(){return this._state}get superseded(){return this._superseded}async connect(e){if(this._state!==`disconnected`)throw Error(`Cannot connect: state is ${this._state}`);if(!e?.url)throw Error(`CDPClient.connect() requires a WebSocket URL`);let{url:t,timeout:n=5e3,protocols:r}=e;return this._state=`connecting`,new Promise((e,i)=>{let a=setTimeout(()=>{this.cleanup(),i(Error(`CDP connection timed out after ${n}ms`))},n);try{this.ws=r===void 0?new WebSocket(t):new WebSocket(t,r)}catch(e){clearTimeout(a),this._state=`disconnected`,i(e);return}this.ws.onopen=()=>{clearTimeout(a),this._state=`connected`,this._superseded=!1,Nn.info(`Connected`,{url:t}),e()},this.ws.onerror=e=>{clearTimeout(a),this._state===`connecting`&&(Nn.error(`Connection failed`,{url:t}),this.cleanup(),i(Error(`CDP WebSocket connection failed`)))},this.ws.onmessage=e=>{this.handleMessage(e.data)},this.ws.onclose=e=>{this.handleClose(e?.code)}})}disconnect(){this.ws&&(this.ws.onclose=null,this.ws.close()),this._superseded=!1,this.cleanup(),Nn.info(`Disconnected`)}async send(e,t,n,r=3e4){if(this._state!==`connected`||!this.ws)throw Error(`CDP client is not connected`);let i=this.nextId++,a={id:i,method:e};return t&&(a.params=t),n&&(a.sessionId=n),Nn.debug(`Send`,{method:e,id:i,sessionId:n}),new Promise((t,n)=>{let o=setTimeout(()=>{this.pending.delete(i),n(Error(`CDP command timed out after ${r}ms: ${e}`))},r);this.pending.set(i,{resolve:e=>{clearTimeout(o),t(e)},reject:e=>{clearTimeout(o),n(e)}}),this.ws.send(JSON.stringify(a))})}on(e,t){let n=this.listeners.get(e);n||(n=new Set,this.listeners.set(e,n)),n.add(t)}off(e,t){let n=this.listeners.get(e);n&&(n.delete(t),n.size===0&&this.listeners.delete(e))}once(e,t=3e4){return new Promise((n,r)=>{let i=setTimeout(()=>{this.off(e,a),r(Error(`Timed out waiting for event: ${e}`))},t),a=t=>{clearTimeout(i),this.off(e,a),n(t)};this.on(e,a)})}handleMessage(e){let t;try{t=JSON.parse(e)}catch{return}if(`id`in t&&typeof t.id==`number`){let e=t;Nn.debug(`Response`,{id:e.id,hasError:!!e.error});let n=this.pending.get(e.id);n&&(this.pending.delete(e.id),e.error?(Nn.error(`Command error`,{id:e.id,code:e.error.code,message:e.error.message}),n.reject(Error(`CDP error: ${e.error.message} (${e.error.code})`))):n.resolve(e.result??{}));return}if(`method`in t){let e=t;Nn.debug(`Event`,{method:e.method,sessionId:e.sessionId});let n=this.listeners.get(e.method);if(n){let t=e.sessionId?{...e.params,sessionId:e.sessionId}:e.params??{};for(let e of n)try{e(t)}catch{}}}}handleClose(e){let t=e===4001;t?(this._superseded=!0,Nn.warn(`CDP slot superseded by another SLICC tab/window on this instance`,{code:e})):Nn.error(`Connection closed unexpectedly`,{pendingCommands:this.pending.size});let n=t?`CDP connection superseded by another SLICC tab/window on this instance`:`CDP connection closed`;for(let[,e]of this.pending)e.reject(Error(n));this.cleanup()}cleanup(){this.ws=null,this._state=`disconnected`,this.pending.clear()}};const Fn=`(function() {
2
2
  'use strict';
3
3
 
4
4
  // ===== DOM Utilities =====
@@ -5646,7 +5646,7 @@ Examples:
5646
5646
  skill list
5647
5647
  skill info bluebubbles
5648
5648
  skill read bluebubbles
5649
- `,stderr:``,exitCode:0};let r=t[0],i=await import(`./skills-CllGu9dI.js`).then(e=>e.t);try{switch(r){case`list`:{let t=await i.discoverSkills(e);return t.length===0?{stdout:`No discoverable skills found.\n\n${ZA()}Install skills with: upskill owner/repo --all\n`,stderr:``,exitCode:0}:{stdout:$A(t,`Discoverable skills`),stderr:``,exitCode:0}}case`info`:{let n=t[1];if(!n)return{stdout:``,stderr:`skill: info requires a skill name
5649
+ `,stderr:``,exitCode:0};let r=t[0],i=await import(`./skills-AlJ6rIGf.js`).then(e=>e.t);try{switch(r){case`list`:{let t=await i.discoverSkills(e);return t.length===0?{stdout:`No discoverable skills found.\n\n${ZA()}Install skills with: upskill owner/repo --all\n`,stderr:``,exitCode:0}:{stdout:$A(t,`Discoverable skills`),stderr:``,exitCode:0}}case`info`:{let n=t[1];if(!n)return{stdout:``,stderr:`skill: info requires a skill name
5650
5650
  `,exitCode:1};let r=await i.getSkillInfo(e,n);return r?{stdout:ej(r),stderr:``,exitCode:0}:{stdout:``,stderr:`skill: "${n}" not found\n`,exitCode:1}}case`read`:{let n=t[1];if(!n)return{stdout:``,stderr:`skill: read requires a skill name
5651
5651
  `,exitCode:1};let r=await i.readSkillInstructions(e,n);return r===null?{stdout:``,stderr:`skill: no SKILL.md found for "${n}"\n`,exitCode:1}:{stdout:r+`
5652
5652
  `,stderr:``,exitCode:0}}default:return{stdout:``,stderr:`skill: unknown command "${r}"\n`,exitCode:1}}}catch(e){return{stdout:``,stderr:`skill: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}})}async function rj(e,t){let n=`${Kk}/experimental/search?q=${encodeURIComponent(e)}&contentType=skills&page%5Bsize%5D=20`,r;try{r=await t(n,{headers:{Accept:`application/json`}})}catch(e){throw Error(lA(e,n))}if(r.status!==200)throw Error(`Tessl returned HTTP ${r.status}`);let i=ae(r.body);if(!i.data)return[];let a=new Map;for(let e of i.data){if(e.type!==`skill`)continue;let t=e.attributes,n=EA(t.sourceUrl),r=n?`${n.owner}/${n.repo}`:void 0,i=t.scores.aggregate==null?null:Math.round(t.scores.aggregate*100),o=t.sourceUrl||e.id,s=a.get(o);if(s&&s.qualityScore!=null&&i!=null&&s.qualityScore>=i)continue;let c=t.path.replace(/\/SKILL\.md$/i,``),l=c.split(`/`).pop()||t.name,u=n?`upskill ${n.owner}/${n.repo} --path ${c.split(`/`).slice(0,-1).join(`/`)||`.`} --skill ${l}`:`upskill tessl:${t.name}`;a.set(o,{name:t.name,displayName:t.name,summary:t.description||``,source:`tessl`,qualityScore:i,installHint:u,featured:t.featured,sourceRepo:r})}return Array.from(a.values())}async function ij(e,t){let n=`${Kk}/experimental/search?q=${encodeURIComponent(e)}&contentType=skills&page%5Bsize%5D=5`,r;try{r=await t(n,{headers:{Accept:`application/json`}})}catch(e){return{error:`Tessl search failed: ${lA(e,n)}`}}if(r.status!==200)return{error:`Tessl search failed (HTTP ${r.status})`};let i=ae(r.body).data?.find(t=>t.type===`skill`&&t.attributes.name===e);if(!i)return{error:`skill "${e}" not found on Tessl registry`};let a=EA(i.attributes.sourceUrl);if(!a)return{error:`skill "${e}" has no GitHub source URL`};let o=i.attributes.path.replace(/\/SKILL\.md$/i,``);return{owner:a.owner,repo:a.repo,skillPath:o,skillName:e}}const aj=[{label:`Tessl`,host:new URL(Kk).host,fetch:rj},{label:`browse.sh`,host:new URL(qk).host,fetch:UA}];function oj(e){let t=[],n=e.reduce((e,t)=>Math.max(e,t.length),0);for(let r=0;r<n;r++)for(let n of e)r<n.length&&t.push(n[r]);return t}async function sj(e,t,n=1){let r=await Promise.allSettled(aj.map(n=>n.fetch(e,t))),i=r.map(e=>e.status===`fulfilled`?e.value:[]),a=r.every(e=>e.status===`rejected`),o=oj(i),s=``;for(let e=0;e<r.length;e++){let t=r[e];if(t.status===`rejected`){let n=aj[e],r=t.reason instanceof Error?t.reason.message:String(t.reason);s+=`warning: ${n.label} registry unavailable (${n.host}): ${r}\n`}}if(o.length===0){let t=a?`${s}upskill: registries failed to respond\n`:s;return{stdout:`No skills found for "${e}"\n\nTry a different search term or browse the registries at https://tessl.io/registry or https://browse.sh\n`,stderr:t,exitCode:+!!a}}let c=o.length,l=Math.ceil(c/10),u=Math.max(1,Math.min(n,l)),d=(u-1)*10,f=o.slice(d,d+10),p=`Search results for "${e}" (page ${u}/${l}, ${c} total):\n\n`;for(let e of f){let t=e.qualityScore==null?` `:String(e.qualityScore).padStart(3),n=`[${e.source}]`,r=e.sourceRepo?` ${e.sourceRepo}`:``;p+=` ${e.name.padEnd(30)} ${t} ${n.padEnd(10)}${r}\n`,e.summary&&(p+=` ${e.summary}\n`),p+=`
@@ -5672,7 +5672,7 @@ Examples:
5672
5672
  `,{stdout:s,stderr:``,exitCode:0}}function mj(e){return!e||e.startsWith(`-`)?{stdout:``,stderr:`upskill: --branch requires a value
5673
5673
  `,exitCode:1}:qe(e)?null:{stdout:``,stderr:`upskill: --branch must be a git ref of [A-Za-z0-9._/-]+ with no "..", leading "-"/"/", trailing "/" or ".lock", or shell metacharacters
5674
5674
  `,exitCode:1}}function hj(e){let t={selectedSkills:[],listOnly:!1,installAll:!1,force:!1,sourceRef:``},n=0;for(;n<e.length;){let r=e[n];if(r===`--skill`)t.selectedSkills.push(e[++n]);else if(r===`--path`||r===`-p`){let r=e[++n];if(typeof r!=`string`||!Xe(r))return t.earlyReturn={stdout:``,stderr:`upskill: --path must be a repo-relative sub-path of [A-Za-z0-9._/-]+ with no "..", leading "-"/"/", or shell metacharacters
5675
- `,exitCode:1},t;t.subPath=r}else if(r===`--list`)t.listOnly=!0;else if(r===`--all`)t.installAll=!0;else if(r===`--force`)t.force=!0;else if(r===`--branch`||r===`-b`){let r=mj(e[n+1]);if(r)return t.earlyReturn=r,t;t.branch=e[++n]}else r.startsWith(`-`)||(t.sourceRef=r);n++}return t}async function gj(e){let t=await(await import(`./skills-CllGu9dI.js`).then(e=>e.t)).discoverSkills(e);return t.length===0?{stdout:`No discoverable local skills found.\n\n${ZA()}`,stderr:``,exitCode:0}:{stdout:$A(t,`Discoverable local skills`),stderr:``,exitCode:0}}async function _j(e,t,n){if(!t)return{stdout:``,stderr:`upskill: ${e} requires a skill name\n`,exitCode:1};let r=await import(`./skills-CllGu9dI.js`).then(e=>e.t);if(e===`info`){let e=await r.getSkillInfo(n,t);return e?{stdout:ej(e),stderr:``,exitCode:0}:{stdout:``,stderr:`upskill: skill "${t}" not found\n`,exitCode:1}}let i=await r.readSkillInstructions(n,t);return i===null?{stdout:``,stderr:`upskill: no SKILL.md found for "${t}"\n`,exitCode:1}:{stdout:i+`
5675
+ `,exitCode:1},t;t.subPath=r}else if(r===`--list`)t.listOnly=!0;else if(r===`--all`)t.installAll=!0;else if(r===`--force`)t.force=!0;else if(r===`--branch`||r===`-b`){let r=mj(e[n+1]);if(r)return t.earlyReturn=r,t;t.branch=e[++n]}else r.startsWith(`-`)||(t.sourceRef=r);n++}return t}async function gj(e){let t=await(await import(`./skills-AlJ6rIGf.js`).then(e=>e.t)).discoverSkills(e);return t.length===0?{stdout:`No discoverable local skills found.\n\n${ZA()}`,stderr:``,exitCode:0}:{stdout:$A(t,`Discoverable local skills`),stderr:``,exitCode:0}}async function _j(e,t,n){if(!t)return{stdout:``,stderr:`upskill: ${e} requires a skill name\n`,exitCode:1};let r=await import(`./skills-AlJ6rIGf.js`).then(e=>e.t);if(e===`info`){let e=await r.getSkillInfo(n,t);return e?{stdout:ej(e),stderr:``,exitCode:0}:{stdout:``,stderr:`upskill: skill "${t}" not found\n`,exitCode:1}}let i=await r.readSkillInstructions(n,t);return i===null?{stdout:``,stderr:`upskill: no SKILL.md found for "${t}"\n`,exitCode:1}:{stdout:i+`
5676
5676
  `,stderr:``,exitCode:0}}async function vj(e,t,n,r,i,a,o){let s=``,c=``,l=0,u=e.length;for(let d=0;d<e.length;d++){let f=e[d],p=await yA(f.path,f.name,r,i,a),m=d+1,h=((Date.now()-o)/1e3).toFixed(1),g=(Date.now()-o)/m,_=m<u?` (~${Math.round((u-m)*g/1e3)}s remaining)`:``;p.ok?(s+=`[${m}/${u}] Installed "${f.name}" from ${t}/${n} (${h}s)${_}\n`,l++):(s+=`[${m}/${u}] Failed "${f.name}": ${p.error}${_}\n`,c+=`upskill: ${p.error}\n`)}return{output:s,errors:c,successCount:l}}async function yj(e,t,n,r,i,a,o,s){let c=``,l=``,u=0,d=e.length;for(let f=0;f<e.length;f++){let p=e[f],m=await OA(t,n,p.path,p.name,i,r,a,void 0,o),h=f+1,g=((Date.now()-s)/1e3).toFixed(1),_=(Date.now()-s)/h,v=h<d?` (~${Math.round((d-h)*_/1e3)}s remaining)`:``;m.exitCode===0?(c+=`[${h}/${d}] Installed "${p.name}" from ${t}/${n} (${g}s)${v}\n`,u++):(c+=`[${h}/${d}] Failed "${p.name}": ${m.stderr.trim()}${v}\n`,l+=m.stderr)}return{output:c,errors:l,successCount:u}}async function bj(e,t,n,r,i,a,o,s){let c=``,l=``,u=0;for(let d of e){let e=await OA(t,n,d.path,d.name,i,r,a,o,s);e.exitCode===0?(c+=e.stdout,u++):l+=e.stderr}return{output:c,errors:l,successCount:u}}function xj(e,t,n){let r=`Available skills in ${t}/${n}:\n\n`;for(let t of e)r+=` ${t.name.padEnd(30)} ${t.path}\n`;return r+=`\nFound ${e.length} skill(s)\n`,r}async function Sj(e,t,n,r){let{owner:i,repo:a}=e,o=t.branch??e.branch,s=t.subPath??e.path,c=await mA(r),l=await DA(i,a,c,s,r,o);if(l.error)return{stdout:``,stderr:`upskill: failed to list skills: ${l.error}\n`,exitCode:1};if(l.skills.length===0)return{stdout:`No skills found in ${i}/${a}${s?`/`+s:``}\n`,stderr:``,exitCode:0};if(t.listOnly)return{stdout:xj(l.skills,i,a)+`\nTo install: upskill ${t.sourceRef} --skill <name>\nTo install all: upskill ${t.sourceRef} --all\n`,stderr:``,exitCode:0};let u=l.skills;if(t.selectedSkills.length>0){u=l.skills.filter(e=>t.selectedSkills.includes(e.name));for(let e of t.selectedSkills)if(!l.skills.find(t=>t.name===e))return{stdout:``,stderr:`upskill: skill "${e}" not found in ${i}/${a}\n`,exitCode:1}}else if(!t.installAll)return{stdout:xj(l.skills,i,a)+`\nTo install specific skills: upskill ${t.sourceRef} --skill <name>\nTo install all: upskill ${t.sourceRef} --all\n`,stderr:``,exitCode:0};let d=u.length,f=Date.now(),p=``,m=``,h=0;if(d>1){let e=await SA(i,a,r,o);if(e.status===`ok`){let r=await vj(u,i,a,CA(e.files),n,t.force,f);({output:p,errors:m,successCount:h}=r)}else{let e=await yj(u,i,a,c,n,t.force,o,f);({output:p,errors:m,successCount:h}=e)}}else({output:p,errors:m,successCount:h}=await bj(u,i,a,c,n,t.force,r,o));let g=((Date.now()-f)/1e3).toFixed(1);return h>0&&(p+=`\nInstalled ${h} skill(s)${d>1?` in ${g}s`:``}\n`,await vA()),{stdout:p,stderr:m,exitCode:+!!m}}function Cj(e,t,n){return G(`upskill`,async(r,i)=>{if(r.length===0||r.includes(`--help`)||r.includes(`-h`))return tj();if(r[0]===`tabs`)return fj(e,t,n,r.includes(`--json`));if(r[0]===`recommendations`)return pj(e,t,r.includes(`--install`));if(r[0]===`list`)return gj(e);if(r[0]===`info`||r[0]===`read`)return _j(r[0],r[1],e);if(r[0]===`search`)return wj(r,t);let a=hj(r);if(a.earlyReturn)return a.earlyReturn;if(!a.sourceRef)return tj();if(a.sourceRef.startsWith(`tessl:`))return Tj(a.sourceRef,a.force,e,t);let o=KA(a.sourceRef);if(o)return XA(o.hostname,o.task,e,t,a.force);let s=kA(a.sourceRef);return s?Sj(s,a,e,t):{stdout:``,stderr:`upskill: unrecognized source "${a.sourceRef}"\n\nExpected: owner/repo, tessl:<name>, or browse:<hostname>/<task>\n`,exitCode:1}})}async function wj(e,t){let n=[...e.slice(1)],r=n.indexOf(`--page`),i=1;r>=0&&(i=parseInt(n[r+1],10)||1,n.splice(r,2));let a=n.join(` `);return a?sj(a,t,i):tj()}async function Tj(e,t,n,r){let i=e.slice(6);if(!i)return{stdout:``,stderr:`upskill: tessl: requires a skill name
5677
5677
  `,exitCode:1};let a=await ij(i,r);if(`error`in a)return{stdout:``,stderr:`upskill: ${a.error}\n`,exitCode:1};let o=await mA(r);return OA(a.owner,a.repo,a.skillPath,a.skillName,n,o,t,r)}function Ej(){return{stdout:`usage: afplay [-v volume] [-r rate] <file>
5678
5678
 
@@ -6902,7 +6902,7 @@ Common base URLs:
6902
6902
  llama.cpp http://localhost:8080/v1
6903
6903
  vLLM http://localhost:8000/v1
6904
6904
  Jan http://localhost:1337/v1
6905
- `}function PV(){return G(MV,async e=>{if(e.includes(`--help`)||e.includes(`-h`))return{stdout:NV(),stderr:``,exitCode:0};let{getApiKeyForProvider:t,getRawApiKeyForProvider:n,getBaseUrlForProvider:r,addAccount:i}=await import(`./provider-settings-DXZqWMxH.js`),{verifyConnection:a}=await import(`./local-llm-BW8Tu5rb.js`).then(e=>e.n),o=e[0]??`status`;if(o!==`status`&&o!==`discover`)return{stdout:``,stderr:`Unknown subcommand: ${o}. See \`local-llm --help\`.\n`,exitCode:2};let s=r(MV);if(!s)return{stdout:``,stderr:`Local LLM is not configured. Open Settings → Providers → Local LLM and set a base URL.
6905
+ `}function PV(){return G(MV,async e=>{if(e.includes(`--help`)||e.includes(`-h`))return{stdout:NV(),stderr:``,exitCode:0};let{getApiKeyForProvider:t,getRawApiKeyForProvider:n,getBaseUrlForProvider:r,addAccount:i}=await import(`./provider-settings-AHSP9_xw.js`),{verifyConnection:a}=await import(`./local-llm-C00fbHJr.js`).then(e=>e.n),o=e[0]??`status`;if(o!==`status`&&o!==`discover`)return{stdout:``,stderr:`Unknown subcommand: ${o}. See \`local-llm --help\`.\n`,exitCode:2};let s=r(MV);if(!s)return{stdout:``,stderr:`Local LLM is not configured. Open Settings → Providers → Local LLM and set a base URL.
6906
6906
  `,exitCode:1};let c=await a(s,t(MV)??void 0);if(!c.ok){let e=[`✗ Could not reach ${s}`,` runtime: ${c.runtime.kind}${c.runtime.version?` (${c.runtime.version})`:``}`,` error: ${c.error?.message??`unknown`}`];return c.error?.hint&&e.push(` hint: ${c.error.hint}`),{stdout:``,stderr:e.join(`
6907
6907
  `)+`
6908
6908
  `,exitCode:1}}if(o===`discover`){let e=n(MV)??``;return i(MV,e,s,c.models.join(`, `)),{stdout:[`✓ ${s} (${c.runtime.kind}${c.runtime.version?` ${c.runtime.version}`:``})`,` Saved ${c.models.length} model${c.models.length===1?``:`s`} to Settings:`,...c.models.map(e=>` • ${e}`)].join(`
@@ -6946,20 +6946,20 @@ authorization-code flow, stores the access token, and retries.
6946
6946
  On success, the server is persisted to /workspace/.mcp/servers.json and
6947
6947
  an alias shim is written to /workspace/.mcp/aliases/<name>.jsh so the
6948
6948
  short name resolves on the PATH.
6949
- `);let n=e.filter(e=>!e.startsWith(`--`));if(n.length<2)return VV(`mcp add: expected <url> <name>`);let[r,i]=n;if(!/^https?:\/\//i.test(r))return VV(`mcp add: invalid URL "${r}" (must start with http:// or https://)`);if(!/^[A-Za-z][A-Za-z0-9_-]*$/.test(i))return VV(`mcp add: invalid name "${i}" (letters, digits, _ and - only; must start with a letter)`);let{getServer:a,setServer:o}=await import(`./store-DJbSm8Z_.js`).then(e=>e.r);if(await a(i,t.fs))return VV(`mcp add: a server named "${i}" already exists`);let{McpClient:s,McpAuthRequiredError:c}=await import(`./client-CpLUc-P8.js`).then(e=>e.n),l=new s({url:r,fetchImpl:t.fetchImpl}),u;try{await l.initialize()}catch(e){if(!(e instanceof c))throw e;u=await GV(r,i,e.resourceMetadataUrl,t),l=new s({url:r,fetchImpl:t.fetchImpl,getAuthHeader:()=>dH(i)}),await l.initialize()}let d=await l.toolsList(),f=await l.appsList(),p=new Date().toISOString();await o(i,{url:r,tools:d,apps:f,addedAt:p,lastRefreshedAt:p,...u?{auth:u}:{}},t.fs),await _H(i,t);let m=await bH(i,f,t);if(u){let{registerMcpProvider:e}=await import(`./provider-DlfrkDnN.js`);e({name:i,serverUrl:r,auth:u})}return BV([`Added MCP server "${i}" → ${r}`,` tools: ${d.length}, apps: ${f.length} (${m} sprinkle${m===1?``:`s`})`,` alias: ${zV}/${i}.jsh`,u?` auth: oauth (provider mcp:${i})`:` auth: none`].join(`
6949
+ `);let n=e.filter(e=>!e.startsWith(`--`));if(n.length<2)return VV(`mcp add: expected <url> <name>`);let[r,i]=n;if(!/^https?:\/\//i.test(r))return VV(`mcp add: invalid URL "${r}" (must start with http:// or https://)`);if(!/^[A-Za-z][A-Za-z0-9_-]*$/.test(i))return VV(`mcp add: invalid name "${i}" (letters, digits, _ and - only; must start with a letter)`);let{getServer:a,setServer:o}=await import(`./store-D5jYcqHh.js`).then(e=>e.r);if(await a(i,t.fs))return VV(`mcp add: a server named "${i}" already exists`);let{McpClient:s,McpAuthRequiredError:c}=await import(`./client-CpLUc-P8.js`).then(e=>e.n),l=new s({url:r,fetchImpl:t.fetchImpl}),u;try{await l.initialize()}catch(e){if(!(e instanceof c))throw e;u=await GV(r,i,e.resourceMetadataUrl,t),l=new s({url:r,fetchImpl:t.fetchImpl,getAuthHeader:()=>dH(i)}),await l.initialize()}let d=await l.toolsList(),f=await l.appsList(),p=new Date().toISOString();await o(i,{url:r,tools:d,apps:f,addedAt:p,lastRefreshedAt:p,...u?{auth:u}:{}},t.fs),await _H(i,t);let m=await bH(i,f,t);if(u){let{registerMcpProvider:e}=await import(`./provider-DXYk5b_-.js`);e({name:i,serverUrl:r,auth:u})}return BV([`Added MCP server "${i}" → ${r}`,` tools: ${d.length}, apps: ${f.length} (${m} sprinkle${m===1?``:`s`})`,` alias: ${zV}/${i}.jsh`,u?` auth: oauth (provider mcp:${i})`:` auth: none`].join(`
6950
6950
  `)+`
6951
- `)}async function GV(e,t,n,r){let{discoverAuth:i,dynamicRegister:a,runAuthFlow:o}=await import(`./oauth-Czw-MuuR.js`),{saveOAuthAccount:s}=await import(`./provider-settings-DXZqWMxH.js`),c=await mH(r.oauthFetchImpl),l=r.oauthLauncher??await fH(),u=await i(e,n,c);RV.debug(`MCP OAuth discovery succeeded`,{name:t,serverUrl:e,discoveryPath:u.discoveryPath,issuer:u.issuer});let d=await pH(),f=await a(u,d,c),p=u.supportedScopes&&u.supportedScopes.length>0?u.supportedScopes.join(` `):void 0,m=await o({asMetadata:u,clientId:f.clientId,scope:p,redirectUri:d,launcher:l,fetchImpl:c}),h=`mcp:${t}`;return await s({providerId:h,accessToken:m.accessToken,refreshToken:m.refreshToken,tokenExpiresAt:m.expiresAt}),{providerId:h,authorizationServer:u.issuer,clientId:f.clientId,scope:m.scope??p,registrationClientUri:f.registrationClientUri}}async function KV(e,t){if(e.includes(`--help`)||e.includes(`-h`))return BV(`usage: mcp list
6952
- `);let{ensureAllMcpProvidersRegistered:n}=await import(`./provider-DlfrkDnN.js`);await n();let{listServers:r}=await import(`./store-DJbSm8Z_.js`).then(e=>e.r),i=await r(t.fs),a=Object.keys(i).sort();if(a.length===0)return BV("No MCP servers configured. Use `mcp add <url> <name>`.\n");let o=[[`NAME`,`URL`,`AUTH`,`TOOLS`,`APPS`,`ADDED`]];for(let e of a){let t=i[e];o.push([e,t.url,t.auth?`yes`:`no`,String(t.tools?.length??0),String(t.apps?.length??0),t.addedAt?t.addedAt.slice(0,10):`-`])}return BV(qV(o))}function qV(e){let t=e[0].map((t,n)=>e.reduce((e,t)=>Math.max(e,(t[n]??``).length),0));return e.map(e=>e.map((e,n)=>e.padEnd(t[n])).join(` `).trimEnd()).join(`
6951
+ `)}async function GV(e,t,n,r){let{discoverAuth:i,dynamicRegister:a,runAuthFlow:o}=await import(`./oauth-Czw-MuuR.js`),{saveOAuthAccount:s}=await import(`./provider-settings-AHSP9_xw.js`),c=await mH(r.oauthFetchImpl),l=r.oauthLauncher??await fH(),u=await i(e,n,c);RV.debug(`MCP OAuth discovery succeeded`,{name:t,serverUrl:e,discoveryPath:u.discoveryPath,issuer:u.issuer});let d=await pH(),f=await a(u,d,c),p=u.supportedScopes&&u.supportedScopes.length>0?u.supportedScopes.join(` `):void 0,m=await o({asMetadata:u,clientId:f.clientId,scope:p,redirectUri:d,launcher:l,fetchImpl:c}),h=`mcp:${t}`;return await s({providerId:h,accessToken:m.accessToken,refreshToken:m.refreshToken,tokenExpiresAt:m.expiresAt}),{providerId:h,authorizationServer:u.issuer,clientId:f.clientId,scope:m.scope??p,registrationClientUri:f.registrationClientUri}}async function KV(e,t){if(e.includes(`--help`)||e.includes(`-h`))return BV(`usage: mcp list
6952
+ `);let{ensureAllMcpProvidersRegistered:n}=await import(`./provider-DXYk5b_-.js`);await n();let{listServers:r}=await import(`./store-D5jYcqHh.js`).then(e=>e.r),i=await r(t.fs),a=Object.keys(i).sort();if(a.length===0)return BV("No MCP servers configured. Use `mcp add <url> <name>`.\n");let o=[[`NAME`,`URL`,`AUTH`,`TOOLS`,`APPS`,`ADDED`]];for(let e of a){let t=i[e];o.push([e,t.url,t.auth?`yes`:`no`,String(t.tools?.length??0),String(t.apps?.length??0),t.addedAt?t.addedAt.slice(0,10):`-`])}return BV(qV(o))}function qV(e){let t=e[0].map((t,n)=>e.reduce((e,t)=>Math.max(e,(t[n]??``).length),0));return e.map(e=>e.map((e,n)=>e.padEnd(t[n])).join(` `).trimEnd()).join(`
6953
6953
  `)+`
6954
6954
  `}async function JV(e,t){if(e[0]===`--help`||e[0]===`-h`)return BV(`usage: mcp search <query>
6955
6955
 
6956
6956
  Case-insensitive substring search across the cached tools of every
6957
6957
  registered MCP server. Matches tool name OR description and prints a
6958
6958
  table of (server, tool, description, match-field) rows.
6959
- `);if(e.length===0)return VV(`mcp search: expected <query>`);let n=e[0],r=n.toLowerCase(),{ensureAllMcpProvidersRegistered:i}=await import(`./provider-DlfrkDnN.js`);await i();let{listServers:a}=await import(`./store-DJbSm8Z_.js`).then(e=>e.r),o=await a(t.fs),s=Object.keys(o).sort();if(s.length===0)return BV("No MCP servers configured. Use `mcp add <url> <name>`.\n");let c=[];for(let e of s){let t=o[e].tools??[];for(let n of t){let t=n.description??``,i=n.name.toLowerCase().includes(r),a=t.toLowerCase().includes(r);if(!i&&!a)continue;let o=i&&a?`name+description`:i?`name`:`description`;c.push({server:e,tool:n.name,description:t,match:o})}}if(c.length===0)return BV(`No tools matched "${n}".\n`);c.sort((e,t)=>e.server===t.server?e.tool.localeCompare(t.tool):e.server.localeCompare(t.server));let l=[[`SERVER`,`TOOL`,`DESCRIPTION`,`MATCH`]];for(let e of c)l.push([e.server,e.tool,YV(e.description),e.match]);return BV(qV(l))}function YV(e){if(!e)return``;let t=e.replace(/\s+/g,` `).trim();return t.length<=60?t:t.slice(0,59)+`…`}async function XV(e,t){if(e.length===0||e[0]===`--help`||e[0]===`-h`)return e.length===0?VV(`mcp delete: expected <name>`):BV(`usage: mcp delete <name>
6960
- `);let n=e[0],{ensureMcpProviderRegistered:r,removeMcpProvider:i}=await import(`./provider-DlfrkDnN.js`);await r(n);let{deleteServer:a}=await import(`./store-DJbSm8Z_.js`).then(e=>e.r),o=await a(n,t.fs);await vH(n,t),await yH(n,t);let s=`mcp:${n}`,c=!1;try{let{removeAccount:e,getAccounts:t}=await import(`./provider-settings-DXZqWMxH.js`);t().some(e=>e.providerId===s)&&(await e(s),c=!0)}catch(e){RV.warn(`mcp delete: OAuth removal failed`,{providerId:s,error:e instanceof Error?e.message:String(e)})}let l=i(n);return!o&&!c&&!l?VV(`mcp delete: no server, alias, or account found for "${n}"`):BV([`Removed MCP server "${n}"`,` servers.json: ${o?`removed`:`not present`}`,` alias: cleaned`,` sprinkles: cleaned`,` oauth: ${c?`removed`:`not present`}`,` provider: ${l?`unregistered`:`not registered`}`].join(`
6959
+ `);if(e.length===0)return VV(`mcp search: expected <query>`);let n=e[0],r=n.toLowerCase(),{ensureAllMcpProvidersRegistered:i}=await import(`./provider-DXYk5b_-.js`);await i();let{listServers:a}=await import(`./store-D5jYcqHh.js`).then(e=>e.r),o=await a(t.fs),s=Object.keys(o).sort();if(s.length===0)return BV("No MCP servers configured. Use `mcp add <url> <name>`.\n");let c=[];for(let e of s){let t=o[e].tools??[];for(let n of t){let t=n.description??``,i=n.name.toLowerCase().includes(r),a=t.toLowerCase().includes(r);if(!i&&!a)continue;let o=i&&a?`name+description`:i?`name`:`description`;c.push({server:e,tool:n.name,description:t,match:o})}}if(c.length===0)return BV(`No tools matched "${n}".\n`);c.sort((e,t)=>e.server===t.server?e.tool.localeCompare(t.tool):e.server.localeCompare(t.server));let l=[[`SERVER`,`TOOL`,`DESCRIPTION`,`MATCH`]];for(let e of c)l.push([e.server,e.tool,YV(e.description),e.match]);return BV(qV(l))}function YV(e){if(!e)return``;let t=e.replace(/\s+/g,` `).trim();return t.length<=60?t:t.slice(0,59)+`…`}async function XV(e,t){if(e.length===0||e[0]===`--help`||e[0]===`-h`)return e.length===0?VV(`mcp delete: expected <name>`):BV(`usage: mcp delete <name>
6960
+ `);let n=e[0],{ensureMcpProviderRegistered:r,removeMcpProvider:i}=await import(`./provider-DXYk5b_-.js`);await r(n);let{deleteServer:a}=await import(`./store-D5jYcqHh.js`).then(e=>e.r),o=await a(n,t.fs);await vH(n,t),await yH(n,t);let s=`mcp:${n}`,c=!1;try{let{removeAccount:e,getAccounts:t}=await import(`./provider-settings-AHSP9_xw.js`);t().some(e=>e.providerId===s)&&(await e(s),c=!0)}catch(e){RV.warn(`mcp delete: OAuth removal failed`,{providerId:s,error:e instanceof Error?e.message:String(e)})}let l=i(n);return!o&&!c&&!l?VV(`mcp delete: no server, alias, or account found for "${n}"`):BV([`Removed MCP server "${n}"`,` servers.json: ${o?`removed`:`not present`}`,` alias: cleaned`,` sprinkles: cleaned`,` oauth: ${c?`removed`:`not present`}`,` provider: ${l?`unregistered`:`not registered`}`].join(`
6961
6961
  `)+`
6962
- `)}async function ZV(e,t){if(e.length===0||e[0]===`--help`||e[0]===`-h`)return e.length===0?VV(`mcp invoke: expected <name>`):BV(eH());let n=e[0],r=e.slice(1),{ensureMcpProviderRegistered:i}=await import(`./provider-DlfrkDnN.js`);await i(n);let{getServer:a}=await import(`./store-DJbSm8Z_.js`).then(e=>e.r),o=await a(n,t.fs);if(!o)return VV(`mcp invoke: unknown server "${n}" (run \`mcp add <url> ${n}\` first)`);let s=o.tools??[];if(r.length===0||r[0]===`--help`||r[0]===`-h`)return BV(tH(n,o,s));let c=r[0],l=s.find(e=>e.name===c);if(!l)return VV(`mcp invoke: unknown tool "${c}" on "${n}" (run \`${n}\` to list tools)`);let{timeoutMs:u,remaining:d,warnings:f}=QV(r.slice(1));if(d.includes(`--help`)||d.includes(`-h`))return BV(nH(n,l));let p=rH(d,l.inputSchema);if(!p.ok)return VV(`mcp invoke: ${p.error}`);let{McpClient:m}=await import(`./client-CpLUc-P8.js`).then(e=>e.n),h=new m({url:o.url,fetchImpl:t.fetchImpl,headers:o.headers,getAuthHeader:o.auth?()=>dH(n):void 0,...u===void 0?{}:{timeoutMs:u}});await h.initialize();let g=sH(await h.toolsCall(c,p.value));return f.length>0&&(g.stderr=f.map(e=>`${e}\n`).join(``)+g.stderr),g}function QV(e){let t=[],n=[],r,i=0;for(;i<e.length;){let a=e[i];if(a.startsWith(`--timeout=`)){let e=$V(a.slice(10));e.ok?r=e.value:n.push(e.error),i+=1;continue}if(a===`--timeout`){let t=e[i+1];if(t===void 0||t.startsWith(`--`)){n.push(`mcp invoke: --timeout requires a value (got ${t===void 0?`nothing`:`"${t}"`}); using default.`),i+=1;continue}let a=$V(t);a.ok?r=a.value:n.push(a.error),i+=2;continue}t.push(a),i+=1}return{timeoutMs:r,remaining:t,warnings:n}}function $V(e){if(!/^-?\d+$/.test(e))return{ok:!1,error:`mcp invoke: invalid --timeout value "${e}" (expected positive integer seconds); using default.`};let t=Number(e);return!Number.isFinite(t)||t<1?{ok:!1,error:`mcp invoke: invalid --timeout value "${e}" (must be >= 1 second); using default.`}:{ok:!0,value:t*1e3}}function eH(){return`usage: mcp invoke <name> [tool] [--timeout <seconds>] [--flag value …]
6962
+ `)}async function ZV(e,t){if(e.length===0||e[0]===`--help`||e[0]===`-h`)return e.length===0?VV(`mcp invoke: expected <name>`):BV(eH());let n=e[0],r=e.slice(1),{ensureMcpProviderRegistered:i}=await import(`./provider-DXYk5b_-.js`);await i(n);let{getServer:a}=await import(`./store-D5jYcqHh.js`).then(e=>e.r),o=await a(n,t.fs);if(!o)return VV(`mcp invoke: unknown server "${n}" (run \`mcp add <url> ${n}\` first)`);let s=o.tools??[];if(r.length===0||r[0]===`--help`||r[0]===`-h`)return BV(tH(n,o,s));let c=r[0],l=s.find(e=>e.name===c);if(!l)return VV(`mcp invoke: unknown tool "${c}" on "${n}" (run \`${n}\` to list tools)`);let{timeoutMs:u,remaining:d,warnings:f}=QV(r.slice(1));if(d.includes(`--help`)||d.includes(`-h`))return BV(nH(n,l));let p=rH(d,l.inputSchema);if(!p.ok)return VV(`mcp invoke: ${p.error}`);let{McpClient:m}=await import(`./client-CpLUc-P8.js`).then(e=>e.n),h=new m({url:o.url,fetchImpl:t.fetchImpl,headers:o.headers,getAuthHeader:o.auth?()=>dH(n):void 0,...u===void 0?{}:{timeoutMs:u}});await h.initialize();let g=sH(await h.toolsCall(c,p.value));return f.length>0&&(g.stderr=f.map(e=>`${e}\n`).join(``)+g.stderr),g}function QV(e){let t=[],n=[],r,i=0;for(;i<e.length;){let a=e[i];if(a.startsWith(`--timeout=`)){let e=$V(a.slice(10));e.ok?r=e.value:n.push(e.error),i+=1;continue}if(a===`--timeout`){let t=e[i+1];if(t===void 0||t.startsWith(`--`)){n.push(`mcp invoke: --timeout requires a value (got ${t===void 0?`nothing`:`"${t}"`}); using default.`),i+=1;continue}let a=$V(t);a.ok?r=a.value:n.push(a.error),i+=2;continue}t.push(a),i+=1}return{timeoutMs:r,remaining:t,warnings:n}}function $V(e){if(!/^-?\d+$/.test(e))return{ok:!1,error:`mcp invoke: invalid --timeout value "${e}" (expected positive integer seconds); using default.`};let t=Number(e);return!Number.isFinite(t)||t<1?{ok:!1,error:`mcp invoke: invalid --timeout value "${e}" (must be >= 1 second); using default.`}:{ok:!0,value:t*1e3}}function eH(){return`usage: mcp invoke <name> [tool] [--timeout <seconds>] [--flag value …]
6963
6963
 
6964
6964
  mcp invoke <name> List tools on <name>.
6965
6965
  mcp invoke <name> <tool> --help Show flags for <tool>.
@@ -6989,7 +6989,7 @@ Arguments are coerced according to the tool's JSON Schema:
6989
6989
 
6990
6990
  Re-fetches the tool catalog and \`apps/list\` for <name>. Does NOT refresh
6991
6991
  OAuth tokens — for OAuth token refresh use \`mcp auth <name>\`.
6992
- `);let n=e[0],{ensureMcpProviderRegistered:r}=await import(`./provider-DlfrkDnN.js`);await r(n);let{getServer:i,setServer:a}=await import(`./store-DJbSm8Z_.js`).then(e=>e.r),o=await i(n,t.fs);if(!o)return VV(`mcp refresh: unknown server "${n}"`);let{McpClient:s,McpAuthRequiredError:c}=await import(`./client-CpLUc-P8.js`).then(e=>e.n),l=new s({url:o.url,fetchImpl:t.fetchImpl,headers:o.headers,getAuthHeader:o.auth?()=>dH(n):void 0});try{await l.initialize()}catch(e){if(e instanceof c)return VV(`mcp refresh: server "${n}" returned 401 — token may have expired. Run \`mcp auth ${n}\` to re-authenticate.`);throw e}let u=await l.toolsList(),d=await l.appsList();await a(n,{...o,sessionId:void 0,tools:u,apps:d,lastRefreshedAt:new Date().toISOString()},t.fs);let f=await bH(n,d,t);return BV(`Refreshed "${n}" — tools: ${u.length}, apps: ${d.length} (${f} sprinkle${f===1?``:`s`})\n`)}async function lH(e,t){if(e.includes(`--help`)||e.includes(`-h`))return BV(`usage: mcp auth <name> [--silent | --interactive]
6992
+ `);let n=e[0],{ensureMcpProviderRegistered:r}=await import(`./provider-DXYk5b_-.js`);await r(n);let{getServer:i,setServer:a}=await import(`./store-D5jYcqHh.js`).then(e=>e.r),o=await i(n,t.fs);if(!o)return VV(`mcp refresh: unknown server "${n}"`);let{McpClient:s,McpAuthRequiredError:c}=await import(`./client-CpLUc-P8.js`).then(e=>e.n),l=new s({url:o.url,fetchImpl:t.fetchImpl,headers:o.headers,getAuthHeader:o.auth?()=>dH(n):void 0});try{await l.initialize()}catch(e){if(e instanceof c)return VV(`mcp refresh: server "${n}" returned 401 — token may have expired. Run \`mcp auth ${n}\` to re-authenticate.`);throw e}let u=await l.toolsList(),d=await l.appsList();await a(n,{...o,sessionId:void 0,tools:u,apps:d,lastRefreshedAt:new Date().toISOString()},t.fs);let f=await bH(n,d,t);return BV(`Refreshed "${n}" — tools: ${u.length}, apps: ${d.length} (${f} sprinkle${f===1?``:`s`})\n`)}async function lH(e,t){if(e.includes(`--help`)||e.includes(`-h`))return BV(`usage: mcp auth <name> [--silent | --interactive]
6993
6993
 
6994
6994
  Re-authenticate an existing MCP server. By default, attempts a silent
6995
6995
  token renewal using the persisted refresh_token; if that returns no
@@ -7001,7 +7001,7 @@ Options:
7001
7001
  -i, --interactive Skip silent renewal and open the OAuth popup
7002
7002
  directly. Use after revoking a refresh token or
7003
7003
  when the AS no longer accepts the cached one.
7004
- `);let n=e.filter(e=>!e.startsWith(`-`));if(n.length===0)return VV(`mcp auth: expected <name>`);let r=n[0],i=e.includes(`--silent`)||e.includes(`-s`),a=e.includes(`--interactive`)||e.includes(`-i`);if(i&&a)return VV(`mcp auth: --silent and --interactive are mutually exclusive`);let{ensureMcpProviderRegistered:o}=await import(`./provider-DlfrkDnN.js`),s=await o(r),{getServer:c}=await import(`./store-DJbSm8Z_.js`).then(e=>e.r),l=await c(r,t.fs);if(!l)return VV(`mcp auth: unknown server "${r}" (run \`mcp list\` to see configured servers)`);if(!l.auth)return VV(`mcp auth: server "${r}" does not use OAuth`);if(!s)return VV(`mcp auth: failed to register provider for "${r}"`);let u=`mcp:${r}`,{getRegisteredProviderConfig:d}=await import(`./providers-DSGqRskI.js`).then(e=>e.r),f=d(u);if(!f)return VV(`mcp auth: provider "${u}" is not registered`);if(a)return await uH(r,f,t);if(!f.onSilentRenew)return i?VV(`mcp auth: provider "${u}" does not support silent renewal; retry without --silent`):await uH(r,f,t);let p=null;try{p=await f.onSilentRenew()}catch(e){let t=e instanceof Error?e.message:String(e);if(i)return VV(`mcp auth: silent renewal for "${r}" failed (${t}); retry without --silent to run the interactive flow`);RV.debug(`mcp auth: silent renewal threw, falling back to interactive`,{name:r,error:t})}return p?BV(`Re-authenticated "${r}" via silent renewal (provider ${u})\n`):i?VV(`mcp auth: silent renewal for "${r}" returned no token; retry without --silent to run the interactive flow`):await uH(r,f,t)}async function uH(e,t,n){if(!t.onOAuthLogin)return VV(`mcp auth: provider "${t.id}" does not support interactive OAuth login`);let r=n.oauthLauncher??await fH(),i=!1;return await t.onOAuthLogin(r,()=>{i=!0}),i?BV(`Re-authenticated "${e}" via interactive login (provider ${t.id})\n`):VV(`mcp auth: interactive login for "${e}" did not complete`)}async function dH(e){let t=`mcp:${e}`,{getOAuthAccountInfo:n}=await import(`./provider-settings-DXZqWMxH.js`),r=n(t);if(!r)return null;if(r.expired){try{let{getRegisteredProviderConfig:e}=await import(`./providers-DSGqRskI.js`).then(e=>e.r),n=await e(t)?.onSilentRenew?.();if(n)return`Bearer ${n}`}catch(e){RV.debug(`silent renewal threw`,{providerId:t,error:e instanceof Error?e.message:String(e)})}return null}return`Bearer ${r.token}`}async function fH(){let{createOAuthLauncher:e}=await import(`./oauth-service-CfqjxAd7.js`);return e()}async function pH(){if(re()){let e=chrome;return e.identity?.getRedirectURL?.(`mcp-callback`)??`https://${e.runtime.id}.chromiumapp.org/mcp-callback`}let{getOAuthPageOrigin:e}=await import(`./oauth-service-CfqjxAd7.js`),{origin:t}=await e();return`${t}/auth/callback`}async function mH(e){if(e)return e;let{createProxiedFetch:t}=await import(`./proxied-fetch-sbHa3Tte.js`).then(e=>e.a),n=t();return async(e,t)=>{let r=await n(e,{method:t?.method,headers:t?.headers,body:t?.body}),i=new TextDecoder().decode(r.body);return{ok:r.status>=200&&r.status<300,status:r.status,statusText:r.statusText,text:async()=>i,json:async()=>JSON.parse(i),headers:{get:e=>r.headers[e.toLowerCase()]??null}}}}async function hH(e){if(e)return e;let{VirtualFS:t}=await import(`./fs-DVjU94G5.js`).then(e=>e.t),{GLOBAL_FS_DB_NAME:n}=await import(`./global-db-DvmmimLY.js`).then(e=>e.n);return await t.create({dbName:n})}function gH(e){return`// MCP alias for "${e}" — forwards args to \`mcp invoke ${e}\`.
7004
+ `);let n=e.filter(e=>!e.startsWith(`-`));if(n.length===0)return VV(`mcp auth: expected <name>`);let r=n[0],i=e.includes(`--silent`)||e.includes(`-s`),a=e.includes(`--interactive`)||e.includes(`-i`);if(i&&a)return VV(`mcp auth: --silent and --interactive are mutually exclusive`);let{ensureMcpProviderRegistered:o}=await import(`./provider-DXYk5b_-.js`),s=await o(r),{getServer:c}=await import(`./store-D5jYcqHh.js`).then(e=>e.r),l=await c(r,t.fs);if(!l)return VV(`mcp auth: unknown server "${r}" (run \`mcp list\` to see configured servers)`);if(!l.auth)return VV(`mcp auth: server "${r}" does not use OAuth`);if(!s)return VV(`mcp auth: failed to register provider for "${r}"`);let u=`mcp:${r}`,{getRegisteredProviderConfig:d}=await import(`./providers-CMlMnOkB.js`).then(e=>e.r),f=d(u);if(!f)return VV(`mcp auth: provider "${u}" is not registered`);if(a)return await uH(r,f,t);if(!f.onSilentRenew)return i?VV(`mcp auth: provider "${u}" does not support silent renewal; retry without --silent`):await uH(r,f,t);let p=null;try{p=await f.onSilentRenew()}catch(e){let t=e instanceof Error?e.message:String(e);if(i)return VV(`mcp auth: silent renewal for "${r}" failed (${t}); retry without --silent to run the interactive flow`);RV.debug(`mcp auth: silent renewal threw, falling back to interactive`,{name:r,error:t})}return p?BV(`Re-authenticated "${r}" via silent renewal (provider ${u})\n`):i?VV(`mcp auth: silent renewal for "${r}" returned no token; retry without --silent to run the interactive flow`):await uH(r,f,t)}async function uH(e,t,n){if(!t.onOAuthLogin)return VV(`mcp auth: provider "${t.id}" does not support interactive OAuth login`);let r=n.oauthLauncher??await fH(),i=!1;return await t.onOAuthLogin(r,()=>{i=!0}),i?BV(`Re-authenticated "${e}" via interactive login (provider ${t.id})\n`):VV(`mcp auth: interactive login for "${e}" did not complete`)}async function dH(e){let t=`mcp:${e}`,{getOAuthAccountInfo:n}=await import(`./provider-settings-AHSP9_xw.js`),r=n(t);if(!r)return null;if(r.expired){try{let{getRegisteredProviderConfig:e}=await import(`./providers-CMlMnOkB.js`).then(e=>e.r),n=await e(t)?.onSilentRenew?.();if(n)return`Bearer ${n}`}catch(e){RV.debug(`silent renewal threw`,{providerId:t,error:e instanceof Error?e.message:String(e)})}return null}return`Bearer ${r.token}`}async function fH(){let{createOAuthLauncher:e}=await import(`./oauth-service-CfqjxAd7.js`);return e()}async function pH(){if(re()){let e=chrome;return e.identity?.getRedirectURL?.(`mcp-callback`)??`https://${e.runtime.id}.chromiumapp.org/mcp-callback`}let{getOAuthPageOrigin:e}=await import(`./oauth-service-CfqjxAd7.js`),{origin:t}=await e();return`${t}/auth/callback`}async function mH(e){if(e)return e;let{createProxiedFetch:t}=await import(`./proxied-fetch-sbHa3Tte.js`).then(e=>e.a),n=t();return async(e,t)=>{let r=await n(e,{method:t?.method,headers:t?.headers,body:t?.body}),i=new TextDecoder().decode(r.body);return{ok:r.status>=200&&r.status<300,status:r.status,statusText:r.statusText,text:async()=>i,json:async()=>JSON.parse(i),headers:{get:e=>r.headers[e.toLowerCase()]??null}}}}async function hH(e){if(e)return e;let{VirtualFS:t}=await import(`./fs-BAbgPf5q.js`).then(e=>e.t),{GLOBAL_FS_DB_NAME:n}=await import(`./global-db-DvmmimLY.js`).then(e=>e.n);return await t.create({dbName:n})}function gH(e){return`// MCP alias for "${e}" — forwards args to \`mcp invoke ${e}\`.
7005
7005
  // Auto-generated by \`mcp add ${e}\`; do not edit by hand.
7006
7006
  const argv = Array.isArray(process.argv) ? process.argv.slice(2) : [];
7007
7007
  const escape = (s) => {
@@ -7015,7 +7015,7 @@ const r = await exec(cmd);
7015
7015
  if (r.stdout) process.stdout.write(r.stdout);
7016
7016
  if (r.stderr) process.stderr.write(r.stderr);
7017
7017
  process.exit(r.exitCode || 0);
7018
- `}async function _H(e,t){let n=await hH(t.fs);await n.mkdir(zV,{recursive:!0}),await n.writeFile(`${zV}/${e}.jsh`,gH(e)),t.scriptCatalog?.invalidateJsh()}async function vH(e,t){let n=await hH(t.fs),r=`${zV}/${e}.jsh`;try{await n.exists(r)&&await n.rm(r)}catch(e){RV.debug(`alias removal failed`,{path:r,error:e instanceof Error?e.message:String(e)})}t.scriptCatalog?.invalidateJsh()}async function yH(e,t){let{removeAppSprinkles:n}=await import(`./apps--X4sn_V2.js`);await n(e,t.fs)}async function bH(e,t,n){try{let{materializeAppSprinkles:r}=await import(`./apps--X4sn_V2.js`);return(await r(e,t,n.fs)).length}catch(t){return RV.warn(`mcp: failed to materialize app sprinkles`,{name:e,error:t instanceof Error?t.message:String(t)}),0}}const xH=`/.cache/artificial-analysis.json`;async function SH(e,t=!1){if(e&&!t)try{let t=await e.readFile(xH),n=JSON.parse(t);if(Date.now()-n.fetchedAt<864e5)return n.models}catch{}let n=null;try{n=localStorage.getItem(`aa_api_key`)}catch{}let r={Accept:`application/json`};n&&(r[`x-api-key`]=n);let i=p(),a;try{a=await i(`https://artificialanalysis.ai/api/v2/data/llms/models`,{method:`GET`,headers:r})}catch{return[]}if(a.status===401||a.status<200||a.status>=300)return[];let o;try{let e=new TextDecoder().decode(a.body);o=JSON.parse(e)}catch{return[]}let s=(Array.isArray(o)?o:o?.data??o?.models??[]).map(e=>({slug:e.slug??``,name:e.name??``,creator_slug:e.model_creator?.slug??``,intelligence_index:e.evaluations?.artificial_analysis_intelligence_index??null,coding_index:e.evaluations?.artificial_analysis_coding_index??null,speed_tps:e.median_output_tokens_per_second??null}));if(e&&s.length>0){let t={fetchedAt:Date.now(),models:s};try{await e.mkdir(`/.cache`,{recursive:!0}),await e.writeFile(xH,JSON.stringify(t))}catch{}}return s}function CH(e){return e.toLowerCase().replace(/\./g,`-`).replace(/-\d{8}$/,``).replace(/-\d{4}$/,``)}function wH(e,t){let n=e.toLowerCase(),r=t.find(e=>e.slug===n);if(r)return r;let i=CH(e),a=t.find(e=>CH(e.slug)===i);if(a)return a;let o=t.filter(e=>n.includes(e.slug)||e.slug.includes(n));if(o.length>0)return o.sort((e,t)=>t.slug.length-e.slug.length),o[0]}function TH(){return`models - list available LLM models
7018
+ `}async function _H(e,t){let n=await hH(t.fs);await n.mkdir(zV,{recursive:!0}),await n.writeFile(`${zV}/${e}.jsh`,gH(e)),t.scriptCatalog?.invalidateJsh()}async function vH(e,t){let n=await hH(t.fs),r=`${zV}/${e}.jsh`;try{await n.exists(r)&&await n.rm(r)}catch(e){RV.debug(`alias removal failed`,{path:r,error:e instanceof Error?e.message:String(e)})}t.scriptCatalog?.invalidateJsh()}async function yH(e,t){let{removeAppSprinkles:n}=await import(`./apps-uHATN2fM.js`);await n(e,t.fs)}async function bH(e,t,n){try{let{materializeAppSprinkles:r}=await import(`./apps-uHATN2fM.js`);return(await r(e,t,n.fs)).length}catch(t){return RV.warn(`mcp: failed to materialize app sprinkles`,{name:e,error:t instanceof Error?t.message:String(t)}),0}}const xH=`/.cache/artificial-analysis.json`;async function SH(e,t=!1){if(e&&!t)try{let t=await e.readFile(xH),n=JSON.parse(t);if(Date.now()-n.fetchedAt<864e5)return n.models}catch{}let n=null;try{n=localStorage.getItem(`aa_api_key`)}catch{}let r={Accept:`application/json`};n&&(r[`x-api-key`]=n);let i=p(),a;try{a=await i(`https://artificialanalysis.ai/api/v2/data/llms/models`,{method:`GET`,headers:r})}catch{return[]}if(a.status===401||a.status<200||a.status>=300)return[];let o;try{let e=new TextDecoder().decode(a.body);o=JSON.parse(e)}catch{return[]}let s=(Array.isArray(o)?o:o?.data??o?.models??[]).map(e=>({slug:e.slug??``,name:e.name??``,creator_slug:e.model_creator?.slug??``,intelligence_index:e.evaluations?.artificial_analysis_intelligence_index??null,coding_index:e.evaluations?.artificial_analysis_coding_index??null,speed_tps:e.median_output_tokens_per_second??null}));if(e&&s.length>0){let t={fetchedAt:Date.now(),models:s};try{await e.mkdir(`/.cache`,{recursive:!0}),await e.writeFile(xH,JSON.stringify(t))}catch{}}return s}function CH(e){return e.toLowerCase().replace(/\./g,`-`).replace(/-\d{8}$/,``).replace(/-\d{4}$/,``)}function wH(e,t){let n=e.toLowerCase(),r=t.find(e=>e.slug===n);if(r)return r;let i=CH(e),a=t.find(e=>CH(e.slug)===i);if(a)return a;let o=t.filter(e=>n.includes(e.slug)||e.slug.includes(n));if(o.length>0)return o.sort((e,t)=>t.slug.length-e.slug.length),o[0]}function TH(){return`models - list available LLM models
7019
7019
 
7020
7020
  Usage: models [options]
7021
7021
 
@@ -7029,7 +7029,7 @@ Options:
7029
7029
  -h, --help Show this help message
7030
7030
  `}function EH(e){return e>=1e6?`${(e/1e6).toFixed(1)}M`.replace(`.0M`,`M`):e>=1e3?`${(e/1e3).toFixed(0)}K`:`${e}`}function DH(e){return`$${e.toFixed(2)}`}const OH=/\b(embedding|embed|tts|whisper|dall-e|image-gen|audio|vision-preview)\b/i;function kH(e){let t=`${e.id} ${e.name??``}`;return!OH.test(t)}function AH(e){let t=e.toLowerCase();t=t.replace(/-\d{8}$/,``),t=t.replace(/-\d{4}$/,``),t=t.replace(/-(preview|latest)$/,``);let n=t.match(/^(claude-(?:opus|sonnet|haiku))/);if(n)return n[1];let r=t.match(/^(gpt-\d+)(?:\.\d+)?(-[a-z][-a-z]*)?$/);if(r)return r[1]+(r[2]??``);let i=t.match(/^gemini-[\d.]+-(.+)$/);if(i)return`gemini-${i[1]}`;let a=t.match(/^gemini-(\d+)-(.+)$/);if(a)return`gemini-${a[2]}`;let o=t.match(/^grok-[\d.]+-([\w-]+)$/);if(o)return`grok-${o[1]}`;if(t.match(/^(grok)-[\d.]+$/))return`grok`;let s=t.match(/^(o\d+(?:-[a-z]+)?)(?:-\d.*)?$/);return s?s[1]:t.replace(/-[\d.]+$/,``)}function jH(e){let t=new Map;for(let n of e){let e=AH(n.id);(!t.has(e)||n.selected)&&t.set(e,n)}return[...t.values()]}function MH(e,t,n,r,i){let a=i?wH(e.id,i):void 0,o={id:e.id,name:e.name,provider:t,cost:e.cost??{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:e.contextWindow??0,maxTokens:e.maxTokens??0,reasoning:!!e.reasoning,input:e.input??[`text`],selected:e.id===n&&t===r};return a?.intelligence_index!=null&&(o.intelligence=a.intelligence_index),a?.coding_index!=null&&(o.codingScore=a.coding_index),a?.speed_tps!=null&&(o.speed=a.speed_tps),o}function NH(e,t,n,r){let i=[];i.push(`Models for "${e}" (${t}):\n`);for(let e of n){let t=e.selected?` ► `:` `,n=e.id.padEnd(30),r=`${DH(e.cost.input)} / ${DH(e.cost.output)}`,a=`${EH(e.contextWindow)} ctx`,o=e.intelligence==null?``:`IQ:${e.intelligence}`,s=e.speed==null?``:`${Math.round(e.speed)} t/s`,c=e.reasoning?`reasoning`:``,l=o||s?`${o.padEnd(6)} ${s.padEnd(8)}`:``;i.push(`${t}${n} ${r.padEnd(16)} ${a.padEnd(10)} ${l} ${c}`)}return i.push(`\n ${n.length} model${n.length===1?``:`s`} available.`),r&&i.push(` Intelligence data: artificialanalysis.ai`),i.join(`
7031
7031
  `)+`
7032
- `}function PH(e){return G(`models`,async t=>{let{getAccounts:n,getAvailableProviders:r,getProviderConfig:i,getProviderModels:a,getSelectedProvider:o,getSelectedModelId:s,resolveCurrentModel:c}=await import(`./provider-settings-DXZqWMxH.js`);if(t.includes(`--help`)||t.includes(`-h`))return{stdout:TH(),stderr:``,exitCode:0};let l=t.includes(`--json`),u=t.includes(`--all`),d=t.includes(`--all-versions`),f=t.includes(`--refresh`),p=t.includes(`--no-benchmarks`),m=t.indexOf(`--provider`),h=m>=0?t[m+1]:void 0,g=o(),_=s(),v=n();if(v.length===0)return{stdout:``,stderr:`No provider accounts configured. Run the provider settings to add one.
7032
+ `}function PH(e){return G(`models`,async t=>{let{getAccounts:n,getAvailableProviders:r,getProviderConfig:i,getProviderModels:a,getSelectedProvider:o,getSelectedModelId:s,resolveCurrentModel:c}=await import(`./provider-settings-AHSP9_xw.js`);if(t.includes(`--help`)||t.includes(`-h`))return{stdout:TH(),stderr:``,exitCode:0};let l=t.includes(`--json`),u=t.includes(`--all`),d=t.includes(`--all-versions`),f=t.includes(`--refresh`),p=t.includes(`--no-benchmarks`),m=t.indexOf(`--provider`),h=m>=0?t[m+1]:void 0,g=o(),_=s(),v=n();if(v.length===0)return{stdout:``,stderr:`No provider accounts configured. Run the provider settings to add one.
7033
7033
  `,exitCode:1};let y=c(),b=y.id,x=y.provider,S;p||(S=await SH(e,f),S.length===0&&(S=void 0));let C;if(h){let e=r();if(!e.includes(h))return{stdout:``,stderr:`Unknown provider: ${h}. Available: ${e.join(`, `)}\n`,exitCode:1};C=[h]}else C=u?[...new Set(v.map(e=>e.providerId))]:[g];let w=[],T=[];for(let e of C){let t=a(e).filter(kH);if(t.length===0){if(!u)return{stdout:``,stderr:`No models available for provider ${e}.\n`,exitCode:1};continue}let n=t.map(t=>MH(t,e,b,x,S)).sort((e,t)=>t.cost.input-e.cost.input);if(d||(n=jH(n)),w.push(...n),!l){let t=i(e);T.push(NH(t.name,e,n,!!S))}}if(l)return{stdout:JSON.stringify(w,null,2)+`
7034
7034
  `,stderr:``,exitCode:0};!d&&!l&&T.push(`Showing latest versions only. Use --all-versions to see all.
7035
7035
  `);let E=`${x}:${b}`,D=`${g}:${_}`;return T.push(E===D?`Currently using: ${E}\n`:`Currently using: ${E} (selected ${D} — resolved to a different model)\n`),{stdout:T.join(`
@@ -7069,7 +7069,7 @@ Examples:
7069
7069
  oauth-domain add adobe '*.da.live'
7070
7070
  oauth-domain list adobe
7071
7071
  oauth-domain remove adobe admin.da.live
7072
- `}function UH(){return G(`oauth-domain`,async e=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return{stdout:HH(),stderr:``,exitCode:0};let{getExtraOAuthDomains:t,setExtraOAuthDomainsAsync:n,getAllExtraOAuthDomains:r}=await import(`./provider-settings-DXZqWMxH.js`),[i,a,o]=e;try{switch(i){case`list`:{if(a){let e=t(a);return e.length===0?{stdout:`(no extra domains configured for ${a})\n`,stderr:``,exitCode:0}:{stdout:e.join(`
7072
+ `}function UH(){return G(`oauth-domain`,async e=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return{stdout:HH(),stderr:``,exitCode:0};let{getExtraOAuthDomains:t,setExtraOAuthDomainsAsync:n,getAllExtraOAuthDomains:r}=await import(`./provider-settings-AHSP9_xw.js`),[i,a,o]=e;try{switch(i){case`list`:{if(a){let e=t(a);return e.length===0?{stdout:`(no extra domains configured for ${a})\n`,stderr:``,exitCode:0}:{stdout:e.join(`
7073
7073
  `)+`
7074
7074
  `,stderr:``,exitCode:0}}let e=r(),n=Object.entries(e).filter(([,e])=>e.length>0);return n.length===0?{stdout:`(no extra OAuth domains configured)
7075
7075
  `,stderr:``,exitCode:0}:{stdout:n.map(([e,t])=>`${e}: ${t.join(`, `)}`).join(`
@@ -7127,11 +7127,11 @@ Examples:
7127
7127
  --authorize-url 'https://auth.x.ai/oauth2/auth?...' \\
7128
7128
  --redirect-pattern 'http://127.0.0.1:56121/*'
7129
7129
  curl -H "Authorization: Bearer $(oauth-token github)" https://api.github.com/user
7130
- `}function GH(){return G(`oauth-token`,async(e,t)=>{let{getOAuthAccountInfo:n,getSelectedProvider:r,getAccounts:i}=await import(`./provider-settings-DXZqWMxH.js`),{getRegisteredProviderConfig:a,getRegisteredProviderIds:o}=await import(`./providers-DSGqRskI.js`).then(e=>e.r);if(e.includes(`--help`)||e.includes(`-h`))return{stdout:WH(),stderr:``,exitCode:0};if(e.includes(`--list`))return ZH(i,o,a,n);if(e.includes(`--renew`))return KH(e);if(e.includes(`--from-file`)||e.includes(`--intercept`))return JH(e,t);let s,c=e.indexOf(`--scope`);if(c>=0){if(s=e[c+1]?.trim(),!s||s.startsWith(`-`))return{stdout:``,stderr:`oauth-token: --scope requires a value
7130
+ `}function GH(){return G(`oauth-token`,async(e,t)=>{let{getOAuthAccountInfo:n,getSelectedProvider:r,getAccounts:i}=await import(`./provider-settings-AHSP9_xw.js`),{getRegisteredProviderConfig:a,getRegisteredProviderIds:o}=await import(`./providers-CMlMnOkB.js`).then(e=>e.r);if(e.includes(`--help`)||e.includes(`-h`))return{stdout:WH(),stderr:``,exitCode:0};if(e.includes(`--list`))return ZH(i,o,a,n);if(e.includes(`--renew`))return KH(e);if(e.includes(`--from-file`)||e.includes(`--intercept`))return JH(e,t);let s,c=e.indexOf(`--scope`);if(c>=0){if(s=e[c+1]?.trim(),!s||s.startsWith(`-`))return{stdout:``,stderr:`oauth-token: --scope requires a value
7131
7131
  `,exitCode:1};e.splice(c,2)}let l,u=e.indexOf(`--provider`);if(u>=0){if(l=e[u+1],!l)return{stdout:``,stderr:`oauth-token: --provider requires a value
7132
7132
  `,exitCode:1}}else if(e.length>0)l=e[0];else{let e=r(),t=a(e);if(t?.isOAuth&&(t.onOAuthLogin||t.onOAuthLoginIntercepted))l=e;else if(l=o().find(e=>{let t=a(e);return t?.isOAuth&&(t.onOAuthLogin||t.onOAuthLoginIntercepted)}),!l)return{stdout:``,stderr:`oauth-token: no OAuth providers configured
7133
7133
  `,exitCode:1}}let d=a(l);if(!d)return{stdout:``,stderr:`oauth-token: unknown provider "${l}"\n`,exitCode:1};if(!d.isOAuth||!d.onOAuthLogin&&!d.onOAuthLoginIntercepted)return{stdout:``,stderr:`oauth-token: provider "${l}" is not an OAuth provider\n`,exitCode:1};if(!s){let e=n(l);if(e&&!e.expired){let t=e.maskedValue;return t?{stdout:`${t}\n`,stderr:``,exitCode:0}:{stdout:``,stderr:`oauth-token: no masked value for ${l} (try logging in again)\n`,exitCode:1}}}try{if(d.onOAuthLoginIntercepted){let{createInterceptingOAuthLauncherForCurrentRuntime:e}=await import(`./oauth-service-CfqjxAd7.js`),t=await e();if(!t)return{stdout:``,stderr:`oauth-token: provider "${l}" needs the controlled-browser interceptor, but no CDP transport is available in this runtime.\n`,exitCode:1};await d.onOAuthLoginIntercepted(t,()=>{},s?{scopes:s}:void 0)}else if(d.onOAuthLogin){let{createOAuthLauncher:e}=await import(`./oauth-service-CfqjxAd7.js`),t=e();await d.onOAuthLogin(t,()=>{},s?{scopes:s}:void 0)}else return{stdout:``,stderr:`oauth-token: provider "${l}" has no OAuth login hook\n`,exitCode:1};let e=n(l);if(e?.token){let t=e.maskedValue;return t?{stdout:`${t}\n`,stderr:``,exitCode:0}:{stdout:``,stderr:`oauth-token: no masked value for ${l} (try logging in again)\n`,exitCode:1}}return console.error(`[oauth-token] Provider ${l}: login completed but no token was saved`),{stdout:``,stderr:`oauth-token: login completed but no token was saved
7134
- `,exitCode:1}}catch(e){let t=e instanceof Error?e.message:String(e);return console.error(`[oauth-token] Provider ${l}: login failed:`,t),{stdout:``,stderr:`oauth-token: login failed: ${t}\n`,exitCode:1}}})}async function KH(e){let{getSelectedProvider:t,getOAuthAccountInfo:n}=await import(`./provider-settings-DXZqWMxH.js`),{getRegisteredProviderConfig:r,getRegisteredProviderIds:i}=await import(`./providers-DSGqRskI.js`).then(e=>e.r),a=e.filter(e=>!e.startsWith(`-`))[0];if(!a){let e=t();a=r(e)?.onSilentRenew?e:i().find(e=>r(e)?.onSilentRenew)}if(!a)return XH(`oauth-token --renew: no provider supports silent renewal`);let o=r(a);if(!o)return XH(`oauth-token --renew: unknown provider "${a}"`);if(!o.onSilentRenew)return XH(`oauth-token --renew: provider "${a}" has no onSilentRenew hook`);let s=n(a),c=s?.token,l=[`oauth-token --renew ${a}`];l.push(` before: ${qH(s)}`);let u=null,d=null;try{u=await o.onSilentRenew()}catch(e){d=e instanceof Error?e.message:String(e)}if(d)l.push(` silent renewal: ERROR — ${d}`);else if(u){let e=n(a),t=!!(c&&e?.token&&c!==e.token);l.push(` silent renewal: SUCCESS${t?` — token refreshed`:` (token unchanged)`}`),l.push(` after: ${qH(e)}`)}else l.push(` silent renewal: FAILED (onSilentRenew returned null)`),l.push(` → no window should have appeared. Open DevTools console and`),l.push(` look for "[oauth-service] Extension OAuth error" / "[adobe]" to see`),l.push(` the IMS/Chrome reason (e.g. login_required).`);return{stdout:l.join(`
7134
+ `,exitCode:1}}catch(e){let t=e instanceof Error?e.message:String(e);return console.error(`[oauth-token] Provider ${l}: login failed:`,t),{stdout:``,stderr:`oauth-token: login failed: ${t}\n`,exitCode:1}}})}async function KH(e){let{getSelectedProvider:t,getOAuthAccountInfo:n}=await import(`./provider-settings-AHSP9_xw.js`),{getRegisteredProviderConfig:r,getRegisteredProviderIds:i}=await import(`./providers-CMlMnOkB.js`).then(e=>e.r),a=e.filter(e=>!e.startsWith(`-`))[0];if(!a){let e=t();a=r(e)?.onSilentRenew?e:i().find(e=>r(e)?.onSilentRenew)}if(!a)return XH(`oauth-token --renew: no provider supports silent renewal`);let o=r(a);if(!o)return XH(`oauth-token --renew: unknown provider "${a}"`);if(!o.onSilentRenew)return XH(`oauth-token --renew: provider "${a}" has no onSilentRenew hook`);let s=n(a),c=s?.token,l=[`oauth-token --renew ${a}`];l.push(` before: ${qH(s)}`);let u=null,d=null;try{u=await o.onSilentRenew()}catch(e){d=e instanceof Error?e.message:String(e)}if(d)l.push(` silent renewal: ERROR — ${d}`);else if(u){let e=n(a),t=!!(c&&e?.token&&c!==e.token);l.push(` silent renewal: SUCCESS${t?` — token refreshed`:` (token unchanged)`}`),l.push(` after: ${qH(e)}`)}else l.push(` silent renewal: FAILED (onSilentRenew returned null)`),l.push(` → no window should have appeared. Open DevTools console and`),l.push(` look for "[oauth-service] Extension OAuth error" / "[adobe]" to see`),l.push(` the IMS/Chrome reason (e.g. login_required).`);return{stdout:l.join(`
7135
7135
  `)+`
7136
7136
  `,stderr:``,exitCode:+!u}}function qH(e){if(!e)return`no token`;if(e.expired)return`expired`;if(e.expiresAt){let t=e.expiresAt-Date.now();if(t>0){let e=Math.floor(t/36e5),n=Math.floor(t%36e5/6e4);return e>0?`valid, expires in ${e}h ${n}m`:`valid, expires in ${n}m`}}return`valid`}async function JH(e,t){let{parseInterceptOAuthConfig:n}=await import(`./intercepted-oauth-CaCw-rJ5.js`).then(e=>e.n),{createInterceptingOAuthLauncherForCurrentRuntime:r}=await import(`./oauth-service-CfqjxAd7.js`),i,a=e.indexOf(`--from-file`);if(a>=0){let n=e[a+1];if(!n)return XH(`oauth-token: --from-file requires a path`);try{let e=t.fs.resolvePath(t.cwd,n),r=await t.fs.readFile(e);i=JSON.parse(typeof r==`string`?r:new TextDecoder().decode(r))}catch(e){return XH(`oauth-token: failed to read ${n}: ${e instanceof Error?e.message:String(e)}`)}}else{let t=YH(e,`--authorize-url`),n=YH(e,`--redirect-pattern`);if(!t)return XH(`oauth-token: --authorize-url is required`);if(!n)return XH(`oauth-token: --redirect-pattern is required`);let r=[];for(let t=0;t<e.length;t++){if(e[t]!==`--rewrite`)continue;let n=e[t+1];if(!n)return XH(`oauth-token: --rewrite requires a value`);let i=n.split(`=`);if(i.length<3)return XH(`oauth-token: --rewrite "${n}" must be "<match>=<key>=<value>"`);let[a,o,...s]=i;r.push({match:a,appendParams:{[o]:s.join(`=`)}})}i={authorizeUrl:t,redirectUriPattern:n,onCapture:e.includes(`--leave-tab`)?`leave`:`close`,...r.length>0?{rewrite:r}:{}}}let o=n(i);if(!o.ok)return XH(`oauth-token: invalid intercept config: ${o.error}`);let s=await r();if(!s)return XH(`oauth-token: no CDP transport available in this runtime; --intercept needs the controlled browser.`);let c=await s(o.config);return c?{stdout:`${c}\n`,stderr:``,exitCode:0}:XH(`oauth-token: intercept timed out or was cancelled`)}function YH(e,t){let n=e.indexOf(t);if(n<0)return;let r=e[n+1];if(!(!r||r.startsWith(`--`)))return r}function XH(e){return{stdout:``,stderr:`${e}\n`,exitCode:1}}function ZH(e,t,n,r){let i=t().filter(e=>n(e)?.isOAuth);if(i.length===0)return{stdout:`No OAuth providers configured.
7137
7137
  `,stderr:``,exitCode:0};let a=[];for(let e of i){let t=r(e);if(!t)a.push(`${e} (no token)`);else if(t.expired){let n=t.userName?` as ${t.userName}`:``;a.push(`${e} (expired${n})`)}else{let n=[];if(t.userName?n.push(`logged in as ${t.userName}`):n.push(`logged in`),t.expiresAt){let e=t.expiresAt-Date.now();if(e>0){let t=Math.floor(e/36e5),r=Math.floor(e%36e5/6e4);t>0?n.push(`expires in ${t}h`):n.push(`expires in ${r}m`)}}a.push(`${e} (${n.join(`, `)})`)}}return{stdout:a.join(`
@@ -8756,4 +8756,4 @@ ${t}
8756
8756
  `;case`cmdline`:return`kernel-host\0`;case`cwd`:return`/
8757
8757
  `;case`stat`:return`1 (kernel-host) R 0 - 0 -
8758
8758
  `}}function ZX(e){let t=e instanceof Error?e.message:String(e),n=e?.code;return typeof n==`string`&&/^E[A-Z]+$/.test(n)?{ok:!1,errno:n,message:t}:{ok:!1,errno:`EIO`,message:t}}async function QX(e){let t=RO(e.token);if(!t)return{ok:!1,errno:`EACCES`,message:`sync-fs: unknown or revoked token`};let{fs:n,cwd:r}=t;try{let t=n.resolvePath(r,e.path);switch(e.op){case`read`:return{ok:!0,kind:`bytes`,bytes:await n.readFileBuffer(t)};case`write`:return await n.writeFile(t,e.body??new Uint8Array),{ok:!0,kind:`void`};case`exists`:return{ok:!0,kind:`json`,json:await n.exists(t)};case`stat`:{let e=await n.stat(t);return{ok:!0,kind:`json`,json:{isDirectory:e.isDirectory,isFile:e.isFile,size:e.size}}}case`readdir`:return{ok:!0,kind:`json`,json:await n.readdir(t)};case`mkdir`:return await n.mkdir(t,{recursive:!0}),{ok:!0,kind:`void`};case`rm`:return await n.rm(t,{recursive:!0}),{ok:!0,kind:`void`};case`rename`:{let i=n.resolvePath(r,e.arg2??``),a=n;if(a.rename)await a.rename(t,i);else if(a.mv)await a.mv(t,i);else{let e=await n.readFileBuffer(t);await n.writeFile(i,e),await n.rm(t,{recursive:!0})}return{ok:!0,kind:`void`}}default:return{ok:!1,errno:`EINVAL`,message:`sync-fs: unknown op '${e.op}'`}}}catch(e){return ZX(e)}}function $X(e={}){let t=e.channel===void 0;if(t&&!e.nonce)throw Error(`installSyncFsResponder: a nonce (or a test channel) is required`);let n=e.channel??new BroadcastChannel(QT(e.nonce)),r=e=>n.postMessage(e),i=new Map,a=e=>{let t=e.data;if(t?.type!==`sync-fs-req`||typeof t.id!=`string`)return;let n=t;if(!RO(n.token))return;let a=i.get(n.id);if(a){r({type:$T,id:n.id}),a.result&&r({type:eE,id:n.id,...a.result});return}let o={};i.set(n.id,o),r({type:$T,id:n.id});let s=e=>{o.result=e,o.timer=setTimeout(()=>i.delete(n.id),3e4),r({type:eE,id:n.id,...e})};QX(n).then(s).catch(e=>s({ok:!1,errno:`EIO`,message:e instanceof Error?e.message:String(e)}))};return n.addEventListener(`message`,a),{dispose:()=>{n.removeEventListener(`message`,a);for(let e of i.values())e.timer&&clearTimeout(e.timer);i.clear(),t&&n.close?.()}}}function eZ(e){switch(e.type){case`webhook`:return e.webhookName;case`sprinkle`:return e.sprinkleName;case`fswatch`:return e.fswatchName;case`navigate`:return e.navigateUrl;case`upgrade`:return`${e.upgradeFromVersion??`unknown`}→${e.upgradeToVersion??`unknown`}`;case`session-reload`:return`mount-recovery`;case`workflow`:return e.workflowName??e.workflowRunId??`workflow`;case`preview`:return e.previewOrigin??`preview`;case`discovery`:return e.discoveryUrl??e.discoveryOrigin;default:return e.cronName}}function tZ(e){switch(e.type){case`webhook`:return e.webhookId;case`sprinkle`:return e.sprinkleName;case`fswatch`:return e.fswatchId;case`navigate`:return e.navigateUrl;case`upgrade`:return`upgrade-${e.upgradeToVersion??`unknown`}`;case`session-reload`:return`session-reload-${e.timestamp}`;case`workflow`:return`workflow-${e.workflowRunId??`unknown`}`;case`preview`:return e.previewConnId??`preview-${e.timestamp}`;case`discovery`:return e.discoveryUrl??`discovery-${e.timestamp}`;default:return e.cronId}}function nZ(e,t){if(e.type===`sudo-request`){t.log.debug?.(`sudo-request lick: UI-chip-only path; orchestrator owns delivery`,{lickId:e.lickId});return}rZ(e,t)}function rZ(e,{orchestrator:t,log:n}){e.type===`navigate`?e.lickId=t.registerNavigateLick(e):e.type===`session-reload`?e.lickId=t.registerSessionReloadLick(e):e.type===`upgrade`&&(e.lickId=t.registerUpgradeLick(e));let r=Wr(e);if(r===null){n.debug?.(`dropping lick event with no renderable content`,{type:e.type});return}let i=eZ(e),a=tZ(e),o=e.type,s=t.getScoops(),c;if(c=e.targetScoop?s.find(t=>t.name===e.targetScoop||t.folder===e.targetScoop||t.folder===`${e.targetScoop}-scoop`):s.find(e=>e.isCone),!c){n.warn(`Lick target scoop not found`,e.targetScoop);return}let l={id:`${o}-${a}-${Date.now()}`,chatJid:c.jid,senderId:o,senderName:`${o}:${i}`,content:r.content,timestamp:e.timestamp,fromAssistant:!1,channel:o,...e.lickId?{lickId:e.lickId}:{}};t.handleMessage(l)}async function iZ(e,t,n,r){let i=new Qt,a=new RX(e,{...r,getBrowserAPI:()=>t});a.setProcessManager(i),globalThis.__slicc_pm=i,globalThis.__slicc_browser=t,await n.bind(a,t);let o=We(()=>n.emitTrayRuntimeStatus()),s=Zr(()=>n.emitTrayRuntimeStatus());return await a.init(),await n.seedBuffersFromAgentState(),{processManager:i,orchestrator:a,unsubLeader:o,unsubFollower:s,sharedFs:a.getSharedFS()}}async function aZ(e,t,n){let{registerSessionCostsProvider:r}=await import(`./cost-command-Cpg2Em0Q.js`).then(e=>e.t);r(()=>e.getSessionCosts());let{getLickManager:i}=await import(`./lick-manager-Ct3WOtut.js`).then(e=>e.r),a=i();await a.init(),e.setLickManager(a);let o=t.lickEventHandler??nZ,s={orchestrator:e,lickManager:a,log:n};return a.setEventHandler(e=>o(e,s)),a}async function oZ(e){e.getScoops().some(e=>e.isCone)||await e.registerScoop({jid:`cone_${Date.now()}`,name:`Cone`,folder:`cone`,isCone:!0,type:`cone`,requiresTrigger:!1,assistantLabel:`sliccy`,addedAt:new Date().toISOString()})}function sZ(e){let{orchestrator:t,processManager:n,lickManager:r,sharedFs:i}=e;SJ({sharedFs:i,getConeJid:()=>t.getScoops().find(e=>e.isCone)?.jid,fireLick:e=>r.emitEvent(e),processManager:n,runRealm:(e,t,n)=>zk(e,t,n,void 0,{filename:t[1]}),makeRunId:()=>AJ().slice(10,22),splitResult:(e,t)=>PJ(e,t)})}async function cZ(e){let{browser:t,lickManager:n,orchestrator:r,sharedFs:i,log:a}=e,{CdpWsPageBridge:o}=await import(`./cdp-ws-page-bridge-D_PY6ku1.js`),{WsSubscriberRegistry:s}=await import(`./ws-subscribers-Dzuxa2F7.js`),c=new o({browser:t});return{wsBridge:c,wsRegistry:new s({bridge:c,webhooks:{has:e=>n.getWebhook(e)!==void 0},dispatcher:{webhook:(e,t)=>{n.handleWebhookEvent(e,{},t)},scoop:(e,t)=>{if(!r.getScoops().find(t=>t.jid===e)){a.warn?.(`browser.websocket: scoop sink not found`,{jid:e});return}let n={id:`ws-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,chatJid:e,senderId:`browser.websocket`,senderName:`browser.websocket`,content:typeof t==`string`?t:JSON.stringify(t,null,2),timestamp:new Date().toISOString(),fromAssistant:!1,channel:`browser.websocket`};r.handleMessage(n)},vfs:async(e,t)=>{if(!i)return;let n=(typeof t==`string`?t:JSON.stringify(t))+`
8759
- `,r=``;try{let t=await i.readFile(e);r=typeof t==`string`?t:new TextDecoder().decode(t)}catch{}await i.writeFile(e,r+n)},log:e=>{a.info?.(`browser.websocket frame`,{payload:e})}}})}}async function lZ(e,t,n){try{let{startLickWsBridge:t}=await import(`./lick-ws-bridge-C_bJMGw6.js`);return t(e,{locationHref:self.location.href,lickWsUrl:n??null}).stop}catch(e){return(t.error?.bind(t)??t.warn.bind(t)??((e,t)=>console.error(`[lick-ws-bridge]`,e,t)))(`Failed to start lick-ws bridge — webhook / crontask / handoff lick delivery is non-functional in this session`,{error:e instanceof Error?e.message:String(e)}),null}}function uZ(e,t,n){let r=e.getTransport();if(r.isExtensionBridge)return n.debug?.(`Skipping NavigationWatcher: extension-bridge transport rejects sessionless Target.* discovery; the service worker observes handoffs via chrome.webRequest`),null;try{let e=new yi(r,e=>{let n={url:e.url,verb:e.verb,target:e.target};e.instruction!=null&&(n.instruction=e.instruction),e.branch!=null&&(n.branch=e.branch),e.path!=null&&(n.path=e.path),e.title!=null&&(n.title=e.title),t.emitEvent({type:`navigate`,navigateUrl:e.url,targetScoop:void 0,timestamp:new Date().toISOString(),body:n})},dZ(t));return e.start(),()=>e.stop()}catch(e){return n.warn(`Failed to start NavigationWatcher`,e),null}}function dZ(e){let t=p();return{onDiscovery:t=>{e.emitEvent({type:`discovery`,targetScoop:void 0,timestamp:new Date().toISOString(),discoveryOrigin:t.origin,discoveryKind:t.kind,discoveryUrl:t.url,body:{origin:t.origin,kind:t.kind,url:t.url,targetId:t.targetId}})},probeFetch:async(e,n)=>{let r=t(e,{method:n?.method??`GET`}),i=n?.signal,a=i?await Promise.race([r,new Promise((e,t)=>{if(i.aborted){t(Error(`aborted`));return}i.addEventListener(`abort`,()=>t(Error(`aborted`)),{once:!0})})]):await r,o=a.headers;return{ok:a.status>=200&&a.status<300,status:a.status,headers:{get(e){return o?o[e.toLowerCase()]??o[e]??null:null}}}},isDiscoveryEnabled:()=>zX()}}function fZ(e,t,n){(async()=>{try{let{getAllMountEntries:r}=await import(`./mount-table-store-CTrzlrNn.js`).then(e=>e.r),{recoverMounts:i}=await import(`./mount-recovery-B98mAfuD.js`).then(e=>e.n),a=await r();if(a.length===0)return;let{needsRecovery:o}=await i(a,e,n);if(o.length===0)return;t.emitEvent({type:`session-reload`,targetScoop:void 0,timestamp:new Date().toISOString(),body:{reason:`mount-recovery`,mounts:o}})}catch(e){n.warn(`mount recovery failed`,e)}})()}function pZ(e,t){(async()=>{try{let{detectUpgrade:t,recordVersionSeen:n}=await import(`./upgrade-detection-Cein6N3L.js`),r=await t();if(!r.isUpgrade||r.lastSeen===null)return;e.emitEvent({type:`upgrade`,targetScoop:void 0,timestamp:new Date().toISOString(),upgradeFromVersion:r.lastSeen,upgradeToVersion:r.bundled.version,body:{from:r.lastSeen,to:r.bundled.version,releasedAt:r.bundled.releasedAt}}),await n(r.bundled.version)}catch(e){t.warn(`Upgrade detection failed`,e)}})()}async function mZ(e,t,n){try{let{BshWatchdog:n}=await import(`./bsh-watchdog-cTkGOVHJ.js`),{ScriptCatalog:r}=await import(`./script-catalog-BYXhqRAc.js`).then(e=>e.n),i=new r({jshFs:e,bshFs:e,watcher:e.getWatcher()}),a=new n({browserAPI:t,scriptCatalog:i,fs:e});return a.start(),{bshWatchdogStop:()=>a.stop(),scriptCatalogDispose:()=>i.dispose()}}catch(e){return n.warn(`Failed to start BSH watchdog`,e),{bshWatchdogStop:null,scriptCatalogDispose:null}}}function hZ(){return E()}async function gZ(e){let{container:t,browser:n,bridge:r,callbacks:i,skipConeBootstrap:a=!1}=e,o=e.logger??console,{processManager:s,orchestrator:c,unsubLeader:l,unsubFollower:u,sharedFs:d}=await iZ(t,n,r,i);if(d?Ui(c,d,c.getSessionStore()):o.warn(`AgentBridge not published — orchestrator.getSharedFS() returned null`),d)try{await d.mountInternal(`/proc`,new BX(s))}catch(e){o.warn(`Failed to mount /proc`,e)}let f=await aZ(c,e,o);d&&sZ({orchestrator:c,processManager:s,lickManager:f,sharedFs:d}),globalThis.__slicc_lickManager=f;let{wsBridge:p,wsRegistry:m}=await cZ({browser:n,lickManager:f,orchestrator:c,sharedFs:d,log:o});globalThis.__slicc_wsSubscribers=m;let h=null;hZ()&&(h=await lZ(f,o,e.localLickWsUrl??null));let g=uZ(n,f,o);d&&fZ(d,f,o),a||await oZ(c),d&&pZ(f,o);let _=null,v=null;d&&({bshWatchdogStop:_,scriptCatalogDispose:v}=await mZ(d,n,o));let y=null;d&&e.syncFsChannelNonce&&(y=$X({nonce:e.syncFsChannelNonce}).dispose);let b=!1;return{orchestrator:c,browser:n,bridge:r,lickManager:f,sharedFs:d??null,processManager:s,async dispose(){b||(b=!0,await _Z({unsubLeader:l,unsubFollower:u,bshWatchdogStop:_,scriptCatalogDispose:v,lickWsBridgeStop:h,navigationWatcherStop:g,syncFsResponderDispose:y,sharedFs:d,wsRegistry:m,wsBridge:p,processManager:s,lickManager:f,browser:n,log:o}))}}}async function _Z(e){let{sharedFs:t,wsRegistry:n,wsBridge:r,processManager:i,lickManager:a,browser:o,log:s}=e;if(e.unsubLeader?.(),e.unsubFollower?.(),e.bshWatchdogStop?.(),e.scriptCatalogDispose?.(),e.lickWsBridgeStop?.(),e.syncFsResponderDispose?.(),e.navigationWatcherStop)try{await e.navigationWatcherStop()}catch(e){s.warn(`NavigationWatcher.stop() failed`,e)}if(t)try{await t.unmountInternal(`/proc`)}catch{}try{n.dispose()}catch(e){s.warn(`WsSubscriberRegistry.dispose() failed`,e)}try{r.dispose()}catch(e){s.warn(`CdpWsPageBridge.dispose() failed`,e)}vZ({processManager:i,lickManager:a,browser:o,wsRegistry:n})}function vZ(e){let t=globalThis;t.__slicc_pm===e.processManager&&delete t.__slicc_pm,t.__slicc_lickManager===e.lickManager&&delete t.__slicc_lickManager,e.browser&&t.__slicc_browser===e.browser&&delete t.__slicc_browser,e.wsRegistry&&t.__slicc_wsSubscribers===e.wsRegistry&&delete t.__slicc_wsSubscribers,delete t[vJ]}const yZ=`x-bypass-llm-proxy`;function bZ(e,t,n){return t?(r,i)=>{if(!xZ(r,t,n))return e(r,i);let a=new Headers(i?.headers);return a.has(yZ)||a.set(yZ,`1`),e(r,{...i,headers:a})}:e}function xZ(e,t,n){if(CZ(e,t))return!0;let r=n?.()??null;return r?SZ(e,r,t):!1}function SZ(e,t,n){let r=wZ(e),i,a;try{i=new URL(r,n),a=new URL(t)}catch{return!1}return i.origin===a.origin&&i.pathname.startsWith(`/api/`)}function CZ(e,t){let n=wZ(e);try{return new URL(n,t).origin===t}catch{return!0}}function wZ(e){return typeof e==`string`?e:e instanceof URL?e.href:e.url}function TZ(e,t={}){let n=t.onError??(e=>console.error(`[kernel-worker] boot failed`,e)),r=t.onDuplicate??(()=>console.warn(`[kernel-worker] received duplicate kernel-worker-init; ignoring`)),i=!1;return{handle(t){if(i){r();return}i=!0,e(t).catch(e=>{i=!1,n(e)})},isInitialized(){return i}}}var EZ=class{transport;createShell;log;pm;defaultOwner;sessions=new Map;unsubscribe=null;constructor(e){this.transport=e.transport,this.createShell=e.createShell,this.log=e.logger??console,this.pm=e.processManager??null,this.defaultOwner=e.defaultOwner??{kind:`system`}}start(){return this.unsubscribe||=this.transport.onMessage(e=>{if(!DZ(e)||e.source!==`panel`)return;let t=e.payload;kZ(t)&&this.handleControl(t).catch(e=>{this.log.warn(`[terminal-session-host] handler error`,e)})}),()=>this.dispose()}dispose(){this.unsubscribe?.(),this.unsubscribe=null;for(let[,e]of this.sessions)e.currentProcess&&this.pm?(this.pm.signal(e.currentProcess.pid,`SIGTERM`),this.pm.exit(e.currentProcess.pid,null)):e.currentExec?.abort(),e.shell.dispose?.();this.sessions.clear()}async handleControl(e){switch(e.type){case`terminal-open`:return this.handleOpen(e);case`terminal-close`:return this.handleClose(e);case`terminal-exec`:return this.handleExec(e);case`terminal-signal`:return this.handleSignal(e);case`terminal-stdin`:case`terminal-resize`:return}}async handleOpen(e){if(this.sessions.has(e.sid)){this.emitStatus(e.sid,`error`,`session already open`);return}try{let t=this.createShell(e.sid,{cwd:e.cwd,env:e.env});this.sessions.set(e.sid,{shell:t,currentExec:null,currentProcess:null}),this.emitStatus(e.sid,`opened`)}catch(t){this.emitStatus(e.sid,`error`,t instanceof Error?t.message:String(t))}}async handleClose(e){let t=this.sessions.get(e.sid);t&&(t.currentProcess&&this.pm?(this.pm.signal(t.currentProcess.pid,`SIGTERM`),this.pm.exit(t.currentProcess.pid,null)):t.currentExec?.abort(),t.shell.dispose?.(),this.sessions.delete(e.sid),this.emitStatus(e.sid,`closed`))}emitExit(e,t){this.emit({type:`terminal-exit`,sid:e.sid,execId:e.execId,exitCode:t})}emitStream(e,t,n){this.emit({type:`terminal-output`,sid:e.sid,execId:e.execId,stream:t,data:n})}async handleExec(e){let t=this.sessions.get(e.sid);if(!t){this.emitExit(e,127),this.log.warn(`[terminal-session-host] exec on unknown session`,e.sid);return}if(t.currentExec){this.emitExit(e,130);return}let n=new AbortController;t.currentExec=n;let r=this.pm?this.pm.spawn({kind:`shell`,argv:[e.command],cwd:t.shell.getCwd?.()??void 0,owner:this.defaultOwner,adoptAbort:n}):null;t.currentProcess=r;try{let i=await t.shell.executeCommand(e.command,n.signal,r?.pid);await this.emitExecSuccess(e,i,n,r)}catch(t){this.emitExecError(e,t,n,r)}finally{t.currentExec===n&&(t.currentExec=null,t.currentProcess=null)}}async emitExecSuccess(e,t,n,r){let i=n.signal.aborted?OZ(r?.terminatedBy??`SIGINT`):t.exitCode;n.signal.aborted||(r&&await r.gate.wait(),t.stdout&&this.emitStream(e,`stdout`,t.stdout),t.stderr&&this.emitStream(e,`stderr`,t.stderr)),this.emitExit(e,i),r&&this.pm&&this.pm.exit(r.pid,n.signal.aborted?null:t.exitCode)}emitExecError(e,t,n,r){if(n.signal.aborted){this.emitExit(e,OZ(r?.terminatedBy??`SIGINT`)),r&&this.pm&&this.pm.exit(r.pid,null);return}let i=t instanceof Error?t.message:String(t);this.emitStream(e,`stderr`,`Error: ${i}\n`),this.emitExit(e,1),r&&this.pm&&this.pm.exit(r.pid,1)}async handleSignal(e){let t=this.sessions.get(e.sid);if(!t){this.log.warn(`[terminal-session-host] signal on unknown session`,e.sid);return}(e.signal===`SIGINT`||e.signal===`SIGTERM`||e.signal===`SIGKILL`)&&(t.currentProcess&&this.pm?this.pm.signal(t.currentProcess.pid,e.signal):t.currentExec?.abort())}emit(e){this.transport.send(e)}emitStatus(e,t,n){let r=n?{type:`terminal-status`,sid:e,state:t,error:n}:{type:`terminal-status`,sid:e,state:t};this.emit(r)}};function DZ(e){return typeof e==`object`&&!!e&&`source`in e&&`payload`in e}function OZ(e){switch(e){case`SIGINT`:return 130;case`SIGTERM`:return 143;case`SIGKILL`:return 137;case`SIGSTOP`:case`SIGCONT`:return 130}}function kZ(e){if(typeof e!=`object`||!e)return!1;let t=e.type;return t===`terminal-open`||t===`terminal-close`||t===`terminal-exec`||t===`terminal-signal`||t===`terminal-stdin`||t===`terminal-resize`}var AZ=class extends SY{sid;transport;constructor(e,t,n){super(n),this.sid=e,this.transport=t}async renderMediaPreview(e){for(let t of e){let e=``,n=t.bytes,r=8192;for(let t=0;t<n.length;t+=r)e+=String.fromCharCode(...n.subarray(t,t+r));let i={type:`terminal-media-preview`,sid:this.sid,path:t.path,mediaType:t.mimeType,data:btoa(e)};this.transport.send(i)}}};function jZ(e){let{transport:t,fs:n,browser:r,processManager:i,sudoManager:a}=e,o=e.logger??console,s=a?.getShellConfig({transparentGating:!1}),c=new EZ({transport:t,processManager:i,createShell:(e,a)=>new AZ(e,t,{fs:n,cwd:a.cwd,env:a.env,browserAPI:r,processManager:i,processOwner:{kind:`system`},sudo:s}),logger:o});return{host:c,stop:c.start()}}function MZ(e){let t=new NZ(e);return t.start(),{stop:()=>t.dispose()}}var NZ=class{transport;client;writableClient;log;unsubscribe=null;constructor(e){this.transport=e.transport,this.client=e.client,this.writableClient=e.writableClient??null,this.log=e.logger??console}start(){this.unsubscribe||=this.transport.onMessage(e=>{if(!PZ(e)||e.source!==`panel`)return;let t=e.payload;if(FZ(t)){this.handleRequest(t).catch(e=>{this.log.warn(`[vfs-rpc-host] handler unexpectedly threw`,e)});return}if(IZ(t)){this.handleWriteRequest(t).catch(e=>{this.log.warn(`[vfs-rpc-host] write handler unexpectedly threw`,e)});return}})}dispose(){this.unsubscribe?.(),this.unsubscribe=null}async handleRequest(e){switch(e.type){case`vfs-read-dir`:return this.handleReadDir(e);case`vfs-read-file`:return this.handleReadFile(e);case`vfs-stat`:return this.handleStat(e)}}async handleReadDir(e){try{let t=await this.client.readDir(e.path),n={type:`vfs-read-dir-result`,requestId:e.requestId,ok:!0,entries:t};this.transport.send(n)}catch(t){this.emitError(`vfs-read-dir-result`,e.requestId,t,e.path)}}async handleReadFile(e){let t=e.encoding??`utf-8`;try{let n=await this.client.readFile(e.path,{encoding:t});if(t===`binary`){if(!(n instanceof Uint8Array)){this.emitError(`vfs-read-file-result`,e.requestId,new ge(`EIO`,`readFile(binary) did not return Uint8Array`),e.path);return}let t={type:`vfs-read-file-result`,requestId:e.requestId,ok:!0,encoding:`binary`,data:n},r=n.buffer,i=typeof ArrayBuffer<`u`&&r instanceof ArrayBuffer?[r]:void 0;this.transport.send(t,i)}else{if(typeof n!=`string`){this.emitError(`vfs-read-file-result`,e.requestId,new ge(`EIO`,`readFile(utf-8) did not return string`),e.path);return}let t={type:`vfs-read-file-result`,requestId:e.requestId,ok:!0,encoding:`utf-8`,data:n};this.transport.send(t)}}catch(t){this.emitError(`vfs-read-file-result`,e.requestId,t,e.path)}}async handleStat(e){try{let t=await this.client.stat(e.path),n={type:`vfs-stat-result`,requestId:e.requestId,ok:!0,stats:t};this.transport.send(n)}catch(t){this.emitError(`vfs-stat-result`,e.requestId,t,e.path)}}async handleWriteRequest(e){if(!this.writableClient){this.emitWriteError(LZ(e.type),e.requestId,new ge(`EACCES`,`vfs-rpc-host has no writable backend wired`),RZ(e));return}switch(e.type){case`vfs-write-file`:return this.handleWriteFile(e,this.writableClient);case`vfs-mkdir`:return this.handleMkdir(e,this.writableClient);case`vfs-rm`:return this.handleRm(e,this.writableClient);case`vfs-flush`:return this.handleFlush(e,this.writableClient);case`vfs-list-mount-points`:return this.handleListMountPoints(e,this.writableClient)}}async handleWriteFile(e,t){try{if(e.encoding===`binary`){if(!(e.data instanceof Uint8Array)){this.emitWriteError(`vfs-write-file-result`,e.requestId,new ge(`EIO`,`vfs-write-file(binary) data is not Uint8Array`),e.path);return}}else if(typeof e.data!=`string`){this.emitWriteError(`vfs-write-file-result`,e.requestId,new ge(`EIO`,`vfs-write-file(utf-8) data is not string`),e.path);return}let n=e.recursive===void 0?void 0:{recursive:e.recursive};await t.writeFile(e.path,e.data,n);let r={type:`vfs-write-file-result`,requestId:e.requestId,ok:!0};this.transport.send(r)}catch(t){this.emitWriteError(`vfs-write-file-result`,e.requestId,t,e.path)}}async handleMkdir(e,t){try{let n=e.recursive===void 0?void 0:{recursive:e.recursive};await t.mkdir(e.path,n);let r={type:`vfs-mkdir-result`,requestId:e.requestId,ok:!0};this.transport.send(r)}catch(t){this.emitWriteError(`vfs-mkdir-result`,e.requestId,t,e.path)}}async handleRm(e,t){try{let n=e.recursive===void 0?void 0:{recursive:e.recursive};await t.rm(e.path,n);let r={type:`vfs-rm-result`,requestId:e.requestId,ok:!0};this.transport.send(r)}catch(t){this.emitWriteError(`vfs-rm-result`,e.requestId,t,e.path)}}async handleFlush(e,t){try{await t.flush();let n={type:`vfs-flush-result`,requestId:e.requestId,ok:!0};this.transport.send(n)}catch(t){this.emitWriteError(`vfs-flush-result`,e.requestId,t,``)}}async handleListMountPoints(e,t){if(!t.listMountPoints){this.emitWriteError(`vfs-list-mount-points-result`,e.requestId,new ge(`EACCES`,`vfs-rpc-host has no mount-aware backend wired`),``);return}try{let n=await t.listMountPoints(),r={type:`vfs-list-mount-points-result`,requestId:e.requestId,ok:!0,mountPoints:n};this.transport.send(r)}catch(t){this.emitWriteError(`vfs-list-mount-points-result`,e.requestId,t,``)}}emitError(e,t,n,r){let i=zZ(n,r);switch(e){case`vfs-read-dir-result`:{let e={type:`vfs-read-dir-result`,requestId:t,ok:!1,error:i};this.transport.send(e);return}case`vfs-read-file-result`:{let e={type:`vfs-read-file-result`,requestId:t,ok:!1,error:i};this.transport.send(e);return}case`vfs-stat-result`:{let e={type:`vfs-stat-result`,requestId:t,ok:!1,error:i};this.transport.send(e);return}}}emitWriteError(e,t,n,r){let i=zZ(n,r);switch(r===``&&i.path===``&&delete i.path,e){case`vfs-write-file-result`:{let e={type:`vfs-write-file-result`,requestId:t,ok:!1,error:i};this.transport.send(e);return}case`vfs-mkdir-result`:{let e={type:`vfs-mkdir-result`,requestId:t,ok:!1,error:i};this.transport.send(e);return}case`vfs-rm-result`:{let e={type:`vfs-rm-result`,requestId:t,ok:!1,error:i};this.transport.send(e);return}case`vfs-flush-result`:{let e={type:`vfs-flush-result`,requestId:t,ok:!1,error:i};this.transport.send(e);return}case`vfs-list-mount-points-result`:{let e={type:`vfs-list-mount-points-result`,requestId:t,ok:!1,error:i};this.transport.send(e);return}}}};function PZ(e){return typeof e==`object`&&!!e&&`source`in e&&`payload`in e}function FZ(e){if(typeof e!=`object`||!e)return!1;let t=e.type;return t===`vfs-read-dir`||t===`vfs-read-file`||t===`vfs-stat`}function IZ(e){if(typeof e!=`object`||!e)return!1;let t=e.type;return t===`vfs-write-file`||t===`vfs-mkdir`||t===`vfs-rm`||t===`vfs-flush`||t===`vfs-list-mount-points`}function LZ(e){switch(e){case`vfs-write-file`:return`vfs-write-file-result`;case`vfs-mkdir`:return`vfs-mkdir-result`;case`vfs-rm`:return`vfs-rm-result`;case`vfs-flush`:return`vfs-flush-result`;case`vfs-list-mount-points`:return`vfs-list-mount-points-result`}}function RZ(e){return e.type===`vfs-flush`||e.type===`vfs-list-mount-points`?``:e.path}function zZ(e,t){return e instanceof ge?{code:e.code,message:e.message,path:e.path??t}:{code:`EIO`,message:e instanceof Error?e.message:String(e),path:t}}function BZ(){let e=globalThis.fetch;if(!e)return;let t=self?.location?self.location.origin:void 0;globalThis.fetch=bZ(e.bind(globalThis),t,VZ)}function VZ(){let e=u();if(!e)return null;try{return new URL(e).origin}catch{return null}}function HZ(e){let t=new Map(Object.entries(e));Object.defineProperty(globalThis,"localStorage",{value:{get length(){return t.size},key(e){return Array.from(t.keys())[e]??null},getItem(e){return t.has(e)?t.get(e):null},setItem(e,n){t.set(e,n)},removeItem(e){t.delete(e)},clear(){t.clear()}},configurable:!0,writable:!0})}let UZ=null,WZ=null,GZ=null,KZ=null,qZ=null;const JZ=TZ(e=>YZ(e));self.addEventListener(`message`,e=>{e.data?.type===`kernel-worker-init`&&JZ.handle(e.data)});async function YZ(e){Xn(e.instanceId);try{BZ(),d(e.localApiBaseUrl??null),_(e.bridgeToken??null),Nk(e.syncFsBridgeEnabled??!1),s(e.extensionDelegateId??null),HZ(e.localStorageSeed??{}),gr().catch(()=>{}),await o();let t=Or(e.kernelPort),n=new ui(t),i=ui.createCallbacks(n),a=new kr(e.cdpPort);await a.connect();let c=new Bn(a);UZ=await gZ({container:{},browser:c,bridge:n,callbacks:i,logger:console,localLickWsUrl:e.localLickWsUrl??null,syncFsChannelNonce:e.syncFsChannelNonce??null});let{createSprinkleManagerProxyOverChannel:l}=await import(`./sprinkle-bridge-channel-14cdGa6x.js`),u=l({instanceId:e.instanceId});globalThis.__slicc_sprinkleManager=u;let f=UZ.sharedFs?.getWatcher();if(f){let e=[`/workspace`,`/shared`,`/scoops`],t=null,n=new Set;for(let r of e)f.watch(r,e=>e.endsWith(`.shtml`),e=>{for(let t of e){let e=t.path.split(`/`).pop()?.replace(/\.shtml$/,``);e&&n.add(e)}t||=setTimeout(()=>{t=null;for(let e of n)u.reload(e).catch(()=>{});n.clear()},300)})}let{createPanelRpcClient:p}=await import(`./panel-rpc-CjFVE0nK.js`).then(e=>e.i);qZ=p({instanceId:e.instanceId}),globalThis.__slicc_panelRpc=qZ,c.setTrayTargetProvider(Kn(r));let m=await XZ({host:UZ,transport:t,browser:c,instanceId:e.instanceId});m&&(WZ=m.stopTerminalHost,GZ=m.stopVfsRpcHost,KZ=m.stopSpeechAssetsResponder),e.kernelPort.postMessage({type:`kernel-worker-ready`})}catch(e){throw Qn(e),e}}async function XZ(e){let t=e.host.sharedFs;if(!t)return console.warn(`[kernel-worker] shared FS unavailable; terminal sessions will fail to open`),null;let n=jZ({transport:e.transport,fs:t,browser:e.browser,processManager:e.host.processManager,sudoManager:e.host.orchestrator.getSudoManager(),logger:console}),r=MZ({transport:e.transport,client:t,writableClient:t,logger:console}),i=await ZZ(t,e.instanceId);return{stopTerminalHost:n.stop,stopVfsRpcHost:r.stop,stopSpeechAssetsResponder:i}}async function ZZ(e,t){let{installSpeechAssetsResponder:n}=await import(`./speech-assets-bridge-BUDIvdid.js`),{ensureSpeechAssetsStaged:r}=await import(`./ensure-speech-assets-pHHH7zOs.js`),{createProxiedFetch:i}=await import(`./proxied-fetch-sbHa3Tte.js`).then(e=>e.a),a=i();return n({instanceId:t,ensure:t=>r({fs:e,fetch:a},t)})}self.addEventListener(`message`,e=>{e.data?.type===`kernel-worker-shutdown`&&(WZ?.(),WZ=null,GZ?.(),GZ=null,KZ?.(),KZ=null,qZ?.dispose(),qZ=null,UZ?.dispose())});
8759
+ `,r=``;try{let t=await i.readFile(e);r=typeof t==`string`?t:new TextDecoder().decode(t)}catch{}await i.writeFile(e,r+n)},log:e=>{a.info?.(`browser.websocket frame`,{payload:e})}}})}}async function lZ(e,t,n){try{let{startLickWsBridge:t}=await import(`./lick-ws-bridge-C_bJMGw6.js`);return t(e,{locationHref:self.location.href,lickWsUrl:n??null}).stop}catch(e){return(t.error?.bind(t)??t.warn.bind(t)??((e,t)=>console.error(`[lick-ws-bridge]`,e,t)))(`Failed to start lick-ws bridge — webhook / crontask / handoff lick delivery is non-functional in this session`,{error:e instanceof Error?e.message:String(e)}),null}}function uZ(e,t,n){let r=e.getTransport();if(r.isExtensionBridge)return n.debug?.(`Skipping NavigationWatcher: extension-bridge transport rejects sessionless Target.* discovery; the service worker observes handoffs via chrome.webRequest`),null;try{let e=new yi(r,e=>{let n={url:e.url,verb:e.verb,target:e.target};e.instruction!=null&&(n.instruction=e.instruction),e.branch!=null&&(n.branch=e.branch),e.path!=null&&(n.path=e.path),e.title!=null&&(n.title=e.title),t.emitEvent({type:`navigate`,navigateUrl:e.url,targetScoop:void 0,timestamp:new Date().toISOString(),body:n})},dZ(t));return e.start(),()=>e.stop()}catch(e){return n.warn(`Failed to start NavigationWatcher`,e),null}}function dZ(e){let t=p();return{onDiscovery:t=>{e.emitEvent({type:`discovery`,targetScoop:void 0,timestamp:new Date().toISOString(),discoveryOrigin:t.origin,discoveryKind:t.kind,discoveryUrl:t.url,body:{origin:t.origin,kind:t.kind,url:t.url,targetId:t.targetId}})},probeFetch:async(e,n)=>{let r=t(e,{method:n?.method??`GET`}),i=n?.signal,a=i?await Promise.race([r,new Promise((e,t)=>{if(i.aborted){t(Error(`aborted`));return}i.addEventListener(`abort`,()=>t(Error(`aborted`)),{once:!0})})]):await r,o=a.headers;return{ok:a.status>=200&&a.status<300,status:a.status,headers:{get(e){return o?o[e.toLowerCase()]??o[e]??null:null}}}},isDiscoveryEnabled:()=>zX()}}function fZ(e,t,n){(async()=>{try{let{getAllMountEntries:r}=await import(`./mount-table-store-CTrzlrNn.js`).then(e=>e.r),{recoverMounts:i}=await import(`./mount-recovery-Bbg4vjsg.js`).then(e=>e.n),a=await r();if(a.length===0)return;let{needsRecovery:o}=await i(a,e,n);if(o.length===0)return;t.emitEvent({type:`session-reload`,targetScoop:void 0,timestamp:new Date().toISOString(),body:{reason:`mount-recovery`,mounts:o}})}catch(e){n.warn(`mount recovery failed`,e)}})()}function pZ(e,t){(async()=>{try{let{detectUpgrade:t,recordVersionSeen:n}=await import(`./upgrade-detection-B4owg_Xz.js`),r=await t();if(!r.isUpgrade||r.lastSeen===null)return;e.emitEvent({type:`upgrade`,targetScoop:void 0,timestamp:new Date().toISOString(),upgradeFromVersion:r.lastSeen,upgradeToVersion:r.bundled.version,body:{from:r.lastSeen,to:r.bundled.version,releasedAt:r.bundled.releasedAt}}),await n(r.bundled.version)}catch(e){t.warn(`Upgrade detection failed`,e)}})()}async function mZ(e,t,n){try{let{BshWatchdog:n}=await import(`./bsh-watchdog-cTkGOVHJ.js`),{ScriptCatalog:r}=await import(`./script-catalog-BYXhqRAc.js`).then(e=>e.n),i=new r({jshFs:e,bshFs:e,watcher:e.getWatcher()}),a=new n({browserAPI:t,scriptCatalog:i,fs:e});return a.start(),{bshWatchdogStop:()=>a.stop(),scriptCatalogDispose:()=>i.dispose()}}catch(e){return n.warn(`Failed to start BSH watchdog`,e),{bshWatchdogStop:null,scriptCatalogDispose:null}}}function hZ(){return E()}async function gZ(e){let{container:t,browser:n,bridge:r,callbacks:i,skipConeBootstrap:a=!1}=e,o=e.logger??console,{processManager:s,orchestrator:c,unsubLeader:l,unsubFollower:u,sharedFs:d}=await iZ(t,n,r,i);if(d?Ui(c,d,c.getSessionStore()):o.warn(`AgentBridge not published — orchestrator.getSharedFS() returned null`),d)try{await d.mountInternal(`/proc`,new BX(s))}catch(e){o.warn(`Failed to mount /proc`,e)}let f=await aZ(c,e,o);d&&sZ({orchestrator:c,processManager:s,lickManager:f,sharedFs:d}),globalThis.__slicc_lickManager=f;let{wsBridge:p,wsRegistry:m}=await cZ({browser:n,lickManager:f,orchestrator:c,sharedFs:d,log:o});globalThis.__slicc_wsSubscribers=m;let h=null;hZ()&&(h=await lZ(f,o,e.localLickWsUrl??null));let g=uZ(n,f,o);d&&fZ(d,f,o),a||await oZ(c),d&&pZ(f,o);let _=null,v=null;d&&({bshWatchdogStop:_,scriptCatalogDispose:v}=await mZ(d,n,o));let y=null;d&&e.syncFsChannelNonce&&(y=$X({nonce:e.syncFsChannelNonce}).dispose);let b=!1;return{orchestrator:c,browser:n,bridge:r,lickManager:f,sharedFs:d??null,processManager:s,async dispose(){b||(b=!0,await _Z({unsubLeader:l,unsubFollower:u,bshWatchdogStop:_,scriptCatalogDispose:v,lickWsBridgeStop:h,navigationWatcherStop:g,syncFsResponderDispose:y,sharedFs:d,wsRegistry:m,wsBridge:p,processManager:s,lickManager:f,browser:n,log:o}))}}}async function _Z(e){let{sharedFs:t,wsRegistry:n,wsBridge:r,processManager:i,lickManager:a,browser:o,log:s}=e;if(e.unsubLeader?.(),e.unsubFollower?.(),e.bshWatchdogStop?.(),e.scriptCatalogDispose?.(),e.lickWsBridgeStop?.(),e.syncFsResponderDispose?.(),e.navigationWatcherStop)try{await e.navigationWatcherStop()}catch(e){s.warn(`NavigationWatcher.stop() failed`,e)}if(t)try{await t.unmountInternal(`/proc`)}catch{}try{n.dispose()}catch(e){s.warn(`WsSubscriberRegistry.dispose() failed`,e)}try{r.dispose()}catch(e){s.warn(`CdpWsPageBridge.dispose() failed`,e)}vZ({processManager:i,lickManager:a,browser:o,wsRegistry:n})}function vZ(e){let t=globalThis;t.__slicc_pm===e.processManager&&delete t.__slicc_pm,t.__slicc_lickManager===e.lickManager&&delete t.__slicc_lickManager,e.browser&&t.__slicc_browser===e.browser&&delete t.__slicc_browser,e.wsRegistry&&t.__slicc_wsSubscribers===e.wsRegistry&&delete t.__slicc_wsSubscribers,delete t[vJ]}const yZ=`x-bypass-llm-proxy`;function bZ(e,t,n){return t?(r,i)=>{if(!xZ(r,t,n))return e(r,i);let a=new Headers(i?.headers);return a.has(yZ)||a.set(yZ,`1`),e(r,{...i,headers:a})}:e}function xZ(e,t,n){if(CZ(e,t))return!0;let r=n?.()??null;return r?SZ(e,r,t):!1}function SZ(e,t,n){let r=wZ(e),i,a;try{i=new URL(r,n),a=new URL(t)}catch{return!1}return i.origin===a.origin&&i.pathname.startsWith(`/api/`)}function CZ(e,t){let n=wZ(e);try{return new URL(n,t).origin===t}catch{return!0}}function wZ(e){return typeof e==`string`?e:e instanceof URL?e.href:e.url}function TZ(e,t={}){let n=t.onError??(e=>console.error(`[kernel-worker] boot failed`,e)),r=t.onDuplicate??(()=>console.warn(`[kernel-worker] received duplicate kernel-worker-init; ignoring`)),i=!1;return{handle(t){if(i){r();return}i=!0,e(t).catch(e=>{i=!1,n(e)})},isInitialized(){return i}}}var EZ=class{transport;createShell;log;pm;defaultOwner;sessions=new Map;unsubscribe=null;constructor(e){this.transport=e.transport,this.createShell=e.createShell,this.log=e.logger??console,this.pm=e.processManager??null,this.defaultOwner=e.defaultOwner??{kind:`system`}}start(){return this.unsubscribe||=this.transport.onMessage(e=>{if(!DZ(e)||e.source!==`panel`)return;let t=e.payload;kZ(t)&&this.handleControl(t).catch(e=>{this.log.warn(`[terminal-session-host] handler error`,e)})}),()=>this.dispose()}dispose(){this.unsubscribe?.(),this.unsubscribe=null;for(let[,e]of this.sessions)e.currentProcess&&this.pm?(this.pm.signal(e.currentProcess.pid,`SIGTERM`),this.pm.exit(e.currentProcess.pid,null)):e.currentExec?.abort(),e.shell.dispose?.();this.sessions.clear()}async handleControl(e){switch(e.type){case`terminal-open`:return this.handleOpen(e);case`terminal-close`:return this.handleClose(e);case`terminal-exec`:return this.handleExec(e);case`terminal-signal`:return this.handleSignal(e);case`terminal-stdin`:case`terminal-resize`:return}}async handleOpen(e){if(this.sessions.has(e.sid)){this.emitStatus(e.sid,`error`,`session already open`);return}try{let t=this.createShell(e.sid,{cwd:e.cwd,env:e.env});this.sessions.set(e.sid,{shell:t,currentExec:null,currentProcess:null}),this.emitStatus(e.sid,`opened`)}catch(t){this.emitStatus(e.sid,`error`,t instanceof Error?t.message:String(t))}}async handleClose(e){let t=this.sessions.get(e.sid);t&&(t.currentProcess&&this.pm?(this.pm.signal(t.currentProcess.pid,`SIGTERM`),this.pm.exit(t.currentProcess.pid,null)):t.currentExec?.abort(),t.shell.dispose?.(),this.sessions.delete(e.sid),this.emitStatus(e.sid,`closed`))}emitExit(e,t){this.emit({type:`terminal-exit`,sid:e.sid,execId:e.execId,exitCode:t})}emitStream(e,t,n){this.emit({type:`terminal-output`,sid:e.sid,execId:e.execId,stream:t,data:n})}async handleExec(e){let t=this.sessions.get(e.sid);if(!t){this.emitExit(e,127),this.log.warn(`[terminal-session-host] exec on unknown session`,e.sid);return}if(t.currentExec){this.emitExit(e,130);return}let n=new AbortController;t.currentExec=n;let r=this.pm?this.pm.spawn({kind:`shell`,argv:[e.command],cwd:t.shell.getCwd?.()??void 0,owner:this.defaultOwner,adoptAbort:n}):null;t.currentProcess=r;try{let i=await t.shell.executeCommand(e.command,n.signal,r?.pid);await this.emitExecSuccess(e,i,n,r)}catch(t){this.emitExecError(e,t,n,r)}finally{t.currentExec===n&&(t.currentExec=null,t.currentProcess=null)}}async emitExecSuccess(e,t,n,r){let i=n.signal.aborted?OZ(r?.terminatedBy??`SIGINT`):t.exitCode;n.signal.aborted||(r&&await r.gate.wait(),t.stdout&&this.emitStream(e,`stdout`,t.stdout),t.stderr&&this.emitStream(e,`stderr`,t.stderr)),this.emitExit(e,i),r&&this.pm&&this.pm.exit(r.pid,n.signal.aborted?null:t.exitCode)}emitExecError(e,t,n,r){if(n.signal.aborted){this.emitExit(e,OZ(r?.terminatedBy??`SIGINT`)),r&&this.pm&&this.pm.exit(r.pid,null);return}let i=t instanceof Error?t.message:String(t);this.emitStream(e,`stderr`,`Error: ${i}\n`),this.emitExit(e,1),r&&this.pm&&this.pm.exit(r.pid,1)}async handleSignal(e){let t=this.sessions.get(e.sid);if(!t){this.log.warn(`[terminal-session-host] signal on unknown session`,e.sid);return}(e.signal===`SIGINT`||e.signal===`SIGTERM`||e.signal===`SIGKILL`)&&(t.currentProcess&&this.pm?this.pm.signal(t.currentProcess.pid,e.signal):t.currentExec?.abort())}emit(e){this.transport.send(e)}emitStatus(e,t,n){let r=n?{type:`terminal-status`,sid:e,state:t,error:n}:{type:`terminal-status`,sid:e,state:t};this.emit(r)}};function DZ(e){return typeof e==`object`&&!!e&&`source`in e&&`payload`in e}function OZ(e){switch(e){case`SIGINT`:return 130;case`SIGTERM`:return 143;case`SIGKILL`:return 137;case`SIGSTOP`:case`SIGCONT`:return 130}}function kZ(e){if(typeof e!=`object`||!e)return!1;let t=e.type;return t===`terminal-open`||t===`terminal-close`||t===`terminal-exec`||t===`terminal-signal`||t===`terminal-stdin`||t===`terminal-resize`}var AZ=class extends SY{sid;transport;constructor(e,t,n){super(n),this.sid=e,this.transport=t}async renderMediaPreview(e){for(let t of e){let e=``,n=t.bytes,r=8192;for(let t=0;t<n.length;t+=r)e+=String.fromCharCode(...n.subarray(t,t+r));let i={type:`terminal-media-preview`,sid:this.sid,path:t.path,mediaType:t.mimeType,data:btoa(e)};this.transport.send(i)}}};function jZ(e){let{transport:t,fs:n,browser:r,processManager:i,sudoManager:a}=e,o=e.logger??console,s=a?.getShellConfig({transparentGating:!1}),c=new EZ({transport:t,processManager:i,createShell:(e,a)=>new AZ(e,t,{fs:n,cwd:a.cwd,env:a.env,browserAPI:r,processManager:i,processOwner:{kind:`system`},sudo:s}),logger:o});return{host:c,stop:c.start()}}function MZ(e){let t=new NZ(e);return t.start(),{stop:()=>t.dispose()}}var NZ=class{transport;client;writableClient;log;unsubscribe=null;constructor(e){this.transport=e.transport,this.client=e.client,this.writableClient=e.writableClient??null,this.log=e.logger??console}start(){this.unsubscribe||=this.transport.onMessage(e=>{if(!PZ(e)||e.source!==`panel`)return;let t=e.payload;if(FZ(t)){this.handleRequest(t).catch(e=>{this.log.warn(`[vfs-rpc-host] handler unexpectedly threw`,e)});return}if(IZ(t)){this.handleWriteRequest(t).catch(e=>{this.log.warn(`[vfs-rpc-host] write handler unexpectedly threw`,e)});return}})}dispose(){this.unsubscribe?.(),this.unsubscribe=null}async handleRequest(e){switch(e.type){case`vfs-read-dir`:return this.handleReadDir(e);case`vfs-read-file`:return this.handleReadFile(e);case`vfs-stat`:return this.handleStat(e)}}async handleReadDir(e){try{let t=await this.client.readDir(e.path),n={type:`vfs-read-dir-result`,requestId:e.requestId,ok:!0,entries:t};this.transport.send(n)}catch(t){this.emitError(`vfs-read-dir-result`,e.requestId,t,e.path)}}async handleReadFile(e){let t=e.encoding??`utf-8`;try{let n=await this.client.readFile(e.path,{encoding:t});if(t===`binary`){if(!(n instanceof Uint8Array)){this.emitError(`vfs-read-file-result`,e.requestId,new ge(`EIO`,`readFile(binary) did not return Uint8Array`),e.path);return}let t={type:`vfs-read-file-result`,requestId:e.requestId,ok:!0,encoding:`binary`,data:n},r=n.buffer,i=typeof ArrayBuffer<`u`&&r instanceof ArrayBuffer?[r]:void 0;this.transport.send(t,i)}else{if(typeof n!=`string`){this.emitError(`vfs-read-file-result`,e.requestId,new ge(`EIO`,`readFile(utf-8) did not return string`),e.path);return}let t={type:`vfs-read-file-result`,requestId:e.requestId,ok:!0,encoding:`utf-8`,data:n};this.transport.send(t)}}catch(t){this.emitError(`vfs-read-file-result`,e.requestId,t,e.path)}}async handleStat(e){try{let t=await this.client.stat(e.path),n={type:`vfs-stat-result`,requestId:e.requestId,ok:!0,stats:t};this.transport.send(n)}catch(t){this.emitError(`vfs-stat-result`,e.requestId,t,e.path)}}async handleWriteRequest(e){if(!this.writableClient){this.emitWriteError(LZ(e.type),e.requestId,new ge(`EACCES`,`vfs-rpc-host has no writable backend wired`),RZ(e));return}switch(e.type){case`vfs-write-file`:return this.handleWriteFile(e,this.writableClient);case`vfs-mkdir`:return this.handleMkdir(e,this.writableClient);case`vfs-rm`:return this.handleRm(e,this.writableClient);case`vfs-flush`:return this.handleFlush(e,this.writableClient);case`vfs-list-mount-points`:return this.handleListMountPoints(e,this.writableClient)}}async handleWriteFile(e,t){try{if(e.encoding===`binary`){if(!(e.data instanceof Uint8Array)){this.emitWriteError(`vfs-write-file-result`,e.requestId,new ge(`EIO`,`vfs-write-file(binary) data is not Uint8Array`),e.path);return}}else if(typeof e.data!=`string`){this.emitWriteError(`vfs-write-file-result`,e.requestId,new ge(`EIO`,`vfs-write-file(utf-8) data is not string`),e.path);return}let n=e.recursive===void 0?void 0:{recursive:e.recursive};await t.writeFile(e.path,e.data,n);let r={type:`vfs-write-file-result`,requestId:e.requestId,ok:!0};this.transport.send(r)}catch(t){this.emitWriteError(`vfs-write-file-result`,e.requestId,t,e.path)}}async handleMkdir(e,t){try{let n=e.recursive===void 0?void 0:{recursive:e.recursive};await t.mkdir(e.path,n);let r={type:`vfs-mkdir-result`,requestId:e.requestId,ok:!0};this.transport.send(r)}catch(t){this.emitWriteError(`vfs-mkdir-result`,e.requestId,t,e.path)}}async handleRm(e,t){try{let n=e.recursive===void 0?void 0:{recursive:e.recursive};await t.rm(e.path,n);let r={type:`vfs-rm-result`,requestId:e.requestId,ok:!0};this.transport.send(r)}catch(t){this.emitWriteError(`vfs-rm-result`,e.requestId,t,e.path)}}async handleFlush(e,t){try{await t.flush();let n={type:`vfs-flush-result`,requestId:e.requestId,ok:!0};this.transport.send(n)}catch(t){this.emitWriteError(`vfs-flush-result`,e.requestId,t,``)}}async handleListMountPoints(e,t){if(!t.listMountPoints){this.emitWriteError(`vfs-list-mount-points-result`,e.requestId,new ge(`EACCES`,`vfs-rpc-host has no mount-aware backend wired`),``);return}try{let n=await t.listMountPoints(),r={type:`vfs-list-mount-points-result`,requestId:e.requestId,ok:!0,mountPoints:n};this.transport.send(r)}catch(t){this.emitWriteError(`vfs-list-mount-points-result`,e.requestId,t,``)}}emitError(e,t,n,r){let i=zZ(n,r);switch(e){case`vfs-read-dir-result`:{let e={type:`vfs-read-dir-result`,requestId:t,ok:!1,error:i};this.transport.send(e);return}case`vfs-read-file-result`:{let e={type:`vfs-read-file-result`,requestId:t,ok:!1,error:i};this.transport.send(e);return}case`vfs-stat-result`:{let e={type:`vfs-stat-result`,requestId:t,ok:!1,error:i};this.transport.send(e);return}}}emitWriteError(e,t,n,r){let i=zZ(n,r);switch(r===``&&i.path===``&&delete i.path,e){case`vfs-write-file-result`:{let e={type:`vfs-write-file-result`,requestId:t,ok:!1,error:i};this.transport.send(e);return}case`vfs-mkdir-result`:{let e={type:`vfs-mkdir-result`,requestId:t,ok:!1,error:i};this.transport.send(e);return}case`vfs-rm-result`:{let e={type:`vfs-rm-result`,requestId:t,ok:!1,error:i};this.transport.send(e);return}case`vfs-flush-result`:{let e={type:`vfs-flush-result`,requestId:t,ok:!1,error:i};this.transport.send(e);return}case`vfs-list-mount-points-result`:{let e={type:`vfs-list-mount-points-result`,requestId:t,ok:!1,error:i};this.transport.send(e);return}}}};function PZ(e){return typeof e==`object`&&!!e&&`source`in e&&`payload`in e}function FZ(e){if(typeof e!=`object`||!e)return!1;let t=e.type;return t===`vfs-read-dir`||t===`vfs-read-file`||t===`vfs-stat`}function IZ(e){if(typeof e!=`object`||!e)return!1;let t=e.type;return t===`vfs-write-file`||t===`vfs-mkdir`||t===`vfs-rm`||t===`vfs-flush`||t===`vfs-list-mount-points`}function LZ(e){switch(e){case`vfs-write-file`:return`vfs-write-file-result`;case`vfs-mkdir`:return`vfs-mkdir-result`;case`vfs-rm`:return`vfs-rm-result`;case`vfs-flush`:return`vfs-flush-result`;case`vfs-list-mount-points`:return`vfs-list-mount-points-result`}}function RZ(e){return e.type===`vfs-flush`||e.type===`vfs-list-mount-points`?``:e.path}function zZ(e,t){return e instanceof ge?{code:e.code,message:e.message,path:e.path??t}:{code:`EIO`,message:e instanceof Error?e.message:String(e),path:t}}function BZ(){let e=globalThis.fetch;if(!e)return;let t=self?.location?self.location.origin:void 0;globalThis.fetch=bZ(e.bind(globalThis),t,VZ)}function VZ(){let e=u();if(!e)return null;try{return new URL(e).origin}catch{return null}}function HZ(e){let t=new Map(Object.entries(e));Object.defineProperty(globalThis,"localStorage",{value:{get length(){return t.size},key(e){return Array.from(t.keys())[e]??null},getItem(e){return t.has(e)?t.get(e):null},setItem(e,n){t.set(e,n)},removeItem(e){t.delete(e)},clear(){t.clear()}},configurable:!0,writable:!0})}let UZ=null,WZ=null,GZ=null,KZ=null,qZ=null;const JZ=TZ(e=>YZ(e));self.addEventListener(`message`,e=>{e.data?.type===`kernel-worker-init`&&JZ.handle(e.data)});async function YZ(e){Xn(e.instanceId);try{BZ(),d(e.localApiBaseUrl??null),_(e.bridgeToken??null),Nk(e.syncFsBridgeEnabled??!1),s(e.extensionDelegateId??null),HZ(e.localStorageSeed??{}),gr().catch(()=>{}),await o();let t=Or(e.kernelPort),n=new ui(t),i=ui.createCallbacks(n),a=new kr(e.cdpPort);await a.connect();let c=new Bn(a);UZ=await gZ({container:{},browser:c,bridge:n,callbacks:i,logger:console,localLickWsUrl:e.localLickWsUrl??null,syncFsChannelNonce:e.syncFsChannelNonce??null});let{createSprinkleManagerProxyOverChannel:l}=await import(`./sprinkle-bridge-channel-14cdGa6x.js`),u=l({instanceId:e.instanceId});globalThis.__slicc_sprinkleManager=u;let f=UZ.sharedFs?.getWatcher();if(f){let e=[`/workspace`,`/shared`,`/scoops`],t=null,n=new Set;for(let r of e)f.watch(r,e=>e.endsWith(`.shtml`),e=>{for(let t of e){let e=t.path.split(`/`).pop()?.replace(/\.shtml$/,``);e&&n.add(e)}t||=setTimeout(()=>{t=null;for(let e of n)u.reload(e).catch(()=>{});n.clear()},300)})}let{createPanelRpcClient:p}=await import(`./panel-rpc-CjFVE0nK.js`).then(e=>e.i);qZ=p({instanceId:e.instanceId}),globalThis.__slicc_panelRpc=qZ,c.setTrayTargetProvider(Kn(r));let m=await XZ({host:UZ,transport:t,browser:c,instanceId:e.instanceId});m&&(WZ=m.stopTerminalHost,GZ=m.stopVfsRpcHost,KZ=m.stopSpeechAssetsResponder),e.kernelPort.postMessage({type:`kernel-worker-ready`})}catch(e){throw Qn(e),e}}async function XZ(e){let t=e.host.sharedFs;if(!t)return console.warn(`[kernel-worker] shared FS unavailable; terminal sessions will fail to open`),null;let n=jZ({transport:e.transport,fs:t,browser:e.browser,processManager:e.host.processManager,sudoManager:e.host.orchestrator.getSudoManager(),logger:console}),r=MZ({transport:e.transport,client:t,writableClient:t,logger:console}),i=await ZZ(t,e.instanceId);return{stopTerminalHost:n.stop,stopVfsRpcHost:r.stop,stopSpeechAssetsResponder:i}}async function ZZ(e,t){let{installSpeechAssetsResponder:n}=await import(`./speech-assets-bridge-BUDIvdid.js`),{ensureSpeechAssetsStaged:r}=await import(`./ensure-speech-assets-pHHH7zOs.js`),{createProxiedFetch:i}=await import(`./proxied-fetch-sbHa3Tte.js`).then(e=>e.a),a=i();return n({instanceId:t,ensure:t=>r({fs:e,fetch:a},t)})}self.addEventListener(`message`,e=>{e.data?.type===`kernel-worker-shutdown`&&(WZ?.(),WZ=null,GZ?.(),GZ=null,KZ?.(),KZ=null,qZ?.dispose(),qZ=null,UZ?.dispose())});
@@ -0,0 +1 @@
1
+ var e=`slicc:leader-run-new-session`,t=`slicc:leader-broadcast-snapshot`;export{e as n,t};
@@ -1 +1 @@
1
- import{t as e}from"./logger-DDBAeTLF.js";import"./main-BtekKitA.js";import"./tray-leader-DcLymd_E.js";e(`lick-ws-bridge`);function t(e){let t=typeof e.verb==`string`?e.verb:null,n=typeof e.target==`string`?e.target:null,r=typeof e.url==`string`&&e.url.length>0?e.url:null;if(t!==`handoff`&&t!==`upskill`||!n||!r)return null;let i={url:r,verb:t,target:n};return typeof e.instruction==`string`&&(i.instruction=e.instruction),typeof e.branch==`string`&&(i.branch=e.branch),typeof e.path==`string`&&(i.path=e.path),typeof e.title==`string`&&(i.title=e.title),{type:`navigate`,navigateUrl:r,targetScoop:void 0,timestamp:typeof e.timestamp==`string`?e.timestamp:new Date().toISOString(),body:i}}function n(e){let t=typeof e.discoveryOrigin==`string`?e.discoveryOrigin:null,n=e.discoveryKind===`ai-catalog`||e.discoveryKind===`llms-txt`?e.discoveryKind:null,r=typeof e.discoveryUrl==`string`&&e.discoveryUrl.length>0?e.discoveryUrl:null;if(!t||!n||!r)return null;let i=typeof e.url==`string`?e.url:void 0;return{type:`discovery`,discoveryOrigin:t,discoveryKind:n,discoveryUrl:r,targetScoop:void 0,timestamp:typeof e.timestamp==`string`?e.timestamp:new Date().toISOString(),body:{origin:t,kind:n,url:r,...i?{pageUrl:i}:{}}}}export{n as mapDiscoveryPayloadToLickEvent,t as mapNavigatePayloadToLickEvent};
1
+ import{t as e}from"./logger-DDBAeTLF.js";import"./main-CmZaYL6M.js";import"./tray-leader-DcLymd_E.js";e(`lick-ws-bridge`);function t(e){let t=typeof e.verb==`string`?e.verb:null,n=typeof e.target==`string`?e.target:null,r=typeof e.url==`string`&&e.url.length>0?e.url:null;if(t!==`handoff`&&t!==`upskill`||!n||!r)return null;let i={url:r,verb:t,target:n};return typeof e.instruction==`string`&&(i.instruction=e.instruction),typeof e.branch==`string`&&(i.branch=e.branch),typeof e.path==`string`&&(i.path=e.path),typeof e.title==`string`&&(i.title=e.title),{type:`navigate`,navigateUrl:r,targetScoop:void 0,timestamp:typeof e.timestamp==`string`?e.timestamp:new Date().toISOString(),body:i}}function n(e){let t=typeof e.discoveryOrigin==`string`?e.discoveryOrigin:null,n=e.discoveryKind===`ai-catalog`||e.discoveryKind===`llms-txt`?e.discoveryKind:null,r=typeof e.discoveryUrl==`string`&&e.discoveryUrl.length>0?e.discoveryUrl:null;if(!t||!n||!r)return null;let i=typeof e.url==`string`?e.url:void 0;return{type:`discovery`,discoveryOrigin:t,discoveryKind:n,discoveryUrl:r,targetScoop:void 0,timestamp:typeof e.timestamp==`string`?e.timestamp:new Date().toISOString(),body:{origin:t,kind:n,url:r,...i?{pageUrl:i}:{}}}}export{n as mapDiscoveryPayloadToLickEvent,t as mapNavigatePayloadToLickEvent};
@@ -1,2 +1,2 @@
1
- import{n as e}from"./rolldown-runtime-aKtaBQYM.js";import{t}from"./logger-LESFN7Hj.js";import{d as n}from"./account-store-O8B4A1Cp.js";import{p as r}from"./transform-messages-CVIV-EgO.js";import{p as i}from"./bedrock-camp-CvxD6hHk.js";import{r as a,s as o}from"./legacy-api-aliases-DWJHPSiz.js";var s=e({config:()=>d,detectRuntime:()=>C,discoverModels:()=>S,originOf:()=>b,register:()=>y,verifyConnection:()=>E});const c=t(`local-llm`),l=`local-llm`,u=`${l}-unconfigured`,d={id:l,name:`Local LLM (OpenAI-compatible)`,description:[`Connect to any OpenAI-compatible local model server.`,``,`Common base URLs:`,` • Ollama http://localhost:11434/v1`,` • LM Studio http://localhost:1234/v1`,` • llama.cpp http://localhost:8080/v1`,` • vLLM http://localhost:8000/v1`,` • mlx_lm http://localhost:8080/v1`,` • Jan http://localhost:1337/v1`,``,`Ollama needs OLLAMA_ORIGINS=* (or chrome-extension://*) so the`,`browser can reach it. macOS: launchctl setenv OLLAMA_ORIGINS "*".`].join(`
1
+ import{n as e}from"./rolldown-runtime-aKtaBQYM.js";import{t}from"./logger-LESFN7Hj.js";import{d as n}from"./account-store-DBH6AYjF.js";import{p as r}from"./transform-messages-CVIV-EgO.js";import{p as i}from"./bedrock-camp-CvxD6hHk.js";import{r as a,s as o}from"./legacy-api-aliases-DWJHPSiz.js";var s=e({config:()=>d,detectRuntime:()=>C,discoverModels:()=>S,originOf:()=>b,register:()=>y,verifyConnection:()=>E});const c=t(`local-llm`),l=`local-llm`,u=`${l}-unconfigured`,d={id:l,name:`Local LLM (OpenAI-compatible)`,description:[`Connect to any OpenAI-compatible local model server.`,``,`Common base URLs:`,` • Ollama http://localhost:11434/v1`,` • LM Studio http://localhost:1234/v1`,` • llama.cpp http://localhost:8080/v1`,` • vLLM http://localhost:8000/v1`,` • mlx_lm http://localhost:8080/v1`,` • Jan http://localhost:1337/v1`,``,`Ollama needs OLLAMA_ORIGINS=* (or chrome-extension://*) so the`,`browser can reach it. macOS: launchctl setenv OLLAMA_ORIGINS "*".`].join(`
2
2
  `),requiresApiKey:!1,optionalApiKey:!0,apiKeyPlaceholder:`Leave empty for local servers, or paste a key for hosted endpoints`,apiKeyEnvVar:`LOCAL_LLM_API_KEY`,requiresBaseUrl:!0,baseUrlPlaceholder:`http://localhost:11434/v1`,baseUrlDescription:`Ollama: 11434 • LM Studio: 1234 • llama.cpp/mlx: 8080 • vLLM: 8000 • Jan: 1337. Trailing /v1 required.`,requiresDeployment:!0,deploymentPlaceholder:`llama3.1:8b, qwen2.5-coder:14b`,deploymentDescription:`Comma-separated model IDs from your server. List them with: curl <baseUrl>/models | jq -r .data[].id`,getModelIds:()=>{let e=f(n(l));return e.length===0?[{id:u,name:`Local LLM (set base URL + model IDs in Settings)`,api:`openai`}]:e.map(e=>({id:e,name:e,api:`openai`,input:[`text`],context_window:32e3,max_tokens:4096}))}};function f(e){return e?e.split(`,`).map(e=>e.trim()).filter(Boolean):[]}const p=`${l}-openai`;function m(e){return{...e,api:`openai-completions`}}function h(e){let t=e??{};return!t.apiKey||t.apiKey.length===0?{...t,apiKey:`local`}:t}const g=(e,t,n={})=>e.id===u?v(e,`Local LLM is not configured. Set base URL and model IDs in Settings.`):e.baseUrl?a(m(e),t,h(n)):v(e,`Local LLM base URL is required (e.g. http://localhost:11434/v1).`),_=(e,t,n)=>e.id===u?v(e,`Local LLM is not configured. Set base URL and model IDs in Settings.`):e.baseUrl?o(m(e),t,h(n)):v(e,`Local LLM base URL is required (e.g. http://localhost:11434/v1).`);function v(e,t){let n=r(),i={role:`assistant`,content:[],api:e.api,provider:e.provider,model:e.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:`error`,errorMessage:t,timestamp:Date.now()};return queueMicrotask(()=>{n.push({type:`error`,reason:`error`,error:i}),n.end()}),n}function y(){i({api:p,stream:g,streamSimple:_})}function b(e){try{let t=new URL(e);return`${t.protocol}//${t.host}`}catch{return e.replace(/\/v1\/?$/,``).replace(/\/+$/,``)}}function x(e){let t=e.replace(/\/+$/,``);try{let e=new URL(t);if(e.pathname===``||e.pathname===`/`)return`${t}/v1`}catch{}return t}async function S(e,t,n){let r=`${x(e)}/models`,i={Accept:`application/json`};t&&t.length>0&&(i.Authorization=`Bearer ${t}`);let a=await fetch(r,{method:`GET`,headers:i,signal:n});if(!a.ok)throw Error(`GET ${r} -> ${a.status} ${a.statusText}`);let o=await a.json();return Array.isArray(o.data)?o.data.map(e=>e.id??``).filter(e=>e.length>0):[]}async function C(e,t){let n=b(e),r=await T(`${n}/api/version`,t);if(r&&typeof r.version==`string`)return{kind:`ollama`,version:r.version};let i=await T(`${n}/api/v0/models`,t);if(i&&i.object===`list`)return{kind:`lmstudio`};let a=await T(`${n}/props`,t);if(a&&`build_info`in a)return{kind:`llamacpp`,version:a.build_info?.version};let o=w(e);return o===`11434`?{kind:`ollama`}:o===`1234`?{kind:`lmstudio`}:o===`8000`?{kind:`vllm`}:o===`1337`?{kind:`jan`}:{kind:`unknown`}}function w(e){try{return new URL(e).port||null}catch{return null}}async function T(e,t){try{let n=await fetch(e,{method:`GET`,signal:t});return n.ok?await n.json():null}catch{return null}}async function E(e,t,n){let r={kind:`unknown`};try{r=await C(e,n)}catch{}try{let i=await S(e,t,n);return{ok:!0,runtime:r,models:i}}catch(t){let n=t instanceof Error?t.message:String(t),i=D(n,r.kind);return c.warn(`verifyConnection failed`,{baseUrl:e,runtime:r.kind,message:n}),{ok:!1,runtime:r,models:[],error:i}}}function D(e,t){let n=e.toLowerCase();return n.includes(`failed to fetch`)||n.includes(`networkerror`)?t===`ollama`?{kind:`cors`,message:e,hint:'Ollama rejects requests from non-localhost origins by default. Set OLLAMA_ORIGINS=* (or chrome-extension://*) and restart Ollama. macOS: `launchctl setenv OLLAMA_ORIGINS "*"` then quit and relaunch the Ollama app.'}:{kind:`connection`,message:e,hint:`Server unreachable. Check the URL and that the server is running.`}:n.includes(` 401`)||n.includes(` 403`)?{kind:`auth`,message:e,hint:`Server returned an auth error. If your endpoint requires a key, set it in Settings.`}:/-> \d{3} /.test(e)?{kind:`http`,message:e}:{kind:`unknown`,message:e}}export{s as n,d as t};
@@ -1,2 +1,2 @@
1
- import{s as e}from"./models-CzSI8IsT.js";import{a as t}from"./compat-DyT25qXb.js";import{r as n,s as r}from"./legacy-api-aliases-BQSsmFIS.js";import{b as i}from"./account-store-0KfyaB_Y.js";import{t as a}from"./logger-DDBAeTLF.js";var o=a(`local-llm`),s=`local-llm`,c=`local`,l=`${s}-unconfigured`,u={id:s,name:`Local LLM (OpenAI-compatible)`,description:[`Connect to any OpenAI-compatible local model server.`,``,`Common base URLs:`,` • Ollama http://localhost:11434/v1`,` • LM Studio http://localhost:1234/v1`,` • llama.cpp http://localhost:8080/v1`,` • vLLM http://localhost:8000/v1`,` • mlx_lm http://localhost:8080/v1`,` • Jan http://localhost:1337/v1`,``,`Ollama needs OLLAMA_ORIGINS=* (or chrome-extension://*) so the`,`browser can reach it. macOS: launchctl setenv OLLAMA_ORIGINS "*".`].join(`
1
+ import{s as e}from"./models-CzSI8IsT.js";import{a as t}from"./compat-DyT25qXb.js";import{r as n,s as r}from"./legacy-api-aliases-BQSsmFIS.js";import{b as i}from"./account-store-CK-N94Ou.js";import{t as a}from"./logger-DDBAeTLF.js";var o=a(`local-llm`),s=`local-llm`,c=`local`,l=`${s}-unconfigured`,u={id:s,name:`Local LLM (OpenAI-compatible)`,description:[`Connect to any OpenAI-compatible local model server.`,``,`Common base URLs:`,` • Ollama http://localhost:11434/v1`,` • LM Studio http://localhost:1234/v1`,` • llama.cpp http://localhost:8080/v1`,` • vLLM http://localhost:8000/v1`,` • mlx_lm http://localhost:8080/v1`,` • Jan http://localhost:1337/v1`,``,`Ollama needs OLLAMA_ORIGINS=* (or chrome-extension://*) so the`,`browser can reach it. macOS: launchctl setenv OLLAMA_ORIGINS "*".`].join(`
2
2
  `),requiresApiKey:!1,optionalApiKey:!0,apiKeyPlaceholder:`Leave empty for local servers, or paste a key for hosted endpoints`,apiKeyEnvVar:`LOCAL_LLM_API_KEY`,requiresBaseUrl:!0,baseUrlPlaceholder:`http://localhost:11434/v1`,baseUrlDescription:`Ollama: 11434 • LM Studio: 1234 • llama.cpp/mlx: 8080 • vLLM: 8000 • Jan: 1337. Trailing /v1 required.`,requiresDeployment:!0,deploymentPlaceholder:`llama3.1:8b, qwen2.5-coder:14b`,deploymentDescription:`Comma-separated model IDs from your server. List them with: curl <baseUrl>/models | jq -r .data[].id`,getModelIds:()=>{let e=d(i(s));return e.length===0?[{id:l,name:`Local LLM (set base URL + model IDs in Settings)`,api:`openai`}]:e.map(e=>({id:e,name:e,api:`openai`,input:[`text`],context_window:32e3,max_tokens:4096}))}};function d(e){return e?e.split(`,`).map(e=>e.trim()).filter(Boolean):[]}var f=`openai-completions`,p=`${s}-openai`;function m(e){return{...e,api:f}}function h(e){let t=e??{};return!t.apiKey||t.apiKey.length===0?{...t,apiKey:c}:t}var g=(e,t,r={})=>e.id===l?v(e,`Local LLM is not configured. Set base URL and model IDs in Settings.`):e.baseUrl?n(m(e),t,h(r)):v(e,`Local LLM base URL is required (e.g. http://localhost:11434/v1).`),_=(e,t,n)=>e.id===l?v(e,`Local LLM is not configured. Set base URL and model IDs in Settings.`):e.baseUrl?r(m(e),t,h(n)):v(e,`Local LLM base URL is required (e.g. http://localhost:11434/v1).`);function v(t,n){let r=e(),i={role:`assistant`,content:[],api:t.api,provider:t.provider,model:t.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:`error`,errorMessage:n,timestamp:Date.now()};return queueMicrotask(()=>{r.push({type:`error`,reason:`error`,error:i}),r.end()}),r}function y(){t({api:p,stream:g,streamSimple:_})}function b(e){try{let t=new URL(e);return`${t.protocol}//${t.host}`}catch{return e.replace(/\/v1\/?$/,``).replace(/\/+$/,``)}}function x(e){let t=e.replace(/\/+$/,``);try{let e=new URL(t);if(e.pathname===``||e.pathname===`/`)return`${t}/v1`}catch{}return t}async function S(e,t,n){let r=`${x(e)}/models`,i={Accept:`application/json`};t&&t.length>0&&(i.Authorization=`Bearer ${t}`);let a=await fetch(r,{method:`GET`,headers:i,signal:n});if(!a.ok)throw Error(`GET ${r} -> ${a.status} ${a.statusText}`);let o=await a.json();return Array.isArray(o.data)?o.data.map(e=>e.id??``).filter(e=>e.length>0):[]}async function C(e,t){let n=b(e),r=await T(`${n}/api/version`,t);if(r&&typeof r.version==`string`)return{kind:`ollama`,version:r.version};let i=await T(`${n}/api/v0/models`,t);if(i&&i.object===`list`)return{kind:`lmstudio`};let a=await T(`${n}/props`,t);if(a&&`build_info`in a)return{kind:`llamacpp`,version:a.build_info?.version};let o=w(e);return o===`11434`?{kind:`ollama`}:o===`1234`?{kind:`lmstudio`}:o===`8000`?{kind:`vllm`}:o===`1337`?{kind:`jan`}:{kind:`unknown`}}function w(e){try{return new URL(e).port||null}catch{return null}}async function T(e,t){try{let n=await fetch(e,{method:`GET`,signal:t});return n.ok?await n.json():null}catch{return null}}async function E(e,t,n){let r={kind:`unknown`};try{r=await C(e,n)}catch{}try{let i=await S(e,t,n);return{ok:!0,runtime:r,models:i}}catch(t){let n=t instanceof Error?t.message:String(t),i=D(n,r.kind);return o.warn(`verifyConnection failed`,{baseUrl:e,runtime:r.kind,message:n}),{ok:!1,runtime:r,models:[],error:i}}}function D(e,t){let n=e.toLowerCase();return n.includes(`failed to fetch`)||n.includes(`networkerror`)?t===`ollama`?{kind:`cors`,message:e,hint:'Ollama rejects requests from non-localhost origins by default. Set OLLAMA_ORIGINS=* (or chrome-extension://*) and restart Ollama. macOS: `launchctl setenv OLLAMA_ORIGINS "*"` then quit and relaunch the Ollama app.'}:{kind:`connection`,message:e,hint:`Server unreachable. Check the URL and that the server is running.`}:n.includes(` 401`)||n.includes(` 403`)?{kind:`auth`,message:e,hint:`Server returned an auth error. If your endpoint requires a key, set it in Settings.`}:/-> \d{3} /.test(e)?{kind:`http`,message:e}:{kind:`unknown`,message:e}}export{u as config,C as detectRuntime,S as discoverModels,b as originOf,y as register,E as verifyConnection};
@@ -1,5 +1,5 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/extension-bridge-transport-DHBo-K6K.js","assets/logger-DDBAeTLF.js","assets/lick-ws-bridge-BkMe-xPV.js","assets/tray-leader-DcLymd_E.js","assets/rolldown-runtime-aKtaBQYM.js","assets/proxied-fetch-DETjVL-j.js","assets/preload-helper-Czpn1I53.js","assets/base64-DpPqYZJF.js","assets/src-CS5gSDhT.js","assets/runtime-env-DH4NDw4t.js","assets/fetch-body-D2PwksUW.js","assets/tray-runtime-config-DJIIJaBR.js","assets/messages-BD4p8GuF.js","assets/db-ysOO0kLr.js","assets/cdp-7evcrxxP.js","assets/navigation-watcher-BoJS9hdc.js","assets/handoff-link-CfgH86mb.js","assets/remote-cdp-transport-DOoXIxy3.js","assets/tray-sync-protocol-CVdiCvfU.js","assets/main-cherry-CGm5knH6.js","assets/synthetic-cdp-transport-DLIt5SkY.js","assets/wc-shell-BcLe36CI.js","assets/telemetry-C8rZr13D.js","assets/icons-C5g936Qd.js","assets/dictation-priming-DGpw1lUV.js","assets/timestamp-preference-DgrTvVNx.js","assets/src-6TqoULh8.js","assets/speech-C5U8h4In.js","assets/soundscape-cues-5_sT5Un6.js","assets/wc-scoop-color-CByZNEJo.js","assets/wc-shell-WkeczD9x.css","assets/wc-follower-DwatFMHA.js","assets/theme-engine-jfuTMXZM.js","assets/dip-BumXS1a9.js","assets/wc-permissions-registry-Blyunq37.js","assets/hid-device-registry-DboUgvzI.js","assets/serial-port-registry-DsPZvGpT.js","assets/usb-operations-BQbhk96u.js","assets/usb-device-registry-BOGfZXgp.js","assets/sprinkle-renderer-B0y9_9py.js","assets/theme-C8b_iQ_9.js","assets/sprinkle-bridge-CmJpELpy.js","assets/shared-Dwjvg8S5.js","assets/mime-types-ugOWOUZ9.js","assets/wc-attach-DU0svqb7.js","assets/wc-live-DcaNrDBs.js","assets/account-store-0KfyaB_Y.js","assets/compat-DyT25qXb.js","assets/models-CzSI8IsT.js","assets/provider-env-D37PhSJu.js","assets/__vite-browser-external-SwrSgYTf.js","assets/context-compaction-dcYYajWb.js","assets/secret-topology-D2k1IxFk.js","assets/secrets-bridge-client-CONYX8PU.js","assets/port-bridge-client-CdvMlimf.js","assets/tool-ui-DfXu6quJ.js","assets/providers-C5IxOdJy.js","assets/panel-rpc-DmJSNs0I.js","assets/bedrock-camp-BEi8MYUS.js","assets/transform-messages-fFaW-DLG.js","assets/tray-follower-status-CyJIKXH4.js","assets/session-freezer-DdYYo55y.js","assets/attachments-CByeG2Ru.js","assets/types-idfTVsM8.js","assets/page-follower-tray-DFeLlotx.js","assets/wc-sprinkles-Ce05-7PD.js","assets/oauth-bootstrap-B_ydSM5a.js","assets/provider-settings-CLFfVTte.js","assets/clipboard-DuHpK59o.js","assets/tray-join-url-BIvzbiFR.js","assets/legacy-styles-DcRu2WCJ.js","assets/connect-surface-DaZKS0Lr.js","assets/wc-extension-D3wWW1XJ.js","assets/wc-detached-B3WCbbZT.js"])))=>i.map(i=>d[i]);
2
- import"./modulepreload-polyfill-Dezn_h7o.js";import{t as e}from"./preload-helper-Czpn1I53.js";import{a as t}from"./account-store-0KfyaB_Y.js";import{t as n}from"./logger-DDBAeTLF.js";import"./src-CS5gSDhT.js";import"./electron-overlay-route-CjT6k9Df.js";import{c as r,l as i,s as a}from"./proxied-fetch-DETjVL-j.js";import{n as o,t as s}from"./runtime-env-DH4NDw4t.js";import{a as c}from"./providers-C5IxOdJy.js";import{t as l}from"./bridge-launch-params-jegYRGJ6.js";import"./messages-BD4p8GuF.js";import{c as u,l as d,o as f,t as p}from"./tray-runtime-config-DJIIJaBR.js";import{t as m}from"./setup-sudo-CpuvPX2I.js";import{t as h}from"./telemetry-C8rZr13D.js";import"./provider-settings-CLFfVTte.js";var g=`slicc-nuke-control`,_=[`slicc:welcome-flow-fired`,`slicc.trayJoinUrl`,`slicc.trayWorkerBaseUrl`];function v(e=()=>location.reload()){if(typeof BroadcastChannel!=`function`)return()=>{};let t=new BroadcastChannel(g),n=t=>{let n=t.data;if(n?.type===`nuke-reload`){if(Array.isArray(n.keysToRemove)){for(let e of n.keysToRemove)if(typeof e==`string`)try{localStorage.removeItem(e)}catch{}}e()}};return t.addEventListener(`message`,n),()=>{t.removeEventListener(`message`,n),t.close()}}async function y(){try{let e=await navigator.serviceWorker?.getRegistrations?.();e&&await Promise.all(e.map(e=>e.unregister().catch(()=>!1)))}catch{}try{let e=await indexedDB.databases();await Promise.all(e.filter(e=>!!e.name).map(e=>new Promise(t=>{let n=indexedDB.deleteDatabase(e.name);n.onsuccess=()=>t(),n.onerror=()=>t(),n.onblocked=()=>t()})))}catch{}try{let e=navigator.storage;if(typeof e?.getDirectory==`function`){let t=await e.getDirectory(),n=[];for await(let e of t.keys())n.push(e);await Promise.all(n.map(e=>t.removeEntry(e,{recursive:!0}).catch(()=>{})))}}catch{}}function b(e,t,n={}){let r=n.wipe??y,i=n.reload??(()=>location.reload()),a=t instanceof Error?t.message:String(t),o=document.createElement(`div`);o.style.cssText=`padding:2rem;text-align:center;font-family:system-ui;`;let s=document.createElement(`h1`);s.style.color=`var(--s2-negative, #e34850)`,s.textContent=`Failed to start`;let c=document.createElement(`p`);c.style.color=`var(--s2-content-tertiary, #717171)`,c.textContent=a;let l=document.createElement(`div`);l.style.cssText=`display:flex;gap:0.75rem;justify-content:center;flex-wrap:wrap;margin-top:1.5rem;`;let u=document.createElement(`button`);u.type=`button`,u.textContent=`Reset local data & reload`,u.style.cssText=`padding:0.5rem 1rem;cursor:pointer;border:1px solid var(--s2-negative, #e34850);background:var(--s2-negative, #e34850);color:#fff;border-radius:4px;`;let d=document.createElement(`button`);for(d.type=`button`,d.textContent=`Reload`,d.style.cssText=`padding:0.5rem 1rem;cursor:pointer;border:1px solid var(--s2-content-tertiary, #717171);background:transparent;color:inherit;border-radius:4px;`,u.addEventListener(`click`,()=>{u.disabled=!0,d.disabled=!0,u.textContent=`Resetting…`,(async()=>{try{await r()}catch{}for(let e of _)try{localStorage.removeItem(e)}catch{}i()})()}),d.addEventListener(`click`,()=>{i()}),l.append(u,d),o.append(s,c,l);e.firstChild;)e.removeChild(e.firstChild);e.appendChild(o)}var x=`slicc:bridge-config`,S=`slicc:extension-delegate-config`;function C(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.type===`slicc:ext-fetch`&&typeof t.extensionId==`string`&&!!t.request&&typeof t.request==`object`}var w=n(`boot/ext-fetch-delegate`);function T(){let e=globalThis.chrome?.runtime;return e&&typeof e.connect==`function`?e:null}function E(e,t,n){let r=T();if(!r){try{t.postMessage({type:`response-error`,error:`extension-delegate: chrome.runtime.connect unavailable`})}catch{}t.close();return}let i=e.extensionId||n,a;try{a=r.connect(i,{name:`fetch-proxy.fetch`})}catch(e){try{t.postMessage({type:`response-error`,error:`extension-delegate: connect failed — ${e instanceof Error?e.message:String(e)}`})}catch{}t.close();return}let o=!1,s=()=>{o=!0;try{a.disconnect()}catch{}try{t.close()}catch{}};a.onMessage.addListener(e=>{if(o)return;let n=e;try{t.postMessage(n)}catch{}(n.type===`response-end`||n.type===`response-error`)&&s()}),a.onDisconnect.addListener(()=>{if(!o){try{t.postMessage({type:`response-error`,error:`extension-delegate: fetch-proxy port disconnected`})}catch{}s()}}),a.postMessage({type:`request`,...e.request})}function D(e){typeof navigator>`u`||!navigator.serviceWorker||navigator.serviceWorker.addEventListener(`message`,t=>{if(!C(t.data))return;let n=t.ports?.[0];if(!n){w.warn(`delegated fetch envelope arrived without a response port`);return}E(t.data,n,e)})}function O(){if(o())return;let e=new Blob([`
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/extension-bridge-transport-DHBo-K6K.js","assets/logger-DDBAeTLF.js","assets/lick-ws-bridge-CJh2_Uld.js","assets/tray-leader-DcLymd_E.js","assets/rolldown-runtime-aKtaBQYM.js","assets/proxied-fetch-DETjVL-j.js","assets/preload-helper-Czpn1I53.js","assets/base64-DpPqYZJF.js","assets/src-CS5gSDhT.js","assets/runtime-env-DH4NDw4t.js","assets/fetch-body-D2PwksUW.js","assets/tray-runtime-config-DJIIJaBR.js","assets/messages-BD4p8GuF.js","assets/db-ysOO0kLr.js","assets/cdp-7evcrxxP.js","assets/navigation-watcher-BoJS9hdc.js","assets/handoff-link-CfgH86mb.js","assets/remote-cdp-transport-DOoXIxy3.js","assets/tray-sync-protocol-CVdiCvfU.js","assets/main-cherry-CGm5knH6.js","assets/synthetic-cdp-transport-DLIt5SkY.js","assets/wc-shell-BSCmpIWS.js","assets/telemetry-C8rZr13D.js","assets/icons-C5g936Qd.js","assets/dictation-priming-DGpw1lUV.js","assets/timestamp-preference-DgrTvVNx.js","assets/src-6TqoULh8.js","assets/speech-C5U8h4In.js","assets/soundscape-cues-5_sT5Un6.js","assets/wc-scoop-color-CByZNEJo.js","assets/wc-shell-WkeczD9x.css","assets/wc-follower-C--23seG.js","assets/theme-engine-jfuTMXZM.js","assets/dip-BumXS1a9.js","assets/wc-permissions-registry-Blyunq37.js","assets/hid-device-registry-DboUgvzI.js","assets/serial-port-registry-DsPZvGpT.js","assets/usb-operations-BQbhk96u.js","assets/usb-device-registry-BOGfZXgp.js","assets/sprinkle-renderer-B0y9_9py.js","assets/theme-C8b_iQ_9.js","assets/sprinkle-bridge-CmJpELpy.js","assets/shared-Dwjvg8S5.js","assets/mime-types-ugOWOUZ9.js","assets/wc-attach-DU0svqb7.js","assets/wc-live-CUrQxCqR.js","assets/account-store-CK-N94Ou.js","assets/compat-DyT25qXb.js","assets/models-CzSI8IsT.js","assets/provider-env-D37PhSJu.js","assets/__vite-browser-external-SwrSgYTf.js","assets/context-compaction-dcYYajWb.js","assets/secret-topology-D2k1IxFk.js","assets/secrets-bridge-client-CONYX8PU.js","assets/port-bridge-client-CdvMlimf.js","assets/tool-ui-DfXu6quJ.js","assets/providers-lerk0za2.js","assets/panel-rpc-DmJSNs0I.js","assets/bedrock-camp-BEi8MYUS.js","assets/transform-messages-fFaW-DLG.js","assets/tray-follower-status-CyJIKXH4.js","assets/session-freezer-81utLS2y.js","assets/attachments-CByeG2Ru.js","assets/types-idfTVsM8.js","assets/leader-session-events-m7I5BMZy.js","assets/page-follower-tray-CuPgRSdw.js","assets/wc-sprinkles-Dn2Fn2mr.js","assets/oauth-bootstrap-C6MrQSJ4.js","assets/provider-settings-BAQroSjB.js","assets/clipboard-DuHpK59o.js","assets/tray-join-url-BIvzbiFR.js","assets/legacy-styles-DcRu2WCJ.js","assets/connect-surface-C-sQsVm2.js","assets/wc-extension-7TX44Qkh.js","assets/wc-detached-B3WCbbZT.js"])))=>i.map(i=>d[i]);
2
+ import"./modulepreload-polyfill-Dezn_h7o.js";import{t as e}from"./preload-helper-Czpn1I53.js";import{a as t}from"./account-store-CK-N94Ou.js";import{t as n}from"./logger-DDBAeTLF.js";import"./src-CS5gSDhT.js";import"./electron-overlay-route-CjT6k9Df.js";import{c as r,l as i,s as a}from"./proxied-fetch-DETjVL-j.js";import{n as o,t as s}from"./runtime-env-DH4NDw4t.js";import{a as c}from"./providers-lerk0za2.js";import{t as l}from"./bridge-launch-params-jegYRGJ6.js";import"./messages-BD4p8GuF.js";import{c as u,l as d,o as f,t as p}from"./tray-runtime-config-DJIIJaBR.js";import{t as m}from"./setup-sudo-h7qRDT2t.js";import{t as h}from"./telemetry-C8rZr13D.js";import"./provider-settings-BAQroSjB.js";var g=`slicc-nuke-control`,_=[`slicc:welcome-flow-fired`,`slicc.trayJoinUrl`,`slicc.trayWorkerBaseUrl`];function v(e=()=>location.reload()){if(typeof BroadcastChannel!=`function`)return()=>{};let t=new BroadcastChannel(g),n=t=>{let n=t.data;if(n?.type===`nuke-reload`){if(Array.isArray(n.keysToRemove)){for(let e of n.keysToRemove)if(typeof e==`string`)try{localStorage.removeItem(e)}catch{}}e()}};return t.addEventListener(`message`,n),()=>{t.removeEventListener(`message`,n),t.close()}}async function y(){try{let e=await navigator.serviceWorker?.getRegistrations?.();e&&await Promise.all(e.map(e=>e.unregister().catch(()=>!1)))}catch{}try{let e=await indexedDB.databases();await Promise.all(e.filter(e=>!!e.name).map(e=>new Promise(t=>{let n=indexedDB.deleteDatabase(e.name);n.onsuccess=()=>t(),n.onerror=()=>t(),n.onblocked=()=>t()})))}catch{}try{let e=navigator.storage;if(typeof e?.getDirectory==`function`){let t=await e.getDirectory(),n=[];for await(let e of t.keys())n.push(e);await Promise.all(n.map(e=>t.removeEntry(e,{recursive:!0}).catch(()=>{})))}}catch{}}function b(e,t,n={}){let r=n.wipe??y,i=n.reload??(()=>location.reload()),a=t instanceof Error?t.message:String(t),o=document.createElement(`div`);o.style.cssText=`padding:2rem;text-align:center;font-family:system-ui;`;let s=document.createElement(`h1`);s.style.color=`var(--s2-negative, #e34850)`,s.textContent=`Failed to start`;let c=document.createElement(`p`);c.style.color=`var(--s2-content-tertiary, #717171)`,c.textContent=a;let l=document.createElement(`div`);l.style.cssText=`display:flex;gap:0.75rem;justify-content:center;flex-wrap:wrap;margin-top:1.5rem;`;let u=document.createElement(`button`);u.type=`button`,u.textContent=`Reset local data & reload`,u.style.cssText=`padding:0.5rem 1rem;cursor:pointer;border:1px solid var(--s2-negative, #e34850);background:var(--s2-negative, #e34850);color:#fff;border-radius:4px;`;let d=document.createElement(`button`);for(d.type=`button`,d.textContent=`Reload`,d.style.cssText=`padding:0.5rem 1rem;cursor:pointer;border:1px solid var(--s2-content-tertiary, #717171);background:transparent;color:inherit;border-radius:4px;`,u.addEventListener(`click`,()=>{u.disabled=!0,d.disabled=!0,u.textContent=`Resetting…`,(async()=>{try{await r()}catch{}for(let e of _)try{localStorage.removeItem(e)}catch{}i()})()}),d.addEventListener(`click`,()=>{i()}),l.append(u,d),o.append(s,c,l);e.firstChild;)e.removeChild(e.firstChild);e.appendChild(o)}var x=`slicc:bridge-config`,S=`slicc:extension-delegate-config`;function C(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.type===`slicc:ext-fetch`&&typeof t.extensionId==`string`&&!!t.request&&typeof t.request==`object`}var w=n(`boot/ext-fetch-delegate`);function T(){let e=globalThis.chrome?.runtime;return e&&typeof e.connect==`function`?e:null}function E(e,t,n){let r=T();if(!r){try{t.postMessage({type:`response-error`,error:`extension-delegate: chrome.runtime.connect unavailable`})}catch{}t.close();return}let i=e.extensionId||n,a;try{a=r.connect(i,{name:`fetch-proxy.fetch`})}catch(e){try{t.postMessage({type:`response-error`,error:`extension-delegate: connect failed — ${e instanceof Error?e.message:String(e)}`})}catch{}t.close();return}let o=!1,s=()=>{o=!0;try{a.disconnect()}catch{}try{t.close()}catch{}};a.onMessage.addListener(e=>{if(o)return;let n=e;try{t.postMessage(n)}catch{}(n.type===`response-end`||n.type===`response-error`)&&s()}),a.onDisconnect.addListener(()=>{if(!o){try{t.postMessage({type:`response-error`,error:`extension-delegate: fetch-proxy port disconnected`})}catch{}s()}}),a.postMessage({type:`request`,...e.request})}function D(e){typeof navigator>`u`||!navigator.serviceWorker||navigator.serviceWorker.addEventListener(`message`,t=>{if(!C(t.data))return;let n=t.ports?.[0];if(!n){w.warn(`delegated fetch envelope arrived without a response port`);return}E(t.data,n,e)})}function O(){if(o())return;let e=new Blob([`
3
3
  let lastPong = Date.now();
4
4
  let frozen = false;
5
5
  setInterval(() => {
@@ -19,4 +19,4 @@ import"./modulepreload-polyfill-Dezn_h7o.js";import{t as e}from"./preload-helper
19
19
  }
20
20
  }
21
21
  };
22
- `],{type:`application/javascript`}),t=URL.createObjectURL(e),n=new Worker(t);URL.revokeObjectURL(t),n.onmessage=e=>{if(e.data.type===`ping`)n.postMessage({type:`pong`});else if(e.data.type===`freeze-detected`)console.error(`[freeze-watchdog] Main thread blocked for ${e.data.elapsed}ms — capturing trace on recovery`);else if(e.data.type===`freeze-recovered`){console.error(`[freeze-watchdog] Main thread recovered. Stack trace at recovery point:`),console.trace(`[freeze-watchdog] recovery stack`);let e=performance.getEntriesByType(`longtask`);e.length>0&&console.error(`[freeze-watchdog] Long tasks:`,e.map(e=>({duration:e.duration,startTime:e.startTime,name:e.name})))}},window.addEventListener(`beforeunload`,()=>{n.terminate()},{once:!0})}var k=null;function A(){return k||(k=v(),k)}n(`stale-asset`);var ee=`slicc-stale-asset-reload`;function te(e,t){if(typeof BroadcastChannel!=`function`)return()=>{};let n=new BroadcastChannel(ee),r=n=>{let r=n.data;r?.type!==`stale-asset-reload`||r.instanceId!==e||t(r.replayTurn===!0)};return n.addEventListener(`message`,r),()=>{n.removeEventListener(`message`,r),n.close()}}var ne=`slicc:stale-asset-reloaded-at`,re=6e4,j=`slicc:stale-asset-replay`;function M(e=window.sessionStorage){try{e.setItem(j,`1`)}catch{}}function N(e=window.sessionStorage){try{return e.getItem(j)===`1`?(e.removeItem(j),!0):!1}catch{return!1}}function P(){return{reload:()=>window.location.reload(),storage:window.sessionStorage,now:()=>Date.now(),windowMs:re,storageKey:ne}}function ie(e,t,n){return e===null||t-e>=n}function F(e=P()){let t;try{t=e.storage.getItem(e.storageKey)}catch{return!1}let n=t===null?null:Number(t),r=n!==null&&Number.isFinite(n)?n:null,i=e.now();if(!ie(r,i,e.windowMs))return!1;try{e.storage.setItem(e.storageKey,String(i))}catch{return!1}return e.reload(),!0}var I=null,L=null;function ae(e){I||(L={...P(),...e},I=e=>{F(L)&&e.preventDefault()},window.addEventListener(`vite:preloadError`,I))}var R=null;function z(e){return R||(R=te(e,e=>{e&&M(),F(L??void 0)}),R)}var B=`slicc-cdp-superseded-banner`;function V(e){if(e.getElementById(B))return;let t=e.createElement(`div`);t.id=B,t.setAttribute(`role`,`alert`),t.textContent=`Another SLICC tab or window has taken control of this browser instance. Only one tab can drive the browser per instance — close the other tabs, then reload this page to resume.`,t.style.cssText=[`position:fixed`,`top:0`,`left:0`,`right:0`,`z-index:2147483647`,`padding:10px 16px`,`background:#b3261e`,`color:#fff`,`font:13px/1.4 system-ui,sans-serif`,`text-align:center`,`box-shadow:0 1px 4px rgba(0,0,0,0.3)`].join(`;`),e.body.appendChild(t)}function H(e,t,n){if(t){try{if(new URL(e).searchParams.has(`detached`))return`extension-detached`}catch{}return`extension`}try{let t=new URL(e);return t.searchParams.get(`connect`)===`1`?`connect`:t.searchParams.get(`runtime`)===`hosted-leader`?`hosted-leader`:t.searchParams.get(`cherry`)===`1`?`cherry`:u(e,n===void 0?typeof window<`u`?window.localStorage:null:n)?`follower`:W(t)?`electron-overlay`:`standalone`}catch{return`standalone`}}function U(e,t){return e===`electron-overlay`||e===`hosted-leader`||e===`standalone`&&t}function W(e){return e.pathname===`/electron`||e.pathname===`/electron/`||e.searchParams.get(`runtime`)===`electron-overlay`}function G(){return typeof crypto<`u`&&typeof crypto.randomUUID==`function`?crypto.randomUUID():`slicc-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`}function K(e){let t;try{t=new URLSearchParams(e)}catch{return null}if(t.get(`slicc`)!==`leader`)return null;let n=t.get(`ext`);return n?{extensionId:n}:null}var q=[100,200,400,800,1600];async function J(e,t,n,r=q,i=e=>new Promise(t=>setTimeout(t,e))){let a=r.length+1,o=null;for(let s=0;s<a;s++)try{await e.connect(t),s>0&&n.info(`CDP bridge connect succeeded after retry`,{attempt:s+1});return}catch(e){o=e,s<r.length&&await i(r[s]??0)}n.warn(`Initial CDP connect failed after retries; worker-forwarded commands will retry on demand`,o instanceof Error?o.message:String(o))}async function oe(t,n,r){let{ExtensionBridgeTransport:i}=await e(async()=>{let{ExtensionBridgeTransport:e}=await import(`./extension-bridge-transport-DHBo-K6K.js`);return{ExtensionBridgeTransport:e}},__vite__mapDeps([0,1])),{mapDiscoveryPayloadToLickEvent:a,mapNavigatePayloadToLickEvent:o}=await e(async()=>{let{mapDiscoveryPayloadToLickEvent:e,mapNavigatePayloadToLickEvent:t}=await import(`./lick-ws-bridge-BkMe-xPV.js`);return{mapDiscoveryPayloadToLickEvent:e,mapNavigatePayloadToLickEvent:t}},__vite__mapDeps([2,1,3,4,5,6,7,8,9,10,11,12,13])),s=null,c=[],l=!1,u=e=>{s=e;for(let t of c)e.sendForwardedLick(t);c.length=0},d=e=>{if(e){if(s){s.sendForwardedLick(e);return}c.length>=50&&(c.shift(),l||(l=!0,r.warn(`extension-bridge lick buffer overflow (cap 50); dropping oldest pending licks until the kernel client attaches`))),c.push(e)}},f=new t(new i({extensionId:n,onLick:e=>{d(o(e))},onDiscovery:e=>{d(a(e))},onOpenSettings:()=>{globalThis.dispatchEvent(new CustomEvent(`slicc:open-settings-from-panel`))}}));return await J(f,void 0,r),{browser:f,attachLickForwardingClient:u}}async function se(t){let{runtimeMode:n,envBaseUrl:o,window:c,log:u}=t,h=n===`electron-overlay`;u.info(`setting up standalone page runtime (BrowserAPI + CDP)`,{runtimeMode:n});let{BrowserAPI:g}=await e(async()=>{let{BrowserAPI:e}=await import(`./cdp-7evcrxxP.js`);return{BrowserAPI:e}},__vite__mapDeps([14,1,15,16,8,17,18,4]));await m({log:u});let _,v,y,b=null,x=null,S=null,C=null,w,T=n===`cherry`?null:K(c.location.search),E=!!T&&s(),D=n===`cherry`||E?null:l(c.location.search);D?.apiBaseUrl&&(b=D.apiBaseUrl,i(D.apiBaseUrl),x=D.token,a(D.token)),D?.lickWsUrl&&(S=D.lickWsUrl);let O=await f(),k=U(n,O!==null)?p:null;if(await d({locationHref:c.location.href,storage:c.localStorage,envBaseUrl:o,defaultWorkerBaseUrl:k,runtimeConfigFetcher:async()=>O}),n===`cherry`){let{setupCherryFollower:t}=await e(async()=>{let{setupCherryFollower:e}=await import(`./main-cherry-CGm5knH6.js`);return{setupCherryFollower:e}},__vite__mapDeps([19,1,14,15,16,8,17,18,4,20])),n=await t();_=n.browser,v=n.joinUrl,y=n.transport}else if(T&&s()){u.info(`Routing CDP through the extension bridge (leader tab)`);let e=await oe(g,T.extensionId,u);_=e.browser,w=e.attachLickForwardingClient,C=T.extensionId,r(T.extensionId)}else{_=new g,D&&u.info(`Routing CDP through local standalone bridge`,{url:D.url,role:D.role??`(unset)`});let e=D?{url:D.url,protocols:D.subprotocol}:void 0;D?.role===`follower`?(u.info(`Skipping CDP connect for follower overlay tab`),_.primeConnectOptions(e)):(await J(_,e,u),_.setCdpSupersededHandler(()=>V(c.document)))}let A=_.getTransport();return globalThis.__slicc_browser=_,{browser:_,realCdpTransport:A,cherryJoinUrl:v,cherryTransport:y,instanceId:G(),isElectronOverlay:h,localApiBaseUrl:b,bridgeToken:x,localLickWsUrl:S,extensionDelegateId:C,attachLickForwardingClient:w}}var Y=n(`boot/sw-registration`);async function ce(e=null,t=null){let n=(()=>{try{return new URL(window.location.href).searchParams.get(`connect`)===`1`}catch{return!1}})();if(`serviceWorker`in navigator&&n&&await le())return`reload-pending`;if(!(`serviceWorker`in navigator)||n)return`ready`;try{if(await navigator.serviceWorker.register(`/preview-sw.js`,{scope:`/preview/`}),Y.info(`Preview SW registered`),!o())try{await navigator.serviceWorker.register(`/llm-proxy-sw.js`,{scope:`/`}),Y.info(`LLM-proxy SW registered`)}catch(e){Y.error(`LLM-proxy SW registration failed — cross-origin LLM calls will hit CORS`,e)}if(navigator.serviceWorker.controller||await Promise.race([new Promise(e=>navigator.serviceWorker.addEventListener(`controllerchange`,()=>e(),{once:!0})),new Promise(e=>setTimeout(e,1500))]),!navigator.serviceWorker.controller&&!sessionStorage.getItem(`slicc-sw-reloaded`))return sessionStorage.setItem(`slicc-sw-reloaded`,`1`),Y.info(`Reloading once to gain SW control`),location.reload(),`reload-pending`;sessionStorage.removeItem(`slicc-sw-reloaded`),e&&(X(e),navigator.serviceWorker.addEventListener(`controllerchange`,()=>{X(e)})),t&&(Z(t),navigator.serviceWorker.addEventListener(`controllerchange`,()=>{Z(t)}))}catch(e){Y.error(`Preview SW registration failed — preview feature will not work`,e)}return`ready`}function X(e){let t=navigator.serviceWorker.controller;if(!t)return;let n={type:x,apiBaseUrl:e.apiBaseUrl,token:e.token};try{t.postMessage(n)}catch(e){Y.warn(`LLM-proxy SW bridge-config postMessage failed`,e)}}function Z(e){let t=navigator.serviceWorker.controller;if(!t)return;let n={type:S,extensionId:e.extensionId};try{t.postMessage(n)}catch(e){Y.warn(`LLM-proxy SW extension-delegate postMessage failed`,e)}}async function le(){try{let e=await navigator.serviceWorker.getRegistrations();if(await Promise.all(e.map(e=>e.unregister().catch(()=>!1))),navigator.serviceWorker.controller&&!sessionStorage.getItem(`slicc-connect-sw-cleared`))return sessionStorage.setItem(`slicc-connect-sw-cleared`,`1`),Y.info(`connect mode: detaching from service worker (no proxy on worker origin)`),location.reload(),!0;sessionStorage.removeItem(`slicc-connect-sw-cleared`)}catch(e){Y.error(`connect-mode SW cleanup failed`,e)}return!1}var Q=n(`main`);function $(e){try{return new URL(e).searchParams.has(`ui-fixture`)}catch{return!1}}async function ue(){ae();let n=document.getElementById(`app`);if(!n)throw Error(`#app element not found`);let r=o(),i=H(window.location.href,r);if($(window.location.href)){let{mountWcUiPreview:t}=await e(async()=>{let{mountWcUiPreview:e}=await import(`./wc-shell-BcLe36CI.js`).then(e=>e.a);return{mountWcUiPreview:e}},__vite__mapDeps([21,4,6,8,22,9,23,24,25,26,27,28,29,30]));t(n);return}O(),A(),i!==`connect`&&h().catch(()=>{});let a=l(window.location.search),u=i===`cherry`?null:K(window.location.search),d=!!u&&s();if(await ce(a?{apiBaseUrl:a.apiBaseUrl,token:a.token}:null,d&&u?{extensionId:u.extensionId}:null)===`reload-pending`)return;if(!r&&(i===`follower`||i===`cherry`)){let{mountWcUiFollower:t}=await e(async()=>{let{mountWcUiFollower:e}=await import(`./wc-follower-DwatFMHA.js`);return{mountWcUiFollower:e}},__vite__mapDeps([31,6,1,18,4,8,11,5,7,9,10,12,32,33,34,35,36,37,38,39,40,41,42,43,44,21,22,23,24,25,26,27,28,29,30,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,3,13,61,62,63,64,17,65]));return t(n,Q,i)}await c(),t();let{bootstrapOAuthReplicas:f}=await e(async()=>{let{bootstrapOAuthReplicas:e}=await import(`./oauth-bootstrap-B_ydSM5a.js`);return{bootstrapOAuthReplicas:e}},__vite__mapDeps([66,6,46,4,47,48,49,50,51,1,8,5,7,9,10,52,53,54,55,56,57,58,59,67,11,12,60,68,22,69]));if(await Promise.race([f().catch(e=>{Q.error(`OAuth bootstrap failed`,e)}),new Promise(e=>setTimeout(e,1e4))]),i===`connect`){globalThis.__slicc_connect_mode=!0;let{loadLegacyStyles:t}=await e(async()=>{let{loadLegacyStyles:e}=await import(`./legacy-styles-DcRu2WCJ.js`);return{loadLegacyStyles:e}},__vite__mapDeps([70,6]));await t();let{mountConnectSurface:r}=await e(async()=>{let{mountConnectSurface:e}=await import(`./connect-surface-DaZKS0Lr.js`);return{mountConnectSurface:e}},__vite__mapDeps([71,46,4,6,47,48,49,50,51,1,8,5,7,9,10,52,53,54,55,56,57,58,59,67,11,12,60,68,22,69]));await r(n);return}if(r){let{mountWcUiExtension:t}=await e(async()=>{let{mountWcUiExtension:e}=await import(`./wc-extension-D3wWW1XJ.js`);return{mountWcUiExtension:e}},__vite__mapDeps([72,6,73,12,45,46,4,47,48,49,50,51,1,8,5,7,9,10,52,53,54,55,56,57,58,59,11,60,22,3,13,42,43,24,33,34,35,36,37,38,39,40,32,41,61,62,63,23,21,25,26,27,28,29,30]));return t(n,Q,i===`extension-detached`)}d&&u&&D(u.extensionId);let{mountWcUiLive:p}=await e(async()=>{let{mountWcUiLive:e}=await import(`./wc-live-DcaNrDBs.js`);return{mountWcUiLive:e}},__vite__mapDeps([45,6,46,4,47,48,49,50,51,1,8,5,7,9,10,52,53,54,55,56,57,58,59,11,12,60,22,3,13,42,43,24,33,34,35,36,37,38,39,40,32,41,61,62,63,23,21,25,26,27,28,29,30]));return p(n,Q,i)}ue().catch(e=>{Q.error(`Fatal error`,e);let t=document.getElementById(`app`);t&&b(t,e)});export{z as i,N as n,F as r,se as t};
22
+ `],{type:`application/javascript`}),t=URL.createObjectURL(e),n=new Worker(t);URL.revokeObjectURL(t),n.onmessage=e=>{if(e.data.type===`ping`)n.postMessage({type:`pong`});else if(e.data.type===`freeze-detected`)console.error(`[freeze-watchdog] Main thread blocked for ${e.data.elapsed}ms — capturing trace on recovery`);else if(e.data.type===`freeze-recovered`){console.error(`[freeze-watchdog] Main thread recovered. Stack trace at recovery point:`),console.trace(`[freeze-watchdog] recovery stack`);let e=performance.getEntriesByType(`longtask`);e.length>0&&console.error(`[freeze-watchdog] Long tasks:`,e.map(e=>({duration:e.duration,startTime:e.startTime,name:e.name})))}},window.addEventListener(`beforeunload`,()=>{n.terminate()},{once:!0})}var k=null;function A(){return k||(k=v(),k)}n(`stale-asset`);var ee=`slicc-stale-asset-reload`;function te(e,t){if(typeof BroadcastChannel!=`function`)return()=>{};let n=new BroadcastChannel(ee),r=n=>{let r=n.data;r?.type!==`stale-asset-reload`||r.instanceId!==e||t(r.replayTurn===!0)};return n.addEventListener(`message`,r),()=>{n.removeEventListener(`message`,r),n.close()}}var ne=`slicc:stale-asset-reloaded-at`,re=6e4,j=`slicc:stale-asset-replay`;function M(e=window.sessionStorage){try{e.setItem(j,`1`)}catch{}}function N(e=window.sessionStorage){try{return e.getItem(j)===`1`?(e.removeItem(j),!0):!1}catch{return!1}}function P(){return{reload:()=>window.location.reload(),storage:window.sessionStorage,now:()=>Date.now(),windowMs:re,storageKey:ne}}function ie(e,t,n){return e===null||t-e>=n}function F(e=P()){let t;try{t=e.storage.getItem(e.storageKey)}catch{return!1}let n=t===null?null:Number(t),r=n!==null&&Number.isFinite(n)?n:null,i=e.now();if(!ie(r,i,e.windowMs))return!1;try{e.storage.setItem(e.storageKey,String(i))}catch{return!1}return e.reload(),!0}var I=null,L=null;function ae(e){I||(L={...P(),...e},I=e=>{F(L)&&e.preventDefault()},window.addEventListener(`vite:preloadError`,I))}var R=null;function z(e){return R||(R=te(e,e=>{e&&M(),F(L??void 0)}),R)}var B=`slicc-cdp-superseded-banner`;function V(e){if(e.getElementById(B))return;let t=e.createElement(`div`);t.id=B,t.setAttribute(`role`,`alert`),t.textContent=`Another SLICC tab or window has taken control of this browser instance. Only one tab can drive the browser per instance — close the other tabs, then reload this page to resume.`,t.style.cssText=[`position:fixed`,`top:0`,`left:0`,`right:0`,`z-index:2147483647`,`padding:10px 16px`,`background:#b3261e`,`color:#fff`,`font:13px/1.4 system-ui,sans-serif`,`text-align:center`,`box-shadow:0 1px 4px rgba(0,0,0,0.3)`].join(`;`),e.body.appendChild(t)}function H(e,t,n){if(t){try{if(new URL(e).searchParams.has(`detached`))return`extension-detached`}catch{}return`extension`}try{let t=new URL(e);return t.searchParams.get(`connect`)===`1`?`connect`:t.searchParams.get(`runtime`)===`hosted-leader`?`hosted-leader`:t.searchParams.get(`cherry`)===`1`?`cherry`:u(e,n===void 0?typeof window<`u`?window.localStorage:null:n)?`follower`:W(t)?`electron-overlay`:`standalone`}catch{return`standalone`}}function U(e,t){return e===`electron-overlay`||e===`hosted-leader`||e===`standalone`&&t}function W(e){return e.pathname===`/electron`||e.pathname===`/electron/`||e.searchParams.get(`runtime`)===`electron-overlay`}function G(){return typeof crypto<`u`&&typeof crypto.randomUUID==`function`?crypto.randomUUID():`slicc-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`}function K(e){let t;try{t=new URLSearchParams(e)}catch{return null}if(t.get(`slicc`)!==`leader`)return null;let n=t.get(`ext`);return n?{extensionId:n}:null}var q=[100,200,400,800,1600];async function J(e,t,n,r=q,i=e=>new Promise(t=>setTimeout(t,e))){let a=r.length+1,o=null;for(let s=0;s<a;s++)try{await e.connect(t),s>0&&n.info(`CDP bridge connect succeeded after retry`,{attempt:s+1});return}catch(e){o=e,s<r.length&&await i(r[s]??0)}n.warn(`Initial CDP connect failed after retries; worker-forwarded commands will retry on demand`,o instanceof Error?o.message:String(o))}async function oe(t,n,r){let{ExtensionBridgeTransport:i}=await e(async()=>{let{ExtensionBridgeTransport:e}=await import(`./extension-bridge-transport-DHBo-K6K.js`);return{ExtensionBridgeTransport:e}},__vite__mapDeps([0,1])),{mapDiscoveryPayloadToLickEvent:a,mapNavigatePayloadToLickEvent:o}=await e(async()=>{let{mapDiscoveryPayloadToLickEvent:e,mapNavigatePayloadToLickEvent:t}=await import(`./lick-ws-bridge-CJh2_Uld.js`);return{mapDiscoveryPayloadToLickEvent:e,mapNavigatePayloadToLickEvent:t}},__vite__mapDeps([2,1,3,4,5,6,7,8,9,10,11,12,13])),s=null,c=[],l=!1,u=e=>{s=e;for(let t of c)e.sendForwardedLick(t);c.length=0},d=e=>{if(e){if(s){s.sendForwardedLick(e);return}c.length>=50&&(c.shift(),l||(l=!0,r.warn(`extension-bridge lick buffer overflow (cap 50); dropping oldest pending licks until the kernel client attaches`))),c.push(e)}},f=new t(new i({extensionId:n,onLick:e=>{d(o(e))},onDiscovery:e=>{d(a(e))},onOpenSettings:()=>{globalThis.dispatchEvent(new CustomEvent(`slicc:open-settings-from-panel`))}}));return await J(f,void 0,r),{browser:f,attachLickForwardingClient:u}}async function se(t){let{runtimeMode:n,envBaseUrl:o,window:c,log:u}=t,h=n===`electron-overlay`;u.info(`setting up standalone page runtime (BrowserAPI + CDP)`,{runtimeMode:n});let{BrowserAPI:g}=await e(async()=>{let{BrowserAPI:e}=await import(`./cdp-7evcrxxP.js`);return{BrowserAPI:e}},__vite__mapDeps([14,1,15,16,8,17,18,4]));await m({log:u});let _,v,y,b=null,x=null,S=null,C=null,w,T=n===`cherry`?null:K(c.location.search),E=!!T&&s(),D=n===`cherry`||E?null:l(c.location.search);D?.apiBaseUrl&&(b=D.apiBaseUrl,i(D.apiBaseUrl),x=D.token,a(D.token)),D?.lickWsUrl&&(S=D.lickWsUrl);let O=await f(),k=U(n,O!==null)?p:null;if(await d({locationHref:c.location.href,storage:c.localStorage,envBaseUrl:o,defaultWorkerBaseUrl:k,runtimeConfigFetcher:async()=>O}),n===`cherry`){let{setupCherryFollower:t}=await e(async()=>{let{setupCherryFollower:e}=await import(`./main-cherry-CGm5knH6.js`);return{setupCherryFollower:e}},__vite__mapDeps([19,1,14,15,16,8,17,18,4,20])),n=await t();_=n.browser,v=n.joinUrl,y=n.transport}else if(T&&s()){u.info(`Routing CDP through the extension bridge (leader tab)`);let e=await oe(g,T.extensionId,u);_=e.browser,w=e.attachLickForwardingClient,C=T.extensionId,r(T.extensionId)}else{_=new g,D&&u.info(`Routing CDP through local standalone bridge`,{url:D.url,role:D.role??`(unset)`});let e=D?{url:D.url,protocols:D.subprotocol}:void 0;D?.role===`follower`?(u.info(`Skipping CDP connect for follower overlay tab`),_.primeConnectOptions(e)):(await J(_,e,u),_.setCdpSupersededHandler(()=>V(c.document)))}let A=_.getTransport();return globalThis.__slicc_browser=_,{browser:_,realCdpTransport:A,cherryJoinUrl:v,cherryTransport:y,instanceId:G(),isElectronOverlay:h,localApiBaseUrl:b,bridgeToken:x,localLickWsUrl:S,extensionDelegateId:C,attachLickForwardingClient:w}}var Y=n(`boot/sw-registration`);async function ce(e=null,t=null){let n=(()=>{try{return new URL(window.location.href).searchParams.get(`connect`)===`1`}catch{return!1}})();if(`serviceWorker`in navigator&&n&&await le())return`reload-pending`;if(!(`serviceWorker`in navigator)||n)return`ready`;try{if(await navigator.serviceWorker.register(`/preview-sw.js`,{scope:`/preview/`}),Y.info(`Preview SW registered`),!o())try{await navigator.serviceWorker.register(`/llm-proxy-sw.js`,{scope:`/`}),Y.info(`LLM-proxy SW registered`)}catch(e){Y.error(`LLM-proxy SW registration failed — cross-origin LLM calls will hit CORS`,e)}if(navigator.serviceWorker.controller||await Promise.race([new Promise(e=>navigator.serviceWorker.addEventListener(`controllerchange`,()=>e(),{once:!0})),new Promise(e=>setTimeout(e,1500))]),!navigator.serviceWorker.controller&&!sessionStorage.getItem(`slicc-sw-reloaded`))return sessionStorage.setItem(`slicc-sw-reloaded`,`1`),Y.info(`Reloading once to gain SW control`),location.reload(),`reload-pending`;sessionStorage.removeItem(`slicc-sw-reloaded`),e&&(X(e),navigator.serviceWorker.addEventListener(`controllerchange`,()=>{X(e)})),t&&(Z(t),navigator.serviceWorker.addEventListener(`controllerchange`,()=>{Z(t)}))}catch(e){Y.error(`Preview SW registration failed — preview feature will not work`,e)}return`ready`}function X(e){let t=navigator.serviceWorker.controller;if(!t)return;let n={type:x,apiBaseUrl:e.apiBaseUrl,token:e.token};try{t.postMessage(n)}catch(e){Y.warn(`LLM-proxy SW bridge-config postMessage failed`,e)}}function Z(e){let t=navigator.serviceWorker.controller;if(!t)return;let n={type:S,extensionId:e.extensionId};try{t.postMessage(n)}catch(e){Y.warn(`LLM-proxy SW extension-delegate postMessage failed`,e)}}async function le(){try{let e=await navigator.serviceWorker.getRegistrations();if(await Promise.all(e.map(e=>e.unregister().catch(()=>!1))),navigator.serviceWorker.controller&&!sessionStorage.getItem(`slicc-connect-sw-cleared`))return sessionStorage.setItem(`slicc-connect-sw-cleared`,`1`),Y.info(`connect mode: detaching from service worker (no proxy on worker origin)`),location.reload(),!0;sessionStorage.removeItem(`slicc-connect-sw-cleared`)}catch(e){Y.error(`connect-mode SW cleanup failed`,e)}return!1}var Q=n(`main`);function $(e){try{return new URL(e).searchParams.has(`ui-fixture`)}catch{return!1}}async function ue(){ae();let n=document.getElementById(`app`);if(!n)throw Error(`#app element not found`);let r=o(),i=H(window.location.href,r);if($(window.location.href)){let{mountWcUiPreview:t}=await e(async()=>{let{mountWcUiPreview:e}=await import(`./wc-shell-BSCmpIWS.js`).then(e=>e.a);return{mountWcUiPreview:e}},__vite__mapDeps([21,4,6,8,22,9,23,24,25,26,27,28,29,30]));t(n);return}O(),A(),i!==`connect`&&h().catch(()=>{});let a=l(window.location.search),u=i===`cherry`?null:K(window.location.search),d=!!u&&s();if(await ce(a?{apiBaseUrl:a.apiBaseUrl,token:a.token}:null,d&&u?{extensionId:u.extensionId}:null)===`reload-pending`)return;if(!r&&(i===`follower`||i===`cherry`)){let{mountWcUiFollower:t}=await e(async()=>{let{mountWcUiFollower:e}=await import(`./wc-follower-C--23seG.js`);return{mountWcUiFollower:e}},__vite__mapDeps([31,6,1,18,4,8,11,5,7,9,10,12,32,33,34,35,36,37,38,39,40,41,42,43,44,21,22,23,24,25,26,27,28,29,30,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,3,13,61,62,63,64,65,17,66]));return t(n,Q,i)}await c(),t();let{bootstrapOAuthReplicas:f}=await e(async()=>{let{bootstrapOAuthReplicas:e}=await import(`./oauth-bootstrap-C6MrQSJ4.js`);return{bootstrapOAuthReplicas:e}},__vite__mapDeps([67,6,46,4,47,48,49,50,51,1,8,5,7,9,10,52,53,54,55,56,57,58,59,68,11,12,60,69,22,70]));if(await Promise.race([f().catch(e=>{Q.error(`OAuth bootstrap failed`,e)}),new Promise(e=>setTimeout(e,1e4))]),i===`connect`){globalThis.__slicc_connect_mode=!0;let{loadLegacyStyles:t}=await e(async()=>{let{loadLegacyStyles:e}=await import(`./legacy-styles-DcRu2WCJ.js`);return{loadLegacyStyles:e}},__vite__mapDeps([71,6]));await t();let{mountConnectSurface:r}=await e(async()=>{let{mountConnectSurface:e}=await import(`./connect-surface-C-sQsVm2.js`);return{mountConnectSurface:e}},__vite__mapDeps([72,46,4,6,47,48,49,50,51,1,8,5,7,9,10,52,53,54,55,56,57,58,59,68,11,12,60,69,22,70]));await r(n);return}if(r){let{mountWcUiExtension:t}=await e(async()=>{let{mountWcUiExtension:e}=await import(`./wc-extension-7TX44Qkh.js`);return{mountWcUiExtension:e}},__vite__mapDeps([73,6,74,12,45,46,4,47,48,49,50,51,1,8,5,7,9,10,52,53,54,55,56,57,58,59,11,60,22,3,13,42,43,24,33,34,35,36,37,38,39,40,32,41,61,62,63,23,21,25,26,27,28,29,30,64]));return t(n,Q,i===`extension-detached`)}d&&u&&D(u.extensionId);let{mountWcUiLive:p}=await e(async()=>{let{mountWcUiLive:e}=await import(`./wc-live-CUrQxCqR.js`);return{mountWcUiLive:e}},__vite__mapDeps([45,6,46,4,47,48,49,50,51,1,8,5,7,9,10,52,53,54,55,56,57,58,59,11,12,60,22,3,13,42,43,24,33,34,35,36,37,38,39,40,32,41,61,62,63,23,21,25,26,27,28,29,30,64]));return p(n,Q,i)}ue().catch(e=>{Q.error(`Fatal error`,e);let t=document.getElementById(`app`);t&&b(t,e)});export{z as i,N as n,F as r,se as t};