sliccy 5.17.0 → 5.19.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.
- package/dist/node-server/electron-controller.d.ts +0 -1
- package/dist/node-server/electron-controller.js +4 -10
- package/dist/node-server/electron-main.js +5 -13
- package/dist/node-server/electron-runtime.d.ts +0 -4
- package/dist/node-server/electron-runtime.js +4 -21
- package/dist/node-server/index.js +28 -178
- package/dist/node-server/runtime-flags.d.ts +0 -1
- package/dist/node-server/runtime-flags.js +184 -170
- package/dist/ui/assets/{account-store-CBk_RRLV.js → account-store-CdHh89UC.js} +2 -2
- package/dist/ui/assets/account-store-D-lYehD5.js +38 -0
- package/dist/ui/assets/adobe-DYgkYvXI.js +2 -0
- package/dist/ui/assets/adobe-DaGPd68K.js +1 -0
- package/dist/ui/assets/{adobe-oauth-state-Cc5ypNv9.js → adobe-oauth-state-BlS8V3w-.js} +1 -1
- package/dist/ui/assets/{agent-message-to-chat-BgpA9D4h.js → agent-message-to-chat-x0D_SMXW.js} +1 -1
- package/dist/ui/assets/{apps-BxGLa7A3.js → apps-B3366gbc.js} +1 -1
- package/dist/ui/assets/{azure-openai-B8toZrBe.js → azure-openai-BXN7jl7Y.js} +1 -1
- package/dist/ui/assets/{azure-openai-DDF5YvGp.js → azure-openai-WLLaaJ4G.js} +1 -1
- package/dist/ui/assets/{connect-surface-DcDKugo-.js → connect-surface-CAOR-Lbw.js} +1 -1
- package/dist/ui/assets/dip-Z97FbsKw.js +1 -0
- package/dist/ui/assets/{dist-BxRMuqnq.js → dist-B9dM2Gnv.js} +1 -1
- package/dist/ui/assets/{dist-CT7xqqT4.js → dist-Wq4L5_18.js} +1 -1
- package/dist/ui/assets/{ensure-speech-assets-CqE0151_.js → ensure-speech-assets-D950uENa.js} +1 -1
- package/dist/ui/assets/esp8266-BME0hcg8.js +1 -0
- package/dist/ui/assets/{esptool-operations-92BYsecU.js → esptool-operations-C0atH-wW.js} +2 -2
- package/dist/ui/assets/{fs-6uBFvM8G.js → fs-C5X17x_V.js} +1 -1
- package/dist/ui/assets/{fs-Dryw3sKr.js → fs-Dw4x6jTJ.js} +2 -2
- package/dist/ui/assets/{github-Cj3ICqIW.js → github-BrZWqtfj.js} +2 -2
- package/dist/ui/assets/{github-0RYtpc7E.js → github-CniSwDIM.js} +1 -1
- package/dist/ui/assets/{github-copilot--zbJvr9N.js → github-copilot-DSNvyQFo.js} +1 -1
- package/dist/ui/assets/{github-copilot-V-nsAvuB.js → github-copilot-DlQcUdz6.js} +1 -1
- package/dist/ui/assets/{hear-CrPVmxWH.js → hear-Blf_iRt7.js} +1 -1
- package/dist/ui/assets/{kernel-worker-ER23oF3K.js → kernel-worker-BR2fhRnc.js} +18 -18
- package/dist/ui/assets/{kokoro-engine-C3b5hDH2.js → kokoro-engine-JtWrOUh7.js} +1 -1
- package/dist/ui/assets/{lick-ws-bridge-BXGP-CXC.js → lick-ws-bridge-Cz1MQwG4.js} +1 -1
- package/dist/ui/assets/{lick-ws-bridge-BZM8Qfo_.js → lick-ws-bridge-D5KoFA4T.js} +1 -1
- package/dist/ui/assets/{local-llm-B6ianb7W.js → local-llm-CD4uI8cC.js} +1 -1
- package/dist/ui/assets/{main-DxjacmnX.js → main-lBt01oh5.js} +4 -4
- package/dist/ui/assets/{mount-BHesNrsF.js → mount-CSPi4pLr.js} +1 -1
- package/dist/ui/assets/{mount-BQDv4xZZ.js → mount-DmOv4Rkt.js} +2 -2
- package/dist/ui/assets/new-session-B3gJ8pdc.js +2 -0
- package/dist/ui/assets/oauth-bootstrap-ByFiTlpo.js +2 -0
- package/dist/ui/assets/{openai-codex-14betOS2.js → openai-codex-CBPD1JHV.js} +1 -1
- package/dist/ui/assets/{openai-codex-BKtJHhlt.js → openai-codex-CPTe2ogQ.js} +1 -1
- package/dist/ui/assets/{page-follower-tray-_5YHuZDk.js → page-follower-tray-CO9V0tzy.js} +1 -1
- package/dist/ui/assets/panel-rpc-handlers-CLDCbbgv.js +2 -0
- package/dist/ui/assets/{provider-OHczH2qf.js → provider-DDA91px5.js} +1 -1
- package/dist/ui/assets/provider-store-access-BfKVeXXl.js +1 -0
- package/dist/ui/assets/provider-store-access-Cx_YtwU2.js +1 -0
- package/dist/ui/assets/provider-y1CXWNwX.js +2 -0
- package/dist/ui/assets/{providers-D885eKVy.js → providers-1bfXNKfi.js} +1 -1
- package/dist/ui/assets/providers-DzAysipv.js +2 -0
- package/dist/ui/assets/{quick-llm-B-hEdLQl.js → quick-llm-DcPsoqlO.js} +1 -1
- package/dist/ui/assets/session-freezer-WYzNeHKI.js +1 -0
- package/dist/ui/assets/{speak-BzUDF--m.js → speak-Dt6M0Cc2.js} +1 -1
- package/dist/ui/assets/{sprinkle-manager-CaMt7q2E.js → sprinkle-manager-D44imqpP.js} +1 -1
- package/dist/ui/assets/{store-DROPqnTs.js → store-D9iZjzy_.js} +1 -1
- package/dist/ui/assets/{sudo-DlMyKM9v.js → sudo-Cxr8VdOT.js} +1 -1
- package/dist/ui/assets/{transformers-env-BstAowJV.js → transformers-env-C47rAFns.js} +1 -1
- package/dist/ui/assets/{tray-leader-Cy_sa2iJ.js → tray-leader-CAkM_eBb.js} +1 -1
- package/dist/ui/assets/{tray-leave-runtime-AaVCYWrw.js → tray-leave-runtime-REUItGDj.js} +1 -1
- package/dist/ui/assets/{upgrade-detection-wHDMN0aa.js → upgrade-detection-z0gJwK38.js} +1 -1
- package/dist/ui/assets/{voice-reply-BDR5cDvo.js → voice-reply-Bdya6LMn.js} +1 -1
- package/dist/ui/assets/wc-attach-B9FQyb2S.js +13 -0
- package/dist/ui/assets/{wc-detached-CM9ubFYt.js → wc-detached-_7ecP6_N.js} +1 -1
- package/dist/ui/assets/wc-extension-DwBIGDcV.js +2 -0
- package/dist/ui/assets/wc-follower-DrNEeYmM.js +2 -0
- package/dist/ui/assets/{wc-live-CjWoWLQ-.js → wc-live-6B-nT2B9.js} +5 -5
- package/dist/ui/assets/wc-nav-BDnSNrtL.js +2 -0
- package/dist/ui/assets/{wc-onboarding-N6tWuuCk.js → wc-onboarding-KOUGFy8r.js} +2 -2
- package/dist/ui/assets/wc-placeholder-COrPl7lN.js +4 -0
- package/dist/ui/assets/{wc-settings-BYIw_9Pe.js → wc-settings-B9ROF6Uh.js} +2 -2
- package/dist/ui/assets/{wc-shell-BA3EumXB.js → wc-shell-BlM8nHAz.js} +897 -897
- package/dist/ui/assets/wc-sprinkles-D2BblZdj.js +2 -0
- package/dist/ui/assets/wc-tray-B25a8f-q.js +2 -0
- package/dist/ui/assets/{whisper-engine-BhhYv79q.js → whisper-engine-C3n7b_qt.js} +1 -1
- package/dist/ui/assets/{xai-grok-B3W-lLkh.js → xai-grok-DDP-iJ0L.js} +1 -1
- package/dist/ui/assets/{xai-grok-BqFeqkII.js → xai-grok-PhC2UNO_.js} +1 -1
- package/dist/ui/electron-overlay-entry.js +298 -6356
- package/dist/ui/index.html +3 -2
- package/dist/ui/packages/webapp/index.html +3 -2
- package/package.json +8 -6
- package/dist/node-server/ui-serving.d.ts +0 -18
- package/dist/node-server/ui-serving.js +0 -91
- package/dist/ui/assets/account-store-CbXr_cFb.js +0 -38
- package/dist/ui/assets/adobe-2QErDUFJ.js +0 -2
- package/dist/ui/assets/adobe-BpxUeBn1.js +0 -1
- package/dist/ui/assets/dip-az2X5rT2.js +0 -1
- package/dist/ui/assets/esp8266-DIv0XWqr.js +0 -1
- package/dist/ui/assets/new-session-lZAXDAfU.js +0 -2
- package/dist/ui/assets/oauth-bootstrap-D3t30chW.js +0 -2
- package/dist/ui/assets/panel-rpc-handlers-BZN3D1Ho.js +0 -2
- package/dist/ui/assets/provider-C3ejoQ5_.js +0 -2
- package/dist/ui/assets/provider-store-access-D65njjdc.js +0 -1
- package/dist/ui/assets/provider-store-access-vmuNINTT.js +0 -1
- package/dist/ui/assets/session-freezer-DHHHmvzR.js +0 -1
- package/dist/ui/assets/wc-attach-C42nuWD4.js +0 -13
- package/dist/ui/assets/wc-extension-DXQVZ_Xv.js +0 -2
- package/dist/ui/assets/wc-follower-D_Crj4hj.js +0 -2
- package/dist/ui/assets/wc-nav-DFWDWh6n.js +0 -2
- package/dist/ui/assets/wc-placeholder-BdJLz1BN.js +0 -4
- package/dist/ui/assets/wc-sprinkles-Cnt20KE_.js +0 -2
- package/dist/ui/assets/wc-tray-DCMH2eXY.js +0 -2
- package/dist/ui/electron-overlay-entry.css +0 -37
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/wc-shell-BA3EumXB.js","assets/chunk-aKtaBQYM.js","assets/preload-helper-zJ_50EbN.js","assets/icons-BU6llBsN.js","assets/main-DxjacmnX.js","assets/modulepreload-polyfill-Dezn_h7o.js","assets/account-store-CbXr_cFb.js","assets/dist-BmWy99kl.js","assets/event-stream-BJI_nGaK.js","assets/json-parse-BUunmmNl.js","assets/__vite-browser-external-C7iut881.js","assets/context-compaction-CFWyOzX1.js","assets/logger-DDBAeTLF.js","assets/src-x0cJ68Fe.js","assets/proxied-fetch-B5vr_AP8.js","assets/fetch-body-D2PwksUW.js","assets/secret-topology-Bp0wH2ni.js","assets/secrets-bridge-client-DXw32cXb.js","assets/panel-rpc-DqT2FG7c.js","assets/bedrock-camp-9-QEmC9Z.js","assets/transform-messages-DzB_lMo-.js","assets/tool-ui-DfXu6quJ.js","assets/clipboard-DgFtRQbq.js","assets/soundscape-cues-5_sT5Un6.js","assets/speech-CqQdPtyQ.js","assets/wc-shell-WkeczD9x.css"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{t as e}from"./preload-helper-zJ_50EbN.js";import{i as t,r as n}from"./src-x0cJ68Fe.js";import{t as r}from"./wc-permissions-registry-CR1rTd2H.js";var i=8,a=2e3,o=[`/workspace`,`/shared`,`/tmp`],s=8,c=new Set([`node_modules`,`.git`]),l=1e4,u=/\.(png|jpe?g|gif|webp|svg|avif)$/i,d=4*1024*1024,f=256*1024;function p(){return`att-${Date.now()}-${Math.random().toString(36).slice(2,8)}`}function m(e){return{png:`image/png`,jpg:`image/jpeg`,jpeg:`image/jpeg`,gif:`image/gif`,webp:`image/webp`,svg:`image/svg+xml`,avif:`image/avif`,md:`text/markdown`,json:`application/json`}[e.toLowerCase().split(`.`).pop()??``]??`text/plain`}function h(e,n){let r={id:p(),name:e,size:n.length};if(u.test(e))return n.length>d?{...r,mimeType:m(e),kind:`image`,error:`image too large to inline`}:{...r,mimeType:m(e),kind:`image`,data:t(n)};let i={...r,mimeType:m(e),kind:`file`};return n.length>f?{...i,error:`file too large to inline`}:i}async function g(e){let t=new Uint8Array(await e.arrayBuffer()),n=h(e.name,t);return e.type?{...n,mimeType:e.type}:n}function _(e,t){let n=t.match(/^data:(image\/[^;]+);base64,(.+)$/);return n?{id:p(),name:e,mimeType:n[1],size:Math.floor(n[2].length*3/4),kind:`image`,data:n[2]}:null}var v=`/tmp/upload`,y=1568;async function b(e,t,n){await e.mkdir(v,{recursive:!0}).catch(()=>void 0);let r=`${v}/${Date.now()}-${t.replace(/[^A-Za-z0-9._-]+/g,`_`)}`;return await e.writeFile(r,n),r}async function x(e,t=y){let n=new Image;n.src=e;try{await n.decode()}catch{return e}let r=Math.min(1,t/Math.max(n.naturalWidth,n.naturalHeight,1));if(r>=1)return e;let i=document.createElement(`canvas`);return i.width=Math.round(n.naturalWidth*r),i.height=Math.round(n.naturalHeight*r),i.getContext(`2d`)?.drawImage(n,0,0,i.width,i.height),i.toDataURL(`image/jpeg`,.85)}async function S(e,t,r){let i=_(e,t);if(!i)return null;let a;return r&&i.data&&(a=await b(r,e,n(i.data)).catch(()=>void 0)),{..._(e,await x(t).catch(()=>t))??i,name:e,path:a}}async function C(e,t,n){if(!n)return null;let r=new Uint8Array(await t.arrayBuffer()),i=await b(n,e,r).catch(()=>void 0);return i?{id:p(),name:e,mimeType:t.type||`video/webm`,size:r.length,kind:`file`,path:i}:null}async function w(e){let t=[],n=o.map(e=>({dir:e,depth:0}));for(;n.length>0&&t.length<a;){let{dir:r,depth:i}=n.shift(),o;try{o=await e.readDir(r)}catch{continue}for(let e of o){let o=`${r}/${e.name}`;if(e.type===`directory`)i<s&&!c.has(e.name)&&n.push({dir:o,depth:i+1});else if(t.push(o),t.length>=a)break}}return t}function T(e){let t=null;return async n=>{let r=await e.openReader();(!t||Date.now()-t.at>l)&&(t={at:Date.now(),paths:await w(r)});let a=e=>n===``||e.toLowerCase().includes(n),o=t.paths.filter(e=>a(e)).slice(0,i).map(e=>({id:e,label:e.split(`/`).pop()??e,sub:e.slice(0,e.lastIndexOf(`/`))})),s=[];try{s=(await r.readDir(`/workspace/skills`)).filter(e=>e.type===`directory`&&a(e.name)).slice(0,i).map(e=>({id:e.name,label:e.name}))}catch{}let c=(await e.listConversations().catch(()=>[])).filter(e=>a(e.label)).slice(0,i);return[{kind:`file`,label:`Files`,icon:`file`,entries:o},{kind:`skill`,label:`Skills`,icon:`sparkles`,entries:s},{kind:`conversation`,label:`Conversations`,icon:`message-square`,entries:c}]}}var E=`slicc-wc-attach-style`,D=`
|
|
3
|
-
.wcatt{display:flex;flex-wrap:wrap;gap:6px;padding:8px 10px 0;font-family:var(--ui);}
|
|
4
|
-
.wcatt:empty{display:none;}
|
|
5
|
-
.wcatt__chip{display:inline-flex;align-items:center;gap:6px;font-size:11px;color:var(--ink);
|
|
6
|
-
background:var(--ghost);border:1px solid var(--line);border-radius:14px;padding:3px 8px;max-width:220px;}
|
|
7
|
-
.wcatt__thumb{width:28px;height:28px;object-fit:cover;border-radius:8px;cursor:zoom-in;
|
|
8
|
-
border:1px solid var(--line);flex:0 0 auto;}
|
|
9
|
-
.wcatt__name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
|
|
10
|
-
.wcatt__x{appearance:none;background:none;border:none;cursor:pointer;color:var(--txt-3);
|
|
11
|
-
font:inherit;padding:0;line-height:1;}
|
|
12
|
-
.wcatt__x:hover{color:var(--ink);}
|
|
13
|
-
`,O=class{#e;#t=[];constructor(e){if(!document.getElementById(E)){let e=document.createElement(`style`);e.id=E,e.textContent=D,document.head.appendChild(e)}this.#e=document.createElement(`div`),this.#e.className=`wcatt`,e.prepend(this.#e)}get items(){return this.#t}add(e){this.#t.push(e),this.#n()}take(){let e=this.#t;return this.#t=[],this.#n(),e}#n(){this.#e.replaceChildren(...this.#t.map(e=>this.#r(e)))}#r(t){let n=document.createElement(`span`);if(n.className=`wcatt__chip`,t.kind===`image`&&t.data){let r=document.createElement(`img`);r.className=`wcatt__thumb`,r.src=`data:${t.mimeType};base64,${t.data}`,r.alt=t.name,r.addEventListener(`click`,()=>{e(async()=>{let{SliccImagePreview:e}=await import(`./wc-shell-BA3EumXB.js`).then(e=>e.h);return{SliccImagePreview:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25])).then(({SliccImagePreview:e})=>e.show(r.src,r))}),n.append(r)}let r=document.createElement(`span`);r.className=`wcatt__name`,r.textContent=t.name;let i=document.createElement(`button`);return i.type=`button`,i.className=`wcatt__x`,i.setAttribute(`aria-label`,`Remove ${t.name}`),i.textContent=`×`,i.addEventListener(`click`,()=>{this.#t=this.#t.filter(e=>e.id!==t.id),this.#n()}),n.append(r,i),n}};async function k(e){let t=document.createElement(`video`);t.srcObject=e,t.muted=!0;try{await t.play(),await new Promise(e=>requestAnimationFrame(()=>e(null)));let e=document.createElement(`canvas`);return e.width=t.videoWidth,e.height=t.videoHeight,e.width===0||e.height===0?null:(e.getContext(`2d`)?.drawImage(t,0,0),e.toDataURL(`image/png`))}finally{for(let t of e.getTracks())t.stop();t.srcObject=null}}async function A(){let e=r();if(e){let t=await e.request(`screenshare`,{constraints:{video:!0}});if(!t)return null;let n=t.stream;return k(n)}return k(await navigator.mediaDevices.getDisplayMedia({video:!0}))}async function j(e,t){let n=r();if(!n)return null;let i=await n.prompt({kinds:e,description:t});for(let e of i.grants)if(e.kind===`camera`||e.kind===`microphone`||e.kind===`screenshare`)for(let t of e.stream.getTracks())t.stop();return i.status===`granted`}var M=`slicc_camera_device`,N=`slicc_microphone_device`,P=[`position:absolute`,`left:50%`,`right:auto`,`transform:translateX(-50%)`,`bottom:56px`,`width:calc(100% - 32px)`,`max-width:680px`,`z-index:3`].join(`;`);async function F(e,t){if(await j([`camera`,`microphone`],`Slicc is requesting access to your camera and microphone to capture a photo or video for this conversation.`)===!1)return null;let n=document.createElement(`slicc-composer-capture`),r=localStorage.getItem(M);r&&n.setAttribute(`preferred-device`,r);let i=localStorage.getItem(N);i&&n.setAttribute(`preferred-audio-device`,i),n.style.cssText=P,n.hidden=!0,n.addEventListener(`slicc-capture-device-change`,e=>{let t=e.detail;if(!t?.deviceId)return;let n=t.kind===`microphone`?N:M;localStorage.setItem(n,t.deviceId)}),e.append(n);try{return await n.open(t)}finally{n.remove()}}async function I(e,t,n){if(!e.dataUrl)return;let r=`photo-${Date.now()}.png`,i=await t.openWriter?.().catch(()=>null)??null,a=await S(r,e.dataUrl,i);a&&n.add(a)}async function L(e,t,n){if(!e.blob)return;let r=/webm/i.test(e.mimeType)?`webm`:`bin`,i=`video-${Date.now()}.${r}`,a=await t.openWriter?.().catch(()=>null)??null,o=await C(i,e.blob,a);o&&n.add(o)}async function R(e,t,n){if(e.mode===`photo`){if(!t.composer){let e=await z();if(!e)return;let r=await S(`photo-${Date.now()}.png`,e,await t.openWriter?.().catch(()=>null)??null);r&&n.add(r);return}let e=await F(t.composer,`photo`);if(!e)return;e.kind===`image`?await I(e,t,n):e.kind===`video`&&await L(e,t,n);return}let r=await A();if(!r)return;let i=await S(`screenshot-${Date.now()}.png`,r,await t.openWriter?.().catch(()=>null)??null);i&&n.add(i)}async function z(){if(await j([`camera`],`Slicc is requesting access to your camera to capture a photo for this conversation.`)===!1)return null;let e=document.createElement(`slicc-camera-dialog`),t=localStorage.getItem(M);t&&e.setAttribute(`preferred-device`,t),e.addEventListener(`slicc-camera-device-change`,e=>{let t=e.detail?.deviceId;t&&localStorage.setItem(M,t)}),document.body.append(e);try{return await e.open()}finally{e.remove()}}async function B(e,t,n){let r=await n.openWriter?.().catch(()=>null)??null,i=r?await b(r,e.name,t).catch(()=>void 0):void 0;return i?{...e,error:void 0,path:i}:e.kind===`image`?e:{...e,error:`could not be saved to the virtual filesystem`}}async function V(e,t,n){let r=e.split(`/`).pop()??e;if(u.test(r)){let i=await(await t()).readFile(e),a=h(r,typeof i==`string`?new TextEncoder().encode(i):i);n.add({...a,error:void 0,path:e});return}let i=0;try{i=(await(await t()).stat(e)).size}catch{}n.add({id:p(),name:r,mimeType:m(r),size:i,kind:`file`,path:e})}function H(e,t){let n=t.value??t.getAttribute(`value`)??``,r=n&&!n.endsWith(` `)?` `:``;t.setAttribute(`value`,`${n}${r}Use the "${e}" skill: `)}async function U(e,t,n){if(e.kind===`upload`&&e.file instanceof File){let r=new Uint8Array(await e.file.arrayBuffer());n.add(await B(await g(e.file),r,t))}else e.kind===`capture`?await R(e,t,n):e.kind===`file`&&typeof e.id==`string`&&t.openReader?await V(e.id,t.openReader,n):e.kind===`skill`&&typeof e.label==`string`?H(e.label,t.inputCard):e.kind===`conversation`&&typeof e.id==`string`&&t.freezer.dispatchEvent(new CustomEvent(`freezer-card-select`,{bubbles:!0,composed:!0,detail:{slug:e.id}}))}function W(e){let{inputCard:t,log:n}=e,r=new O(t),i=t.querySelector(`slicc-add-menu`);return i&&(e.openReader&&(i.provider=T({openReader:e.openReader,listConversations:e.listConversations??(async()=>[])})),i.setAttribute(`global-drop`,``)),t.addEventListener(`slicc-add`,t=>{let i=t.detail;i&&U(i,e,r).catch(e=>n.error(`WC add-menu action failed`,e))}),t.addEventListener(`paste`,t=>{let i=t.clipboardData?.items;if(i)for(let a of Array.from(i)){if(!a.type.startsWith(`image/`))continue;let i=a.getAsFile();if(!i)continue;t.preventDefault();let o=(i.type.split(`/`)[1]||`png`).replace(/[^a-z0-9]/gi,``)||`png`,s=i.name?i:new File([i],`pasted-image.${o}`,{type:i.type});U({kind:`upload`,name:s.name,size:s.size,file:s},e,r).catch(e=>n.error(`Paste image failed`,e))}}),r}export{W as wireWcAttach};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/main-DxjacmnX.js","assets/chunk-aKtaBQYM.js","assets/modulepreload-polyfill-Dezn_h7o.js","assets/preload-helper-zJ_50EbN.js","assets/account-store-CbXr_cFb.js","assets/dist-BmWy99kl.js","assets/event-stream-BJI_nGaK.js","assets/json-parse-BUunmmNl.js","assets/__vite-browser-external-C7iut881.js","assets/context-compaction-CFWyOzX1.js","assets/logger-DDBAeTLF.js","assets/src-x0cJ68Fe.js","assets/proxied-fetch-B5vr_AP8.js","assets/fetch-body-D2PwksUW.js","assets/secret-topology-Bp0wH2ni.js","assets/secrets-bridge-client-DXw32cXb.js","assets/panel-rpc-DqT2FG7c.js","assets/bedrock-camp-9-QEmC9Z.js","assets/transform-messages-DzB_lMo-.js","assets/tool-ui-DfXu6quJ.js","assets/clipboard-DgFtRQbq.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{t as e}from"./preload-helper-zJ_50EbN.js";import{wireWcDetached as t}from"./wc-detached-CM9ubFYt.js";import{attachWcClient as n,createWcLiveCallbacks as r,n as i,prepareWcShell as a}from"./wc-live-CjWoWLQ-.js";async function o(o,s,c=!1){let l=a(o,`extension · wc`),u=new i(r(l.wiring));n(l,u,s),t({client:u,isDetachedSelf:c});let{setupSudoExtension:d}=await e(async()=>{let{setupSudoExtension:e}=await import(`./main-DxjacmnX.js`).then(e=>e.m);return{setupSudoExtension:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]));await d({log:s}),u.requestState(),s.info(`WC extension shell connected to offscreen engine`)}export{o as mountWcUiExtension};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/wc-live-CjWoWLQ-.js","assets/preload-helper-zJ_50EbN.js","assets/account-store-CbXr_cFb.js","assets/chunk-aKtaBQYM.js","assets/dist-BmWy99kl.js","assets/event-stream-BJI_nGaK.js","assets/json-parse-BUunmmNl.js","assets/__vite-browser-external-C7iut881.js","assets/context-compaction-CFWyOzX1.js","assets/logger-DDBAeTLF.js","assets/src-x0cJ68Fe.js","assets/proxied-fetch-B5vr_AP8.js","assets/fetch-body-D2PwksUW.js","assets/secret-topology-Bp0wH2ni.js","assets/secrets-bridge-client-DXw32cXb.js","assets/panel-rpc-DqT2FG7c.js","assets/bedrock-camp-9-QEmC9Z.js","assets/transform-messages-DzB_lMo-.js","assets/tool-ui-DfXu6quJ.js","assets/wc-shell-BA3EumXB.js","assets/icons-BU6llBsN.js","assets/main-DxjacmnX.js","assets/modulepreload-polyfill-Dezn_h7o.js","assets/clipboard-DgFtRQbq.js","assets/soundscape-cues-5_sT5Un6.js","assets/speech-CqQdPtyQ.js","assets/wc-shell-WkeczD9x.css","assets/hid-device-registry-D2LsJCRr.js","assets/usb-operations-CkcrNzZw.js","assets/serial-port-registry-Bc4wlwED.js","assets/usb-device-registry-BP58Vi0S.js","assets/shared-mxZcIrza.js","assets/mime-types-ugOWOUZ9.js","assets/tray-leader-Cy_sa2iJ.js","assets/sprinkle-bridge-BB1Ge79t.js","assets/sprinkle-renderer-GiRRbdBx.js","assets/theme-BBwuyzvz.js","assets/wc-permissions-registry-CR1rTd2H.js","assets/follower-navigate-watcher-CnHWEu_l.js","assets/navigation-watcher-BxAAD5To.js","assets/handoff-link-ywwq4k0t.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{t as e}from"./preload-helper-zJ_50EbN.js";import{t}from"./logger-DDBAeTLF.js";import{_ as n,g as r,p as i,w as a,x as o}from"./main-DxjacmnX.js";import{n as s}from"./remote-cdp-transport-BrkfZae9.js";import{i as c}from"./wc-shell-BA3EumXB.js";import{wireWcAttach as l}from"./wc-attach-C42nuWD4.js";import{prepareWcShell as u,t as d}from"./wc-live-CjWoWLQ-.js";import{t as f}from"./page-follower-tray-_5YHuZDk.js";import{WcSprinkleZone as p}from"./wc-sprinkles-Cnt20KE_.js";var m=t(`follower-switch-out`);function h(e,t){t.stopFollower();try{t.storage.removeItem(r),e.workerBaseUrl===null?t.storage.removeItem(n):t.storage.setItem(n,e.workerBaseUrl)}catch(e){m.error(`follower switch-out: storage write failed — state may revert on reload`,{error:e instanceof Error?e.message:String(e)})}try{let e=t.getHref(),n=a(e);n!==e&&t.replaceHref(n)}catch(e){m.error(`follower switch-out: URL normalize failed — may re-enter follower on reload`,{error:e instanceof Error?e.message:String(e)})}t.reload()}var g=t(`wc-follower`),_={sendMessage:()=>{},onEvent:()=>()=>{},stop:()=>{}};function v(e,t){for(;e.firstChild;)e.removeChild(e.firstChild);let n=document.createElement(`div`);n.style.cssText=`padding:2rem;text-align:center;font-family:system-ui;`;let r=document.createElement(`h1`);r.style.color=`var(--s2-negative, #e34850)`,r.textContent=`Could not start follower`;let i=document.createElement(`p`);i.style.color=`var(--s2-content-tertiary, #717171)`,i.textContent=t,n.append(r,i),e.appendChild(n)}function y(e,t,n){let r=e=>{let t=document.createElement(`div`);return t.className=`wcui-placeholder`,t.textContent=e,t};e.style.display=`none`,e.parentElement?.append(r(`Files live on the leader. A follower mirrors the leader’s chat, sprinkles, and browser tabs — not its filesystem.`)),t.append(r(`The shell runs on the leader. A follower has no local terminal — drive the session through chat.`)),n.append(r(`Memory lives on the leader. A follower has no local memory store.`))}async function b(t,n,r){let a=r===`cherry`,m;try{m=await i({runtimeMode:r,envBaseUrl:null,window,log:n})}catch(e){let n=e instanceof Error?e.message:String(e);g.error(`follower prelude failed`,{runtimeMode:r,error:n}),v(t,n);return}let b=a?m.cherryJoinUrl:o(window.location.href,window.localStorage);if(!b){g.error(`follower mount with no join URL — falling back to live boot`);let{mountWcUiLive:r}=await e(async()=>{let{mountWcUiLive:e}=await import(`./wc-live-CjWoWLQ-.js`);return{mountWcUiLive:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37]));return r(t,n,`standalone`)}let x=u(t,a?`cherry · follower`:`follower`);y(x.refs.fileTree,x.refs.termSurface,x.refs.memoryHost);let S=new d({thread:x.refs.thread,agent:_,onQueuedChange:e=>{x.refs.queuedStack.setMessages(e)}});x.setController(S);let C=`Connecting to leader…`,w=(e,t)=>{x.refs.inputCard.setAttribute(`placeholder`,t),e?x.refs.inputCard.removeAttribute(`disabled`):x.refs.inputCard.setAttribute(`disabled`,``)};w(!1,C);let T=l({inputCard:x.refs.inputCard,freezer:x.refs.freezer,composer:x.refs.composer,log:g});x.refs.inputCard.addEventListener(`submit`,e=>{let t=c(e)??``,n=T.take();(t.trim()||n.length)&&(S.sendUserMessage(t,n),x.refs.inputCard.clear?.())});let E=new p(x.refs).callbacks(),D=f({joinUrl:b,runtime:a?s:`slicc-standalone`,browserAPI:m.browser,onSnapshot:e=>S.loadMessages(e),onUserMessage:(e,t,n,r)=>S.addUserMessage(e,r),onStatus:e=>S.setProcessing(e===`processing`),setChatAgent:e=>S.setAgent(e),onConnectionChange:e=>w(e,e?`Ask the leader, or describe a change…`:C),onGaveUp:e=>{g.error(`follower gave up reaching the leader`,{error:e}),w(!1,`Couldn't reach the leader. Reload to retry.`)},addSprinkle:E.addSprinkle,removeSprinkle:E.removeSprinkle,onOpen:e=>{/^https?:\/\//.test(e)?window.open(e,`_blank`,`noopener`):g.warn(`follower sprinkle open() of a local path is unavailable`,{path:e})},...a?{onCherrySliccEvent:(e,t)=>m.cherryTransport?.emitSliccEventToHost(e,t)}:{}});a&&m.cherryTransport&&(m.cherryTransport.onHostEvent=(e,t)=>D.currentSync?.sendCherryHostEvent(e,t));let O=null;if(!a){let{startFollowerNavigateWatcher:t}=await e(async()=>{let{startFollowerNavigateWatcher:e}=await import(`./follower-navigate-watcher-CnHWEu_l.js`);return{startFollowerNavigateWatcher:e}},__vite__mapDeps([38,39,9,40]));O=t(m.realCdpTransport,()=>D.currentSync)}x.refs.avatarMenu.items=[{kind:`separator`},{id:`tray-stop`,label:`Disconnect from leader`,icon:`unplug`,danger:!0}],x.refs.avatarMenu.addEventListener(`slicc-avatar-action`,e=>{e.detail?.id===`tray-stop`&&window.dispatchEvent(new CustomEvent(`slicc:tray-leave`,{detail:{workerBaseUrl:null}}))}),window.addEventListener(`slicc:tray-leave`,e=>{h({workerBaseUrl:(e.detail??{}).workerBaseUrl??null},{storage:window.localStorage,stopFollower:()=>{O?.(),D.stop()},getHref:()=>window.location.href,replaceHref:e=>window.history.replaceState(null,``,e),reload:()=>window.location.reload()})}),g.info(`follower mounted`,{runtimeMode:r,isCherry:a})}export{b as mountWcUiFollower};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/main-DxjacmnX.js","assets/chunk-aKtaBQYM.js","assets/modulepreload-polyfill-Dezn_h7o.js","assets/preload-helper-zJ_50EbN.js","assets/account-store-CbXr_cFb.js","assets/dist-BmWy99kl.js","assets/event-stream-BJI_nGaK.js","assets/json-parse-BUunmmNl.js","assets/__vite-browser-external-C7iut881.js","assets/context-compaction-CFWyOzX1.js","assets/logger-DDBAeTLF.js","assets/src-x0cJ68Fe.js","assets/proxied-fetch-B5vr_AP8.js","assets/fetch-body-D2PwksUW.js","assets/secret-topology-Bp0wH2ni.js","assets/secrets-bridge-client-DXw32cXb.js","assets/panel-rpc-DqT2FG7c.js","assets/bedrock-camp-9-QEmC9Z.js","assets/transform-messages-DzB_lMo-.js","assets/tool-ui-DfXu6quJ.js","assets/clipboard-DgFtRQbq.js","assets/wc-settings-BYIw_9Pe.js","assets/wc-detached-CM9ubFYt.js","assets/legacy-styles-4PP74ISo.js","assets/sync-dialog-BFKWO6DT.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{t as e}from"./preload-helper-zJ_50EbN.js";import{n as t}from"./clipboard-DgFtRQbq.js";import{S as n,h as r,l as i,r as a}from"./main-DxjacmnX.js";import{n as o}from"./tray-leader-Cy_sa2iJ.js";function s(e){let t=e.find(e=>e.userAvatar&&e.userName)??e.find(e=>e.userName);return t?.userName?{name:t.userName,avatarUrl:t.userAvatar,provider:t.providerId}:null}function c(e){return e.flatMap(e=>e.models.map(t=>({name:t.name??t.id,provider:e.providerName,id:`${e.providerId}:${t.id}`})))}async function l(t){let{refs:n,client:r,log:l}=t,{getAllAvailableModels:h,getAccounts:g}=await e(async()=>{let{getAllAvailableModels:e,getAccounts:t}=await import(`./main-DxjacmnX.js`).then(e=>e.t);return{getAllAvailableModels:e,getAccounts:t}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20])),_=()=>{n.composerMeta.models=c(h())};_();let v=null;await p(n,r,()=>{let e=v;v=null,e!=null&&n.thread?.dispatchEvent(new CustomEvent(`slicc-error-retry`,{detail:{messageId:e},bubbles:!0,composed:!0}))});let y=typeof chrome<`u`&&!!chrome?.runtime?.id,b=()=>{let e=s(g()),t=n.avatarMenu.querySelector(`slicc-avatar`),r=n.inputCard.querySelector(`slicc-send-button`);e?(t?.removeAttribute(`initials`),t?.setAttribute(`name`,e.name),e.avatarUrl&&(t?.setAttribute(`src`,e.avatarUrl),r?.setAttribute(`src`,e.avatarUrl)),n.avatarMenu.user={name:e.name,provider:e.provider}):(t?.removeAttribute(`name`),t?.removeAttribute(`src`),t?.removeAttribute(`initials`),r?.removeAttribute(`src`),n.avatarMenu.user={name:`SLICC`,provider:y?`extension`:`standalone`})};b();let x=()=>{if(y)return[];let e=a(o(),i()),t=[{kind:`separator`}];return e.kind===`leader-offer`?t.push({id:`tray-enable`,label:e.label,icon:`radio`}):e.kind===`leader-copy`?(t.push({id:`tray-copy`,label:`Copy tray join URL`,icon:`link`}),t.push({id:`tray-stop`,label:`Stop multi-browser sync`,icon:`square`,danger:!0})):e.kind===`leader-pending`?(t.push({kind:`caption`,label:e.caption}),t.push({id:`tray-stop`,label:`Stop multi-browser sync`,icon:`square`,danger:!0})):(t.push({kind:`caption`,label:e.caption}),t.push({id:`tray-stop`,label:`Disconnect from leader`,icon:`unplug`,danger:!0})),t},S=new URLSearchParams(window.location.search).has(`detached`),C=()=>y&&!S?[{id:`popout`,label:`Pop out into a tab`,icon:`external-link`}]:[],w=()=>{n.avatarMenu.items=[{id:`settings`,label:`Account settings…`,icon:`settings`},...C(),...x()]};w(),n.avatarMenu.addEventListener(`slicc-avatar-menu-toggle`,e=>{e.detail?.open&&w()});let T=e=>u(e,l),E=()=>{e(async()=>{let{showWcSettings:e}=await import(`./wc-settings-BYIw_9Pe.js`);return{showWcSettings:e}},__vite__mapDeps([21,3])).then(({showWcSettings:e})=>e(l)).then(()=>{_(),b(),r.updateModel()}).catch(e=>l.error(`WC settings dialog failed`,e))};n.avatarMenu.addEventListener(`slicc-avatar-action`,t=>{let n=t.detail?.id;if(n&&T(n)){w();return}if(n===`popout`){e(async()=>{let{requestDetachedPopout:e}=await import(`./wc-detached-CM9ubFYt.js`);return{requestDetachedPopout:e}},__vite__mapDeps([22,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20])).then(({requestDetachedPopout:e})=>e()).catch(e=>l.error(`detached popout request failed`,e));return}n===`settings`&&E()}),n.composerMeta.addEventListener(`add-ai`,E),n.thread?.addEventListener(`slicc-error-open-settings`,E),d({refs:n,log:l,openSettings:E,setPendingReplayMessageId:e=>{v=e}}),await f({refs:n,log:l,openSettings:E,refreshModels:_,applyIdentity:b,client:r}),m({refreshModels:_,applyIdentity:b,client:r})}function u(i,a){if(i===`tray-enable`)return n({locationHref:window.location.href,storage:window.localStorage,envBaseUrl:null,defaultWorkerBaseUrl:r}).then(e=>{if(!e)return a.error(`tray enable: no worker base URL resolvable`);window.dispatchEvent(new CustomEvent(`slicc:tray-leave`,{detail:{workerBaseUrl:e}}))}),!0;if(i===`tray-copy`){let n=o().session?.joinUrl;return n&&(t(n).catch(()=>void 0),e(async()=>{let{loadLegacyDialogStyles:e}=await import(`./legacy-styles-4PP74ISo.js`);return{loadLegacyDialogStyles:e}},__vite__mapDeps([23,3])).then(({loadLegacyDialogStyles:e})=>e()).then(async()=>{let{showSyncEnabledDialog:t}=await e(async()=>{let{showSyncEnabledDialog:e}=await import(`./sync-dialog-BFKWO6DT.js`);return{showSyncEnabledDialog:e}},__vite__mapDeps([24,20,1]));t({joinUrl:n,copied:!0})}).catch(e=>a.error(`sync dialog failed`,e))),!0}return i===`tray-stop`?(window.dispatchEvent(new CustomEvent(`slicc:tray-leave`,{detail:{workerBaseUrl:null}})),!0):!1}function d(e){let{refs:t,log:n,openSettings:r,setPendingReplayMessageId:i}=e;t.thread?.addEventListener(`slicc-error-change-model`,e=>{i(e.detail?.messageId??null);let a=t.composerMeta,o=a.models;if(Array.isArray(o)&&o.length===0){r();return}try{a.openMenu?.()}catch(e){n.error(`opening composer model picker failed`,e)}})}async function f(t){let{refs:n,log:r,openSettings:i,refreshModels:a,applyIdentity:o,client:s}=t,{getSelectedProvider:c,getProviderConfig:l,reloginOAuthAccount:u}=await e(async()=>{let{getSelectedProvider:e,getProviderConfig:t,reloginOAuthAccount:n}=await import(`./main-DxjacmnX.js`).then(e=>e.t);return{getSelectedProvider:e,getProviderConfig:t,reloginOAuthAccount:n}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]));n.thread?.addEventListener(`slicc-error-login`,()=>{let e=c(),t=e?l(e):null;if(!t||!t.onOAuthLogin&&!t.onOAuthLoginIntercepted){i();return}u(t,()=>{a(),o(),s.updateModel()}).catch(e=>r.error(`re-login from error card failed`,e))})}async function p(t,n,r){let{resolveModelById:i,resolveCurrentModel:a,setSelectedModelId:o}=await e(async()=>{let{resolveModelById:e,resolveCurrentModel:t,setSelectedModelId:n}=await import(`./main-DxjacmnX.js`).then(e=>e.t);return{resolveModelById:e,resolveCurrentModel:t,setSelectedModelId:n}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20])),s=e=>{let t=e.indexOf(`:`);return t>0?e.slice(t+1):e},c=e=>{try{let n=e?i(s(e)):a();t.composerMeta.toggleAttribute(`no-thinking`,n.reasoning!==!0)}catch{}};c(),t.composerMeta.addEventListener(`model-change`,e=>{let t=e.detail?.id;t&&(o(t),c(t),n.updateModel(),r?.())})}async function m(t){let{refreshModels:n,applyIdentity:r,client:i}=t,{getAccounts:a,getProviderConfig:o}=await e(async()=>{let{getAccounts:e,getProviderConfig:t}=await import(`./main-DxjacmnX.js`).then(e=>e.t);return{getAccounts:e,getProviderConfig:t}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]));window.addEventListener(`slicc:accounts-changed`,()=>{n(),r(),i.updateModel();for(let e of a()){let t=o(e.providerId)?.refreshModels;t&&t().then(()=>{n(),i.updateModel()}).catch(()=>void 0)}})}export{l as wireWcNav};
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/quick-llm-B-hEdLQl.js","assets/chunk-aKtaBQYM.js","assets/account-store-CbXr_cFb.js","assets/preload-helper-zJ_50EbN.js","assets/dist-BmWy99kl.js","assets/event-stream-BJI_nGaK.js","assets/json-parse-BUunmmNl.js","assets/__vite-browser-external-C7iut881.js","assets/context-compaction-CFWyOzX1.js","assets/logger-DDBAeTLF.js","assets/src-x0cJ68Fe.js","assets/proxied-fetch-B5vr_AP8.js","assets/fetch-body-D2PwksUW.js","assets/secret-topology-Bp0wH2ni.js","assets/secrets-bridge-client-DXw32cXb.js","assets/panel-rpc-DqT2FG7c.js","assets/bedrock-camp-9-QEmC9Z.js","assets/transform-messages-DzB_lMo-.js","assets/tool-ui-DfXu6quJ.js","assets/icons-BU6llBsN.js","assets/llm-session-id-DVmZ9C2t.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{t as e}from"./preload-helper-zJ_50EbN.js";import{C as t}from"./wc-shell-BA3EumXB.js";var n=400,r=800,i=`You suggest the user's next prompt in a coding-agent chat. Based on the recent conversation, output ONE concrete follow-up the user might type next. Reply with just the prompt text — no quotes, no preamble, no list. Max 80 characters. If nothing useful comes to mind, reply exactly: What shall we build?`;function a(e,t){return e.length>t?`${e.slice(0,t)}…`:e}function o(e){let i=e.filter(e=>!e.isStreaming&&!e.queued&&e.source!==`lick`),o=[...i].reverse().find(e=>e.role===`assistant`),s=i.filter(e=>e.role===`user`).slice(-3);return!o||s.length===0?null:[...s.map(e=>`[user]: ${a(t(e.content),n)}`),`[assistant]: ${a(o.content,r)}`].join(`
|
|
3
|
-
|
|
4
|
-
`)}async function s(t){if(t.currentValue.length>0)return;let n=o(t.messages);if(!n){t.setPlaceholder(t.defaultPlaceholder);return}let r=await(t.quickLabelFn??(await e(async()=>{let{quickLabel:e}=await import(`./quick-llm-B-hEdLQl.js`).then(e=>e.n);return{quickLabel:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]))).quickLabel)({system:i,prompt:`Recent conversation:\n${n}`,maxTokens:40,signal:t.signal});t.signal?.aborted||t.currentValue.length>0||t.setPlaceholder(r&&r.length>0?r:t.defaultPlaceholder)}function c(e,t,n){t===n?(e.removeAttribute(`suggestion`),e.setAttribute(`placeholder`,t)):e.setAttribute(`suggestion`,t)}function l(e){let t=null;return()=>{e.inputCard.hasAttribute(`disabled`)||(t?.abort(),t=new AbortController,s({messages:e.getMessages(),currentValue:e.inputCard.value??``,setPlaceholder:t=>c(e.inputCard,t,e.defaultPlaceholder),defaultPlaceholder:e.defaultPlaceholder,signal:t.signal}).catch(()=>void 0))}}export{l as createPlaceholderRefresher};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/legacy-styles-4PP74ISo.js","assets/preload-helper-zJ_50EbN.js","assets/sprinkle-manager-CaMt7q2E.js","assets/main-DxjacmnX.js","assets/chunk-aKtaBQYM.js","assets/modulepreload-polyfill-Dezn_h7o.js","assets/account-store-CbXr_cFb.js","assets/dist-BmWy99kl.js","assets/event-stream-BJI_nGaK.js","assets/json-parse-BUunmmNl.js","assets/__vite-browser-external-C7iut881.js","assets/context-compaction-CFWyOzX1.js","assets/logger-DDBAeTLF.js","assets/src-x0cJ68Fe.js","assets/proxied-fetch-B5vr_AP8.js","assets/fetch-body-D2PwksUW.js","assets/secret-topology-Bp0wH2ni.js","assets/secrets-bridge-client-DXw32cXb.js","assets/panel-rpc-DqT2FG7c.js","assets/bedrock-camp-9-QEmC9Z.js","assets/transform-messages-DzB_lMo-.js","assets/tool-ui-DfXu6quJ.js","assets/clipboard-DgFtRQbq.js","assets/sprinkle-bridge-BB1Ge79t.js","assets/hid-device-registry-D2LsJCRr.js","assets/usb-operations-CkcrNzZw.js","assets/serial-port-registry-Bc4wlwED.js","assets/usb-device-registry-BP58Vi0S.js","assets/shared-mxZcIrza.js","assets/mime-types-ugOWOUZ9.js","assets/sprinkle-renderer-GiRRbdBx.js","assets/theme-BBwuyzvz.js","assets/setup-sprinkle-exec-C7SBZY7y.js","assets/dip-az2X5rT2.js","assets/wc-live-CjWoWLQ-.js","assets/wc-shell-BA3EumXB.js","assets/icons-BU6llBsN.js","assets/soundscape-cues-5_sT5Un6.js","assets/speech-CqQdPtyQ.js","assets/wc-shell-WkeczD9x.css","assets/tray-leader-Cy_sa2iJ.js","assets/wc-permissions-registry-CR1rTd2H.js","assets/quick-llm-B-hEdLQl.js","assets/llm-session-id-DVmZ9C2t.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{t as e}from"./preload-helper-zJ_50EbN.js";var t=`sprinkle:`,n=`slicc-sprinkle-icons`;function r(){try{let e=localStorage.getItem(n);if(!e)return{};let t=JSON.parse(e);if(typeof t!=`object`||!t)return{};let r={};for(let[e,n]of Object.entries(t))typeof n==`string`&&(r[e]=n);return r}catch{return{}}}function i(e){try{let t=new Set(e),i=Object.fromEntries(Object.entries(r()).filter(([e])=>t.has(e)));localStorage.setItem(n,JSON.stringify(i))}catch{}}function a(e,t){try{localStorage.setItem(n,JSON.stringify({...r(),[e]:t}))}catch{}}function o(e){return typeof e==`string`&&/^[a-z0-9]+(-[a-z0-9]+)*$/.test(e)}function s(e){return`${t}${e}`}function c(e){return e?.startsWith(t)?e.slice(9):null}var l=[{id:`files`,label:`files`,kind:`tool`},{id:`term`,label:`terminal`,kind:`tool`},{id:`memory`,label:`memory`,kind:`tool`}],u=class{#e;#t=new Map;#n=new Map;#r=new Map;#i=new Set;constructor(e){this.#e=e}seedDockItems(e){let t=r(),n=!1;for(let r of e)this.#n.has(r)||(this.#i.add(r),this.#n.set(r,{id:s(r),icon:t[r]??`sparkles`,label:r,kind:`sprinkle`}),n=!0);n&&this.#u()}dropUnconfirmedSeeds(){let e=!1;for(let t of this.#i)this.#r.has(t)||(this.#n.delete(t),e=!0);this.#i.clear(),e&&this.#u()}callbacks(){return{addSprinkle:(e,t,n,r,i)=>this.#a(e,t,n,i),removeSprinkle:e=>this.#o(e,{keepDockItem:!1}),minimizeSprinkle:e=>this.#s(e),registerSprinkle:(e,t,n)=>this.#c(e,t,n?.icon),unregisterSprinkle:e=>this.#l(e),closeSprinkleContent:e=>this.#o(e,{keepDockItem:!0})}}updateDockIcon(e,t){let n=this.#n.get(e);!n||n.icon===t||(this.#n.set(e,{...n,icon:t}),this.#u())}defaultIconNames(){return[...this.#n.entries()].filter(([,e])=>e.icon===`sparkles`).map(([e])=>e)}isOpen(e){return this.#r.has(e)}#a(e,t,n,r){let i=s(e),a=this.#r.get(e);a||(a=document.createElement(`slicc-surface`),a.setAttribute(`surface-id`,i),a.setAttribute(`layout`,`flex`),this.#e.workbenchBody.append(a),this.#r.set(e,a)),a.replaceChildren(n),this.#t.set(e,{id:i,label:t,kind:`sprinkle`,closable:!0}),this.#c(e,t,r?.icon),this.#u(),!r?.attention&&!r?.background&&this.#d(i)}#o(e,t){let n=s(e);this.#r.get(e)?.remove(),this.#r.delete(e),this.#t.delete(e),t.keepDockItem||this.#n.delete(e),this.#u(),this.#e.workbenchBody.getAttribute(`active`)===n&&this.#d(`files`)}#s(e){this.#e.workbenchBody.getAttribute(`active`)===s(e)&&(this.#e.shell.removeAttribute(`open`),this.#e.dock.removeAttribute(`active`))}#c(e,t,n){this.#i.delete(e);let i=o(n)?n:r()[e]??`sparkles`;this.#n.set(e,{id:s(e),icon:i,label:t,kind:`sprinkle`}),this.#u()}#l(e){this.#r.has(e)||(this.#n.delete(e),this.#u())}#u(){this.#e.tabBar.tabs=[...l,...this.#t.values()],this.#e.dock.items=[...this.#n.values()],this.#e.workbenchHeader.toggleAttribute(`hidden`,this.#t.size===0)}#d(e){this.#e.shell.setAttribute(`open`,``),this.#e.workbenchBody.setAttribute(`active`,e),this.#e.dock.setAttribute(`active`,e),this.#e.tabBar.setAttribute(`active`,e)}};async function d(t){let{refs:n,client:r,fs:a,instanceId:o,onAttachImage:s,log:l}=t,d=new u(n),{loadSprinkleStyles:m}=await e(async()=>{let{loadSprinkleStyles:e}=await import(`./legacy-styles-4PP74ISo.js`);return{loadSprinkleStyles:e}},__vite__mapDeps([0,1]));await m();let{SprinkleManager:h,readKnownSprinkleNames:g}=await e(async()=>{let{SprinkleManager:e,readKnownSprinkleNames:t}=await import(`./sprinkle-manager-CaMt7q2E.js`);return{SprinkleManager:e,readKnownSprinkleNames:t}},__vite__mapDeps([2,3,4,5,1,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]));d.seedDockItems(g());let{installSprinkleManagerHandlerOverChannel:_}=await e(async()=>{let{installSprinkleManagerHandlerOverChannel:e}=await import(`./sprinkle-bridge-channel-gxatjtur.js`);return{installSprinkleManagerHandlerOverChannel:e}},[]),{createSprinkleExecHandler:v}=await e(async()=>{let{createSprinkleExecHandler:e}=await import(`./setup-sprinkle-exec-C7SBZY7y.js`);return{createSprinkleExecHandler:e}},__vite__mapDeps([32,1])),{setDipExecHandler:y}=await e(async()=>{let{setDipExecHandler:e}=await import(`./dip-az2X5rT2.js`);return{setDipExecHandler:e}},__vite__mapDeps([33,34,1,6,4,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,35,36,3,5,22,37,38,39,24,25,26,27,28,29,40,23,30,31,41])),b=typeof chrome<`u`&&!!chrome?.runtime?.id,x=v(r),S=new h(a,e=>{e.type===`sprinkle`&&e.sprinkleName&&r.sendSprinkleLick(e.sprinkleName,e.body,e.targetScoop)},d.callbacks(),()=>{let e=r.getScoops().find(e=>e.isCone);e&&r.stopScoop(e.jid)},{...b?{autoOpenBehavior:`attention`}:{},inlineSprinkles:new Set([`welcome`]),execHandler:x,onAttachImage:s??(()=>{})});if(window.__slicc_sprinkleManager=S,y(x),o!==void 0){let e=_(S,{instanceId:o});window.addEventListener(`beforeunload`,()=>e(),{once:!0})}else if(b){let{handleSprinkleOp:t}=await e(async()=>{let{handleSprinkleOp:e}=await import(`./sprinkle-op-handler-Dta4p7Tc.js`);return{handleSprinkleOp:e}},[]);r.setSprinkleOpHandler(e=>{let{id:n,op:r,name:i,data:a}=e;t(S,n,r,i,a)})}p(n.tabBar,e=>S.close(e)),n.dock.addEventListener(`slicc-dock-select`,e=>{let t=c(e.detail?.id);t&&S.activate(t).catch(e=>l.error(`WC sprinkle activate failed`,e))});let C=!1,w=async()=>{if(await S.refresh(),S.available().length>0){d.dropUnconfirmedSeeds();let t=S.available().map(e=>e.name),{pruneKnownSprinkleNames:n}=await e(async()=>{let{pruneKnownSprinkleNames:e}=await import(`./sprinkle-manager-CaMt7q2E.js`);return{pruneKnownSprinkleNames:e}},__vite__mapDeps([2,3,4,5,1,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]));n(t),i(t)}await S.restoreOpenSprinkles().catch(e=>{l.warn(`WC shell: failed to restore open sprinkles`,e)}),C||(C=!0,e(async()=>{let{pickLucideIcon:e}=await import(`./quick-llm-B-hEdLQl.js`).then(e=>e.n);return{pickLucideIcon:e}},__vite__mapDeps([42,4,6,1,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,36,43])).then(({pickLucideIcon:e})=>f(d,S.available(),t=>e({subject:t}))).catch(()=>void 0).finally(()=>{C=!1}))};return w().catch(e=>l.warn(`WC shell: initial sprinkle resync failed`,e)),{manager:S,zone:d,resync:w}}async function f(e,t,n){let i=new Set(e.defaultIconNames()),s=r();for(let r of t){if(!i.has(r.name)||o(r.icon))continue;let t=s[r.name];if(t){e.updateDockIcon(r.name,t);continue}let c=await n(`"${r.title}" — a SLICC sprinkle panel (${r.name})`);c&&(a(r.name,c),e.updateDockIcon(r.name,c))}}function p(e,t){e.addEventListener(`tab-close`,e=>{let n=c(e.detail?.id);n&&t(n)})}export{u as WcSprinkleZone,d as wireWcSprinkles};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/panel-rpc-DqT2FG7c.js","assets/chunk-aKtaBQYM.js","assets/panel-rpc-handlers-BZN3D1Ho.js","assets/preload-helper-zJ_50EbN.js","assets/account-store-CbXr_cFb.js","assets/dist-BmWy99kl.js","assets/event-stream-BJI_nGaK.js","assets/json-parse-BUunmmNl.js","assets/__vite-browser-external-C7iut881.js","assets/context-compaction-CFWyOzX1.js","assets/logger-DDBAeTLF.js","assets/src-x0cJ68Fe.js","assets/proxied-fetch-B5vr_AP8.js","assets/fetch-body-D2PwksUW.js","assets/secret-topology-Bp0wH2ni.js","assets/secrets-bridge-client-DXw32cXb.js","assets/bedrock-camp-9-QEmC9Z.js","assets/transform-messages-DzB_lMo-.js","assets/tool-ui-DfXu6quJ.js","assets/main-DxjacmnX.js","assets/modulepreload-polyfill-Dezn_h7o.js","assets/clipboard-DgFtRQbq.js","assets/hid-device-registry-D2LsJCRr.js","assets/usb-operations-CkcrNzZw.js","assets/serial-port-registry-Bc4wlwED.js","assets/usb-device-registry-BP58Vi0S.js","assets/wc-permissions-registry-CR1rTd2H.js","assets/tray-leader-Cy_sa2iJ.js","assets/remote-cdp-transport-BrkfZae9.js","assets/hosted-config-apply-uAym2aS5.js","assets/tray-leave-runtime-AaVCYWrw.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{t as e}from"./preload-helper-zJ_50EbN.js";import{P as t,R as n}from"./account-store-CbXr_cFb.js";import{a as r}from"./context-compaction-CFWyOzX1.js";import{t as i}from"./logger-DDBAeTLF.js";import{i as a}from"./src-x0cJ68Fe.js";import{r as o}from"./panel-rpc-DqT2FG7c.js";import{C as s,_ as c,c as l,f as u,g as d,l as f,v as p}from"./main-DxjacmnX.js";import{a as m,c as h,i as g,l as ee,o as _,t as v}from"./remote-cdp-transport-BrkfZae9.js";import"./browser-D0vICVpZ.js";import{i as te,n as y,t as ne}from"./tray-leader-Cy_sa2iJ.js";import{a as b,i as x,n as S,o as C,r as w,t as T}from"./page-follower-tray-_5YHuZDk.js";i(`scoops.tray-leave`),i(`scoops.tray-join`);var E=null;function D(e){E=e}function O(){return E?.()??[]}var k=`slicc.leaderTrayFollowers`;function A(e,t=globalThis.localStorage){try{t?.setItem(k,JSON.stringify(e))}catch{}}async function j(t){let{instanceId:n,browser:r,remoteCdpBridge:i,remoteCdpPushChannel:a,getLeader:o,performTrayLeaveLocally:c,window:l}=t,{installPanelRpcHandler:u,createPanelRpcEventEmitter:d}=await e(async()=>{let{installPanelRpcHandler:e,createPanelRpcEventEmitter:t}=await import(`./panel-rpc-DqT2FG7c.js`).then(e=>e.i);return{installPanelRpcHandler:e,createPanelRpcEventEmitter:t}},__vite__mapDeps([0,1])),{createStandalonePanelRpcHandlers:f}=await e(async()=>{let{createStandalonePanelRpcHandlers:e}=await import(`./panel-rpc-handlers-BZN3D1Ho.js`);return{createStandalonePanelRpcHandlers:e}},__vite__mapDeps([2,3,4,1,5,6,7,8,9,10,11,12,13,14,15,0,16,17,18,19,20,21,22,23,24,25])),{getLeaderPermissionsSurface:p}=await e(async()=>{let{getLeaderPermissionsSurface:e}=await import(`./wc-permissions-registry-CR1rTd2H.js`).then(e=>e.r);return{getLeaderPermissionsSurface:e}},__vite__mapDeps([26,1])),m=d({instanceId:n}),h=u({instanceId:n,handlers:f({resetTray:async()=>{let e=o();if(!e)throw Error(`no active tray session to reset`);return await e.reset()},leaveTray:async({workerBaseUrl:e,requestId:t})=>await c({workerBaseUrl:e,requestId:t}),joinTray:({joinUrl:e})=>(s(l.localStorage,e),l.dispatchEvent(new CustomEvent(`slicc:tray-join`,{detail:{joinUrl:e}})),{joinUrl:e}),emitEvent:(e,t)=>m.emit(e,t),emitCherrySliccEvent:(e,t,n)=>o()?.sync.emitCherrySliccEvent(e,t,n)??!1,mintPreview:async({entryPath:t,servedRoot:n,bridge:r,noBridge:i})=>{let a=o()?.currentLeaderSync;if(!a)throw Error(`serve: no active leader tray; cannot mint preview`);let{getLeaderTrayRuntimeStatus:s}=await e(async()=>{let{getLeaderTrayRuntimeStatus:e}=await import(`./tray-leader-Cy_sa2iJ.js`).then(e=>e.a);return{getLeaderTrayRuntimeStatus:e}},__vite__mapDeps([27,1,19,20,3,4,5,6,7,8,9,10,11,12,13,14,15,0,16,17,18,21])),c=s().session;if(!c)throw Error(`serve: leader tray has no active session`);let l=new URL(c.controllerUrl).pathname.split(`/`).pop()??``,{CHERRY_RUNTIME_TAG:u}=await e(async()=>{let{CHERRY_RUNTIME_TAG:e}=await import(`./remote-cdp-transport-BrkfZae9.js`).then(e=>e.u);return{CHERRY_RUNTIME_TAG:e}},__vite__mapDeps([28,1,10])),{mintPreviewViaWorker:d}=await e(async()=>{let{mintPreviewViaWorker:e}=await import(`./preview-mint-client-0bViE0n9.js`);return{mintPreviewViaWorker:e}},[]),f=a.getConnectedFollowers().some(e=>e.runtime===u),p=!i&&(r||f),{url:m}=await d({workerBaseUrl:c.workerBaseUrl,trayId:c.trayId,controllerToken:l,servedRoot:n,entryPath:t,allowLive:p});return a.broadcastPreviewOpen(m),{url:m,pushed:a.getConnectedFollowers().length}},listRemoteTargets:()=>r.listAllTargets(),remoteCdp:i,getPermissionsSurface:()=>p()})});l.addEventListener(`beforeunload`,()=>{h(),m.dispose(),i.disposeAll(),a?.close()},{once:!0})}async function M(r){let{log:i}=r;await new Promise(e=>setTimeout(e,5e3));try{let r=await fetch(`/api/hosted-bootstrap`,{signal:AbortSignal.timeout(1e4)});if(!r.ok)return;let a=await r.json(),o=a.accounts??(a.adobeImsToken?[{providerId:`adobe`,kind:`oauth`,accessToken:a.adobeImsToken}]:[]);a.model?localStorage.setItem(`selected-model`,a.model):localStorage.getItem(`selected-model`)||localStorage.setItem(`selected-model`,`adobe:claude-opus-4-6`);let[{applyHostedAccounts:s,prewarmHostedModels:c},l]=await Promise.all([e(()=>import(`./hosted-config-apply-uAym2aS5.js`),__vite__mapDeps([29,10])),e(()=>import(`./main-DxjacmnX.js`).then(e=>e.t),__vite__mapDeps([19,1,20,3,4,5,6,7,8,9,10,11,12,13,14,15,0,16,17,18,21]))]);await c(o,{getRefreshModels:e=>l.getProviderConfig(e).refreshModels});let u=JSON.parse(localStorage.getItem(`slicc_cloud_managed`)??`[]`);await s(o,{saveOAuthAccount:n,addAccount:l.addAccount,removeAccount:t,currentProviderIds:()=>l.getAccounts().map(e=>e.providerId),previouslyManaged:()=>u}),localStorage.setItem(`slicc_cloud_managed`,JSON.stringify(o.map(e=>e.providerId))),i.info(`hosted-leader: cone config applied`,{count:o.length})}catch(e){i.warn(`hosted-leader: bootstrap fetch failed; provider needs manual login`,{error:e instanceof Error?e.message:String(e)})}}function N(e,t){if(!e||!t||!e.startsWith(`/`)||t===`/`||/%2[eE]/.test(e)||e.split(`/`).some(e=>e===`.`||e===`..`))return!1;let n=t.endsWith(`/`)?t.slice(0,-1):t;return e===n?!0:e.startsWith(n+`/`)}var P=64*1024;async function F(e,t,n){let{reqId:r,servedRoot:i,asText:o}=e,s=e.vfsPath;if(!N(s,i)){t.send({type:`preview.response`,reqId:r,ok:!1,status:403});return}try{if((await n.stat(s)).type===`directory`&&(s=s.replace(/\/?$/,`/`)+`index.html`,!N(s,i))){t.send({type:`preview.response`,reqId:r,ok:!1,status:403});return}}catch{}let c,l;try{o?(c=await n.readFile(s,{encoding:`utf-8`}),l=`utf-8`):(c=a(await n.readFile(s,{encoding:`binary`})),l=`base64`)}catch(e){e?.code===`ENOENT`?t.send({type:`preview.response`,reqId:r,ok:!1,status:404}):t.send({type:`preview.response`,reqId:r,ok:!1,status:500,reason:String(e?.message??e)});return}let u=L(s),d=I(c,P);for(let e=0;e<d.length;e++)t.send({type:`preview.response`,reqId:r,ok:!0,mime:u,chunkIndex:e,totalChunks:d.length,content:d[e],encoding:l})}function I(e,t){if(e.length<=t)return[e];let n=[];for(let r=0;r<e.length;r+=t)n.push(e.slice(r,r+t));return n}function L(e){return/\.html?$/i.test(e)?`text/html`:/\.css$/i.test(e)?`text/css`:/\.m?js$/i.test(e)?`application/javascript`:/\.json$/i.test(e)?`application/json`:/\.svg$/i.test(e)?`image/svg+xml`:/\.png$/i.test(e)?`image/png`:/\.jpe?g$/i.test(e)?`image/jpeg`:/\.gif$/i.test(e)?`image/gif`:/\.webp$/i.test(e)?`image/webp`:/\.ico$/i.test(e)?`image/x-icon`:/\.woff2$/i.test(e)?`font/woff2`:/\.woff$/i.test(e)?`font/woff`:/\.ttf$/i.test(e)?`font/ttf`:/\.mp4$/i.test(e)?`video/mp4`:/\.webm$/i.test(e)?`video/webm`:/\.mp3$/i.test(e)?`audio/mpeg`:/\.pdf$/i.test(e)?`application/pdf`:/\.xml$/i.test(e)?`application/xml`:/\.wasm$/i.test(e)?`application/wasm`:`application/octet-stream`}i(`lick-manager`);var R=new Set([`navigate`]),z=class{runtimes=new Map;dirty=!1;setTargets(e,t){this.runtimes.set(e,t),this.dirty=!0}removeRuntime(e){this.runtimes.delete(e)&&(this.dirty=!0)}getEntries(){this.dirty=!1;let e=[];for(let[t,n]of this.runtimes)for(let r of n)e.push({targetId:`${t}:${r.targetId}`,localTargetId:r.targetId,runtimeId:t,title:r.title,url:r.url,isLocal:!1,kind:r.kind??`browser`,capabilities:r.capabilities});return e}hasChanged(){return this.dirty}getRuntimeIds(){return[...this.runtimes.keys()]}},B=i(`tray-leader-sync`);function V(e){return e?e.includes(`ios`)?`ios`:e.includes(`standalone`)?`standalone`:e.includes(`extension`)?`extension`:e.includes(`electron`)?`electron`:`unknown`:`unknown`}function H(e,t){switch(e){case`extension`:return`extension follower`;case`standalone`:return`standalone follower`;case`electron`:return`Electron follower`;case`ios`:return`iOS follower`;default:return t?`follower (${t})`:`follower`}}function U(e){return e.kind===`cherry`}function W(e,t){return e.filter(e=>U(e)&&t.requireNetwork?e.capabilities?.network===!0:!0)}var re=class e{options;followers=new Map;registry=new z;runtimeToBootstrap=new Map;pendingCDPRoutes=new Map;cdpChunkBuffers=new Map;remoteTransports=new Map;pendingTabOpenRoutes=new Map;tabOpenResolvers=new Map;pendingFsRoutes=new Map;fsResolvers=new Map;constructor(e){this.options=e}addFollower(e,t,n){this.removeFollower(e);let r=g(t),i=r.onMessage(t=>{this.handleFollowerMessage(e,t)}),a=new b({sendPing:()=>r.send({type:`ping`}),onDead:()=>{B.warn(`Follower keepalive dead, removing follower`,{bootstrapId:e}),this.removeFollower(e),this.options.onFollowerDead?.(e)}});a.start(),this.followers.set(e,{bootstrapId:e,sync:r,unsubscribe:i,keepalive:a,runtime:n?.runtime,connectedAt:n?.connectedAt,lastActivity:Date.now(),floatType:V(n?.runtime)}),B.info(`Follower added to sync`,{bootstrapId:e,followerCount:this.followers.size}),this.options.onFollowerCountChanged?.(this.followers.size),this.sendSnapshotToFollower(e),this.sendScoopsListToFollower(e),this.sendSprinklesListToFollower(e);let o=this.getConnectedEntries();o.length>0&&r.send({type:`targets.registry`,targets:o})}removeFollower(e){let t=this.followers.get(e);if(t){t.keepalive.stop(),t.unsubscribe(),t.sync.close(),this.followers.delete(e),this.followerBroadcastErrorLogAt.delete(e);for(let[t,n]of this.runtimeToBootstrap)if(n===e){this.cleanupRemoteTransports(t),this.registry.removeRuntime(t),this.runtimeToBootstrap.delete(t);break}this.registry.hasChanged()&&this.broadcastTargetRegistry(),B.info(`Follower removed from sync`,{bootstrapId:e,followerCount:this.followers.size}),this.options.onFollowerCountChanged?.(this.followers.size)}}followerBroadcastErrorLogAt=new Map;static BROADCAST_ERROR_THROTTLE_MS=6e4;broadcastToAllFollowers(t){let n=performance.now();for(let[r,i]of this.followers)try{i.sync.send(t),this.followerBroadcastErrorLogAt.delete(r)}catch(i){n-(this.followerBroadcastErrorLogAt.get(r)??-1/0)>e.BROADCAST_ERROR_THROTTLE_MS&&(this.followerBroadcastErrorLogAt.set(r,n),B.error(`Broadcast send to follower failed (channel may be stuck)`,{bootstrapId:r,messageType:t.type,error:i instanceof Error?i.message:String(i)}))}}broadcastEvent(e){if(this.followers.size===0)return;let t={type:`agent_event`,event:e,scoopJid:this.options.getScoopJid()};this.broadcastToAllFollowers(t)}broadcastUserMessage(e,t,n){if(this.followers.size===0)return;let i={type:`user_message_echo`,text:e,messageId:t,scoopJid:this.options.getScoopJid(),attachments:n?.length?r(n):n};this.broadcastToAllFollowers(i)}broadcastStatus(e){if(this.followers.size===0)return;let t={type:`status`,scoopStatus:e};this.broadcastToAllFollowers(t)}async sendSnapshotToFollower(e,t){let n=this.followers.get(e);if(!n)return;let r=t??n.selectedScoopJid??this.options.getScoopJid(),i;if(this.options.getMessagesForScoop&&r!==this.options.getScoopJid())try{i=await Promise.resolve(this.options.getMessagesForScoop(r))}catch(e){B.warn(`getMessagesForScoop failed, falling back to active scoop`,{targetJid:r,error:e instanceof Error?e.message:String(e)}),i=this.options.getMessages()}else i=this.options.getMessages();n.selectedScoopJid=r,ee(n.sync,i,r),B.debug(`Snapshot sent to follower`,{bootstrapId:e,messageCount:i.length,scoopJid:r})}sendScoopsListToFollower(e){let t=this.followers.get(e);if(!t)return;let n=this.options.getScoops;if(n)try{let e=n(),r=this.options.getScoopJid();t.sync.send({type:`scoops.list`,scoops:e,activeScoopJid:r})}catch(t){B.warn(`Failed to send scoops.list`,{bootstrapId:e,error:t instanceof Error?t.message:String(t)})}}sendSprinklesListToFollower(e){let t=this.followers.get(e);if(!t)return;let n=this.options.getSprinkles;if(n)try{let e=n();t.sync.send({type:`sprinkles.list`,sprinkles:e})}catch(t){B.warn(`Failed to send sprinkles.list`,{bootstrapId:e,error:t instanceof Error?t.message:String(t)})}}broadcastScoopsList(){if(this.followers.size===0)return;let e=this.options.getScoops;if(!e)return;let t;try{t=e()}catch(e){B.warn(`Failed to compute scoops list`,{error:e instanceof Error?e.message:String(e)});return}let n=this.options.getScoopJid(),r={type:`scoops.list`,scoops:t,activeScoopJid:n};this.broadcastToAllFollowers(r)}broadcastSprinklesList(){if(this.followers.size===0)return;let e=this.options.getSprinkles;if(!e)return;let t;try{t=e()}catch(e){B.warn(`Failed to compute sprinkles list`,{error:e instanceof Error?e.message:String(e)});return}let n={type:`sprinkles.list`,sprinkles:t};this.broadcastToAllFollowers(n)}broadcastSprinkleUpdate(e,t){if(this.followers.size===0)return;let n={type:`sprinkle.update`,sprinkleName:e,data:t};this.broadcastToAllFollowers(n)}broadcastPreviewOpen(e){if(this.followers.size===0)return;let t=`prv-${crypto.randomUUID()}`;this.broadcastToAllFollowers({type:`preview.open`,requestId:t,url:e})}static SPRINKLE_CHUNK_SIZE=32*1024;static SPRINKLE_CHUNK_THRESHOLD=64*1024;async handleSprinkleFetch(t,n,r){let i=this.followers.get(t);if(!i)return;let a=this.options.readSprinkleContent;if(!a){i.sync.send({type:`sprinkle.content`,requestId:n,sprinkleName:r,content:``,error:`Leader has no sprinkle content reader`});return}let o=null;try{o=await Promise.resolve(a(r))}catch(e){i.sync.send({type:`sprinkle.content`,requestId:n,sprinkleName:r,content:``,error:e instanceof Error?e.message:String(e)});return}if(o==null){i.sync.send({type:`sprinkle.content`,requestId:n,sprinkleName:r,content:``,error:`Sprinkle not found: ${r}`});return}if(o.length<=e.SPRINKLE_CHUNK_THRESHOLD){i.sync.send({type:`sprinkle.content`,requestId:n,sprinkleName:r,content:o});return}let s=e.SPRINKLE_CHUNK_SIZE,c=Math.ceil(o.length/s);for(let e=0;e<c;e++){let t=o.slice(e*s,(e+1)*s);i.sync.send({type:`sprinkle.content`,requestId:n,sprinkleName:r,content:t,chunkIndex:e,totalChunks:c})}}handleFollowerUserMessage(e,t){B.info(`Follower user message received`,{bootstrapId:e,messageId:t.messageId});let n=t.attachments?.length?r(t.attachments):t.attachments;this.options.onFollowerMessage(t.text,t.messageId,n)}handleFollowerSprinkleLick(e,t){B.info(`Follower sprinkle lick received`,{bootstrapId:e,sprinkleName:t.sprinkleName});let n=this.followers.get(e),r=H(n?.floatType??`unknown`,n?.runtime);try{this.options.onSprinkleLick?.(t.sprinkleName,t.body,t.targetScoop,r)}catch(e){B.warn(`onSprinkleLick handler threw`,{error:e instanceof Error?e.message:String(e)})}}handleFollowerLick(e,t){let n=t.event;if(!n||!R.has(n.type)){B.warn(`Rejecting malformed or non-forwardable lick from follower`,{bootstrapId:e,type:n?.type});return}let r=this.followers.get(e),{targetScoop:i,...a}=n,o={...a,originFollowerId:e,originLabel:H(r?.floatType??`unknown`,r?.runtime)};try{this.options.onForwardedLick?.(o,e)}catch(e){B.warn(`onForwardedLick handler threw`,{error:e instanceof Error?e.message:String(e)})}}handleFollowerTargetsAdvertise(e,t){B.info(`Follower targets advertised`,{bootstrapId:e,runtimeId:t.runtimeId,targetCount:t.targets.length});for(let e of[...this.remoteTransports.keys()]){let n=e.substring(0,e.indexOf(`:`));n!==`leader`&&!this.runtimeToBootstrap.has(n)&&n!==t.runtimeId&&(this.remoteTransports.get(e)?.disconnect(),this.remoteTransports.delete(e),B.debug(`Cleaned up orphaned remote transport on advertise`,{key:e}))}this.runtimeToBootstrap.set(t.runtimeId,e),this.registry.setTargets(t.runtimeId,t.targets),this.broadcastTargetRegistry()}handleFollowerMessage(e,t){switch(t.type){case`user_message`:this.handleFollowerUserMessage(e,t);break;case`abort`:B.info(`Follower abort received`,{bootstrapId:e}),this.options.onFollowerAbort();break;case`request_snapshot`:B.info(`Follower snapshot request received`,{bootstrapId:e,scoopJid:t.scoopJid}),this.sendSnapshotToFollower(e,t.scoopJid);break;case`scoops.select`:{B.info(`Follower selected scoop`,{bootstrapId:e,scoopJid:t.scoopJid});let n=this.followers.get(e);n&&(n.selectedScoopJid=t.scoopJid,this.sendSnapshotToFollower(e,t.scoopJid));break}case`sprinkles.refresh`:B.info(`Follower requested sprinkles refresh`,{bootstrapId:e}),this.sendSprinklesListToFollower(e);break;case`sprinkle.fetch`:this.handleSprinkleFetch(e,t.requestId,t.sprinkleName);break;case`sprinkle.lick`:this.handleFollowerSprinkleLick(e,t);break;case`lick`:this.handleFollowerLick(e,t);break;case`targets.advertise`:this.handleFollowerTargetsAdvertise(e,t);break;case`cdp.request`:{let{requestId:n,targetRuntimeId:r,localTargetId:i,method:a,params:o,sessionId:s}=t;r===`leader`?this.executeLocalCDP(n,i,a,o,s,e):this.forwardCDPRequest(n,r,i,a,o,s,e);break}case`cdp.response`:this.handleCDPResponse(t);break;case`cdp.event`:this.handleCDPEvent(e,t.method,t.params,t.sessionId);break;case`tab.open`:{let{requestId:n,targetRuntimeId:r,url:i}=t;r===`leader`?this.executeLocalTabOpen(n,i,e):this.forwardTabOpen(n,r,i,e);break}case`tab.opened`:this.handleTabOpenResponse(t.requestId,t.targetId);break;case`tab.open.error`:this.handleTabOpenError(t.requestId,t.error);break;case`fs.request`:{let{requestId:n,targetRuntimeId:r,request:i}=t;r===`leader`?this.executeLocalFs(n,i,e):this.forwardFsRequest(n,r,i,e);break}case`fs.response`:this.handleFsResponse(t.requestId,t.response);break;case`cherry.host_event`:this.routeCherryHostEvent(e,t);break;case`ping`:{let t=this.followers.get(e);t&&(t.keepalive.receivePing(),t.lastActivity=Date.now(),t.sync.send({type:`pong`}));break}case`pong`:{let t=this.followers.get(e);t&&(t.keepalive.receivePong(),t.lastActivity=Date.now());break}}}setLocalTargets(e){this.registry.setTargets(`leader`,e),this.registry.hasChanged()&&this.broadcastTargetRegistry()}broadcastTargetRegistry(){if(this.followers.size===0)return;let e={type:`targets.registry`,targets:this.getConnectedEntries()};this.broadcastToAllFollowers(e)}getTargets(){return this.getConnectedEntries()}getConnectedEntries(){return this.registry.getEntries().filter(e=>{if(e.runtimeId===`leader`)return!0;let t=this.runtimeToBootstrap.get(e.runtimeId);return t?this.followers.has(t):!1})}createRemoteTransport(e,t){let n=new v({sendCDPRequest:(n,r,i,a)=>{let o=this.runtimeToBootstrap.get(e),s=o?this.followers.get(o):void 0;if(!s){this.remoteTransports.get(`${e}:${t}`)?.handleResponse(n,void 0,`Target runtime "${e}" not connected`);return}this.pendingCDPRoutes.set(n,{requesterBootstrapId:`__leader__`,requestId:n}),s.sync.send({type:`cdp.request`,requestId:n,localTargetId:t,method:r,params:i,sessionId:a})}});return this.remoteTransports.set(`${e}:${t}`,n),n}removeRemoteTransport(e,t){let n=`${e}:${t}`,r=this.remoteTransports.get(n);r&&(r.disconnect(),this.remoteTransports.delete(n))}cleanupRemoteTransports(e){let t=`${e}:`;for(let e of[...this.remoteTransports.keys()])e.startsWith(t)&&(this.remoteTransports.get(e)?.disconnect(),this.remoteTransports.delete(e),B.debug(`Cleaned up stale remote transport`,{key:e}));try{this.options.onRemoteTransportsCleaned?.(e)}catch(t){B.warn(`onRemoteTransportsCleaned handler threw`,{runtimeId:e,error:t instanceof Error?t.message:String(t)})}}getConnectedFollowers(){return[...this.runtimeToBootstrap.entries()].map(([e,t])=>{let n=this.followers.get(t);return{runtimeId:e,runtime:n?.runtime,connectedAt:n?.connectedAt,lastActivity:n?.lastActivity,floatType:n?.floatType}})}canRuntimeServeTeleport(e,t){if(t.runtime===`slicc-cherry`)return!1;let n=this.registry.getEntries().filter(t=>t.runtimeId===e);return n.length===0?!0:W(n,{requireNetwork:!0}).length>0}getBestFollowerForTeleport(){let e=[];for(let[t,n]of this.runtimeToBootstrap){let r=this.followers.get(n);r&&this.canRuntimeServeTeleport(t,r)&&e.push({runtimeId:t,bootstrapId:n,floatType:r.floatType,lastActivity:r.lastActivity})}if(e.length===0)return null;let t=e.filter(e=>e.floatType===`standalone`),n=t.length>0?t:e;return n.sort((e,t)=>t.lastActivity-e.lastActivity),n[0]}get hasFollowers(){return this.followers.size>0}stop(){for(let e of[...this.followers.keys()])this.removeFollower(e)}async executeLocalCDP(e,t,n,r,i,a){let o=this.followers.get(a);if(!o)return;let s=this.options.browserTransport;if(!s){o.sync.send({type:`cdp.response`,requestId:e,error:`Leader has no browser transport`});return}try{let t=await s.send(n,r,i);h(o.sync,e,t)}catch(t){o.sync.send({type:`cdp.response`,requestId:e,error:t instanceof Error?t.message:String(t)})}}forwardCDPRequest(e,t,n,r,i,a,o){let s=this.runtimeToBootstrap.get(t),c=s?this.followers.get(s):void 0,l=this.followers.get(o);if(!c){l&&l.sync.send({type:`cdp.response`,requestId:e,error:`Target runtime "${t}" not connected`});return}this.pendingCDPRoutes.set(e,{requesterBootstrapId:o,requestId:e}),c.sync.send({type:`cdp.request`,requestId:e,localTargetId:n,method:r,params:i,sessionId:a})}handleCDPResponse(e){let{requestId:t}=e,n=this.pendingCDPRoutes.get(t);if(!n)return;let r=_(this.cdpChunkBuffers,e);if(!r)return;if(this.pendingCDPRoutes.delete(t),n.requesterBootstrapId===`__leader__`){for(let e of this.remoteTransports.values())e.handleResponse(t,r.result,r.error);return}let i=this.followers.get(n.requesterBootstrapId);i&&h(i.sync,t,r.result,r.error)}handleCDPEvent(e,t,n,r){let i;for(let[t,n]of this.runtimeToBootstrap)if(n===e){i=t;break}if(!i)return;let a=`${i}:`;for(let[e,r]of this.remoteTransports)e.startsWith(a)&&r.handleEvent(t,n)}runtimeIdForBootstrap(e){for(let[t,n]of this.runtimeToBootstrap)if(n===e)return t}routeCherryHostEvent(e,t){if(!m(t))return;let n=this.options.onCherryHostEvent;if(!n){B.debug(`cherry.host_event received but no onCherryHostEvent wired`,{bootstrapId:e,name:t.name});return}let r=this.runtimeIdForBootstrap(e);try{n(r,t.name,t.detail)}catch(n){B.warn(`Failed to route cherry.host_event to cone`,{bootstrapId:e,name:t.name,error:n instanceof Error?n.message:String(n)})}}emitCherrySliccEvent(e,t,n){let r=e.indexOf(`:`),i=r>=0?e.slice(0,r):e,a=this.runtimeToBootstrap.get(i),o=a?this.followers.get(a):void 0;return o?o.sync.send({type:`cherry.slicc_event`,targetId:e,name:t,detail:n}):(B.warn(`emitCherrySliccEvent: owning follower not connected`,{targetId:e,name:t}),!1)}canRuntimeOpenTab(e){let t=this.registry.getEntries().filter(t=>t.runtimeId===e);return t.length===0?!0:t.some(e=>!U(e))}openRemoteTab(e,t){let n=this.runtimeToBootstrap.get(e),r=n?this.followers.get(n):void 0;if(!r)return Promise.reject(Error(`Target runtime "${e}" not connected`));if(!this.canRuntimeOpenTab(e))return Promise.reject(Error(`Target runtime "${e}" is a cherry host that cannot open tabs`));let i=`tab-open-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;return new Promise((e,n)=>{this.tabOpenResolvers.set(i,{resolve:e,reject:n}),this.pendingTabOpenRoutes.set(i,{requesterBootstrapId:`__leader__`,requestId:i}),r.sync.send({type:`tab.open`,requestId:i,url:t})})}async executeLocalTabOpen(e,t,n){let r=this.followers.get(n);if(!r)return;let i=this.options.browserTransport;if(!i){r.sync.send({type:`tab.open.error`,requestId:e,error:`Leader has no browser transport`});return}try{let n=(await i.send(`Target.createTarget`,{url:t,background:!0})).targetId;r.sync.send({type:`tab.opened`,requestId:e,targetId:`leader:${n}`})}catch(t){r.sync.send({type:`tab.open.error`,requestId:e,error:t instanceof Error?t.message:String(t)})}}forwardTabOpen(e,t,n,r){let i=this.runtimeToBootstrap.get(t),a=i?this.followers.get(i):void 0,o=this.followers.get(r);if(!a){o&&o.sync.send({type:`tab.open.error`,requestId:e,error:`Target runtime "${t}" not connected`});return}if(!this.canRuntimeOpenTab(t)){o&&o.sync.send({type:`tab.open.error`,requestId:e,error:`Target runtime "${t}" is a cherry host that cannot open tabs`});return}this.pendingTabOpenRoutes.set(e,{requesterBootstrapId:r,requestId:e}),a.sync.send({type:`tab.open`,requestId:e,url:n})}handleTabOpenResponse(e,t){let n=this.pendingTabOpenRoutes.get(e);if(!n)return;if(this.pendingTabOpenRoutes.delete(e),n.requesterBootstrapId===`__leader__`){let n=this.tabOpenResolvers.get(e);n&&(this.tabOpenResolvers.delete(e),n.resolve(t));return}let r=this.followers.get(n.requesterBootstrapId);r&&r.sync.send({type:`tab.opened`,requestId:e,targetId:t})}handleTabOpenError(e,t){let n=this.pendingTabOpenRoutes.get(e);if(!n)return;if(this.pendingTabOpenRoutes.delete(e),n.requesterBootstrapId===`__leader__`){let n=this.tabOpenResolvers.get(e);n&&(this.tabOpenResolvers.delete(e),n.reject(Error(t)));return}let r=this.followers.get(n.requesterBootstrapId);r&&r.sync.send({type:`tab.open.error`,requestId:e,error:t})}async executeLocalFs(e,t,n){let r=this.followers.get(n);if(!r)return;let i=this.options.vfs;if(!i){r.sync.send({type:`fs.response`,requestId:e,response:{ok:!1,error:`Leader has no VFS`}});return}let a=await x(i,t);for(let t of a)r.sync.send({type:`fs.response`,requestId:e,response:t})}forwardFsRequest(e,t,n,r){let i=this.runtimeToBootstrap.get(t),a=i?this.followers.get(i):void 0,o=this.followers.get(r);if(!a){o&&o.sync.send({type:`fs.response`,requestId:e,response:{ok:!1,error:`Target runtime "${t}" not connected`}});return}this.pendingFsRoutes.set(e,{requesterBootstrapId:r,requestId:e,chunks:[],totalChunks:1}),a.sync.send({type:`fs.request`,requestId:e,request:n})}handleFsResponse(e,t){let n=this.pendingFsRoutes.get(e);if(!n){let n=this.fsResolvers.get(e);if(n){n.responses.push(t);let r=t.ok&&t.totalChunks||1;n.responses.length>=r&&(this.fsResolvers.delete(e),n.resolve(n.responses))}return}if(n.requesterBootstrapId===`__leader__`){let n=this.fsResolvers.get(e);if(n){n.responses.push(t);let r=t.ok&&t.totalChunks||1;n.responses.length>=r&&(this.fsResolvers.delete(e),this.pendingFsRoutes.delete(e),n.resolve(n.responses))}return}let r=this.followers.get(n.requesterBootstrapId);r&&r.sync.send({type:`fs.response`,requestId:e,response:t}),n.chunks.push(t),n.totalChunks=t.ok&&t.totalChunks||1,n.chunks.length>=n.totalChunks&&this.pendingFsRoutes.delete(e)}sendFsRequest(e,t){if(e===`leader`){let e=this.options.vfs;return e?x(e,t):Promise.resolve([{ok:!1,error:`Leader has no VFS`}])}let n=this.runtimeToBootstrap.get(e),r=n?this.followers.get(n):void 0;if(!r)return Promise.resolve([{ok:!1,error:`Target runtime "${e}" not connected`}]);let i=`fs-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;return new Promise((e,n)=>{this.fsResolvers.set(i,{resolve:e,reject:n,responses:[]}),this.pendingFsRoutes.set(i,{requesterBootstrapId:`__leader__`,requestId:i,chunks:[],totalChunks:1}),r.sync.send({type:`fs.request`,requestId:i,request:t})})}},G=i(`page-leader-tray`);function K(e){return new re({getMessages:e.getMessages,getMessagesForScoop:e.getMessagesForScoop,getScoopJid:e.getScoopJid,getScoops:e.getScoops,getSprinkles:e.getSprinkles,readSprinkleContent:e.readSprinkleContent,onSprinkleLick:e.onSprinkleLick,onForwardedLick:e.onForwardedLick,onFollowerMessage:e.onFollowerMessage,onFollowerAbort:e.onFollowerAbort,onFollowerCountChanged:e.onFollowerCountChanged,onRemoteTransportsCleaned:e.onRemoteTransportsCleaned,onCherryHostEvent:e.onCherryHostEvent,browserAPI:e.browserAPI,browserTransport:e.browserTransport,vfs:e.vfs})}function q(e,t){return new w({sendControlMessage:t=>e().sendControlMessage(t),onPeerConnected:(e,n)=>{G.info(`Tray follower data channel opened`,{controllerId:e.controllerId,bootstrapId:e.bootstrapId,attempt:e.attempt,runtime:e.runtime}),t.addFollower(e.bootstrapId,n,{runtime:e.runtime,connectedAt:e.connectedAt??void 0})},onPeerDisconnected:(e,t)=>{G.info(`Tray follower disconnected`,{bootstrapId:e,reason:t})}})}function J(e,t,n,r,i){return new ne({workerBaseUrl:e.workerBaseUrl,runtime:e.runtime??`slicc-standalone`,...e.kind?{kind:e.kind}:{},...e.onLeaderReady?{onLeaderReady:e.onLeaderReady}:{},fetchImpl:n,...e._storeOverride?{store:e._storeOverride}:{},...e._webSocketFactory?{webSocketFactory:e._webSocketFactory}:{},onControlMessage:n=>{if(n.type===`webhook.event`){e.sendWebhookEvent(n.webhookId,n.headers,n.body);return}if(n.type===`preview.request`){let t=e.vfs;if(!t){i().sendControlMessage({type:`preview.response`,reqId:n.reqId,ok:!1,status:500,reason:`leader has no VFS bound`});return}F(n,{send:e=>i().sendControlMessage(e)},t).catch(e=>{G.error(`preview.request handling failed`,{error:e instanceof Error?e.message:String(e)})});return}if(n.type===`preview.revoked`){G.info(`Preview revoked by worker`,{previewToken:n.previewToken});return}t.handleControlMessage(n).catch(e=>{G.error(`Tray leader bootstrap handling failed`,{error:e instanceof Error?e.message:String(e)})})},onReconnecting:(e,t)=>{G.info(`Leader tray reconnecting`,{attempt:e,lastError:t})},onReconnected:e=>{G.info(`Leader tray reconnected`,{trayId:e.trayId}),r(e)},onReconnectGaveUp:(e,t)=>{G.error(`Leader tray reconnect gave up`,{lastError:e,attempts:t})}})}function Y(e,t){let n=new C(G,{failureMessage:`Leader CDP target refresh failed (best-effort, throttled)`,recoveryMessage:`Leader CDP target refresh recovered (stable for debounce window)`});return async()=>{let r;try{r=await e.browserAPI.listPages()}catch(e){n.reportFailure(e);return}n.reportSuccess();try{let e=r.map(e=>({targetId:e.targetId,title:e.title,url:e.url}));t.setLocalTargets(e)}catch(e){G.error(`Leader target broadcast failed (sync.setLocalTargets threw)`,{error:e instanceof Error?e.message:String(e)})}}}function X(e,t){return setInterval(()=>{try{e.broadcastScoopsList(),e.broadcastSprinklesList()}catch(e){G.error(`Failed to broadcast follower lists`,{error:e instanceof Error?e.message:String(e)})}},t)}function ie(e){return t=>{let n=e._historyOverride??ae();if(n)try{let e=p(n.href,t.workerBaseUrl,t.trayId);e!==n.href&&n.replaceState(null,``,e)}catch(e){G.debug(`URL bar update skipped`,{error:e instanceof Error?e.message:String(e)})}}}function Z(e){let t=e._refreshIntervalMs??5e3,n=e._fetchImpl??((e,t)=>fetch(e,t)),r,i=ie(e),a=K(e);e.browserAPI.setTrayTargetProvider(a);let o=q(()=>r,a);r=J(e,o,n,i,()=>r);let s=e.onAgentEvent(e=>a.broadcastEvent(e)),c=[],l=Y(e,a);c.push(setInterval(l,t)),l(),c.push(X(a,t)),r.start().then(e=>{i(e)}).catch(e=>{G.error(`Leader tray start failed`,{error:e instanceof Error?e.message:String(e)})});let u=!1;return{stop(){u=!0,s();for(let e of c)clearInterval(e);a.stop(),o.stop(),r.stop()},async reset(){return a.stop(),o.stop(),r.stop(),await r.clearSession(),i(await r.start()),y()},leader:r,peers:o,sync:a,get currentLeaderSync(){return u?null:a}}}function ae(){return typeof window>`u`||!window.history||!window.location?null:{get href(){return window.location.href},replaceState(e,t,n){window.history.replaceState(e,t,n)}}}function oe(e){let t=new Map,n=(e,t)=>`${e}:${t}`,r=(r,i)=>{let a=n(r,i),o=t.get(a);if(!o){let n=e.getSync();if(!n)throw Error(`remote-cdp: leader tray not started`);o={runtimeId:r,localTargetId:i,transport:n.createRemoteTransport(r,i),forwarders:new Map},t.set(a,o)}return o},i=n=>{let r=t.get(n);if(!r)return;for(let[e,t]of r.forwarders)r.transport.off(e,t.listener);r.forwarders.clear();let i=e.getSync();i?.removeRemoteTransport?i.removeRemoteTransport(r.runtimeId,r.localTargetId):r.transport.disconnect(),t.delete(n)};return{async send({runtimeId:e,localTargetId:t,method:n,params:i,sessionId:a,timeout:o}){return r(e,t).transport.send(n,i,a,o)},async subscribe({runtimeId:t,localTargetId:n,event:i}){let a=r(t,n),o=a.forwarders.get(i);if(o)return o.count+=1,{ok:!0};let s=r=>e.postEvent({runtimeId:t,localTargetId:n,method:i,params:r});return a.transport.on(i,s),a.forwarders.set(i,{listener:s,count:1}),{ok:!0}},async unsubscribe({runtimeId:e,localTargetId:r,event:i}){let a=t.get(n(e,r)),o=a?.forwarders.get(i);return!a||!o?{ok:!0}:(--o.count,o.count<=0&&(a.transport.off(i,o.listener),a.forwarders.delete(i)),{ok:!0})},async detach({runtimeId:e,localTargetId:t}){return i(n(e,t)),{ok:!0}},async openTab({runtimeId:t,url:n}){let r=e.getSync();if(!r?.openRemoteTab)throw Error(`remote-cdp: openRemoteTab not available`);return{targetId:await r.openRemoteTab(t,n)}},cleanupRuntime(e){let n=`${e}:`;for(let e of[...t.keys()])e.startsWith(n)&&i(e)},disposeAll(){for(let e of[...t.keys()])i(e)}}}function Q(e,t){let{browser:n,client:r,getController:i}=e;return{joinUrl:t,onSnapshot:e=>i()?.loadMessages(e),onUserMessage:(e,t,n,r)=>i()?.addUserMessage(e,r),onStatus:e=>i()?.setProcessing(e===`processing`),setChatAgent:e=>i()?.setAgent(e),browserAPI:n,onForwardingToggle:e=>r.sendSetFollowerForwarding(e),addSprinkle:(t,n,r)=>e.addSprinkle(t,n,r),removeSprinkle:t=>e.removeSprinkle(t)}}function se(e,t,n){let{client:r,refs:i}=e;return a=>({workerBaseUrl:a,getMessages:()=>e.getController()?.getMessages()??[],getScoopJid:()=>e.getSelectedJid(),getScoops:()=>r.getScoops().map(e=>({jid:e.jid,name:e.name,folder:e.folder,isCone:e.isCone,assistantLabel:e.assistantLabel,trigger:e.trigger})),getSprinkles:()=>{let t=new Set(e.sprinkleManager.opened());return e.sprinkleManager.available().map(e=>({name:e.name,title:e.title,path:e.path,open:t.has(e.name),autoOpen:e.autoOpen}))},readSprinkleContent:async t=>{let n=e.sprinkleManager.available().find(e=>e.name===t);if(!n)return null;try{let t=await(await e.openFs()).readFile(n.path,{encoding:`utf-8`});return typeof t==`string`?t:new TextDecoder(`utf-8`).decode(t)}catch{return null}},onSprinkleLick:(e,t,n,i)=>r.sendSprinkleLick(e,t,n,i),onFollowerMessage:(n,r,i)=>{e.getController()?.addUserMessage(n,i),e.agentHandle.sendMessage(n,r,i),t.leader?.sync.broadcastUserMessage(n,r,i)},onFollowerAbort:()=>e.agentHandle.stop(),onFollowerCountChanged:t=>{i.floatbar.setAttribute(`label`,t>0?`tray · ${t} follower${t===1?``:`s`}`:e.baseFloatLabel??`standalone · live`),A(O())},onRemoteTransportsCleaned:e=>n.cleanupRuntime(e),onForwardedLick:e=>r.sendForwardedLick(e),onCherryHostEvent:(e,t,n)=>r.sendCherryHostEvent(e,t,n),sendWebhookEvent:(e,t,n)=>r.sendWebhookEvent(e,t,n),onAgentEvent:t=>e.agentHandle.onEvent(t),browserAPI:e.browser,browserTransport:e.realCdpTransport,vfs:{async stat(t){return(await e.openFs()).stat(t)},async readFile(t,n){return(await e.openFs()).readFile(t,n)}}})}function ce(e,t){return{wireLeaderHooks:t=>{D(()=>t.peers.getPeers().map(e=>({runtimeId:S(e.bootstrapId),runtime:e.runtime,connectedAt:e.connectedAt??void 0}))),e.sprinkleManager.setSendToSprinkleHook((e,n)=>t.sync.broadcastSprinkleUpdate(e,n)),e.getController()?.setOnLocalUserMessage((e,n,r)=>t.sync.broadcastUserMessage(e,n,r)),e.getController()?.setOnLocalProcessingChange(e=>t.sync.broadcastStatus(e?`processing`:`ready`))},clearLeaderHooks:()=>{D(null),A([]),e.getController()?.setOnLocalUserMessage(void 0),e.getController()?.setOnLocalProcessingChange(void 0),e.sprinkleManager.setSendToSprinkleHook(void 0),t.disposeAll()}}}function le(e){return{runtime:`slicc-hosted-leader`,kind:`hosted`,onLeaderReady:t=>{fetch(`/api/cloud-status`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({joinUrl:t.joinUrl,trayId:t.trayId,controllerUrl:t.controllerUrl,webhookUrl:t.webhookUrl,runtime:t.runtime,sliccVersion:`5.17.0`}),signal:AbortSignal.timeout(1e4)}).catch(t=>{e.log.error(`failed to POST /api/cloud-status`,{error:String(t)})})}}}function $(e,t,n,r){let{window:i,log:a}=e;if(e.runtimeMode===`hosted-leader`){i.localStorage.removeItem(d);let o=i.localStorage.getItem(c);if(!o){a.error(`hosted-leader: tray worker base URL not seeded`);return}t.leader=Z({...n(o),...le(e)}),r(t.leader),M({log:a});return}let o=i.localStorage.getItem(d),s=i.localStorage.getItem(c);o?t.follower=T(Q(e,o)):s&&(t.leader=Z(n(s)),r(t.leader))}function ue(e,t,n,r){let{window:i,log:a}=e;i.addEventListener(`slicc:tray-join`,r=>{let i=r.detail?.joinUrl;if(!i)return;let o=t.leader;t.leader=null,n();let s=t.follower;t.follower=null;try{o?.stop()}catch(e){a.error(`leader stop threw during tray-join switch`,e)}try{s?.stop()}catch(e){a.error(`previous follower stop threw during tray-join switch`,e)}try{t.follower=T(Q(e,i))}catch(e){a.error(`tray-join failed`,e)}}),i.addEventListener(`slicc:tray-leave`,e=>{let t=e;r({workerBaseUrl:t.detail?.workerBaseUrl??null,requestId:t.detail?.requestId}).catch(e=>a.error(`tray-leave failed`,e))}),i.addEventListener(`beforeunload`,()=>{t.leader?.stop(),t.follower?.stop()},{once:!0})}async function de(t){let{client:n,instanceId:r,window:i,log:a}=t,s={leader:null,follower:null},c=typeof BroadcastChannel==`function`?new BroadcastChannel(o(r)):null,d=oe({getSync:()=>s.leader?.sync??null,postEvent:e=>{let t={type:`panel-rpc-push`,op:`remote-cdp-event`,payload:e};c?.postMessage(t)}});n.setForwardLickHandler(e=>{let t=s.follower?.currentSync;t?t.forwardLick(e):a.warn(`forward-lick dropped: no active follower sync`)});let p=se(t,s,d),{wireLeaderHooks:m,clearLeaderHooks:h}=ce(t,d),g=async t=>{let{performTrayLeave:n}=await e(async()=>{let{performTrayLeave:e}=await import(`./tray-leave-runtime-AaVCYWrw.js`);return{performTrayLeave:e}},__vite__mapDeps([30,19,1,20,3,4,5,6,7,8,9,10,11,12,13,14,15,0,16,17,18,21]));return await n({workerBaseUrl:t.workerBaseUrl,requestId:t.requestId},{getLeader:()=>s.leader,setLeader:e=>{s.leader=e},getFollower:()=>s.follower,setFollower:e=>{s.follower=e},startLeader:e=>Z(p(e)),clearLeaderHooks:h,wireLeaderHooks:m,storage:i.localStorage,log:a})};return await j({instanceId:r,browser:t.browser,remoteCdpBridge:d,remoteCdpPushChannel:c,getLeader:()=>s.leader,performTrayLeaveLocally:g,window:i}),$(t,s,p,m),te(e=>{i.localStorage.setItem(`slicc.leaderTrayStatus`,JSON.stringify(e))}),i.localStorage.setItem(`slicc.leaderTrayStatus`,JSON.stringify(y())),u(e=>{i.localStorage.setItem(l,JSON.stringify(e))}),i.localStorage.setItem(l,JSON.stringify(f())),A(O(),i.localStorage),ue(t,s,h,g),{getLeader:()=>s.leader,getFollower:()=>s.follower,performTrayLeaveLocally:g}}export{de as wireWcTray};
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
:root{--canvas: #fff;--bg: #f4f4f6;--ghost: #ececef;--desk: #ececef;--ink: #0a0a0a;--deep: #000;--txt-2: #737373;--txt-3: #a1a1a1;--line: #e5e5e5;--red: #c22b10;--green: #168a35;--green-bg: #ecf8ef;--green-line: #cbe9d3;--rose: #f43f5e;--cyan: #06b6d4;--violet: #8b5cf6;--amber: #f59e0b;--waffle: #b07823;--ctx: #f59e0b;--accent: color-mix(in srgb, var(--ctx) 55%, var(--ink));--shaderbg: #f7f2e3;--rainbow: linear-gradient(90deg, #f43f5e 0%, #f59e0b 28%, #06b6d4 64%, #8b5cf6 100%);--ui: "adobe-clean", "Inter", system-ui, sans-serif;--mono: "Source Code Pro", "JetBrains Mono", ui-monospace, monospace;--shadow-pane: rgba(10, 10, 10, .06) 0 8px 26px -10px;--barh: 44px;--ctl-h: 30px}.dark,[data-theme=dark]{--canvas: #161618;--bg: #0e0e10;--ghost: #1f1f22;--desk: #1f1f22;--ink: #f5f5f2;--deep: #f5f5f2;--txt-2: #9b9ba1;--txt-3: #6c6c72;--line: #2a2a2e;--shaderbg: #171410;--shadow-pane: rgba(0, 0, 0, .35) 0 8px 26px -10px}.xterm{cursor:text;position:relative;user-select:none;-ms-user-select:none;-webkit-user-select:none}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{position:absolute;top:0;z-index:5}.xterm .xterm-helper-textarea{padding:0;border:0;margin:0;position:absolute;opacity:0;left:-9999em;top:0;width:0;height:0;z-index:-5;white-space:nowrap;overflow:hidden;resize:none}.xterm .composition-view{background:#000;color:#fff;display:none;position:absolute;white-space:nowrap;z-index:1}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{background-color:#000;overflow-y:scroll;cursor:default;position:absolute;inset:0}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;left:0;top:0}.xterm-char-measure-element{display:inline-block;visibility:hidden;position:absolute;top:0;left:-9999em;line-height:normal}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility:not(.debug),.xterm .xterm-message{position:absolute;inset:0;z-index:10;color:transparent;pointer-events:none}.xterm .xterm-accessibility-tree:not(.debug) *::selection{color:transparent}.xterm .xterm-accessibility-tree{font-family:monospace;user-select:text;white-space:pre}.xterm .xterm-accessibility-tree>div{transform-origin:left;width:fit-content}.xterm .live-region{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{text-decoration:double underline}.xterm-underline-3{text-decoration:wavy underline}.xterm-underline-4{text-decoration:dotted underline}.xterm-underline-5{text-decoration:dashed underline}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:overline underline}.xterm-overline.xterm-underline-2{text-decoration:overline double underline}.xterm-overline.xterm-underline-3{text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;position:absolute;top:0;right:0;pointer-events:none}.xterm-decoration-top{z-index:2;position:relative}.xterm .xterm-scrollable-element>.scrollbar{cursor:default}.xterm .xterm-scrollable-element>.scrollbar>.scra{cursor:pointer;font-size:11px!important}.xterm .xterm-scrollable-element>.visible{opacity:1;background:#0000;transition:opacity .1s linear;z-index:11}.xterm .xterm-scrollable-element>.invisible{opacity:0;pointer-events:none}.xterm .xterm-scrollable-element>.invisible.fade{transition:opacity .8s linear}.xterm .xterm-scrollable-element>.shadow{position:absolute;display:none}.xterm .xterm-scrollable-element>.shadow.top{display:block;top:0;left:3px;height:3px;width:100%;box-shadow:var(--vscode-scrollbar-shadow, #000) 0 6px 6px -6px inset}.xterm .xterm-scrollable-element>.shadow.left{display:block;top:3px;left:0;height:100%;width:3px;box-shadow:var(--vscode-scrollbar-shadow, #000) 6px 0 6px -6px inset}.xterm .xterm-scrollable-element>.shadow.top-left-corner{display:block;top:0;left:0;height:3px;width:3px}.xterm .xterm-scrollable-element>.shadow.top.left{box-shadow:var(--vscode-scrollbar-shadow, #000) 6px 0 6px -6px inset}
|
|
2
|
-
/*! Bundled license information:
|
|
3
|
-
|
|
4
|
-
@xterm/xterm/css/xterm.css:
|
|
5
|
-
(**
|
|
6
|
-
* Copyright (c) 2014 The xterm.js authors. All rights reserved.
|
|
7
|
-
* Copyright (c) 2012-2013, Christopher Jeffrey (MIT License)
|
|
8
|
-
* https://github.com/chjj/term.js
|
|
9
|
-
* @license MIT
|
|
10
|
-
*
|
|
11
|
-
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
12
|
-
* of this software and associated documentation files (the "Software"), to deal
|
|
13
|
-
* in the Software without restriction, including without limitation the rights
|
|
14
|
-
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
15
|
-
* copies of the Software, and to permit persons to whom the Software is
|
|
16
|
-
* furnished to do so, subject to the following conditions:
|
|
17
|
-
*
|
|
18
|
-
* The above copyright notice and this permission notice shall be included in
|
|
19
|
-
* all copies or substantial portions of the Software.
|
|
20
|
-
*
|
|
21
|
-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
22
|
-
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
23
|
-
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
24
|
-
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
25
|
-
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
26
|
-
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
27
|
-
* THE SOFTWARE.
|
|
28
|
-
*
|
|
29
|
-
* Originally forked from (with the author's permission):
|
|
30
|
-
* Fabrice Bellard's javascript vt100 for jslinux:
|
|
31
|
-
* http://bellard.org/jslinux/
|
|
32
|
-
* Copyright (c) 2011 Fabrice Bellard
|
|
33
|
-
* The original design remains. The terminal itself
|
|
34
|
-
* has been extended to include xterm CSI codes, among
|
|
35
|
-
* other features.
|
|
36
|
-
*)
|
|
37
|
-
*/
|