sliccy 4.22.0 → 4.23.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 (78) hide show
  1. package/dist/node-server/bridge-security.d.ts +94 -0
  2. package/dist/node-server/bridge-security.js +132 -0
  3. package/dist/node-server/index.js +149 -15
  4. package/dist/node-server/launch-url.d.ts +7 -0
  5. package/dist/node-server/launch-url.js +12 -3
  6. package/dist/ui/assets/{account-store-IyPhtzhJ.js → account-store-9y5Ab4vV.js} +2 -2
  7. package/dist/ui/assets/{account-store-BbOugMGQ.js → account-store-CSLAx3pa.js} +2 -2
  8. package/dist/ui/assets/{adobe-DgwUObWJ.js → adobe-Ba8U6Soe.js} +1 -1
  9. package/dist/ui/assets/{adobe-VPKLgSWT.js → adobe-BtvdR5I0.js} +1 -1
  10. package/dist/ui/assets/{agent-message-to-chat-y24E_cxL.js → agent-message-to-chat-bEHX4iF4.js} +1 -1
  11. package/dist/ui/assets/{apps-DUeem2tA.js → apps-Dh-H9LYE.js} +1 -1
  12. package/dist/ui/assets/{azure-openai-DoRxmkwZ.js → azure-openai-BpIYfrM-.js} +1 -1
  13. package/dist/ui/assets/{azure-openai-BZIgRwqd.js → azure-openai-C4YFzA3o.js} +1 -1
  14. package/dist/ui/assets/{bsh-watchdog-C9h2IaS0.js → bsh-watchdog-CNmrTRAy.js} +1 -1
  15. package/dist/ui/assets/{cdp-Cbi5Katl.js → cdp-BGgdiko1.js} +2 -2
  16. package/dist/ui/assets/{connect-surface-CVGFqUbD.js → connect-surface-DTsPWNDo.js} +1 -1
  17. package/dist/ui/assets/dip-Fvfzs0-q.js +1 -0
  18. package/dist/ui/assets/{dist-BRXlUPtR.js → dist-B5wGuNlW.js} +1 -1
  19. package/dist/ui/assets/{dist-CFUSBJZQ.js → dist-CjQIX13Y.js} +1 -1
  20. package/dist/ui/assets/{es-B9Xns6VP.js → es-t4MB1uY0.js} +1 -1
  21. package/dist/ui/assets/{fs-BCZV-DeG.js → fs-BlhR8i_q.js} +2 -2
  22. package/dist/ui/assets/{fs-BWEPe_lI.js → fs-ry06ziaM.js} +1 -1
  23. package/dist/ui/assets/{github-D1-sIysd.js → github-6R3ONWs4.js} +2 -2
  24. package/dist/ui/assets/{github-BD8TM8E4.js → github-Cr1bhcIq.js} +1 -1
  25. package/dist/ui/assets/{github-copilot-BeL7S_RM.js → github-copilot-CPpSIAl_.js} +1 -1
  26. package/dist/ui/assets/{github-copilot-CVOOYEif.js → github-copilot-_vAY24oI.js} +1 -1
  27. package/dist/ui/assets/{hear-DD8kXpu3.js → hear-DLqP08Yk.js} +1 -1
  28. package/dist/ui/assets/{kernel-worker-B1z5Mep_.js → kernel-worker-ReGrzvdD.js} +24 -24
  29. package/dist/ui/assets/{kokoro-engine-BAKhtzKA.js → kokoro-engine-BeiKy8PB.js} +1 -1
  30. package/dist/ui/assets/{lick-ws-bridge-C76WNbyz.js → lick-ws-bridge-DZy9C70j.js} +1 -1
  31. package/dist/ui/assets/{local-llm-Bx2yDR6Y.js → local-llm-ehhQ9AeC.js} +1 -1
  32. package/dist/ui/assets/{main-cherry-Bap_NTtV.js → main-cherry-X1IxoqNY.js} +1 -1
  33. package/dist/ui/assets/{main-ZPWrsiEH.js → main-zx9b4e1t.js} +3 -3
  34. package/dist/ui/assets/{mount-CJTp3rsY.js → mount-Cf2e3Vu8.js} +2 -2
  35. package/dist/ui/assets/{mount-BZGOqIjJ.js → mount-Crd-I-lS.js} +1 -1
  36. package/dist/ui/assets/{new-session-Boyp0jbl.js → new-session-PJxD5xz-.js} +2 -2
  37. package/dist/ui/assets/{oauth-bootstrap-B-FGqNIA.js → oauth-bootstrap-38UC9ABk.js} +2 -2
  38. package/dist/ui/assets/{openai-codex-kCbaxA3p.js → openai-codex-4vY4IfjZ.js} +1 -1
  39. package/dist/ui/assets/{openai-codex-2NIZy82T.js → openai-codex-CcWEg2Id.js} +1 -1
  40. package/dist/ui/assets/{panel-rpc-handlers-DB-Ug9qU.js → panel-rpc-handlers-CyLUoTYQ.js} +1 -1
  41. package/dist/ui/assets/{provider-Dz3gmrdh.js → provider-BGI7Ytuv.js} +2 -2
  42. package/dist/ui/assets/{provider-C-QlPwy9.js → provider-BRZxUH2o.js} +1 -1
  43. package/dist/ui/assets/provider-store-access-BiJN5bAM.js +1 -0
  44. package/dist/ui/assets/provider-store-access-Dp0MGqAc.js +1 -0
  45. package/dist/ui/assets/{providers-wvXqnMMs.js → providers-CcDiXx1v.js} +1 -1
  46. package/dist/ui/assets/{quick-llm-BrfU7BId.js → quick-llm-CpcpayIL.js} +1 -1
  47. package/dist/ui/assets/session-freezer-DQ--9MwT.js +1 -0
  48. package/dist/ui/assets/setup-sudo-I4S39zW5.js +1 -0
  49. package/dist/ui/assets/{speak-BfxsOvBC.js → speak-gvgsbAbr.js} +1 -1
  50. package/dist/ui/assets/{sprinkle-manager-D9bGw9q8.js → sprinkle-manager-am-b2nZK.js} +1 -1
  51. package/dist/ui/assets/{store-CvNWCf_K.js → store-2Y1B359N.js} +1 -1
  52. package/dist/ui/assets/{sudo-DNg2E0j8.js → sudo-CXuD9JQi.js} +1 -1
  53. package/dist/ui/assets/{transformers-env-Vns8FfCl.js → transformers-env-RCjmw9ix.js} +1 -1
  54. package/dist/ui/assets/{tray-leave-runtime-Dblg03Av.js → tray-leave-runtime-EjSnz0hB.js} +1 -1
  55. package/dist/ui/assets/{upgrade-detection-CWy_ieEK.js → upgrade-detection-CHScEQnq.js} +1 -1
  56. package/dist/ui/assets/{wc-attach-D2l7z2MI.js → wc-attach-BbBcc9d7.js} +2 -2
  57. package/dist/ui/assets/{wc-detached-CNJ_gW__.js → wc-detached-BsGgVyQ2.js} +1 -1
  58. package/dist/ui/assets/{wc-extension-BwrsCjZl.js → wc-extension-pjc1MPFN.js} +2 -2
  59. package/dist/ui/assets/{wc-live-DjrJGzlN.js → wc-live-BAWrPhr9.js} +5 -5
  60. package/dist/ui/assets/{wc-nav-BmtdkU_z.js → wc-nav-D1GUd0Mt.js} +2 -2
  61. package/dist/ui/assets/{wc-onboarding-Ct6Arm5m.js → wc-onboarding-Bt02HM9-.js} +2 -2
  62. package/dist/ui/assets/{wc-placeholder-CWOudEXO.js → wc-placeholder-CEMVuHe3.js} +3 -3
  63. package/dist/ui/assets/{wc-settings-3CEFgt8u.js → wc-settings-DP3TVlWk.js} +2 -2
  64. package/dist/ui/assets/{wc-shell-CjN33a2b.js → wc-shell-tnKegXuB.js} +3 -3
  65. package/dist/ui/assets/{wc-sprinkles-smmPR4Ja.js → wc-sprinkles-DEgP8Ihj.js} +2 -2
  66. package/dist/ui/assets/{wc-tray-CVAaAkxz.js → wc-tray-BsL3c-FP.js} +3 -3
  67. package/dist/ui/assets/{xai-grok-CcpOkuUW.js → xai-grok-BK-WZwtZ.js} +1 -1
  68. package/dist/ui/assets/{xai-grok-DxDfANmg.js → xai-grok-CqrCTXgB.js} +1 -1
  69. package/dist/ui/index.html +2 -2
  70. package/dist/ui/packages/webapp/index.html +2 -2
  71. package/dist/ui/slicc-diff.js +1 -1
  72. package/dist/ui/slicc-editor.js +1 -1
  73. package/package.json +2 -2
  74. package/dist/ui/assets/dip-CvR0Cqr1.js +0 -1
  75. package/dist/ui/assets/provider-store-access-DoN2yB7H.js +0 -1
  76. package/dist/ui/assets/provider-store-access-KBTPjy08.js +0 -1
  77. package/dist/ui/assets/session-freezer-BXDSvoMT.js +0 -1
  78. package/dist/ui/assets/setup-sudo-DQpQyGGT.js +0 -1
