sliccy 6.82.2 → 6.83.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/README.md +2 -2
- package/dist/node-server/_shared/tray-sync-protocol.d.ts +35 -1
- package/dist/node-server/_shared/tray-sync-protocol.d.ts.map +1 -1
- package/dist/node-server/_shared/tray-sync-protocol.js.map +1 -1
- package/dist/ui/.vite/manifest.json +159 -155
- package/dist/ui/assets/{account-store-BbV-E4VA.js → account-store-CUaiX7NT.js} +1 -1
- package/dist/ui/assets/{account-store-Du4KMRsD.js → account-store-Q0_kV_ML.js} +1 -1
- package/dist/ui/assets/{adobe-DvPSi_Y8.js → adobe-Bn8NzhvM.js} +1 -1
- package/dist/ui/assets/{adobe-DnaLLIrs.js → adobe-tzJNHCNZ.js} +1 -1
- package/dist/ui/assets/{apply-layout-zumqxyP5.js → apply-layout-sHZFprP1.js} +1 -1
- package/dist/ui/assets/{apps-DsRha9lX.js → apps-BsAmvfSD.js} +1 -1
- package/dist/ui/assets/{azure-openai-DFSx3NQg.js → azure-openai-Bx1Jq4er.js} +1 -1
- package/dist/ui/assets/{azure-openai-BA7ewtAt.js → azure-openai-scW04Rji.js} +1 -1
- package/dist/ui/assets/{cerebras-BRoQvu6p.js → cerebras-CaEIdeZW.js} +1 -1
- package/dist/ui/assets/{cerebras-BPnRS419.js → cerebras-D6qlhn89.js} +1 -1
- package/dist/ui/assets/{connect-surface-BHvptuYh.js → connect-surface-BnlgFRKx.js} +1 -1
- package/dist/ui/assets/{fs-Bcg4Bec-.js → fs-BeMwgVQ2.js} +2 -2
- package/dist/ui/assets/{fs-B1aiSRDT.js → fs-ConK7KOs.js} +1 -1
- package/dist/ui/assets/{github-BXQT985B.js → github-B_MQdd3s.js} +1 -1
- package/dist/ui/assets/{github-CgLzAPJq.js → github-BiIE4-Uv.js} +2 -2
- package/dist/ui/assets/{github-copilot-CTE_VBqL.js → github-copilot-CwD7n5ra.js} +1 -1
- package/dist/ui/assets/{github-copilot-BYGDi-6R.js → github-copilot-DZLtXB3L.js} +1 -1
- package/dist/ui/assets/{github-install-BTjRNYbF.js → github-install-3fbZEdvI.js} +1 -1
- package/dist/ui/assets/{github-zip-D3PpbKTN.js → github-zip-CciJQc3R.js} +1 -1
- package/dist/ui/assets/host-command-Biu9G4Zb.js +1 -0
- package/dist/ui/assets/{js-realm-worker-Dr6BwZIq.js → js-realm-worker-Ekc1OfpZ.js} +1 -1
- package/dist/ui/assets/{kernel-worker-CmI6rX75.js → kernel-worker-Cf2SsEOk.js} +661 -661
- package/dist/ui/assets/leader-session-events-DilgFtu7.js +1 -0
- package/dist/ui/assets/{local-llm-g-kPmq9_.js → local-llm-2jz5eOw3.js} +1 -1
- package/dist/ui/assets/{local-llm-L_0JNNQI.js → local-llm-DBoENF3o.js} +1 -1
- package/dist/ui/assets/{main-Dmkyfc4T.js → main-WocJXOEX.js} +3 -3
- package/dist/ui/assets/{mount-LiLvkL47.js → mount-CEcPva69.js} +1 -1
- package/dist/ui/assets/{mount-iG-Ub0OL.js → mount-DatiyqX-.js} +2 -2
- package/dist/ui/assets/{mount-recovery-z_yEokR5.js → mount-recovery-PWKPz9PQ.js} +1 -1
- package/dist/ui/assets/{new-session-BiqM5vvb.js → new-session-Lc2aSl_r.js} +2 -2
- package/dist/ui/assets/{oauth-bootstrap-1lf4ZPPP.js → oauth-bootstrap-DrGBPRcN.js} +2 -2
- package/dist/ui/assets/{onboarding-orchestrator-Do5uYmyg.js → onboarding-orchestrator-CaLdds3m.js} +1 -1
- package/dist/ui/assets/{openai-codex-evYc-WH8.js → openai-codex-DAy0zv1W.js} +1 -1
- package/dist/ui/assets/{openai-codex-CZqpJ3Qg.js → openai-codex-UCMWo_9Q.js} +1 -1
- package/dist/ui/assets/{openrouter-CyVsNaQN.js → openrouter-Bacc3SYZ.js} +1 -1
- package/dist/ui/assets/{openrouter-vSS2TgmX.js → openrouter-Co5vzvaI.js} +1 -1
- package/dist/ui/assets/{openrouter-oauth-shrI-Udg.js → openrouter-oauth-DY3PiQrW.js} +1 -1
- package/dist/ui/assets/{openrouter-oauth-DqQ0FkXm.js → openrouter-oauth-ZNJoLoYC.js} +1 -1
- package/dist/ui/assets/{panel-rpc-handlers-CMqbpXO7.js → panel-rpc-handlers-BegmTlZ2.js} +2 -2
- package/dist/ui/assets/{panelize-shell-5AeDZqWh.js → panelize-shell-BRldzPxv.js} +1 -1
- package/dist/ui/assets/{provider-lkpUS2lD.js → provider-DIJ1_6PT.js} +2 -2
- package/dist/ui/assets/{provider-D2pnXPyW.js → provider-DfAokr5E.js} +1 -1
- package/dist/ui/assets/{provider-settings-QcAF1gGA.js → provider-settings-B4Duse_I.js} +1 -1
- package/dist/ui/assets/{provider-settings-Ettlflas.js → provider-settings-I_SH_gJH.js} +1 -1
- package/dist/ui/assets/{provider-store-access-Bj0v3WXX.js → provider-store-access-BqhlSEsm.js} +2 -2
- package/dist/ui/assets/provider-store-access-ktr1d1JK.js +1 -0
- package/dist/ui/assets/{providers-09VlDXY5.js → providers-DPGQULsh.js} +1 -1
- package/dist/ui/assets/{providers-DzjYGYvz.js → providers-DfXdxg0S.js} +2 -2
- package/dist/ui/assets/{quick-llm-Bi-07E5x.js → quick-llm-B8Z2Ocbt.js} +1 -1
- package/dist/ui/assets/record-Z5ZWTUPJ.js +1 -0
- package/dist/ui/assets/{recovery-screen-CWB62SPn.js → recovery-screen-BXsQfKyg.js} +1 -1
- package/dist/ui/assets/{redirect-uri-CjI0jO0S.js → redirect-uri-C8Hbdx-0.js} +1 -1
- package/dist/ui/assets/{session-freezer-y1XlD6Br.js → session-freezer-Dovr1_nt.js} +4 -4
- package/dist/ui/assets/{setup-feature-flags-remote-DwgLJajn.js → setup-feature-flags-remote-CdgjLZca.js} +1 -1
- package/dist/ui/assets/{setup-standalone-prelude-QltolQav.js → setup-standalone-prelude-DKv92HTJ.js} +1 -1
- package/dist/ui/assets/{setup-sudo-DeWihbtz.js → setup-sudo-BsMJo787.js} +2 -2
- package/dist/ui/assets/{skills-CI6GCp3z.js → skills-BeeBcYsu.js} +1 -1
- package/dist/ui/assets/slicc-version-BklIwuih.js +1 -0
- package/dist/ui/assets/{src-O0pG9r4E.js → src-DsDPrXOS.js} +9 -0
- package/dist/ui/assets/{store-CfTnovBR.js → store-opqB8IW-.js} +1 -1
- package/dist/ui/assets/{store-BetRXtIc.js → store-r1tez8R4.js} +1 -1
- package/dist/ui/assets/{sudo-Dype6s1i.js → sudo-B9rBCOeG.js} +1 -1
- package/dist/ui/assets/{upgrade-detection-sc3MP9K4.js → upgrade-detection-DOJOVhma.js} +1 -1
- package/dist/ui/assets/{wc-attach-n6dBk1mM.js → wc-attach-DsMfUpx8.js} +2 -2
- package/dist/ui/assets/{wc-extension-fd64RHJC.js → wc-extension-BfIY33uJ.js} +2 -2
- package/dist/ui/assets/{wc-follower-DUqPrmGh.js → wc-follower-BtraTTv9.js} +3 -3
- package/dist/ui/assets/wc-live-CTChixg5.js +8 -0
- package/dist/ui/assets/wc-nav-Db9_Uf1h.js +2 -0
- package/dist/ui/assets/{wc-onboarding-B4ZC9nJR.js → wc-onboarding-BzZ0l8jN.js} +2 -2
- package/dist/ui/assets/{wc-placeholder-DrxkeKar.js → wc-placeholder-BIp2_wBH.js} +2 -2
- package/dist/ui/assets/{wc-settings-D-5vrimh.js → wc-settings-Dhd7mDhP.js} +2 -2
- package/dist/ui/assets/{wc-shell-D_s8bw6-.js → wc-shell-_lN0XC0N.js} +5 -5
- package/dist/ui/assets/{wc-sprinkles-CuzKLtai.js → wc-sprinkles-DWphJVrl.js} +2 -2
- package/dist/ui/assets/wc-tray--ByJUTx4.js +2 -0
- package/dist/ui/assets/wc-tray-scoops-B2RP8cgD.js +5 -0
- package/dist/ui/assets/{welcome-detection-C_XqnX4Z.js → welcome-detection-C2MvJDW4.js} +1 -1
- package/dist/ui/assets/{xai-grok-CtubxhSl.js → xai-grok-DvXz3bB1.js} +1 -1
- package/dist/ui/assets/{xai-grok-DcdpNuhK.js → xai-grok-v2vCQ-ou.js} +1 -1
- package/dist/ui/index.html +6 -6
- package/dist/ui/llm-proxy-sw.js +1 -1
- package/dist/ui/packages/webapp/index.html +6 -6
- package/package.json +1 -1
- package/dist/ui/assets/host-command-BsHBnvjR.js +0 -1
- package/dist/ui/assets/leader-session-events-C25D3hk0.js +0 -1
- package/dist/ui/assets/provider-store-access-DWkxGRZR.js +0 -1
- package/dist/ui/assets/record-QvM9I_bh.js +0 -1
- package/dist/ui/assets/slicc-version-DCeJ9vC9.js +0 -1
- package/dist/ui/assets/wc-live-CAiBLOX5.js +0 -8
- package/dist/ui/assets/wc-nav-EE-WHnIC.js +0 -2
- package/dist/ui/assets/wc-tray-CTsFtmGY.js +0 -2
- package/dist/ui/assets/wc-tray-scoops-Ff7B37ac.js +0 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./main-
|
|
1
|
+
import{t as e}from"./main-WocJXOEX.js";async function t(){try{let e=await navigator.serviceWorker?.getRegistrations?.();e&&await Promise.all(e.map(e=>e.unregister().catch(()=>!1)))}catch{}try{let e=await indexedDB.databases();await Promise.all(e.filter(e=>!!e.name).map(e=>new Promise(t=>{let n=indexedDB.deleteDatabase(e.name);n.onsuccess=()=>t(),n.onerror=()=>t(),n.onblocked=()=>t()})))}catch{}try{let e=navigator.storage;if(typeof e?.getDirectory==`function`){let t=await e.getDirectory(),n=[];for await(let e of t.keys())n.push(e);await Promise.all(n.map(e=>t.removeEntry(e,{recursive:!0}).catch(()=>{})))}}catch{}}function n(n,r,i={}){if(n.dataset.recoveryBusy===`1`)return;let a=i.wipe??t,o=i.reload??(()=>location.reload()),s=r instanceof Error?r.message:String(r),c=i.verdict===`browser-wedged`,l=document.createElement(`div`);l.style.cssText=`padding:2rem;text-align:center;font-family:system-ui;`;let u=document.createElement(`h1`);u.style.color=`var(--s2-negative, #e34850)`,u.textContent=c?`Your browser needs a restart`:`Failed to start`;let d=document.createElement(`p`);d.style.color=`var(--s2-content-tertiary, #717171)`,d.textContent=s;let f=document.createElement(`div`);f.style.cssText=`display:flex;gap:0.75rem;justify-content:center;flex-wrap:wrap;margin-top:1.5rem;`;let p=document.createElement(`button`);p.type=`button`,p.textContent=`Reset local data & reload`,p.dataset.variant=c?`demoted`:`destructive`,p.style.cssText=c?`padding:0.5rem 1rem;cursor:pointer;border:1px solid var(--s2-content-tertiary, #717171);background:transparent;color:inherit;border-radius:4px;`:`padding:0.5rem 1rem;cursor:pointer;border:1px solid var(--s2-negative, #e34850);background:var(--s2-negative, #e34850);color:#fff;border-radius:4px;`;let m=document.createElement(`button`);if(m.type=`button`,m.textContent=`Reload`,m.style.cssText=c?`padding:0.5rem 1rem;cursor:pointer;border:1px solid var(--s2-accent, #0265dc);background:var(--s2-accent, #0265dc);color:#fff;border-radius:4px;`:`padding:0.5rem 1rem;cursor:pointer;border:1px solid var(--s2-content-tertiary, #717171);background:transparent;color:inherit;border-radius:4px;`,p.addEventListener(`click`,()=>{p.disabled=!0,m.disabled=!0,p.textContent=`Resetting…`,n.dataset.recoveryBusy=`1`,(async()=>{try{await a()}catch{}for(let t of e)try{localStorage.removeItem(t)}catch{}o()})()}),m.addEventListener(`click`,()=>{o()}),c){let e=document.createElement(`p`);e.style.cssText=`max-width:34rem;margin:1rem auto 0;`,e.textContent=`This browser has stopped starting web workers — a browser process issue, not a problem with your data. Quit the browser completely, reopen it, and come back. Your local data is intact; resetting it will not fix this.`,l.append(u,d,e),f.append(m,p)}else l.append(u,d),f.append(p,m);for(l.append(f);n.firstChild;)n.removeChild(n.firstChild);n.appendChild(l)}export{n as renderBootRecoveryScreen};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{it as e}from"./account-store-
|
|
1
|
+
import{it as e}from"./account-store-Q0_kV_ML.js";async function t(){let t=e();if(t===`extension-direct`){let e=chrome;return e.identity?.getRedirectURL?.(`mcp-callback`)??`https://${e.runtime?.id??``}.chromiumapp.org/mcp-callback`}if(t===`node-rest`){let{getLocalApiBaseUrl:e}=await import(`./proxied-fetch-n2pCvcgW.js`).then(e=>e.n),t=e();if(t)return`${t}/auth/callback`}let{getOAuthPageOrigin:n}=await import(`./oauth-service-Bbrrl8Mr.js`),{origin:r}=await n();return`${r}${t===`extension-delegate`?`/auth/mcp-callback`:`/auth/callback`}`}export{t};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/quick-llm-
|
|
2
|
-
import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{Q as t,X as n,Z as r}from"./account-store-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/quick-llm-B8Z2Ocbt.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/account-store-CUaiX7NT.js","assets/preload-helper-Czpn1I53.js","assets/bedrock-camp-qpZqnqLa.js","assets/diagnostics-DN_idNHx.js","assets/transform-messages-N_eMsP2M.js","assets/provider-env-CTOcDKrQ.js","assets/__vite-browser-external-5eBdwsFd.js","assets/openrouter.models-gbjkpjE_.js","assets/libesm-BI4UHVqp.js","assets/logger-DDBAeTLF.js","assets/src-CAWTvdAa.js","assets/proxied-fetch-B4g-4VbQ.js","assets/base64-DpPqYZJF.js","assets/runtime-env-Dlaokqg1.js","assets/fetch-body-D2PwksUW.js","assets/float-topology-BgioAcOd.js","assets/runtime-env-E-i2SW1s.js","assets/secret-topology-xLmXoozo.js","assets/secrets-bridge-client-cWDAnFqs.js","assets/port-bridge-client-BbVs1yhx.js","assets/image-markers-BXtVm4og.js","assets/tool-ui-DfXu6quJ.js","assets/providers-DfXdxg0S.js","assets/panel-rpc-B3MSVImO.js","assets/llm-session-id-bZQs6gBN.js","assets/icons-ZLR7gmJ4.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{Q as t,X as n,Z as r}from"./account-store-CUaiX7NT.js";import{t as i}from"./preload-helper-Czpn1I53.js";import{l as a}from"./bedrock-camp-qpZqnqLa.js";import{t as o}from"./logger-DDBAeTLF.js";import{t as s}from"./attachments-CByeG2Ru.js";import{t as c}from"./types-idfTVsM8.js";import{t as l}from"./icons-ZLR7gmJ4.js";import{c as u,l as d,n as f,r as ee,t as p,u as te}from"./record-Z5ZWTUPJ.js";import{a as ne}from"./dictation-priming-CNllGgNq.js";import"./agent-message-to-chat-_cvF5A5g.js";var re=`---
|
|
3
3
|
writablePaths:
|
|
4
4
|
- /workspace/CLAUDE.md
|
|
5
5
|
visiblePaths:
|
|
@@ -133,7 +133,7 @@ MEMORY.md is user-edited only: the curator intentionally has read-only access to
|
|
|
133
133
|
|
|
134
134
|
Frontmatter supports a strict YAML subset. Arrays may use the block form above (with optional # comment tails) or inline form such as [cat, grep]. \`allowedCommands\` is additive: listed commands extend the built-in base set without replacing it. Inline entries containing commas must be quoted, for example ["/knowledge/lars,rebecca/"].
|
|
135
135
|
-->
|
|
136
|
-
`,ie=`/cones`,m=`/workspace/skills`;function h(e){if(
|
|
136
|
+
`,ie=`/cones`,m=`/workspace/skills`;function h(e){if(u(e)){if(ee(e))return{root:`/workspace`,memoryPath:`/workspace/CLAUDE.md`,scratch:`/tmp`};let t=`${ie}/${e.folder}`;return{root:`${t}/workspace`,memoryPath:`${t}/CLAUDE.md`,scratch:`/tmp`}}let t=`/scoops/${e.folder}`;return{root:`${t}/workspace`,memoryPath:`${t}/CLAUDE.md`,scratch:t}}var g=Object.freeze(h({parentJid:null,folder:p}));function ae(e,t){let n=[...e],r=d(n,t)??te(n)[0];return r?h(r):g}function oe(e){let t=`${e.root}/`,n=`${m}/`;return n.startsWith(t)?[t]:[t,n]}var se=[`off`,`minimal`,`low`,`medium`,`high`,`xhigh`];function ce(e){return typeof e==`string`&&se.includes(e)}o(`agent-bridge`);var le=`agent: name already in use`,_=o(`cone-memory-budget`),ue=4e3,de=2e3,fe=1.25,pe=g.memoryPath,me=`/sessions/index.json`,he=4096,ge=/^## Auto-extracted/m,_e=`Consolidate the auto-extracted memory bullets below into a single tighter set of durable memories.
|
|
137
137
|
|
|
138
138
|
Rules:
|
|
139
139
|
- Output ONLY a single \`## Auto-extracted (consolidated)\` heading followed by markdown bullets.
|
|
@@ -150,7 +150,7 @@ ${n}
|
|
|
150
150
|
`}${s}\n`}async function be(e){if(!e.model||!e.apiKey)return{restructured:!1,reason:`no-llm`};let t=e.memoryPath??pe,n=``;try{let r=await e.vfs.readFile(t,{encoding:`utf-8`});n=typeof r==`string`?r:new TextDecoder().decode(r)}catch{return{restructured:!1,reason:`missing-file`}}let r=await y(e.vfs),i=v(r),a=i*fe;if(n.length<=a)return{restructured:!1,reason:`under-threshold`};_.info(`Cone memory over threshold — restructuring`,{size:n.length,budget:i,threshold:a,sessionCount:r});try{let r=await ye({currentContent:n,budget:i,model:e.model,apiKey:e.apiKey,headers:e.headers,signal:e.signal});return await e.vfs.writeFile(t,r),_.info(`Cone memory restructured`,{before:n.length,after:r.length}),{restructured:!0}}catch(e){return _.warn(`Cone memory restructure failed — leaving appended content in place`,{error:e instanceof Error?e.message:String(e)}),{restructured:!1,reason:`error`}}}var b=o(`agentic-memory`),xe=`/shared/MEMORY.md`,Se=1200,Ce=e=>[e.memoryPath],we=e=>[`/sessions/`,`/shared/`,...oe(e)],Te=`awk.cat.cp.cut.date.diff.du.echo.file.find.grep.head.jq.ls.mkdir.mount.mv.nl.od.printf.readlink.sed.sort.stat.tail.touch.tr.uniq.upskill.wc.xxd`.split(`.`),Ee=new Set([`writablePaths`,`visiblePaths`,`allowedCommands`]),De=new Set([`model`,`timeoutSeconds`,`thinkingLevel`]),Oe=`medium`,x=3e4;function S(e){return e===`cone`?`memory-curator`:`memory-curator-${e}`}function ke(e){let t=S(e);return Ae.test(t)?t:S(p)}var Ae=/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/;function je(e){return`/scoops/agent-${ke(e)}`}var C=je(p);function Me(e){return h({parentJid:null,folder:e?.folder??`cone`})}function w(e,t){if(t.root===g.root)return e;if(e===g.memoryPath)return t.memoryPath;if(e===`/workspace/skills`||e.startsWith(`/workspace/skills/`))return e;let n=`${g.root}/`;return e===g.root?t.root:e.startsWith(n)?`${t.root}/${e.slice(n.length)}`:e}function Ne(e,t){let n=`${m}/`,r=e=>e.some(e=>n.startsWith(e.endsWith(`/`)?e:`${e}/`)),i=e.map(e=>w(e,t));return r(e)&&!r(i)&&i.push(n),i}async function Pe(e){try{if(e.signal?.aborted)return{ok:!1,reason:`aborted`,legacyFallbackSafe:!1};let t=Me(e.cone),n=je(e.cone?.folder??`cone`),r=await Fe(e.vfs,t),i=Ue(r,We(Ge(r.promptTemplate,{MEMORY_PATH:t.memoryPath,SESSION_ARCHIVE_PATH:e.sessionArchivePath,SESSION_COUNT:String(e.sessionCount),BUDGET_CHARS:String(v(e.sessionCount)),SCRATCH_DIR:n,TODAY:e.today??new Date().toISOString().slice(0,10)}),n),e.sessionArchivePath,t,e.cone);e.signal&&(i.signal=e.signal);let a=await Ke(Promise.resolve().then(()=>e.spawn(i)),r.timeoutSeconds*1e3+x,e.signal);if(a.type===`timeout`)return b.warn(`Agentic memory wait timed out past the in-run bound + grace`,{timeoutSeconds:r.timeoutSeconds,graceMs:x}),{ok:!1,reason:`timeout`,legacyFallbackSafe:!1};if(a.type===`aborted`)return{ok:!1,reason:`aborted`,legacyFallbackSafe:!1};if(a.type===`error`)return{ok:!1,reason:A(a.error),legacyFallbackSafe:!0};if(a.result.exitCode!==0){let e=(a.result.finalText??``).startsWith(le);return{ok:!1,reason:a.result.finalText||`exit-${a.result.exitCode}`,legacyFallbackSafe:!e}}return{ok:!0,report:a.result.finalText}}catch(e){return b.warn(`Agentic memory pass failed`,{error:A(e)}),{ok:!1,reason:A(e),legacyFallbackSafe:!1}}}async function Fe(e,t=g){try{let n=await e.readFile(xe,{encoding:`utf-8`});return T(typeof n==`string`?n:new TextDecoder().decode(n),t)}catch(e){return b.warn(`Could not load valid MEMORY.md; using built-in default`,{error:A(e)}),T(re,t)}}function T(e,t=g){let n=e.replace(/^\uFEFF/,``).replace(/\r\n?/g,`
|
|
151
151
|
`).match(/^---\s*\n([\s\S]*?)\n---\s*\n([\s\S]*)$/);if(!n?.[2].trim())throw Error(`MEMORY.md requires frontmatter and a prompt`);let r=Le(n[1]),i=D(r,`writablePaths`,Ce(t));if(i.length===0)throw Error(`writablePaths must not be empty`);O(i,`writablePaths`);let a=D(r,`visiblePaths`,we(t));O(a,`visiblePaths`);let o=He(r.timeoutSeconds),s=Ve(r.model,`model`);return{writablePaths:i.map(e=>w(e,t)),visiblePaths:Ne(a,t),allowedCommands:[...new Set([...Te,...D(r,`allowedCommands`,[])])],...s?{model:s}:{},thinkingLevel:Ie(r.thinkingLevel),timeoutSeconds:o,promptTemplate:n[2].trim()}}function Ie(e){if(e===void 0)return Oe;if(typeof e!=`string`||!ce(e))throw Error(`thinkingLevel must be one of ${se.join(`, `)}`);return e}function Le(e){let t={},n=e.split(`
|
|
152
152
|
`);for(let e=0;e<n.length;e+=1){let r=n[e];if(!r.trim()||r.trimStart().startsWith(`#`))continue;let i=r.match(/^([A-Za-z][A-Za-z0-9]*):\s*(.*)$/);if(!i)throw Error(`Invalid frontmatter line: ${r}`);let[,a,o]=i;if(Ee.has(a)){let r=Re(n,e,o);t[a]=r.value,e=r.lastIndex}else if(De.has(a)&&o.trim())t[a]=E(o);else throw Error(`Unsupported or empty frontmatter field: ${a}`)}return t}function Re(e,t,n){if(n.trim()){let e=n.trim();if(!e.startsWith(`[`)||!e.endsWith(`]`))throw Error(`Expected an array`);let r=e.slice(1,-1).trim();return{value:r?ze(r):[],lastIndex:t}}let r=[],i=t;for(let n=t+1;n<e.length;n+=1){let t=e[n].match(/^\s+-\s+(.+)$/);if(!t)break;r.push(E(Be(t[1]))),i=n}return{value:r,lastIndex:i}}function ze(e){let t=[],n=0,r;for(let i=0;i<e.length;i+=1){let a=e[i];a===`"`||a===`'`?r=r===a?void 0:r??a:a===`,`&&!r&&(t.push(E(e.slice(n,i))),n=i+1)}if(r)throw Error(`Unclosed quoted value`);return t.push(E(e.slice(n))),t}function Be(e){let t;for(let n=0;n<e.length;n+=1){let r=e[n];if(r===`"`||r===`'`)t=t===r?void 0:t??r;else if(r===`#`&&!t&&(n===0||/\s/.test(e[n-1])))return e.slice(0,n).trimEnd()}return e}function E(e){let t=e.trim();if(!t)throw Error(`Empty frontmatter value`);let n=t[0];if((n===`"`||n===`'`)&&t.at(-1)===n)return t.slice(1,-1);if(n===`"`||n===`'`)throw Error(`Unclosed quoted value`);return t}function D(e,t,n){let r=e[t];if(r===void 0)return[...n];if(!Array.isArray(r)||r.some(e=>!e))throw Error(`${t} is invalid`);return[...r]}function Ve(e,t){if(e!==void 0){if(typeof e!=`string`||!e)throw Error(`${t} is invalid`);return e}}function He(e){if(e===void 0)return 600;if(typeof e!=`string`)throw Error(`timeoutSeconds is invalid`);let t=Number(e);if(!Number.isFinite(t)||t<=0)throw Error(`timeoutSeconds must be positive`);return Math.min(t,Se)}function O(e,t){if(e.some(e=>!e.startsWith(`/`)||e.includes(`\0`)||t===`writablePaths`&&e===`/`))throw Error(`${t} must contain absolute VFS paths`)}function k(e){return`/sessions/.curated/${e.slice(e.lastIndexOf(`/`)+1)}`}function Ue(e,t,n,r,i){let a=e.model===`parent`||e.model===`cone`;return{cwd:r.root,writablePaths:e.writablePaths,visiblePaths:e.visiblePaths,allowedCommands:e.allowedCommands,prompt:t,thinkingLevel:e.thinkingLevel,persistSession:!0,name:ke(i?.folder??`cone`),...i?.jid?{parentJid:i.jid}:{},notifyOnComplete:!0,successReceiptPath:k(n),maxWallClockMs:e.timeoutSeconds*1e3,...!a&&e.model?{modelId:e.model}:{}}}function We(e,t){return t===C?e:e.replaceAll(C,t)}function Ge(e,t){let n=e;for(let[e,r]of Object.entries(t))n=n.replaceAll(`{{${e}}}`,r);return n}function Ke(e,t,n){return new Promise(r=>{let i=!1,a=e=>{i||(i=!0,clearTimeout(s),n?.removeEventListener(`abort`,o),r(e))},o=()=>a({type:`aborted`}),s=setTimeout(()=>a({type:`timeout`}),t);n?.addEventListener(`abort`,o,{once:!0}),e.then(e=>a({type:`result`,result:e}),e=>a({type:`error`,error:e}))})}function A(e){return e instanceof Error?e.message:String(e)}var j=`/sessions`,M=`/sessions/index.json`;async function N(e){try{let t=await e.readFile(M,{encoding:`utf-8`}),n=typeof t==`string`?t:new TextDecoder().decode(t),r=JSON.parse(n);return Array.isArray(r)?r:[]}catch{return[]}}function P(e){return`${j}/${e.filename}`}function F(e){let t=e,n=`Untitled`,r={},i=t.match(/^---\n([\s\S]*?)\n---\n+/);if(i){t=t.slice(i[0].length);let e=L(i[1],`cost`),a=L(i[1],`models`);e&&(r.cost=e),a&&(r.models=a);let o=i[1].match(/^cone:\s*(.+?)\s*$/m)?.[1];o&&(r.cone=o);let s=i[1].match(/^coneLabel:\s*(.+?)\s*$/m)?.[1];s&&(r.coneLabel=I(s)),/^memorySkipped:\s*true\s*$/m.test(i[1])&&(r.memorySkipped=!0);let c=i[1].match(/^title:\s*(.+?)\s*$/m);c&&(n=I(c[1]))}let a=t.match(/<!-- slicc:session-data\n([\s\S]*?)\n-->\n*/);if(a){try{let e=a[1].replace(/-- >/g,`-->`),t=JSON.parse(e);if(Array.isArray(t))return{title:n,messages:t,...r}}catch{}t=t.replace(/<!-- slicc:session-data\n[\s\S]*?\n-->\n*/,``)}return t=t.replace(/^#\s+[^\n]*\n+/,``),{title:n,messages:qe(t),...r}}function I(e){let t=e.trim();if(!t.startsWith(`"`))return t;try{let e=JSON.parse(t);if(typeof e==`string`)return e}catch{}return t.replace(/^"|"$/g,``)}function L(e,t){let n=RegExp(`^${t}:\\s*(.+?)\\s*$`,`m`).exec(e)?.[1];if(n)try{return JSON.parse(n)}catch{return}}function qe(e){let t=[],n=/^## (User|Assistant)\s*\n/gm,r=[],i;for(;(i=n.exec(e))!==null;)r.push({role:i[1]===`User`?`user`:`assistant`,start:i.index,bodyStart:i.index+i[0].length});for(let n=0;n<r.length;n++){let i=n+1<r.length?r[n+1].start:e.length,a=e.slice(r[n].bodyStart,i).trim();t.push({id:`frozen-${n}`,role:r[n].role,content:a,timestamp:0})}return t}function R(e){let t=``;for(let n of e){let e=n.role===`user`?`User`:`Assistant`,r=n.role===`user`?ne(n.content):n.content;if(t+=`## ${e}\n${r}\n\n`,n.attachments?.length&&(t+=`Attachments:\n${n.attachments.map(e=>`- ${s(e)}`).join(`
|
|
153
|
-
`)}\n\n`),n.toolCalls)for(let e of n.toolCalls)t+=`### Tool: ${e.name}\nInput: ${JSON.stringify(e.input,null,2)}\nResult: ${e.result??``}\n\n`}return t}var Je=e({PENDING_SESSION_ATTEMPT_LIMIT:()=>3,SESSIONS_INDEX_PATH:()=>M,curateFrozenSessionMemories:()=>U,enrichPendingSession:()=>Z,freezeConeSession:()=>H,listPendingEnrichments:()=>bt,markSnapshotUnavailable:()=>$,processPendingSessions:()=>xt,readSessionsIndex:()=>N}),z=o(`session-freezer`),Ye=4,B=2048,V=40,Xe=`${j}/attachments`;async function H(e){let t=await ct(e.sessionStore,J(e));if(!t||t.messages.length<Ye)return z.info(`Skipping freeze: session below threshold or missing`,{messageCount:t?.messages.length??0}),null;let n=Y(t.messages),r=e.mode??`full`,i=r===`full`&&!!(e.apiKey&&e.model);!e.agenticMemorySpawn&&e.memory!==`skip`&&await G(e,n,i);let a=await Qe(e,n,i)||mt(t.messages);return await $e(e,t,a,r,i?await Ze(e,a):void 0,!!e.agenticMemorySpawn&&e.memory!==`skip`)}async function U(e,t){let n=Y(t.archive.messages),r;try{r=await Pe({spawn:e.agenticMemorySpawn,vfs:e.vfs,sessionArchivePath:P(t),sessionCount:await y(e.vfs),...e.cone?{cone:e.cone}:{}})}catch(e){r={ok:!1,reason:e instanceof Error?e.message:String(e),legacyFallbackSafe:!1}}if(r.ok){let n=await Nt(e.vfs,t.filename);return await wt(e.vfs,t.filename),n?(delete t.memoryPending,z.info(`Agentic memory pass completed`,{filename:t.filename}),n):(z.info(`Agentic memory pass completed; index entry already gone`,{filename:t.filename}),null)}return r.legacyFallbackSafe?(z.warn(`Agentic memory pass failed after finishing — falling back to legacy extraction`,{filename:t.filename,reason:r.reason}),await G(e,n,!0),null):(z.warn(`Agentic memory pass unfinished — entry stays pending for boot catch-up`,{filename:t.filename,reason:r.reason,attemptLimit:3}),null)}async function Ze(e,t){try{return W(await(e.pickIcon??(await i(async()=>{let{pickLucideIcon:e}=await import(`./quick-llm-
|
|
153
|
+
`)}\n\n`),n.toolCalls)for(let e of n.toolCalls)t+=`### Tool: ${e.name}\nInput: ${JSON.stringify(e.input,null,2)}\nResult: ${e.result??``}\n\n`}return t}var Je=e({PENDING_SESSION_ATTEMPT_LIMIT:()=>3,SESSIONS_INDEX_PATH:()=>M,curateFrozenSessionMemories:()=>U,enrichPendingSession:()=>Z,freezeConeSession:()=>H,listPendingEnrichments:()=>bt,markSnapshotUnavailable:()=>$,processPendingSessions:()=>xt,readSessionsIndex:()=>N}),z=o(`session-freezer`),Ye=4,B=2048,V=40,Xe=`${j}/attachments`;async function H(e){let t=await ct(e.sessionStore,J(e));if(!t||t.messages.length<Ye)return z.info(`Skipping freeze: session below threshold or missing`,{messageCount:t?.messages.length??0}),null;let n=Y(t.messages),r=e.mode??`full`,i=r===`full`&&!!(e.apiKey&&e.model);!e.agenticMemorySpawn&&e.memory!==`skip`&&await G(e,n,i);let a=await Qe(e,n,i)||mt(t.messages);return await $e(e,t,a,r,i?await Ze(e,a):void 0,!!e.agenticMemorySpawn&&e.memory!==`skip`)}async function U(e,t){let n=Y(t.archive.messages),r;try{r=await Pe({spawn:e.agenticMemorySpawn,vfs:e.vfs,sessionArchivePath:P(t),sessionCount:await y(e.vfs),...e.cone?{cone:e.cone}:{}})}catch(e){r={ok:!1,reason:e instanceof Error?e.message:String(e),legacyFallbackSafe:!1}}if(r.ok){let n=await Nt(e.vfs,t.filename);return await wt(e.vfs,t.filename),n?(delete t.memoryPending,z.info(`Agentic memory pass completed`,{filename:t.filename}),n):(z.info(`Agentic memory pass completed; index entry already gone`,{filename:t.filename}),null)}return r.legacyFallbackSafe?(z.warn(`Agentic memory pass failed after finishing — falling back to legacy extraction`,{filename:t.filename,reason:r.reason}),await G(e,n,!0),null):(z.warn(`Agentic memory pass unfinished — entry stays pending for boot catch-up`,{filename:t.filename,reason:r.reason,attemptLimit:3}),null)}async function Ze(e,t){try{return W(await(e.pickIcon??(await i(async()=>{let{pickLucideIcon:e}=await import(`./quick-llm-B8Z2Ocbt.js`).then(e=>e.n);return{pickLucideIcon: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]))).pickLucideIcon)({subject:`"${t}" — an archived chat session`})??void 0)}catch(e){z.warn(`Icon pick failed (freeze still proceeds)`,{error:e instanceof Error?e.message:String(e)});return}}function W(e){if(e)return l(e)?e:void 0}async function G(e,r,i){if(!i){z.info(`LLM unavailable — skipping memory extraction; freezing anyway`);return}let a=``;try{a=await t({messages:r,instruction:n,model:e.model,apiKey:e.apiKey,maxTokens:B,headers:e.headers})}catch(e){z.warn(`Memory extraction call failed (freeze still proceeds)`,{error:e instanceof Error?e.message:String(e)});return}if(!a.trim()||a.trim()===`NONE`){z.info(`Memory extraction returned no durable memories`);return}try{await vt(e.vfs,st(J(e)),a.trim(),`new-session`,{model:e.model,apiKey:e.apiKey,headers:e.headers}),z.info(`Memory extracted and appended on new-session`)}catch(e){z.warn(`Memory append failed`,{error:e instanceof Error?e.message:String(e)})}}async function Qe(e,n,i){if(!i)return``;try{return pt(await t({messages:n,instruction:r,model:e.model,apiKey:e.apiKey,maxTokens:V,headers:e.headers}))}catch(e){return z.warn(`Title generation call failed (using heuristic)`,{error:e instanceof Error?e.message:String(e)}),``}}async function $e(e,t,n,r,i,a=!1){let o=new Date().toISOString(),s=crypto.randomUUID(),c=r===`quick`?`pending-${gt()}.md`:`${o.replace(/[:.]/g,`-`)}-${ht(n)}.md`,l=et(t.messages),u=J(e),d={cone:u,...u!==`cone`&&e.cone?.label?{coneLabel:e.cone.label}:{}},f={filename:c,sessionId:s,title:n,frozenAt:o,messageCount:t.messages.length,...l??{},...d,...i?{icon:i}:{},...r===`quick`?{pendingEnrichment:!0}:{},...a?{memoryPending:!0}:{},...e.memory===`skip`?{memorySkipped:!0}:{}};try{await X(e.vfs,j);let r=await nt(e.vfs,t.messages,c.replace(/\.md$/,``)),i={id:t.id,title:n,frozenAt:o,createdAt:t.createdAt,updatedAt:t.updatedAt,messageCount:t.messages.length,messages:r,...l??{},...d,...e.memory===`skip`?{memorySkipped:!0}:{}},a=ft(i);return await e.vfs.writeFile(`${j}/${c}`,a),await yt(e.vfs,f),await e.vfs.flush(),z.info(`Cone session frozen`,{filename:c,title:n,cone:u,messageCount:t.messages.length}),{...f,archive:i}}catch(e){return z.warn(`Failed to write frozen session to VFS`,{error:e instanceof Error?e.message:String(e)}),null}}function et(e){let t={total:0,input:0,output:0,cacheRead:0,cacheWrite:0},n=new Map,r=!1;for(let i of e){if(i.role!==`assistant`)continue;let{model:e,usage:a}=i;if(!e||!a||!tt(a))return null;let o=a.cost;r=!0,t.total+=o.total,t.input+=o.input,t.output+=o.output,t.cacheRead+=o.cacheRead,t.cacheWrite+=o.cacheWrite;let s=n.get(e)??{model:e,cost:0,turns:0,tokens:0};s.cost+=o.total,s.turns+=1,s.tokens+=a.input+a.output+a.cacheRead+a.cacheWrite,n.set(e,s)}return r?{cost:t,models:[...n.values()].sort((e,t)=>t.cost-e.cost)}:null}function K(e){return typeof e==`number`&&Number.isFinite(e)}function tt(e){let{cost:t}=e;return[e.input,e.output,e.cacheRead,e.cacheWrite].every(K)&&[t.input,t.output,t.cacheRead,t.cacheWrite,t.total].every(K)}async function nt(e,t,n){let r={vfs:e,archiveDir:`${Xe}/${n}`,copiedPaths:new Map,fileIndex:0},i=[];for(let e of t){if(!e.attachments?.some(q)){i.push(e);continue}let t=[];for(let n of e.attachments)t.push(await rt(r,n));i.push({...e,attachments:t})}return i}async function rt(e,t){if(!q(t))return t;let n=e.copiedPaths.get(t.path);if(n)return{...t,path:n};let r=await it(e.vfs,t.path);if(!r)return ot(t);let i=t.name.replace(/[^A-Za-z0-9._-]+/g,`_`)||`attachment`,a=`${e.archiveDir}/${e.fileIndex++}-${i}`;return await X(e.vfs,e.archiveDir),await e.vfs.writeFile(a,r),e.copiedPaths.set(t.path,a),{...t,path:a}}async function it(e,t){try{if(!await at(e,t))return null;let n=await e.readFile(t,{encoding:`binary`});if(!(n instanceof Uint8Array))throw Error(`Expected binary attachment content at ${t}`);return n}catch{return null}}function q(e){return typeof e.path==`string`&&e.path.startsWith(`/tmp/`)&&e.data===void 0&&e.text===void 0}async function at(e,t){let n=t.split(`/`).slice(1);if(n.length<2||n[0]!==`tmp`||n.some(e=>!e||e===`.`||e===`..`))return!1;let r=`/`;for(let t=0;t<n.length;t+=1){let i=(await e.readDir(r)).find(e=>e.name===n[t]);if(!i)return!1;if(t===n.length-1)return i.type===`file`;if(i.type!==`directory`)return!1;r=r===`/`?`/${n[t]}`:`${r}/${n[t]}`}return!1}function ot(e){let{path:t,...n}=e;return{...n,error:e.error??`Archived attachment file is missing or unsafe to preserve.`}}function J(e){return e.cone?.folder||`cone`}function st(e){return h({parentJid:null,folder:e}).memoryPath}async function ct(e,t){let n=f({folder:t});try{return await e.load(n)}catch(e){return z.warn(`Failed to load cone chat session`,{sessionId:n,error:e instanceof Error?e.message:String(e)}),null}}function Y(e){return e.map(e=>({role:e.role,content:[{type:`text`,text:e.content}],timestamp:e.timestamp}))}var lt=`<!-- slicc:session-data
|
|
154
154
|
`,ut=`
|
|
155
155
|
-->`;function dt(e){return e.map(e=>{let t={id:e.id,role:e.role,content:e.content,timestamp:e.timestamp};return e.attachments?.length&&(t.attachments=e.attachments),e.toolCalls?.length&&(t.toolCalls=e.toolCalls.map(e=>({id:e.id,name:e.name,input:e.input,...e.result===void 0?{}:{result:e.result},...e.isError?{isError:e.isError}:{}}))),e.source&&(t.source=e.source),e.channel&&(t.channel=e.channel),t})}function ft(e){let t=(e.cost?`cost: ${JSON.stringify(e.cost)}\n`:``)+(e.models?`models: ${JSON.stringify(e.models)}\n`:``),n=(e.cone?`cone: ${e.cone}\n`:``)+(e.coneLabel?`coneLabel: ${JSON.stringify(e.coneLabel)}\n`:``)+(e.memorySkipped?`memorySkipped: true
|
|
156
156
|
`:``),r=`---\nid: ${e.id}\ntitle: ${JSON.stringify(e.title)}\nfrozenAt: ${e.frozenAt}\ncreatedAt: ${e.createdAt}\nupdatedAt: ${e.updatedAt}\nmessageCount: ${e.messageCount}\n`+t+n+`---
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e}from"./feature-flags-ByMXaIc4.js";import{h as t,n,t as r}from"./tray-runtime-config-CRGwg9SK.js";import{n as i,r as a}from"./main-
|
|
1
|
+
import{n as e}from"./feature-flags-ByMXaIc4.js";import{h as t,n,t as r}from"./tray-runtime-config-CRGwg9SK.js";import{n as i,r as a}from"./main-WocJXOEX.js";var o=3e3;async function s(t,n){let r=i(n.storage);try{let i=new URL(`/api/flags`,`${n.workerBaseUrl.replace(/\/+$/,``)}/`);i.searchParams.set(`float`,t);let s=await c(i.toString(),n.fetchImpl??fetch,n.timeoutMs??o);if(!s)return;a(r,t,s),e(t,s)}catch{}}async function c(e,t,n){let r=new AbortController,i;try{let a=new Promise(e=>{i=setTimeout(()=>{r.abort(),e(null)},n)}),o=t(e,{cache:`no-store`,headers:{Accept:`application/json`},signal:r.signal}).then(async e=>e.ok?l(await e.json()):null).catch(()=>null);return await Promise.race([o,a])}catch{return null}finally{i!==void 0&&clearTimeout(i)}}function l(e){return!u(e)||!u(e.flags)||Object.values(e.flags).some(e=>typeof e!=`string`)?null:e.flags}function u(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function d(e,t){return s(e,{workerBaseUrl:f(t),storage:t.storage})}function f(e){let i=p(e.storage),a=t(e.envBaseUrl??null);if(i)return i;if(a)return a;if(!e.isDev)try{let t=new URL(e.locationHref);if(t.protocol===`http:`||t.protocol===`https:`)return t.origin}catch{}return e.isDev?n:r}function p(e){try{return t(e?.getItem(`slicc.trayWorkerBaseUrl`)??null)}catch{return null}}export{d as refreshFeatureFlagsForPage};
|
package/dist/ui/assets/{setup-standalone-prelude-QltolQav.js → setup-standalone-prelude-DKv92HTJ.js}
RENAMED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/extension-bridge-transport-D3PItLFo.js","assets/logger-DDBAeTLF.js","assets/pending-request-table-Dgn6qYdL.js","assets/lick-ws-bridge-CWRES2H2.js","assets/logger-BoSvu4mW.js","assets/tray-leader-DcRtwWl-.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/proxied-fetch-B4g-4VbQ.js","assets/preload-helper-Czpn1I53.js","assets/base64-DpPqYZJF.js","assets/src-CAWTvdAa.js","assets/runtime-env-Dlaokqg1.js","assets/fetch-body-D2PwksUW.js","assets/runtime-env-CgsZ7LTp.js","assets/runtime-env-E-i2SW1s.js","assets/tray-runtime-config-CRGwg9SK.js","assets/messages-BD4p8GuF.js","assets/db-DIbBClfy.js","assets/cdp-BAGGi_P9.js","assets/navigation-watcher-CcKsLKw9.js","assets/handoff-link-BM4ctkE8.js","assets/remote-cdp-transport-CgOXLjZ8.js","assets/tray-sync-protocol-BZ5yhJH9.js","assets/main-cherry-L2scWl6W.js","assets/synthetic-cdp-transport-Ds83IPjw.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{t as e}from"./preload-helper-Czpn1I53.js";import{t}from"./logger-DDBAeTLF.js";import"./src-CAWTvdAa.js";import{c as n,l as r,s as i}from"./proxied-fetch-B4g-4VbQ.js";import{t as a}from"./bridge-launch-params-zrpWWxT3.js";import{t as o}from"./runtime-env-Dlaokqg1.js";import"./runtime-env-CgsZ7LTp.js";import"./messages-BD4p8GuF.js";import{d as s,s as c,t as l,u}from"./tray-runtime-config-CRGwg9SK.js";import{t as d}from"./setup-sudo-
|
|
2
|
+
import{t as e}from"./preload-helper-Czpn1I53.js";import{t}from"./logger-DDBAeTLF.js";import"./src-CAWTvdAa.js";import{c as n,l as r,s as i}from"./proxied-fetch-B4g-4VbQ.js";import{t as a}from"./bridge-launch-params-zrpWWxT3.js";import{t as o}from"./runtime-env-Dlaokqg1.js";import"./runtime-env-CgsZ7LTp.js";import"./messages-BD4p8GuF.js";import{d as s,s as c,t as l,u}from"./tray-runtime-config-CRGwg9SK.js";import{t as d}from"./setup-sudo-BsMJo787.js";function f(e,t,n){if(t){try{if(new URL(e).searchParams.has(`detached`))return`extension-detached`}catch{}return`extension`}try{let t=new URL(e);if(t.searchParams.get(`connect`)===`1`)return`connect`;if(t.searchParams.get(`runtime`)===`hosted-leader`)return`hosted-leader`;if(t.searchParams.get(`cherry`)===`1`)return`cherry`;let r=n===void 0?typeof window<`u`?window.localStorage:null:n;return u(e,r)?`follower`:m(t)?`electron-overlay`:`standalone`}catch{return`standalone`}}function p(e,t){return e===`electron-overlay`||e===`hosted-leader`||e===`standalone`&&t}function m(e){return e.pathname===`/electron`||e.pathname===`/electron/`||e.searchParams.get(`runtime`)===`electron-overlay`}t(`stale-asset`);var h=`slicc-stale-asset-reload`;function g(e,t){if(typeof BroadcastChannel!=`function`)return()=>{};let n=new BroadcastChannel(h),r=n=>{let r=n.data;r?.type===`stale-asset-reload`&&r.instanceId===e&&t(r.replayTurn===!0)};return n.addEventListener(`message`,r),()=>{n.removeEventListener(`message`,r),n.close()}}var _=`slicc:stale-asset-reloaded-at`,v=6e4,y=`slicc:stale-asset-replay`;function b(e=window.sessionStorage){try{e.setItem(y,`1`)}catch{}}function x(e=window.sessionStorage){try{return e.getItem(y)===`1`&&(e.removeItem(y),!0)}catch{return!1}}function S(){return{reload:()=>window.location.reload(),storage:window.sessionStorage,now:()=>Date.now(),windowMs:v,storageKey:_}}function C(e,t,n){return e===null||t-e>=n}function w(e=S()){let t;try{t=e.storage.getItem(e.storageKey)}catch{return!1}let n=t===null?null:Number(t),r=n!==null&&Number.isFinite(n)?n:null,i=e.now();if(!C(r,i,e.windowMs))return!1;try{e.storage.setItem(e.storageKey,String(i))}catch{return!1}return e.reload(),!0}var T=null,E=null;function D(e){T||(E={...S(),...e},T=e=>{w(E)&&e.preventDefault()},window.addEventListener(`vite:preloadError`,T))}var O=null;function k(e){return O||(O=g(e,e=>{e&&b(),w(E??void 0)}),O)}var A=`slicc-cdp-superseded-banner`;function j(e){if(e.getElementById(A))return;let t=e.createElement(`div`);t.id=A,t.setAttribute(`role`,`alert`),t.textContent=`Another SLICC tab or window has taken control of this browser instance. Only one tab can drive the browser per instance — close the other tabs, then reload this page to resume.`,t.style.cssText=[`position:fixed`,`top:0`,`left:0`,`right:0`,`z-index:2147483647`,`padding:10px 16px`,`background:#b3261e`,`color:#fff`,`font:13px/1.4 system-ui,sans-serif`,`text-align:center`,`box-shadow:0 1px 4px rgba(0,0,0,0.3)`].join(`;`),e.body.appendChild(t)}function M(){return typeof crypto<`u`&&typeof crypto.randomUUID==`function`?crypto.randomUUID():`slicc-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`}function N(e){let t;try{t=new URLSearchParams(e)}catch{return null}if(t.get(`slicc`)!==`leader`)return null;let n=t.get(`ext`);return n?{extensionId:n}:null}var P=[100,200,400,800,1600];async function F(e,t,n,r=P,i=e=>new Promise(t=>setTimeout(t,e))){let a=r.length+1,o=null;for(let s=0;s<a;s++)try{await e.connect(t),s>0&&n.info(`CDP bridge connect succeeded after retry`,{attempt:s+1});return}catch(e){o=e,s<r.length&&await i(r[s]??0)}n.warn(`Initial CDP connect failed after retries; worker-forwarded commands will retry on demand`,o instanceof Error?o.message:String(o))}async function I(t,n,r){let{ExtensionBridgeTransport:i}=await e(async()=>{let{ExtensionBridgeTransport:e}=await import(`./extension-bridge-transport-D3PItLFo.js`);return{ExtensionBridgeTransport:e}},__vite__mapDeps([0,1,2])),{mapDiscoveryPayloadToLickEvent:a,mapNavigatePayloadToLickEvent:o}=await e(async()=>{let{mapDiscoveryPayloadToLickEvent:e,mapNavigatePayloadToLickEvent:t}=await import(`./lick-ws-bridge-CWRES2H2.js`);return{mapDiscoveryPayloadToLickEvent:e,mapNavigatePayloadToLickEvent:t}},__vite__mapDeps([3,1,4,5,6,7,8,9,10,11,12,13,14,15,16,17])),s=null,c=[],l=!1,u=e=>{s=e;for(let t of c)e.sendForwardedLick(t);c.length=0},d=e=>{if(e){if(s){s.sendForwardedLick(e);return}c.length>=50&&(c.shift(),l||(l=!0,r.warn(`extension-bridge lick buffer overflow (cap 50); dropping oldest pending licks until the kernel client attaches`))),c.push(e)}},f=new t(new i({extensionId:n,onLick:e=>{d(o(e))},onDiscovery:e=>{d(a(e))},onOpenSettings:()=>{globalThis.dispatchEvent(new CustomEvent(`slicc:open-settings-from-panel`))}}));return await F(f,void 0,r),{browser:f,attachLickForwardingClient:u}}async function L(t){let{runtimeMode:u,envBaseUrl:f,window:m,log:h}=t,g=u===`electron-overlay`;h.info(`setting up standalone page runtime (BrowserAPI + CDP)`,{runtimeMode:u});let{BrowserAPI:_}=await e(async()=>{let{BrowserAPI:e}=await import(`./cdp-BAGGi_P9.js`);return{BrowserAPI:e}},__vite__mapDeps([18,1,2,4,19,20,10,21,22]));await d({log:h});let v,y,b,x=null,S=null,C=null,w=null,T,E=u===`cherry`?null:N(m.location.search),D=!!E&&o(),O=u===`cherry`||D?null:a(m.location.search);O?.apiBaseUrl&&(x=O.apiBaseUrl,r(O.apiBaseUrl),S=O.token,i(O.token)),O?.lickWsUrl&&(C=O.lickWsUrl);let k=u===`cherry`||D||O!==null,A=await c(),P=p(u,A!==null)?l:null;if(await s({locationHref:m.location.href,storage:m.localStorage,envBaseUrl:f,defaultWorkerBaseUrl:P,runtimeConfigFetcher:async()=>A}),u===`cherry`){let{setupCherryFollower:t}=await e(async()=>{let{setupCherryFollower:e}=await import(`./main-cherry-L2scWl6W.js`);return{setupCherryFollower:e}},__vite__mapDeps([23,1,10,2,18,4,19,20,21,22,24])),n=await t();v=n.browser,y=n.joinUrl,b=n.transport}else if(E&&o()){h.info(`Routing CDP through the extension bridge (leader tab)`);let e=await I(_,E.extensionId,h);v=e.browser,T=e.attachLickForwardingClient,w=E.extensionId,n(E.extensionId)}else{v=new _,O&&h.info(`Routing CDP through local standalone bridge`,{url:O.url,role:O.role??`(unset)`});let e=O?{url:O.url,protocols:O.subprotocol}:void 0;O?.role===`follower`?(h.info(`Skipping CDP connect for follower overlay tab`),v.primeConnectOptions(e)):(await F(v,e,h),v.setCdpSupersededHandler(()=>j(m.document)))}let L=v.getTransport();return globalThis.__slicc_browser=v,{browser:v,realCdpTransport:L,hasLocalCdpSurface:k,cherryJoinUrl:y,cherryTransport:b,instanceId:M(),isElectronOverlay:g,localApiBaseUrl:x,bridgeToken:S,localLickWsUrl:C,extensionDelegateId:w,attachLickForwardingClient:T}}export{k as a,w as i,L as n,D as o,x as r,f as s,N as t};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/sudo-
|
|
2
|
-
import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./preload-helper-Czpn1I53.js";var n=e({setupSudoExtension:()=>i,setupSudoStandalone:()=>r});async function r(e){let{installSudoTestHook:n}=await t(async()=>{let{installSudoTestHook:e}=await import(`./sudo-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/sudo-B9rBCOeG.js","assets/preload-helper-Czpn1I53.js","assets/logger-DDBAeTLF.js","assets/proxied-fetch-B4g-4VbQ.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/base64-DpPqYZJF.js","assets/src-CAWTvdAa.js","assets/runtime-env-Dlaokqg1.js","assets/fetch-body-D2PwksUW.js","assets/runtime-env-CgsZ7LTp.js","assets/runtime-env-E-i2SW1s.js","assets/quick-llm-B8Z2Ocbt.js","assets/account-store-CUaiX7NT.js","assets/bedrock-camp-qpZqnqLa.js","assets/diagnostics-DN_idNHx.js","assets/transform-messages-N_eMsP2M.js","assets/provider-env-CTOcDKrQ.js","assets/__vite-browser-external-5eBdwsFd.js","assets/openrouter.models-gbjkpjE_.js","assets/libesm-BI4UHVqp.js","assets/float-topology-BgioAcOd.js","assets/secret-topology-xLmXoozo.js","assets/secrets-bridge-client-cWDAnFqs.js","assets/port-bridge-client-BbVs1yhx.js","assets/image-markers-BXtVm4og.js","assets/tool-ui-DfXu6quJ.js","assets/providers-DfXdxg0S.js","assets/panel-rpc-B3MSVImO.js","assets/llm-session-id-bZQs6gBN.js","assets/icons-ZLR7gmJ4.js","assets/page-approval-service-Bbc3_KdK.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./preload-helper-Czpn1I53.js";var n=e({setupSudoExtension:()=>i,setupSudoStandalone:()=>r});async function r(e){let{installSudoTestHook:n}=await t(async()=>{let{installSudoTestHook:e}=await import(`./sudo-B9rBCOeG.js`);return{installSudoTestHook: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]));n()}async function i(e){let{installPanelSudoResponder:n}=await t(async()=>{let{installPanelSudoResponder:e}=await import(`./sudo-B9rBCOeG.js`);return{installPanelSudoResponder: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]));n()}export{n,r as t};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./logger-LESFN7Hj.js";import{n,r}from"./path-utils-DNJG-zQf.js";import{t as i}from"./types-idfTVsM8.js";import{i as a}from"./fs-
|
|
1
|
+
import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./logger-LESFN7Hj.js";import{n,r}from"./path-utils-DNJG-zQf.js";import{t as i}from"./types-idfTVsM8.js";import{i as a}from"./fs-ConK7KOs.js";const o=t(`sudo:sudoers`),s=`/etc/sudoers`,c=`/etc/sudoers.d`,l=/^\/scoops\/[^/]+\/etc\/sudoers$/;function u(e){return`/scoops/${e}/etc/sudoers`}function d(e,t){return e===`no-match`?t===`require-approval`?`require-approval`:`no-match`:e}function f(){return{cmnd:[],read:[],write:[],export:[]}}function p(e){return`.+^$()[]|\\{}`.includes(e)?`\\${e}`:e}function m(e){let t=``,n=0;for(;n<e.length;){let r=e[n];r===`*`?(t+=`.*`,n+=e[n+1]===`*`?2:1):r===`?`?(t+=`.`,n+=1):(t+=p(r),n+=1)}return RegExp(`^${t}$`,`s`)}function h(e){return e.split(/\r?\n/,1)[0]?.trim()??``}const g=new Set([`Cmnd`,`Read`,`Write`,`Export`]);function _(e){switch(e){case`read`:return`Read`;case`write`:return`Write`;case`export`:return`Export`;default:return`Cmnd`}}function v(e){let t=e.trim(),n=!1,r=t.search(/\s/);(r===-1?t:t.slice(0,r))===`NOPASSWD`&&(n=!0,t=r===-1?``:t.slice(r).trimStart());let i=t.search(/\s/),a=i===-1?t:t.slice(0,i);if(!g.has(a))return null;let o=i===-1?``:t.slice(i).trim();return o?{directive:a,nopasswd:n,pattern:o}:null}function y(e){let t=f();try{if(typeof e!=`string`)return t;for(let n of e.split(`
|
|
2
2
|
`)){let e=n.trim();if(!e||e.startsWith(`#`))continue;let i=v(e);if(!i){o.warn(`Skipping unrecognized sudoers line`,{line:e});continue}let a=i.directive===`Cmnd`||i.directive===`Export`?m:r,s={pattern:i.pattern,nopasswd:i.nopasswd,regex:a(i.pattern)};i.directive===`Cmnd`?t.cmnd.push(s):i.directive===`Read`?t.read.push(s):i.directive===`Export`?t.export.push(s):t.write.push(s)}return t}catch(e){return o.error(`Failed to parse sudoers; falling back to self-protection only`,{err:e}),f()}}const ee=[`NOPASSWD Read /tmp`,`NOPASSWD Read /tmp/**`,`NOPASSWD Write /tmp`,`NOPASSWD Write /tmp/**`].join(`
|
|
3
3
|
`);let b=null;function te(){return b??=y(ee),b}function x(...e){let t=f();for(let n of e)n&&(t.cmnd.push(...n.cmnd),t.read.push(...n.read),t.write.push(...n.write),t.export.push(...n.export??[]));return t}function S(e,t){let n=!1;for(let r of e)if(r.regex.test(t)){if(r.nopasswd)return`nopasswd-allow`;n=!0}return n?`require-approval`:`no-match`}function ne(e,t){return S(e.export??[],t)===`nopasswd-allow`?`nopasswd-allow`:`require-approval`}function re(e,t){return S(e.cmnd,t.trim())}function ie(e){return e===`/etc/sudoers`||e===`/etc/sudoers.d`||e.startsWith(`/etc/sudoers.d/`)||l.test(e)||e===`/etc/slicc/layouts`||e.startsWith(`/etc/slicc/layouts/`)}function C(e,t,r,i){let o=n(r);if(t===`write`){if(ie(o))return`require-approval`;if(i?.isContentWrite&&a(o))return`nopasswd-allow`}return S(t===`read`?e.read:e.write,o)}const w=t(`sudo:timeout`),T={"user-timeout":`no response from the user within 5 minutes. This is a TIMEOUT, not a denial — the user was not there to answer. Do not retry this action; report that the approval request went unanswered and wait for the user before trying again.`,"cone-timeout":`no response from the cone agent within 5 minutes. This is a TIMEOUT, not a denial — no human was ever prompted, the cone simply never resolved the request. Do not retry this action; report that the escalation went unanswered and continue with work that does not need it.`};function E(e){return T[e]}function D(e=`user-timeout`){return{decision:`deny`,reason:e}}function O(e,t){let n=t.decision===`deny`?t.reason:void 0;return n?`${e}: approval request timed out — ${E(n)}`:`${e}: approval denied`}function ae(e,t={}){let n=t.timeoutMs??3e5;if(!Number.isFinite(n)||n<=0)return e;let r=t.setTimer??((e,t)=>setTimeout(e,t)),i=t.clearTimer??(e=>clearTimeout(e));return{requestApproval(t,a){return new Promise(o=>{let s=new AbortController,c=()=>s.abort();a?.signal?.addEventListener(`abort`,c,{once:!0});let l=!1,u=e=>{l=!0,a?.signal?.removeEventListener(`abort`,c),o(e)},d=r(()=>{l||(w.warn(`sudo approval timed out — failing closed`,{kind:t.kind,detail:t.detail,timeoutMs:n}),s.abort(),u(D(`user-timeout`)))},n),f=e=>{if(l){w.warn(`sudo decision arrived after timeout — discarded`,{kind:t.kind,detail:t.detail,decision:e.decision});return}i(d),u(e)};e.requestApproval(t,{signal:s.signal}).then(f,e=>{w.warn(`sudo broker threw — denying`,{error:e instanceof Error?e.message:String(e)}),f({decision:`deny`})})})}}}const oe=t(`sudo:fs`),k=Symbol.for(`slicc.fs.monkeypatchUnsafe`),A=`${c}/granted`;function j(e){return O(`sudo`,e)}const M=[`readFile`,`readTextFile`,`readDir`,`exists`,`stat`],N=[`writeFile`],P=[`mkdir`,`rm`];async function F(e,t,n,a){let o=h(a);if(!o)return;let s=t(),l={pattern:o,nopasswd:!0,regex:r(o)};(n===`read`?s.read:s.write).push(l);let u=`NOPASSWD ${n===`read`?`Read`:`Write`} ${o}\n`;try{await e.mkdir(c,{recursive:!0});let t=``;try{t=await e.readFile(A,{encoding:`utf-8`})}catch(e){if(!(e instanceof i&&e.code===`ENOENT`))throw e}let n=t.length>0&&!t.endsWith(`
|
|
4
4
|
`)?`
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function e(){return{version:`6.83.0`,releasedAt:`2026-08-22T21:10:07Z`,buildId:`6.83.0-mt4vgovz`}}let t=null;function n(e){t=e}function r(){return t}export{e as n,n as r,r as t};
|
|
@@ -1186,6 +1186,8 @@ canvas.sprk {
|
|
|
1186
1186
|
/* Shrink to content and cap the width so the right-aligned card never spans
|
|
1187
1187
|
the full column; the body wraps within this cap. */
|
|
1188
1188
|
max-width:85%;
|
|
1189
|
+
min-width:0;
|
|
1190
|
+
overflow:hidden;
|
|
1189
1191
|
border:1px solid var(--lick-border);
|
|
1190
1192
|
background:var(--lick-bg);
|
|
1191
1193
|
border-radius:12px;
|
|
@@ -1207,6 +1209,7 @@ canvas.sprk {
|
|
|
1207
1209
|
|
|
1208
1210
|
.lh{
|
|
1209
1211
|
display:flex;align-items:center;gap:7px;
|
|
1212
|
+
min-width:0;
|
|
1210
1213
|
font-family:var(--ui);font-size:10.5px;color:var(--lick-head);
|
|
1211
1214
|
margin-bottom:4px;
|
|
1212
1215
|
}
|
|
@@ -1221,9 +1224,15 @@ canvas.sprk {
|
|
|
1221
1224
|
:host([state="dismissed"]) .status{color:var(--lick-dismiss);}
|
|
1222
1225
|
/* The clickable affordance only exists while collapsible. */
|
|
1223
1226
|
:host([collapsible]) .lh{cursor:pointer;user-select:none;}
|
|
1227
|
+
.lh .kind{
|
|
1228
|
+
min-width:0;flex:1 1 auto;
|
|
1229
|
+
overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
|
|
1230
|
+
}
|
|
1224
1231
|
.lk{
|
|
1225
1232
|
margin-left:auto;border-radius:26px;background:var(--lick-pill,var(--amber));
|
|
1226
1233
|
color:var(--lick-pill-ink,color-mix(in srgb,var(--amber) 40%,#000));font-size:9px;font-weight:700;padding:1px 7px;
|
|
1234
|
+
flex:0 1 auto;min-width:0;max-width:min(50%,14rem);
|
|
1235
|
+
overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
|
|
1227
1236
|
}
|
|
1228
1237
|
|
|
1229
1238
|
.lb{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./logger-LESFN7Hj.js";import{t as n}from"./types-idfTVsM8.js";import{t as r}from"./global-db-DJXlpNui.js";var i=e({MCP_STORE_PATH:()=>o,deleteServer:()=>v,getServer:()=>g,listServers:()=>y,readMcpAuthEntries:()=>x,readMcpAuthEntry:()=>b,readServersFile:()=>m,setServer:()=>_,writeServersFile:()=>h});const a=t(`mcp-store`),o=`/workspace/.mcp/servers.json`;let s=null,c=null;async function l(){return s||=await import(`./fs-
|
|
1
|
+
import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./logger-LESFN7Hj.js";import{t as n}from"./types-idfTVsM8.js";import{t as r}from"./global-db-DJXlpNui.js";var i=e({MCP_STORE_PATH:()=>o,deleteServer:()=>v,getServer:()=>g,listServers:()=>y,readMcpAuthEntries:()=>x,readMcpAuthEntry:()=>b,readServersFile:()=>m,setServer:()=>_,writeServersFile:()=>h});const a=t(`mcp-store`),o=`/workspace/.mcp/servers.json`;let s=null,c=null;async function l(){return s||=await import(`./fs-ConK7KOs.js`).then(e=>e.t),s}async function u(e){if(e)return e;if(c&&c.dbName===`slicc-fs-global`)return c.instance;let{VirtualFS:t}=await l(),n=await t.create({dbName:r});return c={instance:n,dbName:r},n}function d(){return{version:1,servers:{}}}function f(e){if(!e||typeof e!=`object`)return null;let t={...e};return typeof t.url==`string`?(delete t.sessionId,t):null}function p(e){if(!e||typeof e!=`object`)return d();let t=e,n=typeof t.version==`number`?t.version:1,r={};if(t.servers&&typeof t.servers==`object`)for(let[e,n]of Object.entries(t.servers)){let t=f(n);t&&(r[e]=t)}return{version:n,servers:r}}async function m(e){try{let t=await(await u(e)).readFile(o,{encoding:`utf-8`});try{return p(JSON.parse(t))}catch(e){return a.warn(`servers.json is not valid JSON; treating as empty`,{error:e instanceof Error?e.message:String(e)}),d()}}catch(e){return e instanceof n&&e.code===`ENOENT`||a.warn(`Failed to read servers.json`,{error:e instanceof Error?e.message:String(e)}),d()}}async function h(e,t){let n=await u(t);await n.mkdir(`/workspace/.mcp`,{recursive:!0});let r=p({version:e.version||1,servers:e.servers??{}});await n.writeFile(o,JSON.stringify(r,null,2))}async function g(e,t){return(await m(t)).servers[e]??null}async function _(e,t,n){let r=await m(n),i=f({...r.servers[e],...t});if(!i)throw Error(`MCP server entry requires a URL`);return r.servers[e]=i,await h(r,n),i}async function v(e,t){let n=await m(t);return e in n.servers&&(delete n.servers[e],await h(n,t),!0)}async function y(e){return(await m(e)).servers}async function b(e){let t=await g(e);return!t?.url||!t.auth?.clientId?null:{name:e,serverUrl:t.url,auth:t.auth}}async function x(){let e=await y(),t=[];for(let[n,r]of Object.entries(e))!r?.url||!r.auth?.clientId||t.push({name:n,serverUrl:r.url,auth:r.auth});return t}export{b as n,i as r,x as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./types-idfTVsM8.js";import{t}from"./global-db-DJXlpNui.js";const n=`/workspace/.plugins/plugins.json`;let r=null;async function i(e){if(e)return e;if(r&&r.dbName===`slicc-fs-global`)return r.instance;let{VirtualFS:n}=await import(`./fs-
|
|
1
|
+
import{t as e}from"./types-idfTVsM8.js";import{t}from"./global-db-DJXlpNui.js";const n=`/workspace/.plugins/plugins.json`;let r=null;async function i(e){if(e)return e;if(r&&r.dbName===`slicc-fs-global`)return r.instance;let{VirtualFS:n}=await import(`./fs-ConK7KOs.js`).then(e=>e.t),i=await n.create({dbName:t});return r={instance:i,dbName:t},i}function a(){return{version:1,plugins:{}}}function o(e){if(!e||typeof e!=`object`)return null;let t=e;return typeof t.root==`string`?t:null}function s(e){if(!e||typeof e!=`object`)return a();let t=e,n=typeof t.version==`number`?t.version:1,r={};if(t.plugins&&typeof t.plugins==`object`)for(let[e,n]of Object.entries(t.plugins)){let t=o(n);t&&(r[e]=t)}return{version:n,plugins:r}}async function c(t){try{let e=await(await i(t)).readFile(n,{encoding:`utf-8`});try{return s(JSON.parse(e))}catch{return a()}}catch(t){return t instanceof e&&t.code,a()}}async function l(e,t){let r=await i(t);await r.mkdir(`/workspace/.plugins`,{recursive:!0});let a=s({version:e.version||1,plugins:e.plugins??{}});await r.writeFile(n,JSON.stringify(a,null,2))}async function u(e,t){return(await c(t)).plugins[e]??null}async function d(e,t,n){let r=await c(n);r.plugins[e]=t,await l(r,n)}async function f(e,t){let n=await c(t);return e in n.plugins&&(delete n.plugins[e],await l(n,t),!0)}async function p(e){return(await c(e)).plugins}export{f as deleteInstalledPlugin,u as getInstalledPlugin,p as listInstalledPlugins,d as setInstalledPlugin};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/panel-rpc-B3MSVImO.js","assets/rolldown-runtime-Dd_uD5pT.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{t as e}from"./preload-helper-Czpn1I53.js";import{t}from"./logger-DDBAeTLF.js";import{i as n,o as r,r as i}from"./proxied-fetch-B4g-4VbQ.js";import{n as a}from"./runtime-env-Dlaokqg1.js";import"./runtime-env-CgsZ7LTp.js";import{t as o}from"./quick-llm-
|
|
2
|
+
import{t as e}from"./preload-helper-Czpn1I53.js";import{t}from"./logger-DDBAeTLF.js";import{i as n,o as r,r as i}from"./proxied-fetch-B4g-4VbQ.js";import{n as a}from"./runtime-env-Dlaokqg1.js";import"./runtime-env-CgsZ7LTp.js";import{t as o}from"./quick-llm-B8Z2Ocbt.js";import{i as s,t as c}from"./page-approval-service-Bbc3_KdK.js";var l=t(`sudo:timeout`);function u(e=`user-timeout`){return{decision:`deny`,reason:e}}function d(e,t={}){let n=t.timeoutMs??3e5;if(!Number.isFinite(n)||n<=0)return e;let r=t.setTimer??((e,t)=>setTimeout(e,t)),i=t.clearTimer??(e=>clearTimeout(e));return{requestApproval(t,a){return new Promise(o=>{let s=new AbortController,c=()=>s.abort();a?.signal?.addEventListener(`abort`,c,{once:!0});let d=!1,f=e=>{d=!0,a?.signal?.removeEventListener(`abort`,c),o(e)},p=r(()=>{d||(l.warn(`sudo approval timed out — failing closed`,{kind:t.kind,detail:t.detail,timeoutMs:n}),s.abort(),f(u(`user-timeout`)))},n),m=e=>{if(d){l.warn(`sudo decision arrived after timeout — discarded`,{kind:t.kind,detail:t.detail,decision:e.decision});return}i(p),f(e)};e.requestApproval(t,{signal:s.signal}).then(m,e=>{l.warn(`sudo broker threw — denying`,{error:e instanceof Error?e.message:String(e)}),m({decision:`deny`})})})}}}var f=t(`sudo-suggest`),p=[`You generalize a single shell command into a minimal glob pattern for an`,`allow-list rule. Output ONLY the pattern on one line — no prose, no quotes,`,`no backticks. Keep the leading command/sub-command verbatim and replace only`,`the volatile tail (args, paths, refs) with a single trailing "*".`,`Examples:`,` git push origin main -> git push*`,` rm -rf build/cache -> rm -rf*`,` npm install left-pad -> npm install*`].join(`
|
|
3
3
|
`),m=[`You generalize a single filesystem path into a minimal glob pattern for an`,`allow-list rule. Output ONLY the pattern on one line — no prose, no quotes,`,`no backticks. Keep the meaningful directory prefix and replace the volatile`,`leaf (and below) with "**". Examples:`,` /workspace/.git/config -> /workspace/.git/**`,` /shared/secrets/openai.key -> /shared/secrets/**`,` /workspace/src/app/main.ts -> /workspace/src/**`].join(`
|
|
4
4
|
`);async function h(e,t){if(e.suggestedPattern&&e.suggestedPattern.trim().length>0)return e.suggestedPattern.trim();let n=e.detail.trim(),r=e.kind===`command`?p:m,i=null;try{i=await o({prompt:n,system:r,maxTokens:40,temperature:0,signal:t})}catch(e){f.debug(`suggestPattern: quickLabel threw`,{error:e instanceof Error?e.message:String(e)}),i=null}return g(i)||n}function g(e){if(!e)return null;let t=(e.split(`
|
|
5
5
|
`,1)[0]?.trim()??``).replace(/^`+/,``).replace(/`+$/,``).replace(/^["']/,``).replace(/["']$/,``).trim();return t.length===0?null:t}var _=t(`sudo-ext`);function v(e={}){let t=e.suggest??h;return{async requestApproval(e,n){let r=n?.signal,i;try{i=await t(e,r)}catch{i=e.detail}return r?.aborted?(_.warn(`sudo approval aborted before prompting — denying`,{detail:e.detail}),{decision:`deny`}):y({...e,suggestedPattern:i})}}}function y(e){return new Promise(t=>{let n=globalThis.chrome?.runtime;if(!n||typeof n.sendMessage!=`function`){_.warn(`chrome.runtime.sendMessage unavailable — denying`),t({decision:`deny`});return}let r=r=>{let i=n.lastError;if(i){_.warn(`sudo relay lastError — denying`,{error:i.message}),t({decision:`deny`});return}if(!r||typeof r!=`object`){_.warn(`sudo relay empty response — denying`),t({decision:`deny`});return}let a=r;if(!a.ok||!a.decision){_.warn(`sudo relay error response — denying`,{error:a.error}),t({decision:`deny`});return}t(b(a.decision,e.suggestedPattern??e.detail))};try{n.sendMessage({source:`offscreen`,payload:{type:s,request:e}},r)}catch(e){_.warn(`sudo relay threw — denying`,{error:e instanceof Error?e.message:String(e)}),t({decision:`deny`})}})}function b(e,t){return e.decision===`allow`?{decision:`allow`}:e.decision===`always`?{decision:`always`,pattern:typeof e.pattern==`string`&&e.pattern.trim().length>0?e.pattern.trim():t}:{decision:`deny`}}var x=t(`sudo-http`);function S(e={}){let t=e.fetchImpl??globalThis.fetch.bind(globalThis),n=e.path??`/api/sudo-approve`,a=e.suggest??h;return{async requestApproval(e,o){let s=o?.signal,c;if(e.suggestedPattern)c=e.suggestedPattern;else try{c=await a(e,s)}catch{c=e.detail}if(s?.aborted)return x.warn(`sudo approval aborted before prompting — denying`,{detail:e.detail}),{decision:`deny`};try{let a=await t(r(n),{method:`POST`,headers:i({"Content-Type":`application/json`}),body:JSON.stringify({kind:e.kind,detail:e.detail,suggestedPattern:c}),signal:s});return a.ok?C(await a.json(),c):(x.warn(`sudo endpoint returned non-OK status — denying`,{status:a.status}),{decision:`deny`})}catch(e){return x.warn(`sudo endpoint request failed — denying`,{error:e instanceof Error?e.message:String(e)}),{decision:`deny`}}}}}function C(e,t){if(!e||typeof e!=`object`)return{decision:`deny`};let n=e.decision;if(n===`allow`)return{decision:`allow`};if(n===`always`){let n=e.pattern;return{decision:`always`,pattern:typeof n==`string`&&n.trim().length>0?n.trim():t}}return{decision:`deny`}}var w=t(`sudo-panel-rpc`),T=6e5;function E(t={}){let n=t.suggest??h,r=t.timeoutMs??T,i=t.getClient??(async()=>{let{getPanelRpcClient:t}=await e(async()=>{let{getPanelRpcClient:e}=await import(`./panel-rpc-B3MSVImO.js`).then(e=>e.i);return{getPanelRpcClient:e}},__vite__mapDeps([0,1]));return t()});return{async requestApproval(e,t){let a=t?.signal,o;try{o=await n(e,a)}catch{o=e.detail}let s={...e,suggestedPattern:o},c;try{c=await i()}catch(e){return w.warn(`panel-RPC client lookup threw — denying`,{error:e instanceof Error?e.message:String(e)}),{decision:`deny`}}if(!c)return w.warn(`panel-RPC client unavailable in worker realm — denying`),{decision:`deny`};if(a?.aborted)return w.warn(`sudo approval aborted before prompting — denying`,{detail:e.detail}),{decision:`deny`};try{let{decision:e}=await c.call(`sudo-request`,{request:s},{timeoutMs:r});return D(e,o)}catch(e){return w.warn(`sudo panel-RPC relay failed — denying`,{error:e instanceof Error?e.message:String(e)}),{decision:`deny`}}}}}function D(e,t){if(!e||typeof e!=`object`)return{decision:`deny`};let n=e.decision;if(n===`allow`)return{decision:`allow`};if(n===`always`){let n=e.pattern;return{decision:`always`,pattern:typeof n==`string`&&n.trim().length>0?n.trim():t}}return{decision:`deny`}}var O=t(`sudo:tray-first`),k=6e5;function A(t,n={}){let r=n.suggest??h,i=n.timeoutMs??k,a=n.getClient??(async()=>{let{getPanelRpcClient:t}=await e(async()=>{let{getPanelRpcClient:e}=await import(`./panel-rpc-B3MSVImO.js`).then(e=>e.i);return{getPanelRpcClient:e}},__vite__mapDeps([0,1]));return t()});return{async requestApproval(e,n){if(n?.signal?.aborted)return{decision:`deny`};let o=e.suggestedPattern;if(!o)try{o=await r(e,n?.signal)}catch{o=e.detail}let s={...e,suggestedPattern:o},c=null;try{c=await a()}catch(e){O.debug?.(`panel-RPC client lookup threw — using native broker`,{error:e instanceof Error?e.message:String(e)})}if(c)try{let e=await c.call(`sudo-request`,{request:s,mode:`tray-first`},{timeoutMs:i});if(e?.handled!==!1)return j(e?.decision,o)}catch(e){O.warn(`tray-first sudo probe failed — using native broker`,{error:e instanceof Error?e.message:String(e)})}return t.requestApproval(s,n)}}}function j(e,t){if(!e||typeof e!=`object`)return{decision:`deny`};let n=e,r=n.attestation===`biometric`||n.attestation===`passcode`||n.attestation===`none`?n.attestation:void 0;return n.decision===`allow`?{decision:`allow`,...r?{attestation:r}:{}}:n.decision===`always`?{decision:`always`,pattern:typeof n.pattern==`string`&&n.pattern.trim().length>0?n.pattern.trim():t,...r?{attestation:r}:{}}:{decision:`deny`}}var M=t(`sudo`),N=`__slicc_sudo`;function P(){return a()}function F(){return typeof chrome>`u`&&n()!==null}function I(){return d(L())}function L(){return P()?v():F()?E():A(S())}function R(e=I()){let t={requestApproval:t=>e.requestApproval(t)};return globalThis[N]=t,M.info(`sudo broker test hook published on globalThis.__slicc_sudo`),t}export{c as installPanelSudoResponder,R as installSudoTestHook};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{D as e,g as t}from"./db-DATxPCUz.js";import{n}from"./slicc-version-
|
|
1
|
+
import{D as e,g as t}from"./db-DATxPCUz.js";import{n}from"./slicc-version-BklIwuih.js";const r=`slicc:last-seen-version`;function i(){let{version:e,releasedAt:t}=n();return{version:e,releasedAt:t}}async function a(){let e=await t(r);return e&&e.length>0?e:null}async function o(t){await e(r,t)}async function s(){let e=i(),t=await a();return t===null?(await o(e.version),{bundled:e,lastSeen:null,isUpgrade:!1}):t===e.version?{bundled:e,lastSeen:t,isUpgrade:!1}:{bundled:e,lastSeen:t,isUpgrade:!0}}async function c(e){await o(e)}export{s as detectUpgrade,a as getLastSeenVersion,c as recordVersionSeen};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/src-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/src-DsDPrXOS.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/preload-helper-Czpn1I53.js","assets/icons-ZLR7gmJ4.js","assets/speech-C5U8h4In.js","assets/soundscape-cues-5_sT5Un6.js","assets/panel-registry-CJdOibpf.js","assets/layout-schema-m9_VAwOw.js"])))=>i.map(i=>d[i]);
|
|
2
2
|
import{t as e}from"./preload-helper-Czpn1I53.js";import{n as t,t as n}from"./base64-DpPqYZJF.js";import"./src-CAWTvdAa.js";import{t as r}from"./permissions-surface-registry-CilCRwhh.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=4194304,f=262144;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
3
|
.wcatt{display:flex;flex-wrap:wrap;gap:6px;padding:8px 10px 0;font-family:var(--ui);}
|
|
4
4
|
.wcatt:empty{display:none;}
|
|
@@ -10,4 +10,4 @@ import{t as e}from"./preload-helper-Czpn1I53.js";import{n as t,t as n}from"./bas
|
|
|
10
10
|
.wcatt__x{appearance:none;background:none;border:none;cursor:pointer;color:var(--txt-3);
|
|
11
11
|
font:inherit;padding:0;line-height:1;}
|
|
12
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(`./src-
|
|
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(`./src-DsDPrXOS.js`).then(e=>e.t);return{SliccImagePreview:e}},__vite__mapDeps([0,1,2,3,4,5,6,7])).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: `)}function U(e){return e?.name===`NotAllowedError`}async function W(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 G(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.results=[],i.setAttribute(`global-drop`,``),e.noCamera&&i.setAttribute(`no-camera`,``)),t.addEventListener(`slicc-add`,t=>{let i=t.detail;i&&W(i,e,r).catch(e=>{U(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});W({kind:`upload`,name:s.name,size:s.size,file:s},e,r).catch(e=>n.error(`Paste image failed`,e))}}),r}export{G as wireWcAttach};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/setup-sudo-
|
|
2
|
-
import{t as e}from"./preload-helper-Czpn1I53.js";import{a as t,n,o as r,t as i}from"./wc-live-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/setup-sudo-BsMJo787.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/preload-helper-Czpn1I53.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{t as e}from"./preload-helper-Czpn1I53.js";import{a as t,n,o as r,t as i}from"./wc-live-CTChixg5.js";import{wireWcDetached as a}from"./wc-detached-B3WCbbZT.js";async function o(o,s,c=!1){let l=n(o,`extension · wc`),u=new r(t(l.wiring));i(l,u,s),a({client:u,isDetachedSelf:c});let{setupSudoExtension:d}=await e(async()=>{let{setupSudoExtension:e}=await import(`./setup-sudo-BsMJo787.js`).then(e=>e.n);return{setupSudoExtension:e}},__vite__mapDeps([0,1,2]));await d({log:s}),u.requestState(),s.info(`WC extension shell connected to offscreen engine`)}export{o as mountWcUiExtension};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/layout-schema-m9_VAwOw.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/panelize-shell-
|
|
2
|
-
import{t as e}from"./preload-helper-Czpn1I53.js";import{t}from"./logger-DDBAeTLF.js";import{r as n}from"./src-CAWTvdAa.js";import{n as r}from"./tray-sync-protocol-BZ5yhJH9.js";import{i,n as a}from"./wc-live-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/layout-schema-m9_VAwOw.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/panelize-shell-BRldzPxv.js","assets/logger-DDBAeTLF.js","assets/virtual-device-paths-9EXC9iPp.js","assets/icons-ZLR7gmJ4.js","assets/src-DsDPrXOS.js","assets/preload-helper-Czpn1I53.js","assets/speech-C5U8h4In.js","assets/soundscape-cues-5_sT5Un6.js","assets/panel-registry-CJdOibpf.js","assets/layout-apply-registry-Cw730jao.js","assets/trusted-layer-ghPA1ENf.js","assets/wc-live-CTChixg5.js","assets/account-store-CUaiX7NT.js","assets/bedrock-camp-qpZqnqLa.js","assets/diagnostics-DN_idNHx.js","assets/transform-messages-N_eMsP2M.js","assets/provider-env-CTOcDKrQ.js","assets/__vite-browser-external-5eBdwsFd.js","assets/openrouter.models-gbjkpjE_.js","assets/libesm-BI4UHVqp.js","assets/src-CAWTvdAa.js","assets/proxied-fetch-B4g-4VbQ.js","assets/base64-DpPqYZJF.js","assets/runtime-env-Dlaokqg1.js","assets/fetch-body-D2PwksUW.js","assets/float-topology-BgioAcOd.js","assets/runtime-env-E-i2SW1s.js","assets/secret-topology-xLmXoozo.js","assets/secrets-bridge-client-cWDAnFqs.js","assets/port-bridge-client-BbVs1yhx.js","assets/image-markers-BXtVm4og.js","assets/tool-ui-DfXu6quJ.js","assets/providers-DfXdxg0S.js","assets/panel-rpc-B3MSVImO.js","assets/mime-types-ugOWOUZ9.js","assets/telemetry-BVzuNdvW.js","assets/runtime-env-CgsZ7LTp.js","assets/feature-flags-ByMXaIc4.js","assets/tray-runtime-config-CRGwg9SK.js","assets/messages-BD4p8GuF.js","assets/setup-standalone-prelude-DKv92HTJ.js","assets/bridge-launch-params-zrpWWxT3.js","assets/setup-sudo-BsMJo787.js","assets/tray-follower-status-BAjnN7Ar.js","assets/src-BWaKqLvQ.js","assets/html-B_Hg2WOy.js","assets/chat-session-store-pWb1-jNp.js","assets/tray-leader-DcRtwWl-.js","assets/db-DIbBClfy.js","assets/record-Z5ZWTUPJ.js","assets/shared-CddfUR6k.js","assets/dictation-priming-CNllGgNq.js","assets/export-provider-BEHTjSYw.js","assets/dip-B58NQGEQ.js","assets/permissions-surface-registry-CilCRwhh.js","assets/hid-device-registry-B2R-0rNt.js","assets/serial-port-registry-B3LG5UIy.js","assets/usb-operations-Cgk-otz-.js","assets/usb-device-registry-CRsCisej.js","assets/sprinkle-renderer-D64E-W2o.js","assets/theme-CXRqxpw6.js","assets/theme-engine-By4GU_Wc.js","assets/sprinkle-bridge-CSfksHce.js","assets/session-freezer-Dovr1_nt.js","assets/attachments-CByeG2Ru.js","assets/types-idfTVsM8.js","assets/agent-message-to-chat-_cvF5A5g.js","assets/wc-shell-_lN0XC0N.js","assets/timestamp-preference-sKwBl5I8.js","assets/wc-scoop-color-CByZNEJo.js","assets/wc-shell-WkeczD9x.css","assets/follower-presentation-DqBw0YiV.js","assets/host-command-Biu9G4Zb.js","assets/browser-DdY1FBRp.js","assets/leader-session-events-DilgFtu7.js","assets/legacy-styles-DcRu2WCJ.js","assets/follower-navigate-watcher-CNC7ybEv.js","assets/navigation-watcher-CcKsLKw9.js","assets/handoff-link-BM4ctkE8.js","assets/discovery-preference-fqUhjzeE.js","assets/wc-transcript-export-DKIleW7-.js","assets/export-spool-Eul4J1RP.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{t as e}from"./preload-helper-Czpn1I53.js";import{t}from"./logger-DDBAeTLF.js";import{r as n}from"./src-CAWTvdAa.js";import{n as r}from"./tray-sync-protocol-BZ5yhJH9.js";import{i,n as a}from"./wc-live-CTChixg5.js";import{r as o,t as s}from"./feature-flags-ByMXaIc4.js";import{i as c,m as l,p as ee,r as u,u as te}from"./tray-runtime-config-CRGwg9SK.js";import{n as ne}from"./setup-standalone-prelude-DKv92HTJ.js";import{a as d,f,i as re,l as ie,r as ae,t as oe}from"./wc-tray-scoops-B2RP8cgD.js";import{a as se,t as ce}from"./tray-follower-status-BAjnN7Ar.js";import{n as le}from"./theme-engine-By4GU_Wc.js";import{i as p,r as m}from"./dip-B58NQGEQ.js";import{a as h,i as g}from"./wc-shell-_lN0XC0N.js";import{WcSprinkleZone as ue}from"./wc-sprinkles-DWphJVrl.js";import{wireWcAttach as de}from"./wc-attach-DsMfUpx8.js";import{r as fe}from"./leader-session-events-DilgFtu7.js";import{installLeaderPermissionsSurface as pe}from"./wc-permissions-gFKCQht9.js";var _=t(`follower-switch-out`);function me(e,t){t.stopFollower();try{t.storage.removeItem(u),e.workerBaseUrl===null?t.storage.removeItem(c):t.storage.setItem(c,e.workerBaseUrl)}catch(e){_.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=l(e);n!==e&&t.replaceHref(n)}catch(e){_.error(`follower switch-out: URL normalize failed — may re-enter follower on reload`,{error:e instanceof Error?e.message:String(e)})}t.reload()}var v=6;function he(e){let{refs:t,getSync:n,getTargets:r,hasCdpBrowser:i,log:a}=e;if(t.overlaySurfaces.has(`browser`))return{overlay:document.createElement(`slicc-tab-overlay`),refresh:()=>{}};let o=document.createElement(`slicc-tab-overlay`);o.setAttribute(`heading`,`Browser · tabs in this tray`),document.body.append(o);let s=()=>{o.tabs=r().map(e=>({id:e.targetId,title:e.title||e.url||e.targetId,url:e.url}))};return t.overlaySurfaces.add(`browser`),t.dock.addEventListener(`slicc-dock-select`,e=>{e.detail?.id===`browser`&&(s(),o.show(),t.dock.collapse?.())}),o.addEventListener(`tab-activate`,t=>{let r=t.detail.id,s=n(),c=s?.getLeaderProtocolVersion()??0;if(!(s&&i()&&c>=v)){let t=o.tabs.find(e=>e.id===r)?.url;if(!t){a.warn(`WC follower browser: no URL for tab`,{id:r});return}e.window.open(t,`_blank`,`noopener`)||a.warn(`WC follower browser: window.open was blocked`,{id:r}),o.hide();return}s.requestTabTeleport(r).then(e=>{a.info(`WC follower browser: leader teleported a tab here`,{source:r,targetId:e}),o.hide()}).catch(e=>{a.error(`WC follower browser: tab teleport failed`,e)})}),{overlay:o,refresh:s}}var y=new Set([`oauth-attempt`,`connect-attempt`,`device-code-decision`]);function ge(e){return y.has(e)}var b=`slicc-signin-redirect-style`,x=`wc-signin-redirect`,S=`
|
|
3
3
|
.${x}{display:flex;gap:10px;align-items:flex-start;margin:10px 12px;padding:12px 14px;
|
|
4
4
|
border:1px solid var(--line);border-radius:12px;background:var(--ghost);color:var(--ink);
|
|
5
5
|
font-family:var(--ui);font-size:13px;line-height:1.4;}
|
|
@@ -14,4 +14,4 @@ import{t as e}from"./preload-helper-Czpn1I53.js";import{t}from"./logger-DDBAeTLF
|
|
|
14
14
|
.${x}__x:hover{color:var(--ink);}
|
|
15
15
|
`;function C(e){if(e.getElementById(b))return;let t=e.createElement(`style`);t.id=b,t.textContent=S,e.head.appendChild(t)}function w(e,t){C(e);let n=e.createElement(`div`);n.className=x,n.setAttribute(`role`,`status`);let r=e.createElement(`div`);r.className=`${x}__body`;let i=e.createElement(`div`);i.className=`${x}__title`,i.textContent=t.title;let a=e.createElement(`div`);a.className=`${x}__sub`,a.textContent=t.sub,r.append(i,a);let o=e.createElement(`button`);if(o.type=`button`,o.className=`${x}__open`,o.textContent=t.buttonLabel,o.addEventListener(`click`,()=>t.onOpenTab()),n.append(r,o),t.dismissible){let t=e.createElement(`button`);t.type=`button`,t.className=`${x}__x`,t.setAttribute(`aria-label`,`Dismiss`),t.textContent=`×`,t.addEventListener(`click`,()=>n.remove()),n.append(t)}return n}function _e(e,t){let n=e.ownerDocument;t.onOpenTab();let r=e.querySelector(`.${x}`);if(r)return r.scrollIntoView?.({block:`nearest`}),r;let i=w(n,{title:`Sign in from the SLICC tab`,sub:`The side panel can't complete a provider login — we've switched you to the main SLICC tab. Finish signing in there (Settings › Providers), then come back.`,buttonLabel:`Open SLICC tab`,onOpenTab:t.onOpenTab,dismissible:!0});return e.append(i),i.scrollIntoView?.({block:`nearest`}),i}function ve(e,t){return w(e,{title:`Set up SLICC in the main tab`,sub:`SLICC needs a model connected before it can help. Open the main SLICC tab to finish setup and sign in, then come back to the side panel.`,buttonLabel:`Open SLICC tab`,onOpenTab:t.onOpenTab,dismissible:!1})}var T=t(`wc-follower`),E=`/shared/sprinkles/welcome/`,D={sendMessage:()=>{},onEvent:()=>()=>{},stop:()=>{}};function O(e){return e===void 0||e===`active`?{kind:`active`}:e.trim()===``?null:{kind:`frozen`,sessionId:e}}function k(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 A(e,t,n,r,i){let a=e=>{let t=document.createElement(`div`);return t.className=`wcui-placeholder`,t.textContent=e,t};i.files?(e.style.display=`none`,e.parentElement?.append(a(`Files live on the leader. A follower mirrors the leader's chat, sprinkles, and browser tabs - not its filesystem.`))):e.closest(`slicc-surface`)?.remove(),i.terminal?t.append(a(`The shell runs on the leader. A follower has no local terminal - drive the session through chat.`)):t.closest(`slicc-surface`)?.remove(),i.memory?n.append(a(`Memory lives on the leader. A follower has no local memory store.`)):n.closest(`slicc-surface`)?.remove(),i.monitor?(r.style.display=`none`,r.parentElement?.append(a(`Monitor reads the leader's kernel state. A follower has no local kernel.`))):r.closest(`slicc-surface`)?.remove()}var j={terminal:!0,files:!0,memory:!0,browser:!0,modelPicker:!0,history:!0,nav:!0,newSprinkle:!0,monitor:!0,showTimestamps:!0};function M(e){let t=[];for(let[n,r]of[[`terminal`,`term`],[`files`,`files`],[`memory`,`memory`],[`browser`,`browser`],[`monitor`,`monitor`],[`newSprinkle`,`new`]])e[n]||t.push(`slicc-dock-item[data-t="${r}"]`);if(e.modelPicker||t.push(`slicc-composer-meta`),e.history||t.push(`slicc-freezer`),e.nav||t.push(`slicc-nav`),!e.terminal&&!e.files&&!e.memory&&!e.browser&&!e.monitor&&t.push(`slicc-dock .div`,`slicc-dock .grow`),t.length||!e.history){let n=document.createElement(`style`),r=t.length?`${t.join(`,
|
|
16
16
|
`)}{display:none!important;}`:``;e.history||(r+=`
|
|
17
|
-
.wcui-appcol{padding-left:0!important;}`),n.textContent=r,document.head.append(n)}}function N(e,t){return e&&!t}async function P(t,n,r){let[{parseLayoutDocument:i},{panelizeShell:a}]=await Promise.all([e(()=>import(`./layout-schema-m9_VAwOw.js`).then(e=>e.s),__vite__mapDeps([0,1])),e(()=>import(`./panelize-shell-
|
|
17
|
+
.wcui-appcol{padding-left:0!important;}`),n.textContent=r,document.head.append(n)}}function N(e,t){return e&&!t}async function P(t,n,r){let[{parseLayoutDocument:i},{panelizeShell:a}]=await Promise.all([e(()=>import(`./layout-schema-m9_VAwOw.js`).then(e=>e.s),__vite__mapDeps([0,1])),e(()=>import(`./panelize-shell-BRldzPxv.js`),__vite__mapDeps([2,3,4,5,1,6,7,8,9,10,0,11,12]))]),o=i(n);if(`error`in o){r.warn(`follower: host-pushed layout failed validation — keeping the default`,{error:o.error});return}a(t.refs,o),r.info(`follower: applied host-pushed layout document`,{id:o.id,locked:o.locked===!0})}async function F(t,c,l){let u=l===`cherry`,_=u&&new URLSearchParams(window.location.search).get(`ui-only`)===`1`,v=window.location.ancestorOrigins?.[0],y=u&&(v?.startsWith(`chrome-extension://`)??!1),b;try{b=await ne({runtimeMode:l,envBaseUrl:null,window,log:c})}catch(e){let n=e instanceof Error?e.message:String(e);T.error(`follower prelude failed`,{runtimeMode:l,error:n}),k(t,n);return}let x=u?b.cherryJoinUrl:te(window.location.href,window.localStorage);if(!x){T.error(`follower mount with no join URL - falling back to live boot`);let{mountWcUiLive:n}=await e(async()=>{let{mountWcUiLive:e}=await import(`./wc-live-CTChixg5.js`).then(e=>e.r);return{mountWcUiLive:e}},__vite__mapDeps([13,1,14,7,15,16,17,18,19,20,21,3,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,5,68,69,70,6,8,9,10,0,12,71,72,73,74,75,76]));return n(t,c,`standalone`)}let S=a(t,u?`cherry · follower`:`follower`);if(u&&b.cherryTransport?.theme&&le(b.cherryTransport.theme),u&&b.cherryTransport?.flags)try{let e=JSON.parse(b.cherryTransport.flags);e&&typeof e==`object`&&!Array.isArray(e)&&s(e)}catch(e){T.warn(`follower: host-pushed flags were not valid JSON — ignoring`,e)}let C=o(`panel-layouts`);if(S.refs.dockTree.tilesMovable=C,u&&b.cherryTransport?.layout)try{let e=JSON.parse(b.cherryTransport.layout);e&&typeof e==`object`&&`base`in e?C?await P(S,e,T):T.warn(`follower: ignoring host-pushed layout — the panel-layouts flag is off`):S.refs.dockTree.setTree(e)}catch(e){T.warn(`follower: host-pushed layout was not valid JSON — keeping the default`,e)}let w=u&&b.cherryTransport?.effortLevel;w?localStorage.setItem(`slicc_locked_effort_level`,w):localStorage.removeItem(`slicc_locked_effort_level`);let F=u&&b.cherryTransport?{...j,...b.cherryTransport.features}:j,ye=S.refs.composerMeta;A(S.refs.fileTree,S.refs.termSurface,S.refs.memoryHost,S.refs.monitor,F),M(F),e(async()=>{let{applyTimestampVisibility:e,initTimestampPreference:t}=await import(`./timestamp-preference-sKwBl5I8.js`).then(e=>e.a);return{applyTimestampVisibility:e,initTimestampPreference:t}},__vite__mapDeps([70,1])).then(({applyTimestampVisibility:e,initTimestampPreference:t})=>{F.showTimestamps?t():e(!1)}),e(async()=>{let{loadDipStyles:e,loadSprinkleStyles:t}=await import(`./legacy-styles-DcRu2WCJ.js`);return{loadDipStyles:e,loadSprinkleStyles:t}},__vite__mapDeps([77,7])).then(({loadDipStyles:e,loadSprinkleStyles:t})=>Promise.all([e(),t()])).catch(()=>void 0);let I=new Map,L=()=>b.cherryTransport?.emitSliccEventToHost(`slicc.open-leader-tab`),R=()=>{y&&_e(S.refs.thread,{onOpenTab:L})},be=e=>{let t=e.querySelectorAll(`img[src^="${E}"]`);return t.length!==0&&(t.forEach((t,n)=>{n===0?t.replaceWith(ve(e.ownerDocument,{onOpenTab:L})):t.remove()}),!0)},xe=(e,t)=>{q.currentSync?.sendSprinkleLick(`inline`,{action:e,data:t}),ge(e)&&R()},z=new i({thread:S.refs.thread,agent:D,onQueuedChange:e=>{S.refs.queuedStack.setMessages(e)},onMessageRendered:(e,t)=>{let n=t[0];n&&(y&&be(n),I.set(e.id,p(n,xe)))},onMessageDisposed:e=>{let t=I.get(e);t&&(m(t),I.delete(e))},readOnlyToolUi:!0});if(S.setController(z),y)for(let e of[`slicc-error-open-settings`,`slicc-error-login`,`slicc-error-change-model`])S.refs.thread.addEventListener(e,()=>R());let B=`Connecting to leader…`,V=`Ask the leader, or describe a change…`,H=(e,t)=>{S.refs.inputCard.setAttribute(`placeholder`,t),e?S.refs.inputCard.removeAttribute(`disabled`):S.refs.inputCard.setAttribute(`disabled`,``)};H(!1,B),re(S.refs.floatbar),se(e=>{try{window.localStorage.setItem(f,JSON.stringify(e))}catch{}});try{window.localStorage.setItem(f,JSON.stringify(ce()))}catch{}_||S.refs.composer.setAttribute(`ptt`,``);let Se=de({inputCard:S.refs.inputCard,freezer:S.refs.freezer,composer:S.refs.composer,noCamera:_,log:T});S.refs.switcher.setAttribute(`gaze-target`,`slicc-input-card`),S.refs.inputCard.addEventListener(`input`,()=>{S.refs.switcher.scrutinize(),S.refs.switcher.wake()}),S.refs.inputCard.addEventListener(`submit`,e=>{let t=h(e)??``,n=Se.take();(t.trim()||n.length)&&(z.sendUserMessage(t,n,{steer:g(e)}),S.refs.inputCard.clear?.())});let U=new ue(S.refs).callbacks(),W=null,G=[],K=()=>{S.refs.switcher.scoops=oe(G,W)};S.refs.switcher.connection=`disconnected`;let q,J=null,Ce=()=>(J||=pe({runtimeMode:l})?.element??null,J),Y=[],we=he({refs:S.refs,getSync:()=>q.currentSync,getTargets:()=>Y,hasCdpBrowser:()=>N(b.hasLocalCdpSurface,_),window,log:T}),X=fe({composerMeta:ye,getSync:()=>q.currentSync,getSelectedScoopJid:()=>W,modelPickerEnabled:F.modelPicker,getLockedEffortLevel:()=>localStorage.getItem(`slicc_locked_effort_level`)});q=d({joinUrl:x,runtime:u?r:`slicc-standalone`,advertisesCdpTargets:N(b.hasLocalCdpSurface,_),onTargetsUpdated:e=>{Y=e,we.refresh()},...u||_?{}:{onOAuthPopupRequest:(e,t)=>ae(e,t,{getPermissionsSurface:Ce,window})},browserAPI:b.browser,onSnapshot:(e,t)=>{W=t,z.loadMessages(e),z.setProcessing(e.some(e=>e.isStreaming))},onUserMessage:(e,t,n,r)=>z.addUserMessage(e,r),onStatus:(e,t)=>{ie(t,W)&&z.setProcessing(e===`processing`)},setChatAgent:e=>{z.setAgent(e),e.onEvent(e=>{e.type===`tool_result`&&e.isError&&S.refs.switcher.glower()})},onSudoApprovalRequest:async t=>{let{openSudoApprovalDialog:n}=await e(async()=>{let{openSudoApprovalDialog:e}=await import(`./wc-sudo-approval-C3gSJjkF.js`);return{openSudoApprovalDialog:e}},[]),r=u?b.cherryTransport?.hostOrigin:void 0;return{decision:(await n({kind:t.kind,detail:t.detail,...t.suggestedPattern?{suggestedPattern:t.suggestedPattern}:{}},{allowAlways:!1,signal:t.signal,expiresAt:t.expiresAt,requester:t.scoopName??(r?`via ${r}`:void 0)})).decision,attestation:`none`}},onConnectionChange:e=>{S.refs.switcher.connection=e?`connected`:`disconnected`,H(e,e?V:B),e||X.reset(),u&&b.cherryTransport?.emitSliccEventToHost(e?`slicc.follower.ready`:`slicc.follower.disconnected`)},getSelectedScoopJid:()=>W,onLeaderStalled:e=>{H(!e,e?`The leader is busy — hang on…`:V)},onGaveUp:e=>{T.error(`follower gave up reaching the leader`,{error:e}),S.refs.switcher.connection=`disconnected`,H(!1,`Couldn't reach the leader. Reload to retry.`),X.reset(),u&&b.cherryTransport?.emitSliccEventToHost(`slicc.follower.disconnected`)},...u?{}:{onJoinUrlChanged:e=>{T.info(`follower joinUrl superseded, persisting replacement`,{newJoinUrl:e}),ee(window.localStorage,e)}},addSprinkle:U.addSprinkle,removeSprinkle:U.removeSprinkle,onOpen:e=>{/^https?:\/\//.test(e)?window.open(e,`_blank`,`noopener`):T.warn(`follower sprinkle open() of a local path is unavailable`,{path:e})},onScoopsList:(e,t)=>{(!W||!e.some(e=>e.jid===W))&&(W=t),G=e,K(),S.refs.switcher.setAttribute(`active`,W??t)},onModelsList:X.onModelsList,onModelState:X.onModelState,...u?{onCherrySliccEvent:(e,t)=>b.cherryTransport?.emitSliccEventToHost(e,t)}:{}});for(let e of[`save`,`skip`,`erase`])S.refs.freezer.addEventListener(`new-chat-${e}`,()=>{q.currentSync?.requestNewSession(e)});o(`agentic-memory`)&&S.refs.freezer.querySelector(`slicc-freezer-new`)?.setAttribute(`no-skip`,``),S.refs.switcher.addEventListener(`slicc-scoop-select`,e=>{let t=e.detail?.key;t&&(W=t,K(),S.refs.switcher.setAttribute(`active`,t),q.currentSync?.selectScoop(t))}),u&&b.cherryTransport&&(b.cherryTransport.onHostEvent=(e,t)=>q.currentSync?.sendCherryHostEvent(e,t),b.cherryTransport.onExportRequest=(e,t,r,i)=>{let a=q.currentSync;if(!a)return Promise.reject(new n(`transfer-aborted`));let o=O(t);return o?a.requestTranscriptExport(o,r,i):Promise.reject(new n(`session-not-found`))});let Z=null;if(!u){let{startFollowerNavigateWatcher:t}=await e(async()=>{let{startFollowerNavigateWatcher:e}=await import(`./follower-navigate-watcher-CNC7ybEv.js`);return{startFollowerNavigateWatcher:e}},__vite__mapDeps([78,3,23,1,7,24,22,25,26,79,80,81]));Z=t(b.realCdpTransport,()=>q.currentSync)}let Q=!1,$=()=>{S.refs.avatarMenu.items=[{kind:`separator`},...y?[{id:`focus-leader-tab`,label:`Bring leader to front`,icon:`external-link`}]:[],{id:`export-transcript`,label:Q?`Exporting…`:`Export transcript`,icon:`download`,disabled:Q||void 0},{id:`tray-stop`,label:`Disconnect from leader`,icon:`unplug`,danger:!0}]};$(),S.refs.avatarMenu.addEventListener(`slicc-avatar-action`,t=>{let n=t.detail?.id;if(n===`focus-leader-tab`){b.cherryTransport?.emitSliccEventToHost(`slicc.focus-leader-tab`);return}if(n===`tray-stop`){window.dispatchEvent(new CustomEvent(`slicc:tray-leave`,{detail:{workerBaseUrl:null}}));return}if(n===`export-transcript`&&!Q){Q=!0,$();let t=q.currentSync;if(!t){Q=!1,$();return}let n=new AbortController;t.requestTranscriptExport({kind:`active`},n.signal).then(async t=>{let{downloadTranscriptBlob:n}=await e(async()=>{let{downloadTranscriptBlob:e}=await import(`./wc-transcript-export-DKIleW7-.js`);return{downloadTranscriptBlob:e}},__vite__mapDeps([82,7,83,22,46,1]));await n(t,`slicc-transcript-${new Date().toISOString().slice(0,10)}.zip`)}).catch(e=>{T.error(`follower transcript export failed`,{error:String(e)})}).finally(()=>{Q=!1,$()})}}),window.addEventListener(`slicc:tray-leave`,e=>{me({workerBaseUrl:(e.detail??{}).workerBaseUrl??null},{storage:window.localStorage,stopFollower:()=>{Z?.(),q.stop()},getHref:()=>window.location.href,replaceHref:e=>window.history.replaceState(null,``,e),reload:()=>window.location.reload()})}),T.info(`follower mounted`,{runtimeMode:l,isCherry:u})}export{F as mountWcUiFollower};
|