sliccy 5.16.0 → 5.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/node-server/electron-controller.d.ts +0 -1
- package/dist/node-server/electron-controller.js +4 -10
- package/dist/node-server/electron-main.js +5 -13
- package/dist/node-server/electron-runtime.d.ts +0 -4
- package/dist/node-server/electron-runtime.js +4 -21
- package/dist/node-server/index.js +28 -178
- package/dist/node-server/runtime-flags.d.ts +0 -1
- package/dist/node-server/runtime-flags.js +184 -170
- package/dist/ui/assets/{account-store-BVzBgQ-v.js → account-store-BlJxZ8bA.js} +2 -2
- package/dist/ui/assets/{account-store-CVlnJB81.js → account-store-CXTiaOBF.js} +2 -2
- package/dist/ui/assets/{adobe-SkYkxgg4.js → adobe-4-CD_R9o.js} +1 -1
- package/dist/ui/assets/{adobe-BFJRWiBP.js → adobe-E2DIgnz1.js} +1 -1
- package/dist/ui/assets/{adobe-oauth-state-BlTiu0EW.js → adobe-oauth-state-B9YxNQJp.js} +1 -1
- package/dist/ui/assets/{agent-message-to-chat-IZJU7XsF.js → agent-message-to-chat-DZEPoDrl.js} +1 -1
- package/dist/ui/assets/{apps-CGs6f4_D.js → apps-Fb83z-vc.js} +1 -1
- package/dist/ui/assets/{azure-openai-BPKSSyhH.js → azure-openai-D7rHwq_y.js} +1 -1
- package/dist/ui/assets/{azure-openai-CGgQnr10.js → azure-openai-Dsscn7WN.js} +1 -1
- package/dist/ui/assets/{composer-speech-HQRRG5ym.js → composer-speech-DJ-Mw0M5.js} +1 -1
- package/dist/ui/assets/{connect-surface-CK4b42-9.js → connect-surface-C-4d0ls3.js} +1 -1
- package/dist/ui/assets/dip-BINZ1ICD.js +1 -0
- package/dist/ui/assets/{dist-x2GYqOXm.js → dist-CseAKSVh.js} +1 -1
- package/dist/ui/assets/{dist-DtpnSVfI.js → dist-V73PvJP5.js} +1 -1
- package/dist/ui/assets/{ensure-speech-assets-Dn8D8dRb.js → ensure-speech-assets-CpXHTB8K.js} +1 -1
- package/dist/ui/assets/esp8266-CiVYkcWu.js +1 -0
- package/dist/ui/assets/{esptool-operations-D9gFmxN7.js → esptool-operations-BrkzeaKN.js} +2 -2
- package/dist/ui/assets/{fs-BdfVEExy.js → fs-DR-xqM-9.js} +1 -1
- package/dist/ui/assets/{fs-Bd593l61.js → fs-e_JED6o9.js} +2 -2
- package/dist/ui/assets/{github-B8weBp2j.js → github-D1teU7MS.js} +1 -1
- package/dist/ui/assets/{github-8kxwir4q.js → github-Db5GCKq4.js} +2 -2
- package/dist/ui/assets/{github-copilot-CPYs96aw.js → github-copilot-BhDan7GW.js} +1 -1
- package/dist/ui/assets/{github-copilot-DdE_r53L.js → github-copilot-DC5kS9aJ.js} +1 -1
- package/dist/ui/assets/{hear-Dk1gIguU.js → hear-CISOdKc7.js} +1 -1
- package/dist/ui/assets/{hear-J30GxNJC.js → hear-ST2A8Ojf.js} +1 -1
- package/dist/ui/assets/{kernel-worker-CHH5Mx3j.js → kernel-worker-DElXqFYz.js} +18 -18
- package/dist/ui/assets/{kokoro-engine-DXi-4Lk1.js → kokoro-engine-pjPKeKE-.js} +1 -1
- package/dist/ui/assets/{lick-ws-bridge-Di_eIPel.js → lick-ws-bridge-CgLt3-md.js} +1 -1
- package/dist/ui/assets/{lick-ws-bridge-BErTRf2C.js → lick-ws-bridge-uMf3lFqX.js} +1 -1
- package/dist/ui/assets/{local-llm-Bhn3zPzV.js → local-llm-CYNOX_zH.js} +1 -1
- package/dist/ui/assets/{main-CBEoDTj_.js → main-99mCaNK1.js} +4 -4
- package/dist/ui/assets/{mime-types-CIg5nqjf.js → mime-types-ugOWOUZ9.js} +1 -1
- package/dist/ui/assets/{mount-D0PTVzqd.js → mount-CIoB0cu-.js} +2 -2
- package/dist/ui/assets/{mount-C4pLRV8G.js → mount-DDFp4uJK.js} +1 -1
- package/dist/ui/assets/{new-session-D3cDkirv.js → new-session-yO9a-skO.js} +2 -2
- package/dist/ui/assets/{oauth-bootstrap-CW0Iq4DJ.js → oauth-bootstrap-BjE1yxq_.js} +2 -2
- package/dist/ui/assets/{openai-codex-BhKQGaPl.js → openai-codex-CxQ8e4UF.js} +1 -1
- package/dist/ui/assets/{openai-codex-jRbHGzPJ.js → openai-codex-D9qpuznd.js} +1 -1
- package/dist/ui/assets/{page-follower-tray-B7V5Hdk3.js → page-follower-tray-DWGutKN6.js} +1 -1
- package/dist/ui/assets/{panel-rpc-handlers-HGirMMc_.js → panel-rpc-handlers-Bh3kNYD4.js} +2 -2
- package/dist/ui/assets/{provider-fwp5doUF.js → provider-BHsa0Rrz.js} +1 -1
- package/dist/ui/assets/{provider-T0IaN12Z.js → provider-BWRxgi1b.js} +2 -2
- package/dist/ui/assets/provider-store-access-Ct7bph7W.js +1 -0
- package/dist/ui/assets/provider-store-access-Dxm0WwoL.js +1 -0
- package/dist/ui/assets/{providers-BJpLjsbl.js → providers-D3nv5fF8.js} +1 -1
- package/dist/ui/assets/{quick-llm-DmM8V850.js → quick-llm-nkhmm4Rf.js} +1 -1
- package/dist/ui/assets/session-freezer-BoHtcQZ7.js +1 -0
- package/dist/ui/assets/{shared-Cddyus7m.js → shared-mxZcIrza.js} +1 -1
- package/dist/ui/assets/speak-DoCdEEhw.js +3 -0
- package/dist/ui/assets/speak-zyz6ag-g.js +1 -0
- package/dist/ui/assets/{sprinkle-bridge-Cd-pvRLY.js → sprinkle-bridge-BB1Ge79t.js} +1 -1
- package/dist/ui/assets/{sprinkle-manager-Cu6u-z69.js → sprinkle-manager-BqIyFmnb.js} +1 -1
- package/dist/ui/assets/{store-BaMl32ka.js → store-CYnFF7yg.js} +1 -1
- package/dist/ui/assets/{sudo-DBuMJPLn.js → sudo-Bs4eVV8G.js} +1 -1
- package/dist/ui/assets/{transformers-env-CEn9s_Z3.js → transformers-env-B2qCXqw-.js} +1 -1
- package/dist/ui/assets/{transformers-env-BNvU2_5X.js → transformers-env-t6_cAHU1.js} +1 -1
- package/dist/ui/assets/{tray-leader-BufiJcof.js → tray-leader-BjtMXiMR.js} +1 -1
- package/dist/ui/assets/{tray-leave-runtime-CPPXBBg9.js → tray-leave-runtime-BoCD9arc.js} +1 -1
- package/dist/ui/assets/{upgrade-detection-D19M3hIS.js → upgrade-detection-CLuyCKRm.js} +1 -1
- package/dist/ui/assets/voice-reply-BLN1aJMo.js +1 -0
- package/dist/ui/assets/{wc-attach-jjQplnwa.js → wc-attach-BoWNytPR.js} +2 -2
- package/dist/ui/assets/{wc-detached-Dz2uBF5T.js → wc-detached-Cyqt2rB-.js} +1 -1
- package/dist/ui/assets/{wc-extension-BmxoVHlX.js → wc-extension-TU20M11H.js} +2 -2
- package/dist/ui/assets/{wc-follower-Cr4dFgMb.js → wc-follower-J9dIOTtr.js} +2 -2
- package/dist/ui/assets/wc-live-C00evhz8.js +253 -0
- package/dist/ui/assets/{wc-nav-CXbbv1oy.js → wc-nav-CDGop7zp.js} +2 -2
- package/dist/ui/assets/{wc-onboarding-n0z_itcq.js → wc-onboarding-BJdN1JOs.js} +2 -2
- package/dist/ui/assets/{wc-placeholder-D5zdaLbn.js → wc-placeholder-CX_bmbWN.js} +3 -3
- package/dist/ui/assets/{wc-settings-qtsuiHg1.js → wc-settings-pnqs-c98.js} +2 -2
- package/dist/ui/assets/{wc-shell-B2jkbIzt.js → wc-shell-DoOezClu.js} +963 -786
- package/dist/ui/assets/{wc-sprinkles-BAKT9WrK.js → wc-sprinkles-B3Di9lOW.js} +2 -2
- package/dist/ui/assets/{wc-tray-cnJoLvS2.js → wc-tray-D-6xnB2i.js} +2 -2
- package/dist/ui/assets/{whisper-engine-BSOAcb8a.js → whisper-engine-C_zUz3xO.js} +1 -1
- package/dist/ui/assets/{whisper-session-CW3OA9V7.js → whisper-session-7nSKj94g.js} +2 -2
- package/dist/ui/assets/{xai-grok---YndVHa.js → xai-grok-C3lfFdpm.js} +1 -1
- package/dist/ui/assets/{xai-grok-Da_y6R6g.js → xai-grok-Di62sFOW.js} +1 -1
- package/dist/ui/electron-overlay-entry.js +299 -6180
- package/dist/ui/index.html +2 -2
- package/dist/ui/packages/webapp/index.html +2 -2
- package/package.json +8 -6
- package/dist/node-server/ui-serving.d.ts +0 -18
- package/dist/node-server/ui-serving.js +0 -91
- package/dist/ui/assets/dip-NVUHjmhc.js +0 -1
- package/dist/ui/assets/esp8266-DL6QxCn7.js +0 -1
- package/dist/ui/assets/provider-store-access-BVRQIXtM.js +0 -1
- package/dist/ui/assets/provider-store-access-DTw81yRr.js +0 -1
- package/dist/ui/assets/session-freezer-D6XPq9Ct.js +0 -1
- package/dist/ui/assets/speak-BLaMFnqh.js +0 -3
- package/dist/ui/assets/speak-BM_ACI3J.js +0 -1
- package/dist/ui/assets/voice-reply--p0t9Lgo.js +0 -1
- package/dist/ui/assets/wc-live-DbLgOajX.js +0 -253
- package/dist/ui/electron-overlay-entry.css +0 -37
|
@@ -1,253 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/mount-picker-popup-Hrvzr69c.js","assets/chunk-aKtaBQYM.js","assets/logger-DDBAeTLF.js","assets/picker-popup-CpulHQsi.js","assets/usb-picker-D_K0weAY.js","assets/serial-picker-B6s4NeaB.js","assets/hid-picker-DUJBI46p.js","assets/usb-device-registry-BP58Vi0S.js","assets/serial-port-registry-Bc4wlwED.js","assets/hid-device-registry-D2LsJCRr.js","assets/quick-llm-DmM8V850.js","assets/account-store-CVlnJB81.js","assets/preload-helper-zJ_50EbN.js","assets/dist-BmWy99kl.js","assets/event-stream-BJI_nGaK.js","assets/json-parse-BUunmmNl.js","assets/__vite-browser-external-C7iut881.js","assets/context-compaction-CFWyOzX1.js","assets/src-x0cJ68Fe.js","assets/proxied-fetch-B5vr_AP8.js","assets/fetch-body-D2PwksUW.js","assets/secret-topology-Bp0wH2ni.js","assets/secrets-bridge-client-DXw32cXb.js","assets/panel-rpc-DqT2FG7c.js","assets/bedrock-camp-9-QEmC9Z.js","assets/transform-messages-DzB_lMo-.js","assets/tool-ui-DfXu6quJ.js","assets/icons-BU6llBsN.js","assets/llm-session-id-DVmZ9C2t.js","assets/main-CBEoDTj_.js","assets/modulepreload-polyfill-Dezn_h7o.js","assets/clipboard-DgFtRQbq.js","assets/new-session-D3cDkirv.js","assets/session-store-CCH7W8KY.js","assets/wc-shell-B2jkbIzt.js","assets/soundscape-cues-5_sT5Un6.js","assets/speech-CqQdPtyQ.js","assets/wc-shell-WkeczD9x.css","assets/remote-vfs-client-Z2qM01yP.js","assets/types-idfTVsM8.js","assets/writable-vfs-client-BKZGifKZ.js","assets/wc-onboarding-n0z_itcq.js","assets/welcome-detection-Cr8mNEkt.js","assets/legacy-styles-4PP74ISo.js","assets/theme-BBwuyzvz.js","assets/soundscape-TvriK11t.js","assets/voice-reply--p0t9Lgo.js","assets/speak-BLaMFnqh.js","assets/speech-assets-bridge-B8NqCAE8.js","assets/transformers-env-BNvU2_5X.js","assets/shared-Cddyus7m.js","assets/mime-types-CIg5nqjf.js","assets/wc-placeholder-D5zdaLbn.js","assets/wc-attach-jjQplnwa.js","assets/wc-permissions-registry-CR1rTd2H.js","assets/remote-terminal-view-DIEOCe9M.js","assets/browser-D0vICVpZ.js","assets/terminal-session-client-CbAduNfC.js","assets/picker-approval-Dc390nC7.js","assets/secret-env-Bs2du0RF.js","assets/wc-permissions-DmHMvdiC.js","assets/wc-permissions-providers-BufEXbhX.js","assets/remote-sprinkle-vfs-e81pZJKo.js","assets/wc-sprinkles-BAKT9WrK.js","assets/wc-tray-cnJoLvS2.js","assets/remote-cdp-transport-BrkfZae9.js","assets/page-follower-tray-B7V5Hdk3.js","assets/sprinkle-renderer-GiRRbdBx.js","assets/tray-leader-BufiJcof.js","assets/wc-nav-CXbbv1oy.js","assets/wc-voice-erm0EtRv.js","assets/composer-speech-HQRRG5ym.js","assets/whisper-session-CW3OA9V7.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{t as e}from"./dist-BmWy99kl.js";import{t}from"./preload-helper-zJ_50EbN.js";import{F as n,I as r}from"./account-store-CVlnJB81.js";import{i,n as a,r as o,t as s}from"./context-compaction-CFWyOzX1.js";import{t as c}from"./logger-DDBAeTLF.js";import{n as l}from"./mime-types-CIg5nqjf.js";import{i as u,r as d}from"./src-x0cJ68Fe.js";import{t as f}from"./tool-ui-DfXu6quJ.js";import{a as p,b as m,d as h,i as g,p as _}from"./main-CBEoDTj_.js";import{t as v}from"./wc-permissions-registry-CR1rTd2H.js";import{n as y,r as b}from"./hid-device-registry-D2LsJCRr.js";import{a as x,i as S}from"./serial-port-registry-Bc4wlwED.js";import{C,D as w,E as T,S as E,_ as ee,a as D,g as te,h as O,k,l as A,m as j,n as M,o as N,s as ne,w as P,x as re,y as F}from"./usb-operations-CkcrNzZw.js";import{i as I,r as L}from"./usb-device-registry-BP58Vi0S.js";import{t as R}from"./icons-BU6llBsN.js";import{r as ie}from"./tray-leader-BufiJcof.js";import{_ as ae,b as oe,c as se,d as ce,f as le,g as ue,i as de,l as fe,m as pe,n as me,o as he,p as ge,r as _e,s as ve,t as ye,u as be,v as xe}from"./wc-shell-B2jkbIzt.js";import{n as Se}from"./sprinkle-bridge-Cd-pvRLY.js";import{i as Ce,n as we,t as Te}from"./theme-BBwuyzvz.js";import{n as Ee}from"./sprinkle-renderer-GiRRbdBx.js";var De=typeof chrome<`u`&&!!chrome?.runtime?.id;async function Oe(e,t){if(t?.aborted)throw new DOMException(`aborted`,`AbortError`);let n=await je(e,!0,t);if(t?.aborted)throw new DOMException(`aborted`,`AbortError`);if(n===null)throw Error(`VFS read failed: ${e}`);return typeof n==`string`?n:new TextDecoder().decode(n)}var ke=null;function Ae(){if(ke)return ke;if(typeof BroadcastChannel>`u`)return null;try{ke=new BroadcastChannel(`preview-vfs`)}catch{return null}return ke}async function je(e,t,n){let r=Ae();if(!r)return null;let i=`dip-${Date.now()}-${Math.random().toString(36).slice(2)}`;return new Promise(a=>{let o=!1,s=()=>{r.removeEventListener(`message`,c),n?.removeEventListener(`abort`,l)},c=e=>{if(!o&&!(e.data?.type!==`preview-vfs-response`||e.data.id!==i)){if(o=!0,s(),e.data.error){a(null);return}a(e.data.content??null)}},l=()=>{o||(o=!0,s(),a(null))};r.addEventListener(`message`,c),n?.addEventListener(`abort`,l),setTimeout(()=>{o||(o=!0,s(),a(null))},5e3),r.postMessage({type:`preview-vfs-read`,id:i,path:e,asText:t})})}var Me=[`/shared/sprinkles/`,`/workspace/skills/sprinkles/`,`/workspace/sprinkles/`],Ne=[`/shared/`,`/workspace/skills/sprinkles/`,`/workspace/sprinkles/`];function Pe(e){return Me.some(t=>e.startsWith(t))}function Fe(e){return typeof e!=`string`||!e.startsWith(`/`)||e.includes(`..`)?!1:Ne.some(t=>e.startsWith(t))}var z=new WeakSet,Ie=`,
|
|
3
|
-
exec: Object.assign(function(cmd) {
|
|
4
|
-
return _vfsCall('dip-exec', { cmd: cmd }, function(m) { return m.result; });
|
|
5
|
-
}, { spawn: function(argv) {
|
|
6
|
-
return _vfsCall('dip-jsh', { op: 'spawn', args: [argv] }, function(m) { return m.result; });
|
|
7
|
-
} }),
|
|
8
|
-
agent: function(prompt, opts) {
|
|
9
|
-
return _vfsCall('dip-agent', { prompt: prompt, opts: opts || null },
|
|
10
|
-
function(m) { return m.result; });
|
|
11
|
-
}`,Le=`,
|
|
12
|
-
fetch: function(url, init) {
|
|
13
|
-
return _vfsCall('dip-jsh', { op: 'fetch', args: [url, init || null] }, function(m) { return m.result; });
|
|
14
|
-
},
|
|
15
|
-
http: { client: function(cfg) {
|
|
16
|
-
function mk(method) { return function(path, opts) { return _vfsCall('dip-jsh', { op: 'http', args: [cfg, method, path, opts || null] }, function(m) { return m.result; }); }; }
|
|
17
|
-
return { get: mk('get'), post: mk('post'), put: mk('put'), patch: mk('patch'), 'delete': mk('delete') };
|
|
18
|
-
} },
|
|
19
|
-
browser: {
|
|
20
|
-
findTab: function(q) { return _vfsCall('dip-jsh', { op: 'browser', args: ['findTab', q] }, function(m) { return m.result; }); },
|
|
21
|
-
ensureTab: function(url, options) { return _vfsCall('dip-jsh', { op: 'browser', args: ['ensureTab', url, options || {}] }, function(m) { return m.result; }); },
|
|
22
|
-
eval: function(tab, code) { return _vfsCall('dip-jsh', { op: 'browser', args: ['eval', tab, code] }, function(m) { return m.result; }); },
|
|
23
|
-
evalAsync: function(tab, code) { return _vfsCall('dip-jsh', { op: 'browser', args: ['evalAsync', tab, code] }, function(m) { return m.result; }); },
|
|
24
|
-
cookie: function(tab, name) { return _vfsCall('dip-jsh', { op: 'browser', args: ['cookie', tab, name] }, function(m) { return m.result; }); },
|
|
25
|
-
localStorage: function(tab, key) { return _vfsCall('dip-jsh', { op: 'browser', args: ['localStorage', tab, key] }, function(m) { return m.result; }); },
|
|
26
|
-
fetch: function(tab, url, opts) { return _vfsCall('dip-jsh', { op: 'browser', args: ['fetch', tab, url, opts || {}] }, function(m) { return m.result; }); }
|
|
27
|
-
},
|
|
28
|
-
fetchToFile: function(url, path) {
|
|
29
|
-
return _vfsCall('dip-jsh', { op: 'fetchToFile', args: [url, path] }, function(m) { return m.result; });
|
|
30
|
-
}`,Re=`,
|
|
31
|
-
_device: function(channel, op, args) {
|
|
32
|
-
return _vfsCall('dip-device-op',
|
|
33
|
-
{ channel: channel, op: op, args: args || [] },
|
|
34
|
-
function(m) { return m.result; });
|
|
35
|
-
},
|
|
36
|
-
hid: {
|
|
37
|
-
list: function() { return _vfsCall('dip-device-op', { channel: 'hid', op: 'list', args: [] }, function(m) { return m.result; }); },
|
|
38
|
-
request: function(filters) { return _vfsCall('dip-device-op', { channel: 'hid', op: 'request', args: [filters || []] }, function(m) { return m.result; }); },
|
|
39
|
-
open: function(handle) { return _vfsCall('dip-device-op', { channel: 'hid', op: 'open', args: [handle] }, function(m) { return m.result; }).then(function() {}); },
|
|
40
|
-
close: function(handle) { return _vfsCall('dip-device-op', { channel: 'hid', op: 'close', args: [handle] }, function(m) { return m.result; }).then(function() {}); },
|
|
41
|
-
sendReport: function(handle, reportId, data) { return _vfsCall('dip-device-op', { channel: 'hid', op: 'sendReport', args: [handle, reportId, data] }, function(m) { return m.result; }).then(function() {}); },
|
|
42
|
-
on: function(event, cb) { if (event === 'inputreport') _hidInputReportListeners.add(cb); },
|
|
43
|
-
off: function(event, cb) { if (event === 'inputreport') _hidInputReportListeners.delete(cb); }
|
|
44
|
-
},
|
|
45
|
-
serial: {
|
|
46
|
-
list: function() { return _vfsCall('dip-device-op', { channel: 'serial', op: 'list', args: [] }, function(m) { return m.result; }); },
|
|
47
|
-
request: function(filters) { return _vfsCall('dip-device-op', { channel: 'serial', op: 'request', args: [filters || []] }, function(m) { return m.result; }); },
|
|
48
|
-
open: function(handle, options) { return _vfsCall('dip-device-op', { channel: 'serial', op: 'open', args: [handle, options] }, function(m) { return m.result; }).then(function() {}); },
|
|
49
|
-
close: function(handle) { return _vfsCall('dip-device-op', { channel: 'serial', op: 'close', args: [handle] }, function(m) { return m.result; }).then(function() {}); }
|
|
50
|
-
},
|
|
51
|
-
usb: {
|
|
52
|
-
list: function() { return _vfsCall('dip-device-op', { channel: 'usb', op: 'list', args: [] }, function(m) { return m.result; }); },
|
|
53
|
-
request: function(filters) { return _vfsCall('dip-device-op', { channel: 'usb', op: 'request', args: [filters || []] }, function(m) { return m.result; }); },
|
|
54
|
-
open: function(handle) { return _vfsCall('dip-device-op', { channel: 'usb', op: 'open', args: [handle] }, function(m) { return m.result; }).then(function() {}); },
|
|
55
|
-
close: function(handle) { return _vfsCall('dip-device-op', { channel: 'usb', op: 'close', args: [handle] }, function(m) { return m.result; }).then(function() {}); }
|
|
56
|
-
}`;function ze(e){return`(function() {
|
|
57
|
-
var _cbId = 0;
|
|
58
|
-
var _callbacks = {};
|
|
59
|
-
var _hidInputReportListeners = new Set();
|
|
60
|
-
|
|
61
|
-
function _vfsCall(type, params, extractResult) {
|
|
62
|
-
return new Promise(function(resolve, reject) {
|
|
63
|
-
var id = ++_cbId;
|
|
64
|
-
_callbacks[id] = function(msg) {
|
|
65
|
-
if (msg.error) reject(new Error(msg.error));
|
|
66
|
-
else resolve(extractResult ? extractResult(msg) : undefined);
|
|
67
|
-
};
|
|
68
|
-
var m = { type: type, id: id };
|
|
69
|
-
if (params) { for (var k in params) m[k] = params[k]; }
|
|
70
|
-
parent.postMessage(m, '*');
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
window.slicc = window.bridge = {
|
|
75
|
-
lick: function(event) {
|
|
76
|
-
var action = typeof event === 'string' ? event : event.action;
|
|
77
|
-
var data = typeof event === 'string' ? undefined : ('data' in event ? event.data : event);
|
|
78
|
-
parent.postMessage({ type: 'dip-lick', action: action, data: data }, '*');
|
|
79
|
-
},
|
|
80
|
-
/* Read-only VFS access. Mirrors the sprinkle bridge so dips can
|
|
81
|
-
check onboarding markers, profiles, etc. without a parent-side
|
|
82
|
-
handshake. */
|
|
83
|
-
readFile: function(path) {
|
|
84
|
-
return _vfsCall('dip-readfile', { path: path }, function(m) { return m.content; });
|
|
85
|
-
},
|
|
86
|
-
exists: function(path) {
|
|
87
|
-
return _vfsCall('dip-exists', { path: path }, function(m) { return m.exists; });
|
|
88
|
-
},
|
|
89
|
-
stat: function(path) {
|
|
90
|
-
return _vfsCall('dip-stat', { path: path }, function(m) { return m.stat; });
|
|
91
|
-
}${e?Ie:``}${e?Le:``}${e?Re:``}
|
|
92
|
-
};
|
|
93
|
-
function reportHeight() {
|
|
94
|
-
parent.postMessage({ type: 'dip-height',
|
|
95
|
-
height: document.documentElement.scrollHeight }, '*');
|
|
96
|
-
}
|
|
97
|
-
window.addEventListener('message', function(e) {
|
|
98
|
-
if (!e.data || typeof e.data.type !== 'string') return;
|
|
99
|
-
if (e.data.type === 'slicc-theme') {
|
|
100
|
-
document.documentElement.classList.toggle('theme-light', !!e.data.isLight);
|
|
101
|
-
return;
|
|
102
|
-
}
|
|
103
|
-
/* Pushed device events (currently 'hid:inputreport'). The host
|
|
104
|
-
attaches the underlying listener on slicc.hid.open(handle) for
|
|
105
|
-
this dip; teardown happens automatically on dispose. */
|
|
106
|
-
if (e.data.type === 'dip-device-event' && e.data.channel === 'hid:inputreport') {
|
|
107
|
-
_hidInputReportListeners.forEach(function(cb) {
|
|
108
|
-
try { cb(e.data.payload); } catch(ex) {}
|
|
109
|
-
});
|
|
110
|
-
return;
|
|
111
|
-
}
|
|
112
|
-
/* VFS callback responses target the originating call by id. */
|
|
113
|
-
if (e.data.id && _callbacks[e.data.id]) {
|
|
114
|
-
var cb = _callbacks[e.data.id];
|
|
115
|
-
delete _callbacks[e.data.id];
|
|
116
|
-
cb(e.data);
|
|
117
|
-
return;
|
|
118
|
-
}
|
|
119
|
-
/* Forward any other slicc-* message to in-page listeners via a
|
|
120
|
-
CustomEvent. Dips can opt in with
|
|
121
|
-
window.addEventListener('slicc-message', (ev) => ev.detail). */
|
|
122
|
-
if (e.data.type.indexOf('slicc-') === 0) {
|
|
123
|
-
try {
|
|
124
|
-
document.dispatchEvent(new CustomEvent('slicc-message', { detail: e.data }));
|
|
125
|
-
} catch (ex) {}
|
|
126
|
-
}
|
|
127
|
-
});
|
|
128
|
-
window.addEventListener('load', function() {
|
|
129
|
-
reportHeight();
|
|
130
|
-
new ResizeObserver(reportHeight).observe(document.body);
|
|
131
|
-
});
|
|
132
|
-
/* Support data-action attributes (Tool UI compat) — auto-lick on click.
|
|
133
|
-
Also intercept <a href> clicks and relay to the parent so links open
|
|
134
|
-
despite the iframe sandbox blocking top-level navigation. */
|
|
135
|
-
document.addEventListener('click', function(e) {
|
|
136
|
-
var el = e.target;
|
|
137
|
-
while (el && el !== document.body) {
|
|
138
|
-
if (el.dataset && el.dataset.action) {
|
|
139
|
-
var actionData = el.dataset.actionData;
|
|
140
|
-
if (actionData) { try { actionData = JSON.parse(actionData); } catch(ex) {} }
|
|
141
|
-
/* Picker hint (e.g. data-picker="directory") needs the parent to
|
|
142
|
-
run File System Access API on the click activation chain.
|
|
143
|
-
Forward as a separate message so the parent can run
|
|
144
|
-
showDirectoryPicker, stash the handle in IDB, then dispatch
|
|
145
|
-
the lick with the IDB key. */
|
|
146
|
-
var picker = el.dataset.picker;
|
|
147
|
-
if (picker) {
|
|
148
|
-
parent.postMessage({
|
|
149
|
-
type: 'dip-picker-action',
|
|
150
|
-
action: el.dataset.action,
|
|
151
|
-
data: actionData || null,
|
|
152
|
-
picker: picker,
|
|
153
|
-
}, '*');
|
|
154
|
-
} else {
|
|
155
|
-
window.slicc.lick({ action: el.dataset.action, data: actionData || null });
|
|
156
|
-
}
|
|
157
|
-
e.preventDefault();
|
|
158
|
-
e.stopPropagation();
|
|
159
|
-
return;
|
|
160
|
-
}
|
|
161
|
-
if (el.tagName === 'A' && el.getAttribute('href')) {
|
|
162
|
-
var href = el.getAttribute('href');
|
|
163
|
-
/* Allow in-iframe anchor navigation (#foo). Skip javascript: for safety. */
|
|
164
|
-
if (href.charAt(0) === '#') return;
|
|
165
|
-
if (/^javascript:/i.test(href)) { e.preventDefault(); return; }
|
|
166
|
-
/* Resolve relative URLs against the iframe's base. */
|
|
167
|
-
var resolved;
|
|
168
|
-
try { resolved = new URL(href, document.baseURI).href; } catch(ex) { resolved = href; }
|
|
169
|
-
parent.postMessage({ type: 'dip-open-link', url: resolved }, '*');
|
|
170
|
-
e.preventDefault();
|
|
171
|
-
e.stopPropagation();
|
|
172
|
-
return;
|
|
173
|
-
}
|
|
174
|
-
el = el.parentElement;
|
|
175
|
-
}
|
|
176
|
-
});
|
|
177
|
-
})();`}var Be=`html,body{margin:0;padding:0;overflow:hidden;background:transparent;box-sizing:border-box}
|
|
178
|
-
*,*::before,*::after{box-sizing:inherit}
|
|
179
|
-
/* Vertical breathing room around dip content. Horizontal padding is owned
|
|
180
|
-
by the dip's own content (e.g. .sprinkle-action-card__body) so shtml
|
|
181
|
-
widgets that already pad themselves don't end up double-indented. The
|
|
182
|
-
ResizeObserver on document.body reports the post-padding scrollHeight
|
|
183
|
-
correctly, so auto-height continues to work. The .sprinkle-inline rule
|
|
184
|
-
(set on the iframe body) carries 2px of horizontal padding so the 1px
|
|
185
|
-
focus ring (box-shadow:0 0 0 1px on inputs/select below) doesn't get
|
|
186
|
-
clipped at the iframe paint boundary. */
|
|
187
|
-
body{padding:12px 0;font-family:var(--s2-font-family, sans-serif);font-size:13px;color:var(--s2-content-default)}
|
|
188
|
-
.sprinkle-inline{padding:var(--s2-spacing-100) 2px}
|
|
189
|
-
.sprinkle-inline .sprinkle-btn{padding:4px 12px;font-size:12px;height:28px;box-shadow:none}
|
|
190
|
-
.sprinkle-inline .sprinkle-btn:not([class*="sprinkle-btn--"]){background:var(--s2-bg-elevated)}
|
|
191
|
-
.sprinkle-inline .sprinkle-card{box-shadow:none;margin:0}
|
|
192
|
-
.sprinkle-inline .sprinkle-action-card{margin:0;width:100%}
|
|
193
|
-
.sprinkle-inline .sprinkle-action-card .sprinkle-table{width:100%}
|
|
194
|
-
.sprinkle-inline .sprinkle-grid{width:100%}
|
|
195
|
-
input[type="range"]{width:100%;height:4px;-webkit-appearance:none;appearance:none;background:var(--s2-gray-300);border-radius:2px;outline:none;cursor:default}
|
|
196
|
-
input[type="range"]::-webkit-slider-thumb{-webkit-appearance:none;width:18px;height:18px;border-radius:50%;background:var(--s2-accent);cursor:default;border:2px solid var(--s2-bg-base)}
|
|
197
|
-
input[type="range"]::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:var(--s2-accent);cursor:default;border:2px solid var(--s2-bg-base)}
|
|
198
|
-
input[type="text"],input[type="number"],textarea{width:100%;padding:7px 12px;font-size:13px;font-family:var(--s2-font-family,sans-serif);color:var(--s2-content-default);background:var(--s2-bg-layer-2);border:1px solid var(--s2-border-subtle,var(--s2-gray-300));border-radius:8px;outline:none;box-sizing:border-box}
|
|
199
|
-
input[type="text"]:focus,input[type="number"]:focus,textarea:focus{border-color:var(--s2-accent);box-shadow:0 0 0 1px var(--s2-accent)}
|
|
200
|
-
input[type="text"]::placeholder,textarea::placeholder{color:var(--s2-content-disabled,var(--s2-gray-400))}
|
|
201
|
-
select{padding:6px 12px;font-size:13px;font-family:var(--s2-font-family,sans-serif);color:var(--s2-content-default);background:var(--s2-bg-layer-2);border:1px solid var(--s2-border-subtle,var(--s2-gray-300));border-radius:8px;outline:none;cursor:default}
|
|
202
|
-
select:focus{border-color:var(--s2-accent);box-shadow:0 0 0 1px var(--s2-accent)}
|
|
203
|
-
button{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:28px;padding:4px 12px;border:1px solid var(--s2-border-default,var(--s2-gray-300));border-radius:9999px;background:transparent;color:var(--s2-content-default);font-size:12px;font-weight:700;font-family:var(--s2-font-family,sans-serif);cursor:default;transition:background 130ms ease}
|
|
204
|
-
button:hover{background:color-mix(in srgb,var(--s2-content-default) 6%,transparent)}
|
|
205
|
-
button:disabled{opacity:0.4;pointer-events:none}
|
|
206
|
-
canvas{display:block;width:100%;border-radius:8px}
|
|
207
|
-
mark{background:color-mix(in srgb,var(--s2-accent) 25%,transparent);color:inherit;border-radius:2px;padding:0 2px}
|
|
208
|
-
.c-purple{background:#3C3489;color:#EEEDFE}.c-teal{background:#085041;color:#E1F5EE}
|
|
209
|
-
.c-coral{background:#712B13;color:#FAECE7}.c-pink{background:#72243E;color:#FBEAF0}
|
|
210
|
-
.c-gray{background:#444441;color:#F1EFE8}.c-blue{background:#0C447C;color:#E6F1FB}
|
|
211
|
-
.c-amber{background:#633806;color:#FAEEDA}.c-red{background:#791F1F;color:#FCEBEB}
|
|
212
|
-
.c-green{background:#27500A;color:#EAF3DE}`,Ve=`(function(){
|
|
213
|
-
window.addEventListener('message', function(e){
|
|
214
|
-
if (!e.data || e.data.type !== 'dip-draft-update') return;
|
|
215
|
-
var content = typeof e.data.content === 'string' ? e.data.content : '';
|
|
216
|
-
document.body.innerHTML = content;
|
|
217
|
-
if (window.lucide && typeof window.lucide.createIcons === 'function') {
|
|
218
|
-
try { window.lucide.createIcons(); } catch(ex){}
|
|
219
|
-
}
|
|
220
|
-
});
|
|
221
|
-
})();`;function He(e,t,n=!1){let r=Ee(),i=Te()?` class="theme-light"`:``,a=t||e.includes(`<slicc-editor`),o=t||e.includes(`<slicc-diff`),s=t?`<script>${Ve}<\/script>`:``;return`<!DOCTYPE html>
|
|
222
|
-
<html${i}><head>
|
|
223
|
-
<meta charset="utf-8">
|
|
224
|
-
<style>${r}</style>
|
|
225
|
-
<style>${Be}</style>
|
|
226
|
-
<script>${ze(n&&!t)}<\/script>
|
|
227
|
-
${s}
|
|
228
|
-
${a?`<script src="/slicc-editor.js"><\/script>`:``}
|
|
229
|
-
${o?`<script src="/slicc-diff.js"><\/script>`:``}
|
|
230
|
-
<script src="/lucide-icons.js"><\/script>
|
|
231
|
-
</head>
|
|
232
|
-
<body class="sprinkle-inline">${e}</body></html>`}var B=new Set;function Ue(e){if(typeof e?.type!=`string`||e.type.indexOf(`slicc-`)!==0)throw Error(`broadcastToDips: payload.type must start with 'slicc-'`);for(let t of B)try{t.postMessage(e,`*`)}catch{}}var We;function Ge(e){We=e}function V(e){return e.length===0?`''`:`'${e.replace(/'/g,`'\\''`)}'`}function Ke(e,t){let n=t?.cwd??`.`,r=t?.allowedCommands??`*`,i=[`agent`];return t?.model&&i.push(`--model`,V(t.model)),t?.thinking&&i.push(`--thinking`,V(t.thinking)),t?.readOnly&&i.push(`--read-only`,V(t.readOnly)),i.push(V(n),V(r),V(e)),i.join(` `)}async function qe(e){if(!We)return{stdout:``,stderr:`exec: shell bridge not available
|
|
233
|
-
`,exitCode:127};try{return await We(e)}catch(e){return{stdout:``,stderr:`exec: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}async function Je(e,t){let n=await qe(Ke(e,t));return{stdout:n.stdout||n.stderr,exitCode:n.exitCode}}async function Ye(e,t){let n=await Se(qe,e,t);if(e===`fetch`){let e=n,t=atob(e.bodyBase64),r=new Uint8Array(t.length);for(let e=0;e<t.length;e++)r[e]=t.charCodeAt(e);return{...e,body:new TextDecoder(`utf-8`).decode(r)}}return n}var H=new WeakMap;function Xe(e,t){try{e.postMessage({type:`dip-device-event`,channel:`hid:inputreport`,payload:t},`*`)}catch{}}async function Ze(e,t){let n=H.get(e);if(n||(n=new Map,H.set(e,n)),n.has(t))return;let r=await E(b(),t,n=>{let r=n.bytes instanceof Uint8Array?n.bytes:new Uint8Array(n.bytes);Xe(e,{handle:t,reportId:n.reportId,data:r})});n.set(t,r)}async function Qe(e,t){let n=H.get(e);if(!n)return;let r=n.get(t);if(r){n.delete(t);try{await Promise.resolve(r())}catch{}}n.size===0&&H.delete(e)}function $e(e){let t=H.get(e);if(t){for(let e of t.values())try{Promise.resolve(e()).catch(()=>{})}catch{}H.delete(e)}}function et(e){if(e instanceof Uint8Array)return e;if(e instanceof ArrayBuffer)return new Uint8Array(e);if(ArrayBuffer.isView(e)){let t=e;return new Uint8Array(t.buffer,t.byteOffset,t.byteLength)}if(Array.isArray(e))return new Uint8Array(e);throw Error(`expected Uint8Array, ArrayBuffer, or number[]`)}async function tt(e,t,n){let r=b();switch(t){case`list`:{let e=y();if(!e)throw Error(`WebHID is unavailable in this browser`);return te(r,e)}case`request`:{let e=y();if(!e)throw Error(`WebHID is unavailable in this browser`);return F(r,e,n[0]??[])}case`info`:return O(r,n[0]);case`open`:{let t=n[0];return await ee(r,t),await Ze(e,t),{ok:!0}}case`close`:{let t=n[0];return await Qe(e,t),await j(r,t),{ok:!0}}case`sendReport`:{let e=n[0],t=n[1],i=et(n[2]);return await re(r,e,t,i.buffer.slice(i.byteOffset,i.byteOffset+i.byteLength)),{ok:!0}}default:throw Error(`hid: unknown op '${t}'`)}}async function nt(e,t){let n=x();switch(e){case`list`:{let e=S();if(!e)throw Error(`Web Serial is unavailable in this browser`);return T(n,e)}case`request`:{let e=S();if(!e)throw Error(`Web Serial is unavailable in this browser`);return k(n,e,t[0]??[])}case`info`:return P(n,t[0]);case`open`:{let e=t[0];return await w(n,e,t[1]??{baudRate:9600}),{ok:!0}}case`close`:return await C(n,t[0]),{ok:!0};default:throw Error(`serial: unknown op '${e}'`)}}async function rt(e,t){let n=I();switch(e){case`list`:{let e=L();if(!e)throw Error(`WebUSB is unavailable in this browser`);return N(n,e)}case`request`:{let e=L();if(!e)throw Error(`WebUSB is unavailable in this browser`);return A(n,e,t[0]??[])}case`info`:return D(n,t[0]);case`open`:return await ne(n,t[0]),{ok:!0};case`close`:return await M(n,t[0]),{ok:!0};default:throw Error(`usb: unknown op '${e}'`)}}async function it(e,t,n,r){switch(t){case`hid`:return tt(e,n,r);case`serial`:return nt(n,r);case`usb`:return rt(n,r);default:throw Error(`unknown device channel '${t}'`)}}async function at(e,t){if(!e||typeof t.id!=`number`)return!1;let n=n=>{try{e.postMessage({...n,id:t.id},`*`)}catch{}};if(!z.has(e))return n({type:`dip-device-op-response`,error:`device access not allowed for this dip`}),!0;let r=t.channel;if(r!==`hid`&&r!==`serial`&&r!==`usb`)return n({type:`dip-device-op-response`,error:`unknown device channel '${r}'`}),!0;try{n({type:`dip-device-op-response`,result:await it(e,r,typeof t.op==`string`?t.op:``,Array.isArray(t.args)?t.args:[])})}catch(e){n({type:`dip-device-op-response`,error:e instanceof Error?e.message:String(e)})}return!0}async function ot(e,t){if(!e||typeof t.id!=`number`)return!1;let n=n=>{try{e.postMessage({...n,id:t.id},`*`)}catch{}};if(!z.has(e))return n({type:`${t.type}-response`,error:`exec not allowed for this dip`}),!0;if(t.type===`dip-exec`)return n({type:`dip-exec-response`,result:await qe(typeof t.cmd==`string`?t.cmd:``)}),!0;if(t.type===`dip-agent`)return n({type:`dip-agent-response`,result:await Je(typeof t.prompt==`string`?t.prompt:``,t.opts)}),!0;if(t.type===`dip-jsh`){try{n({type:`dip-jsh-response`,result:await Ye(typeof t.op==`string`?t.op:``,Array.isArray(t.args)?t.args:[])})}catch(e){n({type:`dip-jsh-response`,error:e instanceof Error?e.message:String(e)})}return!0}return!1}function st(e,t,n,r=!1){let i=He(t,!1,r);if(De)return bt(e,i,n,r);let a=document.createElement(`iframe`);a.setAttribute(`sandbox`,`allow-scripts allow-same-origin`),a.style.cssText=`width:100%;border:none;overflow:hidden;display:block;`,a.srcdoc=i,e.appendChild(a),a.contentWindow&&(we(a.contentWindow),B.add(a.contentWindow),r&&z.add(a.contentWindow)),a.addEventListener(`load`,()=>{we(a.contentWindow),a.contentWindow&&(B.add(a.contentWindow),r&&z.add(a.contentWindow))},{once:!0});let o=e=>{if(e.source!==a.contentWindow)return;let t=e.data;t?.type&&(t.type===`dip-lick`?n(t.action,t.data):t.type===`dip-height`?a.style.height=t.height+`px`:t.type===`dip-open-link`?lt(t.url):t.type===`dip-picker-action`?ft(t,n):t.type===`dip-readfile`||t.type===`dip-exists`||t.type===`dip-stat`?ct(a.contentWindow,t):t.type===`dip-exec`||t.type===`dip-agent`||t.type===`dip-jsh`?ot(a.contentWindow,t):t.type===`dip-device-op`&&at(a.contentWindow,t))};return window.addEventListener(`message`,o),{dispose(){window.removeEventListener(`message`,o),Ce(a.contentWindow),a.contentWindow&&(B.delete(a.contentWindow),z.delete(a.contentWindow),$e(a.contentWindow)),a.remove()}}}async function ct(e,t){if(!e||typeof t.id!=`number`)return!1;let n=typeof t.path==`string`?t.path:``,r=n=>{try{e.postMessage({...n,id:t.id},`*`)}catch{}};if(!z.has(e))return r({type:`${t.type}-response`,error:`VFS access not allowed for this dip`}),!0;if(!Fe(n))return r({type:`${t.type}-response`,error:`VFS path not allowed: ${n}`}),!0;if(t.type===`dip-readfile`){let e=await je(n,!0);return e===null?(r({type:`dip-readfile-response`,error:`Read failed`}),!0):(r({type:`dip-readfile-response`,content:typeof e==`string`?e:new TextDecoder().decode(e)}),!0)}if(t.type===`dip-exists`)return r({type:`dip-exists-response`,exists:await je(n,!0)!==null}),!0;if(t.type===`dip-stat`){let e=await je(n,!1);return e===null?(r({type:`dip-stat-response`,error:`Stat failed`}),!0):(r({type:`dip-stat-response`,stat:{isFile:!0,isDirectory:!1,size:typeof e==`string`?e.length:e.byteLength,mtimeMs:0}}),!0)}return!1}function lt(e){if(!(typeof e!=`string`||!e)&&/^(https?:|mailto:)/i.test(e))try{window.open(e,`_blank`,`noopener,noreferrer`)}catch{}}function ut(e,t){let n=[],r=e.querySelectorAll(`pre > code.language-shtml`);for(let e of r){let r=e.parentElement,i=e.textContent??``,a=document.createElement(`div`);a.className=`msg__dip`,r.replaceWith(a),n.push(st(a,i,t,!1))}let i=e.querySelectorAll(`img[src$=".shtml"]`);for(let e of i){let r=e.getAttribute(`src`);if(!r)continue;let i=document.createElement(`div`);i.className=`msg__dip`,e.alt&&i.setAttribute(`title`,e.alt),e.replaceWith(i);let a=new AbortController,o=null,s=!1;n.push({dispose(){s=!0,a.abort(),o&&=(o.dispose(),null)}});let c=r.startsWith(`/`),l=typeof navigator<`u`&&!!navigator.serviceWorker?.controller,u=c?`/preview${r}`:r,d=async()=>{if(c&&!l)return Oe(r,a.signal);let e;try{e=await fetch(u,{signal:a.signal})}catch(e){if(e?.name===`AbortError`)throw e;if(c)return Oe(r,a.signal);throw e}if(e.ok)return e.text();if(c)return Oe(r,a.signal);throw Error(`HTTP ${e.status}`)},f=c&&Pe(r);d().then(e=>{s||!i.isConnected||(o=st(i,e,t,f))}).catch(e=>{s||e?.name===`AbortError`||(i.textContent=`Failed to load dip: ${r}`,i.style.cssText=`padding:8px;font-size:12px;color:var(--s2-negative);font-family:var(--s2-font-mono)`)})}return n}function dt(e){for(let t of e)try{t.dispose()}catch{}e.length=0}async function ft(e,t){let n=e.data??null,r=Array.isArray(n?.filters)?n.filters:[];if(De){await pt(e.picker,e.action,r,t);return}switch(e.picker){case`directory`:await gt(e.action,t);return;case`usb-device`:await _t(e.action,r,t);return;case`serial-port`:await vt(e.action,r,t);return;case`hid-device`:await yt(e.action,r,t);return;default:t(e.action,e.data);return}}async function pt(e,n,r,i){try{switch(e){case`directory`:{let{openMountPickerPopup:e}=await t(async()=>{let{openMountPickerPopup:e}=await import(`./mount-picker-popup-Hrvzr69c.js`).then(e=>e.n);return{openMountPickerPopup:e}},__vite__mapDeps([0,1,2,3])),r=await e();r.cancelled?i(n,{cancelled:!0}):r.error?i(n,{error:r.error}):r.idbKey?i(n,{handleInIdb:!0,idbKey:r.idbKey,dirName:r.dirName??``}):i(n,{error:`mount picker returned no handle key`});return}case`usb-device`:{let{openUsbPickerPopup:e}=await t(async()=>{let{openUsbPickerPopup:e}=await import(`./usb-picker-D_K0weAY.js`).then(e=>e.t);return{openUsbPickerPopup:e}},__vite__mapDeps([4,1,3])),a=await e(r);`cancelled`in a?i(n,{cancelled:!0}):`error`in a?i(n,{error:a.error}):i(n,{granted:!0,info:a.info});return}case`serial-port`:{let{openSerialPickerPopup:e}=await t(async()=>{let{openSerialPickerPopup:e}=await import(`./serial-picker-B6s4NeaB.js`).then(e=>e.t);return{openSerialPickerPopup:e}},__vite__mapDeps([5,1,3])),a=await e(r);`cancelled`in a?i(n,{cancelled:!0}):`error`in a?i(n,{error:a.error}):i(n,{granted:!0,info:a.info});return}case`hid-device`:{let{openHidPickerPopup:e}=await t(async()=>{let{openHidPickerPopup:e}=await import(`./hid-picker-DUJBI46p.js`).then(e=>e.t);return{openHidPickerPopup:e}},__vite__mapDeps([6,1,3])),a=await e(r);`cancelled`in a?i(n,{cancelled:!0}):`error`in a?i(n,{error:a.error}):i(n,{granted:!0,info:a.info});return}default:i(n,{error:`unknown picker kind: ${e??`(none)`}`});return}}catch(e){i(n,{error:e instanceof Error?e.message:String(e)})}}async function mt(e,t){let n=v();if(!n)return null;let r={current:null},i=t=>{let n=t.detail;n.kind===e&&(r.current=n)};n.addEventListener(`slicc-permission-deny`,i);try{let i=await n.request(e,t);if(i)return{ok:!0,grant:i};let a=r.current;return{ok:!1,reason:a?.reason??`error`,...a?.message?{message:a.message}:{}}}finally{n.removeEventListener(`slicc-permission-deny`,i)}}function ht(e,t,n,r){if(t.reason===`cancelled`){r(e,{cancelled:!0});return}if(t.reason===`unavailable`){r(e,{error:n});return}r(e,{error:t.message??`unknown error`})}async function gt(e,n){let r=await mt(`filesystem`);if(!r){n(e,{error:`File System Access API not available`});return}if(!r.ok){ht(e,r,`File System Access API not available`,n);return}let i=r.grant.handle,a=`pendingMount:dip-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`;try{let{storePendingHandle:e}=await t(async()=>{let{storePendingHandle:e}=await import(`./mount-picker-popup-Hrvzr69c.js`).then(e=>e.n);return{storePendingHandle:e}},__vite__mapDeps([0,1,2,3]));await e(a,i)}catch(t){n(e,{error:`failed to store directory handle: ${t instanceof Error?t.message:String(t)}`});return}n(e,{handleInIdb:!0,idbKey:a,dirName:i.name})}async function _t(e,n,r){let i=await mt(`usb`,{filters:n});if(!i){r(e,{error:`WebUSB is not available`});return}if(!i.ok){ht(e,i,`WebUSB is not available`,r);return}let a=i.grant,{getSharedUsbRegistry:o,deviceToInfo:s}=await t(async()=>{let{getSharedUsbRegistry:e,deviceToInfo:t}=await import(`./usb-device-registry-BP58Vi0S.js`).then(e=>e.a);return{getSharedUsbRegistry:e,deviceToInfo:t}},__vite__mapDeps([7,1])),c=o().register(a.device);r(e,{granted:!0,handle:c,info:s(c,a.device)})}async function vt(e,n,r){let i=await mt(`serial`,n.length?{filters:n}:void 0);if(!i){r(e,{error:`Web Serial is not available`});return}if(!i.ok){ht(e,i,`Web Serial is not available`,r);return}let a=i.grant,o=await t(()=>import(`./serial-port-registry-Bc4wlwED.js`).then(e=>e.o),__vite__mapDeps([8,1])),s=o.getSharedSerialRegistry(),c=s.register(a.port),l=s.get(c);r(e,{granted:!0,handle:c,info:l?o.deviceToInfo(c,l):{handle:c}})}async function yt(e,n,r){let i=await mt(`hid`,{filters:n});if(!i){r(e,{error:`WebHID is not available`});return}if(!i.ok){ht(e,i,`WebHID is not available`,r);return}let a=i.grant,{getSharedHidRegistry:o,hidDeviceToInfo:s}=await t(async()=>{let{getSharedHidRegistry:e,hidDeviceToInfo:t}=await import(`./hid-device-registry-D2LsJCRr.js`).then(e=>e.a);return{getSharedHidRegistry:e,hidDeviceToInfo:t}},__vite__mapDeps([9,1])),c=o(),l=a.devices.map(e=>s(c.register(e),e)),u=l[0];r(e,{granted:!0,handle:u.handle,info:u,devices:l})}function bt(e,t,n,r=!1){let i=document.createElement(`iframe`);i.src=chrome.runtime.getURL(`sprinkle-sandbox.html`),i.style.cssText=`width:100%;border:none;overflow:hidden;display:block;`,e.appendChild(i);let a=e=>{if(e.source!==i.contentWindow)return;let t=e.data;t?.type&&(t.type===`dip-lick`?n(t.action,t.data):t.type===`dip-height`?i.style.height=t.height+`px`:t.type===`dip-open-link`?lt(t.url):t.type===`dip-readfile`||t.type===`dip-exists`||t.type===`dip-stat`?ct(i.contentWindow,t):t.type===`dip-exec`||t.type===`dip-agent`||t.type===`dip-jsh`?ot(i.contentWindow,t):t.type===`dip-device-op`?at(i.contentWindow,t):t.type===`dip-picker-action`&&ft(t,n))};return window.addEventListener(`message`,a),i.addEventListener(`load`,()=>{we(i.contentWindow),i.contentWindow&&(B.add(i.contentWindow),r&&z.add(i.contentWindow)),i.contentWindow?.postMessage({type:`dip-render`,srcdoc:t,isLight:Te()},`*`)},{once:!0}),{dispose(){window.removeEventListener(`message`,a),Ce(i.contentWindow),i.contentWindow&&(B.delete(i.contentWindow),z.delete(i.contentWindow),$e(i.contentWindow)),i.remove()}}}var xt=c(`cone-memory-budget`),St=4e3,Ct=2e3,wt=1.25,Tt=`/workspace/CLAUDE.md`,Et=`/sessions/index.json`,Dt=4096,Ot=/^## Auto-extracted/m,kt=`Consolidate the auto-extracted memory bullets below into a single tighter set of durable memories.
|
|
234
|
-
|
|
235
|
-
Rules:
|
|
236
|
-
- Output ONLY a single \`## Auto-extracted (consolidated)\` heading followed by markdown bullets.
|
|
237
|
-
- One fact per bullet. Drop duplicates and superseded facts. Keep the most recent / specific phrasing.
|
|
238
|
-
- Preserve concrete identifiers (file paths, URLs, IDs, names) verbatim.
|
|
239
|
-
- Be terse. Aim well under the original size.
|
|
240
|
-
- Do NOT add preamble, commentary, or any heading other than the single consolidated one.`;function At(e){return Math.round(St+Ct*Math.log2((Number.isFinite(e)&&e>=0?e:0)+2))}function jt(e){let t=Ot.exec(e);if(!t)return{header:e,autoExtracted:``};let n=t.index;return{header:e.slice(0,n),autoExtracted:e.slice(n)}}async function Mt(e){try{let t=await e.readFile(Et,{encoding:`utf-8`}),n=typeof t==`string`?t:new TextDecoder().decode(t),r=JSON.parse(n);return Array.isArray(r)?r.length:0}catch{return 0}}async function Nt(t){let{header:n,autoExtracted:r}=jt(t.currentContent);if(!r.trim())return t.currentContent;let i=`You are a memory consolidation assistant. You are given a markdown file's "auto-extracted" section — a list of memory bullets accumulated across sessions of an AI coding assistant. Your job is to rewrite that section as a tighter, deduplicated set of durable memories that fits well within ${t.budget} characters.
|
|
241
|
-
|
|
242
|
-
<auto-extracted>
|
|
243
|
-
${r}
|
|
244
|
-
</auto-extracted>`,a={role:`user`,content:[{type:`text`,text:kt}],timestamp:Date.now()},o=await e(t.model,{systemPrompt:i,messages:[a]},{apiKey:t.apiKey,maxTokens:Dt,headers:t.headers,signal:t.signal});if(o.stopReason===`error`)throw Error(`Restructure call failed: ${o.errorMessage||`Unknown error`}`);let s=o.content.filter(e=>e.type===`text`).map(e=>e.text).join(`
|
|
245
|
-
`).trim();if(!s)throw Error(`Restructure call returned empty content`);return`${n}${n.length===0||n.endsWith(`
|
|
246
|
-
`)?``:`
|
|
247
|
-
`}${s}\n`}async function Pt(e){if(!e.model||!e.apiKey)return{restructured:!1,reason:`no-llm`};let t=``;try{let n=await e.vfs.readFile(Tt,{encoding:`utf-8`});t=typeof n==`string`?n:new TextDecoder().decode(n)}catch{return{restructured:!1,reason:`missing-file`}}let n=await Mt(e.vfs),r=At(n),i=r*wt;if(t.length<=i)return{restructured:!1,reason:`under-threshold`};xt.info(`Cone memory over threshold — restructuring`,{size:t.length,budget:r,threshold:i,sessionCount:n});try{let n=await Nt({currentContent:t,budget:r,model:e.model,apiKey:e.apiKey,headers:e.headers,signal:e.signal});return await e.vfs.writeFile(Tt,n),xt.info(`Cone memory restructured`,{before:t.length,after:n.length}),{restructured:!0}}catch(e){return xt.warn(`Cone memory restructure failed — leaving appended content in place`,{error:e instanceof Error?e.message:String(e)}),{restructured:!1,reason:`error`}}}function Ft(e){let t=``;for(let n of e){let e=n.role===`user`?`User`:`Assistant`,r=n.role===`user`?oe(n.content):n.content;if(t+=`## ${e}\n${r}\n\n`,n.attachments?.length&&(t+=`Attachments:\n${n.attachments.map(e=>`- ${i(e)}`).join(`
|
|
248
|
-
`)}\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 U=c(`session-freezer`),It=4,Lt=2048,Rt=40,zt=`/sessions`,W=`/sessions/index.json`;async function Bt(e){let t=await Kt(e.sessionStore);if(!t||t.messages.length<It)return U.info(`Skipping freeze: session below threshold or missing`,{messageCount:t?.messages.length??0}),null;let n=qt(t.messages),r=e.mode??`full`,i=r===`full`&&!!(e.apiKey&&e.model);await Ut(e,n,i);let a=await Wt(e,n,i)||$t(t.messages);return await Gt(e,t,a,r,i?await Vt(e,a):void 0)}async function Vt(e,n){try{return Ht(await(e.pickIcon??(await t(async()=>{let{pickLucideIcon:e}=await import(`./quick-llm-DmM8V850.js`).then(e=>e.n);return{pickLucideIcon:e}},__vite__mapDeps([10,1,11,12,13,14,15,16,17,2,18,19,20,21,22,23,24,25,26,27,28]))).pickLucideIcon)({subject:`"${n}" — an archived chat session`})??void 0)}catch(e){U.warn(`Icon pick failed (freeze still proceeds)`,{error:e instanceof Error?e.message:String(e)});return}}function Ht(e){if(e)return R(e)?e:void 0}async function Ut(e,t,n){if(!n){U.info(`LLM unavailable — skipping memory extraction; freezing anyway`);return}let r=``;try{r=await o({messages:t,instruction:s,model:e.model,apiKey:e.apiKey,maxTokens:Lt,headers:e.headers})}catch(e){U.warn(`Memory extraction call failed (freeze still proceeds)`,{error:e instanceof Error?e.message:String(e)});return}if(!r.trim()||r.trim()===`NONE`){U.info(`Memory extraction returned no durable memories`);return}try{await rn(e.vfs,r.trim(),`new-session`,{model:e.model,apiKey:e.apiKey,headers:e.headers}),U.info(`Memory extracted and appended on new-session`)}catch(e){U.warn(`Memory append failed`,{error:e instanceof Error?e.message:String(e)})}}async function Wt(e,t,n){if(!n)return``;try{return Qt(await o({messages:t,instruction:a,model:e.model,apiKey:e.apiKey,maxTokens:Rt,headers:e.headers}))}catch(e){return U.warn(`Title generation call failed (using heuristic)`,{error:e instanceof Error?e.message:String(e)}),``}}async function Gt(e,t,n,r,i){let a=new Date().toISOString(),o=r===`quick`?`pending-${tn()}.md`:`${a.replace(/[:.]/g,`-`)}-${en(n)}.md`,s={id:t.id,title:n,frozenAt:a,createdAt:t.createdAt,updatedAt:t.updatedAt,messageCount:t.messages.length,messages:t.messages},c=Zt(s),l={filename:o,title:n,frozenAt:a,messageCount:t.messages.length,...i?{icon:i}:{},...r===`quick`?{pendingEnrichment:!0}:{}};try{return await nn(e.vfs,zt),await e.vfs.writeFile(`${zt}/${o}`,c),await an(e.vfs,l),await e.vfs.flush(),U.info(`Cone session frozen`,{filename:o,title:n,messageCount:t.messages.length}),{...l,archive:s}}catch(e){return U.warn(`Failed to write frozen session to VFS`,{error:e instanceof Error?e.message:String(e)}),null}}async function Kt(e){try{return await e.load(`session-cone`)}catch(e){return U.warn(`Failed to load session-cone`,{error:e instanceof Error?e.message:String(e)}),null}}function qt(e){return e.map(e=>({role:e.role,content:[{type:`text`,text:e.content}],timestamp:e.timestamp}))}var Jt=`<!-- slicc:session-data
|
|
249
|
-
`,Yt=`
|
|
250
|
-
-->`;function Xt(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 Zt(e){let t=`---\nid: ${e.id}\ntitle: ${JSON.stringify(e.title)}\nfrozenAt: ${e.frozenAt}\ncreatedAt: ${e.createdAt}\nupdatedAt: ${e.updatedAt}\nmessageCount: ${e.messageCount}\n---\n\n`,n=`${Jt}${JSON.stringify(Xt(e.messages)).replace(/-->/g,`-- >`)}${Yt}\n\n`,r=`# ${e.title}\n\n`;return t+n+r+Ft(e.messages)}function Qt(e){let t=e.trim();return t=t.replace(/^["'`]+|["'`]+$/g,``).trim(),t=t.replace(/\s+/g,` `),t.length>80&&(t=t.slice(0,80).trimEnd()),t}function $t(e){let t=e.find(e=>e.role===`user`);if(!t?.content)return`untitled-session`;let n=t.content.trim().replace(/\s+/g,` `);return n.length>60?`${n.slice(0,60)}…`:n||`untitled-session`}function en(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``).slice(0,48)||`session`}function tn(){return`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,6)}`}async function nn(e,t){try{await e.mkdir(t,{recursive:!0})}catch{}}async function rn(e,t,n,r){let i=`/workspace/CLAUDE.md`,a=``;try{let t=await e.readFile(i,{encoding:`utf-8`});a=typeof t==`string`?t:new TextDecoder().decode(t)}catch{await nn(e,`/workspace`)}let o=`## Auto-extracted (${new Date().toISOString().slice(0,10)}, ${n})`,s=`${a.length===0||a.endsWith(`
|
|
251
|
-
`)?``:`
|
|
252
|
-
`}\n${o}\n\n${t}\n`;await e.writeFile(i,a+s);try{await Pt({vfs:e,model:r?.model,apiKey:r?.apiKey,headers:r?.headers,signal:r?.signal})}catch(e){U.warn(`Cone memory budget step threw (append already committed)`,{error:e instanceof Error?e.message:String(e)})}}async function an(e,t){let n=[];try{let t=await e.readFile(W,{encoding:`utf-8`}),r=typeof t==`string`?t:new TextDecoder().decode(t),i=JSON.parse(r);Array.isArray(i)&&(n=i)}catch{}let r=[t,...n.filter(e=>e.filename!==t.filename)];await e.writeFile(W,JSON.stringify(r,null,2))}async function on(e){try{let t=await e.readFile(W,{encoding:`utf-8`}),n=typeof t==`string`?t:new TextDecoder().decode(t),r=JSON.parse(n);return Array.isArray(r)?r:[]}catch{return[]}}function sn(e){return`${zt}/${e.filename}`}async function cn(e,t,n){if(!t.pendingEnrichment)return null;let r=await un(e,t);if(r===null)return null;let i=dn(t,r);if(i===null)return null;let a=await fn(t,i,n);if(a===null)return null;let o=await ln(n,a.newTitle);return await pn(e,t,a.bullets,n),await mn(e,t,r,a.newTitle,o)}async function ln(e,t){if(e.pickIcon)try{return await Ht(await e.pickIcon({subject:`"${t}" — an archived chat session`})??void 0)}catch(e){U.warn(`Enrichment icon pick failed (continuing without icon)`,{error:e instanceof Error?e.message:String(e)});return}}async function un(e,t){try{let n=await e.readFile(sn(t),{encoding:`utf-8`});return typeof n==`string`?n:new TextDecoder().decode(n)}catch(e){return e?.code===`ENOENT`?U.info(`Pending archive missing — treating as already enriched`,{filename:t.filename}):U.warn(`Failed to read pending archive (entry stays pending)`,{filename:t.filename,error:e instanceof Error?e.message:String(e)}),null}}function dn(e,t){let n;try{n=vn(t).messages}catch(t){return U.warn(`Failed to parse pending archive — leaving entry intact`,{filename:e.filename,error:t instanceof Error?t.message:String(t)}),null}return n.length===0?(U.info(`Pending archive has no messages — skipping enrichment`,{filename:e.filename}),null):qt(n)}async function fn(e,t,n){let r=``;try{r=await o({messages:t,instruction:s,model:n.model,apiKey:n.apiKey,maxTokens:Lt,headers:n.headers})}catch(t){return U.warn(`Enrichment memory call failed (entry stays pending)`,{filename:e.filename,error:t instanceof Error?t.message:String(t)}),null}let i=``;try{i=Qt(await o({messages:t,instruction:a,model:n.model,apiKey:n.apiKey,maxTokens:Rt,headers:n.headers}))}catch(t){return U.warn(`Enrichment title call failed (entry stays pending)`,{filename:e.filename,error:t instanceof Error?t.message:String(t)}),null}return i?{bullets:r,newTitle:i}:(U.info(`Enrichment title call returned empty — entry stays pending`,{filename:e.filename}),null)}async function pn(e,t,n,r){let i=n.trim();if(!(!i||i===`NONE`))try{await rn(e,i,`pending-enrichment`,{model:r.model,apiKey:r.apiKey,headers:r.headers})}catch(e){U.warn(`Enrichment memory append failed (continuing with title rewrite)`,{filename:t.filename,error:e instanceof Error?e.message:String(e)})}}async function mn(e,t,n,r,i){let a=sn(t),o=hn(n,r),s=`${t.frozenAt.replace(/[:.]/g,`-`)}-${en(r)}.md`,c=`${zt}/${s}`;try{await nn(e,zt),await e.writeFile(c,o)}catch(e){return U.warn(`Enrichment write failed (entry stays pending)`,{filename:t.filename,error:e instanceof Error?e.message:String(e)}),null}let l=i??t.icon,u={filename:s,title:r,frozenAt:t.frozenAt,messageCount:t.messageCount,...l?{icon:l}:{}};try{await _n(e,t.filename,u)}catch(e){return U.warn(`Enrichment index update failed (entry may stay pending)`,{filename:t.filename,error:e instanceof Error?e.message:String(e)}),null}if(c!==a)try{await e.rm(a)}catch(e){U.info(`Stale pending archive cleanup failed (harmless)`,{oldPath:a,error:e instanceof Error?e.message:String(e)})}try{await e.flush()}catch{}return U.info(`Pending session enriched`,{oldFilename:t.filename,newFilename:s,title:r}),u}function hn(e,t){let n=e.match(/^---\n([\s\S]*?)\n---\n([\s\S]*)$/);if(!n)return e;let r=n[1].replace(/^title:\s*.+$/m,`title: ${JSON.stringify(t)}`),i=n[2];return i=i.replace(/^#\s+[^\n]*$/m,`# ${t}`),`---\n${r}\n---\n${i}`}var gn=Promise.resolve();async function _n(e,t,n){let r=async()=>{let r=[];try{let t=await e.readFile(W,{encoding:`utf-8`}),n=typeof t==`string`?t:new TextDecoder().decode(t),i=JSON.parse(n);Array.isArray(i)&&(r=i)}catch{}let i=r.findIndex(e=>e.filename===t),a;i===-1?a=[n,...r.filter(e=>e.filename!==n.filename)]:(a=r.slice(),a[i]=n,a=a.filter((e,t)=>t===i||e.filename!==n.filename)),await e.writeFile(W,JSON.stringify(a,null,2))},i=gn.then(r,r);return gn=i.then(()=>void 0,()=>void 0),i}function vn(e){let t=e,n=`Untitled`,r=t.match(/^---\n([\s\S]*?)\n---\n+/);if(r){t=t.slice(r[0].length);let e=r[1].match(/^title:\s*(.+?)\s*$/m);if(e){let t=e[1].trim();if(t.startsWith(`"`))try{let e=JSON.parse(t);typeof e==`string`&&(n=e)}catch{n=t.replace(/^"|"$/g,``)}else n=t}}let i=t.match(/<!-- slicc:session-data\n([\s\S]*?)\n-->\n*/);if(i){try{let e=i[1].replace(/-- >/g,`-->`),t=JSON.parse(e);if(Array.isArray(t))return{title:n,messages:t}}catch{}t=t.replace(/<!-- slicc:session-data\n[\s\S]*?\n-->\n*/,``)}return t=t.replace(/^#\s+[^\n]*\n+/,``),{title:n,messages:yn(t)}}function yn(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}var bn=`__slicc_binary__`,xn=`b64`;function Sn(e){if(!e||typeof e!=`object`)return!1;let t=e;return t[bn]===xn&&typeof t.data==`string`}function Cn(e){if(e instanceof Uint8Array)return{[bn]:xn,data:u(e)};if(Array.isArray(e))return e.map(Cn);if(e&&typeof e==`object`){let t={};for(let[n,r]of Object.entries(e))t[n]=Cn(r);return t}return e}function wn(e){if(Sn(e))return d(e.data);if(Array.isArray(e))return e.map(wn);if(e&&typeof e==`object`){let t={};for(let[n,r]of Object.entries(e))t[n]=wn(r);return t}return e}var Tn=c(`panel-transport`);function En(e){return typeof e==`object`&&!!e&&`source`in e&&`payload`in e}function Dn(){return{onMessage:e=>{let t=(t,n,r)=>(En(t)&&e(wn(t)),!1);return chrome.runtime.onMessage.addListener(t),()=>chrome.runtime.onMessage.removeListener(t)},send:(e,t)=>{let n=Cn(e);chrome.runtime.sendMessage({source:`panel`,payload:n}).catch(e=>{Tn.error(`failed to send to offscreen`,{error:e instanceof Error?e.message:String(e)})})}}}var G=c(`offscreen-client`),On=class{eventListeners=new Set;callbacks;scoops=[];scoopStatuses=new Map;currentMessageId=new Map;ready=!1;stateRetryTimer=null;localFs=null;pendingClearAcks=new Map;pendingTranscriptRequests=new Map;pendingStatsRequests=new Map;transport;_selectedScoopJid=null;get selectedScoopJid(){return this._selectedScoopJid}scoopSelectedListeners=new Set;onScoopSelected(e){return this.scoopSelectedListeners.add(e),()=>{this.scoopSelectedListeners.delete(e)}}setSelectedScoopJid(e){if(this._selectedScoopJid!==e&&(this._selectedScoopJid=e,e!==null))for(let t of this.scoopSelectedListeners)try{t(e)}catch(e){G.error(`onScoopSelected handler threw`,{error:e instanceof Error?e.message:String(e)})}}locked=!1;constructor(e,t){this.callbacks=e,this.transport=t??Dn(),this.setupMessageListener()}setLocalFS(e){this.localFs=e}getTransport(){return this.transport}createAgentHandle(){return{sendMessage:(e,t,n)=>{if(!this.selectedScoopJid){this.emitToUI({type:`error`,error:`No scoop selected`});return}this.send({type:`user-message`,scoopJid:this.selectedScoopJid,text:e,attachments:n,messageId:t??`msg-${Date.now()}-${Math.random().toString(36).slice(2,8)}`})},onEvent:e=>(this.eventListeners.add(e),()=>this.eventListeners.delete(e)),stop:()=>{this.selectedScoopJid&&this.send({type:`abort`,scoopJid:this.selectedScoopJid})}}}getScoops(){return this.scoops}getScoop(e){return this.scoops.find(t=>t.jid===e)}isProcessing(e){return this.scoopStatuses.get(e)===`processing`}async registerScoop(e){if(!e.isCone)throw Error(`OffscreenClient.registerScoop is cone-only; use scoop_scoop for non-cone scoops`);this.scoops.find(t=>t.name===e.name)||(this.scoops.push(e),this.scoopStatuses.set(e.jid,`initializing`)),this.send({type:`cone-create`,name:e.name})}async unregisterScoop(e){this.send({type:`scoop-drop`,scoopJid:e}),this.scoops=this.scoops.filter(t=>t.jid!==e),this.scoopStatuses.delete(e)}createScoopTab(e){}async getGlobalMemory(){if(!this.localFs)return``;try{let e=await this.localFs.readFile(`/shared/CLAUDE.md`,{encoding:`utf-8`});return typeof e==`string`?e:new TextDecoder().decode(e)}catch{return``}}getScoopContext(e){if(this.localFs)return{getFS:()=>this.localFs}}getSharedFS(){return this.localFs}stopScoop(e){this.send({type:`abort`,scoopJid:e})}async clearQueuedMessages(e){}async deleteQueuedMessage(e,t){this.send({type:`delete-queued-message`,scoopJid:e,messageId:t})}updateModel(){this.send({type:`refresh-model`})}setLocked(e){this.locked=e}setScoopThinkingLevel(e,t){this.send({type:`set-thinking-level`,scoopJid:e,level:t})}async clearAllMessages(){let e=`clear-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,t=new Promise(t=>{this.pendingClearAcks.set(e,t)});this.send({type:`clear-chat`,requestId:e}),await Promise.race([t,new Promise(e=>setTimeout(e,5e3))]),this.pendingClearAcks.delete(e)}clearFilesystem(){this.send({type:`clear-filesystem`})}requestScoopMessages(e){this.send({type:`request-scoop-messages`,scoopJid:e})}async getScoopTranscript(e){let t=`tr-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,n=new Promise(e=>{this.pendingTranscriptRequests.set(t,e)});this.send({type:`request-scoop-transcript`,requestId:t,scoopJid:e});let r=await Promise.race([n,new Promise(e=>setTimeout(()=>e(``),5e3))]);return this.pendingTranscriptRequests.delete(t),r}async getSessionStats(){let e=`st-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,t=new Promise(t=>{this.pendingStatsRequests.set(e,t)});this.send({type:`request-session-stats`,requestId:e});let n=await Promise.race([t,new Promise(e=>setTimeout(()=>e(null),5e3))]);return this.pendingStatsRequests.delete(e),n}requestState(){this.send({type:`request-state`});let e=0;this.stateRetryTimer=setInterval(()=>{if(e++,this.ready||e>20){this.stateRetryTimer&&=(clearInterval(this.stateRetryTimer),null);return}G.debug(`Retrying request-state`,{attempt:e}),this.send({type:`request-state`})},500)}isReady(){return this.ready}sprinkleOpHandler=null;forwardLickHandler=null;sendSprinkleLick(e,t,n,r){this.send({type:`sprinkle-lick`,sprinkleName:e,body:t,targetScoop:n,originLabel:r})}sendToolUiAction(e,t,n){this.send({type:`tool-ui-action`,requestId:e,action:t,data:n})}sendWebhookEvent(e,t,n){this.send({type:`lick-webhook-event`,webhookId:e,headers:t,body:n})}sendSetFollowerForwarding(e){this.send({type:`set-follower-forwarding`,enabled:e})}sendForwardedLick(e){this.send({type:`inject-forwarded-lick`,event:e})}setForwardLickHandler(e){this.forwardLickHandler=e}sendCherryHostEvent(e,t,n){this.send({type:`lick-cherry-host-event`,cherryRuntimeId:e,name:t,detail:n})}setSprinkleOpHandler(e){this.sprinkleOpHandler=e}sendRaw(e){this.send(e)}setupMessageListener(){this.transport.onMessage(e=>{if(e.source!==`offscreen`)return;let t=e.payload;t?.type===`sprinkle-op`&&this.sprinkleOpHandler?this.sprinkleOpHandler(t):this.handleOffscreenMessage(e.payload)})}handleOffscreenMessage(e){switch(e.type){case`offscreen-ready`:this.ready?(G.warn(`Offscreen restarted — re-requesting state`),this.ready=!1):G.info(`Offscreen engine ready`),this.send({type:`request-state`});break;case`agent-event`:this.handleAgentEvent(e);break;case`scoop-status`:this.handleScoopStatus(e);break;case`compaction-state`:this.callbacks.onCompactionStateChange?.(e.scoopJid,e.state);break;case`clear-chat-ack`:{let t=this.pendingClearAcks.get(e.requestId);t&&(this.pendingClearAcks.delete(e.requestId),t());break}case`scoop-created`:this.handleScoopCreated(e);break;case`scoop-list`:this.handleScoopList(e);break;case`state-snapshot`:this.handleStateSnapshot(e);break;case`error`:this.handleError(e);break;case`incoming-message`:this.handleIncomingMessage(e);break;case`message-updated`:this.handleMessageUpdated(e);break;case`scoop-messages-replaced`:{let t=e;this.resyncStreamPointer(t.scoopJid,t.messages),this.callbacks.onScoopMessagesReplaced?.(t.scoopJid,t.messages);break}case`scoop-transcript`:{let t=e,n=this.pendingTranscriptRequests.get(t.requestId);n&&(this.pendingTranscriptRequests.delete(t.requestId),n(t.transcript));break}case`session-stats`:{let t=e,n=this.pendingStatsRequests.get(t.requestId);n&&(this.pendingStatsRequests.delete(t.requestId),n({totalCost:t.totalCost,fills:t.fills,models:t.models??[],scoops:t.scoops??[]}));break}case`tray-runtime-status`:{let t=e;An(t.leader,t.follower);break}case`forward-lick`:this.forwardLickHandler?.(e.event);break;case`terminal-status`:case`terminal-output`:case`terminal-media-preview`:case`terminal-exit`:case`terminal-cleared`:for(let t of this.terminalEventListeners)try{t(e)}catch(e){G.error(`terminal event listener error`,{error:e instanceof Error?e.message:String(e)})}break}}terminalEventListeners=new Set;onTerminalEvent(e){return this.terminalEventListeners.add(e),()=>this.terminalEventListeners.delete(e)}resyncStreamPointer(e,t){let n;for(let e=t.length-1;e>=0;e--){let r=t[e];if(r.role===`assistant`&&r.isStreaming){n=r.id;break}}n===void 0?this.currentMessageId.delete(e):this.currentMessageId.set(e,n)}handleAgentEvent(e){switch(e.eventType){case`text_delta`:case`tool_start`:case`tool_ui`:case`turn_end`:this.callbacks.onScoopActivity?.(e.scoopJid);break}if(e.scoopJid===this.selectedScoopJid)switch(e.eventType){case`text_delta`:{let t=this.currentMessageId.get(e.scoopJid);t||(t=`scoop-${e.scoopJid}-${kn()}`,this.currentMessageId.set(e.scoopJid,t),this.emitToUI({type:`message_start`,messageId:t})),this.emitToUI({type:`content_delta`,messageId:t,text:e.text??``});break}case`tool_start`:{let t=this.currentMessageId.get(e.scoopJid);t||(t=`scoop-${e.scoopJid}-${kn()}`,this.currentMessageId.set(e.scoopJid,t),this.emitToUI({type:`message_start`,messageId:t})),this.emitToUI({type:`tool_use_start`,messageId:t,toolName:e.toolName??``,toolInput:e.toolInput});break}case`tool_end`:{let t=this.currentMessageId.get(e.scoopJid);t&&this.emitToUI({type:`tool_result`,messageId:t,toolName:e.toolName??``,result:e.toolResult??``,isError:e.isError});break}case`tool_ui`:{let t=this.currentMessageId.get(e.scoopJid);t||(t=`scoop-${e.scoopJid}-${kn()}`,this.currentMessageId.set(e.scoopJid,t),this.emitToUI({type:`message_start`,messageId:t})),this.emitToUI({type:`tool_ui`,messageId:t,toolName:e.toolName??``,requestId:e.requestId??``,html:e.html??``});break}case`tool_ui_done`:{let t=this.currentMessageId.get(e.scoopJid);t&&this.emitToUI({type:`tool_ui_done`,messageId:t,requestId:e.requestId??``});break}case`response_done`:{let t=this.currentMessageId.get(e.scoopJid);t&&(this.emitToUI({type:`content_done`,messageId:t}),this.currentMessageId.delete(e.scoopJid));break}case`turn_end`:{let t=this.currentMessageId.get(e.scoopJid)??`done-${e.scoopJid}-${kn()}`;this.currentMessageId.delete(e.scoopJid),this.emitToUI({type:`turn_end`,messageId:t});break}}}handleScoopStatus(e){this.scoopStatuses.set(e.scoopJid,e.status),this.callbacks.onStatusChange(e.scoopJid,e.status)}handleScoopCreated(e){let t=this.msgScoopToRegistered(e.scoop);this.scoops=this.scoops.filter(e=>e.name!==t.name||e.jid===t.jid),this.scoops.find(e=>e.jid===t.jid)||this.scoops.push(t),this.scoopStatuses.set(t.jid,e.scoop.status),this.callbacks.onScoopCreated(t)}handleScoopList(e){this.scoops=e.scoops.map(e=>this.msgScoopToRegistered(e));for(let t of e.scoops)this.scoopStatuses.set(t.jid,t.status);this.callbacks.onScoopListUpdate(e.scoops)}handleStateSnapshot(e){G.info(`Received state snapshot`,{scoopCount:e.scoops.length}),this.scoops=e.scoops.map(e=>this.msgScoopToRegistered(e));for(let t of e.scoops)this.scoopStatuses.set(t.jid,t.status);e.trayRuntimeStatus&&An(e.trayRuntimeStatus.leader,e.trayRuntimeStatus.follower);let t=!this.ready;t&&(this.ready=!0,this.stateRetryTimer&&=(clearInterval(this.stateRetryTimer),null)),this.callbacks.onScoopListUpdate(e.scoops),t&&this.callbacks.onReady?.()}handleError(e){e.scoopJid===this.selectedScoopJid&&this.emitToUI({type:`error`,error:e.error})}handleIncomingMessage(e){this.callbacks.onIncomingMessage(e.scoopJid,e.message)}handleMessageUpdated(e){this.callbacks.onMessageUpdate?.(e.scoopJid,{messageId:e.messageId,lickId:e.lickId,lickState:e.lickState})}msgScoopToRegistered(e){return{jid:e.jid,name:e.name,folder:e.folder,isCone:e.isCone,type:e.isCone?`cone`:`scoop`,requiresTrigger:!e.isCone,assistantLabel:e.assistantLabel,addedAt:new Date().toISOString(),...e.config?{config:{...e.config}}:{}}}emitToUI(e){for(let t of this.eventListeners)try{t(e)}catch(e){G.error(`Listener error`,{error:e instanceof Error?e.message:String(e)})}}send(e){if(this.locked){this.emitToUI({type:`error`,error:`This window is detached. Close it and use the detached tab.`});return}this.transport.send(e)}};function kn(){return Date.now().toString(36)+Math.random().toString(36).slice(2,8)}function An(e,t){ie({state:e.state,error:e.error,reconnectAttempts:e.reconnectAttempts,session:e.session?{...e.session}:null}),h({state:t.state,joinUrl:t.joinUrl,trayId:t.trayId,error:t.error,lastError:t.lastError,reconnectAttempts:t.reconnectAttempts,attachAttempts:t.attachAttempts,lastAttachCode:t.lastAttachCode,connectingSince:t.connectingSince,lastPingTime:t.lastPingTime})}function jn(e){return!e.includes(`\0`)}function Mn(e){if(typeof window>`u`||window.localStorage===void 0)return()=>void 0;let t=window.localStorage,n=typeof Storage<`u`&&t instanceof Storage,r=n?Storage.prototype.setItem:t.setItem.bind(t),i=n?Storage.prototype.removeItem:t.removeItem.bind(t),a=n?Storage.prototype.clear:t.clear.bind(t);if(n){let n=Storage.prototype;n.setItem=function(n,i){if(r.call(this,n,i),this===t){if(!jn(n)){console.warn(`[page-storage-sync] dropping localStorage write with NUL in key`,n);return}e.send({type:`local-storage-set`,key:n,value:i})}},n.removeItem=function(n){if(i.call(this,n),this===t){if(!jn(n)){console.warn(`[page-storage-sync] dropping localStorage remove with NUL in key`,n);return}e.send({type:`local-storage-remove`,key:n})}},n.clear=function(){a.call(this),this===t&&e.send({type:`local-storage-clear`})}}else{let n=(e,n)=>{Object.defineProperty(t,e,{value:n,writable:!0,configurable:!0,enumerable:!1})};n(`setItem`,(t,n)=>{if(r(t,n),!jn(t)){console.warn(`[page-storage-sync] dropping localStorage write with NUL in key`,t);return}e.send({type:`local-storage-set`,key:t,value:n})}),n(`removeItem`,t=>{if(i(t),!jn(t)){console.warn(`[page-storage-sync] dropping localStorage remove with NUL in key`,t);return}e.send({type:`local-storage-remove`,key:t})}),n(`clear`,()=>{a(),e.send({type:`local-storage-clear`})})}let o=n=>{if(n.storageArea===t){if(n.key===null){e.send({type:`local-storage-clear`});return}if(jn(n.key)){if(n.newValue===null){e.send({type:`local-storage-remove`,key:n.key});return}e.send({type:`local-storage-set`,key:n.key,value:n.newValue})}}};return window.addEventListener(`storage`,o),()=>{if(n)Storage.prototype.setItem=r,Storage.prototype.removeItem=i,Storage.prototype.clear=a;else{let e=(e,n)=>{Object.defineProperty(t,e,{value:n,writable:!0,configurable:!0,enumerable:!1})};e(`setItem`,r),e(`removeItem`,i),e(`clear`,a)}window.removeEventListener(`storage`,o)}}function Nn(e){let t=!1,n=()=>{t||(t=!0,typeof e.start==`function`&&e.start())};return{onMessage:t=>{let r=e=>{t(e.data)};return e.addEventListener(`message`,r),n(),()=>{e.removeEventListener(`message`,r)}},send:(t,n)=>{n&&n.length>0?e.postMessage(t,n):e.postMessage(t)}}}function Pn(e){let t=Nn(e);return{onMessage:e=>t.onMessage(e),send:(e,n)=>{t.send({source:`panel`,payload:e},n)}}}function Fn(e,t){let n=Nn(e),r=new Map,i=n.onMessage(async e=>{let i=e;if(i?.type){if(i.type===`cdp-cmd`){let r=e;try{let e=await t.send(r.method,r.params,r.sessionId);n.send({type:`cdp-response`,id:r.id,result:e})}catch(e){n.send({type:`cdp-response`,id:r.id,error:e instanceof Error?e.message:String(e)})}return}if(i.type===`cdp-subscribe`){let i=e;if(r.has(i.event))return;let a=e=>{n.send({type:`cdp-event`,method:i.event,params:e})};r.set(i.event,a),t.on(i.event,a);return}if(i.type===`cdp-unsubscribe`){let n=e,i=r.get(n.event);if(!i)return;r.delete(n.event),t.off(n.event,i);return}}});return()=>{i();for(let[e,n]of r)t.off(e,n);r.clear()}}function In(){let e={};if(typeof localStorage>`u`)return e;for(let t=0;t<localStorage.length;t++){let n=localStorage.key(t);if(n===null)continue;let r=localStorage.getItem(n);r!==null&&(e[n]=r)}return e}function Ln(e){let{worker:t,realCdpTransport:n,callbacks:r}=e,i=e.readyTimeoutMs??3e4,a=e.localStorageSeed??{},o=new MessageChannel,s=new MessageChannel,c=new On(r,Pn(o.port1)),l=Fn(s.port1,n),u=null,d=new Promise((e,t)=>{let n=null,r=null,a=()=>{n!==null&&(clearTimeout(n),n=null)};u=()=>{r!==null&&(o.port1.removeEventListener(`message`,r),r=null),a()},r=t=>{t.data?.type===`kernel-worker-ready`&&(u?.(),e())},o.port1.addEventListener(`message`,r),a(),n=setTimeout(()=>{u?.(),t(Error(`Kernel worker did not signal ready within ${i}ms`))},i)}),f={type:`kernel-worker-init`,kernelPort:o.port2,cdpPort:s.port2,localStorageSeed:a,instanceId:e.instanceId,localApiBaseUrl:e.localApiBaseUrl??null,bridgeToken:e.bridgeToken??null,localLickWsUrl:e.localLickWsUrl??null,extensionDelegateId:e.extensionDelegateId??null};t.postMessage(f,[o.port2,s.port2]);let p=!1;return{client:c,ready:d,dispose(){if(!p){p=!0,u?.(),l();try{t.postMessage({type:`kernel-worker-shutdown`})}catch{}t.terminate(),o.port1.close(),s.port1.close()}}}}function Rn(e){return Ln({worker:e.workerUrl?new Worker(e.workerUrl,{type:`module`}):new Worker(new URL(`/assets/kernel-worker-CHH5Mx3j.js`,``+import.meta.url),{type:`module`}),realCdpTransport:e.realCdpTransport,callbacks:e.callbacks,readyTimeoutMs:e.readyTimeoutMs,localStorageSeed:e.localStorageSeed??In(),instanceId:e.instanceId,localApiBaseUrl:e.localApiBaseUrl,bridgeToken:e.bridgeToken,localLickWsUrl:e.localLickWsUrl,extensionDelegateId:e.extensionDelegateId})}var zn=`<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"/><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/></svg>`;function Bn(e){for(let t=e.length-1;t>=0;t--){let n=e[t];if(n.role===`assistant`&&!n.isStreaming&&!n.queued)return n.content}for(let t=e.length-1;t>=0;t--)if(e[t].role===`assistant`)return e[t].content;return null}function Vn(e){let t=e.writeText??(e=>navigator.clipboard.writeText(e)),n=document.createElement(`div`);n.className=`wc-copy-row`,n.style.cssText=`display:flex;justify-content:flex-start;margin:-8px 0 14px;`;let r=document.createElement(`slicc-press-button`);r.setAttribute(`tooltip`,`Copy last response · hold to copy chat`),r.setAttribute(`label`,`Copy last response — hold to copy entire chat`),r.setAttribute(`disable-double-click`,``),r.style.cssText=`color:var(--txt-3);cursor:pointer;display:inline-flex;`;let i=document.createRange();r.append(i.createContextualFragment(zn));let a=()=>{r.style.color=`var(--green)`,setTimeout(()=>{r.style.color=`var(--txt-3)`},1500)};return r.addEventListener(`short-click`,()=>{(async()=>{await t(Bn(e.getMessages())??Ft([...e.getMessages()])),a()})()}),r.addEventListener(`long-press`,()=>{(async()=>{let n=Ft([...e.getMessages()]);n&&(await t(n),a())})()}),n.append(r),n}function K(){return`msg-${Date.now()}-${Math.random().toString(36).slice(2,8)}`}function Hn(e){let t={id:e.id,text:e.content};return e.attachments?.length&&(t.attachments=e.attachments.length),t}var Un=class{#e;#t;#n;#r;#i;#a;#o;#s;#c;#l;#u;#d;#f;#p;#m;#h=[];#g=[];#_=new Map;#v=null;#y=null;#b=``;#x=!1;#S=!1;#C=`thinking`;#w=0;#T=null;#E=new Set;#D=new Map;constructor(e){this.#e=e.thread,this.#t=e.agent,this.#n=e.onProcessingChange,this.#r=e.onBusyPhaseChange,this.#i=e.onMessageRendered,this.#a=e.onMessageDisposed,this.#o=e.onTurnComplete,this.#s=e.resolveTelemetryContext,this.#c=e.onQueuedChange,this.#l=e.onQueuedCancel,this.#u=e.onToolUiAction,this.#d=e.agent.onEvent(e=>this.#F(e)),this.#m=e=>this.#J(e),this.#e.addEventListener(`slicc-error-retry`,this.#m)}dispose(){this.#d(),this.#e.removeEventListener(`slicc-error-retry`,this.#m);for(let e of[...this.#D.keys()])this.#q(e)}get processing(){return this.#S}getMessages(){return this.#h.map(e=>({...e}))}setAgent(e){this.#d(),this.#t=e,this.#d=e.onEvent(e=>this.#F(e))}setOnLocalUserMessage(e){this.#f=e}setOnLocalProcessingChange(e){this.#p=e}addUserMessage(e,t){this.#Z({id:K(),role:`user`,content:e,timestamp:Date.now()})}getQueuedMessages(){return this.#g.map(Hn)}removeQueuedMessage(e){let t=this.#g.filter(t=>t.id!==e);t.length!==this.#g.length&&(this.#g=t,this.#k())}#O(){if(this.#g.length===0)return;let e=this.#g;this.#g=[];for(let t of e)this.#Z(t);this.#k()}#k(){this.#c?.(this.#g.map(Hn))}addAssistantMessage(e){this.#Z({id:K(),role:`assistant`,content:e,timestamp:Date.now()})}loadMessages(e){for(let e of this.#_.keys())this.#a?.(e);for(let e of[...this.#D.keys()])this.#q(e);if(this.#g.length>0){if(this.#l)for(let e of this.#g)try{this.#l(e.id)}catch(e){console.error(`onQueuedCancel hook threw`,e)}this.#g=[],this.#k()}this.#h=he(e);let t=[...this.#h].reverse().find(e=>e.isStreaming);this.#v=t?.id??null,t&&(this.#y=t.id),this.#b=``,this.#x=!1,this.#_.clear();let n=[],r=``;for(let e of this.#h){let t=new Date(e.timestamp).toDateString();t!==r&&(n.push(ve(e.timestamp)),r=t);let i=this.#X(e);this.#_.set(e.id,i),n.push(...i)}let i=this.#e;typeof i.replaceContent==`function`?i.replaceContent(...n):i.replaceChildren(...n),this.#te();for(let e of this.#h)e.isStreaming||this.#i?.(e,this.#_.get(e.id)??[]);this.#P(),this.#re()}sendUserMessage(e,t,n){let r=e.trim();if(!r&&!t?.length)return;let i=n?.dictation?this.#A(r):r,a={id:K(),role:`user`,content:i,timestamp:Date.now(),attachments:t?.length?t:void 0};this.#S?(this.#g.push(a),this.#k()):this.#Z(a),this.#t.sendMessage(i,a.id,a.attachments),this.#j();try{let e=n?.dictation?oe(i):i;this.#f?.(e,a.id,a.attachments)}catch(e){console.error(`onLocalUserMessage hook threw`,e)}}#A(e){return ae(e,xe())}#j(){if(this.#s)try{let e=this.#s();if(!e)return;g(e.scoopName,e.model)}catch{}}addLickMessage(e,t,n,r,i){let a=this.#h[this.#h.length-1];if(!(i||a?.lickId)&&a&&a.source===`lick`&&a.channel===n){a.lickParts=[...a.lickParts??[a.content],t],a.lickCount=a.lickParts.length,a.content+=`\n\n${t}`,this.#Q(a);return}this.#Z({id:e,role:`user`,content:t,timestamp:r,source:`lick`,channel:n,lickId:i,lickState:i?`pending`:void 0,queued:this.#S?!0:void 0})}updateLickState(e,t){let n=this.#h.find(t=>t.lickId===e);n&&(n.lickState=t,this.#Q(n))}setProcessing(e){if(this.#S!==e){this.#S=e,e&&(this.#y=null),e&&(this.#w=0,this.#M(`thinking`)),e&&this.#O(),e||this.#P(),this.#n?.(e);try{this.#p?.(e)}catch(e){console.error(`onLocalProcessingChange hook threw`,e)}e||this.#N()}}#M(e){this.#C!==e&&(this.#C=e,this.#r?.(e))}#N(){let e=this.#y;if(this.#y=null,!this.#o)return;let t=e?this.#Y(e):null;this.#o(t?{...t}:null)}#P(){let e=this.#h[this.#h.length-1];if(!(e?.role===`assistant`&&!e.isStreaming)){this.#T?.remove();return}this.#T??=Vn({getMessages:()=>this.getMessages()}),(this.#e.inner??this.#e).append(this.#T)}#F(e){switch(e.type){case`message_start`:this.#I(e.messageId);break;case`content_delta`:this.#L(e.messageId,e.text);break;case`content_done`:this.#z(e.messageId);break;case`tool_use_start`:this.#B(e.messageId,e.toolName,e.toolInput);break;case`tool_result`:this.#V(e.messageId,e.toolName,e.result,e.isError);break;case`tool_ui`:this.#G(e.messageId,e.requestId,e.html);break;case`tool_ui_done`:this.#K(e.requestId);break;case`turn_end`:this.#H(e.messageId);break;case`error`:this.#U(e.error);break;case`screenshot`:case`terminal_output`:break;default:break}}#I(e){this.setProcessing(!0),this.#v=e,this.#y=e,this.#Z({id:e,role:`assistant`,content:``,timestamp:Date.now(),isStreaming:!0,toolCalls:[]})}#L(e,t){this.#Y(e)&&(this.#b+=t,!this.#x&&(this.#x=!0,requestAnimationFrame(()=>this.#R(e))))}#R(e){if(this.#x=!1,!this.#b)return;let t=this.#Y(e);t&&(t.content+=this.#b,this.#b=``,this.#Q(t))}#z(e){let t=this.#Y(e);t&&(this.#b&&this.#v===e&&(t.content+=this.#b),this.#b=``,this.#x=!1,t.isStreaming=!1,this.#Q(t))}#B(e,t,n){let r=this.#Y(e);r&&(r.toolCalls=r.toolCalls??[],r.toolCalls.push({id:K(),name:t,input:n}),this.#w+=1,this.#M(`tool`),this.#Q(r))}#V(e,t,n,r){let i=this.#Y(e),a=[...i?.toolCalls??[]].reverse().find(e=>e.name===t&&e.result===void 0);!i||!a||(a.result=n,a.isError=r,this.#w=Math.max(0,this.#w-1),this.#w===0&&this.#M(`thinking`),this.#Q(i))}#H(e){let t=this.#Y(e);t?.isStreaming&&(t.isStreaming=!1,this.#Q(t)),this.#v=null,this.setProcessing(!1)}#U(e){this.setProcessing(!1),this.#Z({id:K(),role:`assistant`,content:e,timestamp:Date.now(),error:!0}),this.#W(e)}#W(e){try{if(be(e)||fe(e)||se(e))return;p(`error-card`,e)}catch{}}#G(e,t,n){this.#q(t);let r=document.createElement(`div`);r.className=`msg__dip`,r.setAttribute(`data-tool-ui-request`,t),(this.#e.inner??this.#e).append(r);let i=st(r,n,(e,n)=>{this.#u?.(t,e,n)},!1);this.#D.set(t,{instance:i,container:r}),this.#u?.(t,f,void 0)}#K(e){this.#q(e)}#q(e){let t=this.#D.get(e);if(t){this.#D.delete(e);try{t.instance.dispose()}catch{}t.container.remove()}}#J(e){if(this.#S)return;let t=e.detail?.messageId??null,n=this.#h.length;if(t){let e=this.#h.findIndex(e=>e.id===t);e>=0&&(n=e)}let r=n>0?this.#h[n-1]:void 0;if(r&&r.source===`lick`&&!r.queued){this.#t.sendMessage(r.content,K(),r.attachments);return}let i;for(let e=n-1;e>=0;e--){let t=this.#h[e];if(t.role===`user`&&t.source!==`lick`&&t.source!==`delegation`&&!t.queued){i=t;break}}i&&this.#t.sendMessage(i.content,K(),i.attachments)}#Y(e){return this.#h.find(t=>t.id===e)}#X(e){try{return ce(e)}catch(t){console.error(`[wc-chat] message render failed — degrading to plain bubble`,t);let n=document.createElement(e.role===`assistant`?`slicc-agent-message`:`slicc-user-message`);return n.setAttribute(`text`,String(e.content??``)),[n]}}#Z(e){this.#ee(),this.#h.push(e);let t=this.#X(e);this.#_.set(e.id,t),this.#e.append(...t),this.#te(),e.isStreaming||this.#i?.(e,t),e.role===`user`?this.#re():this.#ie()}#Q(e){this.#ee(),this.#a?.(e.id);let t=this.#_.get(e.id)??[],n=this.#X(e),r=t[0]??null,i=r?.parentNode;if(i){for(let e of n)i.insertBefore(e,r);for(let e of t)e.remove()}else this.#e.append(...n);this.#_.set(e.id,n),this.#te(),e.isStreaming||this.#i?.(e,n),this.#ie()}#$(){return this.#e.inner??this.#e}#ee(){ge(this.#$(),this.#E)}#te(){le(this.#$(),{openClusterAnchors:this.#E,toolCallLookup:(e,t)=>this.#ne(e,t)})}#ne(e,t){return this.#h.find(t=>t.id===e)?.toolCalls?.find(e=>e.id===t)}#re(){this.#e.scrollTop=this.#e.scrollHeight}#ie(){let e=this.#e;typeof e.requestFollow==`function`?e.requestFollow():this.#re()}},q=Uint8Array,J=Uint16Array,Wn=Int32Array,Gn=new q([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),Kn=new q([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),qn=new q([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Jn=function(e,t){for(var n=new J(31),r=0;r<31;++r)n[r]=t+=1<<e[r-1];for(var i=new Wn(n[30]),r=1;r<30;++r)for(var a=n[r];a<n[r+1];++a)i[a]=a-n[r]<<5|r;return{b:n,r:i}},Yn=Jn(Gn,2),Xn=Yn.b,Zn=Yn.r;Xn[28]=258,Zn[258]=28;var Qn=Jn(Kn,0);Qn.b;for(var $n=Qn.r,er=new J(32768),Y=0;Y<32768;++Y){var X=(Y&43690)>>1|(Y&21845)<<1;X=(X&52428)>>2|(X&13107)<<2,X=(X&61680)>>4|(X&3855)<<4,er[Y]=((X&65280)>>8|(X&255)<<8)>>1}for(var tr=(function(e,t,n){for(var r=e.length,i=0,a=new J(t);i<r;++i)e[i]&&++a[e[i]-1];var o=new J(t);for(i=1;i<t;++i)o[i]=o[i-1]+a[i-1]<<1;var s;if(n){s=new J(1<<t);var c=15-t;for(i=0;i<r;++i)if(e[i])for(var l=i<<4|e[i],u=t-e[i],d=o[e[i]-1]++<<u,f=d|(1<<u)-1;d<=f;++d)s[er[d]>>c]=l}else for(s=new J(r),i=0;i<r;++i)e[i]&&(s[i]=er[o[e[i]-1]++]>>15-e[i]);return s}),Z=new q(288),Y=0;Y<144;++Y)Z[Y]=8;for(var Y=144;Y<256;++Y)Z[Y]=9;for(var Y=256;Y<280;++Y)Z[Y]=7;for(var Y=280;Y<288;++Y)Z[Y]=8;for(var nr=new q(32),Y=0;Y<32;++Y)nr[Y]=5;var rr=tr(Z,9,0),ir=tr(nr,5,0),ar=function(e){return(e+7)/8|0},or=function(e,t,n){return(t==null||t<0)&&(t=0),(n==null||n>e.length)&&(n=e.length),new q(e.subarray(t,n))},sr=[`unexpected EOF`,`invalid block type`,`invalid length/literal`,`invalid distance`,`stream finished`,`no stream handler`,,`no callback`,`invalid UTF-8 data`,`extra field too long`,`date not in range 1980-2099`,`filename too long`,`stream finishing`,`invalid zip data`],cr=function(e,t,n){var r=Error(t||sr[e]);if(r.code=e,Error.captureStackTrace&&Error.captureStackTrace(r,cr),!n)throw r;return r},Q=function(e,t,n){n<<=t&7;var r=t/8|0;e[r]|=n,e[r+1]|=n>>8},lr=function(e,t,n){n<<=t&7;var r=t/8|0;e[r]|=n,e[r+1]|=n>>8,e[r+2]|=n>>16},ur=function(e,t){for(var n=[],r=0;r<e.length;++r)e[r]&&n.push({s:r,f:e[r]});var i=n.length,a=n.slice();if(!i)return{t:_r,l:0};if(i==1){var o=new q(n[0].s+1);return o[n[0].s]=1,{t:o,l:1}}n.sort(function(e,t){return e.f-t.f}),n.push({s:-1,f:25001});var s=n[0],c=n[1],l=0,u=1,d=2;for(n[0]={s:-1,f:s.f+c.f,l:s,r:c};u!=i-1;)s=n[n[l].f<n[d].f?l++:d++],c=n[l!=u&&n[l].f<n[d].f?l++:d++],n[u++]={s:-1,f:s.f+c.f,l:s,r:c};for(var f=a[0].s,r=1;r<i;++r)a[r].s>f&&(f=a[r].s);var p=new J(f+1),m=dr(n[u-1],p,0);if(m>t){var r=0,h=0,g=m-t,_=1<<g;for(a.sort(function(e,t){return p[t.s]-p[e.s]||e.f-t.f});r<i;++r){var v=a[r].s;if(p[v]>t)h+=_-(1<<m-p[v]),p[v]=t;else break}for(h>>=g;h>0;){var y=a[r].s;p[y]<t?h-=1<<t-p[y]++-1:++r}for(;r>=0&&h;--r){var b=a[r].s;p[b]==t&&(--p[b],++h)}m=t}return{t:new q(p),l:m}},dr=function(e,t,n){return e.s==-1?Math.max(dr(e.l,t,n+1),dr(e.r,t,n+1)):t[e.s]=n},fr=function(e){for(var t=e.length;t&&!e[--t];);for(var n=new J(++t),r=0,i=e[0],a=1,o=function(e){n[r++]=e},s=1;s<=t;++s)if(e[s]==i&&s!=t)++a;else{if(!i&&a>2){for(;a>138;a-=138)o(32754);a>2&&(o(a>10?a-11<<5|28690:a-3<<5|12305),a=0)}else if(a>3){for(o(i),--a;a>6;a-=6)o(8304);a>2&&(o(a-3<<5|8208),a=0)}for(;a--;)o(i);a=1,i=e[s]}return{c:n.subarray(0,r),n:t}},pr=function(e,t){for(var n=0,r=0;r<t.length;++r)n+=e[r]*t[r];return n},mr=function(e,t,n){var r=n.length,i=ar(t+2);e[i]=r&255,e[i+1]=r>>8,e[i+2]=e[i]^255,e[i+3]=e[i+1]^255;for(var a=0;a<r;++a)e[i+a+4]=n[a];return(i+4+r)*8},hr=function(e,t,n,r,i,a,o,s,c,l,u){Q(t,u++,n),++i[256];for(var d=ur(i,15),f=d.t,p=d.l,m=ur(a,15),h=m.t,g=m.l,_=fr(f),v=_.c,y=_.n,b=fr(h),x=b.c,S=b.n,C=new J(19),w=0;w<v.length;++w)++C[v[w]&31];for(var w=0;w<x.length;++w)++C[x[w]&31];for(var T=ur(C,7),E=T.t,ee=T.l,D=19;D>4&&!E[qn[D-1]];--D);var te=l+5<<3,O=pr(i,Z)+pr(a,nr)+o,k=pr(i,f)+pr(a,h)+o+14+3*D+pr(C,E)+2*C[16]+3*C[17]+7*C[18];if(c>=0&&te<=O&&te<=k)return mr(t,u,e.subarray(c,c+l));var A,j,M,N;if(Q(t,u,1+(k<O)),u+=2,k<O){A=tr(f,p,0),j=f,M=tr(h,g,0),N=h;var ne=tr(E,ee,0);Q(t,u,y-257),Q(t,u+5,S-1),Q(t,u+10,D-4),u+=14;for(var w=0;w<D;++w)Q(t,u+3*w,E[qn[w]]);u+=3*D;for(var P=[v,x],re=0;re<2;++re)for(var F=P[re],w=0;w<F.length;++w){var I=F[w]&31;Q(t,u,ne[I]),u+=E[I],I>15&&(Q(t,u,F[w]>>5&127),u+=F[w]>>12)}}else A=rr,j=Z,M=ir,N=nr;for(var w=0;w<s;++w){var L=r[w];if(L>255){var I=L>>18&31;lr(t,u,A[I+257]),u+=j[I+257],I>7&&(Q(t,u,L>>23&31),u+=Gn[I]);var R=L&31;lr(t,u,M[R]),u+=N[R],R>3&&(lr(t,u,L>>5&8191),u+=Kn[R])}else lr(t,u,A[L]),u+=j[L]}return lr(t,u,A[256]),u+j[256]},gr=new Wn([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),_r=new q(0),vr=function(e,t,n,r,i,a){var o=a.z||e.length,s=new q(r+o+5*(1+Math.ceil(o/7e3))+i),c=s.subarray(r,s.length-i),l=a.l,u=(a.r||0)&7;if(t){u&&(c[0]=a.r>>3);for(var d=gr[t-1],f=d>>13,p=d&8191,m=(1<<n)-1,h=a.p||new J(32768),g=a.h||new J(m+1),_=Math.ceil(n/3),v=2*_,y=function(t){return(e[t]^e[t+1]<<_^e[t+2]<<v)&m},b=new Wn(25e3),x=new J(288),S=new J(32),C=0,w=0,T=a.i||0,E=0,ee=a.w||0,D=0;T+2<o;++T){var te=y(T),O=T&32767,k=g[te];if(h[O]=k,g[te]=O,ee<=T){var A=o-T;if((C>7e3||E>24576)&&(A>423||!l)){u=hr(e,c,0,b,x,S,w,E,D,T-D,u),E=C=w=0,D=T;for(var j=0;j<286;++j)x[j]=0;for(var j=0;j<30;++j)S[j]=0}var M=2,N=0,ne=p,P=O-k&32767;if(A>2&&te==y(T-P))for(var re=Math.min(f,A)-1,F=Math.min(32767,T),I=Math.min(258,A);P<=F&&--ne&&O!=k;){if(e[T+M]==e[T+M-P]){for(var L=0;L<I&&e[T+L]==e[T+L-P];++L);if(L>M){if(M=L,N=P,L>re)break;for(var R=Math.min(P,L-2),ie=0,j=0;j<R;++j){var ae=T-P+j&32767,oe=ae-h[ae]&32767;oe>ie&&(ie=oe,k=ae)}}}O=k,k=h[O],P+=O-k&32767}if(N){b[E++]=268435456|Zn[M]<<18|$n[N];var se=Zn[M]&31,ce=$n[N]&31;w+=Gn[se]+Kn[ce],++x[257+se],++S[ce],ee=T+M,++C}else b[E++]=e[T],++x[e[T]]}}for(T=Math.max(T,ee);T<o;++T)b[E++]=e[T],++x[e[T]];u=hr(e,c,l,b,x,S,w,E,D,T-D,u),l||(a.r=u&7|c[u/8|0]<<3,u-=7,a.h=g,a.p=h,a.i=T,a.w=ee)}else{for(var T=a.w||0;T<o+l;T+=65535){var le=T+65535;le>=o&&(c[u/8|0]=l,le=o),u=mr(c,u+1,e.subarray(T,le))}a.i=o}return or(s,0,r+ar(u)+i)},yr=(function(){for(var e=new Int32Array(256),t=0;t<256;++t){for(var n=t,r=9;--r;)n=(n&1&&-306674912)^n>>>1;e[t]=n}return e})(),br=function(){var e=-1;return{p:function(t){for(var n=e,r=0;r<t.length;++r)n=yr[n&255^t[r]]^n>>>8;e=n},d:function(){return~e}}},xr=function(e,t,n,r,i){if(!i&&(i={l:1},t.dictionary)){var a=t.dictionary.subarray(-32768),o=new q(a.length+e.length);o.set(a),o.set(e,a.length),e=o,i.w=a.length}return vr(e,t.level==null?6:t.level,t.mem==null?i.l?Math.ceil(Math.max(8,Math.min(13,Math.log(e.length)))*1.5):20:12+t.mem,n,r,i)},Sr=function(e,t){var n={};for(var r in e)n[r]=e[r];for(var r in t)n[r]=t[r];return n},$=function(e,t,n){for(;n;++t)e[t]=n,n>>>=8};function Cr(e,t){return xr(e,t||{},0,0)}var wr=function(e,t,n,r){for(var i in e){var a=e[i],o=t+i,s=r;Array.isArray(a)&&(s=Sr(r,a[1]),a=a[0]),a instanceof q?n[o]=[a,s]:(n[o+=`/`]=[new q(0),s],wr(a,o,n,r))}},Tr=typeof TextEncoder<`u`&&new TextEncoder,Er=typeof TextDecoder<`u`&&new TextDecoder;try{Er.decode(_r,{stream:!0})}catch{}function Dr(e,t){if(t){for(var n=new q(e.length),r=0;r<e.length;++r)n[r]=e.charCodeAt(r);return n}if(Tr)return Tr.encode(e);for(var i=e.length,a=new q(e.length+(e.length>>1)),o=0,s=function(e){a[o++]=e},r=0;r<i;++r){if(o+5>a.length){var c=new q(o+8+(i-r<<1));c.set(a),a=c}var l=e.charCodeAt(r);l<128||t?s(l):l<2048?(s(192|l>>6),s(128|l&63)):l>55295&&l<57344?(l=65536+(l&1047552)|e.charCodeAt(++r)&1023,s(240|l>>18),s(128|l>>12&63),s(128|l>>6&63),s(128|l&63)):(s(224|l>>12),s(128|l>>6&63),s(128|l&63))}return or(a,0,o)}var Or=function(e){var t=0;if(e)for(var n in e){var r=e[n].length;r>65535&&cr(9),t+=r+4}return t},kr=function(e,t,n,r,i,a,o,s){var c=r.length,l=n.extra,u=s&&s.length,d=Or(l);$(e,t,o==null?67324752:33639248),t+=4,o!=null&&(e[t++]=20,e[t++]=n.os),e[t]=20,t+=2,e[t++]=n.flag<<1|(a<0&&8),e[t++]=i&&8,e[t++]=n.compression&255,e[t++]=n.compression>>8;var f=new Date(n.mtime==null?Date.now():n.mtime),p=f.getFullYear()-1980;if((p<0||p>119)&&cr(10),$(e,t,p<<25|f.getMonth()+1<<21|f.getDate()<<16|f.getHours()<<11|f.getMinutes()<<5|f.getSeconds()>>1),t+=4,a!=-1&&($(e,t,n.crc),$(e,t+4,a<0?-a-2:a),$(e,t+8,n.size)),$(e,t+12,c),$(e,t+14,d),t+=16,o!=null&&($(e,t,u),$(e,t+6,n.attrs),$(e,t+10,o),t+=14),e.set(r,t),t+=c,d)for(var m in l){var h=l[m],g=h.length;$(e,t,+m),$(e,t+2,g),e.set(h,t+4),t+=4+g}return u&&(e.set(s,t),t+=u),t},Ar=function(e,t,n,r,i){$(e,t,101010256),$(e,t+8,n),$(e,t+10,n),$(e,t+12,r),$(e,t+16,i)};function jr(e,t){t||={};var n={},r=[];wr(e,``,n,t);var i=0,a=0;for(var o in n){var s=n[o],c=s[0],l=s[1],u=l.level==0?0:8,d=Dr(o),f=d.length,p=l.comment,m=p&&Dr(p),h=m&&m.length,g=Or(l.extra);f>65535&&cr(11);var _=u?Cr(c,l):c,v=_.length,y=br();y.p(c),r.push(Sr(l,{size:c.length,crc:y.d(),c:_,f:d,m,u:f!=o.length||m&&p.length!=h,o:i,compression:u})),i+=30+f+g+v,a+=76+2*(f+g)+(h||0)+v}for(var b=new q(a+22),x=i,S=a-i,C=0;C<r.length;++C){var d=r[C];kr(b,d.o,d,d.f,d.u,d.c.length);var w=30+d.f.length+Or(d.extra);b.set(d.c,d.o+w),kr(b,i,d,d.f,d.u,d.c.length,d.o,d.m),i+=16+w+(d.m?d.m.length:0)}return Ar(b,i,r.length,S,x),b}function Mr(e){return`'${e.replace(/'/g,`'\\''`)}'`}async function Nr(e,t,n){let r={},i;try{i=await e.readDir(t)}catch{return r}for(let a of i){let i=`${t}/${a.name}`,o=n?`${n}/${a.name}`:a.name;if(a.type===`directory`)Object.assign(r,await Nr(e,i,o));else try{let t=await e.readFile(i,{encoding:`binary`});r[o]=t instanceof Uint8Array?t:new TextEncoder().encode(t)}catch{}}return r}function Pr(e){let t=document.createElement(`button`);return t.className=`ft-act`,t.textContent=e,t}function Fr(){let e=document.createElement(`div`);return e.className=`ft-acts`,e}function Ir(e,t,n=`application/octet-stream`){let r=URL.createObjectURL(new Blob([new Uint8Array(e)],{type:n})),i=document.createElement(`a`);i.href=r,i.download=t,i.click(),URL.revokeObjectURL(r)}async function Lr(e,t){t(`term`);for(let t=0;t<30;t++){let t=globalThis.__slicc_terminal_view;if(t){t.executeCommandInTerminal(e);return}await new Promise(e=>setTimeout(e,100))}}function Rr(e){let{fileTree:t,openFs:n,activateSurface:r}=e,i=null,a=e=>{let n=e.detail;i=n?.path??null;for(let e of t.querySelectorAll(`.f[tabindex]`))e.removeAttribute(`tabindex`);if(n?.id){for(let e of t.querySelectorAll(`.f`))if(e.dataset.id===n.id){e.tabIndex=0,e.focus({preventScroll:!0});break}}},o=e=>{let i=e.target,a=i?.closest(`.f`);if(a&&t.contains(a)&&!a.querySelector(`.ft-acts`)){let e=a.dataset.id;if(!e)return;let t=e.split(`/`).pop()??e,i=Fr(),o=Pr(l(e)?`IMGCAT`:`CAT`);o.title=`Preview in terminal`,o.addEventListener(`click`,t=>{t.stopPropagation(),Lr(l(e)?`imgcat ${Mr(e)}`:`cat ${Mr(e)}`,r)});let s=Pr(`DL`);s.title=`Download file`,s.addEventListener(`click`,r=>{r.stopPropagation(),n().then(async n=>{let r=await n.readFile(e,{encoding:`binary`});Ir(r instanceof Uint8Array?r:new TextEncoder().encode(r),t)}).catch(console.error)}),i.append(o,s),a.appendChild(i)}let o=i?.closest(`.dir`);if(o&&t.contains(o)&&!o.querySelector(`.ft-acts`)){let e=o.dataset.dirId,t=e?.split(`/`).pop()??`archive`;if(!e)return;let r=Fr(),i=Pr(`ZIP`);i.title=`Download as ZIP`,i.addEventListener(`click`,r=>{r.stopPropagation(),n().then(async n=>{Ir(jr(await Nr(n,e,``)),`${t}.zip`,`application/zip`)}).catch(console.error)}),r.append(i),o.appendChild(r)}},s=e=>{let n=e.target,r=e.relatedTarget,i=n?.closest(`.f,.dir`);!i||!t.contains(i)||r&&i.contains(r)||i.querySelector(`.ft-acts`)?.remove()},c=e=>{!(e.metaKey||e.ctrlKey)||e.key!==`c`||i&&window.getSelection()?.isCollapsed!==!1&&(e.preventDefault(),navigator.clipboard.writeText(i).then(()=>{let e=t.getAttribute(`selected`);if(e){for(let n of t.querySelectorAll(`.f`))if(n.dataset.id===e){n.classList.add(`ft-copy-flash`),setTimeout(()=>n.classList.remove(`ft-copy-flash`),300);break}}},console.warn))};return t.addEventListener(`file-select`,a),t.addEventListener(`pointerover`,o),t.addEventListener(`pointerout`,s),t.addEventListener(`keydown`,c),()=>{t.removeEventListener(`file-select`,a),t.removeEventListener(`pointerover`,o),t.removeEventListener(`pointerout`,s),t.removeEventListener(`keydown`,c)}}function zr(e){return`${new Date(e.frozenAt).toLocaleDateString(void 0,{month:`short`,day:`numeric`})} · ${e.messageCount} turns`}function Br(e){let t=document.createElement(`slicc-freezer-card`);return t.setAttribute(`title`,e.title),t.setAttribute(`meta`,zr(e)),t.setAttribute(`slug`,e.filename),e.icon&&t.setAttribute(`icon`,e.icon),t}async function Vr(e){let t=new Map;for(let n of e.entries){if(n.icon||n.pendingEnrichment)continue;let r=await e.pickIcon(`"${n.title}" — an archived chat session`);r&&t.set(n.filename,r)}if(t.size===0)return;let n=await Hr(e.reader);if(n===null||n.length===0)return;let r=n.map(e=>{let n=!e.icon&&t.has(e.filename)?t.get(e.filename):void 0;return n?{...e,icon:n}:e});await e.writer.writeFile(W,JSON.stringify(r,null,2));for(let n of e.freezer.querySelectorAll(`slicc-freezer-card`)){let e=t.get(n.getAttribute(`slug`)??``);e&&!n.hasAttribute(`icon`)&&n.setAttribute(`icon`,e)}}async function Hr(e){let t=await Ur(e);return t.kind===`ok`?t.entries:t.kind===`missing`?[]:null}async function Ur(e){let t;try{let n=await e.readFile(W,{encoding:`utf-8`});t=typeof n==`string`?n:new TextDecoder().decode(n)}catch(e){return e?.code===`ENOENT`?{kind:`missing`}:{kind:`fault`}}try{let e=JSON.parse(t);return Array.isArray(e)?{kind:`ok`,entries:e}:{kind:`corrupt`}}catch{return{kind:`corrupt`}}}async function Wr(e){let t;try{t=(await e.readDir(`/sessions`)).filter(e=>e.type===`file`&&e.name.endsWith(`.md`)).map(e=>e.name)}catch{return[]}let n=[];for(let r of t)try{let t=await e.readFile(`/sessions/${r}`,{encoding:`utf-8`}),i=(typeof t==`string`?t:new TextDecoder().decode(t)).slice(0,2e3),a=/^title:\s*"?(.*?)"?\s*$/m.exec(i)?.[1]??r,o=/^frozenAt:\s*"?(.*?)"?\s*$/m.exec(i)?.[1]??new Date(0).toISOString(),s=Number(/^messageCount:\s*(\d+)\s*$/m.exec(i)?.[1]??0);n.push({filename:r,title:a,frozenAt:o,messageCount:s,...r.startsWith(`pending-`)?{pendingEnrichment:!0}:{}})}catch{}return n.sort((e,t)=>t.frozenAt.localeCompare(e.frozenAt)),n}function Gr(e,t){for(let t of Array.from(e.querySelectorAll(`slicc-freezer-card`)))t.remove();e.append(...t.map(Br))}async function Kr(e,t){let n=await e.readFile(sn(t),{encoding:`utf-8`}),r=vn(typeof n==`string`?n:new TextDecoder().decode(n));return{title:r.title||t.title,messages:r.messages}}var qr=`/workspace/CLAUDE.md`,Jr=64;function Yr(e){if(e.length<=Jr)return{title:e,summary:``};let t=e.lastIndexOf(` `,Jr),n=t>Jr/2?t:Jr;return{title:`${e.slice(0,n)}…`,summary:e.slice(n).trim()}}function Xr(e){let t=[],n=null,r=()=>{if(!n)return;let e=n.join(` `).trim();e&&t.push(Yr(e)),n=null};for(let t of e.split(`
|
|
253
|
-
`)){let e=/^\s*[-*]\s+(.*)$/.exec(t);e?(r(),n=[e[1]]):n&&t.trim()&&!t.startsWith(`#`)?n.push(t.trim()):(t.startsWith(`#`)||!t.trim())&&r()}return r(),t.length===0&&e.trim()&&t.push(Yr(e.trim())),t}async function Zr(e){let t=``;try{let n=await e.readFile(qr,{encoding:`utf-8`});t=typeof n==`string`?n:new TextDecoder().decode(n)}catch{t=``}return Xr(t).map(e=>{let t=document.createElement(`slicc-memrow`);return t.setAttribute(`title`,e.title),e.summary&&t.setAttribute(`summary`,e.summary),t.setAttribute(`tag`,`project`),t})}var Qr=[`/workspace`,`/shared`],$r=3,ei=200;async function ti(e,t,n){let r;try{r=await e.readDir(t)}catch{return[]}let i=r.filter(e=>e.type===`directory`).sort((e,t)=>e.name.localeCompare(t.name)),a=r.filter(e=>e.type===`file`).sort((e,t)=>e.name.localeCompare(t.name)),o=[...i,...a].slice(0,ei),s=o.filter(e=>e.type===`file`).map(e=>`${t}/${e.name}`),c=await Promise.allSettled(s.map(t=>e.stat(t))),l=new Map;s.forEach((e,t)=>{let n=c[t];n?.status===`fulfilled`&&l.set(e,n.value.size)});let u=[];for(let r of o){let i=`${t}/${r.name}`;if(r.type===`directory`)u.push({kind:`dir`,id:i,label:r.name,children:n<$r?await ti(e,i,n+1):[]});else{let e=l.get(i);u.push({kind:`file`,id:i,label:r.name,path:i,size:e})}}return u}async function ni(e){let t=[];for(let n of Qr)t.push({kind:`dir`,id:n,label:n.slice(1),open:!0,children:await ti(e,n,1)});return t}function ri(e){let t=!1,n=null,r=!1,i=()=>{e.openFs().then(async t=>{e.fileTree.items=await ni(t)}).catch(t=>e.log.error(`WC file tree refresh failed`,t))},a=()=>{r=!1,n!=null&&(clearInterval(n),n=null)};return o=>{if(o===`files`){a(),r=!0,e.onKernelReady(()=>{r&&(r=!1,i(),n=setInterval(i,3e3))});return}if(a(),o===`memory`){e.openFs().then(async t=>{e.memoryHost.replaceChildren(...await Zr(t))}).catch(t=>e.log.error(`WC memory refresh failed`,t));return}o===`term`&&!t&&(t=!0,e.mountTerminal(e.termSurface).catch(n=>{t=!1,e.log.error(`WC terminal mount failed`,n)}))}}var ii={off:`off`,low:`low`,medium:`medium`,high:`high`,xhigh:`xhigh`,max:`xhigh`},ai={off:`off`,minimal:`low`,low:`low`,medium:`medium`,high:`high`,xhigh:`xhigh`};function oi(e){return e?ii[e]:void 0}function si(e){return(e&&ai[e])??`off`}function ci(e,t){return e!=null&&e!==`cone`||new URL(t.location.href).searchParams.get(`cherry`)===`1`?!0:m(t.localStorage)}function li(e){return e===`error`?`dead`:e===`initializing`?`none`:`open`}function ui(e,t,n){return[...e].sort((e,t)=>Number(t.isCone)-Number(e.isCone)).map(e=>{let r=n?.get(e.jid);return{key:e.jid,type:e.isCone?`cone`:`scoop`,color:pe(e),label:e.isCone?`sliccy`:e.name,eyes:li(t?.get(e.jid)),fill:typeof r==`number`?Math.round(r*100):void 0}})}function di(e){let t=()=>{let t=e.getClient();t&&(e.refs.switcher.scoops=ui(t.getScoops(),e.statuses,e.fills))},n=()=>(e.refs.thread.getAttribute(`context`)??``).startsWith(`freezer:`),r=()=>{if(e.getSelected()||n())return;let t=e.getClient()?.getScoops()??[],r=e.pendingUrlContext;if(r?.startsWith(`freezer:`))return;if(r?.startsWith(`scoop:`)){let n=r.slice(6),i=t.find(e=>!e.isCone&&e.name===n);if(i){e.pendingUrlContext=null,e.selectScoop(i);return}}let i=t.find(e=>e.isCone);i&&(e.pendingUrlContext=null,e.selectScoop(i))};return{onStatusChange:(n,r)=>{let i=e.statuses.get(n);e.statuses.set(n,r),li(i)!==li(r)&&t(),e.getSelected()?.jid===n&&e.getController()?.setProcessing(r===`processing`)},onScoopCreated:r=>{t(),!e.getSelected()&&!n()&&!e.pendingUrlContext&&e.selectScoop(r)},onScoopListUpdate:()=>{t(),r()},onScoopActivity:t=>{e.refs.switcher.setAttribute(`attention`,t)},onIncomingMessage:(t,n)=>{e.refs.switcher.setAttribute(`attention`,t),e.lastActivity.set(t,String(n.content??``).slice(0,600)),e.getSelected()?.jid===t&&n.channel!==`web`&&ue(n.channel)&&e.getController()?.addLickMessage(n.id,n.content,n.channel,new Date(n.timestamp).getTime(),n.lickId)},onMessageUpdate:(t,n)=>{e.getSelected()?.jid===t&&n.lickId&&n.lickState&&e.getController()?.updateLickState(n.lickId,n.lickState)},onScoopMessagesReplaced:(t,n)=>{e.getSelected()?.jid===t&&e.getController()?.loadMessages(n)},onReady:()=>{t(),r(),e.notifyReady?.()}}}async function fi(e,n){e.thread.setAttribute(`context`,n.isCone?`cone`:`scoop:${n.name}`),e.thread.setAttribute(`accent`,pe(n)),me(e,n.isCone?{kind:`cone`}:{kind:`scoop`,accent:pe(n)}),e.switcher.setAttribute(`active`,n.jid),e.composerMeta.setAttribute(`thinking`,si(n.config?.thinkingLevel));try{let{resolveCurrentModel:r,resolveModelById:i}=await t(async()=>{let{resolveCurrentModel:e,resolveModelById:t}=await import(`./main-CBEoDTj_.js`).then(e=>e.t);return{resolveCurrentModel:e,resolveModelById:t}},__vite__mapDeps([29,1,30,12,11,13,14,15,16,17,2,18,19,20,21,22,23,24,25,26,31])),a=n.config?.modelId,o=a?i(a):r();e.composerMeta.setAttribute(`model`,o.name??o.id),e.composerMeta.toggleAttribute(`no-thinking`,o.reasoning!==!0)}catch{}}function pi(e){let{refs:n,openVfs:r,client:i,getController:a,getSelected:o,selectScoop:s,clearSelection:c,log:l}=e,u=[],d=0,f=!1,p=()=>{let e=++d;r().then(async({reader:r,writer:i})=>{let a=await Hr(r);if(a===null){if((await Ur(r)).kind!==`corrupt`||(l.warn(`WC freezer index corrupt — rebuilding from archives`),a=await Wr(r),a.length===0))return;await i.writeFile(W,JSON.stringify(a,null,2))}e===d&&(u=a,Gr(n.freezer,a),!f&&a.some(e=>!e.icon&&!e.pendingEnrichment)&&(f=!0,t(async()=>{let{pickLucideIcon:e}=await import(`./quick-llm-DmM8V850.js`).then(e=>e.n);return{pickLucideIcon:e}},__vite__mapDeps([10,1,11,12,13,14,15,16,17,2,18,19,20,21,22,23,24,25,26,27,28])).then(({pickLucideIcon:e})=>Vr({reader:r,writer:i,freezer:n.freezer,entries:a,pickIcon:t=>e({subject:t})})).catch(e=>l.warn(`WC freezer icon enrichment failed`,e)).finally(()=>{f=!1})))}).catch(e=>l.error(`WC freezer refresh failed`,e))},m=!1,h=()=>n.freezer.querySelector(`slicc-freezer-new`),g=e=>{m||(m=!0,h()?.setAttribute(`busy`,``),(async()=>{try{if(e!==`erase`){let{writer:n}=await r(),{runNewSessionFreeze:i,runNewSessionFreezeQuick:a}=await t(async()=>{let{runNewSessionFreeze:e,runNewSessionFreezeQuick:t}=await import(`./new-session-D3cDkirv.js`);return{runNewSessionFreeze:e,runNewSessionFreezeQuick:t}},__vite__mapDeps([32,12,11,1,13,14,15,16,17,2,18,19,20,21,22,23,24,25,26,29,30,31,28,33]));e===`save`?await i({vfs:n,onProgress:e=>{let t=h();t&&(e===null?t.removeAttribute(`progress`):t.setAttribute(`progress`,String(e)))},onBackgroundEnriched:()=>p()}):await a({vfs:n})}await i.clearAllMessages(),a()?.loadMessages([]),t(async()=>{let{resetDictationPriming:e}=await import(`./wc-shell-B2jkbIzt.js`).then(e=>e.y);return{resetDictationPriming:e}},__vite__mapDeps([34,1,12,27,29,30,11,13,14,15,16,17,2,18,19,20,21,22,23,24,25,26,31,35,36,37])).then(({resetDictationPriming:e})=>e()).catch(()=>void 0),p();let n=i.getScoops().find(e=>e.isCone);n&&s(n)}catch(e){l.error(`WC new session failed`,e)}finally{m=!1;let e=h();e?.removeAttribute(`busy`),e?.removeAttribute(`progress`)}})())};for(let e of[`save`,`skip`,`erase`])n.freezer.addEventListener(`new-chat-${e}`,()=>g(e));let _=async e=>{try{let{reader:t}=await r(),i=u.find(t=>t.filename===e);i||=(await Hr(t)??[]).find(t=>t.filename===e);let{messages:o}=await Kr(t,i??{filename:e,title:e,frozenAt:``,messageCount:0});a()?.loadMessages(o),n.thread.setAttribute(`context`,`freezer:${i?.filename??e}`),n.thread.setAttribute(`accent`,ye),me(n,{kind:`freezer`}),n.inputCard.setAttribute(`disabled`,``),n.switcher.removeAttribute(`active`),c()}catch(e){if(l.error(`WC thaw failed`,e),!o()){let e=i.getScoops().find(e=>e.isCone);e&&s(e)}}};return n.freezer.addEventListener(`freezer-card-select`,e=>{let t=e.detail?.slug;t&&_(t)}),{refreshFreezer:p,openFrozen:_}}function mi(e,t){let n=null,r=_e(e,{messages:[],scoops:[],floatLabel:t,placeholder:`Ask sliccy, or describe a change…`,onSurfaceActivate:e=>n?.(e),urlState:!0}),i=null,a=null,o=null,s=!1,c=new Set,l=e=>{if(o=e,!a)return;let t=a.selectedScoopJid;if(t&&t!==e.jid){let e=i?.getQueuedMessages()??[];for(let n of e)a.deleteQueuedMessage(t,n.id).catch(()=>void 0)}a.setSelectedScoopJid(e.jid),r.inputCard.removeAttribute(`disabled`),fi(r,e),a.requestScoopMessages(e.jid),i?.setProcessing(a.isProcessing(e.jid)),r.switcher.hasAttribute(`attention`)||r.switcher.setAttribute(`attention`,e.jid)};return{refs:r,wiring:{refs:r,statuses:new Map,fills:new Map,lastActivity:new Map,pendingUrlContext:r.thread.urlContext??null,getController:()=>i,getClient:()=>a,getSelected:()=>o,selectScoop:l,notifyReady:()=>{s=!0;for(let e of c)e()}},setClient:e=>{a=e},selectScoop:l,getSelected:()=>o,clearSelection:()=>{o=null},getController:()=>i,setController:e=>{i=e},setActivateSurface:e=>{n=e;let t=r.workbenchBody.getAttribute(`active`);t&&r.shell.hasAttribute(`open`)&&(s?e(t):c.add(()=>e(t)))},onClientReady:e=>{c.add(e),s&&e()}}}function hi(e){let n=null;return()=>(n??=(async()=>{let[{createRemoteVfsClient:n},{createRemoteWritableVfsClient:r}]=await Promise.all([t(()=>import(`./remote-vfs-client-Z2qM01yP.js`),__vite__mapDeps([38,39])),t(()=>import(`./writable-vfs-client-BKZGifKZ.js`),__vite__mapDeps([40,39]))]);return{reader:n({transport:e.getTransport()}),writer:r({transport:e.getTransport()})}})(),n)}function gi(e,n,r,i,a){e.onClientReady(()=>{i.intercept||t(async()=>{let{wireWcOnboarding:e}=await import(`./wc-onboarding-n0z_itcq.js`);return{wireWcOnboarding:e}},__vite__mapDeps([41,12,29,1,30,11,13,14,15,16,17,2,18,19,20,21,22,23,24,25,26,31,42])).then(({wireWcOnboarding:t})=>t({client:n,getController:()=>e.getController(),openVfs:r,log:a})).then(e=>{i.intercept=e.interceptWelcomeLick}).catch(e=>a.error(`WC onboarding wiring failed`,e))})}function _i(e,i,a,o,s){let c=new Map;t(async()=>{let{loadDipStyles:e}=await import(`./legacy-styles-4PP74ISo.js`);return{loadDipStyles:e}},__vite__mapDeps([43,12])).then(({loadDipStyles:e})=>e()).catch(()=>void 0),t(async()=>{let{watchSprinkleThemeBroadcast:e}=await import(`./theme-BBwuyzvz.js`).then(e=>e.r);return{watchSprinkleThemeBroadcast:e}},__vite__mapDeps([44,1])).then(({watchSprinkleThemeBroadcast:e})=>e()).catch(()=>void 0);let l=i.createAgentHandle();l.onEvent(e=>{e.type!==`tool_use_start`&&e.type!==`tool_result`||t(async()=>{let{playCue:e}=await import(`./soundscape-TvriK11t.js`);return{playCue:e}},__vite__mapDeps([45,2,35])).then(({playCue:t})=>t(e.type===`tool_use_start`?`tool-start`:`tool-finish`)).catch(()=>void 0)});let u=new Un({thread:e.thread,agent:l,resolveTelemetryContext:()=>{let e=a();if(!e)return null;let t=e.isCone?`cone`:e.name;try{let i=e.config?.modelId;return{scoopName:t,model:(i?r(i):n()).id}}catch{return{scoopName:t,model:``}}},onTurnComplete:e=>{t(async()=>{let{consumeVoiceSubmission:e,speakReplyMarkdown:t}=await import(`./voice-reply--p0t9Lgo.js`);return{consumeVoiceSubmission:e,speakReplyMarkdown:t}},__vite__mapDeps([46,2,47,12,48,49,19,1,18,20,50,51])).then(async({consumeVoiceSubmission:n,speakReplyMarkdown:r})=>{if(!n())return;let{endVoiceTurn:i,setTtsActive:a}=await t(async()=>{let{endVoiceTurn:e,setTtsActive:t}=await import(`./soundscape-TvriK11t.js`);return{endVoiceTurn:e,setTtsActive:t}},__vite__mapDeps([45,2,35]));try{if(e?.content){a(!0);try{await r(e.content)}finally{a(!1)}}}finally{i()}}).catch(()=>void 0)},onProcessingChange:t=>{e.frame.toggleAttribute(`data-processing`,t),e.inputCard.querySelector(`slicc-send-button`)?.toggleAttribute(`busy`,t),t||o?.()},onBusyPhaseChange:t=>{e.inputCard.querySelector(`slicc-send-button`)?.setAttribute(`phase`,t)},onMessageDisposed:e=>{let t=c.get(e);t&&(dt(t),c.delete(e))},onMessageRendered:(e,t)=>{let n=t[0];n&&c.set(e.id,ut(n,(e,t)=>{let n={type:`sprinkle`,sprinkleName:`inline`,timestamp:new Date().toISOString(),body:{action:e,data:t}};s?.intercept?.(n)||i.sendSprinkleLick(`inline`,{action:e,data:t})}))},onQueuedChange:t=>{e.queuedStack.setMessages(t)},onToolUiAction:(e,t,n)=>{i.sendToolUiAction(e,t,n)},onQueuedCancel:e=>{let t=i.selectedScoopJid;t&&i.deleteQueuedMessage(t,e).catch(()=>void 0)}});return e.queuedStack.addEventListener(`slicc-queued-remove`,e=>{let t=e.detail?.id;if(!t)return;u.removeQueuedMessage(t);let n=i.selectedScoopJid;n&&i.deleteQueuedMessage(n,t).catch(()=>void 0)}),{controller:u,agentHandle:l}}function vi(e){let{boot:n,client:r,agentHandle:i,openReader:a,log:o}=e,{refs:s}=n;t(async()=>{let{createPlaceholderRefresher:e}=await import(`./wc-placeholder-D5zdaLbn.js`);return{createPlaceholderRefresher:e}},__vite__mapDeps([52,12,34,1,27,29,30,11,13,14,15,16,17,2,18,19,20,21,22,23,24,25,26,31,35,36,37])).then(({createPlaceholderRefresher:t})=>{e.setRefreshPlaceholder(t({inputCard:s.inputCard,getMessages:()=>n.getController()?.getMessages()??[],defaultPlaceholder:s.inputCard.getAttribute(`placeholder`)??`Ask sliccy, or describe a change…`}))}),(async()=>{try{if(ci(n.wiring.pendingUrlContext,window))return;let{SessionStore:r}=await t(async()=>{let{SessionStore:e}=await import(`./session-store-CCH7W8KY.js`);return{SessionStore:e}},[]),i=new r;await i.init();let a=await i.load(`session-cone`);a&&a.messages.length>0&&!n.getSelected()&&(n.getController()?.loadMessages(a.messages),e.triggerPlaceholder())}catch(e){o.warn(`WC session hydration failed`,e)}})();let c=null;return t(async()=>{let{wireWcAttach:e}=await import(`./wc-attach-jjQplnwa.js`);return{wireWcAttach:e}},__vite__mapDeps([53,12,18,54,1])).then(({wireWcAttach:n})=>{c=n({inputCard:s.inputCard,freezer:s.freezer,composer:s.composer,openReader:a,openWriter:e.openWriter,listConversations:async()=>{let{readSessionsIndex:e}=await t(async()=>{let{readSessionsIndex:e}=await import(`./session-freezer-D6XPq9Ct.js`);return{readSessionsIndex:e}},[]);return(await e(await a())).map(e=>({id:e.filename,label:e.title,sub:`${e.messageCount} turns`}))},log:o})}).catch(e=>o.error(`WC add-menu wiring failed`,e)),s.inputCard.addEventListener(`submit`,e=>{let r=de(e);if(!r)return;let i=e.detail?.source===`dictation`;i&&(t(async()=>{let{markVoiceSubmission:e}=await import(`./voice-reply--p0t9Lgo.js`);return{markVoiceSubmission:e}},__vite__mapDeps([46,2,47,12,48,49,19,1,18,20,50,51])).then(({markVoiceSubmission:e})=>e()).catch(()=>void 0),t(async()=>{let{beginVoiceTurn:e,playCue:t}=await import(`./soundscape-TvriK11t.js`);return{beginVoiceTurn:e,playCue:t}},__vite__mapDeps([45,2,35])).then(({beginVoiceTurn:e,playCue:t})=>{e(),t(`sent`)}).catch(()=>void 0)),n.getController()?.sendUserMessage(r,c?.take(),{dictation:i}),s.inputCard.clear?.();let a=n.getSelected()?.jid;a&&(s.switcher.setAttribute(`attention`,a),n.wiring.lastActivity.set(a,r.slice(0,600)))}),s.inputCard.addEventListener(`stop`,()=>{n.getController()?.processing&&i.stop()}),t(async()=>{let{wireWcHistoryNav:e}=await import(`./wc-history-nav-C5w8ianG.js`);return{wireWcHistoryNav:e}},[]).then(({wireWcHistoryNav:e})=>e({thread:s.thread,inputCard:s.inputCard})).catch(e=>o.error(`WC history nav wiring failed`,e)),s.composerMeta.addEventListener(`thinking-change`,e=>{let t=e.detail?.thinking,i=oi(t),a=n.getSelected();a&&i&&r.setScoopThinkingLevel(a.jid,i)}),{getAttachStage:()=>c}}function yi(e,t){let n=()=>{t.getSessionStats?.().then(n=>{if(!n)return;e.refs.floatbar.setAttribute(`spent`,n.totalCost.toFixed(2));let r=e.refs.floatbar;n.models&&(r.costModels=n.models),n.scoops&&(r.costScoops=n.scoops),e.fills.clear();for(let t of n.fills)e.fills.set(t.jid,t.fill);e.refs.switcher.scoops=ui(t.getScoops(),e.statuses,e.fills)})};return setInterval(n,15e3),n}function bi(e,n,r){let i=n.standalone;i&&t(async()=>{let{wireWcBrowser:e}=await import(`./wc-browser-DunWpcR7.js`);return{wireWcBrowser:e}},[]).then(({wireWcBrowser:t})=>t({refs:e.refs,browser:i.browser,log:r})).catch(e=>r.error(`WC browser overlay wiring failed`,e))}function xi(e,t){let{refs:n}=e;n.switcher.addEventListener(`slicc-scoop-select`,n=>{let r=n.detail?.key,i=t.getScoops().find(e=>e.jid===r);i&&i.jid!==e.getSelected()?.jid&&e.selectScoop(i)}),Ci({switcher:n.switcher,getScoops:()=>t.getScoops(),lastActivity:e.wiring.lastActivity})}function Si(e){return()=>{e.triggerPlaceholder(),e.refreshStats();let t=e.boot.getSelected()?.jid;if(!t)return;e.boot.refs.switcher.setAttribute(`attention`,t);let n=e.boot.getController()?.getMessages().filter(e=>e.role===`assistant`).at(-1);n&&e.boot.wiring.lastActivity.set(t,String(n.content??``).slice(0,600))}}function Ci(e){let n=new Map,r=new Set;e.switcher.addEventListener(`pointerover`,i=>{let a=i.target?.closest?.(`slicc-pill.scoop`);if(!a||!e.switcher.contains(a))return;let o=a.dataset.k??``,s=e.getScoops().find(e=>e.jid===o);if(!s)return;let c=e.lastActivity.get(o)??``,l=n.get(o);if(l&&l.activity===c){a.title=l.tip;return}a.title||=s.isCone?`sliccy`:s.name,!(!c||r.has(o))&&(r.add(o),(async()=>{try{let r=await(e.labelFn??(await t(async()=>{let{quickLabel:e}=await import(`./quick-llm-DmM8V850.js`).then(e=>e.n);return{quickLabel:e}},__vite__mapDeps([10,1,11,12,13,14,15,16,17,2,18,19,20,21,22,23,24,25,26,27,28]))).quickLabel)({system:`One line for a hover tooltip: at most 14 words, present tense, no quotes, no trailing period.`,prompt:`Summarize what this agent has been doing.\nAgent: ${s.isCone?`sliccy (the main agent)`:s.name}\nMost recent activity:\n${c}`,maxTokens:40});r&&(n.set(o,{activity:c,tip:r}),a.title=r)}finally{r.delete(o)}})())})}async function wi(e,n,r){let{RemoteTerminalView:i}=await t(async()=>{let{RemoteTerminalView:e}=await import(`./remote-terminal-view-DIEOCe9M.js`);return{RemoteTerminalView:e}},__vite__mapDeps([55,12,56,1,0,2,3,9,8,57,7,6,58,26,5,4,54])),{fetchSecretEnvVars:a}=await t(async()=>{let{fetchSecretEnvVars:e}=await import(`./secret-env-Bs2du0RF.js`);return{fetchSecretEnvVars:e}},__vite__mapDeps([59,2,19,1,12,18,20,21,22])),o=await a(),s=new i({client:n,cwd:`/`,env:Object.keys(o).length>0?o:void 0});await new Promise(t=>e.onClientReady(t)),await s.mount(r),globalThis.__slicc_terminal_view=s,window.addEventListener(`beforeunload`,()=>s.dispose(),{once:!0})}function Ti(e,t,n){let r=r=>{if(r.startsWith(`freezer:`)){n(r.slice(8));return}let i=t.getScoops(),a=r.startsWith(`scoop:`)?i.find(e=>!e.isCone&&e.name===r.slice(6)):i.find(e=>e.isCone);a&&a.jid!==e.getSelected()?.jid&&e.selectScoop(a)};e.refs.thread.addEventListener(`slicc-url-context`,e=>{let t=e.detail?.context;t&&r(t)});let i=e.wiring.pendingUrlContext;i?.startsWith(`freezer:`)&&e.onClientReady(()=>{e.wiring.pendingUrlContext===i&&(e.wiring.pendingUrlContext=null,r(i))})}function Ei(e,n,r,i){t(async()=>{let{installLeaderPermissionsSurface:e,installMountPendingConsumer:t}=await import(`./wc-permissions-DmHMvdiC.js`);return{installLeaderPermissionsSurface:e,installMountPendingConsumer:t}},__vite__mapDeps([60,12,2,54,1])).then(async({installLeaderPermissionsSurface:i,installMountPendingConsumer:a})=>{let o=r.standalone?.runtimeMode??`standalone`,{buildLeaderPermissionProviders:s,isExtensionRuntime:c}=await t(async()=>{let{buildLeaderPermissionProviders:e,isExtensionRuntime:t}=await import(`./wc-permissions-providers-BufEXbhX.js`);return{buildLeaderPermissionProviders:e,isExtensionRuntime:t}},__vite__mapDeps([61,12]));i({runtimeMode:o,providers:await s(c()||o===`extension`||o===`extension-detached`)}),a({runShell:Di(e,n)})}).catch(e=>i.warn(`WC permissions surface wiring failed`,e))}function Di(e,n){let r=null,i=()=>(r||=(async()=>{await new Promise(t=>e.onClientReady(t));let{TerminalSessionClient:r}=await t(async()=>{let{TerminalSessionClient:e}=await import(`./terminal-session-client-CbAduNfC.js`);return{TerminalSessionClient:e}},[]),i=new r({client:n,sid:`mount-drop-${Date.now()}`});return await i.open({cwd:`/workspace`}),i})().catch(e=>{throw r=null,e}),r);return async e=>(await i()).exec(e)}function Oi(e,t){return(n,r,i)=>{let a=e.getAttachStage();if(!a){t.warn(`sprinkle attachImage dropped: composer stage not ready yet`);return}let o=n.match(/^data:(image\/[^;]+);base64,([A-Za-z0-9+/=]+)$/),s=o?o[2]:n,c=o?o[1]:i??`image/png`,l=c.split(`/`)[1]?.replace(`jpeg`,`jpg`).replace(`svg+xml`,`svg`)??`png`,u=r??`annotation-${Date.now()}.${l}`;a.add({id:`att-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,name:u,mimeType:c,size:Math.floor(s.length*3/4),kind:`image`,data:s})}}function ki(e,t){let n=Rr({fileTree:e.fileTree,openFs:t,activateSurface:t=>e.dock.selectItem(t)});window.addEventListener(`beforeunload`,n,{once:!0})}function Ai(e,n,r,i={}){let{refs:a}=e;e.setClient(n);let o=null,s=yi(e.wiring,n),c=()=>o?.(),l={intercept:null},{controller:u,agentHandle:d}=_i(a,n,()=>e.getSelected(),Si({boot:e,triggerPlaceholder:c,refreshStats:s}),l);e.setController(u),e.onClientReady(s);let f=hi(n),p=async()=>(await f()).reader;i.standalone?.runtimeMode!==`cherry`&&gi(e,n,f,l,r);let m=vi({boot:e,client:n,agentHandle:d,setRefreshPlaceholder:e=>{o=e},triggerPlaceholder:c,openReader:p,openWriter:async()=>(await f()).writer,log:r});xi(e,n),bi(e,i,r),Ei(e,n,i,r),e.setActivateSurface(ri({fileTree:a.fileTree,termSurface:a.termSurface,memoryHost:a.memoryHost,openFs:p,onKernelReady:t=>e.onClientReady(t),mountTerminal:t=>wi(e,n,t),log:r})),ki(a,p);let{refreshFreezer:h,openFrozen:g}=pi({refs:a,openVfs:f,client:n,getController:()=>e.getController(),getSelected:()=>e.getSelected(),selectScoop:e.selectScoop,clearSelection:e.clearSelection,log:r});h(),e.onClientReady(h),Ti(e,n,g),f().then(async({reader:e})=>{let{installPreviewVfsResponder:n}=await t(async()=>{let{installPreviewVfsResponder:e}=await import(`./preview-vfs-responder-Dhck1Brc.js`);return{installPreviewVfsResponder:e}},[]);n({channel:new BroadcastChannel(`preview-vfs`),getReader:()=>e,logger:r})}).catch(e=>r.warn(`WC page-VFS support wiring failed`,e)),f().then(async({reader:o,writer:s})=>{let{createRemoteSprinkleVfs:c}=await t(async()=>{let{createRemoteSprinkleVfs:e}=await import(`./remote-sprinkle-vfs-e81pZJKo.js`);return{createRemoteSprinkleVfs:e}},__vite__mapDeps([62,39])),{wireWcSprinkles:l}=await t(async()=>{let{wireWcSprinkles:e}=await import(`./wc-sprinkles-BAKT9WrK.js`);return{wireWcSprinkles:e}},__vite__mapDeps([63,12])),u=await l({refs:a,client:n,fs:c({reader:o,writer:s}),instanceId:i.instanceId,onAttachImage:Oi(m,r),log:r});if(e.onClientReady(()=>void u.resync()),i.standalone&&i.instanceId){let{wireWcTray:o}=await t(async()=>{let{wireWcTray:e}=await import(`./wc-tray-cnJoLvS2.js`);return{wireWcTray:e}},__vite__mapDeps([64,12,11,1,13,14,15,16,17,2,18,19,20,21,22,23,24,25,26,56,29,30,31,65,66,50,51,67,44,68])),s=u.zone.callbacks();await o({refs:a,client:n,browser:i.standalone.browser,realCdpTransport:i.standalone.realCdpTransport,instanceId:i.instanceId,runtimeMode:i.standalone.runtimeMode,sprinkleManager:u.manager,addSprinkle:(e,t,n)=>s.addSprinkle(e,t,n),removeSprinkle:e=>s.removeSprinkle(e),getController:()=>e.getController(),getSelectedJid:()=>e.getSelected()?.jid??`cone`,agentHandle:d,openFs:p,baseFloatLabel:i.standalone.baseFloatLabel,window,log:r})}}).catch(e=>r.error(`WC sprinkle/tray wiring failed`,e)),t(async()=>{let{wireWcNav:e}=await import(`./wc-nav-CXbbv1oy.js`);return{wireWcNav:e}},__vite__mapDeps([69,12,29,1,30,11,13,14,15,16,17,2,18,19,20,21,22,23,24,25,26,31,68])).then(({wireWcNav:e})=>e({refs:a,client:n,log:r})).catch(e=>r.error(`WC nav wiring failed`,e)),t(async()=>{let{wireWcVoice:e}=await import(`./wc-voice-erm0EtRv.js`);return{wireWcVoice:e}},__vite__mapDeps([70,12])).then(({wireWcVoice:t})=>t({refs:a,send:t=>e.getController()?.sendUserMessage(t),log:r})).catch(e=>r.error(`WC voice wiring failed`,e)),t(async()=>{let{getComposerSpeech:e,setComposerSpeechInstanceId:t}=await import(`./composer-speech-HQRRG5ym.js`);return{getComposerSpeech:e,setComposerSpeechInstanceId:t}},__vite__mapDeps([71,2,48,72,12,49,19,1,18,20,50,51,54,36])).then(({getComposerSpeech:e,setComposerSpeechInstanceId:t})=>{let n=a.composer;t(i.instanceId),n.speech=e(),n.setAttribute(`ptt`,``)}).catch(e=>r.error(`WC push-to-talk wiring failed`,e)),t(async()=>{let{setSpeakAssetsInstanceId:e}=await import(`./speak-BLaMFnqh.js`);return{setSpeakAssetsInstanceId:e}},__vite__mapDeps([47,12,2,48,49,19,1,18,20,50,51])).then(({setSpeakAssetsInstanceId:e})=>e(i.instanceId)).catch(e=>r.error(`WC say warmup wiring failed`,e))}async function ji(e,n,r=`standalone`){let{browser:i,realCdpTransport:a,instanceId:o,localApiBaseUrl:s,bridgeToken:c,localLickWsUrl:l,extensionDelegateId:u,attachLickForwardingClient:d}=await _({runtimeMode:r,envBaseUrl:null,window,log:n}),{resolveStandaloneFloatLabel:f,DEFAULT_STANDALONE_LABEL:p}=await t(async()=>{let{resolveStandaloneFloatLabel:e,DEFAULT_STANDALONE_LABEL:t}=await import(`./wc-float-label-dfUH87GD.js`);return{resolveStandaloneFloatLabel:e,DEFAULT_STANDALONE_LABEL:t}},[]),m=r===`standalone`||r===`electron-overlay`?await f():p,h=mi(e,m),g=Rn({realCdpTransport:a,instanceId:o,callbacks:di(h.wiring),localApiBaseUrl:s,bridgeToken:c,localLickWsUrl:l,extensionDelegateId:u});Mn({send:e=>g.client.sendRaw(e)}),d?.(g.client),Ai(h,g.client,n,{instanceId:o,standalone:{browser:i,realCdpTransport:a,runtimeMode:r,baseFloatLabel:m}});let{setupSudoStandalone:v}=await t(async()=>{let{setupSudoStandalone:e}=await import(`./main-CBEoDTj_.js`).then(e=>e.m);return{setupSudoStandalone:e}},__vite__mapDeps([29,1,30,12,11,13,14,15,16,17,2,18,19,20,21,22,23,24,25,26,31]));await v({log:n}),await g.ready,h.wiring.notifyReady?.(),n.info(`WC live shell ready`,{scoops:g.client.getScoops().length})}export{Bt as a,Ai as attachWcClient,on as c,di as createWcLiveCallbacks,ft as d,ut as f,cn as i,Ue as l,Ge as m,ji as mountWcUiLive,On as n,sn as o,st as p,mi as prepareWcShell,W as r,vn as s,Un as t,dt as u};
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
:root{--canvas: #fff;--bg: #f4f4f6;--ghost: #ececef;--desk: #ececef;--ink: #0a0a0a;--deep: #000;--txt-2: #737373;--txt-3: #a1a1a1;--line: #e5e5e5;--red: #c22b10;--green: #168a35;--green-bg: #ecf8ef;--green-line: #cbe9d3;--rose: #f43f5e;--cyan: #06b6d4;--violet: #8b5cf6;--amber: #f59e0b;--waffle: #b07823;--ctx: #f59e0b;--accent: color-mix(in srgb, var(--ctx) 55%, var(--ink));--shaderbg: #f7f2e3;--rainbow: linear-gradient(90deg, #f43f5e 0%, #f59e0b 28%, #06b6d4 64%, #8b5cf6 100%);--ui: "adobe-clean", "Inter", system-ui, sans-serif;--mono: "Source Code Pro", "JetBrains Mono", ui-monospace, monospace;--shadow-pane: rgba(10, 10, 10, .06) 0 8px 26px -10px;--barh: 44px;--ctl-h: 30px}.dark,[data-theme=dark]{--canvas: #161618;--bg: #0e0e10;--ghost: #1f1f22;--desk: #1f1f22;--ink: #f5f5f2;--deep: #f5f5f2;--txt-2: #9b9ba1;--txt-3: #6c6c72;--line: #2a2a2e;--shaderbg: #171410;--shadow-pane: rgba(0, 0, 0, .35) 0 8px 26px -10px}.xterm{cursor:text;position:relative;user-select:none;-ms-user-select:none;-webkit-user-select:none}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{position:absolute;top:0;z-index:5}.xterm .xterm-helper-textarea{padding:0;border:0;margin:0;position:absolute;opacity:0;left:-9999em;top:0;width:0;height:0;z-index:-5;white-space:nowrap;overflow:hidden;resize:none}.xterm .composition-view{background:#000;color:#fff;display:none;position:absolute;white-space:nowrap;z-index:1}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{background-color:#000;overflow-y:scroll;cursor:default;position:absolute;inset:0}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;left:0;top:0}.xterm-char-measure-element{display:inline-block;visibility:hidden;position:absolute;top:0;left:-9999em;line-height:normal}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility:not(.debug),.xterm .xterm-message{position:absolute;inset:0;z-index:10;color:transparent;pointer-events:none}.xterm .xterm-accessibility-tree:not(.debug) *::selection{color:transparent}.xterm .xterm-accessibility-tree{font-family:monospace;user-select:text;white-space:pre}.xterm .xterm-accessibility-tree>div{transform-origin:left;width:fit-content}.xterm .live-region{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{text-decoration:double underline}.xterm-underline-3{text-decoration:wavy underline}.xterm-underline-4{text-decoration:dotted underline}.xterm-underline-5{text-decoration:dashed underline}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:overline underline}.xterm-overline.xterm-underline-2{text-decoration:overline double underline}.xterm-overline.xterm-underline-3{text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;position:absolute;top:0;right:0;pointer-events:none}.xterm-decoration-top{z-index:2;position:relative}.xterm .xterm-scrollable-element>.scrollbar{cursor:default}.xterm .xterm-scrollable-element>.scrollbar>.scra{cursor:pointer;font-size:11px!important}.xterm .xterm-scrollable-element>.visible{opacity:1;background:#0000;transition:opacity .1s linear;z-index:11}.xterm .xterm-scrollable-element>.invisible{opacity:0;pointer-events:none}.xterm .xterm-scrollable-element>.invisible.fade{transition:opacity .8s linear}.xterm .xterm-scrollable-element>.shadow{position:absolute;display:none}.xterm .xterm-scrollable-element>.shadow.top{display:block;top:0;left:3px;height:3px;width:100%;box-shadow:var(--vscode-scrollbar-shadow, #000) 0 6px 6px -6px inset}.xterm .xterm-scrollable-element>.shadow.left{display:block;top:3px;left:0;height:100%;width:3px;box-shadow:var(--vscode-scrollbar-shadow, #000) 6px 0 6px -6px inset}.xterm .xterm-scrollable-element>.shadow.top-left-corner{display:block;top:0;left:0;height:3px;width:3px}.xterm .xterm-scrollable-element>.shadow.top.left{box-shadow:var(--vscode-scrollbar-shadow, #000) 6px 0 6px -6px inset}
|
|
2
|
-
/*! Bundled license information:
|
|
3
|
-
|
|
4
|
-
@xterm/xterm/css/xterm.css:
|
|
5
|
-
(**
|
|
6
|
-
* Copyright (c) 2014 The xterm.js authors. All rights reserved.
|
|
7
|
-
* Copyright (c) 2012-2013, Christopher Jeffrey (MIT License)
|
|
8
|
-
* https://github.com/chjj/term.js
|
|
9
|
-
* @license MIT
|
|
10
|
-
*
|
|
11
|
-
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
12
|
-
* of this software and associated documentation files (the "Software"), to deal
|
|
13
|
-
* in the Software without restriction, including without limitation the rights
|
|
14
|
-
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
15
|
-
* copies of the Software, and to permit persons to whom the Software is
|
|
16
|
-
* furnished to do so, subject to the following conditions:
|
|
17
|
-
*
|
|
18
|
-
* The above copyright notice and this permission notice shall be included in
|
|
19
|
-
* all copies or substantial portions of the Software.
|
|
20
|
-
*
|
|
21
|
-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
22
|
-
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
23
|
-
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
24
|
-
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
25
|
-
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
26
|
-
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
27
|
-
* THE SOFTWARE.
|
|
28
|
-
*
|
|
29
|
-
* Originally forked from (with the author's permission):
|
|
30
|
-
* Fabrice Bellard's javascript vt100 for jslinux:
|
|
31
|
-
* http://bellard.org/jslinux/
|
|
32
|
-
* Copyright (c) 2011 Fabrice Bellard
|
|
33
|
-
* The original design remains. The terminal itself
|
|
34
|
-
* has been extended to include xterm CSI codes, among
|
|
35
|
-
* other features.
|
|
36
|
-
*)
|
|
37
|
-
*/
|