@@ -1,9 +1,9 @@
1
- import{i as e,o as t,r as n,t as r}from"./chunk-CMxvf4Kt.js";import{t as i}from"./logger-LESFN7Hj.js";import{a,o,t as s}from"./tool-ui-N76-EdVc.js";import{a as c,i as l,n as u,o as d,r as f,t as p}from"./backend-local-CMfz45hs.js";import{t as m}from"./types-idfTVsM8.js";import{t as h}from"./src-CpdsjHiA.js";import{n as g,t as _}from"./mime-types-BqLkKWa7.js";import{a as v,i as y,n as b,r as x}from"./mount-BZGOqIjJ.js";import{t as S}from"./mount-id-nJcx05eu.js";import{t as C}from"./remote-cache-BffIqHgi.js";import{n as w}from"./mount-table-store-CQJEV6Ij.js";import{n as T,r as E,t as D}from"./panel-rpc-Ck8CVyMh.js";import{a as O}from"./providers-wvXqnMMs.js";import{n as k,t as ee}from"./path-utils-DU6QhF_k.js";import{b as te,d as A,l as j,u as ne}from"./bedrock-camp-DS1dgU6g.js";import{f as re,o as ie}from"./transform-messages-BjP6vDPY.js";import{A as ae,C as oe,D as se,E as ce,F as le,I as ue,L as M,M as de,N as fe,O as pe,P as me,S as he,T as ge,_ as _e,a as ve,b as ye,c as N,d as be,f as xe,g as Se,h as Ce,i as we,j as P,k as Te,l as F,m as I,o as Ee,p as De,r as Oe,s as ke,t as Ae,u as je,v as Me,w as Ne,x as Pe,y as Fe}from"./account-store-BbOugMGQ.js";import{i as Ie,n as Le,r as Re}from"./fs-BWEPe_lI.js";import{n as ze,r as Be}from"./openai-completions-CyC3I8Ls.js";const Ve=`__slicc_binary__`;function He(e){if(!e||typeof e!=`object`)return!1;let t=e;return t[Ve]===`b64`&&typeof t.data==`string`}function Ue(e){let t=32768,n=``;for(let r=0;r<e.byteLength;r+=t){let i=e.subarray(r,Math.min(r+t,e.byteLength));n+=String.fromCharCode.apply(null,i)}return btoa(n)}function We(e){let t=atob(e),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return n}function Ge(e){if(e instanceof Uint8Array)return{[Ve]:`b64`,data:Ue(e)};if(Array.isArray(e))return e.map(Ge);if(e&&typeof e==`object`){let t={};for(let[n,r]of Object.entries(e))t[n]=Ge(r);return t}return e}function Ke(e){if(He(e))return We(e.data);if(Array.isArray(e))return e.map(Ke);if(e&&typeof e==`object`){let t={};for(let[n,r]of Object.entries(e))t[n]=Ke(r);return t}return e}const qe=i(`panel-transport`);function Je(e){return typeof e==`object`&&!!e&&`source`in e&&`payload`in e}function Ye(){return{onMessage:e=>{let t=(t,n,r)=>(Je(t)&&e(Ke(t)),!1);return chrome.runtime.onMessage.addListener(t),()=>chrome.runtime.onMessage.removeListener(t)},send:(e,t)=>{let n=Ge(e);chrome.runtime.sendMessage({source:`offscreen`,payload:n}).catch(e=>{let t=e instanceof Error?e.message:String(e);/receiving end does not exist/i.test(t)||qe.error(`Offscreen → panel transport send failed`,{error:t})})}}}const Xe=new Set([`send_message`,`list_scoops`,`list_tasks`,`sudo_request`,`list_sudo_requests`,`lick_confirm`,`lick_dismiss`]);var Ze=n({formatMountRecoveryPrompt:()=>et,mdInlineCode:()=>$e,recoverMounts:()=>eee,shellQuote:()=>Qe});async function eee(e,t,n){let r=[],i=[];for(let a of e){let{targetPath:e,descriptor:o}=a;if(o.kind===`local`){let a=await w(o.idbHandleKey),s=typeof a?.name==`string`?a.name:``;if(!a||!(`queryPermission`in a)){i.push({kind:`local`,path:e,dirName:s});continue}let c;try{c=await a.queryPermission({mode:`readwrite`})}catch(t){n?.warn?.(`queryPermission threw on persisted handle`,{path:e,error:t instanceof Error?t.message:String(t)}),i.push({kind:`local`,path:e,dirName:s});continue}if(c!==`granted`){i.push({kind:`local`,path:e,dirName:s});continue}try{let i=p.fromHandle(a,{mountId:o.mountId});await t.mount(e,i),n?.info?.(`Restored mount from previous session`,{path:e,name:s}),r.push({kind:`local`,path:e,dirName:s})}catch(t){n?.warn?.(`Failed to re-mount persisted handle`,{path:e,error:t instanceof Error?t.message:String(t)}),i.push({kind:`local`,path:e,dirName:s})}continue}if(o.kind===`s3`){try{let i=new C({mountId:o.mountId,ttlMs:3e4}),a=new y({source:o.source,profile:o.profile,cache:i,mountId:o.mountId,signedFetch:x(o.profile)});await t.mount(e,a),n?.info?.(`Restored S3 mount from previous session`,{path:e,source:o.source}),r.push({kind:`s3`,path:e,source:o.source,profile:o.profile,reason:``})}catch(t){let r=t instanceof Error?t.message:String(t);n?.warn?.(`Failed to restore S3 mount`,{path:e,error:r}),i.push({kind:`s3`,path:e,source:o.source,profile:o.profile,reason:r})}continue}if(o.kind===`da`)try{let i=new C({mountId:o.mountId,ttlMs:3e4}),a=new v({source:o.source,profile:o.profile,cache:i,mountId:o.mountId,signedFetch:b()});await t.mount(e,a),n?.info?.(`Restored DA mount from previous session`,{path:e,source:o.source}),r.push({kind:`da`,path:e,source:o.source,profile:o.profile,reason:``})}catch(t){let r=t instanceof Error?t.message:String(t);n?.warn?.(`Failed to restore DA mount`,{path:e,error:r}),i.push({kind:`da`,path:e,source:o.source,profile:o.profile,reason:r})}}return{restored:r,needsRecovery:i}}function Qe(e){return`'${e.replace(/'/g,`'\\''`)}'`}function $e(e){let t=e.replace(/\r\n|[\r\n]/g,` `),n=t.match(/`+/g),r=n?Math.max(...n.map(e=>e.length))+1:1,i="`".repeat(r);return`${i}${t.startsWith("`")||t.endsWith("`")?` ${t} `:t}${i}`}function et(e){if(!Array.isArray(e)||e.length===0)return null;let t=e.length===1?`mount point`:`mount points`,n=e.length===1?`it`:`them`,r=e.filter(e=>e.kind===`local`),i=e.filter(e=>e.kind===`s3`||e.kind===`da`),a=[`[Session Reload] Mount recovery required for ${e.length} ${t}.`,``];if(r.length>0){let e=r.map(({path:e,dirName:t})=>{let n=t?` (previously mounted from ${$e(t)})`:``;return`- ${$e(e)}${n}`}),i=r.map(({path:e})=>` mount ${Qe(e)}`);a.push(`The page was reloaded and the following local ${t} lost filesystem permission. The browser cannot restore access without a fresh user gesture, so ${n} cannot be used until the user re-authorizes:`,``,...e,``,`Please tell the user what happened and ask whether they want to re-mount. If yes, run the corresponding command(s) so the folder picker opens and they can re-select the same directory:`,``,...i,``)}if(i.length>0){let e=i.map(({path:e,source:t,profile:n,reason:r})=>{let i=n==="default"?``:` --profile ${Qe(n)}`,a=`mount --source ${Qe(t)}${i} ${Qe(e)}`;return`- ${$e(e)} (${$e(t)}, profile ${$e(n)}) — ${r}\n Retry: ${$e(a)}`});a.push(`The following remote ${t} could not be auto-restored:`,``,...e,``)}return a.push("If the user no longer needs a mount, run `mount unmount <path>` (with the path shell-quoted the same way) to clear the stale entry instead."),a.join(`
1
+ import{i as e,o as t,r as n,t as r}from"./chunk-CMxvf4Kt.js";import{t as i}from"./logger-LESFN7Hj.js";import{a,o,t as s}from"./tool-ui-N76-EdVc.js";import{a as c,i as l,n as u,o as d,r as f,t as p}from"./backend-local-CMfz45hs.js";import{t as m}from"./types-idfTVsM8.js";import{t as h}from"./src-CpdsjHiA.js";import{n as g,t as _}from"./mime-types-BqLkKWa7.js";import{a as v,i as y,n as b,r as x}from"./mount-Crd-I-lS.js";import{t as S}from"./mount-id-nJcx05eu.js";import{t as C}from"./remote-cache-BffIqHgi.js";import{n as w}from"./mount-table-store-CQJEV6Ij.js";import{n as T,r as E,t as D}from"./panel-rpc-Ck8CVyMh.js";import{a as O}from"./providers-CcDiXx1v.js";import{n as k,t as ee}from"./path-utils-DU6QhF_k.js";import{b as te,d as A,l as j,u as ne}from"./bedrock-camp-DS1dgU6g.js";import{f as re,o as ie}from"./transform-messages-BjP6vDPY.js";import{A as ae,C as oe,D as se,E as ce,F as le,I as ue,L as M,M as de,N as fe,O as pe,P as me,S as he,T as ge,_ as _e,a as ve,b as ye,c as N,d as be,f as xe,g as Se,h as Ce,i as we,j as P,k as Te,l as F,m as I,o as Ee,p as De,r as Oe,s as ke,t as Ae,u as je,v as Me,w as Ne,x as Pe,y as Fe}from"./account-store-CSLAx3pa.js";import{i as Ie,n as Le,r as Re}from"./fs-ry06ziaM.js";import{n as ze,r as Be}from"./openai-completions-CyC3I8Ls.js";const Ve=`__slicc_binary__`;function He(e){if(!e||typeof e!=`object`)return!1;let t=e;return t[Ve]===`b64`&&typeof t.data==`string`}function Ue(e){let t=32768,n=``;for(let r=0;r<e.byteLength;r+=t){let i=e.subarray(r,Math.min(r+t,e.byteLength));n+=String.fromCharCode.apply(null,i)}return btoa(n)}function We(e){let t=atob(e),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return n}function Ge(e){if(e instanceof Uint8Array)return{[Ve]:`b64`,data:Ue(e)};if(Array.isArray(e))return e.map(Ge);if(e&&typeof e==`object`){let t={};for(let[n,r]of Object.entries(e))t[n]=Ge(r);return t}return e}function Ke(e){if(He(e))return We(e.data);if(Array.isArray(e))return e.map(Ke);if(e&&typeof e==`object`){let t={};for(let[n,r]of Object.entries(e))t[n]=Ke(r);return t}return e}const qe=i(`panel-transport`);function Je(e){return typeof e==`object`&&!!e&&`source`in e&&`payload`in e}function Ye(){return{onMessage:e=>{let t=(t,n,r)=>(Je(t)&&e(Ke(t)),!1);return chrome.runtime.onMessage.addListener(t),()=>chrome.runtime.onMessage.removeListener(t)},send:(e,t)=>{let n=Ge(e);chrome.runtime.sendMessage({source:`offscreen`,payload:n}).catch(e=>{let t=e instanceof Error?e.message:String(e);/receiving end does not exist/i.test(t)||qe.error(`Offscreen → panel transport send failed`,{error:t})})}}}const Xe=new Set([`send_message`,`list_scoops`,`list_tasks`,`sudo_request`,`list_sudo_requests`,`lick_confirm`,`lick_dismiss`]);var Ze=n({formatMountRecoveryPrompt:()=>et,mdInlineCode:()=>$e,recoverMounts:()=>eee,shellQuote:()=>Qe});async function eee(e,t,n){let r=[],i=[];for(let a of e){let{targetPath:e,descriptor:o}=a;if(o.kind===`local`){let a=await w(o.idbHandleKey),s=typeof a?.name==`string`?a.name:``;if(!a||!(`queryPermission`in a)){i.push({kind:`local`,path:e,dirName:s});continue}let c;try{c=await a.queryPermission({mode:`readwrite`})}catch(t){n?.warn?.(`queryPermission threw on persisted handle`,{path:e,error:t instanceof Error?t.message:String(t)}),i.push({kind:`local`,path:e,dirName:s});continue}if(c!==`granted`){i.push({kind:`local`,path:e,dirName:s});continue}try{let i=p.fromHandle(a,{mountId:o.mountId});await t.mount(e,i),n?.info?.(`Restored mount from previous session`,{path:e,name:s}),r.push({kind:`local`,path:e,dirName:s})}catch(t){n?.warn?.(`Failed to re-mount persisted handle`,{path:e,error:t instanceof Error?t.message:String(t)}),i.push({kind:`local`,path:e,dirName:s})}continue}if(o.kind===`s3`){try{let i=new C({mountId:o.mountId,ttlMs:3e4}),a=new y({source:o.source,profile:o.profile,cache:i,mountId:o.mountId,signedFetch:x(o.profile)});await t.mount(e,a),n?.info?.(`Restored S3 mount from previous session`,{path:e,source:o.source}),r.push({kind:`s3`,path:e,source:o.source,profile:o.profile,reason:``})}catch(t){let r=t instanceof Error?t.message:String(t);n?.warn?.(`Failed to restore S3 mount`,{path:e,error:r}),i.push({kind:`s3`,path:e,source:o.source,profile:o.profile,reason:r})}continue}if(o.kind===`da`)try{let i=new C({mountId:o.mountId,ttlMs:3e4}),a=new v({source:o.source,profile:o.profile,cache:i,mountId:o.mountId,signedFetch:b()});await t.mount(e,a),n?.info?.(`Restored DA mount from previous session`,{path:e,source:o.source}),r.push({kind:`da`,path:e,source:o.source,profile:o.profile,reason:``})}catch(t){let r=t instanceof Error?t.message:String(t);n?.warn?.(`Failed to restore DA mount`,{path:e,error:r}),i.push({kind:`da`,path:e,source:o.source,profile:o.profile,reason:r})}}return{restored:r,needsRecovery:i}}function Qe(e){return`'${e.replace(/'/g,`'\\''`)}'`}function $e(e){let t=e.replace(/\r\n|[\r\n]/g,` `),n=t.match(/`+/g),r=n?Math.max(...n.map(e=>e.length))+1:1,i="`".repeat(r);return`${i}${t.startsWith("`")||t.endsWith("`")?` ${t} `:t}${i}`}function et(e){if(!Array.isArray(e)||e.length===0)return null;let t=e.length===1?`mount point`:`mount points`,n=e.length===1?`it`:`them`,r=e.filter(e=>e.kind===`local`),i=e.filter(e=>e.kind===`s3`||e.kind===`da`),a=[`[Session Reload] Mount recovery required for ${e.length} ${t}.`,``];if(r.length>0){let e=r.map(({path:e,dirName:t})=>{let n=t?` (previously mounted from ${$e(t)})`:``;return`- ${$e(e)}${n}`}),i=r.map(({path:e})=>` mount ${Qe(e)}`);a.push(`The page was reloaded and the following local ${t} lost filesystem permission. The browser cannot restore access without a fresh user gesture, so ${n} cannot be used until the user re-authorizes:`,``,...e,``,`Please tell the user what happened and ask whether they want to re-mount. If yes, run the corresponding command(s) so the folder picker opens and they can re-select the same directory:`,``,...i,``)}if(i.length>0){let e=i.map(({path:e,source:t,profile:n,reason:r})=>{let i=n==="default"?``:` --profile ${Qe(n)}`,a=`mount --source ${Qe(t)}${i} ${Qe(e)}`;return`- ${$e(e)} (${$e(t)}, profile ${$e(n)}) — ${r}\n Retry: ${$e(a)}`});a.push(`The following remote ${t} could not be auto-restored:`,``,...e,``)}return a.push("If the user no longer needs a mount, run `mount unmount <path>` (with the path shell-quoted the same way) to clear the stale entry instead."),a.join(`
2
2
  `)}const tee=new Set([`webhook`,`cron`,`sprinkle`,`fswatch`,`session-reload`,`navigate`,`upgrade`,`cherry`,`workflow`,`sudo-request`]);function nee(e){return e!=null&&tee.has(e)}const ree={webhook:`Webhook Event`,sprinkle:`Sprinkle Event`,fswatch:`File Watch Event`,"session-reload":`Session Reload`,navigate:`Navigate Event`,upgrade:`Upgrade Event`,cherry:`Cherry Event`,workflow:`Workflow Event`,cron:`Cron Event`,"sudo-request":`Scoop Access Request`};function tt(e){switch(e.type){case`webhook`:return e.webhookName;case`sprinkle`:return e.sprinkleName;case`fswatch`:return e.fswatchName;case`session-reload`:return`mount-recovery`;case`navigate`:return e.navigateUrl;case`upgrade`:return`${e.upgradeFromVersion??`unknown`}→${e.upgradeToVersion??`unknown`}`;case`cherry`:return e.cherryName;case`workflow`:return e.workflowName;case`sudo-request`:return e.sudoScoopName;default:return e.cronName}}function nt(e,t){let n=e.body,r=e.lickId;if(n?.reason===`mount-recovery`){let e=et(n.mounts??[]);return e===null?null:{label:t,content:`${e}${r?`\n\nLick ID: ${r}\nThis card is actionable: call \`lick_confirm\` with this lick id to re-run the listed \`mount …\` command(s) so the user can re-authorize, or \`lick_dismiss\` to leave them unmounted. The card flips to ✓ on confirm / muted ✗ on dismiss.`:``}`}}let i=st(e,t);if(!r)return i;let a=`\n\nLick ID: ${r}\nThis card is informational — there is NO confirm action. Call \`lick_dismiss\` with this lick id to acknowledge and clear it. The card flips to muted ✗ on dismiss.`;return{label:i.label,content:`${i.content}${a}`}}function rt(e,t){let n=e.upgradeFromVersion??`unknown`,r=e.upgradeToVersion??`unknown`,i=e.body?.releasedAt??null,a=i?`\nReleased: ${i}`:``,o=e.lickId;return{label:t,content:`[${t}: ${n}→${r}]\n\nSLICC was upgraded from \`${n}\` to \`${r}\`.${a}${o?`\n\nLick ID: ${o}\nUse the **upgrade** skill (\`/workspace/skills/upgrade/SKILL.md\`). The card is a binary action: call \`lick_confirm\` with this lick id to **Update workspace files** (it runs the three-way merge of bundled vfs-root content into the user's VFS), or \`lick_dismiss\` to clear it. The card flips to ✓ on confirm / muted ✗ on dismiss. Reviewing the changelog is a separate step you can run first — it is NOT a card action.`:`
3
3
 
4
4
  Use the **upgrade** skill (\`/workspace/skills/upgrade/SKILL.md\`) to offer the user a three-way merge of bundled vfs-root content into their workspace (bundled snapshot vs user's VFS, reconciled with the GitHub tag-to-tag diff).`}`}}function it(e,t){let n=e.cherryOrigin??`unknown origin`,r=e.cherryRuntimeId??`unknown`;return{label:t,content:`[${t}: ${e.cherryName??`unnamed`}] from ${n} (runtime ${r})\n\`\`\`json\n${JSON.stringify(e.body,null,2)}\n\`\`\``}}function at(e,t){let n=e.workflowName??`workflow`,r=e.resultPath??`(no result file)`,i=e.preview??``;return{label:t,content:`[${t}: ${n}] ${e.body?.status??`complete`} — ${i}\nFull result: ${r} (read it only if you need the whole thing).`}}function ot(e,t){let n=e.sudoScoopName??`a scoop`,r=e.lickId??`(unknown)`,i=e.sudoKind??`unknown`,a=e.sudoDetail??``,o=[`[${t}: ${n}]`,`Lick ID: ${r}`,`Kind: ${i}`,`Detail: ${a}`];return e.sudoSuggestedPattern&&o.push(`Suggested pattern: ${e.sudoSuggestedPattern}`),o.push(``,`Use the lick_confirm tool with lick_id="${r}" to approve (or always-approve with a pattern), or lick_dismiss with lick_id="${r}" to deny.`),{label:t,content:o.join(`
5
- `)}}function st(e,t){let n=tt(e);return{label:t,content:`${e.originLabel?`_Forwarded from ${e.originLabel}._\n\n`:``}[${t}: ${n}]\n\`\`\`json\n${JSON.stringify(e.body,null,2)}\n\`\`\``}}function ct(e,t){let n=st(e,t),r=e.lickId;if(!r)return n;let i=e.body?.verb===`upskill`?`\n\nLick ID: ${r}\nUpskill install. To install, call \`lick_confirm\` with this lick id (it runs \`upskill\` with any branch/path scope from the body); to skip, call \`lick_dismiss\`. The card flips to ✓ on confirm / muted ✗ on dismiss.`:`\n\nLick ID: ${r}\nExternal handoff — stays human-gated. Show the approval dip and wait for the user; do NOT use \`lick_confirm\` / \`lick_dismiss\` here. Carry the lick id in the dip action so the card resolves: slicc.lick({action:'accept'|'dismiss', data:{lickId:'${r}'}}).`;return{label:n.label,content:`${n.content}${i}`}}function lt(e){let t=ree[e.type];return e.type===`session-reload`?nt(e,t):e.type===`upgrade`?rt(e,t):e.type===`cherry`?it(e,t):e.type===`workflow`?at(e,t):e.type===`sudo-request`?ot(e,t):e.type===`navigate`?ct(e,t):st(e,t)}const ut=64*1024;function dt(e,t=ut){return e.length<=t?e:`${e.slice(0,t)}\n… [tool output truncated for the chat transcript: showing ${gt(t)} of ${gt(e.length)} — the agent received the full output]`}function ft(e,t=ut,n=4){if(typeof e==`string`)return dt(e,t);if(typeof e!=`object`||!e||n<=0)return e;if(Array.isArray(e)){let r=null;for(let i=0;i<e.length;i++){let a=ft(e[i],t,n-1);a!==e[i]&&(r??=[...e],r[i]=a)}return r??e}let r=null;for(let[i,a]of Object.entries(e)){let o=ft(a,t,n-1);o!==a&&(r??={...e},r[i]=o)}return r??e}const pt=()=>/<img:data:image\/[^>]+>/g;function mt(e,t=ut){if(!e)return e;if(!pt().test(e))return dt(e,t);let n=dt(e.replace(pt(),``).trim(),t);return n.length>0?`${n}\n[screenshot omitted from transcript]`:`[screenshot]`}function ht(e,t=ut){if(e.length<=t)return e;if(!pt().test(e))return dt(e,t);let n=[],r=0;for(let i of e.matchAll(pt()))n.push(dt(e.slice(r,i.index),t)),n.push(i[0]),r=(i.index??0)+i[0].length;return n.push(dt(e.slice(r),t)),n.join(``)}function gt(e){return e>=1024*1024?`${(e/(1024*1024)).toFixed(1)} MB`:`${Math.round(e/1024)} KB`}let _t={state:`inactive`,joinUrl:null,trayId:null,error:null,lastPingTime:null,reconnectAttempts:0,attachAttempts:0,lastAttachCode:null,connectingSince:null,lastError:null};function vt(){return{..._t}}const yt=new Set;function bt(e){return yt.add(e),()=>{yt.delete(e)}}function xt(e){return e.headers.get(`x-proxy-error`)===`1`}async function St(e){let t=`Proxy error ${e.status}`,n;try{n=await e.text()}catch{return t}return Ct(n,t)}function Ct(e,t){let n;try{n=JSON.parse(e)}catch{return t}if(!n||typeof n!=`object`)return t;let r=n.error;if(typeof r==`string`&&r.length>0)return r;if(r&&typeof r==`object`){let e=r.message;if(typeof e==`string`&&e.length>0)return e;try{return JSON.stringify(r)}catch{return t}}return t}const wt={SCOOPS:`scoops`,MESSAGES:`messages`,SESSIONS:`sessions`,TASKS:`tasks`,STATE:`state`,WEBHOOKS:`webhooks`,CRONTASKS:`crontasks`};let Tt=null;function Et(e){if(!e.objectStoreNames.contains(wt.MESSAGES)){let t=e.createObjectStore(wt.MESSAGES,{keyPath:`id`});t.createIndex(`chatJid`,`chatJid`),t.createIndex(`timestamp`,`timestamp`),t.createIndex(`chatJid_timestamp`,[`chatJid`,`timestamp`])}e.objectStoreNames.contains(wt.SESSIONS)||e.createObjectStore(wt.SESSIONS,{keyPath:`groupFolder`}),e.objectStoreNames.contains(wt.TASKS)||e.createObjectStore(wt.TASKS,{keyPath:`id`}).createIndex(`groupFolder`,`groupFolder`),e.objectStoreNames.contains(wt.STATE)||e.createObjectStore(wt.STATE,{keyPath:`key`})}function Dt(e){let t=e.isMain??!1;return{jid:e.jid,name:e.name,folder:e.folder,trigger:t?void 0:e.trigger||`@${e.folder}`,requiresTrigger:!t&&(e.requiresTrigger??!0),isCone:t,type:t?`cone`:`scoop`,assistantLabel:t?`sliccy`:e.config?.assistantName||e.folder,addedAt:e.addedAt,config:e.config?{systemPromptAppend:e.config.systemPromptAppend,timeout:e.config.timeout,assistantName:e.config.assistantName}:void 0}}function Ot(e,t){if(t.objectStoreNames.contains(`groups`)){let n=e.target.transaction.objectStore(`groups`).getAll();n.onsuccess=()=>{let e=n.result;t.deleteObjectStore(`groups`);let r=t.createObjectStore(wt.SCOOPS,{keyPath:`jid`});r.createIndex(`type`,`type`);for(let t of e)r.put(Dt(t))};return}t.objectStoreNames.contains(wt.SCOOPS)||t.createObjectStore(wt.SCOOPS,{keyPath:`jid`}).createIndex(`type`,`type`)}function kt(e){e.objectStoreNames.contains(wt.WEBHOOKS)||e.createObjectStore(wt.WEBHOOKS,{keyPath:`id`}),e.objectStoreNames.contains(wt.CRONTASKS)||e.createObjectStore(wt.CRONTASKS,{keyPath:`id`})}function At(e){let t=e.target.result,n=e.oldVersion;n<1&&Et(t),n<2&&Ot(e,t),n<3&&kt(t)}function jt(){if(!Tt)return null;let e=Object.values(wt).every(e=>Tt.objectStoreNames.contains(e));return Tt.version===3&&e?Tt:(Tt.close(),Tt=null,null)}function Mt(e){e.onversionchange=()=>{e.close(),Tt===e&&(Tt=null)},e.onclose=()=>{Tt===e&&(Tt=null)}}async function Nt(){return jt()||new Promise((e,t)=>{let n=indexedDB.open(`slicc-groups`,3);n.onupgradeneeded=At,n.onsuccess=()=>{let t=n.result;Mt(t),Tt=t,e(t)},n.onerror=()=>t(n.error)})}async function Pt(e,t=`readonly`){return(await Nt()).transaction(e,t).objectStore(e)}async function Ft(e){let t=await Pt(wt.SCOOPS,`readwrite`);return new Promise((n,r)=>{let i=t.put(e);i.onsuccess=()=>n(),i.onerror=()=>r(i.error)})}async function It(){let e=await Pt(wt.SCOOPS);return new Promise((t,n)=>{let r=e.getAll();r.onsuccess=()=>{let e={};for(let t of r.result)e[t.jid]=t;t(e)},r.onerror=()=>n(r.error)})}async function Lt(e){let t=await Pt(wt.SCOOPS,`readwrite`);return new Promise((n,r)=>{let i=t.delete(e);i.onsuccess=()=>n(),i.onerror=()=>r(i.error)})}async function Rt(){let e=await Pt(wt.MESSAGES,`readwrite`);return new Promise((t,n)=>{let r=e.clear();r.onsuccess=()=>t(),r.onerror=()=>n(r.error)})}async function zt(e){let t=(await Pt(wt.MESSAGES,`readwrite`)).index(`chatJid_timestamp`),n=IDBKeyRange.bound([e,``],[e,`￿`],!1,!1);return new Promise((e,r)=>{let i=t.openCursor(n);i.onsuccess=()=>{let t=i.result;if(!t){e();return}t.delete(),t.continue()},i.onerror=()=>r(i.error)})}async function Bt(e){let t=await Pt(wt.MESSAGES,`readwrite`);return new Promise((n,r)=>{let i=t.put(e);i.onsuccess=()=>n(),i.onerror=()=>r(i.error)})}async function Vt(e){let t=await Pt(wt.MESSAGES,`readwrite`);return new Promise((n,r)=>{let i=t.delete(e);i.onsuccess=()=>n(),i.onerror=()=>r(i.error)})}async function Ht(e){let t=(await Pt(wt.MESSAGES)).index(`chatJid_timestamp`),n=IDBKeyRange.bound([e,``],[e,`￿`],!1,!1);return new Promise((e,r)=>{let i=t.getAll(n);i.onsuccess=()=>e(i.result),i.onerror=()=>r(i.error)})}async function iee(e,t,n){let r=(await Pt(wt.MESSAGES)).index(`chatJid_timestamp`),i=IDBKeyRange.bound([e,t],[e,`￿`],!0,!1);return new Promise((e,t)=>{let a=r.getAll(i);a.onsuccess=()=>{let t=a.result;n&&(t=t.filter(e=>e.senderName!==n)),e(t)},a.onerror=()=>t(a.error)})}async function Ut(e){let t=await Pt(wt.TASKS,`readwrite`);return new Promise((n,r)=>{let i=t.put(e);i.onsuccess=()=>n(),i.onerror=()=>r(i.error)})}async function Wt(e){let t=await Pt(wt.TASKS);return new Promise((n,r)=>{let i=t.get(e);i.onsuccess=()=>n(i.result??null),i.onerror=()=>r(i.error)})}async function Gt(){let e=await Pt(wt.TASKS);return new Promise((t,n)=>{let r=e.getAll();r.onsuccess=()=>t(r.result),r.onerror=()=>n(r.error)})}async function Kt(e){let t=await Pt(wt.TASKS,`readwrite`);return new Promise((n,r)=>{let i=t.delete(e);i.onsuccess=()=>n(),i.onerror=()=>r(i.error)})}async function qt(e){let t=await Pt(wt.STATE);return new Promise((n,r)=>{let i=t.get(e);i.onsuccess=()=>n(i.result?.value??null),i.onerror=()=>r(i.error)})}async function Jt(e,t){let n=await Pt(wt.STATE,`readwrite`);return new Promise((r,i)=>{let a=n.put({key:e,value:t});a.onsuccess=()=>r(),a.onerror=()=>i(a.error)})}async function Yt(){await Nt()}async function Xt(e){let t=await Pt(wt.WEBHOOKS,`readwrite`);return new Promise((n,r)=>{let i=t.put(e);i.onsuccess=()=>n(),i.onerror=()=>r(i.error)})}async function Zt(){try{let e=await Pt(wt.WEBHOOKS);return new Promise((t,n)=>{let r=e.getAll();r.onsuccess=()=>t(r.result),r.onerror=()=>n(r.error)})}catch{return[]}}async function Qt(e){let t=await Pt(wt.WEBHOOKS,`readwrite`);return new Promise((n,r)=>{let i=t.delete(e);i.onsuccess=()=>n(),i.onerror=()=>r(i.error)})}async function $t(e){let t=await Pt(wt.CRONTASKS,`readwrite`);return new Promise((n,r)=>{let i=t.put(e);i.onsuccess=()=>n(),i.onerror=()=>r(i.error)})}async function en(){try{let e=await Pt(wt.CRONTASKS);return new Promise((t,n)=>{let r=e.getAll();r.onsuccess=()=>t(r.result),r.onerror=()=>n(r.error)})}catch{return[]}}async function tn(e){let t=await Pt(wt.CRONTASKS,`readwrite`);return new Promise((n,r)=>{let i=t.delete(e);i.onsuccess=()=>n(),i.onerror=()=>r(i.error)})}function nn(e){if(!e)return null;try{let t=new URL(e.trim());t.search=``,t.hash=``,t.pathname!==`/`&&(t.pathname=t.pathname.replace(/\/+$/,``)||`/`);let n=t.toString();return n.endsWith(`/`)?n.slice(0,-1):n}catch{return null}}const rn=`slicc.trayWorkerBaseUrl`,an=`https://www.sliccy.ai`;i(`tray-leader`);let on={state:`inactive`,session:null,error:null};function sn(){return{...on,session:on.session?{...on.session}:null}}function cn(){let e=sn();if(e.state!==`inactive`)return e;try{let e=globalThis.localStorage?.getItem(`slicc.leaderTrayStatus`);if(e){let t=JSON.parse(e);if(t?.state&&t.state!==`inactive`)return t}}catch{}return e}const ln=new Set;function un(e){return ln.add(e),()=>{ln.delete(e)}}const dn=`sessions`;function fn(){return new Promise((e,t)=>{let n=indexedDB.open(`browser-coding-agent`,1);n.onupgradeneeded=()=>{let e=n.result;e.objectStoreNames.contains(dn)||e.createObjectStore(dn,{keyPath:`id`})},n.onsuccess=()=>e(n.result),n.onerror=()=>t(n.error)})}var pn=class{db=null;async init(){await this.getDb()}async getDb(){if(!this.db){let e=await fn();e.onversionchange=()=>{e.close(),this.db=null},e.onclose=()=>{this.db=null},this.db=e}return this.db}async save(e){let t=await this.getDb();return new Promise((n,r)=>{let i=t.transaction(dn,`readwrite`);i.objectStore(dn).put(e),i.oncomplete=()=>n(),i.onerror=()=>r(i.error)})}async load(e){let t=await this.getDb();return new Promise((n,r)=>{let i=t.transaction(dn,`readonly`).objectStore(dn).get(e);i.onsuccess=()=>n(i.result??null),i.onerror=()=>r(i.error)})}async list(){let e=await this.getDb();return new Promise((t,n)=>{let r=e.transaction(dn,`readonly`).objectStore(dn).getAll();r.onsuccess=()=>{t(r.result.sort((e,t)=>t.updatedAt-e.updatedAt).map(e=>e.id))},r.onerror=()=>n(r.error)})}async delete(e){let t=await this.getDb();return new Promise((n,r)=>{let i=t.transaction(dn,`readwrite`);i.objectStore(dn).delete(e),i.oncomplete=()=>n(),i.onerror=()=>r(i.error)})}async saveMessages(e,t){let n=await this.load(e),r=n?{...n,messages:t,updatedAt:Date.now()}:{id:e,messages:t,createdAt:Date.now(),updatedAt:Date.now()};await this.save(r)}};const mn=i(`offscreen-bridge`);function hn(e){if(typeof e!=`object`||!e)return null;let t=e;if(t.action!==`accept`&&t.action!==`dismiss`)return null;let n=t.data,r=n&&typeof n.lickId==`string`?n.lickId:null;return r?{lickId:r,accepted:t.action===`accept`}:null}var gn=class{orchestrator=null;browserAPI=null;messageBuffers=new Map;currentMessageId=new Map;scoopStatuses=new Map;sessionStore=null;followerSync=null;followerActive=!1;_transport;transportUnsubscribe=null;activeScoopJid=null;agentEventListeners=new Set;fanOutMessageId=new Map;constructor(e){this._transport=e??null}get transport(){return this._transport||=Ye(),this._transport}async bind(e,t){this.orchestrator=e,this.browserAPI=t??null,this.transportUnsubscribe?.(),this.transportUnsubscribe=this.setupMessageListener();let n=new pn;await n.init(),this.sessionStore=n}static createCallbacks(e){return{onResponse:(t,n,r)=>{let i=e.getOrCreateAssistantMsg(t);r?i.content+=n:(i.content=n,i.isStreaming=!1),e.emit({type:`agent-event`,scoopJid:t,eventType:`text_delta`,text:n})},onResponseDone:t=>{let n=e.currentMessageId.get(t);if(n){let r=e.getBuffer(t).find(e=>e.id===n);r&&(r.isStreaming=!1),e.currentMessageId.delete(t)}e.persistScoop(t),e.emit({type:`agent-event`,scoopJid:t,eventType:`response_done`})},onSendMessage:(t,n)=>{let r=e.getBuffer(t),i=`msg-${_n()}`;r.push({id:i,role:`assistant`,content:n,timestamp:Date.now()}),e.persistScoop(t),e.emit({type:`agent-event`,scoopJid:t,eventType:`text_delta`,text:n}),e.emit({type:`agent-event`,scoopJid:t,eventType:`response_done`})},onStatusChange:(t,n)=>{e.scoopStatuses.set(t,n),n===`ready`&&e.currentMessageId.delete(t),e.emit({type:`scoop-status`,scoopJid:t,status:n}),e.emitScoopList()},onCompactionStateChange:(t,n)=>{e.emit({type:`compaction-state`,scoopJid:t,state:n})},onError:(t,n)=>{e.emit({type:`error`,scoopJid:t,error:n})},onToolStart:(t,n,r)=>{Xe.has(n)||e.bufferToolStart(t,n,r)},onToolEnd:(t,n,r,i)=>{Xe.has(n)||e.bufferToolEnd(t,n,r,i)},onToolUI:(t,n,r,i)=>{e.emit({type:`agent-event`,scoopJid:t,eventType:`tool_ui`,toolName:n,requestId:r,html:i})},onToolUIDone:(t,n)=>{e.emit({type:`agent-event`,scoopJid:t,eventType:`tool_ui_done`,requestId:n})},onIncomingMessage:(t,n)=>e.bufferIncomingMessage(t,n),onMessageUpdate:(t,n)=>e.applyMessageUpdate(t,n),onScoopUnregistered:t=>e.evictScoopState(t)}}bufferToolStart(e,t,n){let r=ft(n),i=this.getOrCreateAssistantMsg(e);i.toolCalls||=[],i.toolCalls.push({id:_n(),name:t,input:r}),this.emit({type:`agent-event`,scoopJid:e,eventType:`tool_start`,toolName:t,toolInput:r})}bufferToolEnd(e,t,n,r){let i=this.currentMessageId.get(e);if(i){let a=this.getBuffer(e).find(e=>e.id===i);if(a?.toolCalls){let e=[...a.toolCalls].reverse().find(e=>e.name===t&&e.result===void 0);e&&(e.result=mt(n),e.isError=r)}}this.persistScoop(e),this.emit({type:`agent-event`,scoopJid:e,eventType:`tool_end`,toolName:t,toolResult:ht(n),isError:r})}bufferIncomingMessage(e,t){let n={id:t.id,role:`user`,content:t.channel===`delegation`?`**[Instructions from sliccy]**\n\n${t.content}`:t.content,attachments:t.attachments,timestamp:new Date(t.timestamp).getTime(),source:t.channel===`delegation`?`delegation`:void 0,channel:t.channel,lickId:t.lickId,lickState:t.lickState};this.getBuffer(e).push(n),this.persistScoop(e),this.notifyPanelIncomingMessage(e,t)}evictScoopState(e){this.messageBuffers.delete(e.jid),this.currentMessageId.delete(e.jid),this.fanOutMessageId.delete(e.jid),this.scoopStatuses.delete(e.jid),!e.isCone&&this.sessionStore&&this.sessionStore.delete(`session-${e.folder}`).catch(t=>{console.warn(`[offscreen-bridge] Failed to delete session for unregistered scoop:`,e.folder,t)}),this.emitScoopList()}notifyPanelIncomingMessage(e,t){this.emit({type:`incoming-message`,scoopJid:e,message:{id:t.id,content:t.content,attachments:t.attachments,channel:t.channel,senderName:t.senderName,fromAssistant:t.fromAssistant,timestamp:t.timestamp,lickId:t.lickId,lickState:t.lickState}})}applyMessageUpdate(e,t){let n=this.messageBuffers.get(e)?.find(e=>t.lickId&&e.lickId===t.lickId||e.id===t.messageId);n&&(n.lickState=t.lickState,this.persistScoop(e)),this.emit({type:`message-updated`,scoopJid:e,messageId:t.messageId,lickId:t.lickId,lickState:t.lickState})}toScoopSnapshot(e){let t=e.config&&(e.config.modelId!==void 0||e.config.thinkingLevel!==void 0)?{...e.config.modelId===void 0?{}:{modelId:e.config.modelId},...e.config.thinkingLevel===void 0?{}:{thinkingLevel:e.config.thinkingLevel}}:void 0;return{jid:e.jid,name:e.name,folder:e.folder,isCone:e.isCone,assistantLabel:e.assistantLabel,status:this.scoopStatuses.get(e.jid)??`ready`,...t?{config:t}:{}}}buildStateSnapshot(){let e=this.orchestrator?.getScoops().map(e=>this.toScoopSnapshot(e))??[],t=e.find(e=>e.isCone);return{type:`state-snapshot`,scoops:e,activeScoopJid:this.getActiveScoopJid()??t?.jid??null,trayRuntimeStatus:this.buildTrayRuntimeStatus()}}emitTrayRuntimeStatus(){let e=this.buildTrayRuntimeStatus(),t={type:`tray-runtime-status`,leader:e.leader,follower:e.follower};this.emit(t)}buildTrayRuntimeStatus(){let e=sn(),t=vt();return{leader:{state:e.state,session:e.session,error:e.error??null,reconnectAttempts:e.reconnectAttempts??0},follower:{state:t.state,joinUrl:t.joinUrl,trayId:t.trayId,error:t.error,lastError:t.lastError,reconnectAttempts:t.reconnectAttempts,attachAttempts:t.attachAttempts,lastAttachCode:t.lastAttachCode,connectingSince:t.connectingSince,lastPingTime:t.lastPingTime}}}setFollowerSync(e){this.followerSync=e}setFollowerActive(e){this.followerActive=e}setActiveScoopJid(e){this.activeScoopJid=e}getActiveScoopJid(){return this.activeScoopJid}onAgentEvent(e){return this.agentEventListeners.add(e),()=>{this.agentEventListeners.delete(e)}}fanOutAgentEvent(e){let{scoopJid:t,eventType:n}=e,r=[],i=()=>{let e=this.fanOutMessageId.get(t);return e||(e=`scoop-${t}-${_n()}`,this.fanOutMessageId.set(t,e),r.push({type:`message_start`,messageId:e})),e};switch(n){case`text_delta`:{let t=i();r.push({type:`content_delta`,messageId:t,text:e.text??``});break}case`tool_start`:{let t=i();r.push({type:`tool_use_start`,messageId:t,toolName:e.toolName??``,toolInput:e.toolInput});break}case`tool_end`:{let n=this.fanOutMessageId.get(t);if(!n)return;r.push({type:`tool_result`,messageId:n,toolName:e.toolName??``,result:e.toolResult??``,isError:e.isError});break}case`tool_ui`:{let t=i();r.push({type:`tool_ui`,messageId:t,toolName:e.toolName??``,requestId:e.requestId??``,html:e.html??``});break}case`tool_ui_done`:{let n=this.fanOutMessageId.get(t);if(!n)return;r.push({type:`tool_ui_done`,messageId:n,requestId:e.requestId??``});break}case`response_done`:{let e=this.fanOutMessageId.get(t);if(!e)return;r.push({type:`content_done`,messageId:e}),this.fanOutMessageId.delete(t);break}case`turn_end`:this.fanOutMessageId.delete(t);break}for(let e of r)for(let n of this.agentEventListeners)try{n(t,e)}catch(e){mn.error(`onAgentEvent listener threw`,{error:e instanceof Error?e.message:String(e)})}}getMessagesForJid(e){return this.getBuffer(e)}async routeSprinkleLick(e,t,n,r){if(!this.orchestrator)return;let i=hn(t);i&&this.orchestrator.resolveNavigateHandoffByHuman(i.lickId,i.accepted);let a=this.orchestrator.getScoops(),o=n?a.find(e=>e.name===n||e.folder===n||e.folder===`${n}-scoop`):void 0;if(o||=a.find(e=>e.isCone),!o)return;let s=`sprinkle-${e}-${Date.now()}`,c=lt({type:`sprinkle`,sprinkleName:e,timestamp:new Date().toISOString(),body:t,originLabel:r})?.content??`[Sprinkle Event: ${e}]\n\`\`\`json\n${JSON.stringify(t,null,2)}\n\`\`\``,l={id:s,chatJid:o.jid,senderId:`sprinkle`,senderName:`sprinkle:${e}`,content:c,timestamp:new Date().toISOString(),fromAssistant:!1,channel:`sprinkle`};this.getBuffer(o.jid).push({id:s,role:`user`,content:c,timestamp:Date.now(),source:`lick`,channel:`sprinkle`}),this.persistScoop(o.jid),await this.orchestrator.handleMessage(l)}applyFollowerSnapshot(e){if(!this.orchestrator)return;let t=this.orchestrator.getScoops().find(e=>e.isCone);if(!t)return;let n=e.map(e=>({id:e.id,role:e.role,content:e.content,attachments:e.attachments,timestamp:e.timestamp,source:e.source,channel:e.channel,toolCalls:e.toolCalls?.map(e=>({id:e.id,name:e.name,input:e.input,result:e.result,isError:e.isError})),isStreaming:e.isStreaming}));if(this.messageBuffers.set(t.jid,n),this.currentMessageId.delete(t.jid),this.fanOutMessageId.delete(t.jid),this.sessionStore){let n=t.isCone?`session-cone`:`session-${t.folder}`;this.sessionStore.saveMessages(n,e).catch(e=>{mn.error(`applyFollowerSnapshot persist failed`,{error:e instanceof Error?e.message:String(e)})})}this.emit({type:`scoop-messages-replaced`,scoopJid:t.jid,messages:n})}getConeJid(){return this.orchestrator?.getScoops().find(e=>e.isCone)?.jid??null}emitFollowerAgentEvent(e){let t=this.getConeJid();if(t)switch(e.type){case`content_delta`:this.emit({type:`agent-event`,scoopJid:t,eventType:`text_delta`,text:e.text});break;case`content_done`:this.emit({type:`agent-event`,scoopJid:t,eventType:`response_done`});break;case`tool_use_start`:this.emit({type:`agent-event`,scoopJid:t,eventType:`tool_start`,toolName:e.toolName,toolInput:e.toolInput});break;case`tool_result`:this.emit({type:`agent-event`,scoopJid:t,eventType:`tool_end`,toolName:e.toolName,toolResult:e.result,isError:e.isError});break;case`turn_end`:this.emit({type:`agent-event`,scoopJid:t,eventType:`turn_end`});break;case`error`:this.emit({type:`error`,scoopJid:t,error:e.error});break}}emitFollowerIncomingMessage(e,t){let n=this.getConeJid();n&&this.emit({type:`incoming-message`,scoopJid:n,message:{id:e,content:t,channel:`web`,senderName:`User`,fromAssistant:!1,timestamp:new Date().toISOString()}})}emitFollowerStatus(e){let t=this.getConeJid();if(!t)return;let n=e===`processing`?`processing`:`ready`;this.scoopStatuses.set(t,n),this.emit({type:`scoop-status`,scoopJid:t,status:n})}async buildBufferFromAgentMessages(e){let t=this.orchestrator?.getScoopContext(e.jid);if(!t)return null;let n=t.getAgentMessages();if(n.length===0)return null;let{agentMessagesToChatMessages:r}=await import(`./agent-message-to-chat-y24E_cxL.js`);return r(n,{source:e.isCone?`cone`:e.name??e.folder}).map(e=>({id:e.id,role:e.role,content:e.content,attachments:e.attachments,timestamp:e.timestamp,source:e.source,channel:e.channel,toolCalls:e.toolCalls?.map(e=>({id:e.id,name:e.name,input:e.input,result:e.result,isError:e.isError})),isStreaming:!1}))}async seedBuffersFromAgentState(){if(this.orchestrator)for(let e of this.orchestrator.getScoops()){let t=this.messageBuffers.get(e.jid);if(t&&t.length>0)continue;let n=await this.buildBufferFromAgentMessages(e);n&&(this.messageBuffers.set(e.jid,n),this.currentMessageId.delete(e.jid),this.fanOutMessageId.delete(e.jid),await this.persistScoopAwait(e.jid))}}async handleRequestScoopMessages(e){if(!this.orchestrator)return;let t=this.orchestrator.getScoops().find(t=>t.jid===e);if(!t)return;let n=this.messageBuffers.get(e);if(n&&n.length>0){this.emit({type:`scoop-messages-replaced`,scoopJid:e,messages:n});return}let r=await this.buildBufferFromAgentMessages(t);if(r){this.messageBuffers.set(e,r),this.currentMessageId.delete(e),this.fanOutMessageId.delete(e),this.persistScoop(e),this.emit({type:`scoop-messages-replaced`,scoopJid:e,messages:r});return}if(this.sessionStore){let n=t.isCone?`session-cone`:`session-${t.folder}`;try{let t=(await this.sessionStore.load(n))?.messages??[];t.length>0&&(this.messageBuffers.set(e,t),this.currentMessageId.delete(e),this.fanOutMessageId.delete(e),this.emit({type:`scoop-messages-replaced`,scoopJid:e,messages:t}))}catch(e){mn.error(`sessionStore load failed`,{sessionId:n,error:e instanceof Error?e.message:String(e)})}}}async handleConeCreate(e){if(!this.orchestrator)return;let t={jid:`cone_${Date.now()}`,name:e,folder:`cone`,isCone:!0,type:`cone`,requiresTrigger:!1,assistantLabel:`sliccy`,addedAt:new Date().toISOString()};await this.orchestrator.registerScoop(t),this.emit({type:`scoop-created`,scoop:this.toScoopSnapshot(t)})}handleRequestSessionStats(e){let t=0,n=[];try{t=(this.orchestrator?.getSessionCosts()??[]).reduce((e,t)=>e+t.usage.cost.total,0),n=this.orchestrator?.getContextFills()??[]}catch{}this.emit({type:`session-stats`,requestId:e,totalCost:t,fills:n})}async handleRequestScoopTranscript(e,t){let n=()=>{this.emit({type:`scoop-transcript`,requestId:e,scoopJid:t,transcript:``})};if(!this.orchestrator){n();return}let r=this.orchestrator.getScoops().find(e=>e.jid===t);if(!r){n();return}let i=this.messageBuffers.get(t);if(i&&i.length>0){this.emit({type:`scoop-transcript`,requestId:e,scoopJid:t,transcript:vn(i)});return}let a=this.orchestrator.getScoopContext(t);if(a){let{agentMessagesToChatMessages:n}=await import(`./agent-message-to-chat-y24E_cxL.js`),i=a.getAgentMessages();if(i.length>0){let a=n(i,{source:r.isCone?`cone`:r.name??r.folder});this.emit({type:`scoop-transcript`,requestId:e,scoopJid:t,transcript:vn(a)});return}}n()}persistScoop(e){this.persistScoopAwait(e)}async persistScoopAwait(e){if(!this.sessionStore||!this.orchestrator)return;let t=this.orchestrator.getScoops().find(t=>t.jid===e);if(!t)return;let n=t.isCone?`session-cone`:`session-${t.folder}`,r=this.messageBuffers.get(e);if(!(!r||r.length===0))try{await this.sessionStore.saveMessages(n,r)}catch(e){mn.error(`persistScoop failed`,{sessionId:n,error:e instanceof Error?e.message:String(e)})}}getBuffer(e){let t=this.messageBuffers.get(e);return t||(t=[],this.messageBuffers.set(e,t)),t}getOrCreateAssistantMsg(e){let t=this.getBuffer(e),n=this.currentMessageId.get(e);if(n){let e=t.find(e=>e.id===n);if(e)return e}n=`scoop-${e}-${_n()}`,this.currentMessageId.set(e,n);let r=(this.orchestrator?.getScoops()??[]).find(t=>t.jid===e),i=r?.isCone?`cone`:r?.name??`unknown`,a={id:n,role:`assistant`,content:``,timestamp:Date.now(),toolCalls:[],isStreaming:!0,source:i};return t.push(a),a}setupMessageListener(){return this.transport.onMessage(e=>{if(e.source===`panel`){if(e.payload?.type===`sprinkle-op-response`){import(`./sprinkle-proxy-B4nH2NxC.js`).then(({handleSprinkleOpResponse:t})=>{t(e.payload)});return}this.handlePanelMessage(e.payload).catch(t=>{console.error(`[offscreen-bridge] handlePanelMessage error:`,t);let n=e.payload.scoopJid;n&&this.emit({type:`error`,scoopJid:n,error:t instanceof Error?t.message:String(t)})})}})}async handlePanelMessage(e){if(this.orchestrator)switch(e.type){case`user-message`:await this.handleUserMessage(e);break;case`cone-create`:await this.handleConeCreate(e.name);break;case`scoop-feed`:await this.orchestrator.delegateToScoop(e.scoopJid,e.prompt,`sliccy`);break;case`scoop-drop`:await this.handleScoopDrop(e.scoopJid);break;case`abort`:this.orchestrator.stopScoop(e.scoopJid),this.orchestrator.clearQueuedMessages(e.scoopJid).catch(e=>{console.warn(`[offscreen-bridge] Failed to clear queued messages on abort:`,e)});break;case`delete-queued-message`:this.handleDeleteQueuedMessage(e.scoopJid,e.messageId);break;case`set-model`:this.orchestrator.updateModel();break;case`request-state`:this.emit(this.buildStateSnapshot());break;case`request-scoop-messages`:await this.handleRequestScoopMessages(e.scoopJid);break;case`request-scoop-transcript`:await this.handleRequestScoopTranscript(e.requestId,e.scoopJid);break;case`request-session-stats`:this.handleRequestSessionStats(e.requestId);break;case`clear-chat`:await this.handleClearChat(e.requestId);break;case`clear-filesystem`:await this.orchestrator.resetFilesystem().catch(e=>console.error(`[offscreen-bridge] clear-filesystem failed:`,e));break;case`refresh-model`:this.orchestrator.updateModel();break;case`set-thinking-level`:{let t=e;try{await this.orchestrator.setScoopThinkingLevel(t.scoopJid,t.level)}catch(e){console.error(`[offscreen-bridge] set-thinking-level failed:`,e)}break}case`sprinkle-lick`:await this.handleSprinkleLickMsg(e);break;case`lick-webhook-event`:this.orchestrator.handleWebhookEvent(e.webhookId,e.headers,e.body);break;case`set-follower-forwarding`:this.handleSetFollowerForwarding(e.enabled);break;case`inject-forwarded-lick`:this.handleInjectForwardedLick(e.event);break;case`lick-cherry-host-event`:this.orchestrator.handleCherryHostEvent(e.cherryRuntimeId,e.name,e.detail);break;case`reload-skills`:this.orchestrator.reloadAllSkills().catch(e=>{console.warn(`[offscreen-bridge] Skill reload failed:`,e)});break;case`panel-cdp-command`:await this.handlePanelCdpCommand(e);break;case`tool-ui-action`:await this.handleToolUIAction(e);break;case`local-storage-set`:this.applyLocalStorageOp(e.type,t=>t.setItem(e.key,e.value));break;case`local-storage-remove`:this.applyLocalStorageOp(e.type,t=>t.removeItem(e.key));break;case`local-storage-clear`:this.applyLocalStorageOp(e.type,e=>e.clear());break}}handleDeleteQueuedMessage(e,t){if(!this.orchestrator)return;this.orchestrator.deleteQueuedMessage(e,t).catch(e=>{console.warn(`[offscreen-bridge] Failed to delete queued message:`,e)});let n=this.messageBuffers.get(e);if(!n)return;let r=n.filter(e=>e.id!==t);r.length!==n.length&&(this.messageBuffers.set(e,r),this.persistScoop(e))}async handleUserMessage(e){if(this.getBuffer(e.scoopJid).push({id:e.messageId,role:`user`,content:e.text,attachments:e.attachments,timestamp:Date.now()}),this.persistScoop(e.scoopJid),this.followerSync){this.followerSync.sendMessage(e.text,e.messageId,e.attachments);return}let t={id:e.messageId,chatJid:e.scoopJid,senderId:`user`,senderName:`User`,content:e.text,attachments:e.attachments,timestamp:new Date().toISOString(),fromAssistant:!1,channel:`web`};await this.orchestrator?.handleMessage(t),this.orchestrator?.createScoopTab(e.scoopJid)}async handleScoopDrop(e){if(!this.orchestrator)return;let t=this.orchestrator.getScoops().find(t=>t.jid===e);if(await this.orchestrator.unregisterScoop(e),this.messageBuffers.delete(e),this.currentMessageId.delete(e),this.fanOutMessageId.delete(e),this.scoopStatuses.delete(e),t&&this.sessionStore){let e=t.isCone?`session-cone`:`session-${t.folder}`;this.sessionStore.delete(e).catch(t=>{console.warn(`[offscreen-bridge] Failed to delete session on scoop drop:`,e,t)})}this.emitScoopList()}async handleClearChat(e){let t=this.orchestrator?.getScoops().find(e=>e.isCone)?.jid;t&&await this.orchestrator?.clearScoopMessages(t),this.sessionStore&&await this.sessionStore.delete(`session-cone`),t&&(this.messageBuffers.delete(t),this.currentMessageId.delete(t),this.fanOutMessageId.delete(t)),this.emit({type:`clear-chat-ack`,requestId:e})}async handleSprinkleLickMsg(e){if(this.followerActive){this.followerSync?this.followerSync.sendSprinkleLick(e.sprinkleName,e.body,e.targetScoop):console.warn(`[offscreen-bridge] sprinkle-lick dropped: follower sync mid-reconnect`,{sprinkleName:e.sprinkleName});return}await this.routeSprinkleLick(e.sprinkleName,e.body,e.targetScoop,e.originLabel)}handleSetFollowerForwarding(e){let t=globalThis.__slicc_lickManager;if(!t){console.warn(`[offscreen-bridge] set-follower-forwarding ignored: worker LickManager unavailable`);return}e?t.setForwarder(e=>this.emit({type:`forward-lick`,event:e})):t.setForwarder(null)}handleInjectForwardedLick(e){let t=globalThis.__slicc_lickManager;if(!t){console.warn(`[offscreen-bridge] inject-forwarded-lick dropped: worker LickManager unavailable`,{type:e.type});return}t.emitEvent(e)}async handlePanelCdpCommand(e){let{id:t,method:n,params:r,sessionId:i}=e;if(!this.browserAPI){console.warn(`[offscreen-bridge] Panel CDP command received but BrowserAPI is null`),this.emit({type:`panel-cdp-response`,id:t,error:`BrowserAPI not available`});return}try{let e=await this.browserAPI.getTransport().send(n,r,i);this.emit({type:`panel-cdp-response`,id:t,result:e})}catch(e){this.emit({type:`panel-cdp-response`,id:t,error:e instanceof Error?e.message:String(e)})}}async handleToolUIAction(e){let{requestId:t,action:n,data:r}=e;try{await o.handleAction(t,{action:n,data:r})}catch(e){let r=e instanceof Error?e.message:String(e);console.error(`[offscreen-bridge] Tool UI action failed`,{requestId:t,action:n,error:r}),o.cancel(t,`Action failed: ${r}`)}}applyLocalStorageOp(e,t){try{let e=globalThis.localStorage;e&&t(e)}catch(t){console.warn(`[offscreen-bridge] ${e} failed:`,t)}}emitScoopList(){let e=this.orchestrator?.getScoops().map(e=>this.toScoopSnapshot(e))??[];this.emit({type:`scoop-list`,scoops:e})}emit(e){this.transport.send(e),e.type===`agent-event`&&this.fanOutAgentEvent(e)}};function _n(){return Date.now().toString(36)+Math.random().toString(36).slice(2,8)}function vn(e){let t=[];for(let n of e){let e=(n.content??``).trim();e.length!==0&&t.push(`${n.role}: ${e}`)}return t.join(`
6
- `)}const yn=i(`cdp`);var bn=class{ws=null;nextId=1;pending=new Map;listeners=new Map;_state=`disconnected`;get state(){return this._state}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}=e;return this._state=`connecting`,new Promise((e,r)=>{let i=setTimeout(()=>{this.cleanup(),r(Error(`CDP connection timed out after ${n}ms`))},n);try{this.ws=new WebSocket(t)}catch(e){clearTimeout(i),this._state=`disconnected`,r(e);return}this.ws.onopen=()=>{clearTimeout(i),this._state=`connected`,yn.info(`Connected`,{url:t}),e()},this.ws.onerror=e=>{clearTimeout(i),this._state===`connecting`&&(yn.error(`Connection failed`,{url:t}),this.cleanup(),r(Error(`CDP WebSocket connection failed`)))},this.ws.onmessage=e=>{this.handleMessage(e.data)},this.ws.onclose=()=>{this.handleClose()}})}disconnect(){this.ws&&(this.ws.onclose=null,this.ws.close()),this.cleanup(),yn.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),yn.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;yn.debug(`Response`,{id:e.id,hasError:!!e.error});let n=this.pending.get(e.id);n&&(this.pending.delete(e.id),e.error?(yn.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;yn.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(){yn.error(`Connection closed unexpectedly`,{pendingCommands:this.pending.size});for(let[,e]of this.pending)e.reject(Error(`CDP connection closed`));this.cleanup()}cleanup(){this.ws=null,this._state=`disconnected`,this.pending.clear()}};const xn=`(function() {
5
+ `)}}function st(e,t){let n=tt(e);return{label:t,content:`${e.originLabel?`_Forwarded from ${e.originLabel}._\n\n`:``}[${t}: ${n}]\n\`\`\`json\n${JSON.stringify(e.body,null,2)}\n\`\`\``}}function ct(e,t){let n=st(e,t),r=e.lickId;if(!r)return n;let i=e.body?.verb===`upskill`?`\n\nLick ID: ${r}\nUpskill install. To install, call \`lick_confirm\` with this lick id (it runs \`upskill\` with any branch/path scope from the body); to skip, call \`lick_dismiss\`. The card flips to ✓ on confirm / muted ✗ on dismiss.`:`\n\nLick ID: ${r}\nExternal handoff — stays human-gated. Show the approval dip and wait for the user; do NOT use \`lick_confirm\` / \`lick_dismiss\` here. Carry the lick id in the dip action so the card resolves: slicc.lick({action:'accept'|'dismiss', data:{lickId:'${r}'}}).`;return{label:n.label,content:`${n.content}${i}`}}function lt(e){let t=ree[e.type];return e.type===`session-reload`?nt(e,t):e.type===`upgrade`?rt(e,t):e.type===`cherry`?it(e,t):e.type===`workflow`?at(e,t):e.type===`sudo-request`?ot(e,t):e.type===`navigate`?ct(e,t):st(e,t)}const ut=64*1024;function dt(e,t=ut){return e.length<=t?e:`${e.slice(0,t)}\n… [tool output truncated for the chat transcript: showing ${gt(t)} of ${gt(e.length)} — the agent received the full output]`}function ft(e,t=ut,n=4){if(typeof e==`string`)return dt(e,t);if(typeof e!=`object`||!e||n<=0)return e;if(Array.isArray(e)){let r=null;for(let i=0;i<e.length;i++){let a=ft(e[i],t,n-1);a!==e[i]&&(r??=[...e],r[i]=a)}return r??e}let r=null;for(let[i,a]of Object.entries(e)){let o=ft(a,t,n-1);o!==a&&(r??={...e},r[i]=o)}return r??e}const pt=()=>/<img:data:image\/[^>]+>/g;function mt(e,t=ut){if(!e)return e;if(!pt().test(e))return dt(e,t);let n=dt(e.replace(pt(),``).trim(),t);return n.length>0?`${n}\n[screenshot omitted from transcript]`:`[screenshot]`}function ht(e,t=ut){if(e.length<=t)return e;if(!pt().test(e))return dt(e,t);let n=[],r=0;for(let i of e.matchAll(pt()))n.push(dt(e.slice(r,i.index),t)),n.push(i[0]),r=(i.index??0)+i[0].length;return n.push(dt(e.slice(r),t)),n.join(``)}function gt(e){return e>=1024*1024?`${(e/(1024*1024)).toFixed(1)} MB`:`${Math.round(e/1024)} KB`}let _t={state:`inactive`,joinUrl:null,trayId:null,error:null,lastPingTime:null,reconnectAttempts:0,attachAttempts:0,lastAttachCode:null,connectingSince:null,lastError:null};function vt(){return{..._t}}const yt=new Set;function bt(e){return yt.add(e),()=>{yt.delete(e)}}function xt(e){return e.headers.get(`x-proxy-error`)===`1`}async function St(e){let t=`Proxy error ${e.status}`,n;try{n=await e.text()}catch{return t}return Ct(n,t)}function Ct(e,t){let n;try{n=JSON.parse(e)}catch{return t}if(!n||typeof n!=`object`)return t;let r=n.error;if(typeof r==`string`&&r.length>0)return r;if(r&&typeof r==`object`){let e=r.message;if(typeof e==`string`&&e.length>0)return e;try{return JSON.stringify(r)}catch{return t}}return t}const wt={SCOOPS:`scoops`,MESSAGES:`messages`,SESSIONS:`sessions`,TASKS:`tasks`,STATE:`state`,WEBHOOKS:`webhooks`,CRONTASKS:`crontasks`};let Tt=null;function Et(e){if(!e.objectStoreNames.contains(wt.MESSAGES)){let t=e.createObjectStore(wt.MESSAGES,{keyPath:`id`});t.createIndex(`chatJid`,`chatJid`),t.createIndex(`timestamp`,`timestamp`),t.createIndex(`chatJid_timestamp`,[`chatJid`,`timestamp`])}e.objectStoreNames.contains(wt.SESSIONS)||e.createObjectStore(wt.SESSIONS,{keyPath:`groupFolder`}),e.objectStoreNames.contains(wt.TASKS)||e.createObjectStore(wt.TASKS,{keyPath:`id`}).createIndex(`groupFolder`,`groupFolder`),e.objectStoreNames.contains(wt.STATE)||e.createObjectStore(wt.STATE,{keyPath:`key`})}function Dt(e){let t=e.isMain??!1;return{jid:e.jid,name:e.name,folder:e.folder,trigger:t?void 0:e.trigger||`@${e.folder}`,requiresTrigger:!t&&(e.requiresTrigger??!0),isCone:t,type:t?`cone`:`scoop`,assistantLabel:t?`sliccy`:e.config?.assistantName||e.folder,addedAt:e.addedAt,config:e.config?{systemPromptAppend:e.config.systemPromptAppend,timeout:e.config.timeout,assistantName:e.config.assistantName}:void 0}}function Ot(e,t){if(t.objectStoreNames.contains(`groups`)){let n=e.target.transaction.objectStore(`groups`).getAll();n.onsuccess=()=>{let e=n.result;t.deleteObjectStore(`groups`);let r=t.createObjectStore(wt.SCOOPS,{keyPath:`jid`});r.createIndex(`type`,`type`);for(let t of e)r.put(Dt(t))};return}t.objectStoreNames.contains(wt.SCOOPS)||t.createObjectStore(wt.SCOOPS,{keyPath:`jid`}).createIndex(`type`,`type`)}function kt(e){e.objectStoreNames.contains(wt.WEBHOOKS)||e.createObjectStore(wt.WEBHOOKS,{keyPath:`id`}),e.objectStoreNames.contains(wt.CRONTASKS)||e.createObjectStore(wt.CRONTASKS,{keyPath:`id`})}function At(e){let t=e.target.result,n=e.oldVersion;n<1&&Et(t),n<2&&Ot(e,t),n<3&&kt(t)}function jt(){if(!Tt)return null;let e=Object.values(wt).every(e=>Tt.objectStoreNames.contains(e));return Tt.version===3&&e?Tt:(Tt.close(),Tt=null,null)}function Mt(e){e.onversionchange=()=>{e.close(),Tt===e&&(Tt=null)},e.onclose=()=>{Tt===e&&(Tt=null)}}async function Nt(){return jt()||new Promise((e,t)=>{let n=indexedDB.open(`slicc-groups`,3);n.onupgradeneeded=At,n.onsuccess=()=>{let t=n.result;Mt(t),Tt=t,e(t)},n.onerror=()=>t(n.error)})}async function Pt(e,t=`readonly`){return(await Nt()).transaction(e,t).objectStore(e)}async function Ft(e){let t=await Pt(wt.SCOOPS,`readwrite`);return new Promise((n,r)=>{let i=t.put(e);i.onsuccess=()=>n(),i.onerror=()=>r(i.error)})}async function It(){let e=await Pt(wt.SCOOPS);return new Promise((t,n)=>{let r=e.getAll();r.onsuccess=()=>{let e={};for(let t of r.result)e[t.jid]=t;t(e)},r.onerror=()=>n(r.error)})}async function Lt(e){let t=await Pt(wt.SCOOPS,`readwrite`);return new Promise((n,r)=>{let i=t.delete(e);i.onsuccess=()=>n(),i.onerror=()=>r(i.error)})}async function Rt(){let e=await Pt(wt.MESSAGES,`readwrite`);return new Promise((t,n)=>{let r=e.clear();r.onsuccess=()=>t(),r.onerror=()=>n(r.error)})}async function zt(e){let t=(await Pt(wt.MESSAGES,`readwrite`)).index(`chatJid_timestamp`),n=IDBKeyRange.bound([e,``],[e,`￿`],!1,!1);return new Promise((e,r)=>{let i=t.openCursor(n);i.onsuccess=()=>{let t=i.result;if(!t){e();return}t.delete(),t.continue()},i.onerror=()=>r(i.error)})}async function Bt(e){let t=await Pt(wt.MESSAGES,`readwrite`);return new Promise((n,r)=>{let i=t.put(e);i.onsuccess=()=>n(),i.onerror=()=>r(i.error)})}async function Vt(e){let t=await Pt(wt.MESSAGES,`readwrite`);return new Promise((n,r)=>{let i=t.delete(e);i.onsuccess=()=>n(),i.onerror=()=>r(i.error)})}async function Ht(e){let t=(await Pt(wt.MESSAGES)).index(`chatJid_timestamp`),n=IDBKeyRange.bound([e,``],[e,`￿`],!1,!1);return new Promise((e,r)=>{let i=t.getAll(n);i.onsuccess=()=>e(i.result),i.onerror=()=>r(i.error)})}async function iee(e,t,n){let r=(await Pt(wt.MESSAGES)).index(`chatJid_timestamp`),i=IDBKeyRange.bound([e,t],[e,`￿`],!0,!1);return new Promise((e,t)=>{let a=r.getAll(i);a.onsuccess=()=>{let t=a.result;n&&(t=t.filter(e=>e.senderName!==n)),e(t)},a.onerror=()=>t(a.error)})}async function Ut(e){let t=await Pt(wt.TASKS,`readwrite`);return new Promise((n,r)=>{let i=t.put(e);i.onsuccess=()=>n(),i.onerror=()=>r(i.error)})}async function Wt(e){let t=await Pt(wt.TASKS);return new Promise((n,r)=>{let i=t.get(e);i.onsuccess=()=>n(i.result??null),i.onerror=()=>r(i.error)})}async function Gt(){let e=await Pt(wt.TASKS);return new Promise((t,n)=>{let r=e.getAll();r.onsuccess=()=>t(r.result),r.onerror=()=>n(r.error)})}async function Kt(e){let t=await Pt(wt.TASKS,`readwrite`);return new Promise((n,r)=>{let i=t.delete(e);i.onsuccess=()=>n(),i.onerror=()=>r(i.error)})}async function qt(e){let t=await Pt(wt.STATE);return new Promise((n,r)=>{let i=t.get(e);i.onsuccess=()=>n(i.result?.value??null),i.onerror=()=>r(i.error)})}async function Jt(e,t){let n=await Pt(wt.STATE,`readwrite`);return new Promise((r,i)=>{let a=n.put({key:e,value:t});a.onsuccess=()=>r(),a.onerror=()=>i(a.error)})}async function Yt(){await Nt()}async function Xt(e){let t=await Pt(wt.WEBHOOKS,`readwrite`);return new Promise((n,r)=>{let i=t.put(e);i.onsuccess=()=>n(),i.onerror=()=>r(i.error)})}async function Zt(){try{let e=await Pt(wt.WEBHOOKS);return new Promise((t,n)=>{let r=e.getAll();r.onsuccess=()=>t(r.result),r.onerror=()=>n(r.error)})}catch{return[]}}async function Qt(e){let t=await Pt(wt.WEBHOOKS,`readwrite`);return new Promise((n,r)=>{let i=t.delete(e);i.onsuccess=()=>n(),i.onerror=()=>r(i.error)})}async function $t(e){let t=await Pt(wt.CRONTASKS,`readwrite`);return new Promise((n,r)=>{let i=t.put(e);i.onsuccess=()=>n(),i.onerror=()=>r(i.error)})}async function en(){try{let e=await Pt(wt.CRONTASKS);return new Promise((t,n)=>{let r=e.getAll();r.onsuccess=()=>t(r.result),r.onerror=()=>n(r.error)})}catch{return[]}}async function tn(e){let t=await Pt(wt.CRONTASKS,`readwrite`);return new Promise((n,r)=>{let i=t.delete(e);i.onsuccess=()=>n(),i.onerror=()=>r(i.error)})}function nn(e){if(!e)return null;try{let t=new URL(e.trim());t.search=``,t.hash=``,t.pathname!==`/`&&(t.pathname=t.pathname.replace(/\/+$/,``)||`/`);let n=t.toString();return n.endsWith(`/`)?n.slice(0,-1):n}catch{return null}}const rn=`slicc.trayWorkerBaseUrl`,an=`https://www.sliccy.ai`;i(`tray-leader`);let on={state:`inactive`,session:null,error:null};function sn(){return{...on,session:on.session?{...on.session}:null}}function cn(){let e=sn();if(e.state!==`inactive`)return e;try{let e=globalThis.localStorage?.getItem(`slicc.leaderTrayStatus`);if(e){let t=JSON.parse(e);if(t?.state&&t.state!==`inactive`)return t}}catch{}return e}const ln=new Set;function un(e){return ln.add(e),()=>{ln.delete(e)}}const dn=`sessions`;function fn(){return new Promise((e,t)=>{let n=indexedDB.open(`browser-coding-agent`,1);n.onupgradeneeded=()=>{let e=n.result;e.objectStoreNames.contains(dn)||e.createObjectStore(dn,{keyPath:`id`})},n.onsuccess=()=>e(n.result),n.onerror=()=>t(n.error)})}var pn=class{db=null;async init(){await this.getDb()}async getDb(){if(!this.db){let e=await fn();e.onversionchange=()=>{e.close(),this.db=null},e.onclose=()=>{this.db=null},this.db=e}return this.db}async save(e){let t=await this.getDb();return new Promise((n,r)=>{let i=t.transaction(dn,`readwrite`);i.objectStore(dn).put(e),i.oncomplete=()=>n(),i.onerror=()=>r(i.error)})}async load(e){let t=await this.getDb();return new Promise((n,r)=>{let i=t.transaction(dn,`readonly`).objectStore(dn).get(e);i.onsuccess=()=>n(i.result??null),i.onerror=()=>r(i.error)})}async list(){let e=await this.getDb();return new Promise((t,n)=>{let r=e.transaction(dn,`readonly`).objectStore(dn).getAll();r.onsuccess=()=>{t(r.result.sort((e,t)=>t.updatedAt-e.updatedAt).map(e=>e.id))},r.onerror=()=>n(r.error)})}async delete(e){let t=await this.getDb();return new Promise((n,r)=>{let i=t.transaction(dn,`readwrite`);i.objectStore(dn).delete(e),i.oncomplete=()=>n(),i.onerror=()=>r(i.error)})}async saveMessages(e,t){let n=await this.load(e),r=n?{...n,messages:t,updatedAt:Date.now()}:{id:e,messages:t,createdAt:Date.now(),updatedAt:Date.now()};await this.save(r)}};const mn=i(`offscreen-bridge`);function hn(e){if(typeof e!=`object`||!e)return null;let t=e;if(t.action!==`accept`&&t.action!==`dismiss`)return null;let n=t.data,r=n&&typeof n.lickId==`string`?n.lickId:null;return r?{lickId:r,accepted:t.action===`accept`}:null}var gn=class{orchestrator=null;browserAPI=null;messageBuffers=new Map;currentMessageId=new Map;scoopStatuses=new Map;sessionStore=null;followerSync=null;followerActive=!1;_transport;transportUnsubscribe=null;activeScoopJid=null;agentEventListeners=new Set;fanOutMessageId=new Map;constructor(e){this._transport=e??null}get transport(){return this._transport||=Ye(),this._transport}async bind(e,t){this.orchestrator=e,this.browserAPI=t??null,this.transportUnsubscribe?.(),this.transportUnsubscribe=this.setupMessageListener();let n=new pn;await n.init(),this.sessionStore=n}static createCallbacks(e){return{onResponse:(t,n,r)=>{let i=e.getOrCreateAssistantMsg(t);r?i.content+=n:(i.content=n,i.isStreaming=!1),e.emit({type:`agent-event`,scoopJid:t,eventType:`text_delta`,text:n})},onResponseDone:t=>{let n=e.currentMessageId.get(t);if(n){let r=e.getBuffer(t).find(e=>e.id===n);r&&(r.isStreaming=!1),e.currentMessageId.delete(t)}e.persistScoop(t),e.emit({type:`agent-event`,scoopJid:t,eventType:`response_done`})},onSendMessage:(t,n)=>{let r=e.getBuffer(t),i=`msg-${_n()}`;r.push({id:i,role:`assistant`,content:n,timestamp:Date.now()}),e.persistScoop(t),e.emit({type:`agent-event`,scoopJid:t,eventType:`text_delta`,text:n}),e.emit({type:`agent-event`,scoopJid:t,eventType:`response_done`})},onStatusChange:(t,n)=>{e.scoopStatuses.set(t,n),n===`ready`&&e.currentMessageId.delete(t),e.emit({type:`scoop-status`,scoopJid:t,status:n}),e.emitScoopList()},onCompactionStateChange:(t,n)=>{e.emit({type:`compaction-state`,scoopJid:t,state:n})},onError:(t,n)=>{e.emit({type:`error`,scoopJid:t,error:n})},onToolStart:(t,n,r)=>{Xe.has(n)||e.bufferToolStart(t,n,r)},onToolEnd:(t,n,r,i)=>{Xe.has(n)||e.bufferToolEnd(t,n,r,i)},onToolUI:(t,n,r,i)=>{e.emit({type:`agent-event`,scoopJid:t,eventType:`tool_ui`,toolName:n,requestId:r,html:i})},onToolUIDone:(t,n)=>{e.emit({type:`agent-event`,scoopJid:t,eventType:`tool_ui_done`,requestId:n})},onIncomingMessage:(t,n)=>e.bufferIncomingMessage(t,n),onMessageUpdate:(t,n)=>e.applyMessageUpdate(t,n),onScoopUnregistered:t=>e.evictScoopState(t)}}bufferToolStart(e,t,n){let r=ft(n),i=this.getOrCreateAssistantMsg(e);i.toolCalls||=[],i.toolCalls.push({id:_n(),name:t,input:r}),this.emit({type:`agent-event`,scoopJid:e,eventType:`tool_start`,toolName:t,toolInput:r})}bufferToolEnd(e,t,n,r){let i=this.currentMessageId.get(e);if(i){let a=this.getBuffer(e).find(e=>e.id===i);if(a?.toolCalls){let e=[...a.toolCalls].reverse().find(e=>e.name===t&&e.result===void 0);e&&(e.result=mt(n),e.isError=r)}}this.persistScoop(e),this.emit({type:`agent-event`,scoopJid:e,eventType:`tool_end`,toolName:t,toolResult:ht(n),isError:r})}bufferIncomingMessage(e,t){let n={id:t.id,role:`user`,content:t.channel===`delegation`?`**[Instructions from sliccy]**\n\n${t.content}`:t.content,attachments:t.attachments,timestamp:new Date(t.timestamp).getTime(),source:t.channel===`delegation`?`delegation`:void 0,channel:t.channel,lickId:t.lickId,lickState:t.lickState};this.getBuffer(e).push(n),this.persistScoop(e),this.notifyPanelIncomingMessage(e,t)}evictScoopState(e){this.messageBuffers.delete(e.jid),this.currentMessageId.delete(e.jid),this.fanOutMessageId.delete(e.jid),this.scoopStatuses.delete(e.jid),!e.isCone&&this.sessionStore&&this.sessionStore.delete(`session-${e.folder}`).catch(t=>{console.warn(`[offscreen-bridge] Failed to delete session for unregistered scoop:`,e.folder,t)}),this.emitScoopList()}notifyPanelIncomingMessage(e,t){this.emit({type:`incoming-message`,scoopJid:e,message:{id:t.id,content:t.content,attachments:t.attachments,channel:t.channel,senderName:t.senderName,fromAssistant:t.fromAssistant,timestamp:t.timestamp,lickId:t.lickId,lickState:t.lickState}})}applyMessageUpdate(e,t){let n=this.messageBuffers.get(e)?.find(e=>t.lickId&&e.lickId===t.lickId||e.id===t.messageId);n&&(n.lickState=t.lickState,this.persistScoop(e)),this.emit({type:`message-updated`,scoopJid:e,messageId:t.messageId,lickId:t.lickId,lickState:t.lickState})}toScoopSnapshot(e){let t=e.config&&(e.config.modelId!==void 0||e.config.thinkingLevel!==void 0)?{...e.config.modelId===void 0?{}:{modelId:e.config.modelId},...e.config.thinkingLevel===void 0?{}:{thinkingLevel:e.config.thinkingLevel}}:void 0;return{jid:e.jid,name:e.name,folder:e.folder,isCone:e.isCone,assistantLabel:e.assistantLabel,status:this.scoopStatuses.get(e.jid)??`ready`,...t?{config:t}:{}}}buildStateSnapshot(){let e=this.orchestrator?.getScoops().map(e=>this.toScoopSnapshot(e))??[],t=e.find(e=>e.isCone);return{type:`state-snapshot`,scoops:e,activeScoopJid:this.getActiveScoopJid()??t?.jid??null,trayRuntimeStatus:this.buildTrayRuntimeStatus()}}emitTrayRuntimeStatus(){let e=this.buildTrayRuntimeStatus(),t={type:`tray-runtime-status`,leader:e.leader,follower:e.follower};this.emit(t)}buildTrayRuntimeStatus(){let e=sn(),t=vt();return{leader:{state:e.state,session:e.session,error:e.error??null,reconnectAttempts:e.reconnectAttempts??0},follower:{state:t.state,joinUrl:t.joinUrl,trayId:t.trayId,error:t.error,lastError:t.lastError,reconnectAttempts:t.reconnectAttempts,attachAttempts:t.attachAttempts,lastAttachCode:t.lastAttachCode,connectingSince:t.connectingSince,lastPingTime:t.lastPingTime}}}setFollowerSync(e){this.followerSync=e}setFollowerActive(e){this.followerActive=e}setActiveScoopJid(e){this.activeScoopJid=e}getActiveScoopJid(){return this.activeScoopJid}onAgentEvent(e){return this.agentEventListeners.add(e),()=>{this.agentEventListeners.delete(e)}}fanOutAgentEvent(e){let{scoopJid:t,eventType:n}=e,r=[],i=()=>{let e=this.fanOutMessageId.get(t);return e||(e=`scoop-${t}-${_n()}`,this.fanOutMessageId.set(t,e),r.push({type:`message_start`,messageId:e})),e};switch(n){case`text_delta`:{let t=i();r.push({type:`content_delta`,messageId:t,text:e.text??``});break}case`tool_start`:{let t=i();r.push({type:`tool_use_start`,messageId:t,toolName:e.toolName??``,toolInput:e.toolInput});break}case`tool_end`:{let n=this.fanOutMessageId.get(t);if(!n)return;r.push({type:`tool_result`,messageId:n,toolName:e.toolName??``,result:e.toolResult??``,isError:e.isError});break}case`tool_ui`:{let t=i();r.push({type:`tool_ui`,messageId:t,toolName:e.toolName??``,requestId:e.requestId??``,html:e.html??``});break}case`tool_ui_done`:{let n=this.fanOutMessageId.get(t);if(!n)return;r.push({type:`tool_ui_done`,messageId:n,requestId:e.requestId??``});break}case`response_done`:{let e=this.fanOutMessageId.get(t);if(!e)return;r.push({type:`content_done`,messageId:e}),this.fanOutMessageId.delete(t);break}case`turn_end`:this.fanOutMessageId.delete(t);break}for(let e of r)for(let n of this.agentEventListeners)try{n(t,e)}catch(e){mn.error(`onAgentEvent listener threw`,{error:e instanceof Error?e.message:String(e)})}}getMessagesForJid(e){return this.getBuffer(e)}async routeSprinkleLick(e,t,n,r){if(!this.orchestrator)return;let i=hn(t);i&&this.orchestrator.resolveNavigateHandoffByHuman(i.lickId,i.accepted);let a=this.orchestrator.getScoops(),o=n?a.find(e=>e.name===n||e.folder===n||e.folder===`${n}-scoop`):void 0;if(o||=a.find(e=>e.isCone),!o)return;let s=`sprinkle-${e}-${Date.now()}`,c=lt({type:`sprinkle`,sprinkleName:e,timestamp:new Date().toISOString(),body:t,originLabel:r})?.content??`[Sprinkle Event: ${e}]\n\`\`\`json\n${JSON.stringify(t,null,2)}\n\`\`\``,l={id:s,chatJid:o.jid,senderId:`sprinkle`,senderName:`sprinkle:${e}`,content:c,timestamp:new Date().toISOString(),fromAssistant:!1,channel:`sprinkle`};this.getBuffer(o.jid).push({id:s,role:`user`,content:c,timestamp:Date.now(),source:`lick`,channel:`sprinkle`}),this.persistScoop(o.jid),await this.orchestrator.handleMessage(l)}applyFollowerSnapshot(e){if(!this.orchestrator)return;let t=this.orchestrator.getScoops().find(e=>e.isCone);if(!t)return;let n=e.map(e=>({id:e.id,role:e.role,content:e.content,attachments:e.attachments,timestamp:e.timestamp,source:e.source,channel:e.channel,toolCalls:e.toolCalls?.map(e=>({id:e.id,name:e.name,input:e.input,result:e.result,isError:e.isError})),isStreaming:e.isStreaming}));if(this.messageBuffers.set(t.jid,n),this.currentMessageId.delete(t.jid),this.fanOutMessageId.delete(t.jid),this.sessionStore){let n=t.isCone?`session-cone`:`session-${t.folder}`;this.sessionStore.saveMessages(n,e).catch(e=>{mn.error(`applyFollowerSnapshot persist failed`,{error:e instanceof Error?e.message:String(e)})})}this.emit({type:`scoop-messages-replaced`,scoopJid:t.jid,messages:n})}getConeJid(){return this.orchestrator?.getScoops().find(e=>e.isCone)?.jid??null}emitFollowerAgentEvent(e){let t=this.getConeJid();if(t)switch(e.type){case`content_delta`:this.emit({type:`agent-event`,scoopJid:t,eventType:`text_delta`,text:e.text});break;case`content_done`:this.emit({type:`agent-event`,scoopJid:t,eventType:`response_done`});break;case`tool_use_start`:this.emit({type:`agent-event`,scoopJid:t,eventType:`tool_start`,toolName:e.toolName,toolInput:e.toolInput});break;case`tool_result`:this.emit({type:`agent-event`,scoopJid:t,eventType:`tool_end`,toolName:e.toolName,toolResult:e.result,isError:e.isError});break;case`turn_end`:this.emit({type:`agent-event`,scoopJid:t,eventType:`turn_end`});break;case`error`:this.emit({type:`error`,scoopJid:t,error:e.error});break}}emitFollowerIncomingMessage(e,t){let n=this.getConeJid();n&&this.emit({type:`incoming-message`,scoopJid:n,message:{id:e,content:t,channel:`web`,senderName:`User`,fromAssistant:!1,timestamp:new Date().toISOString()}})}emitFollowerStatus(e){let t=this.getConeJid();if(!t)return;let n=e===`processing`?`processing`:`ready`;this.scoopStatuses.set(t,n),this.emit({type:`scoop-status`,scoopJid:t,status:n})}async buildBufferFromAgentMessages(e){let t=this.orchestrator?.getScoopContext(e.jid);if(!t)return null;let n=t.getAgentMessages();if(n.length===0)return null;let{agentMessagesToChatMessages:r}=await import(`./agent-message-to-chat-bEHX4iF4.js`);return r(n,{source:e.isCone?`cone`:e.name??e.folder}).map(e=>({id:e.id,role:e.role,content:e.content,attachments:e.attachments,timestamp:e.timestamp,source:e.source,channel:e.channel,toolCalls:e.toolCalls?.map(e=>({id:e.id,name:e.name,input:e.input,result:e.result,isError:e.isError})),isStreaming:!1}))}async seedBuffersFromAgentState(){if(this.orchestrator)for(let e of this.orchestrator.getScoops()){let t=this.messageBuffers.get(e.jid);if(t&&t.length>0)continue;let n=await this.buildBufferFromAgentMessages(e);n&&(this.messageBuffers.set(e.jid,n),this.currentMessageId.delete(e.jid),this.fanOutMessageId.delete(e.jid),await this.persistScoopAwait(e.jid))}}async handleRequestScoopMessages(e){if(!this.orchestrator)return;let t=this.orchestrator.getScoops().find(t=>t.jid===e);if(!t)return;let n=this.messageBuffers.get(e);if(n&&n.length>0){this.emit({type:`scoop-messages-replaced`,scoopJid:e,messages:n});return}let r=await this.buildBufferFromAgentMessages(t);if(r){this.messageBuffers.set(e,r),this.currentMessageId.delete(e),this.fanOutMessageId.delete(e),this.persistScoop(e),this.emit({type:`scoop-messages-replaced`,scoopJid:e,messages:r});return}if(this.sessionStore){let n=t.isCone?`session-cone`:`session-${t.folder}`;try{let t=(await this.sessionStore.load(n))?.messages??[];t.length>0&&(this.messageBuffers.set(e,t),this.currentMessageId.delete(e),this.fanOutMessageId.delete(e),this.emit({type:`scoop-messages-replaced`,scoopJid:e,messages:t}))}catch(e){mn.error(`sessionStore load failed`,{sessionId:n,error:e instanceof Error?e.message:String(e)})}}}async handleConeCreate(e){if(!this.orchestrator)return;let t={jid:`cone_${Date.now()}`,name:e,folder:`cone`,isCone:!0,type:`cone`,requiresTrigger:!1,assistantLabel:`sliccy`,addedAt:new Date().toISOString()};await this.orchestrator.registerScoop(t),this.emit({type:`scoop-created`,scoop:this.toScoopSnapshot(t)})}handleRequestSessionStats(e){let t=0,n=[];try{t=(this.orchestrator?.getSessionCosts()??[]).reduce((e,t)=>e+t.usage.cost.total,0),n=this.orchestrator?.getContextFills()??[]}catch{}this.emit({type:`session-stats`,requestId:e,totalCost:t,fills:n})}async handleRequestScoopTranscript(e,t){let n=()=>{this.emit({type:`scoop-transcript`,requestId:e,scoopJid:t,transcript:``})};if(!this.orchestrator){n();return}let r=this.orchestrator.getScoops().find(e=>e.jid===t);if(!r){n();return}let i=this.messageBuffers.get(t);if(i&&i.length>0){this.emit({type:`scoop-transcript`,requestId:e,scoopJid:t,transcript:vn(i)});return}let a=this.orchestrator.getScoopContext(t);if(a){let{agentMessagesToChatMessages:n}=await import(`./agent-message-to-chat-bEHX4iF4.js`),i=a.getAgentMessages();if(i.length>0){let a=n(i,{source:r.isCone?`cone`:r.name??r.folder});this.emit({type:`scoop-transcript`,requestId:e,scoopJid:t,transcript:vn(a)});return}}n()}persistScoop(e){this.persistScoopAwait(e)}async persistScoopAwait(e){if(!this.sessionStore||!this.orchestrator)return;let t=this.orchestrator.getScoops().find(t=>t.jid===e);if(!t)return;let n=t.isCone?`session-cone`:`session-${t.folder}`,r=this.messageBuffers.get(e);if(!(!r||r.length===0))try{await this.sessionStore.saveMessages(n,r)}catch(e){mn.error(`persistScoop failed`,{sessionId:n,error:e instanceof Error?e.message:String(e)})}}getBuffer(e){let t=this.messageBuffers.get(e);return t||(t=[],this.messageBuffers.set(e,t)),t}getOrCreateAssistantMsg(e){let t=this.getBuffer(e),n=this.currentMessageId.get(e);if(n){let e=t.find(e=>e.id===n);if(e)return e}n=`scoop-${e}-${_n()}`,this.currentMessageId.set(e,n);let r=(this.orchestrator?.getScoops()??[]).find(t=>t.jid===e),i=r?.isCone?`cone`:r?.name??`unknown`,a={id:n,role:`assistant`,content:``,timestamp:Date.now(),toolCalls:[],isStreaming:!0,source:i};return t.push(a),a}setupMessageListener(){return this.transport.onMessage(e=>{if(e.source===`panel`){if(e.payload?.type===`sprinkle-op-response`){import(`./sprinkle-proxy-B4nH2NxC.js`).then(({handleSprinkleOpResponse:t})=>{t(e.payload)});return}this.handlePanelMessage(e.payload).catch(t=>{console.error(`[offscreen-bridge] handlePanelMessage error:`,t);let n=e.payload.scoopJid;n&&this.emit({type:`error`,scoopJid:n,error:t instanceof Error?t.message:String(t)})})}})}async handlePanelMessage(e){if(this.orchestrator)switch(e.type){case`user-message`:await this.handleUserMessage(e);break;case`cone-create`:await this.handleConeCreate(e.name);break;case`scoop-feed`:await this.orchestrator.delegateToScoop(e.scoopJid,e.prompt,`sliccy`);break;case`scoop-drop`:await this.handleScoopDrop(e.scoopJid);break;case`abort`:this.orchestrator.stopScoop(e.scoopJid),this.orchestrator.clearQueuedMessages(e.scoopJid).catch(e=>{console.warn(`[offscreen-bridge] Failed to clear queued messages on abort:`,e)});break;case`delete-queued-message`:this.handleDeleteQueuedMessage(e.scoopJid,e.messageId);break;case`set-model`:this.orchestrator.updateModel();break;case`request-state`:this.emit(this.buildStateSnapshot());break;case`request-scoop-messages`:await this.handleRequestScoopMessages(e.scoopJid);break;case`request-scoop-transcript`:await this.handleRequestScoopTranscript(e.requestId,e.scoopJid);break;case`request-session-stats`:this.handleRequestSessionStats(e.requestId);break;case`clear-chat`:await this.handleClearChat(e.requestId);break;case`clear-filesystem`:await this.orchestrator.resetFilesystem().catch(e=>console.error(`[offscreen-bridge] clear-filesystem failed:`,e));break;case`refresh-model`:this.orchestrator.updateModel();break;case`set-thinking-level`:{let t=e;try{await this.orchestrator.setScoopThinkingLevel(t.scoopJid,t.level)}catch(e){console.error(`[offscreen-bridge] set-thinking-level failed:`,e)}break}case`sprinkle-lick`:await this.handleSprinkleLickMsg(e);break;case`lick-webhook-event`:this.orchestrator.handleWebhookEvent(e.webhookId,e.headers,e.body);break;case`set-follower-forwarding`:this.handleSetFollowerForwarding(e.enabled);break;case`inject-forwarded-lick`:this.handleInjectForwardedLick(e.event);break;case`lick-cherry-host-event`:this.orchestrator.handleCherryHostEvent(e.cherryRuntimeId,e.name,e.detail);break;case`reload-skills`:this.orchestrator.reloadAllSkills().catch(e=>{console.warn(`[offscreen-bridge] Skill reload failed:`,e)});break;case`panel-cdp-command`:await this.handlePanelCdpCommand(e);break;case`tool-ui-action`:await this.handleToolUIAction(e);break;case`local-storage-set`:this.applyLocalStorageOp(e.type,t=>t.setItem(e.key,e.value));break;case`local-storage-remove`:this.applyLocalStorageOp(e.type,t=>t.removeItem(e.key));break;case`local-storage-clear`:this.applyLocalStorageOp(e.type,e=>e.clear());break}}handleDeleteQueuedMessage(e,t){if(!this.orchestrator)return;this.orchestrator.deleteQueuedMessage(e,t).catch(e=>{console.warn(`[offscreen-bridge] Failed to delete queued message:`,e)});let n=this.messageBuffers.get(e);if(!n)return;let r=n.filter(e=>e.id!==t);r.length!==n.length&&(this.messageBuffers.set(e,r),this.persistScoop(e))}async handleUserMessage(e){if(this.getBuffer(e.scoopJid).push({id:e.messageId,role:`user`,content:e.text,attachments:e.attachments,timestamp:Date.now()}),this.persistScoop(e.scoopJid),this.followerSync){this.followerSync.sendMessage(e.text,e.messageId,e.attachments);return}let t={id:e.messageId,chatJid:e.scoopJid,senderId:`user`,senderName:`User`,content:e.text,attachments:e.attachments,timestamp:new Date().toISOString(),fromAssistant:!1,channel:`web`};await this.orchestrator?.handleMessage(t),this.orchestrator?.createScoopTab(e.scoopJid)}async handleScoopDrop(e){if(!this.orchestrator)return;let t=this.orchestrator.getScoops().find(t=>t.jid===e);if(await this.orchestrator.unregisterScoop(e),this.messageBuffers.delete(e),this.currentMessageId.delete(e),this.fanOutMessageId.delete(e),this.scoopStatuses.delete(e),t&&this.sessionStore){let e=t.isCone?`session-cone`:`session-${t.folder}`;this.sessionStore.delete(e).catch(t=>{console.warn(`[offscreen-bridge] Failed to delete session on scoop drop:`,e,t)})}this.emitScoopList()}async handleClearChat(e){let t=this.orchestrator?.getScoops().find(e=>e.isCone)?.jid;t&&await this.orchestrator?.clearScoopMessages(t),this.sessionStore&&await this.sessionStore.delete(`session-cone`),t&&(this.messageBuffers.delete(t),this.currentMessageId.delete(t),this.fanOutMessageId.delete(t)),this.emit({type:`clear-chat-ack`,requestId:e})}async handleSprinkleLickMsg(e){if(this.followerActive){this.followerSync?this.followerSync.sendSprinkleLick(e.sprinkleName,e.body,e.targetScoop):console.warn(`[offscreen-bridge] sprinkle-lick dropped: follower sync mid-reconnect`,{sprinkleName:e.sprinkleName});return}await this.routeSprinkleLick(e.sprinkleName,e.body,e.targetScoop,e.originLabel)}handleSetFollowerForwarding(e){let t=globalThis.__slicc_lickManager;if(!t){console.warn(`[offscreen-bridge] set-follower-forwarding ignored: worker LickManager unavailable`);return}e?t.setForwarder(e=>this.emit({type:`forward-lick`,event:e})):t.setForwarder(null)}handleInjectForwardedLick(e){let t=globalThis.__slicc_lickManager;if(!t){console.warn(`[offscreen-bridge] inject-forwarded-lick dropped: worker LickManager unavailable`,{type:e.type});return}t.emitEvent(e)}async handlePanelCdpCommand(e){let{id:t,method:n,params:r,sessionId:i}=e;if(!this.browserAPI){console.warn(`[offscreen-bridge] Panel CDP command received but BrowserAPI is null`),this.emit({type:`panel-cdp-response`,id:t,error:`BrowserAPI not available`});return}try{let e=await this.browserAPI.getTransport().send(n,r,i);this.emit({type:`panel-cdp-response`,id:t,result:e})}catch(e){this.emit({type:`panel-cdp-response`,id:t,error:e instanceof Error?e.message:String(e)})}}async handleToolUIAction(e){let{requestId:t,action:n,data:r}=e;try{await o.handleAction(t,{action:n,data:r})}catch(e){let r=e instanceof Error?e.message:String(e);console.error(`[offscreen-bridge] Tool UI action failed`,{requestId:t,action:n,error:r}),o.cancel(t,`Action failed: ${r}`)}}applyLocalStorageOp(e,t){try{let e=globalThis.localStorage;e&&t(e)}catch(t){console.warn(`[offscreen-bridge] ${e} failed:`,t)}}emitScoopList(){let e=this.orchestrator?.getScoops().map(e=>this.toScoopSnapshot(e))??[];this.emit({type:`scoop-list`,scoops:e})}emit(e){this.transport.send(e),e.type===`agent-event`&&this.fanOutAgentEvent(e)}};function _n(){return Date.now().toString(36)+Math.random().toString(36).slice(2,8)}function vn(e){let t=[];for(let n of e){let e=(n.content??``).trim();e.length!==0&&t.push(`${n.role}: ${e}`)}return t.join(`
6
+ `)}const yn=i(`cdp`);var bn=class{ws=null;nextId=1;pending=new Map;listeners=new Map;_state=`disconnected`;get state(){return this._state}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`,yn.info(`Connected`,{url:t}),e()},this.ws.onerror=e=>{clearTimeout(a),this._state===`connecting`&&(yn.error(`Connection failed`,{url:t}),this.cleanup(),i(Error(`CDP WebSocket connection failed`)))},this.ws.onmessage=e=>{this.handleMessage(e.data)},this.ws.onclose=()=>{this.handleClose()}})}disconnect(){this.ws&&(this.ws.onclose=null,this.ws.close()),this.cleanup(),yn.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),yn.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;yn.debug(`Response`,{id:e.id,hasError:!!e.error});let n=this.pending.get(e.id);n&&(this.pending.delete(e.id),e.error?(yn.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;yn.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(){yn.error(`Connection closed unexpectedly`,{pendingCommands:this.pending.size});for(let[,e]of this.pending)e.reject(Error(`CDP connection closed`));this.cleanup()}cleanup(){this.ws=null,this._state=`disconnected`,this.pending.clear()}};const xn=`(function() {
7
7
  'use strict';
8
8
 
9
9
  // ===== DOM Utilities =====
@@ -873,7 +873,7 @@ Use the **upgrade** skill (\`/workspace/skills/upgrade/SKILL.md\`) to offer the
873
873
  } catch(e) {
874
874
  return { role: 'RootWebArea', name: '', description: 'Error: ' + (e.message || String(e)) };
875
875
  }
876
- })()`;function Sn(e,t=``){if(e==null)return t;if(typeof e==`string`)return e;if(typeof e==`number`||typeof e==`boolean`||typeof e==`bigint`)return String(e);try{return JSON.stringify(e)??t}catch{return String(e)}}const Cn=i(`browser-api`);function wn(e=typeof window<`u`?window.location:null){return e?.host?`${e.protocol===`https:`?`wss:`:`ws:`}//${e.host}/cdp`:`ws://localhost:5710/cdp`}var Tn=class{client;localClient;sessionId=null;attachedTargetId=null;trayTargetProvider=null;remoteTargetInfo=null;_frameContextCache=new Map;_tabLock=Promise.resolve();_onSessionChange;handleJavaScriptDialogOpening=async e=>{let t=typeof e.sessionId==`string`?e.sessionId:this.sessionId;if(t)try{await this.client.send(`Page.handleJavaScriptDialog`,{accept:!1},t,5e3),Cn.warn(`Auto-dismissed unexpected JavaScript dialog`,{sessionId:t,type:e.type,message:e.message,url:e.url})}catch(e){Cn.warn(`Failed to auto-dismiss JavaScript dialog`,{sessionId:t,error:e instanceof Error?e.message:String(e)})}};constructor(e){this.client=e??new bn,this.localClient=this.client,this.addDialogListener(this.client)}getTransport(){return this.client}setSessionChangeCallback(e){this._onSessionChange=e}getSessionId(){return this.sessionId}getAttachedTargetId(){return this.attachedTargetId}async withTab(e,t){let n,r=new Promise(e=>{n=e}),i=this._tabLock;this._tabLock=r,await i;try{return await t(await this.attachToPage(e))}finally{n()}}setTrayTargetProvider(e){this.trayTargetProvider=e}async listAllTargets(){let e=await this.listPages();if(!this.trayTargetProvider)return e;let t=!this.remoteTargetInfo,n=new Set(e.map(e=>e.targetId)),r=this.trayTargetProvider.getTargets().filter(e=>!t||!(e.runtimeId===`leader`&&n.has(e.localTargetId))).map(e=>({targetId:e.targetId,title:e.title,url:e.url,kind:e.kind,capabilities:e.capabilities}));return[...e,...r]}async connect(e){await this.client.connect({url:e?.url??wn(),timeout:e?.timeout})}async createPage(e){return await this.ensureConnected(),await this.ensureLocalConnected(),(await this.localClient.send(`Target.createTarget`,{url:e??`about:blank`,background:!0})).targetId}async createRemotePage(e,t){if(!this.trayTargetProvider?.openRemoteTab)throw Error(`Remote tab opening not available (no tray target provider)`);return this.trayTargetProvider.openRemoteTab(e,t??`about:blank`)}async closePage(e){if(await this.ensureConnected(),this.trayTargetProvider?.createRemoteTransport&&e.includes(`:`)){let t=e.indexOf(`:`),n=e.substring(0,t),r=e.substring(t+1);{let t=this.trayTargetProvider.createRemoteTransport(n,r);try{await t.send(`Target.closeTarget`,{targetId:r})}finally{this.trayTargetProvider.removeRemoteTransport&&this.trayTargetProvider.removeRemoteTransport(n,r)}this.attachedTargetId===e&&(this.remoteTargetInfo&&=(this.setClient(this.localClient),null),this.sessionId=null,this.attachedTargetId=null);return}}await this.localClient.send(`Target.closeTarget`,{targetId:e}),this.attachedTargetId===e&&(this.sessionId=null,this.attachedTargetId=null)}disconnect(){this.sessionId=null,this.attachedTargetId=null,this.client.disconnect()}async listPages(){return await this.ensureConnected(),await this.ensureLocalConnected(),((await this.localClient.send(`Target.getTargets`)).targetInfos??[]).filter(e=>e.type===`page`).map(e=>({targetId:e.targetId,title:e.title,url:e.url,...e.active?{active:!0}:{}}))}async attachToPage(e){if(await this.ensureConnected(),this.sessionId&&this.attachedTargetId===e)return this.sessionId;if(this._frameContextCache.clear(),this.trayTargetProvider?.createRemoteTransport&&e.includes(`:`)){let t=e.indexOf(`:`),n=e.substring(0,t),r=e.substring(t+1);{let t=this.trayTargetProvider.createRemoteTransport(n,r);this.setClient(t),this.remoteTargetInfo={runtimeId:n,localTargetId:r};let i=await this.client.send(`Target.attachToTarget`,{targetId:r,flatten:!0});return this.sessionId=i.sessionId,this.attachedTargetId=e,await this.client.send(`Page.enable`,{},this.sessionId),this._onSessionChange?.(this.sessionId,this.client),this.sessionId}}this.remoteTargetInfo&&=(this.trayTargetProvider?.removeRemoteTransport&&this.trayTargetProvider.removeRemoteTransport(this.remoteTargetInfo.runtimeId,this.remoteTargetInfo.localTargetId),this.setClient(this.localClient),null),await this.ensureLocalConnected();let t=await this.localClient.send(`Target.attachToTarget`,{targetId:e,flatten:!0});return this.sessionId=t.sessionId,this.attachedTargetId=e,await this.localClient.send(`Page.enable`,{},this.sessionId),this._onSessionChange?.(this.sessionId,this.localClient),this.sessionId}async detach(){if(this.sessionId){try{await this.client.send(`Target.detachFromTarget`,{sessionId:this.sessionId})}catch{}this.remoteTargetInfo&&this.trayTargetProvider?.removeRemoteTransport&&(this.trayTargetProvider.removeRemoteTransport(this.remoteTargetInfo.runtimeId,this.remoteTargetInfo.localTargetId),this.setClient(this.localClient),this.remoteTargetInfo=null),this.sessionId=null,this.attachedTargetId=null}}async navigate(e){await this.ensureConnected(),this.ensureAttached(),await this.client.send(`Page.enable`,{},this.sessionId);let t=this.client.once(`Page.loadEventFired`);await this.client.send(`Page.navigate`,{url:e},this.sessionId),await t}async bringToFront(){await this.ensureConnected(),this.ensureAttached(),await this.client.send(`Page.bringToFront`,{},this.sessionId??void 0)}async screenshot(e){await this.ensureConnected(),this.ensureAttached();try{let t={format:e?.format??`png`,captureBeyondViewport:!0};if(e?.quality!==void 0&&(t.quality=e.quality),e?.clip||e?.fullPage){let n=0,r=0;try{await this.client.send(`Runtime.enable`,{},this.sessionId);let e=await this.client.send(`Runtime.evaluate`,{expression:`JSON.stringify({ w: window.innerWidth, h: document.documentElement.scrollHeight })`,returnByValue:!0},this.sessionId),t=JSON.parse(e.result?.value??`{}`);n=t.w??0,r=t.h??0}catch{}e?.clip?t.clip={...e.clip,scale:e.clip.scale??1}:t.clip={x:0,y:0,width:n||1280,height:r||800,scale:1}}let n;try{n=await this.client.send(`Page.captureScreenshot`,t,this.sessionId)}catch(r){if(e?.foregroundFallback===!1)throw r;await this.client.send(`Page.bringToFront`,{},this.sessionId),n=await this.client.send(`Page.captureScreenshot`,t,this.sessionId)}let r=n.data;if(e?.maxWidth)try{let{getMagick:t}=await Promise.resolve().then(()=>Z4),n=await t(),i=atob(r),a=new Uint8Array(i.length);for(let e=0;e<i.length;e++)a[e]=i.charCodeAt(e);let o=8e3,s=!1;await n.ImageMagick.read(a,async t=>{let n=Math.min(e.maxWidth,o),i=Math.max(t.width,t.height);if(t.width>n||i>o){let e=Math.min(n/t.width,o/i);t.resize(Math.round(t.width*e),Math.round(t.height*e)),s=!0}s&&t.write(`PNG`,e=>{let t=``;for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);r=btoa(t)})})}catch(e){console.warn(`[browser-api] Screenshot maxWidth resize failed, returning original`,e)}return r}finally{}}async evaluate(e,t){await this.ensureConnected(),this.ensureAttached(),await this.client.send(`Runtime.enable`,{},this.sessionId);let n=await this.client.send(`Runtime.evaluate`,{expression:e,awaitPromise:t?.awaitPromise??!0,returnByValue:t?.returnByValue??!0},this.sessionId),r=n.exceptionDetails;if(r){let e=r.exception?.description??r.text;throw Error(`Evaluation failed: ${e}`)}return n.result.value}async click(e){await this.ensureConnected(),this.ensureAttached();let t=await this.boundingBox(e);if(!t)throw Error(`Element not found: ${e}`);let n=t.x+t.width/2,r=t.y+t.height/2;await this.client.send(`Input.dispatchMouseEvent`,{type:`mousePressed`,x:n,y:r,button:`left`,clickCount:1},this.sessionId),await this.client.send(`Input.dispatchMouseEvent`,{type:`mouseReleased`,x:n,y:r,button:`left`,clickCount:1},this.sessionId)}async type(e){await this.ensureConnected(),this.ensureAttached();for(let t of e)await this.client.send(`Input.dispatchKeyEvent`,{type:`keyDown`,text:t},this.sessionId),await this.client.send(`Input.dispatchKeyEvent`,{type:`keyUp`,text:t},this.sessionId)}async insertText(e){await this.ensureConnected(),this.ensureAttached(),await this.client.send(`Input.insertText`,{text:e},this.sessionId)}async waitForSelector(e,t){await this.ensureConnected(),this.ensureAttached();let n=t?.timeout??3e4,r=t?.interval??100,i=Date.now();for(;Date.now()-i<n;){if(await this.evaluate(`!!document.querySelector(${JSON.stringify(e)})`))return;await new Promise(e=>setTimeout(e,r))}throw Error(`waitForSelector timed out after ${n}ms: ${e}`)}async getAccessibilityTree(){await this.ensureConnected(),this.ensureAttached();let e=await this.evaluate(xn,{awaitPromise:!1,returnByValue:!0});return!e||typeof e!=`object`?{role:`RootWebArea`,name:``}:En(e)}async clickByBackendNodeId(e){await this.ensureConnected(),this.ensureAttached(),await this.client.send(`DOM.enable`,{},this.sessionId),await this.client.send(`Runtime.enable`,{},this.sessionId);let t=(await this.client.send(`DOM.resolveNode`,{backendNodeId:e},this.sessionId)).object;if(!t?.objectId)throw Error(`Could not resolve backend node ${e} to a DOM element`);let n=(await this.client.send(`Runtime.callFunctionOn`,{objectId:t.objectId,functionDeclaration:`function() {
876
+ })()`;function Sn(e,t=``){if(e==null)return t;if(typeof e==`string`)return e;if(typeof e==`number`||typeof e==`boolean`||typeof e==`bigint`)return String(e);try{return JSON.stringify(e)??t}catch{return String(e)}}const Cn=i(`browser-api`);function wn(e=typeof window<`u`?window.location:null){return e?.host?`${e.protocol===`https:`?`wss:`:`ws:`}//${e.host}/cdp`:`ws://localhost:5710/cdp`}var Tn=class{client;localClient;sessionId=null;attachedTargetId=null;trayTargetProvider=null;remoteTargetInfo=null;_frameContextCache=new Map;_tabLock=Promise.resolve();_onSessionChange;handleJavaScriptDialogOpening=async e=>{let t=typeof e.sessionId==`string`?e.sessionId:this.sessionId;if(t)try{await this.client.send(`Page.handleJavaScriptDialog`,{accept:!1},t,5e3),Cn.warn(`Auto-dismissed unexpected JavaScript dialog`,{sessionId:t,type:e.type,message:e.message,url:e.url})}catch(e){Cn.warn(`Failed to auto-dismiss JavaScript dialog`,{sessionId:t,error:e instanceof Error?e.message:String(e)})}};constructor(e){this.client=e??new bn,this.localClient=this.client,this.addDialogListener(this.client)}getTransport(){return this.client}setSessionChangeCallback(e){this._onSessionChange=e}getSessionId(){return this.sessionId}getAttachedTargetId(){return this.attachedTargetId}async withTab(e,t){let n,r=new Promise(e=>{n=e}),i=this._tabLock;this._tabLock=r,await i;try{return await t(await this.attachToPage(e))}finally{n()}}setTrayTargetProvider(e){this.trayTargetProvider=e}async listAllTargets(){let e=await this.listPages();if(!this.trayTargetProvider)return e;let t=!this.remoteTargetInfo,n=new Set(e.map(e=>e.targetId)),r=this.trayTargetProvider.getTargets().filter(e=>!t||!(e.runtimeId===`leader`&&n.has(e.localTargetId))).map(e=>({targetId:e.targetId,title:e.title,url:e.url,kind:e.kind,capabilities:e.capabilities}));return[...e,...r]}async connect(e){await this.client.connect({url:e?.url??wn(),timeout:e?.timeout,...e?.protocols===void 0?{}:{protocols:e.protocols}})}async createPage(e){return await this.ensureConnected(),await this.ensureLocalConnected(),(await this.localClient.send(`Target.createTarget`,{url:e??`about:blank`,background:!0})).targetId}async createRemotePage(e,t){if(!this.trayTargetProvider?.openRemoteTab)throw Error(`Remote tab opening not available (no tray target provider)`);return this.trayTargetProvider.openRemoteTab(e,t??`about:blank`)}async closePage(e){if(await this.ensureConnected(),this.trayTargetProvider?.createRemoteTransport&&e.includes(`:`)){let t=e.indexOf(`:`),n=e.substring(0,t),r=e.substring(t+1);{let t=this.trayTargetProvider.createRemoteTransport(n,r);try{await t.send(`Target.closeTarget`,{targetId:r})}finally{this.trayTargetProvider.removeRemoteTransport&&this.trayTargetProvider.removeRemoteTransport(n,r)}this.attachedTargetId===e&&(this.remoteTargetInfo&&=(this.setClient(this.localClient),null),this.sessionId=null,this.attachedTargetId=null);return}}await this.localClient.send(`Target.closeTarget`,{targetId:e}),this.attachedTargetId===e&&(this.sessionId=null,this.attachedTargetId=null)}disconnect(){this.sessionId=null,this.attachedTargetId=null,this.client.disconnect()}async listPages(){return await this.ensureConnected(),await this.ensureLocalConnected(),((await this.localClient.send(`Target.getTargets`)).targetInfos??[]).filter(e=>e.type===`page`).map(e=>({targetId:e.targetId,title:e.title,url:e.url,...e.active?{active:!0}:{}}))}async attachToPage(e){if(await this.ensureConnected(),this.sessionId&&this.attachedTargetId===e)return this.sessionId;if(this._frameContextCache.clear(),this.trayTargetProvider?.createRemoteTransport&&e.includes(`:`)){let t=e.indexOf(`:`),n=e.substring(0,t),r=e.substring(t+1);{let t=this.trayTargetProvider.createRemoteTransport(n,r);this.setClient(t),this.remoteTargetInfo={runtimeId:n,localTargetId:r};let i=await this.client.send(`Target.attachToTarget`,{targetId:r,flatten:!0});return this.sessionId=i.sessionId,this.attachedTargetId=e,await this.client.send(`Page.enable`,{},this.sessionId),this._onSessionChange?.(this.sessionId,this.client),this.sessionId}}this.remoteTargetInfo&&=(this.trayTargetProvider?.removeRemoteTransport&&this.trayTargetProvider.removeRemoteTransport(this.remoteTargetInfo.runtimeId,this.remoteTargetInfo.localTargetId),this.setClient(this.localClient),null),await this.ensureLocalConnected();let t=await this.localClient.send(`Target.attachToTarget`,{targetId:e,flatten:!0});return this.sessionId=t.sessionId,this.attachedTargetId=e,await this.localClient.send(`Page.enable`,{},this.sessionId),this._onSessionChange?.(this.sessionId,this.localClient),this.sessionId}async detach(){if(this.sessionId){try{await this.client.send(`Target.detachFromTarget`,{sessionId:this.sessionId})}catch{}this.remoteTargetInfo&&this.trayTargetProvider?.removeRemoteTransport&&(this.trayTargetProvider.removeRemoteTransport(this.remoteTargetInfo.runtimeId,this.remoteTargetInfo.localTargetId),this.setClient(this.localClient),this.remoteTargetInfo=null),this.sessionId=null,this.attachedTargetId=null}}async navigate(e){await this.ensureConnected(),this.ensureAttached(),await this.client.send(`Page.enable`,{},this.sessionId);let t=this.client.once(`Page.loadEventFired`);await this.client.send(`Page.navigate`,{url:e},this.sessionId),await t}async bringToFront(){await this.ensureConnected(),this.ensureAttached(),await this.client.send(`Page.bringToFront`,{},this.sessionId??void 0)}async screenshot(e){await this.ensureConnected(),this.ensureAttached();try{let t={format:e?.format??`png`,captureBeyondViewport:!0};if(e?.quality!==void 0&&(t.quality=e.quality),e?.clip||e?.fullPage){let n=0,r=0;try{await this.client.send(`Runtime.enable`,{},this.sessionId);let e=await this.client.send(`Runtime.evaluate`,{expression:`JSON.stringify({ w: window.innerWidth, h: document.documentElement.scrollHeight })`,returnByValue:!0},this.sessionId),t=JSON.parse(e.result?.value??`{}`);n=t.w??0,r=t.h??0}catch{}e?.clip?t.clip={...e.clip,scale:e.clip.scale??1}:t.clip={x:0,y:0,width:n||1280,height:r||800,scale:1}}let n;try{n=await this.client.send(`Page.captureScreenshot`,t,this.sessionId)}catch(r){if(e?.foregroundFallback===!1)throw r;await this.client.send(`Page.bringToFront`,{},this.sessionId),n=await this.client.send(`Page.captureScreenshot`,t,this.sessionId)}let r=n.data;if(e?.maxWidth)try{let{getMagick:t}=await Promise.resolve().then(()=>Z4),n=await t(),i=atob(r),a=new Uint8Array(i.length);for(let e=0;e<i.length;e++)a[e]=i.charCodeAt(e);let o=8e3,s=!1;await n.ImageMagick.read(a,async t=>{let n=Math.min(e.maxWidth,o),i=Math.max(t.width,t.height);if(t.width>n||i>o){let e=Math.min(n/t.width,o/i);t.resize(Math.round(t.width*e),Math.round(t.height*e)),s=!0}s&&t.write(`PNG`,e=>{let t=``;for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);r=btoa(t)})})}catch(e){console.warn(`[browser-api] Screenshot maxWidth resize failed, returning original`,e)}return r}finally{}}async evaluate(e,t){await this.ensureConnected(),this.ensureAttached(),await this.client.send(`Runtime.enable`,{},this.sessionId);let n=await this.client.send(`Runtime.evaluate`,{expression:e,awaitPromise:t?.awaitPromise??!0,returnByValue:t?.returnByValue??!0},this.sessionId),r=n.exceptionDetails;if(r){let e=r.exception?.description??r.text;throw Error(`Evaluation failed: ${e}`)}return n.result.value}async click(e){await this.ensureConnected(),this.ensureAttached();let t=await this.boundingBox(e);if(!t)throw Error(`Element not found: ${e}`);let n=t.x+t.width/2,r=t.y+t.height/2;await this.client.send(`Input.dispatchMouseEvent`,{type:`mousePressed`,x:n,y:r,button:`left`,clickCount:1},this.sessionId),await this.client.send(`Input.dispatchMouseEvent`,{type:`mouseReleased`,x:n,y:r,button:`left`,clickCount:1},this.sessionId)}async type(e){await this.ensureConnected(),this.ensureAttached();for(let t of e)await this.client.send(`Input.dispatchKeyEvent`,{type:`keyDown`,text:t},this.sessionId),await this.client.send(`Input.dispatchKeyEvent`,{type:`keyUp`,text:t},this.sessionId)}async insertText(e){await this.ensureConnected(),this.ensureAttached(),await this.client.send(`Input.insertText`,{text:e},this.sessionId)}async waitForSelector(e,t){await this.ensureConnected(),this.ensureAttached();let n=t?.timeout??3e4,r=t?.interval??100,i=Date.now();for(;Date.now()-i<n;){if(await this.evaluate(`!!document.querySelector(${JSON.stringify(e)})`))return;await new Promise(e=>setTimeout(e,r))}throw Error(`waitForSelector timed out after ${n}ms: ${e}`)}async getAccessibilityTree(){await this.ensureConnected(),this.ensureAttached();let e=await this.evaluate(xn,{awaitPromise:!1,returnByValue:!0});return!e||typeof e!=`object`?{role:`RootWebArea`,name:``}:En(e)}async clickByBackendNodeId(e){await this.ensureConnected(),this.ensureAttached(),await this.client.send(`DOM.enable`,{},this.sessionId),await this.client.send(`Runtime.enable`,{},this.sessionId);let t=(await this.client.send(`DOM.resolveNode`,{backendNodeId:e},this.sessionId)).object;if(!t?.objectId)throw Error(`Could not resolve backend node ${e} to a DOM element`);let n=(await this.client.send(`Runtime.callFunctionOn`,{objectId:t.objectId,functionDeclaration:`function() {
877
877
  this.scrollIntoView({ block: 'center', inline: 'center' });
878
878
  const r = this.getBoundingClientRect();
879
879
  return { x: r.x, y: r.y, width: r.width, height: r.height };
@@ -3366,14 +3366,14 @@ This indicates that your JavaScript environment is broken. You cannot use
3366
3366
  esbuild in this environment because esbuild relies on this invariant. This
3367
3367
  is not a problem with esbuild. You need to fix your environment instead.
3368
3368
  `);function g(e,t){return(e[t++]|e[t++]<<8|e[t++]<<16|e[t++]<<24)>>>0}function _(e,t,n){e[n++]=t,e[n++]=t>>8,e[n++]=t>>16,e[n++]=t>>24}var v=String.fromCharCode;function y(e,t,n){let r=e[t],i=1,a=0;for(let n=0;n<t;n++)e[n]===10?(i++,a=0):a++;throw SyntaxError(n||(t===e.length?`Unexpected end of input while parsing JSON`:r>=32&&r<=126?`Unexpected character ${v(r)} in JSON at position ${t} (line ${i}, column ${a})`:`Unexpected byte 0x${r.toString(16)} in JSON at position ${t} (line ${i}, column ${a})`))}function b(e){if(!(e instanceof Uint8Array))throw Error(`JSON input must be a Uint8Array`);let t=[],n=[],r=[],i=e.length,a=null,o=0,s,c=0;for(;c<i;){let l=e[c++];if(l<=32)continue;let u;switch(o===2&&a===null&&l!==34&&l!==125&&y(e,--c),l){case 116:(e[c++]!==114||e[c++]!==117||e[c++]!==101)&&y(e,--c),u=!0;break;case 102:(e[c++]!==97||e[c++]!==108||e[c++]!==115||e[c++]!==101)&&y(e,--c),u=!1;break;case 110:(e[c++]!==117||e[c++]!==108||e[c++]!==108)&&y(e,--c),u=null;break;case 45:case 46:case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:{let t=c;for(u=v(l),l=e[c];;){switch(l){case 43:case 45:case 46:case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case 101:case 69:u+=v(l),l=e[++c];continue}break}u=+u,isNaN(u)&&y(e,--t,`Invalid number`);break}case 34:for(u=``;c>=i&&y(e,i),l=e[c++],l!==34;)if(l===92)switch(e[c++]){case 34:u+=`"`;break;case 47:u+=`/`;break;case 92:u+=`\\`;break;case 98:u+=`\b`;break;case 102:u+=`\f`;break;case 110:u+=`
3369
- `;break;case 114:u+=`\r`;break;case 116:u+=` `;break;case 117:{let t=0;for(let n=0;n<4;n++)l=e[c++],t<<=4,l>=48&&l<=57?t|=l-48:l>=97&&l<=102?t|=l+-87:l>=65&&l<=70?t|=l+-55:y(e,--c);u+=v(t);break}default:y(e,--c);break}else if(l<=127)u+=v(l);else if((l&224)==192)u+=v((l&31)<<6|e[c++]&63);else if((l&240)==224)u+=v((l&15)<<12|(e[c++]&63)<<6|e[c++]&63);else if((l&248)==240){let t=(l&7)<<18|(e[c++]&63)<<12|(e[c++]&63)<<6|e[c++]&63;t>65535&&(t-=65536,u+=v(t>>10&1023|55296),t=56320|t&1023),u+=v(t)}u[0];break;case 91:u=[],t.push(a),n.push(s),r.push(o),a=null,s=u,o=1;continue;case 123:u={},t.push(a),n.push(s),r.push(o),a=null,s=u,o=2;continue;case 93:o!==1&&y(e,--c),u=s,a=t.pop(),s=n.pop(),o=r.pop();break;case 125:o!==2&&y(e,--c),u=s,a=t.pop(),s=n.pop(),o=r.pop();break;default:y(e,--c)}for(l=e[c];l<=32;)l=e[++c];switch(o){case 0:if(c===i)return u;break;case 1:if(s.push(u),l===44){c++;continue}if(l===93)continue;break;case 2:if(a===null){if(a=u,l===58){c++;continue}}else{if(s[a]=u,a=null,l===44){c++;continue}if(l===125)continue}break}break}y(e,c)}var x=JSON.stringify,S=`warning`,C=`silent`;function w(e,t){let n=[];for(let r of e){if(he(r,t),r.indexOf(`,`)>=0)throw Error(`Invalid ${t}: ${r}`);n.push(r)}return n.join(`,`)}var T=()=>null,E=e=>typeof e==`boolean`?null:`a boolean`,D=e=>typeof e==`string`?null:`a string`,O=e=>e instanceof RegExp?null:`a RegExp object`,k=e=>typeof e==`number`&&e===(e|0)?null:`an integer`,ee=e=>typeof e==`number`&&e===(e|0)&&e>=0&&e<=65535?null:`a valid port number`,te=e=>typeof e==`function`?null:`a function`,A=e=>Array.isArray(e)?null:`an array`,j=e=>Array.isArray(e)&&e.every(e=>typeof e==`string`)?null:`an array of strings`,ne=e=>typeof e==`object`&&e&&!Array.isArray(e)?null:`an object`,re=e=>typeof e==`object`&&e?null:`an array or an object`,ie=e=>e instanceof WebAssembly.Module?null:`a WebAssembly.Module`,ae=e=>typeof e==`object`&&!Array.isArray(e)?null:`an object or null`,oe=e=>typeof e==`string`||typeof e==`boolean`?null:`a string or a boolean`,se=e=>typeof e==`string`||typeof e==`object`&&e&&!Array.isArray(e)?null:`a string or an object`,ce=e=>typeof e==`string`||Array.isArray(e)&&e.every(e=>typeof e==`string`)?null:`a string or an array of strings`,le=e=>typeof e==`string`||e instanceof Uint8Array?null:`a string or a Uint8Array`,ue=e=>typeof e==`string`||e instanceof URL?null:`a string or a URL`;function M(e,t,n,r){let i=e[n];if(t[n+``]=!0,i===void 0)return;let a=r(i);if(a!==null)throw Error(`${x(n)} must be ${a}`);return i}function de(e,t,n){for(let r in e)if(!(r in t))throw Error(`Invalid option ${n}: ${x(r)}`)}function fe(e){let t=Object.create(null),n=M(e,t,`wasmURL`,ue),r=M(e,t,`wasmModule`,ie),i=M(e,t,`worker`,E);return de(e,t,`in initialize() call`),{wasmURL:n,wasmModule:r,worker:i}}function pe(e){let t;if(e!==void 0){t=Object.create(null);for(let n in e){let r=e[n];if(typeof r==`string`||r===!1)t[n]=r;else throw Error(`Expected ${x(n)} in mangle cache to map to either a string or false`)}}return t}function me(e,t,n,r,i){let a=M(t,n,`color`,E),o=M(t,n,`logLevel`,D),s=M(t,n,`logLimit`,k);a===void 0?r&&e.push(`--color=true`):e.push(`--color=${a}`),e.push(`--log-level=${o||i}`),e.push(`--log-limit=${s||0}`)}function he(e,t,n){if(typeof e!=`string`)throw Error(`Expected value for ${t}${n===void 0?``:` `+x(n)} to be a string, got ${typeof e} instead`);return e}function ge(e,t,n){let r=M(t,n,`legalComments`,D),i=M(t,n,`sourceRoot`,D),a=M(t,n,`sourcesContent`,E),o=M(t,n,`target`,ce),s=M(t,n,`format`,D),c=M(t,n,`globalName`,D),l=M(t,n,`mangleProps`,O),u=M(t,n,`reserveProps`,O),d=M(t,n,`mangleQuoted`,E),f=M(t,n,`minify`,E),p=M(t,n,`minifySyntax`,E),m=M(t,n,`minifyWhitespace`,E),h=M(t,n,`minifyIdentifiers`,E),g=M(t,n,`lineLimit`,k),_=M(t,n,`drop`,j),v=M(t,n,`dropLabels`,j),y=M(t,n,`charset`,D),b=M(t,n,`treeShaking`,E),S=M(t,n,`ignoreAnnotations`,E),C=M(t,n,`jsx`,D),T=M(t,n,`jsxFactory`,D),ee=M(t,n,`jsxFragment`,D),te=M(t,n,`jsxImportSource`,D),A=M(t,n,`jsxDev`,E),re=M(t,n,`jsxSideEffects`,E),ie=M(t,n,`define`,ne),ae=M(t,n,`logOverride`,ne),oe=M(t,n,`supported`,ne),le=M(t,n,`pure`,j),ue=M(t,n,`keepNames`,E),de=M(t,n,`platform`,D),fe=M(t,n,`tsconfigRaw`,se),pe=M(t,n,`absPaths`,j);if(r&&e.push(`--legal-comments=${r}`),i!==void 0&&e.push(`--source-root=${i}`),a!==void 0&&e.push(`--sources-content=${a}`),o&&e.push(`--target=${w(Array.isArray(o)?o:[o],`target`)}`),s&&e.push(`--format=${s}`),c&&e.push(`--global-name=${c}`),de&&e.push(`--platform=${de}`),fe&&e.push(`--tsconfig-raw=${typeof fe==`string`?fe:JSON.stringify(fe)}`),f&&e.push(`--minify`),p&&e.push(`--minify-syntax`),m&&e.push(`--minify-whitespace`),h&&e.push(`--minify-identifiers`),g&&e.push(`--line-limit=${g}`),y&&e.push(`--charset=${y}`),b!==void 0&&e.push(`--tree-shaking=${b}`),S&&e.push(`--ignore-annotations`),_)for(let t of _)e.push(`--drop:${he(t,`drop`)}`);if(v&&e.push(`--drop-labels=${w(v,`drop label`)}`),pe&&e.push(`--abs-paths=${w(pe,`abs paths`)}`),l&&e.push(`--mangle-props=${ke(l)}`),u&&e.push(`--reserve-props=${ke(u)}`),d!==void 0&&e.push(`--mangle-quoted=${d}`),C&&e.push(`--jsx=${C}`),T&&e.push(`--jsx-factory=${T}`),ee&&e.push(`--jsx-fragment=${ee}`),te&&e.push(`--jsx-import-source=${te}`),A&&e.push(`--jsx-dev`),re&&e.push(`--jsx-side-effects`),ie)for(let t in ie){if(t.indexOf(`=`)>=0)throw Error(`Invalid define: ${t}`);e.push(`--define:${t}=${he(ie[t],`define`,t)}`)}if(ae)for(let t in ae){if(t.indexOf(`=`)>=0)throw Error(`Invalid log override: ${t}`);e.push(`--log-override:${t}=${he(ae[t],`log override`,t)}`)}if(oe)for(let t in oe){if(t.indexOf(`=`)>=0)throw Error(`Invalid supported: ${t}`);let n=oe[t];if(typeof n!=`boolean`)throw Error(`Expected value for supported ${x(t)} to be a boolean, got ${typeof n} instead`);e.push(`--supported:${t}=${n}`)}if(le)for(let t of le)e.push(`--pure:${he(t,`pure`)}`);ue&&e.push(`--keep-names`)}function _e(e,t,n,r,i){let a=[],o=[],s=Object.create(null),c=null,l=null;me(a,t,s,n,r),ge(a,t,s);let u=M(t,s,`sourcemap`,oe),d=M(t,s,`bundle`,E),f=M(t,s,`splitting`,E),m=M(t,s,`preserveSymlinks`,E),h=M(t,s,`metafile`,E),g=M(t,s,`outfile`,D),_=M(t,s,`outdir`,D),v=M(t,s,`outbase`,D),y=M(t,s,`tsconfig`,D),b=M(t,s,`resolveExtensions`,j),x=M(t,s,`nodePaths`,j),S=M(t,s,`mainFields`,j),C=M(t,s,`conditions`,j),T=M(t,s,`external`,j),O=M(t,s,`packages`,D),k=M(t,s,`alias`,ne),ee=M(t,s,`loader`,ne),te=M(t,s,`outExtension`,ne),A=M(t,s,`publicPath`,D),ie=M(t,s,`entryNames`,D),ae=M(t,s,`chunkNames`,D),se=M(t,s,`assetNames`,D),ce=M(t,s,`inject`,j),ue=M(t,s,`banner`,ne),fe=M(t,s,`footer`,ne),_e=M(t,s,`entryPoints`,re),ve=M(t,s,`absWorkingDir`,D),ye=M(t,s,`stdin`,ne),N=M(t,s,`write`,E)??i,be=M(t,s,`allowOverwrite`,E),xe=M(t,s,`mangleCache`,ne);if(s.plugins=!0,de(t,s,`in ${e}() call`),u&&a.push(`--sourcemap${u===!0?``:`=${u}`}`),d&&a.push(`--bundle`),be&&a.push(`--allow-overwrite`),f&&a.push(`--splitting`),m&&a.push(`--preserve-symlinks`),h&&a.push(`--metafile`),g&&a.push(`--outfile=${g}`),_&&a.push(`--outdir=${_}`),v&&a.push(`--outbase=${v}`),y&&a.push(`--tsconfig=${y}`),O&&a.push(`--packages=${O}`),b&&a.push(`--resolve-extensions=${w(b,`resolve extension`)}`),A&&a.push(`--public-path=${A}`),ie&&a.push(`--entry-names=${ie}`),ae&&a.push(`--chunk-names=${ae}`),se&&a.push(`--asset-names=${se}`),S&&a.push(`--main-fields=${w(S,`main field`)}`),C&&a.push(`--conditions=${w(C,`condition`)}`),T)for(let e of T)a.push(`--external:${he(e,`external`)}`);if(k)for(let e in k){if(e.indexOf(`=`)>=0)throw Error(`Invalid package name in alias: ${e}`);a.push(`--alias:${e}=${he(k[e],`alias`,e)}`)}if(ue)for(let e in ue){if(e.indexOf(`=`)>=0)throw Error(`Invalid banner file type: ${e}`);a.push(`--banner:${e}=${he(ue[e],`banner`,e)}`)}if(fe)for(let e in fe){if(e.indexOf(`=`)>=0)throw Error(`Invalid footer file type: ${e}`);a.push(`--footer:${e}=${he(fe[e],`footer`,e)}`)}if(ce)for(let e of ce)a.push(`--inject:${he(e,`inject`)}`);if(ee)for(let e in ee){if(e.indexOf(`=`)>=0)throw Error(`Invalid loader extension: ${e}`);a.push(`--loader:${e}=${he(ee[e],`loader`,e)}`)}if(te)for(let e in te){if(e.indexOf(`=`)>=0)throw Error(`Invalid out extension: ${e}`);a.push(`--out-extension:${e}=${he(te[e],`out extension`,e)}`)}if(_e)if(Array.isArray(_e))for(let e=0,t=_e.length;e<t;e++){let t=_e[e];if(typeof t==`object`&&t){let n=Object.create(null),r=M(t,n,`in`,D),i=M(t,n,`out`,D);if(de(t,n,`in entry point at index `+e),r===void 0)throw Error(`Missing property "in" for entry point at index `+e);if(i===void 0)throw Error(`Missing property "out" for entry point at index `+e);o.push([i,r])}else o.push([``,he(t,`entry point at index `+e)])}else for(let e in _e)o.push([e,he(_e[e],`entry point`,e)]);if(ye){let e=Object.create(null),t=M(ye,e,`contents`,le),n=M(ye,e,`resolveDir`,D),r=M(ye,e,`sourcefile`,D),i=M(ye,e,`loader`,D);de(ye,e,`in "stdin" object`),r&&a.push(`--sourcefile=${r}`),i&&a.push(`--loader=${i}`),n&&(l=n),typeof t==`string`?c=p(t):t instanceof Uint8Array&&(c=t)}let Se=[];if(x)for(let e of x)e+=``,Se.push(e);return{entries:o,flags:a,write:N,stdinContents:c,stdinResolveDir:l,absWorkingDir:ve,nodePaths:Se,mangleCache:pe(xe)}}function ve(e,t,n,r){let i=[],a=Object.create(null);me(i,t,a,n,r),ge(i,t,a);let o=M(t,a,`sourcemap`,oe),s=M(t,a,`sourcefile`,D),c=M(t,a,`loader`,D),l=M(t,a,`banner`,D),u=M(t,a,`footer`,D),d=M(t,a,`mangleCache`,ne);return de(t,a,`in ${e}() call`),o&&i.push(`--sourcemap=${o===!0?`external`:o}`),s&&i.push(`--sourcefile=${s}`),c&&i.push(`--loader=${c}`),l&&i.push(`--banner=${l}`),u&&i.push(`--footer=${u}`),{flags:i,mangleCache:pe(d)}}function ye(e){let t={},n={didClose:!1,reason:``},r={},i=0,a=0,o=new Uint8Array(16*1024),s=0,l=e=>{let t=s+e.length;if(t>o.length){let e=new Uint8Array(t*2);e.set(o),o=e}o.set(e,s),s+=e.length;let n=0;for(;n+4<=s;){let e=g(o,n);if(n+4+e>s)break;n+=4,y(o.subarray(n,n+e)),n+=e}n>0&&(o.copyWithin(0,n,s),s-=n)},f=e=>{n.didClose=!0,e&&(n.reason=`: `+(e.message||e));let t=`The service was stopped`+n.reason;for(let e in r)r[e](t,null);r={}},m=(t,a,o)=>{if(n.didClose)return o(`The service is no longer running`+n.reason,null);let s=i++;r[s]=(e,n)=>{try{o(e,n)}finally{t&&t.unref()}},t&&t.ref(),e.writeToStdin(u({id:s,isRequest:!0,value:a}))},h=(t,r)=>{if(n.didClose)throw Error(`The service is no longer running`+n.reason);e.writeToStdin(u({id:t,isRequest:!1,value:r}))},_=(n,r)=>c(null,null,function*(){try{if(r.command===`ping`){h(n,{});return}if(typeof r.key==`number`){let e=t[r.key];if(!e)return;let i=e[r.command];if(i){yield i(n,r);return}}throw Error(`Invalid command: `+r.command)}catch(t){let r=[Ce(t,e,null,void 0,``)];try{h(n,{errors:r})}catch{}}}),v=!0,y=e=>{if(v){v=!1;let t=String.fromCharCode(...e);if(t!==`0.28.0`)throw Error(`Cannot start service: Host version "0.28.0" does not match binary version ${x(t)}`);return}let t=d(e);if(t.isRequest)_(t.id,t.value);else{let e=r[t.id];delete r[t.id],t.value.error?e(t.value.error,{}):e(null,t.value)}};return{readFromStdout:l,afterClose:f,service:{buildOrContext:({callName:n,refs:r,options:i,isTTY:o,defaultWD:s,callback:c})=>{let l=0,u=a++,d={},f={ref(){++l===1&&r&&r.ref()},unref(){--l===0&&(delete t[u],r&&r.unref())}};t[u]=d,f.ref(),N(n,u,m,h,f,e,d,i,o,s,(e,t)=>{try{c(e,t)}finally{f.unref()}})},transform:({callName:t,refs:n,input:r,options:i,isTTY:a,fs:o,callback:s})=>{let c=xe(),l=l=>{try{if(typeof r!=`string`&&!(r instanceof Uint8Array))throw Error(`The input to "transform" must be a string or a Uint8Array`);let{flags:e,mangleCache:u}=ve(t,i,a,C),d={command:`transform`,flags:e,inputFS:l!==null,input:l===null?typeof r==`string`?p(r):r:p(l)};u&&(d.mangleCache=u),m(n,d,(e,t)=>{if(e)return s(Error(e),null);let n=Te(t.errors,c),r=Te(t.warnings,c),i=1,a=()=>{if(--i===0){let e={warnings:r,code:t.code,map:t.map,mangleCache:void 0,legalComments:void 0};`legalComments`in t&&(e.legalComments=t?.legalComments),t.mangleCache&&(e.mangleCache=t?.mangleCache),s(null,e)}};if(n.length>0)return s(P(`Transform failed`,n,r),null);t.codeFS&&(i++,o.readFile(t.code,(e,n)=>{e===null?(t.code=n,a()):s(e,null)})),t.mapFS&&(i++,o.readFile(t.map,(e,n)=>{e===null?(t.map=n,a()):s(e,null)})),a()})}catch(t){let r=[];try{me(r,i,{},a,C)}catch{}let o=Ce(t,e,c,void 0,``);m(n,{command:`error`,flags:r,error:o},()=>{o.detail=c.load(o.detail),s(P(`Transform failed`,[o],[]),null)})}};if((typeof r==`string`||r instanceof Uint8Array)&&r.length>1024*1024){let e=l;l=()=>o.writeFile(r,e)}l(null)},formatMessages:({callName:e,refs:t,messages:n,options:r,callback:i})=>{if(!r)throw Error(`Missing second argument in ${e}() call`);let a={},o=M(r,a,`kind`,D),s=M(r,a,`color`,E),c=M(r,a,`terminalWidth`,k);if(de(r,a,`in ${e}() call`),o===void 0)throw Error(`Missing "kind" in ${e}() call`);if(o!==`error`&&o!==`warning`)throw Error(`Expected "kind" to be "error" or "warning" in ${e}() call`);let l={command:`format-msgs`,messages:I(n,`messages`,null,``,c),isWarning:o===`warning`};s!==void 0&&(l.color=s),c!==void 0&&(l.terminalWidth=c),m(t,l,(e,t)=>{if(e)return i(Error(e),null);i(null,t.messages)})},analyzeMetafile:({callName:e,refs:t,metafile:n,options:r,callback:i})=>{r===void 0&&(r={});let a={},o=M(r,a,`color`,E),s=M(r,a,`verbose`,E);de(r,a,`in ${e}() call`);let c={command:`analyze-metafile`,metafile:n};o!==void 0&&(c.color=o),s!==void 0&&(c.verbose=s),m(t,c,(e,t)=>{if(e)return i(Error(e),null);i(null,t.result)})}}}}function N(e,t,n,r,i,a,o,s,c,l,u){let d=xe(),f=e===`context`,p=(e,t)=>{let r=[];try{me(r,s,{},c,S)}catch{}let o=Ce(e,a,d,void 0,t);n(i,{command:`error`,flags:r,error:o},()=>{o.detail=d.load(o.detail),u(P(f?`Context failed`:`Build failed`,[o],[]),null)})},h;if(typeof s==`object`){let e=s.plugins;if(e!==void 0){if(!Array.isArray(e))return p(Error(`"plugins" must be an array`),``);h=e}}if(h&&h.length>0){if(a.isSync)return p(Error(`Cannot use plugins in synchronous API calls`),``);be(t,n,r,i,a,o,s,h,d).then(e=>{if(!e.ok)return p(e.error,e.pluginName);try{g(e.requestPlugins,e.runOnEndCallbacks,e.scheduleOnDisposeCallbacks)}catch(e){p(e,``)}},e=>p(e,``));return}try{g(null,(e,t)=>t([],[]),()=>{})}catch(e){p(e,``)}function g(p,h,g){let _=a.hasFS,{entries:v,flags:y,write:b,stdinContents:x,stdinResolveDir:C,absWorkingDir:w,nodePaths:T,mangleCache:E}=_e(e,s,c,S,_);if(b&&!a.hasFS)throw Error(`The "write" option is unavailable in this environment`);let O={command:`build`,key:t,entries:v,flags:y,write:b,stdinContents:x,stdinResolveDir:C,absWorkingDir:w||l,nodePaths:T,context:f};p&&(O.plugins=p),E&&(O.mangleCache=E);let A=(e,t)=>{let n={errors:Te(e.errors,d),warnings:Te(e.warnings,d),outputFiles:void 0,metafile:void 0,mangleCache:void 0},r=n.errors.slice(),i=n.warnings.slice();e.outputFiles&&(n.outputFiles=e.outputFiles.map(Oe)),e.metafile&&e.metafile.length&&(n.metafile=Ae(e.metafile)),e.mangleCache&&(n.mangleCache=e.mangleCache),e.writeToStdout!==void 0&&console.log(m(e.writeToStdout).replace(/\n$/,``)),h(n,(e,a)=>{if(r.length>0||e.length>0)return t(P(`Build failed`,r.concat(e),i.concat(a)),null,e,a);t(null,n,e,a)})},j,re;f&&(o[`on-end`]=(e,t)=>new Promise(n=>{A(t,(t,i,a,o)=>{let s={errors:a,warnings:o};re&&re(t,i),j=void 0,re=void 0,r(e,s),n()})})),n(i,O,(e,s)=>{if(e)return u(Error(e),null);if(!f)return A(s,(e,t)=>(g(),u(e,t)));if(s.errors.length>0)return u(P(`Context failed`,s.errors,s.warnings),null);let c=!1;i.ref(),u(null,{rebuild:()=>(j||=new Promise((e,r)=>{let a;re=(t,n)=>{a||=()=>t?r(t):e(n)};let o=()=>{n(i,{command:`rebuild`,key:t},(e,t)=>{e?r(Error(e)):a?a():o()})};o()}),j),watch:(e={})=>new Promise((r,o)=>{if(!a.hasFS)throw Error(`Cannot use the "watch" API in this environment`);let s={},c=M(e,s,`delay`,k);de(e,s,`in watch() call`);let l={command:`watch`,key:t};c&&(l.delay=c),n(i,l,e=>{e?o(Error(e)):r(void 0)})}),serve:(e={})=>new Promise((s,c)=>{if(!a.hasFS)throw Error(`Cannot use the "serve" API in this environment`);let l={},u=M(e,l,`port`,ee),d=M(e,l,`host`,D),f=M(e,l,`servedir`,D),p=M(e,l,`keyfile`,D),m=M(e,l,`certfile`,D),h=M(e,l,`fallback`,D),g=M(e,l,`cors`,ne),_=M(e,l,`onRequest`,te);de(e,l,`in serve() call`);let v={command:`serve`,key:t,onRequest:!!_};if(u!==void 0&&(v.port=u),d!==void 0&&(v.host=d),f!==void 0&&(v.servedir=f),p!==void 0&&(v.keyfile=p),m!==void 0&&(v.certfile=m),h!==void 0&&(v.fallback=h),g){let e={},t=M(g,e,`origin`,ce);de(g,e,`on "cors" object`),Array.isArray(t)?v.corsOrigin=t:t!==void 0&&(v.corsOrigin=[t])}n(i,v,(e,t)=>{if(e)return c(Error(e));_&&(o[`serve-request`]=(e,t)=>{_(t.args),r(e,{})}),s(t)})}),cancel:()=>new Promise(e=>{if(c)return e();n(i,{command:`cancel`,key:t},()=>{e()})}),dispose:()=>new Promise(e=>{if(c)return e();c=!0,n(i,{command:`dispose`,key:t},()=>{e(),g(),i.unref()})})})})}}var be=(e,t,n,r,i,a,o,s,l)=>c(null,null,function*(){let u=[],d=[],f={},m={},h=[],g=0,_=0,v=[],y=!1;s=[...s];for(let n of s){let a={};if(typeof n!=`object`)throw Error(`Plugin at index ${_} must be an object`);let s=M(n,a,`name`,D);if(typeof s!=`string`||s===``)throw Error(`Plugin at index ${_} is missing a name`);try{let c=M(n,a,`setup`,te);if(typeof c!=`function`)throw Error(`Plugin is missing a setup function`);de(n,a,`on plugin ${x(s)}`);let p={name:s,onStart:!1,onEnd:!1,onResolve:[],onLoad:[]};_++;let b=c({initialOptions:o,resolve:(n,i={})=>{if(!y)throw Error(`Cannot call "resolve" before plugin setup has completed`);if(typeof n!=`string`)throw Error(`The path to resolve must be a string`);let a=Object.create(null),o=M(i,a,`pluginName`,D),c=M(i,a,`importer`,D),u=M(i,a,`namespace`,D),d=M(i,a,`resolveDir`,D),f=M(i,a,`kind`,D),p=M(i,a,`pluginData`,T),m=M(i,a,`with`,ne);return de(i,a,`in resolve() call`),new Promise((i,a)=>{let h={command:`resolve`,path:n,key:e,pluginName:s};if(o!=null&&(h.pluginName=o),c!=null&&(h.importer=c),u!=null&&(h.namespace=u),d!=null&&(h.resolveDir=d),f!=null)h.kind=f;else throw Error(`Must specify "kind" when calling "resolve"`);p!=null&&(h.pluginData=l.store(p)),m!=null&&(h.with=De(m,`with`)),t(r,h,(e,t)=>{e===null?i({errors:Te(t.errors,l),warnings:Te(t.warnings,l),path:t.path,external:t.external,sideEffects:t.sideEffects,namespace:t.namespace,suffix:t.suffix,pluginData:l.load(t.pluginData)}):a(Error(e))})})},onStart(e){let t=Se(Error(`This error came from the "onStart" callback registered here:`),i,`onStart`);u.push({name:s,callback:e,note:t}),p.onStart=!0},onEnd(e){let t=Se(Error(`This error came from the "onEnd" callback registered here:`),i,`onEnd`);d.push({name:s,callback:e,note:t}),p.onEnd=!0},onResolve(e,t){let n=Se(Error(`This error came from the "onResolve" callback registered here:`),i,`onResolve`),r={},a=M(e,r,`filter`,O),o=M(e,r,`namespace`,D);if(de(e,r,`in onResolve() call for plugin ${x(s)}`),a==null)throw Error(`onResolve() call is missing a filter`);let c=g++;f[c]={name:s,callback:t,note:n},p.onResolve.push({id:c,filter:ke(a),namespace:o||``})},onLoad(e,t){let n=Se(Error(`This error came from the "onLoad" callback registered here:`),i,`onLoad`),r={},a=M(e,r,`filter`,O),o=M(e,r,`namespace`,D);if(de(e,r,`in onLoad() call for plugin ${x(s)}`),a==null)throw Error(`onLoad() call is missing a filter`);let c=g++;m[c]={name:s,callback:t,note:n},p.onLoad.push({id:c,filter:ke(a),namespace:o||``})},onDispose(e){h.push(e)},esbuild:i.esbuild});b&&(yield b),v.push(p)}catch(e){return{ok:!1,error:e,pluginName:s}}}a[`on-start`]=(e,t)=>c(null,null,function*(){l.clear();let t={errors:[],warnings:[]};yield Promise.all(u.map(e=>c(null,[e],function*({name:e,callback:n,note:r}){try{let r=yield n();if(r!=null){if(typeof r!=`object`)throw Error(`Expected onStart() callback in plugin ${x(e)} to return an object`);let n={},i=M(r,n,`errors`,A),a=M(r,n,`warnings`,A);de(r,n,`from onStart() callback in plugin ${x(e)}`),i!=null&&t.errors.push(...I(i,`errors`,l,e,void 0)),a!=null&&t.warnings.push(...I(a,`warnings`,l,e,void 0))}}catch(n){t.errors.push(Ce(n,i,l,r&&r(),e))}}))),n(e,t)}),a[`on-resolve`]=(e,t)=>c(null,null,function*(){let r={},a=``,o,s;for(let e of t.ids)try{({name:a,callback:o,note:s}=f[e]);let n=yield o({path:t.path,importer:t.importer,namespace:t.namespace,resolveDir:t.resolveDir,kind:t.kind,pluginData:l.load(t.pluginData),with:t.with});if(n!=null){if(typeof n!=`object`)throw Error(`Expected onResolve() callback in plugin ${x(a)} to return an object`);let t={},i=M(n,t,`pluginName`,D),o=M(n,t,`path`,D),s=M(n,t,`namespace`,D),c=M(n,t,`suffix`,D),u=M(n,t,`external`,E),d=M(n,t,`sideEffects`,E),f=M(n,t,`pluginData`,T),p=M(n,t,`errors`,A),m=M(n,t,`warnings`,A),h=M(n,t,`watchFiles`,j),g=M(n,t,`watchDirs`,j);de(n,t,`from onResolve() callback in plugin ${x(a)}`),r.id=e,i!=null&&(r.pluginName=i),o!=null&&(r.path=o),s!=null&&(r.namespace=s),c!=null&&(r.suffix=c),u!=null&&(r.external=u),d!=null&&(r.sideEffects=d),f!=null&&(r.pluginData=l.store(f)),p!=null&&(r.errors=I(p,`errors`,l,a,void 0)),m!=null&&(r.warnings=I(m,`warnings`,l,a,void 0)),h!=null&&(r.watchFiles=Ee(h,`watchFiles`)),g!=null&&(r.watchDirs=Ee(g,`watchDirs`));break}}catch(t){r={id:e,errors:[Ce(t,i,l,s&&s(),a)]};break}n(e,r)}),a[`on-load`]=(e,t)=>c(null,null,function*(){let r={},a=``,o,s;for(let e of t.ids)try{({name:a,callback:o,note:s}=m[e]);let n=yield o({path:t.path,namespace:t.namespace,suffix:t.suffix,pluginData:l.load(t.pluginData),with:t.with});if(n!=null){if(typeof n!=`object`)throw Error(`Expected onLoad() callback in plugin ${x(a)} to return an object`);let t={},i=M(n,t,`pluginName`,D),o=M(n,t,`contents`,le),s=M(n,t,`resolveDir`,D),c=M(n,t,`pluginData`,T),u=M(n,t,`loader`,D),d=M(n,t,`errors`,A),f=M(n,t,`warnings`,A),m=M(n,t,`watchFiles`,j),h=M(n,t,`watchDirs`,j);de(n,t,`from onLoad() callback in plugin ${x(a)}`),r.id=e,i!=null&&(r.pluginName=i),o instanceof Uint8Array?r.contents=o:o!=null&&(r.contents=p(o)),s!=null&&(r.resolveDir=s),c!=null&&(r.pluginData=l.store(c)),u!=null&&(r.loader=u),d!=null&&(r.errors=I(d,`errors`,l,a,void 0)),f!=null&&(r.warnings=I(f,`warnings`,l,a,void 0)),m!=null&&(r.watchFiles=Ee(m,`watchFiles`)),h!=null&&(r.watchDirs=Ee(h,`watchDirs`));break}}catch(t){r={id:e,errors:[Ce(t,i,l,s&&s(),a)]};break}n(e,r)});let b=(e,t)=>t([],[]);return d.length>0&&(b=(e,t)=>{c(null,null,function*(){let n=[],r=[];for(let{name:t,callback:a,note:o}of d){let s,c;try{let n=yield a(e);if(n!=null){if(typeof n!=`object`)throw Error(`Expected onEnd() callback in plugin ${x(t)} to return an object`);let e={},r=M(n,e,`errors`,A),i=M(n,e,`warnings`,A);de(n,e,`from onEnd() callback in plugin ${x(t)}`),r!=null&&(s=I(r,`errors`,l,t,void 0)),i!=null&&(c=I(i,`warnings`,l,t,void 0))}}catch(e){s=[Ce(e,i,l,o&&o(),t)]}if(s){n.push(...s);try{e.errors.push(...s)}catch{}}if(c){r.push(...c);try{e.warnings.push(...c)}catch{}}}t(n,r)})}),y=!0,{ok:!0,requestPlugins:v,runOnEndCallbacks:b,scheduleOnDisposeCallbacks:()=>{for(let e of h)setTimeout(()=>e(),0)}}});function xe(){let e=new Map,t=0;return{clear(){e.clear()},load(t){return e.get(t)},store(n){if(n===void 0)return-1;let r=t++;return e.set(r,n),r}}}function Se(e,t,n){let r,i=!1;return()=>{if(i)return r;i=!0;try{let i=(e.stack+``).split(`
3369
+ `;break;case 114:u+=`\r`;break;case 116:u+=` `;break;case 117:{let t=0;for(let n=0;n<4;n++)l=e[c++],t<<=4,l>=48&&l<=57?t|=l-48:l>=97&&l<=102?t|=l+-87:l>=65&&l<=70?t|=l+-55:y(e,--c);u+=v(t);break}default:y(e,--c);break}else if(l<=127)u+=v(l);else if((l&224)==192)u+=v((l&31)<<6|e[c++]&63);else if((l&240)==224)u+=v((l&15)<<12|(e[c++]&63)<<6|e[c++]&63);else if((l&248)==240){let t=(l&7)<<18|(e[c++]&63)<<12|(e[c++]&63)<<6|e[c++]&63;t>65535&&(t-=65536,u+=v(t>>10&1023|55296),t=56320|t&1023),u+=v(t)}u[0];break;case 91:u=[],t.push(a),n.push(s),r.push(o),a=null,s=u,o=1;continue;case 123:u={},t.push(a),n.push(s),r.push(o),a=null,s=u,o=2;continue;case 93:o!==1&&y(e,--c),u=s,a=t.pop(),s=n.pop(),o=r.pop();break;case 125:o!==2&&y(e,--c),u=s,a=t.pop(),s=n.pop(),o=r.pop();break;default:y(e,--c)}for(l=e[c];l<=32;)l=e[++c];switch(o){case 0:if(c===i)return u;break;case 1:if(s.push(u),l===44){c++;continue}if(l===93)continue;break;case 2:if(a===null){if(a=u,l===58){c++;continue}}else{if(s[a]=u,a=null,l===44){c++;continue}if(l===125)continue}break}break}y(e,c)}var x=JSON.stringify,S=`warning`,C=`silent`;function w(e,t){let n=[];for(let r of e){if(he(r,t),r.indexOf(`,`)>=0)throw Error(`Invalid ${t}: ${r}`);n.push(r)}return n.join(`,`)}var T=()=>null,E=e=>typeof e==`boolean`?null:`a boolean`,D=e=>typeof e==`string`?null:`a string`,O=e=>e instanceof RegExp?null:`a RegExp object`,k=e=>typeof e==`number`&&e===(e|0)?null:`an integer`,ee=e=>typeof e==`number`&&e===(e|0)&&e>=0&&e<=65535?null:`a valid port number`,te=e=>typeof e==`function`?null:`a function`,A=e=>Array.isArray(e)?null:`an array`,j=e=>Array.isArray(e)&&e.every(e=>typeof e==`string`)?null:`an array of strings`,ne=e=>typeof e==`object`&&e&&!Array.isArray(e)?null:`an object`,re=e=>typeof e==`object`&&e?null:`an array or an object`,ie=e=>e instanceof WebAssembly.Module?null:`a WebAssembly.Module`,ae=e=>typeof e==`object`&&!Array.isArray(e)?null:`an object or null`,oe=e=>typeof e==`string`||typeof e==`boolean`?null:`a string or a boolean`,se=e=>typeof e==`string`||typeof e==`object`&&e&&!Array.isArray(e)?null:`a string or an object`,ce=e=>typeof e==`string`||Array.isArray(e)&&e.every(e=>typeof e==`string`)?null:`a string or an array of strings`,le=e=>typeof e==`string`||e instanceof Uint8Array?null:`a string or a Uint8Array`,ue=e=>typeof e==`string`||e instanceof URL?null:`a string or a URL`;function M(e,t,n,r){let i=e[n];if(t[n+``]=!0,i===void 0)return;let a=r(i);if(a!==null)throw Error(`${x(n)} must be ${a}`);return i}function de(e,t,n){for(let r in e)if(!(r in t))throw Error(`Invalid option ${n}: ${x(r)}`)}function fe(e){let t=Object.create(null),n=M(e,t,`wasmURL`,ue),r=M(e,t,`wasmModule`,ie),i=M(e,t,`worker`,E);return de(e,t,`in initialize() call`),{wasmURL:n,wasmModule:r,worker:i}}function pe(e){let t;if(e!==void 0){t=Object.create(null);for(let n in e){let r=e[n];if(typeof r==`string`||r===!1)t[n]=r;else throw Error(`Expected ${x(n)} in mangle cache to map to either a string or false`)}}return t}function me(e,t,n,r,i){let a=M(t,n,`color`,E),o=M(t,n,`logLevel`,D),s=M(t,n,`logLimit`,k);a===void 0?r&&e.push(`--color=true`):e.push(`--color=${a}`),e.push(`--log-level=${o||i}`),e.push(`--log-limit=${s||0}`)}function he(e,t,n){if(typeof e!=`string`)throw Error(`Expected value for ${t}${n===void 0?``:` `+x(n)} to be a string, got ${typeof e} instead`);return e}function ge(e,t,n){let r=M(t,n,`legalComments`,D),i=M(t,n,`sourceRoot`,D),a=M(t,n,`sourcesContent`,E),o=M(t,n,`target`,ce),s=M(t,n,`format`,D),c=M(t,n,`globalName`,D),l=M(t,n,`mangleProps`,O),u=M(t,n,`reserveProps`,O),d=M(t,n,`mangleQuoted`,E),f=M(t,n,`minify`,E),p=M(t,n,`minifySyntax`,E),m=M(t,n,`minifyWhitespace`,E),h=M(t,n,`minifyIdentifiers`,E),g=M(t,n,`lineLimit`,k),_=M(t,n,`drop`,j),v=M(t,n,`dropLabels`,j),y=M(t,n,`charset`,D),b=M(t,n,`treeShaking`,E),S=M(t,n,`ignoreAnnotations`,E),C=M(t,n,`jsx`,D),T=M(t,n,`jsxFactory`,D),ee=M(t,n,`jsxFragment`,D),te=M(t,n,`jsxImportSource`,D),A=M(t,n,`jsxDev`,E),re=M(t,n,`jsxSideEffects`,E),ie=M(t,n,`define`,ne),ae=M(t,n,`logOverride`,ne),oe=M(t,n,`supported`,ne),le=M(t,n,`pure`,j),ue=M(t,n,`keepNames`,E),de=M(t,n,`platform`,D),fe=M(t,n,`tsconfigRaw`,se),pe=M(t,n,`absPaths`,j);if(r&&e.push(`--legal-comments=${r}`),i!==void 0&&e.push(`--source-root=${i}`),a!==void 0&&e.push(`--sources-content=${a}`),o&&e.push(`--target=${w(Array.isArray(o)?o:[o],`target`)}`),s&&e.push(`--format=${s}`),c&&e.push(`--global-name=${c}`),de&&e.push(`--platform=${de}`),fe&&e.push(`--tsconfig-raw=${typeof fe==`string`?fe:JSON.stringify(fe)}`),f&&e.push(`--minify`),p&&e.push(`--minify-syntax`),m&&e.push(`--minify-whitespace`),h&&e.push(`--minify-identifiers`),g&&e.push(`--line-limit=${g}`),y&&e.push(`--charset=${y}`),b!==void 0&&e.push(`--tree-shaking=${b}`),S&&e.push(`--ignore-annotations`),_)for(let t of _)e.push(`--drop:${he(t,`drop`)}`);if(v&&e.push(`--drop-labels=${w(v,`drop label`)}`),pe&&e.push(`--abs-paths=${w(pe,`abs paths`)}`),l&&e.push(`--mangle-props=${ke(l)}`),u&&e.push(`--reserve-props=${ke(u)}`),d!==void 0&&e.push(`--mangle-quoted=${d}`),C&&e.push(`--jsx=${C}`),T&&e.push(`--jsx-factory=${T}`),ee&&e.push(`--jsx-fragment=${ee}`),te&&e.push(`--jsx-import-source=${te}`),A&&e.push(`--jsx-dev`),re&&e.push(`--jsx-side-effects`),ie)for(let t in ie){if(t.indexOf(`=`)>=0)throw Error(`Invalid define: ${t}`);e.push(`--define:${t}=${he(ie[t],`define`,t)}`)}if(ae)for(let t in ae){if(t.indexOf(`=`)>=0)throw Error(`Invalid log override: ${t}`);e.push(`--log-override:${t}=${he(ae[t],`log override`,t)}`)}if(oe)for(let t in oe){if(t.indexOf(`=`)>=0)throw Error(`Invalid supported: ${t}`);let n=oe[t];if(typeof n!=`boolean`)throw Error(`Expected value for supported ${x(t)} to be a boolean, got ${typeof n} instead`);e.push(`--supported:${t}=${n}`)}if(le)for(let t of le)e.push(`--pure:${he(t,`pure`)}`);ue&&e.push(`--keep-names`)}function _e(e,t,n,r,i){let a=[],o=[],s=Object.create(null),c=null,l=null;me(a,t,s,n,r),ge(a,t,s);let u=M(t,s,`sourcemap`,oe),d=M(t,s,`bundle`,E),f=M(t,s,`splitting`,E),m=M(t,s,`preserveSymlinks`,E),h=M(t,s,`metafile`,E),g=M(t,s,`outfile`,D),_=M(t,s,`outdir`,D),v=M(t,s,`outbase`,D),y=M(t,s,`tsconfig`,D),b=M(t,s,`resolveExtensions`,j),x=M(t,s,`nodePaths`,j),S=M(t,s,`mainFields`,j),C=M(t,s,`conditions`,j),T=M(t,s,`external`,j),O=M(t,s,`packages`,D),k=M(t,s,`alias`,ne),ee=M(t,s,`loader`,ne),te=M(t,s,`outExtension`,ne),A=M(t,s,`publicPath`,D),ie=M(t,s,`entryNames`,D),ae=M(t,s,`chunkNames`,D),se=M(t,s,`assetNames`,D),ce=M(t,s,`inject`,j),ue=M(t,s,`banner`,ne),fe=M(t,s,`footer`,ne),_e=M(t,s,`entryPoints`,re),ve=M(t,s,`absWorkingDir`,D),ye=M(t,s,`stdin`,ne),N=M(t,s,`write`,E)??i,be=M(t,s,`allowOverwrite`,E),xe=M(t,s,`mangleCache`,ne);if(s.plugins=!0,de(t,s,`in ${e}() call`),u&&a.push(`--sourcemap${u===!0?``:`=${u}`}`),d&&a.push(`--bundle`),be&&a.push(`--allow-overwrite`),f&&a.push(`--splitting`),m&&a.push(`--preserve-symlinks`),h&&a.push(`--metafile`),g&&a.push(`--outfile=${g}`),_&&a.push(`--outdir=${_}`),v&&a.push(`--outbase=${v}`),y&&a.push(`--tsconfig=${y}`),O&&a.push(`--packages=${O}`),b&&a.push(`--resolve-extensions=${w(b,`resolve extension`)}`),A&&a.push(`--public-path=${A}`),ie&&a.push(`--entry-names=${ie}`),ae&&a.push(`--chunk-names=${ae}`),se&&a.push(`--asset-names=${se}`),S&&a.push(`--main-fields=${w(S,`main field`)}`),C&&a.push(`--conditions=${w(C,`condition`)}`),T)for(let e of T)a.push(`--external:${he(e,`external`)}`);if(k)for(let e in k){if(e.indexOf(`=`)>=0)throw Error(`Invalid package name in alias: ${e}`);a.push(`--alias:${e}=${he(k[e],`alias`,e)}`)}if(ue)for(let e in ue){if(e.indexOf(`=`)>=0)throw Error(`Invalid banner file type: ${e}`);a.push(`--banner:${e}=${he(ue[e],`banner`,e)}`)}if(fe)for(let e in fe){if(e.indexOf(`=`)>=0)throw Error(`Invalid footer file type: ${e}`);a.push(`--footer:${e}=${he(fe[e],`footer`,e)}`)}if(ce)for(let e of ce)a.push(`--inject:${he(e,`inject`)}`);if(ee)for(let e in ee){if(e.indexOf(`=`)>=0)throw Error(`Invalid loader extension: ${e}`);a.push(`--loader:${e}=${he(ee[e],`loader`,e)}`)}if(te)for(let e in te){if(e.indexOf(`=`)>=0)throw Error(`Invalid out extension: ${e}`);a.push(`--out-extension:${e}=${he(te[e],`out extension`,e)}`)}if(_e)if(Array.isArray(_e))for(let e=0,t=_e.length;e<t;e++){let t=_e[e];if(typeof t==`object`&&t){let n=Object.create(null),r=M(t,n,`in`,D),i=M(t,n,`out`,D);if(de(t,n,`in entry point at index `+e),r===void 0)throw Error(`Missing property "in" for entry point at index `+e);if(i===void 0)throw Error(`Missing property "out" for entry point at index `+e);o.push([i,r])}else o.push([``,he(t,`entry point at index `+e)])}else for(let e in _e)o.push([e,he(_e[e],`entry point`,e)]);if(ye){let e=Object.create(null),t=M(ye,e,`contents`,le),n=M(ye,e,`resolveDir`,D),r=M(ye,e,`sourcefile`,D),i=M(ye,e,`loader`,D);de(ye,e,`in "stdin" object`),r&&a.push(`--sourcefile=${r}`),i&&a.push(`--loader=${i}`),n&&(l=n),typeof t==`string`?c=p(t):t instanceof Uint8Array&&(c=t)}let Se=[];if(x)for(let e of x)e+=``,Se.push(e);return{entries:o,flags:a,write:N,stdinContents:c,stdinResolveDir:l,absWorkingDir:ve,nodePaths:Se,mangleCache:pe(xe)}}function ve(e,t,n,r){let i=[],a=Object.create(null);me(i,t,a,n,r),ge(i,t,a);let o=M(t,a,`sourcemap`,oe),s=M(t,a,`sourcefile`,D),c=M(t,a,`loader`,D),l=M(t,a,`banner`,D),u=M(t,a,`footer`,D),d=M(t,a,`mangleCache`,ne);return de(t,a,`in ${e}() call`),o&&i.push(`--sourcemap=${o===!0?`external`:o}`),s&&i.push(`--sourcefile=${s}`),c&&i.push(`--loader=${c}`),l&&i.push(`--banner=${l}`),u&&i.push(`--footer=${u}`),{flags:i,mangleCache:pe(d)}}function ye(e){let t={},n={didClose:!1,reason:``},r={},i=0,a=0,o=new Uint8Array(16*1024),s=0,l=e=>{let t=s+e.length;if(t>o.length){let e=new Uint8Array(t*2);e.set(o),o=e}o.set(e,s),s+=e.length;let n=0;for(;n+4<=s;){let e=g(o,n);if(n+4+e>s)break;n+=4,y(o.subarray(n,n+e)),n+=e}n>0&&(o.copyWithin(0,n,s),s-=n)},f=e=>{n.didClose=!0,e&&(n.reason=`: `+(e.message||e));let t=`The service was stopped`+n.reason;for(let e in r)r[e](t,null);r={}},m=(t,a,o)=>{if(n.didClose)return o(`The service is no longer running`+n.reason,null);let s=i++;r[s]=(e,n)=>{try{o(e,n)}finally{t&&t.unref()}},t&&t.ref(),e.writeToStdin(u({id:s,isRequest:!0,value:a}))},h=(t,r)=>{if(n.didClose)throw Error(`The service is no longer running`+n.reason);e.writeToStdin(u({id:t,isRequest:!1,value:r}))},_=(n,r)=>c(null,null,function*(){try{if(r.command===`ping`){h(n,{});return}if(typeof r.key==`number`){let e=t[r.key];if(!e)return;let i=e[r.command];if(i){yield i(n,r);return}}throw Error(`Invalid command: `+r.command)}catch(t){let r=[Ce(t,e,null,void 0,``)];try{h(n,{errors:r})}catch{}}}),v=!0,y=e=>{if(v){v=!1;let t=String.fromCharCode(...e);if(t!==`0.28.1`)throw Error(`Cannot start service: Host version "0.28.1" does not match binary version ${x(t)}`);return}let t=d(e);if(t.isRequest)_(t.id,t.value);else{let e=r[t.id];delete r[t.id],t.value.error?e(t.value.error,{}):e(null,t.value)}};return{readFromStdout:l,afterClose:f,service:{buildOrContext:({callName:n,refs:r,options:i,isTTY:o,defaultWD:s,callback:c})=>{let l=0,u=a++,d={},f={ref(){++l===1&&r&&r.ref()},unref(){--l===0&&(delete t[u],r&&r.unref())}};t[u]=d,f.ref(),N(n,u,m,h,f,e,d,i,o,s,(e,t)=>{try{c(e,t)}finally{f.unref()}})},transform:({callName:t,refs:n,input:r,options:i,isTTY:a,fs:o,callback:s})=>{let c=xe(),l=l=>{try{if(typeof r!=`string`&&!(r instanceof Uint8Array))throw Error(`The input to "transform" must be a string or a Uint8Array`);let{flags:e,mangleCache:u}=ve(t,i,a,C),d={command:`transform`,flags:e,inputFS:l!==null,input:l===null?typeof r==`string`?p(r):r:p(l)};u&&(d.mangleCache=u),m(n,d,(e,t)=>{if(e)return s(Error(e),null);let n=Te(t.errors,c),r=Te(t.warnings,c),i=1,a=()=>{if(--i===0){let e={warnings:r,code:t.code,map:t.map,mangleCache:void 0,legalComments:void 0};`legalComments`in t&&(e.legalComments=t?.legalComments),t.mangleCache&&(e.mangleCache=t?.mangleCache),s(null,e)}};if(n.length>0)return s(P(`Transform failed`,n,r),null);t.codeFS&&(i++,o.readFile(t.code,(e,n)=>{e===null?(t.code=n,a()):s(e,null)})),t.mapFS&&(i++,o.readFile(t.map,(e,n)=>{e===null?(t.map=n,a()):s(e,null)})),a()})}catch(t){let r=[];try{me(r,i,{},a,C)}catch{}let o=Ce(t,e,c,void 0,``);m(n,{command:`error`,flags:r,error:o},()=>{o.detail=c.load(o.detail),s(P(`Transform failed`,[o],[]),null)})}};if((typeof r==`string`||r instanceof Uint8Array)&&r.length>1024*1024){let e=l;l=()=>o.writeFile(r,e)}l(null)},formatMessages:({callName:e,refs:t,messages:n,options:r,callback:i})=>{if(!r)throw Error(`Missing second argument in ${e}() call`);let a={},o=M(r,a,`kind`,D),s=M(r,a,`color`,E),c=M(r,a,`terminalWidth`,k);if(de(r,a,`in ${e}() call`),o===void 0)throw Error(`Missing "kind" in ${e}() call`);if(o!==`error`&&o!==`warning`)throw Error(`Expected "kind" to be "error" or "warning" in ${e}() call`);let l={command:`format-msgs`,messages:I(n,`messages`,null,``,c),isWarning:o===`warning`};s!==void 0&&(l.color=s),c!==void 0&&(l.terminalWidth=c),m(t,l,(e,t)=>{if(e)return i(Error(e),null);i(null,t.messages)})},analyzeMetafile:({callName:e,refs:t,metafile:n,options:r,callback:i})=>{r===void 0&&(r={});let a={},o=M(r,a,`color`,E),s=M(r,a,`verbose`,E);de(r,a,`in ${e}() call`);let c={command:`analyze-metafile`,metafile:n};o!==void 0&&(c.color=o),s!==void 0&&(c.verbose=s),m(t,c,(e,t)=>{if(e)return i(Error(e),null);i(null,t.result)})}}}}function N(e,t,n,r,i,a,o,s,c,l,u){let d=xe(),f=e===`context`,p=(e,t)=>{let r=[];try{me(r,s,{},c,S)}catch{}let o=Ce(e,a,d,void 0,t);n(i,{command:`error`,flags:r,error:o},()=>{o.detail=d.load(o.detail),u(P(f?`Context failed`:`Build failed`,[o],[]),null)})},h;if(typeof s==`object`){let e=s.plugins;if(e!==void 0){if(!Array.isArray(e))return p(Error(`"plugins" must be an array`),``);h=e}}if(h&&h.length>0){if(a.isSync)return p(Error(`Cannot use plugins in synchronous API calls`),``);be(t,n,r,i,a,o,s,h,d).then(e=>{if(!e.ok)return p(e.error,e.pluginName);try{g(e.requestPlugins,e.runOnEndCallbacks,e.scheduleOnDisposeCallbacks)}catch(e){p(e,``)}},e=>p(e,``));return}try{g(null,(e,t)=>t([],[]),()=>{})}catch(e){p(e,``)}function g(p,h,g){let _=a.hasFS,{entries:v,flags:y,write:b,stdinContents:x,stdinResolveDir:C,absWorkingDir:w,nodePaths:T,mangleCache:E}=_e(e,s,c,S,_);if(b&&!a.hasFS)throw Error(`The "write" option is unavailable in this environment`);let O={command:`build`,key:t,entries:v,flags:y,write:b,stdinContents:x,stdinResolveDir:C,absWorkingDir:w||l,nodePaths:T,context:f};p&&(O.plugins=p),E&&(O.mangleCache=E);let A=(e,t)=>{let n={errors:Te(e.errors,d),warnings:Te(e.warnings,d),outputFiles:void 0,metafile:void 0,mangleCache:void 0},r=n.errors.slice(),i=n.warnings.slice();e.outputFiles&&(n.outputFiles=e.outputFiles.map(Oe)),e.metafile&&e.metafile.length&&(n.metafile=Ae(e.metafile)),e.mangleCache&&(n.mangleCache=e.mangleCache),e.writeToStdout!==void 0&&console.log(m(e.writeToStdout).replace(/\n$/,``)),h(n,(e,a)=>{if(r.length>0||e.length>0)return t(P(`Build failed`,r.concat(e),i.concat(a)),null,e,a);t(null,n,e,a)})},j,re;f&&(o[`on-end`]=(e,t)=>new Promise(n=>{A(t,(t,i,a,o)=>{let s={errors:a,warnings:o};re&&re(t,i),j=void 0,re=void 0,r(e,s),n()})})),n(i,O,(e,s)=>{if(e)return u(Error(e),null);if(!f)return A(s,(e,t)=>(g(),u(e,t)));if(s.errors.length>0)return u(P(`Context failed`,s.errors,s.warnings),null);let c=!1;i.ref(),u(null,{rebuild:()=>(j||=new Promise((e,r)=>{let a;re=(t,n)=>{a||=()=>t?r(t):e(n)};let o=()=>{n(i,{command:`rebuild`,key:t},(e,t)=>{e?r(Error(e)):a?a():o()})};o()}),j),watch:(e={})=>new Promise((r,o)=>{if(!a.hasFS)throw Error(`Cannot use the "watch" API in this environment`);let s={},c=M(e,s,`delay`,k);de(e,s,`in watch() call`);let l={command:`watch`,key:t};c&&(l.delay=c),n(i,l,e=>{e?o(Error(e)):r(void 0)})}),serve:(e={})=>new Promise((s,c)=>{if(!a.hasFS)throw Error(`Cannot use the "serve" API in this environment`);let l={},u=M(e,l,`port`,ee),d=M(e,l,`host`,D),f=M(e,l,`servedir`,D),p=M(e,l,`keyfile`,D),m=M(e,l,`certfile`,D),h=M(e,l,`fallback`,D),g=M(e,l,`cors`,ne),_=M(e,l,`onRequest`,te);de(e,l,`in serve() call`);let v={command:`serve`,key:t,onRequest:!!_};if(u!==void 0&&(v.port=u),d!==void 0&&(v.host=d),f!==void 0&&(v.servedir=f),p!==void 0&&(v.keyfile=p),m!==void 0&&(v.certfile=m),h!==void 0&&(v.fallback=h),g){let e={},t=M(g,e,`origin`,ce);de(g,e,`on "cors" object`),Array.isArray(t)?v.corsOrigin=t:t!==void 0&&(v.corsOrigin=[t])}n(i,v,(e,t)=>{if(e)return c(Error(e));_&&(o[`serve-request`]=(e,t)=>{_(t.args),r(e,{})}),s(t)})}),cancel:()=>new Promise(e=>{if(c)return e();n(i,{command:`cancel`,key:t},()=>{e()})}),dispose:()=>new Promise(e=>{if(c)return e();c=!0,n(i,{command:`dispose`,key:t},()=>{e(),g(),i.unref()})})})})}}var be=(e,t,n,r,i,a,o,s,l)=>c(null,null,function*(){let u=[],d=[],f={},m={},h=[],g=0,_=0,v=[],y=!1;s=[...s];for(let n of s){let a={};if(typeof n!=`object`)throw Error(`Plugin at index ${_} must be an object`);let s=M(n,a,`name`,D);if(typeof s!=`string`||s===``)throw Error(`Plugin at index ${_} is missing a name`);try{let c=M(n,a,`setup`,te);if(typeof c!=`function`)throw Error(`Plugin is missing a setup function`);de(n,a,`on plugin ${x(s)}`);let p={name:s,onStart:!1,onEnd:!1,onResolve:[],onLoad:[]};_++;let b=c({initialOptions:o,resolve:(n,i={})=>{if(!y)throw Error(`Cannot call "resolve" before plugin setup has completed`);if(typeof n!=`string`)throw Error(`The path to resolve must be a string`);let a=Object.create(null),o=M(i,a,`pluginName`,D),c=M(i,a,`importer`,D),u=M(i,a,`namespace`,D),d=M(i,a,`resolveDir`,D),f=M(i,a,`kind`,D),p=M(i,a,`pluginData`,T),m=M(i,a,`with`,ne);return de(i,a,`in resolve() call`),new Promise((i,a)=>{let h={command:`resolve`,path:n,key:e,pluginName:s};if(o!=null&&(h.pluginName=o),c!=null&&(h.importer=c),u!=null&&(h.namespace=u),d!=null&&(h.resolveDir=d),f!=null)h.kind=f;else throw Error(`Must specify "kind" when calling "resolve"`);p!=null&&(h.pluginData=l.store(p)),m!=null&&(h.with=De(m,`with`)),t(r,h,(e,t)=>{e===null?i({errors:Te(t.errors,l),warnings:Te(t.warnings,l),path:t.path,external:t.external,sideEffects:t.sideEffects,namespace:t.namespace,suffix:t.suffix,pluginData:l.load(t.pluginData)}):a(Error(e))})})},onStart(e){let t=Se(Error(`This error came from the "onStart" callback registered here:`),i,`onStart`);u.push({name:s,callback:e,note:t}),p.onStart=!0},onEnd(e){let t=Se(Error(`This error came from the "onEnd" callback registered here:`),i,`onEnd`);d.push({name:s,callback:e,note:t}),p.onEnd=!0},onResolve(e,t){let n=Se(Error(`This error came from the "onResolve" callback registered here:`),i,`onResolve`),r={},a=M(e,r,`filter`,O),o=M(e,r,`namespace`,D);if(de(e,r,`in onResolve() call for plugin ${x(s)}`),a==null)throw Error(`onResolve() call is missing a filter`);let c=g++;f[c]={name:s,callback:t,note:n},p.onResolve.push({id:c,filter:ke(a),namespace:o||``})},onLoad(e,t){let n=Se(Error(`This error came from the "onLoad" callback registered here:`),i,`onLoad`),r={},a=M(e,r,`filter`,O),o=M(e,r,`namespace`,D);if(de(e,r,`in onLoad() call for plugin ${x(s)}`),a==null)throw Error(`onLoad() call is missing a filter`);let c=g++;m[c]={name:s,callback:t,note:n},p.onLoad.push({id:c,filter:ke(a),namespace:o||``})},onDispose(e){h.push(e)},esbuild:i.esbuild});b&&(yield b),v.push(p)}catch(e){return{ok:!1,error:e,pluginName:s}}}a[`on-start`]=(e,t)=>c(null,null,function*(){l.clear();let t={errors:[],warnings:[]};yield Promise.all(u.map(e=>c(null,[e],function*({name:e,callback:n,note:r}){try{let r=yield n();if(r!=null){if(typeof r!=`object`)throw Error(`Expected onStart() callback in plugin ${x(e)} to return an object`);let n={},i=M(r,n,`errors`,A),a=M(r,n,`warnings`,A);de(r,n,`from onStart() callback in plugin ${x(e)}`),i!=null&&t.errors.push(...I(i,`errors`,l,e,void 0)),a!=null&&t.warnings.push(...I(a,`warnings`,l,e,void 0))}}catch(n){t.errors.push(Ce(n,i,l,r&&r(),e))}}))),n(e,t)}),a[`on-resolve`]=(e,t)=>c(null,null,function*(){let r={},a=``,o,s;for(let e of t.ids)try{({name:a,callback:o,note:s}=f[e]);let n=yield o({path:t.path,importer:t.importer,namespace:t.namespace,resolveDir:t.resolveDir,kind:t.kind,pluginData:l.load(t.pluginData),with:t.with});if(n!=null){if(typeof n!=`object`)throw Error(`Expected onResolve() callback in plugin ${x(a)} to return an object`);let t={},i=M(n,t,`pluginName`,D),o=M(n,t,`path`,D),s=M(n,t,`namespace`,D),c=M(n,t,`suffix`,D),u=M(n,t,`external`,E),d=M(n,t,`sideEffects`,E),f=M(n,t,`pluginData`,T),p=M(n,t,`errors`,A),m=M(n,t,`warnings`,A),h=M(n,t,`watchFiles`,j),g=M(n,t,`watchDirs`,j);de(n,t,`from onResolve() callback in plugin ${x(a)}`),r.id=e,i!=null&&(r.pluginName=i),o!=null&&(r.path=o),s!=null&&(r.namespace=s),c!=null&&(r.suffix=c),u!=null&&(r.external=u),d!=null&&(r.sideEffects=d),f!=null&&(r.pluginData=l.store(f)),p!=null&&(r.errors=I(p,`errors`,l,a,void 0)),m!=null&&(r.warnings=I(m,`warnings`,l,a,void 0)),h!=null&&(r.watchFiles=Ee(h,`watchFiles`)),g!=null&&(r.watchDirs=Ee(g,`watchDirs`));break}}catch(t){r={id:e,errors:[Ce(t,i,l,s&&s(),a)]};break}n(e,r)}),a[`on-load`]=(e,t)=>c(null,null,function*(){let r={},a=``,o,s;for(let e of t.ids)try{({name:a,callback:o,note:s}=m[e]);let n=yield o({path:t.path,namespace:t.namespace,suffix:t.suffix,pluginData:l.load(t.pluginData),with:t.with});if(n!=null){if(typeof n!=`object`)throw Error(`Expected onLoad() callback in plugin ${x(a)} to return an object`);let t={},i=M(n,t,`pluginName`,D),o=M(n,t,`contents`,le),s=M(n,t,`resolveDir`,D),c=M(n,t,`pluginData`,T),u=M(n,t,`loader`,D),d=M(n,t,`errors`,A),f=M(n,t,`warnings`,A),m=M(n,t,`watchFiles`,j),h=M(n,t,`watchDirs`,j);de(n,t,`from onLoad() callback in plugin ${x(a)}`),r.id=e,i!=null&&(r.pluginName=i),o instanceof Uint8Array?r.contents=o:o!=null&&(r.contents=p(o)),s!=null&&(r.resolveDir=s),c!=null&&(r.pluginData=l.store(c)),u!=null&&(r.loader=u),d!=null&&(r.errors=I(d,`errors`,l,a,void 0)),f!=null&&(r.warnings=I(f,`warnings`,l,a,void 0)),m!=null&&(r.watchFiles=Ee(m,`watchFiles`)),h!=null&&(r.watchDirs=Ee(h,`watchDirs`));break}}catch(t){r={id:e,errors:[Ce(t,i,l,s&&s(),a)]};break}n(e,r)});let b=(e,t)=>t([],[]);return d.length>0&&(b=(e,t)=>{c(null,null,function*(){let n=[],r=[];for(let{name:t,callback:a,note:o}of d){let s,c;try{let n=yield a(e);if(n!=null){if(typeof n!=`object`)throw Error(`Expected onEnd() callback in plugin ${x(t)} to return an object`);let e={},r=M(n,e,`errors`,A),i=M(n,e,`warnings`,A);de(n,e,`from onEnd() callback in plugin ${x(t)}`),r!=null&&(s=I(r,`errors`,l,t,void 0)),i!=null&&(c=I(i,`warnings`,l,t,void 0))}}catch(e){s=[Ce(e,i,l,o&&o(),t)]}if(s){n.push(...s);try{e.errors.push(...s)}catch{}}if(c){r.push(...c);try{e.warnings.push(...c)}catch{}}}t(n,r)})}),y=!0,{ok:!0,requestPlugins:v,runOnEndCallbacks:b,scheduleOnDisposeCallbacks:()=>{for(let e of h)setTimeout(()=>e(),0)}}});function xe(){let e=new Map,t=0;return{clear(){e.clear()},load(t){return e.get(t)},store(n){if(n===void 0)return-1;let r=t++;return e.set(r,n),r}}}function Se(e,t,n){let r,i=!1;return()=>{if(i)return r;i=!0;try{let i=(e.stack+``).split(`
3370
3370
  `);i.splice(1,1);let a=we(t,i,n);if(a)return r={text:e.message,location:a},r}catch{}}}function Ce(e,t,n,r,i){let a=`Internal error`,o=null;try{a=(e&&e.message||e)+``}catch{}try{o=we(t,(e.stack+``).split(`
3371
3371
  `),``)}catch{}return{id:``,pluginName:i,text:a,location:o,notes:r?[r]:[],detail:n?n.store(e):-1}}function we(e,t,n){let r=` at `;if(e.readFileSync&&!t[0].startsWith(r)&&t[1].startsWith(r))for(let i=1;i<t.length;i++){let a=t[i];if(a.startsWith(r))for(a=a.slice(7);;){let r=/^(?:new |async )?\S+ \((.*)\)$/.exec(a);if(r){a=r[1];continue}if(r=/^eval at \S+ \((.*)\)(?:, \S+:\d+:\d+)?$/.exec(a),r){a=r[1];continue}if(r=/^(\S+):(\d+):(\d+)$/.exec(a),r){let i;try{i=e.readFileSync(r[1],`utf8`)}catch{break}let a=i.split(/\r\n|\r|\n|\u2028|\u2029/)[r[2]-1]||``,o=r[3]-1,s=a.slice(o,o+n.length)===n?n.length:0;return{file:r[1],namespace:`file`,line:+r[2],column:p(a.slice(0,o)).length,length:p(a.slice(o,o+s)).length,lineText:a+`
3372
3372
  `+t.slice(1).join(`
3373
3373
  `),suggestion:``}}break}}return null}function P(e,t,n){e+=t.length<1?``:` with ${t.length} error${t.length<2?``:`s`}:`+t.slice(0,6).map((e,t)=>{if(t===5)return`
3374
3374
  ...`;if(!e.location)return`
3375
3375
  error: ${e.text}`;let{file:n,line:r,column:i}=e.location;return`
3376
- ${n}:${r}:${i}: ERROR: ${e.pluginName?`[plugin: ${e.pluginName}] `:``}${e.text}`}).join(``);let r=Error(e);for(let[e,i]of[[`errors`,t],[`warnings`,n]])Object.defineProperty(r,e,{configurable:!0,enumerable:!0,get:()=>i,set:t=>Object.defineProperty(r,e,{configurable:!0,enumerable:!0,value:t})});return r}function Te(e,t){for(let n of e)n.detail=t.load(n.detail);return e}function F(e,t,n){if(e==null)return null;let r={},i=M(e,r,`file`,D),a=M(e,r,`namespace`,D),o=M(e,r,`line`,k),s=M(e,r,`column`,k),c=M(e,r,`length`,k),l=M(e,r,`lineText`,D),u=M(e,r,`suggestion`,D);if(de(e,r,t),l){let e=l.slice(0,(s&&s>0?s:0)+(c&&c>0?c:0)+(n&&n>0?n:80));!/[\x7F-\uFFFF]/.test(e)&&!/\n/.test(l)&&(l=e)}return{file:i||``,namespace:a||``,line:o||0,column:s||0,length:c||0,lineText:l||``,suggestion:u||``}}function I(e,t,n,r,i){let a=[],o=0;for(let s of e){let e={},c=M(s,e,`id`,D),l=M(s,e,`pluginName`,D),u=M(s,e,`text`,D),d=M(s,e,`location`,ae),f=M(s,e,`notes`,A),p=M(s,e,`detail`,T),m=`in element ${o} of "${t}"`;de(s,e,m);let h=[];if(f)for(let e of f){let t={},n=M(e,t,`text`,D),r=M(e,t,`location`,ae);de(e,t,m),h.push({text:n||``,location:F(r,m,i)})}a.push({id:c||``,pluginName:l||r,text:u||``,location:F(d,m,i),notes:h,detail:n?n.store(p):-1}),o++}return a}function Ee(e,t){let n=[];for(let r of e){if(typeof r!=`string`)throw Error(`${x(t)} must be an array of strings`);n.push(r)}return n}function De(e,t){let n=Object.create(null);for(let r in e){let i=e[r];if(typeof i!=`string`)throw Error(`key ${x(r)} in object ${x(t)} must be a string`);n[r]=i}return n}function Oe({path:e,contents:t,hash:n}){let r=null;return{path:e,contents:t,hash:n,get text(){let e=this.contents;return(r===null||e!==t)&&(t=e,r=m(e)),r}}}function ke(e){let t=e.source;return e.flags&&(t=`(?${e.flags})${t}`),t}function Ae(e){let t;try{t=m(e)}catch{return b(e)}return JSON.parse(t)}var je=`0.28.0`,Me=e=>Ge().build(e),Ne=e=>Ge().context(e),Pe=(e,t)=>Ge().transform(e,t),Fe=(e,t)=>Ge().formatMessages(e,t),Ie=(e,t)=>Ge().analyzeMetafile(e,t),Le=()=>{throw Error(`The "buildSync" API only works in node`)},Re=()=>{throw Error(`The "transformSync" API only works in node`)},ze=()=>{throw Error(`The "formatMessagesSync" API only works in node`)},Be=()=>{throw Error(`The "analyzeMetafileSync" API only works in node`)},Ve=()=>(Ue&&Ue(),Promise.resolve()),He,Ue,We,Ge=()=>{if(We)return We;throw Error(He?`You need to wait for the promise returned from "initialize" to be resolved before calling this`:`You need to call "initialize" before calling this`)},Ke=e=>{e=fe(e||{});let t=e.wasmURL,n=e.wasmModule,r=e.worker!==!1;if(!t&&!n)throw Error(`Must provide either the "wasmURL" option or the "wasmModule" option`);if(He)throw Error(`Cannot call "initialize" more than once`);return He=qe(t||``,n,r),He.catch(()=>{He=void 0}),He},qe=(e,t,n)=>c(null,null,function*(){let r,i,a=new Promise(e=>i=e);if(n){let e=new Blob([`onmessage=((postMessage) => {
3376
+ ${n}:${r}:${i}: ERROR: ${e.pluginName?`[plugin: ${e.pluginName}] `:``}${e.text}`}).join(``);let r=Error(e);for(let[e,i]of[[`errors`,t],[`warnings`,n]])Object.defineProperty(r,e,{configurable:!0,enumerable:!0,get:()=>i,set:t=>Object.defineProperty(r,e,{configurable:!0,enumerable:!0,value:t})});return r}function Te(e,t){for(let n of e)n.detail=t.load(n.detail);return e}function F(e,t,n){if(e==null)return null;let r={},i=M(e,r,`file`,D),a=M(e,r,`namespace`,D),o=M(e,r,`line`,k),s=M(e,r,`column`,k),c=M(e,r,`length`,k),l=M(e,r,`lineText`,D),u=M(e,r,`suggestion`,D);if(de(e,r,t),l){let e=l.slice(0,(s&&s>0?s:0)+(c&&c>0?c:0)+(n&&n>0?n:80));!/[\x7F-\uFFFF]/.test(e)&&!/\n/.test(l)&&(l=e)}return{file:i||``,namespace:a||``,line:o||0,column:s||0,length:c||0,lineText:l||``,suggestion:u||``}}function I(e,t,n,r,i){let a=[],o=0;for(let s of e){let e={},c=M(s,e,`id`,D),l=M(s,e,`pluginName`,D),u=M(s,e,`text`,D),d=M(s,e,`location`,ae),f=M(s,e,`notes`,A),p=M(s,e,`detail`,T),m=`in element ${o} of "${t}"`;de(s,e,m);let h=[];if(f)for(let e of f){let t={},n=M(e,t,`text`,D),r=M(e,t,`location`,ae);de(e,t,m),h.push({text:n||``,location:F(r,m,i)})}a.push({id:c||``,pluginName:l||r,text:u||``,location:F(d,m,i),notes:h,detail:n?n.store(p):-1}),o++}return a}function Ee(e,t){let n=[];for(let r of e){if(typeof r!=`string`)throw Error(`${x(t)} must be an array of strings`);n.push(r)}return n}function De(e,t){let n=Object.create(null);for(let r in e){let i=e[r];if(typeof i!=`string`)throw Error(`key ${x(r)} in object ${x(t)} must be a string`);n[r]=i}return n}function Oe({path:e,contents:t,hash:n}){let r=null;return{path:e,contents:t,hash:n,get text(){let e=this.contents;return(r===null||e!==t)&&(t=e,r=m(e)),r}}}function ke(e){let t=e.source;return e.flags&&(t=`(?${e.flags})${t}`),t}function Ae(e){let t;try{t=m(e)}catch{return b(e)}return JSON.parse(t)}var je=`0.28.1`,Me=e=>Ge().build(e),Ne=e=>Ge().context(e),Pe=(e,t)=>Ge().transform(e,t),Fe=(e,t)=>Ge().formatMessages(e,t),Ie=(e,t)=>Ge().analyzeMetafile(e,t),Le=()=>{throw Error(`The "buildSync" API only works in node`)},Re=()=>{throw Error(`The "transformSync" API only works in node`)},ze=()=>{throw Error(`The "formatMessagesSync" API only works in node`)},Be=()=>{throw Error(`The "analyzeMetafileSync" API only works in node`)},Ve=()=>(Ue&&Ue(),Promise.resolve()),He,Ue,We,Ge=()=>{if(We)return We;throw Error(He?`You need to wait for the promise returned from "initialize" to be resolved before calling this`:`You need to call "initialize" before calling this`)},Ke=e=>{e=fe(e||{});let t=e.wasmURL,n=e.wasmModule,r=e.worker!==!1;if(!t&&!n)throw Error(`Must provide either the "wasmURL" option or the "wasmModule" option`);if(He)throw Error(`Cannot call "initialize" more than once`);return He=qe(t||``,n,r),He.catch(()=>{He=void 0}),He},qe=(e,t,n)=>c(null,null,function*(){let r,i,a=new Promise(e=>i=e);if(n){let e=new Blob([`onmessage=((postMessage) => {
3377
3377
  // Copyright 2018 The Go Authors. All rights reserved.
3378
3378
  // Use of this source code is governed by a BSD-style
3379
3379
  // license that can be found in the LICENSE file.
@@ -4022,7 +4022,7 @@ ${n}:${r}:${i}: ERROR: ${e.pluginName?`[plugin: ${e.pluginName}] `:``}${e.text}`
4022
4022
  callback(null, count);
4023
4023
  };
4024
4024
  let go = new globalThis.Go();
4025
- go.argv = ["", \`--service=\${"0.28.0"}\`];
4025
+ go.argv = ["", \`--service=\${"0.28.1"}\`];
4026
4026
  tryToInstantiateModule(wasm, go).then(
4027
4027
  (instance) => {
4028
4028
  postMessage(null);
@@ -4054,7 +4054,7 @@ ${n}:${r}:${i}: ERROR: ${e.pluginName?`[plugin: ${e.pluginName}] `:``}${e.text}`
4054
4054
  })(postMessage)`],{type:`text/javascript`});r=new Worker(URL.createObjectURL(e))}else{let e=(e=>{var t=(e,t,n)=>new Promise((r,i)=>{var a=e=>{try{s(n.next(e))}catch(e){i(e)}},o=e=>{try{s(n.throw(e))}catch(e){i(e)}},s=e=>e.done?r(e.value):Promise.resolve(e.value).then(a,o);s((n=n.apply(e,t)).next())});let n,r={};for(let e=self;e;e=Object.getPrototypeOf(e))for(let t of Object.getOwnPropertyNames(e))t in r||Object.defineProperty(r,t,{get:()=>self[t]});(()=>{let e=()=>{let e=Error(`not implemented`);return e.code=`ENOSYS`,e};if(!r.fs){let t=``;r.fs={constants:{O_WRONLY:-1,O_RDWR:-1,O_CREAT:-1,O_TRUNC:-1,O_APPEND:-1,O_EXCL:-1,O_DIRECTORY:-1},writeSync(e,n){t+=i.decode(n);let r=t.lastIndexOf(`
4055
4055
  `);return r!=-1&&(console.log(t.substring(0,r)),t=t.substring(r+1)),n.length},write(t,n,r,i,a,o){if(r!==0||i!==n.length||a!==null){o(e());return}o(null,this.writeSync(t,n))},chmod(t,n,r){r(e())},chown(t,n,r,i){i(e())},close(t,n){n(e())},fchmod(t,n,r){r(e())},fchown(t,n,r,i){i(e())},fstat(t,n){n(e())},fsync(e,t){t(null)},ftruncate(t,n,r){r(e())},lchown(t,n,r,i){i(e())},link(t,n,r){r(e())},lstat(t,n){n(e())},mkdir(t,n,r){r(e())},open(t,n,r,i){i(e())},read(t,n,r,i,a,o){o(e())},readdir(t,n){n(e())},readlink(t,n){n(e())},rename(t,n,r){r(e())},rmdir(t,n){n(e())},stat(t,n){n(e())},symlink(t,n,r){r(e())},truncate(t,n,r){r(e())},unlink(t,n){n(e())},utimes(t,n,r,i){i(e())}}}if(r.process||={getuid(){return-1},getgid(){return-1},geteuid(){return-1},getegid(){return-1},getgroups(){throw e()},pid:-1,ppid:-1,umask(){throw e()},cwd(){throw e()},chdir(){throw e()}},r.path||={resolve(...e){return e.join(`/`)}},!r.crypto)throw Error(`globalThis.crypto is not available, polyfill required (crypto.getRandomValues only)`);if(!r.performance)throw Error(`globalThis.performance is not available, polyfill required (performance.now only)`);if(!r.TextEncoder)throw Error(`globalThis.TextEncoder is not available, polyfill required`);if(!r.TextDecoder)throw Error(`globalThis.TextDecoder is not available, polyfill required`);let n=new TextEncoder(`utf-8`),i=new TextDecoder(`utf-8`);r.Go=class{constructor(){this.argv=[`js`],this.env={},this.exit=e=>{e!==0&&console.warn(`exit code:`,e)},this._exitPromise=new Promise(e=>{this._resolveExitPromise=e}),this._pendingEvent=null,this._scheduledTimeouts=new Map,this._nextCallbackTimeoutID=1;let e=(e,t)=>{this.mem.setUint32(e+0,t,!0),this.mem.setUint32(e+4,Math.floor(t/4294967296),!0)},t=e=>this.mem.getUint32(e+0,!0)+this.mem.getInt32(e+4,!0)*4294967296,a=e=>{let t=this.mem.getFloat64(e,!0);if(t===0)return;if(!isNaN(t))return t;let n=this.mem.getUint32(e,!0);return this._values[n]},o=(e,t)=>{let n=2146959360;if(typeof t==`number`&&t!==0){if(isNaN(t)){this.mem.setUint32(e+4,n,!0),this.mem.setUint32(e,0,!0);return}this.mem.setFloat64(e,t,!0);return}if(t===void 0){this.mem.setFloat64(e,0,!0);return}let r=this._ids.get(t);r===void 0&&(r=this._idPool.pop(),r===void 0&&(r=this._values.length),this._values[r]=t,this._goRefCounts[r]=0,this._ids.set(t,r)),this._goRefCounts[r]++;let i=0;switch(typeof t){case`object`:t!==null&&(i=1);break;case`string`:i=2;break;case`symbol`:i=3;break;case`function`:i=4;break}this.mem.setUint32(e+4,n|i,!0),this.mem.setUint32(e,r,!0)},s=e=>{let n=t(e+0),r=t(e+8);return new Uint8Array(this._inst.exports.mem.buffer,n,r)},c=e=>{let n=t(e+0),r=t(e+8),i=Array(r);for(let e=0;e<r;e++)i[e]=a(n+e*8);return i},l=e=>{let n=t(e+0),r=t(e+8);return i.decode(new DataView(this._inst.exports.mem.buffer,n,r))},u=(e,t)=>(this._inst.exports.testExport0(),this._inst.exports.testExport(e,t)),d=Date.now()-performance.now();this.importObject={_gotest:{add:(e,t)=>e+t,callExport:u},gojs:{"runtime.wasmExit":e=>{e>>>=0;let t=this.mem.getInt32(e+8,!0);this.exited=!0,delete this._inst,delete this._values,delete this._goRefCounts,delete this._ids,delete this._idPool,this.exit(t)},"runtime.wasmWrite":e=>{e>>>=0;let n=t(e+8),i=t(e+16),a=this.mem.getInt32(e+24,!0);r.fs.writeSync(n,new Uint8Array(this._inst.exports.mem.buffer,i,a))},"runtime.resetMemoryDataView":e=>{e>>>=0,this.mem=new DataView(this._inst.exports.mem.buffer)},"runtime.nanotime1":t=>{t>>>=0,e(t+8,(d+performance.now())*1e6)},"runtime.walltime":t=>{t>>>=0;let n=new Date().getTime();e(t+8,n/1e3),this.mem.setInt32(t+16,n%1e3*1e6,!0)},"runtime.scheduleTimeoutEvent":e=>{e>>>=0;let n=this._nextCallbackTimeoutID;this._nextCallbackTimeoutID++,this._scheduledTimeouts.set(n,setTimeout(()=>{for(this._resume();this._scheduledTimeouts.has(n);)console.warn(`scheduleTimeoutEvent: missed timeout event`),this._resume()},t(e+8))),this.mem.setInt32(e+16,n,!0)},"runtime.clearTimeoutEvent":e=>{e>>>=0;let t=this.mem.getInt32(e+8,!0);clearTimeout(this._scheduledTimeouts.get(t)),this._scheduledTimeouts.delete(t)},"runtime.getRandomData":e=>{e>>>=0,crypto.getRandomValues(s(e+8))},"syscall/js.finalizeRef":e=>{e>>>=0;let t=this.mem.getUint32(e+8,!0);if(this._goRefCounts[t]--,this._goRefCounts[t]===0){let e=this._values[t];this._values[t]=null,this._ids.delete(e),this._idPool.push(t)}},"syscall/js.stringVal":e=>{e>>>=0,o(e+24,l(e+8))},"syscall/js.valueGet":e=>{e>>>=0;let t=Reflect.get(a(e+8),l(e+16));e=this._inst.exports.getsp()>>>0,o(e+32,t)},"syscall/js.valueSet":e=>{e>>>=0,Reflect.set(a(e+8),l(e+16),a(e+32))},"syscall/js.valueDelete":e=>{e>>>=0,Reflect.deleteProperty(a(e+8),l(e+16))},"syscall/js.valueIndex":e=>{e>>>=0,o(e+24,Reflect.get(a(e+8),t(e+16)))},"syscall/js.valueSetIndex":e=>{e>>>=0,Reflect.set(a(e+8),t(e+16),a(e+24))},"syscall/js.valueCall":e=>{e>>>=0;try{let t=a(e+8),n=Reflect.get(t,l(e+16)),r=c(e+32),i=Reflect.apply(n,t,r);e=this._inst.exports.getsp()>>>0,o(e+56,i),this.mem.setUint8(e+64,1)}catch(t){e=this._inst.exports.getsp()>>>0,o(e+56,t),this.mem.setUint8(e+64,0)}},"syscall/js.valueInvoke":e=>{e>>>=0;try{let t=a(e+8),n=c(e+16),r=Reflect.apply(t,void 0,n);e=this._inst.exports.getsp()>>>0,o(e+40,r),this.mem.setUint8(e+48,1)}catch(t){e=this._inst.exports.getsp()>>>0,o(e+40,t),this.mem.setUint8(e+48,0)}},"syscall/js.valueNew":e=>{e>>>=0;try{let t=a(e+8),n=c(e+16),r=Reflect.construct(t,n);e=this._inst.exports.getsp()>>>0,o(e+40,r),this.mem.setUint8(e+48,1)}catch(t){e=this._inst.exports.getsp()>>>0,o(e+40,t),this.mem.setUint8(e+48,0)}},"syscall/js.valueLength":t=>{t>>>=0,e(t+16,parseInt(a(t+8).length))},"syscall/js.valuePrepareString":t=>{t>>>=0;let r=n.encode(String(a(t+8)));o(t+16,r),e(t+24,r.length)},"syscall/js.valueLoadString":e=>{e>>>=0;let t=a(e+8);s(e+16).set(t)},"syscall/js.valueInstanceOf":e=>{e>>>=0,this.mem.setUint8(e+24,+(a(e+8)instanceof a(e+16)))},"syscall/js.copyBytesToGo":t=>{t>>>=0;let n=s(t+8),r=a(t+32);if(!(r instanceof Uint8Array||r instanceof Uint8ClampedArray)){this.mem.setUint8(t+48,0);return}let i=r.subarray(0,n.length);n.set(i),e(t+40,i.length),this.mem.setUint8(t+48,1)},"syscall/js.copyBytesToJS":t=>{t>>>=0;let n=a(t+8),r=s(t+16);if(!(n instanceof Uint8Array||n instanceof Uint8ClampedArray)){this.mem.setUint8(t+48,0);return}let i=r.subarray(0,n.length);n.set(i),e(t+40,i.length),this.mem.setUint8(t+48,1)},debug:e=>{console.log(e)}}}}run(e){return t(this,null,function*(){if(!(e instanceof WebAssembly.Instance))throw Error(`Go.run: WebAssembly.Instance expected`);this._inst=e,this.mem=new DataView(this._inst.exports.mem.buffer),this._values=[NaN,0,null,!0,!1,r,this],this._goRefCounts=Array(this._values.length).fill(1/0),this._ids=new Map([[0,1],[null,2],[!0,3],[!1,4],[r,5],[this,6]]),this._idPool=[],this.exited=!1;let t=4096,i=e=>{let r=t,i=n.encode(e+`\0`);return new Uint8Array(this.mem.buffer,t,i.length).set(i),t+=i.length,t%8!=0&&(t+=8-t%8),r},a=this.argv.length,o=[];this.argv.forEach(e=>{o.push(i(e))}),o.push(0),Object.keys(this.env).sort().forEach(e=>{o.push(i(`${e}=${this.env[e]}`))}),o.push(0);let s=t;if(o.forEach(e=>{this.mem.setUint32(t,e,!0),this.mem.setUint32(t+4,0,!0),t+=8}),t>=12288)throw Error(`total length of command line and environment variables exceeds limit`);this._inst.exports.run(a,s),this.exited&&this._resolveExitPromise(),yield this._exitPromise})}_resume(){if(this.exited)throw Error(`Go program has already exited`);this._inst.exports.resume(),this.exited&&this._resolveExitPromise()}_makeFuncWrapper(e){let t=this;return function(){let n={id:e,this:this,args:arguments};return t._pendingEvent=n,t._resume(),n.result}}}})(),n=({data:t})=>{let a=new TextDecoder,o=r.fs,s=``;o.writeSync=(t,n)=>{if(t===1)e(n);else if(t===2){s+=a.decode(n);let e=s.split(`
4056
4056
  `);e.length>1&&console.log(e.slice(0,-1).join(`
4057
- `)),s=e[e.length-1]}else throw Error(`Bad write`);return n.length};let c=[],l,u=0;n=({data:e})=>(e.length>0&&(c.push(e),l&&l()),d),o.read=(e,t,n,r,i,a)=>{if(e!==0||n!==0||r!==t.length||i!==null)throw Error(`Bad read`);if(c.length===0){l=()=>o.read(e,t,n,r,i,a);return}let s=c[0],d=Math.max(0,Math.min(r,s.length-u));t.set(s.subarray(u,u+d),n),u+=d,u===s.length&&(c.shift(),u=0),a(null,d)};let d=new r.Go;return d.argv=[``,`--service=0.28.0`],i(t,d).then(t=>{e(null),d.run(t)},t=>{e(t)}),d};function i(e,n){return t(this,null,function*(){if(e instanceof WebAssembly.Module)return WebAssembly.instantiate(e,n.importObject);let t=yield fetch(e);if(!t.ok)throw Error(`Failed to download ${JSON.stringify(e)}`);if(`instantiateStreaming`in WebAssembly&&/^application\/wasm($|;)/i.test(t.headers.get(`Content-Type`)||``))return(yield WebAssembly.instantiateStreaming(t,n.importObject)).instance;let r=yield t.arrayBuffer();return(yield WebAssembly.instantiate(r,n.importObject)).instance})}return e=>n(e)})(e=>r.onmessage({data:e})),t;r={onmessage:null,postMessage:n=>setTimeout(()=>{try{t=e({data:n})}catch(e){i(e)}}),terminate(){if(t)for(let e of t._scheduledTimeouts.values())clearTimeout(e)}}}let o,s,c=new Promise((e,t)=>{o=e,s=t});r.onmessage=({data:e})=>{r.onmessage=({data:e})=>u(e),e?s(e):o()},r.postMessage(t||new URL(e,location.href).toString());let{readFromStdout:u,service:d}=ye({writeToStdin(e){r.postMessage(e)},isSync:!1,hasFS:!1,esbuild:l});yield c,Ue=()=>{r.terminate(),He=void 0,Ue=void 0,We=void 0},We={build:e=>new Promise((t,n)=>{a.then(n),d.buildOrContext({callName:`build`,refs:null,options:e,isTTY:!1,defaultWD:`/`,callback:(e,r)=>e?n(e):t(r)})}),context:e=>new Promise((t,n)=>{a.then(n),d.buildOrContext({callName:`context`,refs:null,options:e,isTTY:!1,defaultWD:`/`,callback:(e,r)=>e?n(e):t(r)})}),transform:(e,t)=>new Promise((n,r)=>{a.then(r),d.transform({callName:`transform`,refs:null,input:e,options:t||{},isTTY:!1,fs:{readFile(e,t){t(Error(`Internal error`),null)},writeFile(e,t){t(null)}},callback:(e,t)=>e?r(e):n(t)})}),formatMessages:(e,t)=>new Promise((n,r)=>{a.then(r),d.formatMessages({callName:`formatMessages`,refs:null,messages:e,options:t,callback:(e,t)=>e?r(e):n(t)})}),analyzeMetafile:(e,t)=>new Promise((n,r)=>{a.then(r),d.analyzeMetafile({callName:`analyzeMetafile`,refs:null,metafile:typeof e==`string`?e:JSON.stringify(e),options:t,callback:(e,t)=>e?r(e):n(t)})})}}),Je=l})(typeof t==`object`?t:{set exports(e){(typeof self<`u`?self:this).esbuild=e}})}))(),1);const H3=V3.version,U3=mY(`esbuild-wasm`,H3,`esbuild.wasm`).toString(),W3=`slicc-esbuild-${H3}`;let G3=null;async function K3(e={}){return G3||=q3(e.onProgress).catch(e=>{throw G3=null,e}),G3}async function q3(e){let t=e??(()=>{});if(fJ())return t(`esbuild ready (node service)`),V3;let n=U3;t(`downloading esbuild.wasm (cached after first run)...`);let r=await J3(n,`application/wasm`,t),i=new ArrayBuffer(r.byteLength);new Uint8Array(i).set(r);let a=await WebAssembly.compile(i);return await V3.initialize({wasmModule:a,worker:!pJ()}),t(`esbuild ready`),V3}async function J3(e,t,n){if(typeof caches<`u`)try{let t=await(await caches.open(W3)).match(e);if(t)return new Uint8Array(await t.arrayBuffer())}catch{}n(`fetching ${Y3(e)}...`);let r=await fetch(e);if(!r.ok)throw Error(`esbuild-wasm fetch ${e} failed: HTTP ${r.status}`);let i=new Uint8Array(await r.arrayBuffer());if(typeof caches<`u`)try{let n=await caches.open(W3),r=new Response(i,{headers:{"content-type":t}});await n.put(e,r)}catch{}return i}function Y3(e){return e.replace(/^https?:\/\//,``).slice(0,64)}const X3=`esbuild - WASM build of the esbuild bundler / transpiler
4057
+ `)),s=e[e.length-1]}else throw Error(`Bad write`);return n.length};let c=[],l,u=0;n=({data:e})=>(e.length>0&&(c.push(e),l&&l()),d),o.read=(e,t,n,r,i,a)=>{if(e!==0||n!==0||r!==t.length||i!==null)throw Error(`Bad read`);if(c.length===0){l=()=>o.read(e,t,n,r,i,a);return}let s=c[0],d=Math.max(0,Math.min(r,s.length-u));t.set(s.subarray(u,u+d),n),u+=d,u===s.length&&(c.shift(),u=0),a(null,d)};let d=new r.Go;return d.argv=[``,`--service=0.28.1`],i(t,d).then(t=>{e(null),d.run(t)},t=>{e(t)}),d};function i(e,n){return t(this,null,function*(){if(e instanceof WebAssembly.Module)return WebAssembly.instantiate(e,n.importObject);let t=yield fetch(e);if(!t.ok)throw Error(`Failed to download ${JSON.stringify(e)}`);if(`instantiateStreaming`in WebAssembly&&/^application\/wasm($|;)/i.test(t.headers.get(`Content-Type`)||``))return(yield WebAssembly.instantiateStreaming(t,n.importObject)).instance;let r=yield t.arrayBuffer();return(yield WebAssembly.instantiate(r,n.importObject)).instance})}return e=>n(e)})(e=>r.onmessage({data:e})),t;r={onmessage:null,postMessage:n=>setTimeout(()=>{try{t=e({data:n})}catch(e){i(e)}}),terminate(){if(t)for(let e of t._scheduledTimeouts.values())clearTimeout(e)}}}let o,s,c=new Promise((e,t)=>{o=e,s=t});r.onmessage=({data:e})=>{r.onmessage=({data:e})=>u(e),e?s(e):o()},r.postMessage(t||new URL(e,location.href).toString());let{readFromStdout:u,service:d}=ye({writeToStdin(e){r.postMessage(e)},isSync:!1,hasFS:!1,esbuild:l});yield c,Ue=()=>{r.terminate(),He=void 0,Ue=void 0,We=void 0},We={build:e=>new Promise((t,n)=>{a.then(n),d.buildOrContext({callName:`build`,refs:null,options:e,isTTY:!1,defaultWD:`/`,callback:(e,r)=>e?n(e):t(r)})}),context:e=>new Promise((t,n)=>{a.then(n),d.buildOrContext({callName:`context`,refs:null,options:e,isTTY:!1,defaultWD:`/`,callback:(e,r)=>e?n(e):t(r)})}),transform:(e,t)=>new Promise((n,r)=>{a.then(r),d.transform({callName:`transform`,refs:null,input:e,options:t||{},isTTY:!1,fs:{readFile(e,t){t(Error(`Internal error`),null)},writeFile(e,t){t(null)}},callback:(e,t)=>e?r(e):n(t)})}),formatMessages:(e,t)=>new Promise((n,r)=>{a.then(r),d.formatMessages({callName:`formatMessages`,refs:null,messages:e,options:t,callback:(e,t)=>e?r(e):n(t)})}),analyzeMetafile:(e,t)=>new Promise((n,r)=>{a.then(r),d.analyzeMetafile({callName:`analyzeMetafile`,refs:null,metafile:typeof e==`string`?e:JSON.stringify(e),options:t,callback:(e,t)=>e?r(e):n(t)})})}}),Je=l})(typeof t==`object`?t:{set exports(e){(typeof self<`u`?self:this).esbuild=e}})}))(),1);const H3=V3.version,U3=mY(`esbuild-wasm`,H3,`esbuild.wasm`).toString(),W3=`slicc-esbuild-${H3}`;let G3=null;async function K3(e={}){return G3||=q3(e.onProgress).catch(e=>{throw G3=null,e}),G3}async function q3(e){let t=e??(()=>{});if(fJ())return t(`esbuild ready (node service)`),V3;let n=U3;t(`downloading esbuild.wasm (cached after first run)...`);let r=await J3(n,`application/wasm`,t),i=new ArrayBuffer(r.byteLength);new Uint8Array(i).set(r);let a=await WebAssembly.compile(i);return await V3.initialize({wasmModule:a,worker:!pJ()}),t(`esbuild ready`),V3}async function J3(e,t,n){if(typeof caches<`u`)try{let t=await(await caches.open(W3)).match(e);if(t)return new Uint8Array(await t.arrayBuffer())}catch{}n(`fetching ${Y3(e)}...`);let r=await fetch(e);if(!r.ok)throw Error(`esbuild-wasm fetch ${e} failed: HTTP ${r.status}`);let i=new Uint8Array(await r.arrayBuffer());if(typeof caches<`u`)try{let n=await caches.open(W3),r=new Response(i,{headers:{"content-type":t}});await n.put(e,r)}catch{}return i}function Y3(e){return e.replace(/^https?:\/\//,``).slice(0,64)}const X3=`esbuild - WASM build of the esbuild bundler / transpiler
4058
4058
 
4059
4059
  Usage:
4060
4060
  esbuild [options] <entry> Bundle / transform
@@ -4236,8 +4236,8 @@ Options:
4236
4236
  `;case`idle`:return`enhanced engine: not downloaded (run hear --warmup)
4237
4237
  `;case`loading`:{let t=e=>(e/1024/1024).toFixed(1);return`enhanced engine: downloading${e.loaded!=null&&e.total?` ${t(e.loaded)}/${t(e.total)} MB`:``}${e.etaSeconds!=null&&Number.isFinite(e.etaSeconds)?` · ready in ~${Math.max(1,Math.round(e.etaSeconds))}s`:``}\n`}}}function l8(e){return{stdout:``,stderr:`hear: ${e}\n`,exitCode:1}}function u8(e){return e instanceof Error?e.message:String(e)}function d8(e){let t=e.map((e,t)=>`${e.deviceId}\t${e.label||`Microphone ${t+1}`}`);return t.join(`
4238
4238
  `)+(t.length?`
4239
- `:``)}async function Hie(e){try{return e.local?navigator.mediaDevices?.enumerateDevices?{stdout:d8((await navigator.mediaDevices.enumerateDevices()).filter(e=>e.kind===`audioinput`)),stderr:``,exitCode:0}:l8(`device enumeration unavailable`):{stdout:d8((await e.panelRpc.call(`enumerate-media-devices`,void 0)).audioinputs),stderr:``,exitCode:0}}catch(e){return l8(u8(e))}}async function Uie(e,t){try{if(e.local){let{hearStatus:e,hearWarmup:n}=await import(`./hear-DD8kXpu3.js`);return{stdout:c8(t?n():e()),stderr:``,exitCode:0}}return{stdout:c8(t?await e.panelRpc.call(`hear-warmup`,void 0):await e.panelRpc.call(`hear-status`,void 0)),stderr:``,exitCode:0}}catch(e){return l8(u8(e))}}async function Wie(e,t,n){let r=t.inputFile,i=n.fs.resolvePath(n.cwd,r),a;try{a=new Uint8Array(await n.fs.readFileBuffer(i))}catch{return l8(`cannot open ${r}: No such file`)}let o=sJ(i);if(!o.startsWith(`audio/`)&&!o.startsWith(`video/`))return l8(`${r} is not an audio file`);let s=new ArrayBuffer(a.byteLength);new Uint8Array(s).set(a);try{return{stdout:(e.local?await(await import(`./hear-DD8kXpu3.js`)).hearTranscribe(s,t.lang):await e.panelRpc.call(`hear-transcribe`,{bytes:s,lang:t.lang},{timeoutMs:6e5})).transcript+`
4240
- `,stderr:``,exitCode:0}}catch(e){return l8(`transcription failed: ${u8(e)}`)}}async function Gie(e,t){let n=Math.round(t.timeoutSeconds*1e3);try{let r={lang:t.lang,timeoutMs:n,deviceId:t.deviceId,engine:t.engine},i=e.local?await(await import(`./hear-DD8kXpu3.js`)).hearCapture(r):await e.panelRpc.call(`hear-capture`,r,{timeoutMs:n+3e4});return i.transcript?{stdout:i.transcript+`
4239
+ `:``)}async function Hie(e){try{return e.local?navigator.mediaDevices?.enumerateDevices?{stdout:d8((await navigator.mediaDevices.enumerateDevices()).filter(e=>e.kind===`audioinput`)),stderr:``,exitCode:0}:l8(`device enumeration unavailable`):{stdout:d8((await e.panelRpc.call(`enumerate-media-devices`,void 0)).audioinputs),stderr:``,exitCode:0}}catch(e){return l8(u8(e))}}async function Uie(e,t){try{if(e.local){let{hearStatus:e,hearWarmup:n}=await import(`./hear-DLqP08Yk.js`);return{stdout:c8(t?n():e()),stderr:``,exitCode:0}}return{stdout:c8(t?await e.panelRpc.call(`hear-warmup`,void 0):await e.panelRpc.call(`hear-status`,void 0)),stderr:``,exitCode:0}}catch(e){return l8(u8(e))}}async function Wie(e,t,n){let r=t.inputFile,i=n.fs.resolvePath(n.cwd,r),a;try{a=new Uint8Array(await n.fs.readFileBuffer(i))}catch{return l8(`cannot open ${r}: No such file`)}let o=sJ(i);if(!o.startsWith(`audio/`)&&!o.startsWith(`video/`))return l8(`${r} is not an audio file`);let s=new ArrayBuffer(a.byteLength);new Uint8Array(s).set(a);try{return{stdout:(e.local?await(await import(`./hear-DLqP08Yk.js`)).hearTranscribe(s,t.lang):await e.panelRpc.call(`hear-transcribe`,{bytes:s,lang:t.lang},{timeoutMs:6e5})).transcript+`
4240
+ `,stderr:``,exitCode:0}}catch(e){return l8(`transcription failed: ${u8(e)}`)}}async function Gie(e,t){let n=Math.round(t.timeoutSeconds*1e3);try{let r={lang:t.lang,timeoutMs:n,deviceId:t.deviceId,engine:t.engine},i=e.local?await(await import(`./hear-DLqP08Yk.js`)).hearCapture(r):await e.panelRpc.call(`hear-capture`,r,{timeoutMs:n+3e4});return i.transcript?{stdout:i.transcript+`
4241
4241
  `,stderr:``,exitCode:0}:{stdout:``,stderr:`hear: no speech detected
4242
4242
  `,exitCode:1}}catch(e){return l8(u8(e))}}function Kie(){return tN(`hear`,async(e,t)=>{if(e.includes(`--help`)||e.includes(`-h`))return Rie();let n=Vie(e);if(`exitCode`in n)return n;let r={local:E(),panelRpc:T()};return!r.local&&!r.panelRpc?l8(`speech recognition unavailable in this environment`):n.devices?Hie(r):n.status||n.warmup?Uie(r,n.warmup):n.inputFile?Wie(r,n,t):Gie(r,n)})}const f8=[`playwright-cli`,`playwright`,`puppeteer`],p8=new WeakMap;function qie(e,t){let n=p8.get(e);n||(n=new WeakMap,p8.set(e,n));let r=n.get(t);return r||(r={snapshots:new Map,appTabId:null,harRecorder:null,sessionDirsCreated:!1,teleportWatchers:new Map},n.set(t,r)),r}function m8(e){let t=e.match(/^(f[0-9]+)(e[0-9]+)$/);return t?{framePrefix:t[1],isIframe:!0}:{framePrefix:``,isIframe:!1}}function Jie(e){let t=atob(e),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return n}const Yie=new Set([`click`,`dblclick`,`fill`,`type`,`press`,`goto`,`navigate`,`select`,`check`,`uncheck`,`drag`,`dialog-accept`,`dialog-dismiss`]);function h8(e){return e.toISOString().replace(/:/g,`-`)}function Xie(e){return e instanceof m||typeof e==`object`&&e&&`code`in e?e.code===`EEXIST`:e instanceof Error&&e.message.includes(`EEXIST`)}const g8=`function(text) {
4243
4243
  const el = this;
@@ -4696,20 +4696,20 @@ authorization-code flow, stores the access token, and retries.
4696
4696
  On success, the server is persisted to /workspace/.mcp/servers.json and
4697
4697
  an alias shim is written to /workspace/.mcp/aliases/<name>.jsh so the
4698
4698
  short name resolves on the PATH.
4699
- `);let n=e.filter(e=>!e.startsWith(`--`));if(n.length<2)return k5(`mcp add: expected <url> <name>`);let[r,i]=n;if(!/^https?:\/\//i.test(r))return k5(`mcp add: invalid URL "${r}" (must start with http:// or https://)`);if(!/^[A-Za-z][A-Za-z0-9_-]*$/.test(i))return k5(`mcp add: invalid name "${i}" (letters, digits, _ and - only; must start with a letter)`);let{getServer:a,setServer:o}=await import(`./store-CvNWCf_K.js`).then(e=>e.r);if(await a(i,t.fs))return k5(`mcp add: a server named "${i}" already exists`);let{McpClient:s,McpAuthRequiredError:c}=await Promise.resolve().then(()=>b5),l=new s({url:r,fetchImpl:t.fetchImpl}),u;try{await l.initialize()}catch(e){if(!(e instanceof c))throw e;u=await cse(r,i,e.resourceMetadataUrl,t),l=new s({url:r,fetchImpl:t.fetchImpl,getAuthHeader:()=>N5(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 Ese(i,t);let m=await I5(i,f,t);if(u){let{registerMcpProvider:e}=await import(`./provider-C-QlPwy9.js`);e({name:i,serverUrl:r,auth:u})}return O5([`Added MCP server "${i}" → ${r}`,` tools: ${d.length}, apps: ${f.length} (${m} sprinkle${m===1?``:`s`})`,` alias: ${D5}/${i}.jsh`,u?` auth: oauth (provider mcp:${i})`:` auth: none`].join(`
4699
+ `);let n=e.filter(e=>!e.startsWith(`--`));if(n.length<2)return k5(`mcp add: expected <url> <name>`);let[r,i]=n;if(!/^https?:\/\//i.test(r))return k5(`mcp add: invalid URL "${r}" (must start with http:// or https://)`);if(!/^[A-Za-z][A-Za-z0-9_-]*$/.test(i))return k5(`mcp add: invalid name "${i}" (letters, digits, _ and - only; must start with a letter)`);let{getServer:a,setServer:o}=await import(`./store-2Y1B359N.js`).then(e=>e.r);if(await a(i,t.fs))return k5(`mcp add: a server named "${i}" already exists`);let{McpClient:s,McpAuthRequiredError:c}=await Promise.resolve().then(()=>b5),l=new s({url:r,fetchImpl:t.fetchImpl}),u;try{await l.initialize()}catch(e){if(!(e instanceof c))throw e;u=await cse(r,i,e.resourceMetadataUrl,t),l=new s({url:r,fetchImpl:t.fetchImpl,getAuthHeader:()=>N5(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 Ese(i,t);let m=await I5(i,f,t);if(u){let{registerMcpProvider:e}=await import(`./provider-BRZxUH2o.js`);e({name:i,serverUrl:r,auth:u})}return O5([`Added MCP server "${i}" → ${r}`,` tools: ${d.length}, apps: ${f.length} (${m} sprinkle${m===1?``:`s`})`,` alias: ${D5}/${i}.jsh`,u?` auth: oauth (provider mcp:${i})`:` auth: none`].join(`
4700
4700
  `)+`
4701
4701
  `)}async function cse(e,t,n,r){let{discoverAuth:i,dynamicRegister:a,runAuthFlow:o}=await import(`./oauth-Czw-MuuR.js`),{saveOAuthAccount:s}=await Promise.resolve().then(()=>IL),c=await wse(r.oauthFetchImpl),l=r.oauthLauncher??await P5(),u=await i(e,n,c);E5.debug(`MCP OAuth discovery succeeded`,{name:t,serverUrl:e,discoveryPath:u.discoveryPath,issuer:u.issuer});let d=await Cse(),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 lse(e,t){if(e.includes(`--help`)||e.includes(`-h`))return O5(`usage: mcp list
4702
- `);let{ensureAllMcpProvidersRegistered:n}=await import(`./provider-C-QlPwy9.js`);await n();let{listServers:r}=await import(`./store-CvNWCf_K.js`).then(e=>e.r),i=await r(t.fs),a=Object.keys(i).sort();if(a.length===0)return O5("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 O5(A5(o))}function A5(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(`
4702
+ `);let{ensureAllMcpProvidersRegistered:n}=await import(`./provider-BRZxUH2o.js`);await n();let{listServers:r}=await import(`./store-2Y1B359N.js`).then(e=>e.r),i=await r(t.fs),a=Object.keys(i).sort();if(a.length===0)return O5("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 O5(A5(o))}function A5(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(`
4703
4703
  `)+`
4704
4704
  `}async function use(e,t){if(e[0]===`--help`||e[0]===`-h`)return O5(`usage: mcp search <query>
4705
4705
 
4706
4706
  Case-insensitive substring search across the cached tools of every
4707
4707
  registered MCP server. Matches tool name OR description and prints a
4708
4708
  table of (server, tool, description, match-field) rows.
4709
- `);if(e.length===0)return k5(`mcp search: expected <query>`);let n=e[0],r=n.toLowerCase(),{ensureAllMcpProvidersRegistered:i}=await import(`./provider-C-QlPwy9.js`);await i();let{listServers:a}=await import(`./store-CvNWCf_K.js`).then(e=>e.r),o=await a(t.fs),s=Object.keys(o).sort();if(s.length===0)return O5("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 O5(`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,dse(e.description),e.match]);return O5(A5(l))}function dse(e){if(!e)return``;let t=e.replace(/\s+/g,` `).trim();return t.length<=60?t:t.slice(0,59)+`…`}async function fse(e,t){if(e.length===0||e[0]===`--help`||e[0]===`-h`)return e.length===0?k5(`mcp delete: expected <name>`):O5(`usage: mcp delete <name>
4710
- `);let n=e[0],{ensureMcpProviderRegistered:r,removeMcpProvider:i}=await import(`./provider-C-QlPwy9.js`);await r(n);let{deleteServer:a}=await import(`./store-CvNWCf_K.js`).then(e=>e.r),o=await a(n,t.fs);await Dse(n,t),await Ose(n,t);let s=`mcp:${n}`,c=!1;try{let{removeAccount:e,getAccounts:t}=await Promise.resolve().then(()=>IL);t().some(e=>e.providerId===s)&&(await e(s),c=!0)}catch(e){E5.warn(`mcp delete: OAuth removal failed`,{providerId:s,error:e instanceof Error?e.message:String(e)})}let l=i(n);return!o&&!c&&!l?k5(`mcp delete: no server, alias, or account found for "${n}"`):O5([`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(`
4709
+ `);if(e.length===0)return k5(`mcp search: expected <query>`);let n=e[0],r=n.toLowerCase(),{ensureAllMcpProvidersRegistered:i}=await import(`./provider-BRZxUH2o.js`);await i();let{listServers:a}=await import(`./store-2Y1B359N.js`).then(e=>e.r),o=await a(t.fs),s=Object.keys(o).sort();if(s.length===0)return O5("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 O5(`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,dse(e.description),e.match]);return O5(A5(l))}function dse(e){if(!e)return``;let t=e.replace(/\s+/g,` `).trim();return t.length<=60?t:t.slice(0,59)+`…`}async function fse(e,t){if(e.length===0||e[0]===`--help`||e[0]===`-h`)return e.length===0?k5(`mcp delete: expected <name>`):O5(`usage: mcp delete <name>
4710
+ `);let n=e[0],{ensureMcpProviderRegistered:r,removeMcpProvider:i}=await import(`./provider-BRZxUH2o.js`);await r(n);let{deleteServer:a}=await import(`./store-2Y1B359N.js`).then(e=>e.r),o=await a(n,t.fs);await Dse(n,t),await Ose(n,t);let s=`mcp:${n}`,c=!1;try{let{removeAccount:e,getAccounts:t}=await Promise.resolve().then(()=>IL);t().some(e=>e.providerId===s)&&(await e(s),c=!0)}catch(e){E5.warn(`mcp delete: OAuth removal failed`,{providerId:s,error:e instanceof Error?e.message:String(e)})}let l=i(n);return!o&&!c&&!l?k5(`mcp delete: no server, alias, or account found for "${n}"`):O5([`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(`
4711
4711
  `)+`
4712
- `)}async function pse(e,t){if(e.length===0||e[0]===`--help`||e[0]===`-h`)return e.length===0?k5(`mcp invoke: expected <name>`):O5(hse());let n=e[0],r=e.slice(1),{ensureMcpProviderRegistered:i}=await import(`./provider-C-QlPwy9.js`);await i(n);let{getServer:a}=await import(`./store-CvNWCf_K.js`).then(e=>e.r),o=await a(n,t.fs);if(!o)return k5(`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 O5(gse(n,o,s));let c=r[0],l=s.find(e=>e.name===c);if(!l)return k5(`mcp invoke: unknown tool "${c}" on "${n}" (run \`${n}\` to list tools)`);let{timeoutMs:u,remaining:d,warnings:f}=mse(r.slice(1));if(d.includes(`--help`)||d.includes(`-h`))return O5(_se(n,l));let p=vse(d,l.inputSchema);if(!p.ok)return k5(`mcp invoke: ${p.error}`);let{McpClient:m}=await Promise.resolve().then(()=>b5),h=new m({url:o.url,fetchImpl:t.fetchImpl,headers:o.headers,getAuthHeader:o.auth?()=>N5(n):void 0,...u===void 0?{}:{timeoutMs:u}});await h.initialize();let g=bse(await h.toolsCall(c,p.value));return f.length>0&&(g.stderr=f.map(e=>`${e}\n`).join(``)+g.stderr),g}function mse(e){let t=[],n=[],r,i=0;for(;i<e.length;){let a=e[i];if(a.startsWith(`--timeout=`)){let e=j5(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=j5(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 j5(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 hse(){return`usage: mcp invoke <name> [tool] [--timeout <seconds>] [--flag value …]
4712
+ `)}async function pse(e,t){if(e.length===0||e[0]===`--help`||e[0]===`-h`)return e.length===0?k5(`mcp invoke: expected <name>`):O5(hse());let n=e[0],r=e.slice(1),{ensureMcpProviderRegistered:i}=await import(`./provider-BRZxUH2o.js`);await i(n);let{getServer:a}=await import(`./store-2Y1B359N.js`).then(e=>e.r),o=await a(n,t.fs);if(!o)return k5(`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 O5(gse(n,o,s));let c=r[0],l=s.find(e=>e.name===c);if(!l)return k5(`mcp invoke: unknown tool "${c}" on "${n}" (run \`${n}\` to list tools)`);let{timeoutMs:u,remaining:d,warnings:f}=mse(r.slice(1));if(d.includes(`--help`)||d.includes(`-h`))return O5(_se(n,l));let p=vse(d,l.inputSchema);if(!p.ok)return k5(`mcp invoke: ${p.error}`);let{McpClient:m}=await Promise.resolve().then(()=>b5),h=new m({url:o.url,fetchImpl:t.fetchImpl,headers:o.headers,getAuthHeader:o.auth?()=>N5(n):void 0,...u===void 0?{}:{timeoutMs:u}});await h.initialize();let g=bse(await h.toolsCall(c,p.value));return f.length>0&&(g.stderr=f.map(e=>`${e}\n`).join(``)+g.stderr),g}function mse(e){let t=[],n=[],r,i=0;for(;i<e.length;){let a=e[i];if(a.startsWith(`--timeout=`)){let e=j5(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=j5(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 j5(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 hse(){return`usage: mcp invoke <name> [tool] [--timeout <seconds>] [--flag value …]
4713
4713
 
4714
4714
  mcp invoke <name> List tools on <name>.
4715
4715
  mcp invoke <name> <tool> --help Show flags for <tool>.
@@ -4739,7 +4739,7 @@ Arguments are coerced according to the tool's JSON Schema:
4739
4739
 
4740
4740
  Re-fetches the tool catalog and \`apps/list\` for <name>. Does NOT refresh
4741
4741
  OAuth tokens — for OAuth token refresh use \`mcp auth <name>\`.
4742
- `);let n=e[0],{ensureMcpProviderRegistered:r}=await import(`./provider-C-QlPwy9.js`);await r(n);let{getServer:i,setServer:a}=await import(`./store-CvNWCf_K.js`).then(e=>e.r),o=await i(n,t.fs);if(!o)return k5(`mcp refresh: unknown server "${n}"`);let{McpClient:s,McpAuthRequiredError:c}=await Promise.resolve().then(()=>b5),l=new s({url:o.url,fetchImpl:t.fetchImpl,headers:o.headers,getAuthHeader:o.auth?()=>N5(n):void 0});try{await l.initialize()}catch(e){if(e instanceof c)return k5(`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 I5(n,d,t);return O5(`Refreshed "${n}" — tools: ${u.length}, apps: ${d.length} (${f} sprinkle${f===1?``:`s`})\n`)}async function Sse(e,t){if(e.includes(`--help`)||e.includes(`-h`))return O5(`usage: mcp auth <name> [--silent | --interactive]
4742
+ `);let n=e[0],{ensureMcpProviderRegistered:r}=await import(`./provider-BRZxUH2o.js`);await r(n);let{getServer:i,setServer:a}=await import(`./store-2Y1B359N.js`).then(e=>e.r),o=await i(n,t.fs);if(!o)return k5(`mcp refresh: unknown server "${n}"`);let{McpClient:s,McpAuthRequiredError:c}=await Promise.resolve().then(()=>b5),l=new s({url:o.url,fetchImpl:t.fetchImpl,headers:o.headers,getAuthHeader:o.auth?()=>N5(n):void 0});try{await l.initialize()}catch(e){if(e instanceof c)return k5(`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 I5(n,d,t);return O5(`Refreshed "${n}" — tools: ${u.length}, apps: ${d.length} (${f} sprinkle${f===1?``:`s`})\n`)}async function Sse(e,t){if(e.includes(`--help`)||e.includes(`-h`))return O5(`usage: mcp auth <name> [--silent | --interactive]
4743
4743
 
4744
4744
  Re-authenticate an existing MCP server. By default, attempts a silent
4745
4745
  token renewal using the persisted refresh_token; if that returns no
@@ -4751,7 +4751,7 @@ Options:
4751
4751
  -i, --interactive Skip silent renewal and open the OAuth popup
4752
4752
  directly. Use after revoking a refresh token or
4753
4753
  when the AS no longer accepts the cached one.
4754
- `);let n=e.filter(e=>!e.startsWith(`-`));if(n.length===0)return k5(`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 k5(`mcp auth: --silent and --interactive are mutually exclusive`);let{ensureMcpProviderRegistered:o}=await import(`./provider-C-QlPwy9.js`),s=await o(r),{getServer:c}=await import(`./store-CvNWCf_K.js`).then(e=>e.r),l=await c(r,t.fs);if(!l)return k5(`mcp auth: unknown server "${r}" (run \`mcp list\` to see configured servers)`);if(!l.auth)return k5(`mcp auth: server "${r}" does not use OAuth`);if(!s)return k5(`mcp auth: failed to register provider for "${r}"`);let u=`mcp:${r}`,{getRegisteredProviderConfig:d}=await import(`./providers-wvXqnMMs.js`).then(e=>e.r),f=d(u);if(!f)return k5(`mcp auth: provider "${u}" is not registered`);if(a)return await M5(r,f,t);if(!f.onSilentRenew)return i?k5(`mcp auth: provider "${u}" does not support silent renewal; retry without --silent`):await M5(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 k5(`mcp auth: silent renewal for "${r}" failed (${t}); retry without --silent to run the interactive flow`);E5.debug(`mcp auth: silent renewal threw, falling back to interactive`,{name:r,error:t})}return p?O5(`Re-authenticated "${r}" via silent renewal (provider ${u})\n`):i?k5(`mcp auth: silent renewal for "${r}" returned no token; retry without --silent to run the interactive flow`):await M5(r,f,t)}async function M5(e,t,n){if(!t.onOAuthLogin)return k5(`mcp auth: provider "${t.id}" does not support interactive OAuth login`);let r=n.oauthLauncher??await P5(),i=!1;return await t.onOAuthLogin(r,()=>{i=!0}),i?O5(`Re-authenticated "${e}" via interactive login (provider ${t.id})\n`):k5(`mcp auth: interactive login for "${e}" did not complete`)}async function N5(e){let t=`mcp:${e}`,{getOAuthAccountInfo:n}=await Promise.resolve().then(()=>IL),r=n(t);if(!r)return null;if(r.expired){try{let{getRegisteredProviderConfig:e}=await import(`./providers-wvXqnMMs.js`).then(e=>e.r),n=await e(t)?.onSilentRenew?.();if(n)return`Bearer ${n}`}catch(e){E5.debug(`silent renewal threw`,{providerId:t,error:e instanceof Error?e.message:String(e)})}return null}return`Bearer ${r.token}`}async function P5(){let{createOAuthLauncher:e}=await import(`./oauth-service-DQVciyk_.js`);return e()}async function Cse(){let e=typeof chrome<`u`?chrome:void 0;if(e?.runtime?.id)return e.identity?.getRedirectURL?.(`mcp-callback`)??`https://${e.runtime.id}.chromiumapp.org/mcp-callback`;let{getOAuthPageOrigin:t}=await import(`./oauth-service-DQVciyk_.js`),{origin:n}=await t();return`${n}/auth/callback`}async function wse(e){if(e)return e;let{createProxiedFetch:t}=await Promise.resolve().then(()=>vq),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 F5(e){if(e)return e;let{VirtualFS:t}=await import(`./fs-BWEPe_lI.js`).then(e=>e.t),{GLOBAL_FS_DB_NAME:n}=await Promise.resolve().then(()=>KK);return await t.create({dbName:n})}function Tse(e){return`// MCP alias for "${e}" — forwards args to \`mcp invoke ${e}\`.
4754
+ `);let n=e.filter(e=>!e.startsWith(`-`));if(n.length===0)return k5(`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 k5(`mcp auth: --silent and --interactive are mutually exclusive`);let{ensureMcpProviderRegistered:o}=await import(`./provider-BRZxUH2o.js`),s=await o(r),{getServer:c}=await import(`./store-2Y1B359N.js`).then(e=>e.r),l=await c(r,t.fs);if(!l)return k5(`mcp auth: unknown server "${r}" (run \`mcp list\` to see configured servers)`);if(!l.auth)return k5(`mcp auth: server "${r}" does not use OAuth`);if(!s)return k5(`mcp auth: failed to register provider for "${r}"`);let u=`mcp:${r}`,{getRegisteredProviderConfig:d}=await import(`./providers-CcDiXx1v.js`).then(e=>e.r),f=d(u);if(!f)return k5(`mcp auth: provider "${u}" is not registered`);if(a)return await M5(r,f,t);if(!f.onSilentRenew)return i?k5(`mcp auth: provider "${u}" does not support silent renewal; retry without --silent`):await M5(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 k5(`mcp auth: silent renewal for "${r}" failed (${t}); retry without --silent to run the interactive flow`);E5.debug(`mcp auth: silent renewal threw, falling back to interactive`,{name:r,error:t})}return p?O5(`Re-authenticated "${r}" via silent renewal (provider ${u})\n`):i?k5(`mcp auth: silent renewal for "${r}" returned no token; retry without --silent to run the interactive flow`):await M5(r,f,t)}async function M5(e,t,n){if(!t.onOAuthLogin)return k5(`mcp auth: provider "${t.id}" does not support interactive OAuth login`);let r=n.oauthLauncher??await P5(),i=!1;return await t.onOAuthLogin(r,()=>{i=!0}),i?O5(`Re-authenticated "${e}" via interactive login (provider ${t.id})\n`):k5(`mcp auth: interactive login for "${e}" did not complete`)}async function N5(e){let t=`mcp:${e}`,{getOAuthAccountInfo:n}=await Promise.resolve().then(()=>IL),r=n(t);if(!r)return null;if(r.expired){try{let{getRegisteredProviderConfig:e}=await import(`./providers-CcDiXx1v.js`).then(e=>e.r),n=await e(t)?.onSilentRenew?.();if(n)return`Bearer ${n}`}catch(e){E5.debug(`silent renewal threw`,{providerId:t,error:e instanceof Error?e.message:String(e)})}return null}return`Bearer ${r.token}`}async function P5(){let{createOAuthLauncher:e}=await import(`./oauth-service-DQVciyk_.js`);return e()}async function Cse(){let e=typeof chrome<`u`?chrome:void 0;if(e?.runtime?.id)return e.identity?.getRedirectURL?.(`mcp-callback`)??`https://${e.runtime.id}.chromiumapp.org/mcp-callback`;let{getOAuthPageOrigin:t}=await import(`./oauth-service-DQVciyk_.js`),{origin:n}=await t();return`${n}/auth/callback`}async function wse(e){if(e)return e;let{createProxiedFetch:t}=await Promise.resolve().then(()=>vq),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 F5(e){if(e)return e;let{VirtualFS:t}=await import(`./fs-ry06ziaM.js`).then(e=>e.t),{GLOBAL_FS_DB_NAME:n}=await Promise.resolve().then(()=>KK);return await t.create({dbName:n})}function Tse(e){return`// MCP alias for "${e}" — forwards args to \`mcp invoke ${e}\`.
4755
4755
  // Auto-generated by \`mcp add ${e}\`; do not edit by hand.
4756
4756
  const argv = Array.isArray(process.argv) ? process.argv.slice(2) : [];
4757
4757
  const escape = (s) => {
@@ -4765,7 +4765,7 @@ const r = await exec(cmd);
4765
4765
  if (r.stdout) process.stdout.write(r.stdout);
4766
4766
  if (r.stderr) process.stderr.write(r.stderr);
4767
4767
  process.exit(r.exitCode || 0);
4768
- `}async function Ese(e,t){let n=await F5(t.fs);await n.mkdir(D5,{recursive:!0}),await n.writeFile(`${D5}/${e}.jsh`,Tse(e)),t.scriptCatalog?.invalidateJsh()}async function Dse(e,t){let n=await F5(t.fs),r=`${D5}/${e}.jsh`;try{await n.exists(r)&&await n.rm(r)}catch(e){E5.debug(`alias removal failed`,{path:r,error:e instanceof Error?e.message:String(e)})}t.scriptCatalog?.invalidateJsh()}async function Ose(e,t){let{removeAppSprinkles:n}=await import(`./apps-DUeem2tA.js`);await n(e,t.fs)}async function I5(e,t,n){try{let{materializeAppSprinkles:r}=await import(`./apps-DUeem2tA.js`);return(await r(e,t,n.fs)).length}catch(t){return E5.warn(`mcp: failed to materialize app sprinkles`,{name:e,error:t instanceof Error?t.message:String(t)}),0}}const L5=`/.cache/artificial-analysis.json`;async function kse(e,t=!1){if(e&&!t)try{let t=await e.readFile(L5),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=kq(),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(L5,JSON.stringify(t))}catch{}}return s}function R5(e){return e.toLowerCase().replace(/\./g,`-`).replace(/-\d{8}$/,``).replace(/-\d{4}$/,``)}function Ase(e,t){let n=e.toLowerCase(),r=t.find(e=>e.slug===n);if(r)return r;let i=R5(e),a=t.find(e=>R5(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 jse(){return`models - list available LLM models
4768
+ `}async function Ese(e,t){let n=await F5(t.fs);await n.mkdir(D5,{recursive:!0}),await n.writeFile(`${D5}/${e}.jsh`,Tse(e)),t.scriptCatalog?.invalidateJsh()}async function Dse(e,t){let n=await F5(t.fs),r=`${D5}/${e}.jsh`;try{await n.exists(r)&&await n.rm(r)}catch(e){E5.debug(`alias removal failed`,{path:r,error:e instanceof Error?e.message:String(e)})}t.scriptCatalog?.invalidateJsh()}async function Ose(e,t){let{removeAppSprinkles:n}=await import(`./apps-Dh-H9LYE.js`);await n(e,t.fs)}async function I5(e,t,n){try{let{materializeAppSprinkles:r}=await import(`./apps-Dh-H9LYE.js`);return(await r(e,t,n.fs)).length}catch(t){return E5.warn(`mcp: failed to materialize app sprinkles`,{name:e,error:t instanceof Error?t.message:String(t)}),0}}const L5=`/.cache/artificial-analysis.json`;async function kse(e,t=!1){if(e&&!t)try{let t=await e.readFile(L5),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=kq(),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(L5,JSON.stringify(t))}catch{}}return s}function R5(e){return e.toLowerCase().replace(/\./g,`-`).replace(/-\d{8}$/,``).replace(/-\d{4}$/,``)}function Ase(e,t){let n=e.toLowerCase(),r=t.find(e=>e.slug===n);if(r)return r;let i=R5(e),a=t.find(e=>R5(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 jse(){return`models - list available LLM models
4769
4769
 
4770
4770
  Usage: models [options]
4771
4771
 
@@ -4878,11 +4878,11 @@ Examples:
4878
4878
  --authorize-url 'https://auth.x.ai/oauth2/auth?...' \\
4879
4879
  --redirect-pattern 'http://127.0.0.1:56121/*'
4880
4880
  curl -H "Authorization: Bearer $(oauth-token github)" https://api.github.com/user
4881
- `}function Jse(){return tN(`oauth-token`,async(e,t)=>{let{getOAuthAccountInfo:n,getSelectedProvider:r,getAccounts:i}=await Promise.resolve().then(()=>IL),{getRegisteredProviderConfig:a,getRegisteredProviderIds:o}=await import(`./providers-wvXqnMMs.js`).then(e=>e.r);if(e.includes(`--help`)||e.includes(`-h`))return{stdout:qse(),stderr:``,exitCode:0};if(e.includes(`--list`))return Zse(i,o,a,n);if(e.includes(`--renew`))return Yse(e);if(e.includes(`--from-file`)||e.includes(`--intercept`))return Xse(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
4881
+ `}function Jse(){return tN(`oauth-token`,async(e,t)=>{let{getOAuthAccountInfo:n,getSelectedProvider:r,getAccounts:i}=await Promise.resolve().then(()=>IL),{getRegisteredProviderConfig:a,getRegisteredProviderIds:o}=await import(`./providers-CcDiXx1v.js`).then(e=>e.r);if(e.includes(`--help`)||e.includes(`-h`))return{stdout:qse(),stderr:``,exitCode:0};if(e.includes(`--list`))return Zse(i,o,a,n);if(e.includes(`--renew`))return Yse(e);if(e.includes(`--from-file`)||e.includes(`--intercept`))return Xse(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
4882
4882
  `,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
4883
4883
  `,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
4884
4884
  `,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-DQVciyk_.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-DQVciyk_.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
4885
- `,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 Yse(e){let{getSelectedProvider:t,getOAuthAccountInfo:n}=await Promise.resolve().then(()=>IL),{getRegisteredProviderConfig:r,getRegisteredProviderIds:i}=await import(`./providers-wvXqnMMs.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 U5(`oauth-token --renew: no provider supports silent renewal`);let o=r(a);if(!o)return U5(`oauth-token --renew: unknown provider "${a}"`);if(!o.onSilentRenew)return U5(`oauth-token --renew: provider "${a}" has no onSilentRenew hook`);let s=n(a),c=s?.token,l=[`oauth-token --renew ${a}`];l.push(` before: ${V5(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: ${V5(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(`
4885
+ `,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 Yse(e){let{getSelectedProvider:t,getOAuthAccountInfo:n}=await Promise.resolve().then(()=>IL),{getRegisteredProviderConfig:r,getRegisteredProviderIds:i}=await import(`./providers-CcDiXx1v.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 U5(`oauth-token --renew: no provider supports silent renewal`);let o=r(a);if(!o)return U5(`oauth-token --renew: unknown provider "${a}"`);if(!o.onSilentRenew)return U5(`oauth-token --renew: provider "${a}" has no onSilentRenew hook`);let s=n(a),c=s?.token,l=[`oauth-token --renew ${a}`];l.push(` before: ${V5(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: ${V5(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(`
4886
4886
  `)+`
4887
4887
  `,stderr:``,exitCode:+!u}}function V5(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 Xse(e,t){let{parseInterceptOAuthConfig:n}=await import(`./intercepted-oauth-tLpKagkf.js`).then(e=>e.n),{createInterceptingOAuthLauncherForCurrentRuntime:r}=await import(`./oauth-service-DQVciyk_.js`),i,a=e.indexOf(`--from-file`);if(a>=0){let n=e[a+1];if(!n)return U5(`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 U5(`oauth-token: failed to read ${n}: ${e instanceof Error?e.message:String(e)}`)}}else{let t=H5(e,`--authorize-url`),n=H5(e,`--redirect-pattern`);if(!t)return U5(`oauth-token: --authorize-url is required`);if(!n)return U5(`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 U5(`oauth-token: --rewrite requires a value`);let i=n.split(`=`);if(i.length<3)return U5(`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 U5(`oauth-token: invalid intercept config: ${o.error}`);let s=await r();if(!s)return U5(`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}:U5(`oauth-token: intercept timed out or was cancelled`)}function H5(e,t){let n=e.indexOf(t);if(n<0)return;let r=e[n+1];if(!(!r||r.startsWith(`--`)))return r}function U5(e){return{stdout:``,stderr:`${e}\n`,exitCode:1}}function Zse(e,t,n,r){let i=t().filter(e=>n(e)?.isOAuth);if(i.length===0)return{stdout:`No OAuth providers configured.
4888
4888
  `,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(`
@@ -4913,7 +4913,7 @@ Examples:
4913
4913
  `,exitCode:1};let r;try{r=await t.fs.stat(n)}catch{return{stdout:``,stderr:`open: no such file: ${e}\n`,exitCode:1}}if(!r.isFile)return{stdout:``,stderr:`open: not a file: ${e}\n`,exitCode:1};let i;try{i=await t.fs.readFileBuffer(n)}catch{return{stdout:``,stderr:`open: failed to read: ${e}\n`,exitCode:1}}let a=new Uint8Array(i.byteLength);a.set(i);let o=new Blob([a.buffer],{type:sJ(n)}),s=URL.createObjectURL(o),l=document.createElement(`a`);l.href=s,l.download=eJ(n)||`download`,l.style.display=`none`,document.body.appendChild(l),l.click(),document.body.removeChild(l),setTimeout(()=>URL.revokeObjectURL(s),0),f.push(`downloaded ${n}`)}else{if(!u)return{stdout:``,stderr:`open: browser APIs are unavailable in this environment
4914
4914
  `,exitCode:1};let e=cJ(n);try{await d(e)}catch(e){return{stdout:``,stderr:`${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}f.push(`opened ${n} → ${e}`)}}return{stdout:f.join(`
4915
4915
  `)+`
4916
- `,stderr:``,exitCode:0}})}let q5=null,J5=null;async function Y5(){return q5||=import(`./es-B9Xns6VP.js`),q5}async function cce(){return J5||=import(`./dist-CrC-F8vu.js`),J5}function lce(e){return e.endsWith(`right`)?{range:e.slice(0,-5),rotation:90}:e.endsWith(`left`)?{range:e.slice(0,-4),rotation:270}:e.endsWith(`down`)?{range:e.slice(0,-4),rotation:180}:{range:e}}function X5(e){let{range:t,rotation:n}=lce(e);if(/^\d+$/.test(t)){let e=parseInt(t,10);return{start:e,end:e,rotation:n}}let r=t.match(/^(\d+)-(\d+|end)$/);if(r)return{start:parseInt(r[1],10),end:r[2]===`end`?`end`:parseInt(r[2],10),rotation:n};throw Error(`Invalid page range: ${e}`)}function Z5(e,t){let n=e.start,r=e.end;if(n<1||n>t)throw Error(`Page ${n} out of range (1-${t})`);let i=r===`end`?t:r;if(i<1||i>t)throw Error(`Page ${i} out of range (1-${t})`);if(i<n)throw Error(`Invalid range: ${n}-${i}`);let a=[];for(let e=n;e<=i;e++)a.push(e);return a}function uce(){return{stdout:`usage: pdftk <input.pdf> <operation> [args...]
4916
+ `,stderr:``,exitCode:0}})}let q5=null,J5=null;async function Y5(){return q5||=import(`./es-t4MB1uY0.js`),q5}async function cce(){return J5||=import(`./dist-CrC-F8vu.js`),J5}function lce(e){return e.endsWith(`right`)?{range:e.slice(0,-5),rotation:90}:e.endsWith(`left`)?{range:e.slice(0,-4),rotation:270}:e.endsWith(`down`)?{range:e.slice(0,-4),rotation:180}:{range:e}}function X5(e){let{range:t,rotation:n}=lce(e);if(/^\d+$/.test(t)){let e=parseInt(t,10);return{start:e,end:e,rotation:n}}let r=t.match(/^(\d+)-(\d+|end)$/);if(r)return{start:parseInt(r[1],10),end:r[2]===`end`?`end`:parseInt(r[2],10),rotation:n};throw Error(`Invalid page range: ${e}`)}function Z5(e,t){let n=e.start,r=e.end;if(n<1||n>t)throw Error(`Page ${n} out of range (1-${t})`);let i=r===`end`?t:r;if(i<1||i>t)throw Error(`Page ${i} out of range (1-${t})`);if(i<n)throw Error(`Invalid range: ${n}-${i}`);let a=[];for(let e=n;e<=i;e++)a.push(e);return a}function uce(){return{stdout:`usage: pdftk <input.pdf> <operation> [args...]
4917
4917
 
4918
4918
  Operations:
4919
4919
  dump_data Print metadata (page count, title, author, etc.)
@@ -5016,11 +5016,11 @@ Examples:
5016
5016
  -r rate Speech rate (0.1 to 10, default 1)
5017
5017
  -l lang Language tag (required, BCP 47, e.g. en-US, de-DE, fr-FR)
5018
5018
  --list List available voices (kokoro voices first when ready)
5019
- `,stderr:``,exitCode:0}}function l7(e){return{stdout:``,stderr:`say: ${e}\n`,exitCode:1}}function u7(e){return e instanceof Error?e.message:String(e)}let d7=!1,f7=null;function p7(){return d7?Promise.resolve(speechSynthesis.getVoices()):(f7||=new Promise(e=>{let t=speechSynthesis.getVoices();if(t.length>0){d7=!0,e(t);return}let n=()=>{d7=!0,speechSynthesis.removeEventListener(`voiceschanged`,n),e(speechSynthesis.getVoices())};speechSynthesis.addEventListener(`voiceschanged`,n),setTimeout(()=>{speechSynthesis.removeEventListener(`voiceschanged`,n),d7=!0,e(speechSynthesis.getVoices())},1e3)}),f7)}const m7={"-v":`a voice name`,"-r":`a rate value`,"-l":`a language tag`};function Uce(e,t,n){switch(t){case`-v`:return e.voiceName=n,null;case`-l`:return e.lang=n,null;case`-r`:{let t=parseFloat(n);return Number.isNaN(t)||t<.1||t>10?`rate must be between 0.1 and 10`:(e.rate=t,null)}default:return`unknown option: ${t}`}}function Wce(e){let t={voiceName:null,rate:1,lang:null,text:``},n=[];for(let r=0;r<e.length;r++){let i=e[r];if(i in m7){let n=r+1<e.length&&!e[r+1].startsWith(`-`)?e[++r]:null;if(n==null)return l7(`${i} requires ${m7[i]}`);let a=Uce(t,i,n);if(a)return l7(a)}else if(i.startsWith(`-`)&&i!==`--list`)return l7(`unknown option: ${i}`);else i.startsWith(`-`)||n.push(i)}return t.text=n.join(` `),t}async function Gce(e){if(e.local){let{kokoroVoicesIfReady:e}=await import(`./speak-BfxsOvBC.js`),t=e().map(e=>`${e.id} (${e.lang}) [kokoro]`),n=await p7();return{stdout:[...t,...n.map(e=>`${e.name} (${e.lang})${e.default?` [default]`:``}`)].join(`
5019
+ `,stderr:``,exitCode:0}}function l7(e){return{stdout:``,stderr:`say: ${e}\n`,exitCode:1}}function u7(e){return e instanceof Error?e.message:String(e)}let d7=!1,f7=null;function p7(){return d7?Promise.resolve(speechSynthesis.getVoices()):(f7||=new Promise(e=>{let t=speechSynthesis.getVoices();if(t.length>0){d7=!0,e(t);return}let n=()=>{d7=!0,speechSynthesis.removeEventListener(`voiceschanged`,n),e(speechSynthesis.getVoices())};speechSynthesis.addEventListener(`voiceschanged`,n),setTimeout(()=>{speechSynthesis.removeEventListener(`voiceschanged`,n),d7=!0,e(speechSynthesis.getVoices())},1e3)}),f7)}const m7={"-v":`a voice name`,"-r":`a rate value`,"-l":`a language tag`};function Uce(e,t,n){switch(t){case`-v`:return e.voiceName=n,null;case`-l`:return e.lang=n,null;case`-r`:{let t=parseFloat(n);return Number.isNaN(t)||t<.1||t>10?`rate must be between 0.1 and 10`:(e.rate=t,null)}default:return`unknown option: ${t}`}}function Wce(e){let t={voiceName:null,rate:1,lang:null,text:``},n=[];for(let r=0;r<e.length;r++){let i=e[r];if(i in m7){let n=r+1<e.length&&!e[r+1].startsWith(`-`)?e[++r]:null;if(n==null)return l7(`${i} requires ${m7[i]}`);let a=Uce(t,i,n);if(a)return l7(a)}else if(i.startsWith(`-`)&&i!==`--list`)return l7(`unknown option: ${i}`);else i.startsWith(`-`)||n.push(i)}return t.text=n.join(` `),t}async function Gce(e){if(e.local){let{kokoroVoicesIfReady:e}=await import(`./speak-gvgsbAbr.js`),t=e().map(e=>`${e.id} (${e.lang}) [kokoro]`),n=await p7();return{stdout:[...t,...n.map(e=>`${e.name} (${e.lang})${e.default?` [default]`:``}`)].join(`
5020
5020
  `)+`
5021
5021
  `,stderr:``,exitCode:0}}try{return{stdout:(await e.panelRpc.call(`list-voices`,void 0)).voices.map(e=>`${e.name} (${e.lang})${e.default?` [default]`:``}`).join(`
5022
5022
  `)+`
5023
- `,stderr:``,exitCode:0}}catch(e){return l7(u7(e))}}async function Kce(e){if(!e.local)return(await e.panelRpc.call(`list-voices`,void 0)).voices;let{kokoroVoicesIfReady:t}=await import(`./speak-BfxsOvBC.js`),n=t().map(e=>({name:e.id})),r=(await p7()).map(e=>({name:e.name}));return[...n,...r]}async function qce(e,t){let n=(await Kce(e)).find(e=>e.name.toLowerCase().includes(t.toLowerCase()));return n?{resolved:n.name}:{error:l7(`voice "${t}" not found. Use --list to see available voices.`)}}async function Jce(e){try{let{speak:t}=await import(`./speak-BfxsOvBC.js`);return await t(e),{stdout:``,stderr:``,exitCode:0}}catch(e){return l7(`speech synthesis error: ${u7(e)}`)}}async function Yce(e,t){try{return await e.panelRpc.call(`speak-text`,t),{stdout:``,stderr:``,exitCode:0}}catch(e){return l7(u7(e))}}function Xce(){return tN(`say`,async e=>{if(e.includes(`--help`)||e.includes(`-h`))return c7();let t={local:typeof window<`u`&&typeof speechSynthesis<`u`,panelRpc:T()};if(!t.local&&!t.panelRpc)return l7(`Web Speech API unavailable in this environment`);if(e.includes(`--list`))return Gce(t);let n=Wce(e);if(`exitCode`in n)return n;if(!n.text)return c7();if(!n.lang)return l7(`-l language tag is required`);let r;if(n.voiceName){let{resolved:e,error:i}=await qce(t,n.voiceName);if(i)return i;r=e}let i={text:n.text,lang:n.lang,voice:r,rate:n.rate};return t.local?Jce(i):Yce(t,i)})}function Zce(){return{stdout:`screencapture - capture screen, window, or tab using browser screen sharing
5023
+ `,stderr:``,exitCode:0}}catch(e){return l7(u7(e))}}async function Kce(e){if(!e.local)return(await e.panelRpc.call(`list-voices`,void 0)).voices;let{kokoroVoicesIfReady:t}=await import(`./speak-gvgsbAbr.js`),n=t().map(e=>({name:e.id})),r=(await p7()).map(e=>({name:e.name}));return[...n,...r]}async function qce(e,t){let n=(await Kce(e)).find(e=>e.name.toLowerCase().includes(t.toLowerCase()));return n?{resolved:n.name}:{error:l7(`voice "${t}" not found. Use --list to see available voices.`)}}async function Jce(e){try{let{speak:t}=await import(`./speak-gvgsbAbr.js`);return await t(e),{stdout:``,stderr:``,exitCode:0}}catch(e){return l7(`speech synthesis error: ${u7(e)}`)}}async function Yce(e,t){try{return await e.panelRpc.call(`speak-text`,t),{stdout:``,stderr:``,exitCode:0}}catch(e){return l7(u7(e))}}function Xce(){return tN(`say`,async e=>{if(e.includes(`--help`)||e.includes(`-h`))return c7();let t={local:typeof window<`u`&&typeof speechSynthesis<`u`,panelRpc:T()};if(!t.local&&!t.panelRpc)return l7(`Web Speech API unavailable in this environment`);if(e.includes(`--list`))return Gce(t);let n=Wce(e);if(`exitCode`in n)return n;if(!n.text)return c7();if(!n.lang)return l7(`-l language tag is required`);let r;if(n.voiceName){let{resolved:e,error:i}=await qce(t,n.voiceName);if(i)return i;r=e}let i={text:n.text,lang:n.lang,voice:r,rate:n.rate};return t.local?Jce(i):Yce(t,i)})}function Zce(){return{stdout:`screencapture - capture screen, window, or tab using browser screen sharing
5024
5024
 
5025
5025
  Usage: screencapture [options] <output-file>
5026
5026
 
@@ -9817,4 +9817,4 @@ ${t}
9817
9817
  `;case`cmdline`:return`kernel-host\0`;case`cwd`:return`/
9818
9818
  `;case`stat`:return`1 (kernel-host) R 0 - 0 -
9819
9819
  `}}function rpe(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`;default:return e.cronName}}function ipe(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`}`;default:return e.cronId}}function ape(e,t){if(e.type===`sudo-request`){t.log.debug?.(`sudo-request lick: UI-chip-only path; orchestrator owns delivery`,{lickId:e.lickId});return}ope(e,t)}function ope(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=lt(e);if(r===null){n.debug?.(`dropping lick event with no renderable content`,{type:e.type});return}let i=rpe(e),a=ipe(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 spe(e,t,n,r){let i=new Xq,a=new Yfe(e,{...r,getBrowserAPI:()=>t});a.setProcessManager(i),globalThis.__slicc_pm=i,globalThis.__slicc_browser=t,await n.bind(a,t);let o=un(()=>n.emitTrayRuntimeStatus()),s=bt(()=>n.emitTrayRuntimeStatus());return await a.init(),await n.seedBuffersFromAgentState(),{processManager:i,orchestrator:a,unsubLeader:o,unsubFollower:s,sharedFs:a.getSharedFS()}}async function cpe(e,t,n){let{registerSessionCostsProvider:r}=await Promise.resolve().then(()=>vL);r(()=>e.getSessionCosts());let{getLickManager:i}=await Promise.resolve().then(()=>gz),a=i();await a.init(),e.setLickManager(a);let o=t.lickEventHandler??ape,s={orchestrator:e,lickManager:a,log:n};return a.setEventHandler(e=>o(e,s)),a}async function lpe(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 upe(e){let{orchestrator:t,processManager:n,lickManager:r,sharedFs:i}=e;jue({sharedFs:i,getConeJid:()=>t.getScoops().find(e=>e.isCone)?.jid,fireLick:e=>r.emitEvent(e),processManager:n,runRealm:(e,t,n)=>e$(e,t,n,void 0,{filename:t[1]}),makeRunId:()=>r9().slice(10,22),splitResult:(e,t)=>i9(e,t)})}async function dpe(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))+`
9820
- `,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 fpe(e,t){try{let{startLickWsBridge:t}=await import(`./lick-ws-bridge-C76WNbyz.js`);return t(e,{locationHref:self.location.href}).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 ppe(e,t,n){try{let n=new hr(e.getTransport(),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})});return n.start(),()=>n.stop()}catch(e){return n.warn(`Failed to start NavigationWatcher`,e),null}}function mpe(e,t,n){(async()=>{try{let{getAllMountEntries:r}=await import(`./mount-table-store-CQJEV6Ij.js`).then(e=>e.r),{recoverMounts:i}=await Promise.resolve().then(()=>Ze),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 hpe(e,t){(async()=>{try{let{detectUpgrade:t,recordVersionSeen:n}=await import(`./upgrade-detection-CWy_ieEK.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 gpe(e,t,n){try{let{BshWatchdog:n}=await import(`./bsh-watchdog-C9h2IaS0.js`),{ScriptCatalog:r}=await Promise.resolve().then(()=>j$),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}}}async function _pe(e){let{container:t,browser:n,bridge:r,callbacks:i,skipConeBootstrap:a=!1,isExtension:o=!1}=e,s=e.logger??console,{processManager:c,orchestrator:l,unsubLeader:u,unsubFollower:d,sharedFs:f}=await spe(t,n,r,i);if(f?Or(l,f,l.getSessionStore()):s.warn(`AgentBridge not published — orchestrator.getSharedFS() returned null`),f)try{await f.mountInternal(`/proc`,new Xfe(c))}catch(e){s.warn(`Failed to mount /proc`,e)}let p=await cpe(l,e,s);f&&upe({orchestrator:l,processManager:c,lickManager:p,sharedFs:f}),globalThis.__slicc_lickManager=p;let{wsBridge:m,wsRegistry:h}=await dpe({browser:n,lickManager:p,orchestrator:l,sharedFs:f,log:s});globalThis.__slicc_wsSubscribers=h;let g=null;o||(g=await fpe(p,s));let _=null;o||(_=ppe(n,p,s)),f&&mpe(f,p,s),a||await lpe(l),f&&hpe(p,s);let v=null,y=null;f&&({bshWatchdogStop:v,scriptCatalogDispose:y}=await gpe(f,n,s));let b=!1;return{orchestrator:l,browser:n,bridge:r,lickManager:p,sharedFs:f??null,processManager:c,async dispose(){b||(b=!0,await vpe({unsubLeader:u,unsubFollower:d,bshWatchdogStop:v,scriptCatalogDispose:y,lickWsBridgeStop:g,navigationWatcherStop:_,sharedFs:f,wsRegistry:h,wsBridge:m,processManager:c,lickManager:p,browser:n,log:s}))}}}async function vpe(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.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)}ype({processManager:i,lickManager:a,browser:o,wsRegistry:n})}function ype(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[e9]}const J9=`x-bypass-llm-proxy`;function bpe(e,t){return t?(n,r)=>{if(!xpe(n,t))return e(n,r);let i=new Headers(r?.headers);return i.has(J9)||i.set(J9,`1`),e(n,{...r,headers:i})}:e}function xpe(e,t){let n;n=typeof e==`string`?e:e instanceof URL?e.href:e.url;try{return new URL(n,t).origin===t}catch{return!0}}function Spe(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 Cpe=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(!wpe(e)||e.source!==`panel`)return;let t=e.payload;Epe(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);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?130: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,Tpe(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 wpe(e){return typeof e==`object`&&!!e&&`source`in e&&`payload`in e}function Tpe(e){switch(e){case`SIGINT`:return 130;case`SIGTERM`:return 143;case`SIGKILL`:return 137;case`SIGSTOP`:case`SIGCONT`:return 130}}function Epe(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 Dpe=class extends d9{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 Ope(e){let{transport:t,fs:n,browser:r,processManager:i,sudoManager:a}=e,o=e.logger??console,s=a?.getShellConfig({transparentGating:!1}),c=new Cpe({transport:t,processManager:i,createShell:(e,a)=>new Dpe(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 kpe(e){let t=new Ape(e);return t.start(),{stop:()=>t.dispose()}}var Ape=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(!jpe(e)||e.source!==`panel`)return;let t=e.payload;if(Mpe(t)){this.handleRequest(t).catch(e=>{this.log.warn(`[vfs-rpc-host] handler unexpectedly threw`,e)});return}if(Npe(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 m(`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 m(`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(Ppe(e.type),e.requestId,new m(`EACCES`,`vfs-rpc-host has no writable backend wired`),Fpe(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)}}async handleWriteFile(e,t){try{if(e.encoding===`binary`){if(!(e.data instanceof Uint8Array)){this.emitWriteError(`vfs-write-file-result`,e.requestId,new m(`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 m(`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,``)}}emitError(e,t,n,r){let i=Y9(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=Y9(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}}}};function jpe(e){return typeof e==`object`&&!!e&&`source`in e&&`payload`in e}function Mpe(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 Npe(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`}function Ppe(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`}}function Fpe(e){return e.type===`vfs-flush`?``:e.path}function Y9(e,t){return e instanceof m?{code:e.code,message:e.message,path:e.path??t}:{code:`EIO`,message:e instanceof Error?e.message:String(e),path:t}}function Ipe(){let e=globalThis.fetch;if(!e)return;let t=self?.location?self.location.origin:void 0;globalThis.fetch=bpe(e.bind(globalThis),t)}function Lpe(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 X9=null,Z9=null,Q9=null,$9=null;const Rpe=Spe(e=>zpe(e));self.addEventListener(`message`,e=>{e.data?.type===`kernel-worker-init`&&Rpe.handle(e.data)});async function zpe(e){Ipe(),Lpe(e.localStorageSeed??{}),lee().catch(()=>{}),await O();let t=qn(e.kernelPort),n=new gn(t),r=gn.createCallbacks(n),i=new Jn(e.cdpPort);await i.connect();let a=new Tn(i);X9=await _pe({container:{},browser:a,bridge:n,callbacks:r,logger:console});let{createSprinkleManagerProxyOverChannel:o}=await import(`./sprinkle-bridge-channel-BceIr6aT.js`);globalThis.__slicc_sprinkleManager=o({instanceId:e.instanceId});let{createPanelRpcClient:s}=await import(`./panel-rpc-Ck8CVyMh.js`).then(e=>e.i);$9=s({instanceId:e.instanceId}),globalThis.__slicc_panelRpc=$9,a.setTrayTargetProvider(kn(T));let c=X9.processManager,l=X9.sharedFs;l?(Z9=Ope({transport:t,fs:l,browser:a,processManager:c,sudoManager:X9.orchestrator.getSudoManager(),logger:console}).stop,Q9=kpe({transport:t,client:l,writableClient:l,logger:console}).stop):console.warn(`[kernel-worker] shared FS unavailable; terminal sessions will fail to open`),e.kernelPort.postMessage({type:`kernel-worker-ready`})}self.addEventListener(`message`,e=>{e.data?.type===`kernel-worker-shutdown`&&(Z9?.(),Z9=null,Q9?.(),Q9=null,$9?.dispose(),$9=null,X9?.dispose())});export{ft as C,dt as S,sn as _,Z4 as a,qt as b,vq as c,tV as d,Bz as f,cn as g,jL as h,c5 as i,QK as l,PL as m,H7 as n,hY as o,Fz as p,V7 as r,gY as s,hue as t,qK as u,an as v,Xe as w,Jt as x,rn as y};
9820
+ `,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 fpe(e,t){try{let{startLickWsBridge:t}=await import(`./lick-ws-bridge-DZy9C70j.js`);return t(e,{locationHref:self.location.href}).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 ppe(e,t,n){try{let n=new hr(e.getTransport(),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})});return n.start(),()=>n.stop()}catch(e){return n.warn(`Failed to start NavigationWatcher`,e),null}}function mpe(e,t,n){(async()=>{try{let{getAllMountEntries:r}=await import(`./mount-table-store-CQJEV6Ij.js`).then(e=>e.r),{recoverMounts:i}=await Promise.resolve().then(()=>Ze),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 hpe(e,t){(async()=>{try{let{detectUpgrade:t,recordVersionSeen:n}=await import(`./upgrade-detection-CHScEQnq.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 gpe(e,t,n){try{let{BshWatchdog:n}=await import(`./bsh-watchdog-CNmrTRAy.js`),{ScriptCatalog:r}=await Promise.resolve().then(()=>j$),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}}}async function _pe(e){let{container:t,browser:n,bridge:r,callbacks:i,skipConeBootstrap:a=!1,isExtension:o=!1}=e,s=e.logger??console,{processManager:c,orchestrator:l,unsubLeader:u,unsubFollower:d,sharedFs:f}=await spe(t,n,r,i);if(f?Or(l,f,l.getSessionStore()):s.warn(`AgentBridge not published — orchestrator.getSharedFS() returned null`),f)try{await f.mountInternal(`/proc`,new Xfe(c))}catch(e){s.warn(`Failed to mount /proc`,e)}let p=await cpe(l,e,s);f&&upe({orchestrator:l,processManager:c,lickManager:p,sharedFs:f}),globalThis.__slicc_lickManager=p;let{wsBridge:m,wsRegistry:h}=await dpe({browser:n,lickManager:p,orchestrator:l,sharedFs:f,log:s});globalThis.__slicc_wsSubscribers=h;let g=null;o||(g=await fpe(p,s));let _=null;o||(_=ppe(n,p,s)),f&&mpe(f,p,s),a||await lpe(l),f&&hpe(p,s);let v=null,y=null;f&&({bshWatchdogStop:v,scriptCatalogDispose:y}=await gpe(f,n,s));let b=!1;return{orchestrator:l,browser:n,bridge:r,lickManager:p,sharedFs:f??null,processManager:c,async dispose(){b||(b=!0,await vpe({unsubLeader:u,unsubFollower:d,bshWatchdogStop:v,scriptCatalogDispose:y,lickWsBridgeStop:g,navigationWatcherStop:_,sharedFs:f,wsRegistry:h,wsBridge:m,processManager:c,lickManager:p,browser:n,log:s}))}}}async function vpe(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.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)}ype({processManager:i,lickManager:a,browser:o,wsRegistry:n})}function ype(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[e9]}const J9=`x-bypass-llm-proxy`;function bpe(e,t){return t?(n,r)=>{if(!xpe(n,t))return e(n,r);let i=new Headers(r?.headers);return i.has(J9)||i.set(J9,`1`),e(n,{...r,headers:i})}:e}function xpe(e,t){let n;n=typeof e==`string`?e:e instanceof URL?e.href:e.url;try{return new URL(n,t).origin===t}catch{return!0}}function Spe(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 Cpe=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(!wpe(e)||e.source!==`panel`)return;let t=e.payload;Epe(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);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?130: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,Tpe(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 wpe(e){return typeof e==`object`&&!!e&&`source`in e&&`payload`in e}function Tpe(e){switch(e){case`SIGINT`:return 130;case`SIGTERM`:return 143;case`SIGKILL`:return 137;case`SIGSTOP`:case`SIGCONT`:return 130}}function Epe(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 Dpe=class extends d9{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 Ope(e){let{transport:t,fs:n,browser:r,processManager:i,sudoManager:a}=e,o=e.logger??console,s=a?.getShellConfig({transparentGating:!1}),c=new Cpe({transport:t,processManager:i,createShell:(e,a)=>new Dpe(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 kpe(e){let t=new Ape(e);return t.start(),{stop:()=>t.dispose()}}var Ape=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(!jpe(e)||e.source!==`panel`)return;let t=e.payload;if(Mpe(t)){this.handleRequest(t).catch(e=>{this.log.warn(`[vfs-rpc-host] handler unexpectedly threw`,e)});return}if(Npe(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 m(`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 m(`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(Ppe(e.type),e.requestId,new m(`EACCES`,`vfs-rpc-host has no writable backend wired`),Fpe(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)}}async handleWriteFile(e,t){try{if(e.encoding===`binary`){if(!(e.data instanceof Uint8Array)){this.emitWriteError(`vfs-write-file-result`,e.requestId,new m(`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 m(`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,``)}}emitError(e,t,n,r){let i=Y9(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=Y9(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}}}};function jpe(e){return typeof e==`object`&&!!e&&`source`in e&&`payload`in e}function Mpe(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 Npe(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`}function Ppe(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`}}function Fpe(e){return e.type===`vfs-flush`?``:e.path}function Y9(e,t){return e instanceof m?{code:e.code,message:e.message,path:e.path??t}:{code:`EIO`,message:e instanceof Error?e.message:String(e),path:t}}function Ipe(){let e=globalThis.fetch;if(!e)return;let t=self?.location?self.location.origin:void 0;globalThis.fetch=bpe(e.bind(globalThis),t)}function Lpe(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 X9=null,Z9=null,Q9=null,$9=null;const Rpe=Spe(e=>zpe(e));self.addEventListener(`message`,e=>{e.data?.type===`kernel-worker-init`&&Rpe.handle(e.data)});async function zpe(e){Ipe(),Lpe(e.localStorageSeed??{}),lee().catch(()=>{}),await O();let t=qn(e.kernelPort),n=new gn(t),r=gn.createCallbacks(n),i=new Jn(e.cdpPort);await i.connect();let a=new Tn(i);X9=await _pe({container:{},browser:a,bridge:n,callbacks:r,logger:console});let{createSprinkleManagerProxyOverChannel:o}=await import(`./sprinkle-bridge-channel-BceIr6aT.js`);globalThis.__slicc_sprinkleManager=o({instanceId:e.instanceId});let{createPanelRpcClient:s}=await import(`./panel-rpc-Ck8CVyMh.js`).then(e=>e.i);$9=s({instanceId:e.instanceId}),globalThis.__slicc_panelRpc=$9,a.setTrayTargetProvider(kn(T));let c=X9.processManager,l=X9.sharedFs;l?(Z9=Ope({transport:t,fs:l,browser:a,processManager:c,sudoManager:X9.orchestrator.getSudoManager(),logger:console}).stop,Q9=kpe({transport:t,client:l,writableClient:l,logger:console}).stop):console.warn(`[kernel-worker] shared FS unavailable; terminal sessions will fail to open`),e.kernelPort.postMessage({type:`kernel-worker-ready`})}self.addEventListener(`message`,e=>{e.data?.type===`kernel-worker-shutdown`&&(Z9?.(),Z9=null,Q9?.(),Q9=null,$9?.dispose(),$9=null,X9?.dispose())});export{ft as C,dt as S,sn as _,Z4 as a,qt as b,vq as c,tV as d,Bz as f,cn as g,jL as h,c5 as i,QK as l,PL as m,H7 as n,hY as o,Fz as p,V7 as r,gY as s,hue as t,qK as u,an as v,Xe as w,Jt as x,rn as y};