sliccy 5.2.0 → 5.4.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/ui/assets/{account-store-B9L-iw3_.js → account-store-C6_gIZ9b.js} +2 -2
- package/dist/ui/assets/{account-store-J1i56LXB.js → account-store-DFegnWPt.js} +2 -2
- package/dist/ui/assets/{adobe-uU9WScyf.js → adobe-CCrNID9W.js} +1 -1
- package/dist/ui/assets/{adobe-BE4O6RpW.js → adobe-CyL6g4I7.js} +1 -1
- package/dist/ui/assets/{adobe-oauth-state-BSzOZOb6.js → adobe-oauth-state-BPiIC94C.js} +1 -1
- package/dist/ui/assets/{agent-message-to-chat-BDsWz4XM.js → agent-message-to-chat-BWe23vP6.js} +1 -1
- package/dist/ui/assets/{apps-D9vX8Iuh.js → apps-DgoHi_Jt.js} +1 -1
- package/dist/ui/assets/{azure-openai-BANs3KGr.js → azure-openai-B8RJsHT-.js} +1 -1
- package/dist/ui/assets/{azure-openai-D6toPyQ8.js → azure-openai-hJ0wnltF.js} +1 -1
- package/dist/ui/assets/{connect-surface-DAC3CNei.js → connect-surface-w5IyESwF.js} +1 -1
- package/dist/ui/assets/dip-BPGGcpgQ.js +1 -0
- package/dist/ui/assets/{dist-BWYQOlqM.js → dist-CC-3PhWb.js} +1 -1
- package/dist/ui/assets/{dist--TcGqpJG.js → dist-DVFuglk5.js} +1 -1
- package/dist/ui/assets/{ensure-speech-assets-B-pBwbKb.js → ensure-speech-assets-Cis-PX6Z.js} +1 -1
- package/dist/ui/assets/esp8266-CgUXgl1_.js +1 -0
- package/dist/ui/assets/{esptool-operations-CP9wpmtB.js → esptool-operations-9UQedhXq.js} +2 -2
- package/dist/ui/assets/{fs-BMm4juUO.js → fs-B8VqdCUY.js} +2 -2
- package/dist/ui/assets/{fs-CDxFmHhs.js → fs-RC1NWcFZ.js} +1 -1
- package/dist/ui/assets/{github-igAb2Tr3.js → github-BDhArZ5j.js} +1 -1
- package/dist/ui/assets/{github-Bv3awCy-.js → github-DL1eb7HW.js} +2 -2
- package/dist/ui/assets/{github-copilot-EhpEoXT_.js → github-copilot-B9SO52A1.js} +1 -1
- package/dist/ui/assets/{github-copilot-Bo6St-mj.js → github-copilot-C8u3akzN.js} +1 -1
- package/dist/ui/assets/{hear-CTBETRuZ.js → hear-C_Cy0mUe.js} +1 -1
- package/dist/ui/assets/{kernel-worker-DU2Lsjyz.js → kernel-worker-BOiHtoD5.js} +18 -18
- package/dist/ui/assets/{kokoro-engine-qxvtO16S.js → kokoro-engine-C39-3JHF.js} +1 -1
- package/dist/ui/assets/{lick-ws-bridge-D_Q0B4_w.js → lick-ws-bridge-Bix1ByUo.js} +1 -1
- package/dist/ui/assets/{lick-ws-bridge-CAy0-YSl.js → lick-ws-bridge-BkAmRj1Z.js} +1 -1
- package/dist/ui/assets/{local-llm-yvkTurpV.js → local-llm-BSI0PlfX.js} +1 -1
- package/dist/ui/assets/main-Bpuh8nYF.js +24 -0
- package/dist/ui/assets/{mount-BMTmsC-u.js → mount-Bax8wvuA.js} +1 -1
- package/dist/ui/assets/{mount-C0n7eObT.js → mount-N_JmQdl5.js} +2 -2
- package/dist/ui/assets/{new-session-BgzUQaQk.js → new-session-sPDR0jnx.js} +2 -2
- package/dist/ui/assets/{oauth-bootstrap-B35kl1hZ.js → oauth-bootstrap-Dm-vVRTU.js} +2 -2
- package/dist/ui/assets/{openai-codex-CNXAYokU.js → openai-codex-DUpVk0wP.js} +1 -1
- package/dist/ui/assets/{openai-codex-BziCxD0k.js → openai-codex-bYCB3ofj.js} +1 -1
- package/dist/ui/assets/{page-follower-tray-tXYeooU8.js → page-follower-tray-CgF4beVv.js} +1 -1
- package/dist/ui/assets/{panel-rpc-handlers-Cxg9OE7o.js → panel-rpc-handlers-DI4DAW21.js} +1 -1
- package/dist/ui/assets/{provider-CzdDndd-.js → provider-9p5HvPY9.js} +2 -2
- package/dist/ui/assets/{provider-DOAeQgJY.js → provider-NnBB2k3A.js} +1 -1
- package/dist/ui/assets/provider-store-access-5pcZED05.js +1 -0
- package/dist/ui/assets/provider-store-access-Bv09jBJf.js +1 -0
- package/dist/ui/assets/{providers-Kx_BEFqJ.js → providers-BYT33r_r.js} +1 -1
- package/dist/ui/assets/{quick-llm-BW-brmSb.js → quick-llm-BtUslSmP.js} +1 -1
- package/dist/ui/assets/session-freezer-Znp08p_F.js +1 -0
- package/dist/ui/assets/{speak-B8c3oh9Y.js → speak-CT1k5FTD.js} +1 -1
- package/dist/ui/assets/{sprinkle-manager-BpLedeCo.js → sprinkle-manager-j1ikTeY0.js} +1 -1
- package/dist/ui/assets/{store-Ccl5ODaE.js → store-ihd6OnKT.js} +1 -1
- package/dist/ui/assets/{sudo-D6_01n3k.js → sudo-D3T4jmgn.js} +1 -1
- package/dist/ui/assets/{transformers-env-D2tn9gLL.js → transformers-env-CoQS_92g.js} +1 -1
- package/dist/ui/assets/{tray-leader-DGFajpwM.js → tray-leader-CaTLZ0nn.js} +1 -1
- package/dist/ui/assets/{tray-leave-runtime-taK1Ebp7.js → tray-leave-runtime-BsLt7Kau.js} +1 -1
- package/dist/ui/assets/{upgrade-detection-DrfEt3Mi.js → upgrade-detection-qlGMMdg_.js} +1 -1
- package/dist/ui/assets/{wc-attach-DBF_z5mw.js → wc-attach-B6M5u9Mf.js} +2 -2
- package/dist/ui/assets/{wc-detached-Wt3lzK1R.js → wc-detached-CvvTnnwH.js} +1 -1
- package/dist/ui/assets/{wc-extension-DfX8q6Ih.js → wc-extension-CxcxNKVO.js} +2 -2
- package/dist/ui/assets/{wc-follower-BVeqP5KF.js → wc-follower-Pgc81YTH.js} +2 -2
- package/dist/ui/assets/wc-live-Chbuwmqb.js +253 -0
- package/dist/ui/assets/wc-nav-CkFqKz85.js +2 -0
- package/dist/ui/assets/{wc-onboarding-CEjOIdK5.js → wc-onboarding-BEbuwhSQ.js} +2 -2
- package/dist/ui/assets/{wc-placeholder-CHDb9Kuo.js → wc-placeholder-Gu8g7ydZ.js} +3 -3
- package/dist/ui/assets/{wc-settings-qlpR6Q6T.js → wc-settings-BteAfHGT.js} +2 -2
- package/dist/ui/assets/{wc-shell-DTsW2ra1.js → wc-shell-DjTIqVcb.js} +9 -9
- package/dist/ui/assets/{wc-sprinkles-D_fwWOq8.js → wc-sprinkles-DvkKhy2T.js} +2 -2
- package/dist/ui/assets/{wc-tray-2mdLomRm.js → wc-tray-BVb6lvIH.js} +2 -2
- package/dist/ui/assets/{whisper-engine-CvJzjL-a.js → whisper-engine-CyUutfK8.js} +1 -1
- package/dist/ui/assets/{xai-grok-BoTmSfDH.js → xai-grok-BvUbyyZg.js} +1 -1
- package/dist/ui/assets/{xai-grok-U2afiu3-.js → xai-grok-MczhRIwJ.js} +1 -1
- package/dist/ui/electron-overlay-entry.js +2 -2
- package/dist/ui/index.html +2 -2
- package/dist/ui/packages/webapp/index.html +2 -2
- package/package.json +1 -1
- package/dist/ui/assets/dip-3VX86RoF.js +0 -1
- package/dist/ui/assets/esp8266-DEulqnXg.js +0 -1
- package/dist/ui/assets/main-DYwi5YqO.js +0 -24
- package/dist/ui/assets/provider-store-access-02kN2Pzi.js +0 -1
- package/dist/ui/assets/provider-store-access-DOOb1KbA.js +0 -1
- package/dist/ui/assets/session-freezer-D6kbwY6i.js +0 -1
- package/dist/ui/assets/wc-live-DqgXrP0F.js +0 -253
- package/dist/ui/assets/wc-nav-6aYy7HCy.js +0 -2
|
@@ -0,0 +1,253 @@
|
|
|
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-BtUslSmP.js","assets/account-store-DFegnWPt.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-DlEHAkLd.js","assets/proxied-fetch-CKDBmEMl.js","assets/fetch-body-D2PwksUW.js","assets/secret-topology-bwXIzzAK.js","assets/secrets-bridge-client-BSipj-5f.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/main-Bpuh8nYF.js","assets/modulepreload-polyfill-Dezn_h7o.js","assets/clipboard-DgFtRQbq.js","assets/llm-session-id-DVmZ9C2t.js","assets/new-session-sPDR0jnx.js","assets/session-store-CCH7W8KY.js","assets/wc-shell-DjTIqVcb.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-BEbuwhSQ.js","assets/welcome-detection-Cr8mNEkt.js","assets/legacy-styles-4PP74ISo.js","assets/theme-BBwuyzvz.js","assets/soundscape-TvriK11t.js","assets/voice-reply-DfKSbOma.js","assets/speak-D9WnbzxD.js","assets/speech-assets-bridge-B8NqCAE8.js","assets/transformers-env-CgaV7qpU.js","assets/shared-Bn9ltvMZ.js","assets/mime-types-ugOWOUZ9.js","assets/path-utils-DU6QhF_k.js","assets/wc-placeholder-Gu8g7ydZ.js","assets/wc-attach-B6M5u9Mf.js","assets/wc-permissions-registry-CR1rTd2H.js","assets/remote-terminal-view-DMnqOfIb.js","assets/browser-D0vICVpZ.js","assets/terminal-session-client-CbAduNfC.js","assets/picker-approval-Dc390nC7.js","assets/secret-env-DncfFSea.js","assets/wc-permissions-Wqap3kzM.js","assets/wc-permissions-providers-BufEXbhX.js","assets/remote-sprinkle-vfs-e81pZJKo.js","assets/wc-sprinkles-DvkKhy2T.js","assets/wc-tray-BVb6lvIH.js","assets/remote-cdp-transport-Cf0sDZ5N.js","assets/page-follower-tray-CgF4beVv.js","assets/sprinkle-renderer-GiRRbdBx.js","assets/tray-leader-CaTLZ0nn.js","assets/wc-nav-CkFqKz85.js","assets/wc-voice-erm0EtRv.js","assets/composer-speech-BJF-32Qm.js","assets/whisper-session-Dt-B3KmT.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-DFegnWPt.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{t as l}from"./tool-ui-DfXu6quJ.js";import{a as u,d,i as f,u as p,v as m}from"./main-Bpuh8nYF.js";import{t as h}from"./wc-permissions-registry-CR1rTd2H.js";import{n as g,r as _}from"./hid-device-registry-D2LsJCRr.js";import{a as ee,i as te}from"./serial-port-registry-Bc4wlwED.js";import{C as ne,D as re,E as ie,S as ae,_ as oe,a as se,g as ce,h as le,k as ue,l as de,m as fe,n as pe,o as me,s as he,w as ge,x as _e,y as ve}from"./usb-operations-CkcrNzZw.js";import{i as ye,r as v}from"./usb-device-registry-BP58Vi0S.js";import{r as be}from"./tray-leader-CaTLZ0nn.js";import{_ as xe,b as Se,c as Ce,d as we,f as Te,g as Ee,i as De,l as Oe,m as y,n as ke,o as Ae,p as je,r as Me,s as Ne,t as Pe,u as Fe,v as Ie}from"./wc-shell-DjTIqVcb.js";import{t as Le}from"./icons-BU6llBsN.js";import{n as Re}from"./sprinkle-bridge-Du2dCM8G.js";import{i as ze,n as b,t as Be}from"./theme-BBwuyzvz.js";import{n as Ve}from"./sprinkle-renderer-GiRRbdBx.js";var He=typeof chrome<`u`&&!!chrome?.runtime?.id;async function x(e,t){if(t?.aborted)throw new DOMException(`aborted`,`AbortError`);let n=await C(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 S=null;function Ue(){if(S)return S;if(typeof BroadcastChannel>`u`)return null;try{S=new BroadcastChannel(`preview-vfs`)}catch{return null}return S}async function C(e,t,n){let r=Ue();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 We=[`/shared/sprinkles/`,`/workspace/skills/sprinkles/`,`/workspace/sprinkles/`],Ge=[`/shared/`,`/workspace/skills/sprinkles/`,`/workspace/sprinkles/`];function Ke(e){return We.some(t=>e.startsWith(t))}function qe(e){return typeof e!=`string`||!e.startsWith(`/`)||e.includes(`..`)?!1:Ge.some(t=>e.startsWith(t))}var w=new WeakSet,Je=`,
|
|
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
|
+
}`,Ye=`,
|
|
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
|
+
}`,Xe=`,
|
|
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?Je:``}${e?Ye:``}${e?Xe:``}
|
|
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 Qe=`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}`,$e=`(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 et(e,t,n=!1){let r=Ve(),i=Be()?` class="theme-light"`:``,a=t||e.includes(`<slicc-editor`),o=t||e.includes(`<slicc-diff`),s=t?`<script>${$e}<\/script>`:``;return`<!DOCTYPE html>
|
|
222
|
+
<html${i}><head>
|
|
223
|
+
<meta charset="utf-8">
|
|
224
|
+
<style>${r}</style>
|
|
225
|
+
<style>${Qe}</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 T=new Set;function tt(e){if(typeof e?.type!=`string`||e.type.indexOf(`slicc-`)!==0)throw Error(`broadcastToDips: payload.type must start with 'slicc-'`);for(let t of T)try{t.postMessage(e,`*`)}catch{}}var E;function nt(e){E=e}function D(e){return e.length===0?`''`:`'${e.replace(/'/g,`'\\''`)}'`}function rt(e,t){let n=t?.cwd??`.`,r=t?.allowedCommands??`*`,i=[`agent`];return t?.model&&i.push(`--model`,D(t.model)),t?.thinking&&i.push(`--thinking`,D(t.thinking)),t?.readOnly&&i.push(`--read-only`,D(t.readOnly)),i.push(D(n),D(r),D(e)),i.join(` `)}async function O(e){if(!E)return{stdout:``,stderr:`exec: shell bridge not available
|
|
233
|
+
`,exitCode:127};try{return await E(e)}catch(e){return{stdout:``,stderr:`exec: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}async function it(e,t){let n=await O(rt(e,t));return{stdout:n.stdout||n.stderr,exitCode:n.exitCode}}async function at(e,t){let n=await Re(O,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 k=new WeakMap;function ot(e,t){try{e.postMessage({type:`dip-device-event`,channel:`hid:inputreport`,payload:t},`*`)}catch{}}async function st(e,t){let n=k.get(e);if(n||(n=new Map,k.set(e,n)),n.has(t))return;let r=await ae(_(),t,n=>{let r=n.bytes instanceof Uint8Array?n.bytes:new Uint8Array(n.bytes);ot(e,{handle:t,reportId:n.reportId,data:r})});n.set(t,r)}async function ct(e,t){let n=k.get(e);if(!n)return;let r=n.get(t);if(r){n.delete(t);try{await Promise.resolve(r())}catch{}}n.size===0&&k.delete(e)}function A(e){let t=k.get(e);if(t){for(let e of t.values())try{Promise.resolve(e()).catch(()=>{})}catch{}k.delete(e)}}function lt(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 ut(e,t,n){let r=_();switch(t){case`list`:{let e=g();if(!e)throw Error(`WebHID is unavailable in this browser`);return ce(r,e)}case`request`:{let e=g();if(!e)throw Error(`WebHID is unavailable in this browser`);return ve(r,e,n[0]??[])}case`info`:return le(r,n[0]);case`open`:{let t=n[0];return await oe(r,t),await st(e,t),{ok:!0}}case`close`:{let t=n[0];return await ct(e,t),await fe(r,t),{ok:!0}}case`sendReport`:{let e=n[0],t=n[1],i=lt(n[2]);return await _e(r,e,t,i.buffer.slice(i.byteOffset,i.byteOffset+i.byteLength)),{ok:!0}}default:throw Error(`hid: unknown op '${t}'`)}}async function dt(e,t){let n=ee();switch(e){case`list`:{let e=te();if(!e)throw Error(`Web Serial is unavailable in this browser`);return ie(n,e)}case`request`:{let e=te();if(!e)throw Error(`Web Serial is unavailable in this browser`);return ue(n,e,t[0]??[])}case`info`:return ge(n,t[0]);case`open`:{let e=t[0];return await re(n,e,t[1]??{baudRate:9600}),{ok:!0}}case`close`:return await ne(n,t[0]),{ok:!0};default:throw Error(`serial: unknown op '${e}'`)}}async function ft(e,t){let n=ye();switch(e){case`list`:{let e=v();if(!e)throw Error(`WebUSB is unavailable in this browser`);return me(n,e)}case`request`:{let e=v();if(!e)throw Error(`WebUSB is unavailable in this browser`);return de(n,e,t[0]??[])}case`info`:return se(n,t[0]);case`open`:return await he(n,t[0]),{ok:!0};case`close`:return await pe(n,t[0]),{ok:!0};default:throw Error(`usb: unknown op '${e}'`)}}async function pt(e,t,n,r){switch(t){case`hid`:return ut(e,n,r);case`serial`:return dt(n,r);case`usb`:return ft(n,r);default:throw Error(`unknown device channel '${t}'`)}}async function mt(e,t){if(!e||typeof t.id!=`number`)return!1;let n=n=>{try{e.postMessage({...n,id:t.id},`*`)}catch{}};if(!w.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 pt(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 ht(e,t){if(!e||typeof t.id!=`number`)return!1;let n=n=>{try{e.postMessage({...n,id:t.id},`*`)}catch{}};if(!w.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 O(typeof t.cmd==`string`?t.cmd:``)}),!0;if(t.type===`dip-agent`)return n({type:`dip-agent-response`,result:await it(typeof t.prompt==`string`?t.prompt:``,t.opts)}),!0;if(t.type===`dip-jsh`){try{n({type:`dip-jsh-response`,result:await at(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 j(e,t,n,r=!1){let i=et(t,!1,r);if(He)return Tt(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&&(b(a.contentWindow),T.add(a.contentWindow),r&&w.add(a.contentWindow)),a.addEventListener(`load`,()=>{b(a.contentWindow),a.contentWindow&&(T.add(a.contentWindow),r&&w.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`?_t(t.url):t.type===`dip-picker-action`?M(t,n):t.type===`dip-readfile`||t.type===`dip-exists`||t.type===`dip-stat`?gt(a.contentWindow,t):t.type===`dip-exec`||t.type===`dip-agent`||t.type===`dip-jsh`?ht(a.contentWindow,t):t.type===`dip-device-op`&&mt(a.contentWindow,t))};return window.addEventListener(`message`,o),{dispose(){window.removeEventListener(`message`,o),ze(a.contentWindow),a.contentWindow&&(T.delete(a.contentWindow),w.delete(a.contentWindow),A(a.contentWindow)),a.remove()}}}async function gt(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(!w.has(e))return r({type:`${t.type}-response`,error:`VFS access not allowed for this dip`}),!0;if(!qe(n))return r({type:`${t.type}-response`,error:`VFS path not allowed: ${n}`}),!0;if(t.type===`dip-readfile`){let e=await C(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 C(n,!0)!==null}),!0;if(t.type===`dip-stat`){let e=await C(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 _t(e){if(!(typeof e!=`string`||!e)&&/^(https?:|mailto:)/i.test(e))try{window.open(e,`_blank`,`noopener,noreferrer`)}catch{}}function vt(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(j(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 x(r,a.signal);let e;try{e=await fetch(u,{signal:a.signal})}catch(e){if(e?.name===`AbortError`)throw e;if(c)return x(r,a.signal);throw e}if(e.ok)return e.text();if(c)return x(r,a.signal);throw Error(`HTTP ${e.status}`)},f=c&&Ke(r);d().then(e=>{s||!i.isConnected||(o=j(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 yt(e){for(let t of e)try{t.dispose()}catch{}e.length=0}async function M(e,t){let n=e.data??null,r=Array.isArray(n?.filters)?n.filters:[];if(He){await bt(e.picker,e.action,r,t);return}switch(e.picker){case`directory`:await xt(e.action,t);return;case`usb-device`:await St(e.action,r,t);return;case`serial-port`:await Ct(e.action,r,t);return;case`hid-device`:await wt(e.action,r,t);return;default:t(e.action,e.data);return}}async function bt(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 N(e,t){let n=h();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 P(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 xt(e,n){let r=await N(`filesystem`);if(!r){n(e,{error:`File System Access API not available`});return}if(!r.ok){P(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 St(e,n,r){let i=await N(`usb`,{filters:n});if(!i){r(e,{error:`WebUSB is not available`});return}if(!i.ok){P(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 Ct(e,n,r){let i=await N(`serial`,n.length?{filters:n}:void 0);if(!i){r(e,{error:`Web Serial is not available`});return}if(!i.ok){P(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 wt(e,n,r){let i=await N(`hid`,{filters:n});if(!i){r(e,{error:`WebHID is not available`});return}if(!i.ok){P(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 Tt(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`?_t(t.url):t.type===`dip-readfile`||t.type===`dip-exists`||t.type===`dip-stat`?gt(i.contentWindow,t):t.type===`dip-exec`||t.type===`dip-agent`||t.type===`dip-jsh`?ht(i.contentWindow,t):t.type===`dip-device-op`?mt(i.contentWindow,t):t.type===`dip-picker-action`&&M(t,n))};return window.addEventListener(`message`,a),i.addEventListener(`load`,()=>{b(i.contentWindow),i.contentWindow&&(T.add(i.contentWindow),r&&w.add(i.contentWindow)),i.contentWindow?.postMessage({type:`dip-render`,srcdoc:t,isLight:Be()},`*`)},{once:!0}),{dispose(){window.removeEventListener(`message`,a),ze(i.contentWindow),i.contentWindow&&(T.delete(i.contentWindow),w.delete(i.contentWindow),A(i.contentWindow)),i.remove()}}}var F=c(`cone-memory-budget`),Et=4e3,Dt=2e3,Ot=1.25,kt=`/workspace/CLAUDE.md`,At=`/sessions/index.json`,jt=4096,Mt=/^## Auto-extracted/m,Nt=`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 Pt(e){return Math.round(Et+Dt*Math.log2((Number.isFinite(e)&&e>=0?e:0)+2))}function Ft(e){let t=Mt.exec(e);if(!t)return{header:e,autoExtracted:``};let n=t.index;return{header:e.slice(0,n),autoExtracted:e.slice(n)}}async function It(e){try{let t=await e.readFile(At,{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 Lt(t){let{header:n,autoExtracted:r}=Ft(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:Nt}],timestamp:Date.now()},o=await e(t.model,{systemPrompt:i,messages:[a]},{apiKey:t.apiKey,maxTokens:jt,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 Rt(e){if(!e.model||!e.apiKey)return{restructured:!1,reason:`no-llm`};let t=``;try{let n=await e.vfs.readFile(kt,{encoding:`utf-8`});t=typeof n==`string`?n:new TextDecoder().decode(n)}catch{return{restructured:!1,reason:`missing-file`}}let n=await It(e.vfs),r=Pt(n),i=r*Ot;if(t.length<=i)return{restructured:!1,reason:`under-threshold`};F.info(`Cone memory over threshold — restructuring`,{size:t.length,budget:r,threshold:i,sessionCount:n});try{let n=await Lt({currentContent:t,budget:r,model:e.model,apiKey:e.apiKey,headers:e.headers,signal:e.signal});return await e.vfs.writeFile(kt,n),F.info(`Cone memory restructured`,{before:t.length,after:n.length}),{restructured:!0}}catch(e){return F.warn(`Cone memory restructure failed — leaving appended content in place`,{error:e instanceof Error?e.message:String(e)}),{restructured:!1,reason:`error`}}}function I(e){let t=``;for(let n of e){let e=n.role===`user`?`User`:`Assistant`,r=n.role===`user`?Se(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 L=c(`session-freezer`),zt=4,Bt=2048,R=40,z=`/sessions`,B=`/sessions/index.json`;async function Vt(e){let t=await qt(e.sessionStore);if(!t||t.messages.length<zt)return L.info(`Skipping freeze: session below threshold or missing`,{messageCount:t?.messages.length??0}),null;let n=Jt(t.messages),r=e.mode??`full`,i=r===`full`&&!!(e.apiKey&&e.model);await Wt(e,n,i);let a=await Gt(e,n,i)||en(t.messages);return await Kt(e,t,a,r,i?await Ht(e,a):void 0)}async function Ht(e,n){try{return Ut(await(e.pickIcon??(await t(async()=>{let{pickLucideIcon:e}=await import(`./quick-llm-BtUslSmP.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,29,30,31]))).pickLucideIcon)({subject:`"${n}" — an archived chat session`})??void 0)}catch(e){L.warn(`Icon pick failed (freeze still proceeds)`,{error:e instanceof Error?e.message:String(e)});return}}function Ut(e){if(e)return Le(e)?e:void 0}async function Wt(e,t,n){if(!n){L.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:Bt,headers:e.headers})}catch(e){L.warn(`Memory extraction call failed (freeze still proceeds)`,{error:e instanceof Error?e.message:String(e)});return}if(!r.trim()||r.trim()===`NONE`){L.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}),L.info(`Memory extracted and appended on new-session`)}catch(e){L.warn(`Memory append failed`,{error:e instanceof Error?e.message:String(e)})}}async function Gt(e,t,n){if(!n)return``;try{return $t(await o({messages:t,instruction:a,model:e.model,apiKey:e.apiKey,maxTokens:R,headers:e.headers}))}catch(e){return L.warn(`Title generation call failed (using heuristic)`,{error:e instanceof Error?e.message:String(e)}),``}}async function Kt(e,t,n,r,i){let a=new Date().toISOString(),o=r===`quick`?`pending-${nn()}.md`:`${a.replace(/[:.]/g,`-`)}-${tn(n)}.md`,s={id:t.id,title:n,frozenAt:a,createdAt:t.createdAt,updatedAt:t.updatedAt,messageCount:t.messages.length,messages:t.messages},c=Qt(s),l={filename:o,title:n,frozenAt:a,messageCount:t.messages.length,...i?{icon:i}:{},...r===`quick`?{pendingEnrichment:!0}:{}};try{return await V(e.vfs,z),await e.vfs.writeFile(`${z}/${o}`,c),await an(e.vfs,l),await e.vfs.flush(),L.info(`Cone session frozen`,{filename:o,title:n,messageCount:t.messages.length}),{...l,archive:s}}catch(e){return L.warn(`Failed to write frozen session to VFS`,{error:e instanceof Error?e.message:String(e)}),null}}async function qt(e){try{return await e.load(`session-cone`)}catch(e){return L.warn(`Failed to load session-cone`,{error:e instanceof Error?e.message:String(e)}),null}}function Jt(e){return e.map(e=>({role:e.role,content:[{type:`text`,text:e.content}],timestamp:e.timestamp}))}var Yt=`<!-- slicc:session-data
|
|
249
|
+
`,Xt=`
|
|
250
|
+
-->`;function Zt(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 Qt(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=`${Yt}${JSON.stringify(Zt(e.messages)).replace(/-->/g,`-- >`)}${Xt}\n\n`,r=`# ${e.title}\n\n`;return t+n+r+I(e.messages)}function $t(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 en(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 tn(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``).slice(0,48)||`session`}function nn(){return`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,6)}`}async function V(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 V(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 Rt({vfs:e,model:r?.model,apiKey:r?.apiKey,headers:r?.headers,signal:r?.signal})}catch(e){L.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(B,{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(B,JSON.stringify(r,null,2))}async function on(e){try{let t=await e.readFile(B,{encoding:`utf-8`}),n=typeof t==`string`?t:new TextDecoder().decode(t),r=JSON.parse(n);return Array.isArray(r)?r:[]}catch{return[]}}function H(e){return`${z}/${e.filename}`}async function sn(e,t,n){if(!t.pendingEnrichment)return null;let r=await ln(e,t);if(r===null)return null;let i=un(t,r);if(i===null)return null;let a=await dn(t,i,n);if(a===null)return null;let o=await cn(n,a.newTitle);return await fn(e,t,a.bullets,n),await pn(e,t,r,a.newTitle,o)}async function cn(e,t){if(e.pickIcon)try{return await Ut(await e.pickIcon({subject:`"${t}" — an archived chat session`})??void 0)}catch(e){L.warn(`Enrichment icon pick failed (continuing without icon)`,{error:e instanceof Error?e.message:String(e)});return}}async function ln(e,t){try{let n=await e.readFile(H(t),{encoding:`utf-8`});return typeof n==`string`?n:new TextDecoder().decode(n)}catch(e){return e?.code===`ENOENT`?L.info(`Pending archive missing — treating as already enriched`,{filename:t.filename}):L.warn(`Failed to read pending archive (entry stays pending)`,{filename:t.filename,error:e instanceof Error?e.message:String(e)}),null}}function un(e,t){let n;try{n=U(t).messages}catch(t){return L.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?(L.info(`Pending archive has no messages — skipping enrichment`,{filename:e.filename}),null):Jt(n)}async function dn(e,t,n){let r=``;try{r=await o({messages:t,instruction:s,model:n.model,apiKey:n.apiKey,maxTokens:Bt,headers:n.headers})}catch(t){return L.warn(`Enrichment memory call failed (entry stays pending)`,{filename:e.filename,error:t instanceof Error?t.message:String(t)}),null}let i=``;try{i=$t(await o({messages:t,instruction:a,model:n.model,apiKey:n.apiKey,maxTokens:R,headers:n.headers}))}catch(t){return L.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}:(L.info(`Enrichment title call returned empty — entry stays pending`,{filename:e.filename}),null)}async function fn(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){L.warn(`Enrichment memory append failed (continuing with title rewrite)`,{filename:t.filename,error:e instanceof Error?e.message:String(e)})}}async function pn(e,t,n,r,i){let a=H(t),o=mn(n,r),s=`${t.frozenAt.replace(/[:.]/g,`-`)}-${tn(r)}.md`,c=`${z}/${s}`;try{await V(e,z),await e.writeFile(c,o)}catch(e){return L.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 gn(e,t.filename,u)}catch(e){return L.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){L.info(`Stale pending archive cleanup failed (harmless)`,{oldPath:a,error:e instanceof Error?e.message:String(e)})}try{await e.flush()}catch{}return L.info(`Pending session enriched`,{oldFilename:t.filename,newFilename:s,title:r}),u}function mn(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 hn=Promise.resolve();async function gn(e,t,n){let r=async()=>{let r=[];try{let t=await e.readFile(B,{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(B,JSON.stringify(a,null,2))},i=hn.then(r,r);return hn=i.then(()=>void 0,()=>void 0),i}function U(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:_n(t)}}function _n(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 vn=`__slicc_binary__`,yn=`b64`;function bn(e){if(!e||typeof e!=`object`)return!1;let t=e;return t[vn]===yn&&typeof t.data==`string`}function xn(e){let t=32768,n=``;for(let r=0;r<e.byteLength;r+=t){let i=e.subarray(r,Math.min(r+t,e.byteLength));n+=String.fromCharCode.apply(null,i)}return btoa(n)}function Sn(e){let t=atob(e),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return n}function W(e){if(e instanceof Uint8Array)return{[vn]:yn,data:xn(e)};if(Array.isArray(e))return e.map(W);if(e&&typeof e==`object`){let t={};for(let[n,r]of Object.entries(e))t[n]=W(r);return t}return e}function G(e){if(bn(e))return Sn(e.data);if(Array.isArray(e))return e.map(G);if(e&&typeof e==`object`){let t={};for(let[n,r]of Object.entries(e))t[n]=G(r);return t}return e}var Cn=c(`panel-transport`);function wn(e){return typeof e==`object`&&!!e&&`source`in e&&`payload`in e}function Tn(){return{onMessage:e=>{let t=(t,n,r)=>(wn(t)&&e(G(t)),!1);return chrome.runtime.onMessage.addListener(t),()=>chrome.runtime.onMessage.removeListener(t)},send:(e,t)=>{let n=W(e);chrome.runtime.sendMessage({source:`panel`,payload:n}).catch(e=>{Cn.error(`failed to send to offscreen`,{error:e instanceof Error?e.message:String(e)})})}}}var K=c(`offscreen-client`),En=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){K.error(`onScoopSelected handler threw`,{error:e instanceof Error?e.message:String(e)})}}locked=!1;constructor(e,t){this.callbacks=e,this.transport=t??Tn(),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}K.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?(K.warn(`Offscreen restarted — re-requesting state`),this.ready=!1):K.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}));break}case`tray-runtime-status`:{let t=e;Dn(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){K.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}-${q()}`,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}-${q()}`,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}-${q()}`,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}-${q()}`;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){K.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&&Dn(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){K.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 q(){return Date.now().toString(36)+Math.random().toString(36).slice(2,8)}function Dn(e,t){be({state:e.state,error:e.error,reconnectAttempts:e.reconnectAttempts,session:e.session?{...e.session}:null}),p({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 J(e){return!e.includes(`\0`)}function On(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(!J(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(!J(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),!J(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),!J(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(J(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 kn(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 An(e){let t=kn(e);return{onMessage:e=>t.onMessage(e),send:(e,n)=>{t.send({source:`panel`,payload:e},n)}}}function jn(e,t){let n=kn(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 Mn(){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 Nn(e){let{worker:t,realCdpTransport:n,callbacks:r}=e,i=e.readyTimeoutMs??3e4,a=e.localStorageSeed??{},o=new MessageChannel,s=new MessageChannel,c=new En(r,An(o.port1)),l=jn(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 Pn(e){return Nn({worker:e.workerUrl?new Worker(e.workerUrl,{type:`module`}):new Worker(new URL(`/assets/kernel-worker-BOiHtoD5.js`,``+import.meta.url),{type:`module`}),realCdpTransport:e.realCdpTransport,callbacks:e.callbacks,readyTimeoutMs:e.readyTimeoutMs,localStorageSeed:e.localStorageSeed??Mn(),instanceId:e.instanceId,localApiBaseUrl:e.localApiBaseUrl,bridgeToken:e.bridgeToken,localLickWsUrl:e.localLickWsUrl,extensionDelegateId:e.extensionDelegateId})}var Fn=`<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 In(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 Ln(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(Fn));let a=()=>{r.style.color=`var(--green)`,setTimeout(()=>{r.style.color=`var(--txt-3)`},1500)};return r.addEventListener(`short-click`,()=>{(async()=>{await t(In(e.getMessages())??I([...e.getMessages()])),a()})()}),r.addEventListener(`long-press`,()=>{(async()=>{let n=I([...e.getMessages()]);n&&(await t(n),a())})()}),n.append(r),n}function Y(){return`msg-${Date.now()}-${Math.random().toString(36).slice(2,8)}`}function Rn(e){let t={id:e.id,text:e.content};return e.attachments?.length&&(t.attachments=e.attachments.length),t}var zn=class{#e;#t;#n;#r;#i;#a;#o;#s;#c;#l;#u;#d;#f;#p;#m=[];#h=[];#g=new Map;#_=null;#v=null;#y=``;#b=!1;#x=!1;#S=null;#C=new Set;#w=new Map;constructor(e){this.#e=e.thread,this.#t=e.agent,this.#n=e.onProcessingChange,this.#r=e.onMessageRendered,this.#i=e.onMessageDisposed,this.#a=e.onTurnComplete,this.#o=e.resolveTelemetryContext,this.#s=e.onQueuedChange,this.#c=e.onQueuedCancel,this.#l=e.onToolUiAction,this.#u=e.agent.onEvent(e=>this.#j(e)),this.#p=e=>this.#W(e),this.#e.addEventListener(`slicc-error-retry`,this.#p)}dispose(){this.#u(),this.#e.removeEventListener(`slicc-error-retry`,this.#p);for(let e of[...this.#w.keys()])this.#U(e)}get processing(){return this.#x}getMessages(){return this.#m.map(e=>({...e}))}setAgent(e){this.#u(),this.#t=e,this.#u=e.onEvent(e=>this.#j(e))}setOnLocalUserMessage(e){this.#d=e}setOnLocalProcessingChange(e){this.#f=e}addUserMessage(e,t){this.#q({id:Y(),role:`user`,content:e,timestamp:Date.now()})}getQueuedMessages(){return this.#h.map(Rn)}removeQueuedMessage(e){let t=this.#h.filter(t=>t.id!==e);t.length!==this.#h.length&&(this.#h=t,this.#E())}#T(){if(this.#h.length===0)return;let e=this.#h;this.#h=[];for(let t of e)this.#q(t);this.#E()}#E(){this.#s?.(this.#h.map(Rn))}addAssistantMessage(e){this.#q({id:Y(),role:`assistant`,content:e,timestamp:Date.now()})}loadMessages(e){for(let e of this.#g.keys())this.#i?.(e);for(let e of[...this.#w.keys()])this.#U(e);if(this.#h.length>0){if(this.#c)for(let e of this.#h)try{this.#c(e.id)}catch(e){console.error(`onQueuedCancel hook threw`,e)}this.#h=[],this.#E()}this.#m=Ae(e);let t=[...this.#m].reverse().find(e=>e.isStreaming);this.#_=t?.id??null,t&&(this.#v=t.id),this.#y=``,this.#b=!1,this.#g.clear();let n=[],r=``;for(let e of this.#m){let t=new Date(e.timestamp).toDateString();t!==r&&(n.push(Ne(e.timestamp)),r=t);let i=this.#K(e);this.#g.set(e.id,i),n.push(...i)}let i=this.#e;typeof i.replaceContent==`function`?i.replaceContent(...n):i.replaceChildren(...n),this.#Z();for(let e of this.#m)e.isStreaming||this.#r?.(e,this.#g.get(e.id)??[]);this.#A(),this.#$()}sendUserMessage(e,t,n){let r=e.trim();if(!r&&!t?.length)return;let i=n?.dictation?this.#D(r):r,a={id:Y(),role:`user`,content:i,timestamp:Date.now(),attachments:t?.length?t:void 0};this.#x?(this.#h.push(a),this.#E()):this.#q(a),this.#t.sendMessage(i,a.id,a.attachments),this.#O();try{let e=n?.dictation?Se(i):i;this.#d?.(e,a.id,a.attachments)}catch(e){console.error(`onLocalUserMessage hook threw`,e)}}#D(e){return xe(e,Ie())}#O(){if(this.#o)try{let e=this.#o();if(!e)return;f(e.scoopName,e.model)}catch{}}addLickMessage(e,t,n,r,i){let a=this.#m[this.#m.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.#J(a);return}this.#q({id:e,role:`user`,content:t,timestamp:r,source:`lick`,channel:n,lickId:i,lickState:i?`pending`:void 0,queued:this.#x?!0:void 0})}updateLickState(e,t){let n=this.#m.find(t=>t.lickId===e);n&&(n.lickState=t,this.#J(n))}setProcessing(e){if(this.#x!==e){this.#x=e,e&&(this.#v=null),e&&this.#T(),e||this.#A(),this.#n?.(e);try{this.#f?.(e)}catch(e){console.error(`onLocalProcessingChange hook threw`,e)}e||this.#k()}}#k(){let e=this.#v;if(this.#v=null,!this.#a)return;let t=e?this.#G(e):null;this.#a(t?{...t}:null)}#A(){let e=this.#m[this.#m.length-1];if(!(e?.role===`assistant`&&!e.isStreaming)){this.#S?.remove();return}this.#S??=Ln({getMessages:()=>this.getMessages()}),(this.#e.inner??this.#e).append(this.#S)}#j(e){switch(e.type){case`message_start`:this.#M(e.messageId);break;case`content_delta`:this.#N(e.messageId,e.text);break;case`content_done`:this.#F(e.messageId);break;case`tool_use_start`:this.#I(e.messageId,e.toolName,e.toolInput);break;case`tool_result`:this.#L(e.messageId,e.toolName,e.result,e.isError);break;case`tool_ui`:this.#V(e.messageId,e.requestId,e.html);break;case`tool_ui_done`:this.#H(e.requestId);break;case`turn_end`:this.#R(e.messageId);break;case`error`:this.#z(e.error);break;case`screenshot`:case`terminal_output`:break;default:break}}#M(e){this.setProcessing(!0),this.#_=e,this.#v=e,this.#q({id:e,role:`assistant`,content:``,timestamp:Date.now(),isStreaming:!0,toolCalls:[]})}#N(e,t){this.#G(e)&&(this.#y+=t,!this.#b&&(this.#b=!0,requestAnimationFrame(()=>this.#P(e))))}#P(e){if(this.#b=!1,!this.#y)return;let t=this.#G(e);t&&(t.content+=this.#y,this.#y=``,this.#J(t))}#F(e){let t=this.#G(e);t&&(this.#y&&this.#_===e&&(t.content+=this.#y),this.#y=``,this.#b=!1,t.isStreaming=!1,this.#J(t))}#I(e,t,n){let r=this.#G(e);r&&(r.toolCalls=r.toolCalls??[],r.toolCalls.push({id:Y(),name:t,input:n}),this.#J(r))}#L(e,t,n,r){let i=this.#G(e),a=[...i?.toolCalls??[]].reverse().find(e=>e.name===t&&e.result===void 0);!i||!a||(a.result=n,a.isError=r,this.#J(i))}#R(e){let t=this.#G(e);t?.isStreaming&&(t.isStreaming=!1,this.#J(t)),this.#_=null,this.setProcessing(!1)}#z(e){this.setProcessing(!1),this.#q({id:Y(),role:`assistant`,content:e,timestamp:Date.now(),error:!0}),this.#B(e)}#B(e){try{if(Fe(e)||Oe(e)||Ce(e))return;u(`error-card`,e)}catch{}}#V(e,t,n){this.#U(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=j(r,n,(e,n)=>{this.#l?.(t,e,n)},!1);this.#w.set(t,{instance:i,container:r}),this.#l?.(t,l,void 0)}#H(e){this.#U(e)}#U(e){let t=this.#w.get(e);if(t){this.#w.delete(e);try{t.instance.dispose()}catch{}t.container.remove()}}#W(e){if(this.#x)return;let t=e.detail?.messageId??null,n=this.#m.length;if(t){let e=this.#m.findIndex(e=>e.id===t);e>=0&&(n=e)}let r=n>0?this.#m[n-1]:void 0;if(r&&r.source===`lick`&&!r.queued){this.#t.sendMessage(r.content,Y(),r.attachments);return}let i;for(let e=n-1;e>=0;e--){let t=this.#m[e];if(t.role===`user`&&t.source!==`lick`&&t.source!==`delegation`&&!t.queued){i=t;break}}i&&this.#t.sendMessage(i.content,Y(),i.attachments)}#G(e){return this.#m.find(t=>t.id===e)}#K(e){try{return we(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]}}#q(e){this.#X(),this.#m.push(e);let t=this.#K(e);this.#g.set(e.id,t),this.#e.append(...t),this.#Z(),e.isStreaming||this.#r?.(e,t),e.role===`user`?this.#$():this.#ee()}#J(e){this.#X(),this.#i?.(e.id);let t=this.#g.get(e.id)??[],n=this.#K(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.#g.set(e.id,n),this.#Z(),e.isStreaming||this.#r?.(e,n),this.#ee()}#Y(){return this.#e.inner??this.#e}#X(){je(this.#Y(),this.#C)}#Z(){Te(this.#Y(),{openClusterAnchors:this.#C,toolCallLookup:(e,t)=>this.#Q(e,t)})}#Q(e,t){return this.#m.find(t=>t.id===e)?.toolCalls?.find(e=>e.id===t)}#$(){this.#e.scrollTop=this.#e.scrollHeight}#ee(){let e=this.#e;typeof e.requestFollow==`function`?e.requestFollow():this.#$()}};function Bn(e){return`${new Date(e.frozenAt).toLocaleDateString(void 0,{month:`short`,day:`numeric`})} · ${e.messageCount} turns`}function Vn(e){let t=document.createElement(`slicc-freezer-card`);return t.setAttribute(`title`,e.title),t.setAttribute(`meta`,Bn(e)),t.setAttribute(`slug`,e.filename),e.icon&&t.setAttribute(`icon`,e.icon),t}async function Hn(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 X(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(B,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 X(e){let t=await Un(e);return t.kind===`ok`?t.entries:t.kind===`missing`?[]:null}async function Un(e){let t;try{let n=await e.readFile(B,{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 Wn(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 Gn(e,t){for(let t of Array.from(e.querySelectorAll(`slicc-freezer-card`)))t.remove();e.append(...t.map(Vn))}async function Kn(e,t){let n=await e.readFile(H(t),{encoding:`utf-8`}),r=U(typeof n==`string`?n:new TextDecoder().decode(n));return{title:r.title||t.title,messages:r.messages}}var qn=`/workspace/CLAUDE.md`,Z=64;function Jn(e){if(e.length<=Z)return{title:e,summary:``};let t=e.lastIndexOf(` `,Z),n=t>Z/2?t:Z;return{title:`${e.slice(0,n)}…`,summary:e.slice(n).trim()}}function Yn(e){let t=[],n=null,r=()=>{if(!n)return;let e=n.join(` `).trim();e&&t.push(Jn(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(Jn(e.trim())),t}async function Xn(e){let t=``;try{let n=await e.readFile(qn,{encoding:`utf-8`});t=typeof n==`string`?n:new TextDecoder().decode(n)}catch{t=``}return Yn(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 Zn=[`/workspace`,`/shared`],Qn=3,$n=200;async function er(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=[];for(let r of[...i,...a].slice(0,$n)){let i=`${t}/${r.name}`;r.type===`directory`?o.push({kind:`dir`,id:i,label:r.name,children:n<Qn?await er(e,i,n+1):[]}):o.push({kind:`file`,id:i,label:r.name,path:i})}return o}async function tr(e){let t=[];for(let n of Zn)t.push({kind:`group`,label:`${n.slice(1)}/`}),t.push(...await er(e,n,1));return t}function nr(e){let t=!1;return n=>{if(n===`files`){e.openFs().then(async t=>{e.fileTree.items=await tr(t)}).catch(t=>e.log.error(`WC file tree refresh failed`,t));return}if(n===`memory`){e.openFs().then(async t=>{e.memoryHost.replaceChildren(...await Xn(t))}).catch(t=>e.log.error(`WC memory refresh failed`,t));return}n===`term`&&!t&&(t=!0,e.mountTerminal(e.termSurface).catch(n=>{t=!1,e.log.error(`WC terminal mount failed`,n)}))}}var rr={off:`off`,low:`low`,medium:`medium`,high:`high`,xhigh:`xhigh`,max:`xhigh`},ir={off:`off`,minimal:`low`,low:`low`,medium:`medium`,high:`high`,xhigh:`xhigh`};function ar(e){return e?rr[e]:void 0}function or(e){return(e&&ir[e])??`off`}function sr(e,t){return e!=null&&e!==`cone`||new URL(t.location.href).searchParams.get(`cherry`)===`1`?!0:m(t.localStorage)}function Q(e){return e===`error`?`dead`:e===`initializing`?`none`:`open`}function cr(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:y(e),label:e.isCone?`sliccy`:e.name,eyes:Q(t?.get(e.jid)),fill:typeof r==`number`?Math.round(r*100):void 0}})}function $(e){let t=()=>{let t=e.getClient();t&&(e.refs.switcher.scoops=cr(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),Q(i)!==Q(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`&&Ee(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 lr(e,n){e.thread.setAttribute(`context`,n.isCone?`cone`:`scoop:${n.name}`),e.thread.setAttribute(`accent`,y(n)),ke(e,n.isCone?{kind:`cone`}:{kind:`scoop`,accent:y(n)}),e.switcher.setAttribute(`active`,n.jid),e.composerMeta.setAttribute(`thinking`,or(n.config?.thinkingLevel));try{let{resolveCurrentModel:r,resolveModelById:i}=await t(async()=>{let{resolveCurrentModel:e,resolveModelById:t}=await import(`./main-Bpuh8nYF.js`).then(e=>e.t);return{resolveCurrentModel:e,resolveModelById:t}},__vite__mapDeps([28,1,29,12,11,13,14,15,16,17,2,18,19,20,21,22,23,24,25,26,30])),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 ur(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 X(r);if(a===null){if((await Un(r)).kind!==`corrupt`||(l.warn(`WC freezer index corrupt — rebuilding from archives`),a=await Wn(r),a.length===0))return;await i.writeFile(B,JSON.stringify(a,null,2))}e===d&&(u=a,Gn(n.freezer,a),!f&&a.some(e=>!e.icon&&!e.pendingEnrichment)&&(f=!0,t(async()=>{let{pickLucideIcon:e}=await import(`./quick-llm-BtUslSmP.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,29,30,31])).then(({pickLucideIcon:e})=>Hn({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-sPDR0jnx.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,28,29,30,31,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-DjTIqVcb.js`).then(e=>e.y);return{resetDictationPriming:e}},__vite__mapDeps([34,1,12,27,28,29,11,13,14,15,16,17,2,18,19,20,21,22,23,24,25,26,30,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 X(t)??[]).find(t=>t.filename===e);let{messages:o}=await Kn(t,i??{filename:e,title:e,frozenAt:``,messageCount:0});a()?.loadMessages(o),n.thread.setAttribute(`context`,`freezer:${i?.filename??e}`),n.thread.setAttribute(`accent`,Pe),ke(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 dr(e,t){let n=null,r=Me(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`),lr(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`)&&e(t)},onClientReady:e=>{c.add(e),s&&e()}}}function fr(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 pr(e,n,r,i,a){e.onClientReady(()=>{i.intercept||t(async()=>{let{wireWcOnboarding:e}=await import(`./wc-onboarding-BEbuwhSQ.js`);return{wireWcOnboarding:e}},__vite__mapDeps([41,12,28,1,29,11,13,14,15,16,17,2,18,19,20,21,22,23,24,25,26,30,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 mr(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 zn({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-DfKSbOma.js`);return{consumeVoiceSubmission:e,speakReplyMarkdown:t}},__vite__mapDeps([46,2,47,12,48,49,19,1,20,50,51,52])).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?.()},onMessageDisposed:e=>{let t=c.get(e);t&&(yt(t),c.delete(e))},onMessageRendered:(e,t)=>{let n=t[0];n&&c.set(e.id,vt(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 hr(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-Gu8g7ydZ.js`);return{createPlaceholderRefresher:e}},__vite__mapDeps([53,12,34,1,27,28,29,11,13,14,15,16,17,2,18,19,20,21,22,23,24,25,26,30,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(sr(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;t(async()=>{let{wireWcAttach:e}=await import(`./wc-attach-B6M5u9Mf.js`);return{wireWcAttach:e}},__vite__mapDeps([54,12,55,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-Znp08p_F.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-DfKSbOma.js`);return{markVoiceSubmission:e}},__vite__mapDeps([46,2,47,12,48,49,19,1,20,50,51,52])).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=ar(t),a=n.getSelected();a&&i&&r.setScoopThinkingLevel(a.jid,i)})}function gr(e,t){let n=()=>{t.getSessionStats?.().then(n=>{if(n){e.refs.floatbar.setAttribute(`spent`,n.totalCost.toFixed(2)),e.fills.clear();for(let t of n.fills)e.fills.set(t.jid,t.fill);e.refs.switcher.scoops=cr(t.getScoops(),e.statuses,e.fills)}})};return setInterval(n,15e3),n}function _r(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 vr(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)}),br({switcher:n.switcher,getScoops:()=>t.getScoops(),lastActivity:e.wiring.lastActivity})}function yr(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 br(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-BtUslSmP.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,29,30,31]))).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 xr(e,n,r){let{RemoteTerminalView:i}=await t(async()=>{let{RemoteTerminalView:e}=await import(`./remote-terminal-view-DMnqOfIb.js`);return{RemoteTerminalView:e}},__vite__mapDeps([56,12,57,1,0,2,3,9,8,58,7,6,59,26,5,4,55])),{fetchSecretEnvVars:a}=await t(async()=>{let{fetchSecretEnvVars:e}=await import(`./secret-env-DncfFSea.js`);return{fetchSecretEnvVars:e}},__vite__mapDeps([60,2,19,1,12,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),window.addEventListener(`beforeunload`,()=>s.dispose(),{once:!0})}function Sr(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 Cr(e,n,r,i){t(async()=>{let{installLeaderPermissionsSurface:e,installMountPendingConsumer:t}=await import(`./wc-permissions-Wqap3kzM.js`);return{installLeaderPermissionsSurface:e,installMountPendingConsumer:t}},__vite__mapDeps([61,12,2,55,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([62,12]));i({runtimeMode:o,providers:await s(c()||o===`extension`||o===`extension-detached`)}),a({runShell:wr(e,n)})}).catch(e=>i.warn(`WC permissions surface wiring failed`,e))}function wr(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 Tr(e,n,r,i={}){let{refs:a}=e;e.setClient(n);let o=null,s=gr(e.wiring,n),c=()=>o?.(),l={intercept:null},{controller:u,agentHandle:d}=mr(a,n,()=>e.getSelected(),yr({boot:e,triggerPlaceholder:c,refreshStats:s}),l);e.setController(u),e.onClientReady(s);let f=fr(n),p=async()=>(await f()).reader;i.standalone?.runtimeMode!==`cherry`&&pr(e,n,f,l,r),hr({boot:e,client:n,agentHandle:d,setRefreshPlaceholder:e=>{o=e},triggerPlaceholder:c,openReader:p,openWriter:async()=>(await f()).writer,log:r}),vr(e,n),_r(e,i,r),Cr(e,n,i,r),e.setActivateSurface(nr({fileTree:a.fileTree,termSurface:a.termSurface,memoryHost:a.memoryHost,openFs:p,mountTerminal:t=>xr(e,n,t),log:r}));let{refreshFreezer:m,openFrozen:h}=ur({refs:a,openVfs:f,client:n,getController:()=>e.getController(),getSelected:()=>e.getSelected(),selectScoop:e.selectScoop,clearSelection:e.clearSelection,log:r});m(),e.onClientReady(m),Sr(e,n,h),f().then(async({reader:e})=>{let{installPreviewVfsResponder:n}=await t(async()=>{let{installPreviewVfsResponder:e}=await import(`./preview-vfs-responder-CSDC7Oy2.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([63,39])),{wireWcSprinkles:l}=await t(async()=>{let{wireWcSprinkles:e}=await import(`./wc-sprinkles-DvkKhy2T.js`);return{wireWcSprinkles:e}},__vite__mapDeps([64,12])),u=await l({refs:a,client:n,fs:c({reader:o,writer:s}),instanceId:i.instanceId,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-BVb6lvIH.js`);return{wireWcTray:e}},__vite__mapDeps([65,12,11,1,13,14,15,16,17,2,18,19,20,21,22,23,24,25,26,57,28,29,30,66,67,50,51,52,68,44,69])),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-CkFqKz85.js`);return{wireWcNav:e}},__vite__mapDeps([70,12,28,1,29,11,13,14,15,16,17,2,18,19,20,21,22,23,24,25,26,30,69])).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([71,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-BJF-32Qm.js`);return{getComposerSpeech:e,setComposerSpeechInstanceId:t}},__vite__mapDeps([72,2,48,73,12,49,19,1,20,50,51,52,55,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-D9WnbzxD.js`);return{setSpeakAssetsInstanceId:e}},__vite__mapDeps([47,12,2,48,49,19,1,20,50,51,52])).then(({setSpeakAssetsInstanceId:e})=>e(i.instanceId)).catch(e=>r.error(`WC say warmup wiring failed`,e))}async function Er(e,n,r=`standalone`){let{browser:i,realCdpTransport:a,instanceId:o,localApiBaseUrl:s,bridgeToken:c,localLickWsUrl:l,extensionDelegateId:u,attachLickForwardingClient:f}=await d({runtimeMode:r,envBaseUrl:null,window,log:n}),{resolveStandaloneFloatLabel:p,DEFAULT_STANDALONE_LABEL:m}=await t(async()=>{let{resolveStandaloneFloatLabel:e,DEFAULT_STANDALONE_LABEL:t}=await import(`./wc-float-label-dfUH87GD.js`);return{resolveStandaloneFloatLabel:e,DEFAULT_STANDALONE_LABEL:t}},[]),h=r===`standalone`||r===`electron-overlay`?await p():m,g=dr(e,h),_=Pn({realCdpTransport:a,instanceId:o,callbacks:$(g.wiring),localApiBaseUrl:s,bridgeToken:c,localLickWsUrl:l,extensionDelegateId:u});On({send:e=>_.client.sendRaw(e)}),f?.(_.client),Tr(g,_.client,n,{instanceId:o,standalone:{browser:i,realCdpTransport:a,runtimeMode:r,baseFloatLabel:h}});let{setupSudoStandalone:ee}=await t(async()=>{let{setupSudoStandalone:e}=await import(`./main-Bpuh8nYF.js`).then(e=>e.f);return{setupSudoStandalone:e}},__vite__mapDeps([28,1,29,12,11,13,14,15,16,17,2,18,19,20,21,22,23,24,25,26,30]));await ee({log:n}),await _.ready,g.wiring.notifyReady?.(),n.info(`WC live shell ready`,{scoops:_.client.getScoops().length})}export{Vt as a,Tr as attachWcClient,on as c,$ as createWcLiveCallbacks,M as d,vt as f,sn as i,tt as l,nt as m,Er as mountWcUiLive,En as n,H as o,j as p,dr as prepareWcShell,B as r,U as s,zn as t,yt as u};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/main-Bpuh8nYF.js","assets/chunk-aKtaBQYM.js","assets/modulepreload-polyfill-Dezn_h7o.js","assets/preload-helper-zJ_50EbN.js","assets/account-store-DFegnWPt.js","assets/dist-BmWy99kl.js","assets/event-stream-BJI_nGaK.js","assets/json-parse-BUunmmNl.js","assets/__vite-browser-external-C7iut881.js","assets/context-compaction-CFWyOzX1.js","assets/logger-DDBAeTLF.js","assets/src-DlEHAkLd.js","assets/proxied-fetch-CKDBmEMl.js","assets/fetch-body-D2PwksUW.js","assets/secret-topology-bwXIzzAK.js","assets/secrets-bridge-client-BSipj-5f.js","assets/panel-rpc-DqT2FG7c.js","assets/bedrock-camp-9-QEmC9Z.js","assets/transform-messages-DzB_lMo-.js","assets/tool-ui-DfXu6quJ.js","assets/clipboard-DgFtRQbq.js","assets/wc-settings-BteAfHGT.js","assets/wc-detached-CvvTnnwH.js","assets/legacy-styles-4PP74ISo.js","assets/sync-dialog-BFKWO6DT.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{t as e}from"./preload-helper-zJ_50EbN.js";import{n as t}from"./clipboard-DgFtRQbq.js";import{b as n,c as r,p as i,r as a}from"./main-Bpuh8nYF.js";import{n as o}from"./tray-leader-CaTLZ0nn.js";function s(e){let t=e.find(e=>e.userAvatar&&e.userName)??e.find(e=>e.userName);return t?.userName?{name:t.userName,avatarUrl:t.userAvatar,provider:t.providerId}:null}function c(e){return e.flatMap(e=>e.models.map(t=>({name:t.name??t.id,provider:e.providerName,id:`${e.providerId}:${t.id}`})))}async function l(t){let{refs:n,client:i,log:l}=t,{getAllAvailableModels:h,getAccounts:g}=await e(async()=>{let{getAllAvailableModels:e,getAccounts:t}=await import(`./main-Bpuh8nYF.js`).then(e=>e.t);return{getAllAvailableModels:e,getAccounts:t}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20])),_=()=>{n.composerMeta.models=c(h())};_();let v=null;await p(n,i,()=>{let e=v;v=null,e!=null&&n.thread?.dispatchEvent(new CustomEvent(`slicc-error-retry`,{detail:{messageId:e},bubbles:!0,composed:!0}))});let y=typeof chrome<`u`&&!!chrome?.runtime?.id,b=()=>{let e=s(g()),t=n.avatarMenu.querySelector(`slicc-avatar`),r=n.inputCard.querySelector(`slicc-send-button`);e?(t?.removeAttribute(`initials`),t?.setAttribute(`name`,e.name),e.avatarUrl&&(t?.setAttribute(`src`,e.avatarUrl),r?.setAttribute(`src`,e.avatarUrl)),n.avatarMenu.user={name:e.name,provider:e.provider}):(t?.removeAttribute(`name`),t?.removeAttribute(`src`),t?.removeAttribute(`initials`),r?.removeAttribute(`src`),n.avatarMenu.user={name:`SLICC`,provider:y?`extension`:`standalone`})};b();let x=()=>{if(y)return[];let e=a(o(),r()),t=[{kind:`separator`}];return e.kind===`leader-offer`?t.push({id:`tray-enable`,label:e.label,icon:`radio`}):e.kind===`leader-copy`?(t.push({id:`tray-copy`,label:`Copy tray join URL`,icon:`link`}),t.push({id:`tray-stop`,label:`Stop multi-browser sync`,icon:`square`,danger:!0})):e.kind===`leader-pending`?(t.push({kind:`caption`,label:e.caption}),t.push({id:`tray-stop`,label:`Stop multi-browser sync`,icon:`square`,danger:!0})):(t.push({kind:`caption`,label:e.caption}),t.push({id:`tray-stop`,label:`Disconnect from leader`,icon:`unplug`,danger:!0})),t},S=new URLSearchParams(window.location.search).has(`detached`),C=()=>y&&!S?[{id:`popout`,label:`Pop out into a tab`,icon:`external-link`}]:[],w=()=>{n.avatarMenu.items=[{id:`settings`,label:`Account settings…`,icon:`settings`},...C(),...x()]};w(),n.avatarMenu.addEventListener(`slicc-avatar-menu-toggle`,e=>{e.detail?.open&&w()});let T=e=>u(e,l),E=()=>{e(async()=>{let{showWcSettings:e}=await import(`./wc-settings-BteAfHGT.js`);return{showWcSettings:e}},__vite__mapDeps([21,3])).then(({showWcSettings:e})=>e(l)).then(()=>{_(),b(),i.updateModel()}).catch(e=>l.error(`WC settings dialog failed`,e))};n.avatarMenu.addEventListener(`slicc-avatar-action`,t=>{let n=t.detail?.id;if(n&&T(n)){w();return}if(n===`popout`){e(async()=>{let{requestDetachedPopout:e}=await import(`./wc-detached-CvvTnnwH.js`);return{requestDetachedPopout:e}},__vite__mapDeps([22,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20])).then(({requestDetachedPopout:e})=>e()).catch(e=>l.error(`detached popout request failed`,e));return}n===`settings`&&E()}),n.composerMeta.addEventListener(`add-ai`,E),n.thread?.addEventListener(`slicc-error-open-settings`,E),d({refs:n,log:l,openSettings:E,setPendingReplayMessageId:e=>{v=e}}),await f({refs:n,log:l,openSettings:E,refreshModels:_,applyIdentity:b,client:i}),m({refreshModels:_,applyIdentity:b,client:i})}function u(r,a){if(r===`tray-enable`)return n({locationHref:window.location.href,storage:window.localStorage,envBaseUrl:null,defaultWorkerBaseUrl:i}).then(e=>{if(!e)return a.error(`tray enable: no worker base URL resolvable`);window.dispatchEvent(new CustomEvent(`slicc:tray-leave`,{detail:{workerBaseUrl:e}}))}),!0;if(r===`tray-copy`){let n=o().session?.joinUrl;return n&&(t(n).catch(()=>void 0),e(async()=>{let{loadLegacyDialogStyles:e}=await import(`./legacy-styles-4PP74ISo.js`);return{loadLegacyDialogStyles:e}},__vite__mapDeps([23,3])).then(({loadLegacyDialogStyles:e})=>e()).then(async()=>{let{showSyncEnabledDialog:t}=await e(async()=>{let{showSyncEnabledDialog:e}=await import(`./sync-dialog-BFKWO6DT.js`);return{showSyncEnabledDialog:e}},__vite__mapDeps([24,20,1]));t({joinUrl:n,copied:!0})}).catch(e=>a.error(`sync dialog failed`,e))),!0}return r===`tray-stop`?(window.dispatchEvent(new CustomEvent(`slicc:tray-leave`,{detail:{workerBaseUrl:null}})),!0):!1}function d(e){let{refs:t,log:n,openSettings:r,setPendingReplayMessageId:i}=e;t.thread?.addEventListener(`slicc-error-change-model`,e=>{i(e.detail?.messageId??null);let a=t.composerMeta,o=a.models;if(Array.isArray(o)&&o.length===0){r();return}try{a.openMenu?.()}catch(e){n.error(`opening composer model picker failed`,e)}})}async function f(t){let{refs:n,log:r,openSettings:i,refreshModels:a,applyIdentity:o,client:s}=t,{getSelectedProvider:c,getProviderConfig:l,reloginOAuthAccount:u}=await e(async()=>{let{getSelectedProvider:e,getProviderConfig:t,reloginOAuthAccount:n}=await import(`./main-Bpuh8nYF.js`).then(e=>e.t);return{getSelectedProvider:e,getProviderConfig:t,reloginOAuthAccount:n}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]));n.thread?.addEventListener(`slicc-error-login`,()=>{let e=c(),t=e?l(e):null;if(!t||!t.onOAuthLogin&&!t.onOAuthLoginIntercepted){i();return}u(t,()=>{a(),o(),s.updateModel()}).catch(e=>r.error(`re-login from error card failed`,e))})}async function p(t,n,r){let{resolveModelById:i,resolveCurrentModel:a,setSelectedModelId:o}=await e(async()=>{let{resolveModelById:e,resolveCurrentModel:t,setSelectedModelId:n}=await import(`./main-Bpuh8nYF.js`).then(e=>e.t);return{resolveModelById:e,resolveCurrentModel:t,setSelectedModelId:n}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20])),s=e=>{let t=e.indexOf(`:`);return t>0?e.slice(t+1):e},c=e=>{try{let n=e?i(s(e)):a();t.composerMeta.toggleAttribute(`no-thinking`,n.reasoning!==!0)}catch{}};c(),t.composerMeta.addEventListener(`model-change`,e=>{let t=e.detail?.id;t&&(o(t),c(t),n.updateModel(),r?.())})}async function m(t){let{refreshModels:n,applyIdentity:r,client:i}=t,{getAccounts:a,getProviderConfig:o}=await e(async()=>{let{getAccounts:e,getProviderConfig:t}=await import(`./main-Bpuh8nYF.js`).then(e=>e.t);return{getAccounts:e,getProviderConfig:t}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]));window.addEventListener(`slicc:accounts-changed`,()=>{n(),r(),i.updateModel();for(let e of a()){let t=o(e.providerId)?.refreshModels;t&&t().then(()=>{n(),i.updateModel()}).catch(()=>void 0)}})}export{l as wireWcNav};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/onboarding-orchestrator-w98EfZg7.js","assets/logger-DDBAeTLF.js","assets/welcome-detection-Cr8mNEkt.js","assets/chunk-aKtaBQYM.js","assets/oauth-service-YGl8VFS-.js","assets/preload-helper-zJ_50EbN.js","assets/proxied-fetch-CKDBmEMl.js","assets/fetch-body-D2PwksUW.js","assets/panel-rpc-DqT2FG7c.js","assets/wc-permissions-registry-CR1rTd2H.js","assets/main-
|
|
2
|
-
import{t as e}from"./preload-helper-zJ_50EbN.js";import{_ as t}from"./main-DYwi5YqO.js";import{t as n}from"./welcome-detection-Cr8mNEkt.js";import{l as r}from"./wc-live-DqgXrP0F.js";function i(e){let{vfs:r,storage:i,firedWelcomeActions:a,persistFiredWelcomeActions:o,getOrchestrator:s,log:c}=e;t(i)||n(r).then(e=>{if(e.isFirstRun){if(a.has(`first-run`)){c.debug(`Suppressing welcome re-fire: first-run already in dedup ledger`);return}a.add(`first-run`),o(a),s().handleFirstRun()}}).catch(e=>c.warn(`Welcome detection failed`,e))}function a(e){for(let t of[`slicc_accounts`,`selected-model`]){let n=localStorage.getItem(t);n!=null&&e.sendRaw({type:`local-storage-set`,key:t,value:n})}}function o(e,t,n,r){let i=n(e).filter(e=>!r(e.id)),a=t.defaultModelId?i.find(e=>e.id===t.defaultModelId):void 0,o=t.defaultModelId?i.find(e=>e.id.toLowerCase().includes(t.defaultModelId.toLowerCase())):void 0,s=a??o??i[0];return s?`${e}:${s.id}`:void 0}function s(e){let t=e.getAvailableProviders().filter(t=>e.providerOffersLlmModels(t)),n=t.map(t=>{let n=e.getProviderConfig(t);return{id:n.id,name:n.name??n.id,description:n.description,requiresApiKey:n.requiresApiKey??!0,requiresBaseUrl:n.requiresBaseUrl??!1,requiresDeployment:!!n.requiresDeployment,requiresApiVersion:!!n.requiresApiVersion,apiKeyPlaceholder:n.apiKeyPlaceholder??void 0,apiKeyEnvVar:n.apiKeyEnvVar??void 0,defaultBaseUrl:n.baseUrlPlaceholder??void 0,baseUrlDescription:n.baseUrlDescription??void 0,deploymentPlaceholder:n.deploymentPlaceholder??void 0,deploymentDescription:n.deploymentDescription??void 0,apiVersionDefault:n.apiVersionDefault??void 0,apiVersionDescription:n.apiVersionDescription??void 0,isOAuth:!!n.isOAuth}}).sort((e,t)=>e.name.localeCompare(t.name,void 0,{sensitivity:`base`})),r={};for(let n of t)try{r[n]=e.getProviderModels(n).filter(t=>!e.isModelHiddenFromPicker(t.id)).map(e=>({id:e.id,name:e.name}))}catch{r[n]=[]}return{providers:n,models:r}}async function c(t){let{OnboardingOrchestrator:n}=await e(async()=>{let{OnboardingOrchestrator:e}=await import(`./onboarding-orchestrator-w98EfZg7.js`);return{OnboardingOrchestrator:e}},__vite__mapDeps([0,1,2,3])),r=null;return{get:()=>r||(r=new n({fs:t.fs,postSystemMessage:t.postSystemMessage,postDipReference:t.postDipReference,getProviderCatalogue:()=>s(t.providers),saveAccount:(e,n,r,i,a)=>t.providers.addAccount(e,n,r,i,a),setSelectedModel:e=>t.providers.setSelectedModelId(e),resolveModelLabel:(e,n)=>{try{return t.providers.getProviderModels(e).find(e=>e.id===n)?.name??null}catch{return null}},broadcastToDip:e=>t.broadcastToDip(e),fireFinalLick:e=>t.onFireFinalLick(e),onAccountsChanged:t.onAccountsChanged?()=>t.onAccountsChanged?.():void 0,launchOAuth:async(e,n)=>await l(e,n??null,t)}),r),peek:()=>r,buildCatalogue:()=>s(t.providers)}}async function l(t,n,r){try{let i=r.providers.getProviderConfig(t);if(!i.isOAuth||!i.onOAuthLogin&&!i.onOAuthLoginIntercepted)return{ok:!1,message:`Provider does not support OAuth.`};if(i.requiresBaseUrl&&n&&r.providers.addAccount(t,``,n),i.onOAuthLoginIntercepted){let{createInterceptingOAuthLauncherForCurrentRuntime:t}=await e(async()=>{let{createInterceptingOAuthLauncherForCurrentRuntime:e}=await import(`./oauth-service-YGl8VFS-.js`);return{createInterceptingOAuthLauncherForCurrentRuntime:e}},__vite__mapDeps([4,5,6,3,7,8,9])),n=await t();if(!n)return{ok:!1,message:`Intercepted OAuth requires the controlled-browser transport — open SLICC in standalone or extension mode.`};await i.onOAuthLoginIntercepted(n,()=>void 0,{presentDeviceCode:r.deviceCode.createSprinkleDeviceCodePrompter({broadcastToDip:e=>r.broadcastToDip(e)})})}else if(i.onOAuthLogin){let{createOAuthLauncher:t}=await e(async()=>{let{createOAuthLauncher:e}=await import(`./oauth-service-YGl8VFS-.js`);return{createOAuthLauncher:e}},__vite__mapDeps([4,5,6,3,7,8,9])),n=t();await i.onOAuthLogin(n,()=>void 0)}return{ok:!0,model:o(t,i,r.providers.getProviderModels,r.providers.isModelHiddenFromPicker)}}catch(e){return{ok:!1,message:e instanceof Error?e.message:`OAuth login failed.`}}}var u=new Set([`first-run`,`onboarding-complete`,`onboarding-complete-with-provider`,`shortcut-migrate`]),d=`slicc:welcome-flow-fired`;function f(){try{let e=typeof localStorage<`u`?localStorage.getItem(d):null;if(!e)return new Set;let t=JSON.parse(e);return new Set(Array.isArray(t)?t.map(String):[])}catch{return new Set}}function p(e){try{if(typeof localStorage>`u`)return;localStorage.setItem(d,JSON.stringify([...e]))}catch{}}function m(e,t,n,r,i){if(u.has(e)&&t.has(e)){i.debug(`Suppressing duplicate welcome lick (${r})`,{action:e});return}u.has(e)&&(t.add(e),p(t)),n()}var h=new Set([`first-run`,`onboarding-complete`,`connect-ready`,`connect-attempt`,`oauth-attempt`,`device-code-decision`,`shortcut-migrate`]);function g(e){let{firedWelcomeActions:t,getAccounts:n,getProviderConfig:r,resolveDeviceCodeDecision:i,getOnboardingOrchestrator:a,applyPendingMount:o,fastForward:s,onShortcutMigrate:c,contextLabel:l,vfs:d,log:f}=e;return e=>{if(e.type!==`sprinkle`)return!1;let m=e.sprinkleName===`welcome`||e.sprinkleName===`inline`?e.body?.action:void 0;if(m&&u.has(m)){if(t.has(m))return f.debug(`Suppressing duplicate welcome lick (${l})`,{action:m}),!0;t.add(m),p(t)}if(!m||!h.has(m))return!1;let g=e.body;return S(m,g,{getAccounts:n,getProviderConfig:r,resolveDeviceCodeDecision:i,getOnboardingOrchestrator:a,applyPendingMount:o,fastForward:s,onShortcutMigrate:c,vfs:d,log:f})}}function _(e,t){let n=e[t];return typeof n==`string`&&n?n:null}function v(e,t){let n=t.getOnboardingOrchestrator(),r=e?.data??{};return r.mountWorkspace&&t.applyPendingMount&&t.applyPendingMount().catch(e=>t.log.warn(`Failed to mount workspace from onboarding`,e)),n.handleOnboardingComplete(r).catch(e=>t.log.warn(`OnboardingOrchestrator failed`,e)),!0}function y(e,t){let n=e?.data;return n&&t.getOnboardingOrchestrator().handleConnectAttempt({provider:String(n.provider??``),apiKey:String(n.apiKey??``),baseUrl:_(n,`baseUrl`),deployment:_(n,`deployment`),apiVersion:_(n,`apiVersion`),model:n.model==null?null:String(n.model)}).catch(e=>t.log.warn(`handleConnectAttempt failed`,e)),!0}function b(e,t){let n=e?.data;return n&&t.getOnboardingOrchestrator().handleOAuthAttempt({provider:String(n.provider??``),baseUrl:_(n,`baseUrl`)}).catch(e=>t.log.warn(`handleOAuthAttempt failed`,e)),!0}var x={"device-code-decision":(e,t)=>{let n=e?.data?.decision;return t.resolveDeviceCodeDecision(n===`cancel`?`cancel`:`continue`),!0},"first-run":(e,t)=>(t.getOnboardingOrchestrator().handleFirstRun(),!0),"onboarding-complete":v,"connect-ready":(e,t)=>C(t),"connect-attempt":y,"oauth-attempt":b,"shortcut-migrate":(e,t)=>(t.onShortcutMigrate(),!0)};function S(e,t,n){return x[e]?.(t,n)??!1}function C(e){let t=e.getAccounts();if(t.length===0)return e.getOnboardingOrchestrator().handleConnectReady(),!0;let n=t[0];return e.fastForward.broadcastAlreadyConnected(n.providerId),w(e.vfs,n.providerId,e.fastForward.fire).catch(t=>e.log.warn(`Failed to fire fast-forward final lick`,t)),!0}async function w(t,n,r){let{hasOnboardingFinalLickInHistory:i}=await e(async()=>{let{hasOnboardingFinalLickInHistory:e}=await import(`./welcome-detection-Cr8mNEkt.js`).then(e=>e.r);return{hasOnboardingFinalLickInHistory:e}},__vite__mapDeps([2,3,1]));if(await i())return;let a=t?await T(t):{},{getSelectedModelId:o,getProviderConfig:s,getProviderModels:c}=await e(async()=>{let{getSelectedModelId:e,getProviderConfig:t,getProviderModels:n}=await import(`./main-DYwi5YqO.js`).then(e=>e.t);return{getSelectedModelId:e,getProviderConfig:t,getProviderModels:n}},__vite__mapDeps([10,3,11,5,12,13,14,15,16,17,1,18,6,7,19,20,8,21,22,23,24])),l=(()=>{try{return o()||null}catch{return null}})(),u=(()=>{if(!l)return null;try{return c(n).find(e=>e.id===l)?.name??l}catch{return l}})(),d=null;try{d=s(n).name??null}catch{}r({action:`onboarding-complete-with-provider`,data:{profile:a,provider:n,providerName:d,model:l,modelLabel:u,validation:`preexisting`}})}async function T(e){try{let t=await e.readDir(`/home`),n=null;for(let r of t){if(r.type!==`directory`)continue;let t=`/home/${r.name}/.welcome.json`;try{let r=(await e.stat(t)).mtime??0;if(n&&r<=n.mtime)continue;let i=await e.readFile(t,{encoding:`utf-8`}),a=JSON.parse(typeof i==`string`?i:new TextDecoder().decode(i));a&&typeof a==`object`&&(n={profile:a,mtime:r})}catch{}}return n?.profile??{}}catch{return{}}}function E(e){let{writer:t}=e;return{readFile:t.readFile.bind(t),writeFile:t.writeFile.bind(t),readDir:t.readDir.bind(t),stat:t.stat.bind(t),mkdir:t.mkdir.bind(t),exists:async e=>{try{return await t.stat(e),!0}catch{return!1}}}}async function D(t){let{client:n,getController:o,openVfs:s,log:l}=t,u=await e(()=>import(`./main-DYwi5YqO.js`).then(e=>e.t),__vite__mapDeps([10,3,11,5,12,13,14,15,16,17,1,18,6,7,19,20,8,21,22,23,24])),{createSprinkleDeviceCodePrompter:d,resolveDeviceCodeDecision:h}=await e(async()=>{let{createSprinkleDeviceCodePrompter:e,resolveDeviceCodeDecision:t}=await import(`./device-code-bridge-CbHxw098.js`);return{createSprinkleDeviceCodePrompter:e,resolveDeviceCodeDecision:t}},[]),_=E(await s()),v=f(),y=e=>{let t=o();t?t.addAssistantMessage(e):l.warn(`WC onboarding: no controller to post welcome line`)},b=await c({fs:_,log:l,providers:u,deviceCode:{createSprinkleDeviceCodePrompter:d},postSystemMessage:y,postDipReference:y,broadcastToDip:e=>r(e),onFireFinalLick:e=>{a(n),m(String(e?.action??``),v,()=>n.sendSprinkleLick(`welcome`,e),`orchestrator-wc`,l)},onAccountsChanged:()=>{try{typeof window<`u`&&window.dispatchEvent(new CustomEvent(`slicc:accounts-changed`))}catch(e){l.warn(`Failed to dispatch slicc:accounts-changed`,e)}}}),x=g({firedWelcomeActions:v,getAccounts:u.getAccounts,getProviderConfig:u.getProviderConfig,resolveDeviceCodeDecision:h,getOnboardingOrchestrator:()=>b.get(),fastForward:{fire:e=>{m(String(e.action??``),v,()=>n.sendSprinkleLick(`welcome`,e),`fast-forward-wc`,l)},broadcastAlreadyConnected:e=>{let t=(()=>{try{return u.getProviderConfig(e)?.name??null}catch{return null}})();r({type:`slicc-already-connected`,provider:e,note:t?`Already connected to ${t}.`:`Already connected.`})}},onShortcutMigrate:()=>{_.writeFile(`/shared/.welcomed`,`1`).catch(e=>l.warn(`Failed to persist welcome completion marker`,e))},contextLabel:`wc`,vfs:_,log:l});return i({vfs:_,storage:window.localStorage,firedWelcomeActions:v,persistFiredWelcomeActions:p,getOrchestrator:()=>b.get(),log:l}),{interceptWelcomeLick:x}}export{D as wireWcOnboarding};
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/onboarding-orchestrator-w98EfZg7.js","assets/logger-DDBAeTLF.js","assets/welcome-detection-Cr8mNEkt.js","assets/chunk-aKtaBQYM.js","assets/oauth-service-YGl8VFS-.js","assets/preload-helper-zJ_50EbN.js","assets/proxied-fetch-CKDBmEMl.js","assets/fetch-body-D2PwksUW.js","assets/panel-rpc-DqT2FG7c.js","assets/wc-permissions-registry-CR1rTd2H.js","assets/main-Bpuh8nYF.js","assets/modulepreload-polyfill-Dezn_h7o.js","assets/account-store-DFegnWPt.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-DlEHAkLd.js","assets/secret-topology-bwXIzzAK.js","assets/secrets-bridge-client-BSipj-5f.js","assets/bedrock-camp-9-QEmC9Z.js","assets/transform-messages-DzB_lMo-.js","assets/tool-ui-DfXu6quJ.js","assets/clipboard-DgFtRQbq.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{t as e}from"./preload-helper-zJ_50EbN.js";import{v as t}from"./main-Bpuh8nYF.js";import{t as n}from"./welcome-detection-Cr8mNEkt.js";import{l as r}from"./wc-live-Chbuwmqb.js";function i(e){let{vfs:r,storage:i,firedWelcomeActions:a,persistFiredWelcomeActions:o,getOrchestrator:s,log:c}=e;t(i)||n(r).then(e=>{if(e.isFirstRun){if(a.has(`first-run`)){c.debug(`Suppressing welcome re-fire: first-run already in dedup ledger`);return}a.add(`first-run`),o(a),s().handleFirstRun()}}).catch(e=>c.warn(`Welcome detection failed`,e))}function a(e){for(let t of[`slicc_accounts`,`selected-model`]){let n=localStorage.getItem(t);n!=null&&e.sendRaw({type:`local-storage-set`,key:t,value:n})}}function o(e,t,n,r){let i=n(e).filter(e=>!r(e.id)),a=t.defaultModelId?i.find(e=>e.id===t.defaultModelId):void 0,o=t.defaultModelId?i.find(e=>e.id.toLowerCase().includes(t.defaultModelId.toLowerCase())):void 0,s=a??o??i[0];return s?`${e}:${s.id}`:void 0}function s(e){let t=e.getAvailableProviders().filter(t=>e.providerOffersLlmModels(t)),n=t.map(t=>{let n=e.getProviderConfig(t);return{id:n.id,name:n.name??n.id,description:n.description,requiresApiKey:n.requiresApiKey??!0,requiresBaseUrl:n.requiresBaseUrl??!1,requiresDeployment:!!n.requiresDeployment,requiresApiVersion:!!n.requiresApiVersion,apiKeyPlaceholder:n.apiKeyPlaceholder??void 0,apiKeyEnvVar:n.apiKeyEnvVar??void 0,defaultBaseUrl:n.baseUrlPlaceholder??void 0,baseUrlDescription:n.baseUrlDescription??void 0,deploymentPlaceholder:n.deploymentPlaceholder??void 0,deploymentDescription:n.deploymentDescription??void 0,apiVersionDefault:n.apiVersionDefault??void 0,apiVersionDescription:n.apiVersionDescription??void 0,isOAuth:!!n.isOAuth}}).sort((e,t)=>e.name.localeCompare(t.name,void 0,{sensitivity:`base`})),r={};for(let n of t)try{r[n]=e.getProviderModels(n).filter(t=>!e.isModelHiddenFromPicker(t.id)).map(e=>({id:e.id,name:e.name}))}catch{r[n]=[]}return{providers:n,models:r}}async function c(t){let{OnboardingOrchestrator:n}=await e(async()=>{let{OnboardingOrchestrator:e}=await import(`./onboarding-orchestrator-w98EfZg7.js`);return{OnboardingOrchestrator:e}},__vite__mapDeps([0,1,2,3])),r=null;return{get:()=>r||(r=new n({fs:t.fs,postSystemMessage:t.postSystemMessage,postDipReference:t.postDipReference,getProviderCatalogue:()=>s(t.providers),saveAccount:(e,n,r,i,a)=>t.providers.addAccount(e,n,r,i,a),setSelectedModel:e=>t.providers.setSelectedModelId(e),resolveModelLabel:(e,n)=>{try{return t.providers.getProviderModels(e).find(e=>e.id===n)?.name??null}catch{return null}},broadcastToDip:e=>t.broadcastToDip(e),fireFinalLick:e=>t.onFireFinalLick(e),onAccountsChanged:t.onAccountsChanged?()=>t.onAccountsChanged?.():void 0,launchOAuth:async(e,n)=>await l(e,n??null,t)}),r),peek:()=>r,buildCatalogue:()=>s(t.providers)}}async function l(t,n,r){try{let i=r.providers.getProviderConfig(t);if(!i.isOAuth||!i.onOAuthLogin&&!i.onOAuthLoginIntercepted)return{ok:!1,message:`Provider does not support OAuth.`};if(i.requiresBaseUrl&&n&&r.providers.addAccount(t,``,n),i.onOAuthLoginIntercepted){let{createInterceptingOAuthLauncherForCurrentRuntime:t}=await e(async()=>{let{createInterceptingOAuthLauncherForCurrentRuntime:e}=await import(`./oauth-service-YGl8VFS-.js`);return{createInterceptingOAuthLauncherForCurrentRuntime:e}},__vite__mapDeps([4,5,6,3,7,8,9])),n=await t();if(!n)return{ok:!1,message:`Intercepted OAuth requires the controlled-browser transport — open SLICC in standalone or extension mode.`};await i.onOAuthLoginIntercepted(n,()=>void 0,{presentDeviceCode:r.deviceCode.createSprinkleDeviceCodePrompter({broadcastToDip:e=>r.broadcastToDip(e)})})}else if(i.onOAuthLogin){let{createOAuthLauncher:t}=await e(async()=>{let{createOAuthLauncher:e}=await import(`./oauth-service-YGl8VFS-.js`);return{createOAuthLauncher:e}},__vite__mapDeps([4,5,6,3,7,8,9])),n=t();await i.onOAuthLogin(n,()=>void 0)}return{ok:!0,model:o(t,i,r.providers.getProviderModels,r.providers.isModelHiddenFromPicker)}}catch(e){return{ok:!1,message:e instanceof Error?e.message:`OAuth login failed.`}}}var u=new Set([`first-run`,`onboarding-complete`,`onboarding-complete-with-provider`,`shortcut-migrate`]),d=`slicc:welcome-flow-fired`;function f(){try{let e=typeof localStorage<`u`?localStorage.getItem(d):null;if(!e)return new Set;let t=JSON.parse(e);return new Set(Array.isArray(t)?t.map(String):[])}catch{return new Set}}function p(e){try{if(typeof localStorage>`u`)return;localStorage.setItem(d,JSON.stringify([...e]))}catch{}}function m(e,t,n,r,i){if(u.has(e)&&t.has(e)){i.debug(`Suppressing duplicate welcome lick (${r})`,{action:e});return}u.has(e)&&(t.add(e),p(t)),n()}var h=new Set([`first-run`,`onboarding-complete`,`connect-ready`,`connect-attempt`,`oauth-attempt`,`device-code-decision`,`shortcut-migrate`]);function g(e){let{firedWelcomeActions:t,getAccounts:n,getProviderConfig:r,resolveDeviceCodeDecision:i,getOnboardingOrchestrator:a,applyPendingMount:o,fastForward:s,onShortcutMigrate:c,contextLabel:l,vfs:d,log:f}=e;return e=>{if(e.type!==`sprinkle`)return!1;let m=e.sprinkleName===`welcome`||e.sprinkleName===`inline`?e.body?.action:void 0;if(m&&u.has(m)){if(t.has(m))return f.debug(`Suppressing duplicate welcome lick (${l})`,{action:m}),!0;t.add(m),p(t)}if(!m||!h.has(m))return!1;let g=e.body;return S(m,g,{getAccounts:n,getProviderConfig:r,resolveDeviceCodeDecision:i,getOnboardingOrchestrator:a,applyPendingMount:o,fastForward:s,onShortcutMigrate:c,vfs:d,log:f})}}function _(e,t){let n=e[t];return typeof n==`string`&&n?n:null}function v(e,t){let n=t.getOnboardingOrchestrator(),r=e?.data??{};return r.mountWorkspace&&t.applyPendingMount&&t.applyPendingMount().catch(e=>t.log.warn(`Failed to mount workspace from onboarding`,e)),n.handleOnboardingComplete(r).catch(e=>t.log.warn(`OnboardingOrchestrator failed`,e)),!0}function y(e,t){let n=e?.data;return n&&t.getOnboardingOrchestrator().handleConnectAttempt({provider:String(n.provider??``),apiKey:String(n.apiKey??``),baseUrl:_(n,`baseUrl`),deployment:_(n,`deployment`),apiVersion:_(n,`apiVersion`),model:n.model==null?null:String(n.model)}).catch(e=>t.log.warn(`handleConnectAttempt failed`,e)),!0}function b(e,t){let n=e?.data;return n&&t.getOnboardingOrchestrator().handleOAuthAttempt({provider:String(n.provider??``),baseUrl:_(n,`baseUrl`)}).catch(e=>t.log.warn(`handleOAuthAttempt failed`,e)),!0}var x={"device-code-decision":(e,t)=>{let n=e?.data?.decision;return t.resolveDeviceCodeDecision(n===`cancel`?`cancel`:`continue`),!0},"first-run":(e,t)=>(t.getOnboardingOrchestrator().handleFirstRun(),!0),"onboarding-complete":v,"connect-ready":(e,t)=>C(t),"connect-attempt":y,"oauth-attempt":b,"shortcut-migrate":(e,t)=>(t.onShortcutMigrate(),!0)};function S(e,t,n){return x[e]?.(t,n)??!1}function C(e){let t=e.getAccounts();if(t.length===0)return e.getOnboardingOrchestrator().handleConnectReady(),!0;let n=t[0];return e.fastForward.broadcastAlreadyConnected(n.providerId),w(e.vfs,n.providerId,e.fastForward.fire).catch(t=>e.log.warn(`Failed to fire fast-forward final lick`,t)),!0}async function w(t,n,r){let{hasOnboardingFinalLickInHistory:i}=await e(async()=>{let{hasOnboardingFinalLickInHistory:e}=await import(`./welcome-detection-Cr8mNEkt.js`).then(e=>e.r);return{hasOnboardingFinalLickInHistory:e}},__vite__mapDeps([2,3,1]));if(await i())return;let a=t?await T(t):{},{getSelectedModelId:o,getProviderConfig:s,getProviderModels:c}=await e(async()=>{let{getSelectedModelId:e,getProviderConfig:t,getProviderModels:n}=await import(`./main-Bpuh8nYF.js`).then(e=>e.t);return{getSelectedModelId:e,getProviderConfig:t,getProviderModels:n}},__vite__mapDeps([10,3,11,5,12,13,14,15,16,17,1,18,6,7,19,20,8,21,22,23,24])),l=(()=>{try{return o()||null}catch{return null}})(),u=(()=>{if(!l)return null;try{return c(n).find(e=>e.id===l)?.name??l}catch{return l}})(),d=null;try{d=s(n).name??null}catch{}r({action:`onboarding-complete-with-provider`,data:{profile:a,provider:n,providerName:d,model:l,modelLabel:u,validation:`preexisting`}})}async function T(e){try{let t=await e.readDir(`/home`),n=null;for(let r of t){if(r.type!==`directory`)continue;let t=`/home/${r.name}/.welcome.json`;try{let r=(await e.stat(t)).mtime??0;if(n&&r<=n.mtime)continue;let i=await e.readFile(t,{encoding:`utf-8`}),a=JSON.parse(typeof i==`string`?i:new TextDecoder().decode(i));a&&typeof a==`object`&&(n={profile:a,mtime:r})}catch{}}return n?.profile??{}}catch{return{}}}function E(e){let{writer:t}=e;return{readFile:t.readFile.bind(t),writeFile:t.writeFile.bind(t),readDir:t.readDir.bind(t),stat:t.stat.bind(t),mkdir:t.mkdir.bind(t),exists:async e=>{try{return await t.stat(e),!0}catch{return!1}}}}async function D(t){let{client:n,getController:o,openVfs:s,log:l}=t,u=await e(()=>import(`./main-Bpuh8nYF.js`).then(e=>e.t),__vite__mapDeps([10,3,11,5,12,13,14,15,16,17,1,18,6,7,19,20,8,21,22,23,24])),{createSprinkleDeviceCodePrompter:d,resolveDeviceCodeDecision:h}=await e(async()=>{let{createSprinkleDeviceCodePrompter:e,resolveDeviceCodeDecision:t}=await import(`./device-code-bridge-CbHxw098.js`);return{createSprinkleDeviceCodePrompter:e,resolveDeviceCodeDecision:t}},[]),_=E(await s()),v=f(),y=e=>{let t=o();t?t.addAssistantMessage(e):l.warn(`WC onboarding: no controller to post welcome line`)},b=await c({fs:_,log:l,providers:u,deviceCode:{createSprinkleDeviceCodePrompter:d},postSystemMessage:y,postDipReference:y,broadcastToDip:e=>r(e),onFireFinalLick:e=>{a(n),m(String(e?.action??``),v,()=>n.sendSprinkleLick(`welcome`,e),`orchestrator-wc`,l)},onAccountsChanged:()=>{try{typeof window<`u`&&window.dispatchEvent(new CustomEvent(`slicc:accounts-changed`))}catch(e){l.warn(`Failed to dispatch slicc:accounts-changed`,e)}}}),x=g({firedWelcomeActions:v,getAccounts:u.getAccounts,getProviderConfig:u.getProviderConfig,resolveDeviceCodeDecision:h,getOnboardingOrchestrator:()=>b.get(),fastForward:{fire:e=>{m(String(e.action??``),v,()=>n.sendSprinkleLick(`welcome`,e),`fast-forward-wc`,l)},broadcastAlreadyConnected:e=>{let t=(()=>{try{return u.getProviderConfig(e)?.name??null}catch{return null}})();r({type:`slicc-already-connected`,provider:e,note:t?`Already connected to ${t}.`:`Already connected.`})}},onShortcutMigrate:()=>{_.writeFile(`/shared/.welcomed`,`1`).catch(e=>l.warn(`Failed to persist welcome completion marker`,e))},contextLabel:`wc`,vfs:_,log:l});return i({vfs:_,storage:window.localStorage,firedWelcomeActions:v,persistFiredWelcomeActions:p,getOrchestrator:()=>b.get(),log:l}),{interceptWelcomeLick:x}}export{D as wireWcOnboarding};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/quick-llm-
|
|
2
|
-
import{t as e}from"./preload-helper-zJ_50EbN.js";import{
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/quick-llm-BtUslSmP.js","assets/chunk-aKtaBQYM.js","assets/account-store-DFegnWPt.js","assets/preload-helper-zJ_50EbN.js","assets/dist-BmWy99kl.js","assets/event-stream-BJI_nGaK.js","assets/json-parse-BUunmmNl.js","assets/__vite-browser-external-C7iut881.js","assets/context-compaction-CFWyOzX1.js","assets/logger-DDBAeTLF.js","assets/src-DlEHAkLd.js","assets/proxied-fetch-CKDBmEMl.js","assets/fetch-body-D2PwksUW.js","assets/secret-topology-bwXIzzAK.js","assets/secrets-bridge-client-BSipj-5f.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/main-Bpuh8nYF.js","assets/modulepreload-polyfill-Dezn_h7o.js","assets/clipboard-DgFtRQbq.js","assets/llm-session-id-DVmZ9C2t.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{t as e}from"./preload-helper-zJ_50EbN.js";import{b as t}from"./wc-shell-DjTIqVcb.js";var n=400,r=800,i=`You suggest the user's next prompt in a coding-agent chat. Based on the recent conversation, output ONE concrete follow-up the user might type next. Reply with just the prompt text — no quotes, no preamble, no list. Max 80 characters. If nothing useful comes to mind, reply exactly: What shall we build?`;function a(e,t){return e.length>t?`${e.slice(0,t)}…`:e}function o(e){let i=e.filter(e=>!e.isStreaming&&!e.queued&&e.source!==`lick`),o=[...i].reverse().find(e=>e.role===`assistant`),s=i.filter(e=>e.role===`user`).slice(-3);return!o||s.length===0?null:[...s.map(e=>`[user]: ${a(t(e.content),n)}`),`[assistant]: ${a(o.content,r)}`].join(`
|
|
3
3
|
|
|
4
|
-
`)}async function s(t){if(t.currentValue.length>0)return;let n=o(t.messages);if(!n){t.setPlaceholder(t.defaultPlaceholder);return}let r=await(t.quickLabelFn??(await e(async()=>{let{quickLabel:e}=await import(`./quick-llm-
|
|
4
|
+
`)}async function s(t){if(t.currentValue.length>0)return;let n=o(t.messages);if(!n){t.setPlaceholder(t.defaultPlaceholder);return}let r=await(t.quickLabelFn??(await e(async()=>{let{quickLabel:e}=await import(`./quick-llm-BtUslSmP.js`).then(e=>e.n);return{quickLabel:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23]))).quickLabel)({system:i,prompt:`Recent conversation:\n${n}`,maxTokens:40,signal:t.signal});t.signal?.aborted||t.currentValue.length>0||t.setPlaceholder(r&&r.length>0?r:t.defaultPlaceholder)}function c(e,t,n){t===n?(e.removeAttribute(`suggestion`),e.setAttribute(`placeholder`,t)):e.setAttribute(`suggestion`,t)}function l(e){let t=null;return()=>{e.inputCard.hasAttribute(`disabled`)||(t?.abort(),t=new AbortController,s({messages:e.getMessages(),currentValue:e.inputCard.value??``,setPlaceholder:t=>c(e.inputCard,t,e.defaultPlaceholder),defaultPlaceholder:e.defaultPlaceholder,signal:t.signal}).catch(()=>void 0))}}export{l as createPlaceholderRefresher};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/oauth-service-YGl8VFS-.js","assets/preload-helper-zJ_50EbN.js","assets/proxied-fetch-CKDBmEMl.js","assets/chunk-aKtaBQYM.js","assets/fetch-body-D2PwksUW.js","assets/panel-rpc-DqT2FG7c.js","assets/wc-permissions-registry-CR1rTd2H.js","assets/main-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/oauth-service-YGl8VFS-.js","assets/preload-helper-zJ_50EbN.js","assets/proxied-fetch-CKDBmEMl.js","assets/chunk-aKtaBQYM.js","assets/fetch-body-D2PwksUW.js","assets/panel-rpc-DqT2FG7c.js","assets/wc-permissions-registry-CR1rTd2H.js","assets/main-Bpuh8nYF.js","assets/modulepreload-polyfill-Dezn_h7o.js","assets/account-store-DFegnWPt.js","assets/dist-BmWy99kl.js","assets/event-stream-BJI_nGaK.js","assets/json-parse-BUunmmNl.js","assets/__vite-browser-external-C7iut881.js","assets/context-compaction-CFWyOzX1.js","assets/logger-DDBAeTLF.js","assets/src-DlEHAkLd.js","assets/secret-topology-bwXIzzAK.js","assets/secrets-bridge-client-BSipj-5f.js","assets/bedrock-camp-9-QEmC9Z.js","assets/transform-messages-DzB_lMo-.js","assets/tool-ui-DfXu6quJ.js","assets/clipboard-DgFtRQbq.js"])))=>i.map(i=>d[i]);
|
|
2
2
|
import{t as e}from"./preload-helper-zJ_50EbN.js";var t=`slicc-wc-settings-style`,n=`
|
|
3
3
|
/* Width is owned by the dialog card (via ::part) — a min-width on the body
|
|
4
4
|
used to overflow the card's content box and clip the row borders. */
|
|
@@ -21,4 +21,4 @@ slicc-dialog.wcset-dialog::part(dialog){width:min(520px,92vw);}
|
|
|
21
21
|
.wcset__select:focus,.wcset__input:focus{border-color:var(--ctx);}
|
|
22
22
|
.wcset__status{font-size:11.5px;color:var(--txt-3);min-height:14px;}
|
|
23
23
|
.wcset__status[data-error]{color:#b91c1c;}
|
|
24
|
-
`;function r(e){if(e.getElementById(t))return;let r=e.createElement(`style`);r.id=t,r.textContent=n,e.head.appendChild(r)}function i(e,t){let n=document.createElement(`div`);return n.className=e,t!==void 0&&(n.textContent=t),n}function a(e,t,n){let r=document.createElement(`button`);return r.type=`button`,r.className=e,r.textContent=t,r.addEventListener(`click`,n),r}function o(e){return e?e.length<=8?`••••`:`${e.slice(0,4)}…${e.slice(-4)}`:``}function s(e){let t;return t=e.loggedOut?e.userName?`Logged out — was ${e.userName}`:`Logged out`:e.userName?e.userName:e.accessToken?`Logged in`:o(e.apiKey),e.baseUrl?`${t} • ${e.baseUrl}`:t}async function c(t,n,r){let{ps:i,log:a,setStatus:o,renderList:s}=r,c=i.getProviderConfig(t),l=i.getAccounts().some(e=>e.providerId===t);if(c.requiresBaseUrl){if(!n.trim()&&!i.getBaseUrlForProvider(t)){o(`Base URL is required.`,!0);return}n.trim()&&i.addAccount(t,``,n.trim())}o(`Opening login window…`);let u=()=>{o(``),s()};try{if(c.onOAuthLoginIntercepted){let{createInterceptingOAuthLauncherForCurrentRuntime:t}=await e(async()=>{let{createInterceptingOAuthLauncherForCurrentRuntime:e}=await import(`./oauth-service-YGl8VFS-.js`);return{createInterceptingOAuthLauncherForCurrentRuntime:e}},__vite__mapDeps([0,1,2,3,4,5,6])),n=await t();if(!n)throw Error(`No controlled-browser CDP transport available — open SLICC in standalone mode or the Chrome extension.`);await c.onOAuthLoginIntercepted(n,u)}else if(c.onOAuthLogin){let{createOAuthLauncher:t}=await e(async()=>{let{createOAuthLauncher:e}=await import(`./oauth-service-YGl8VFS-.js`);return{createOAuthLauncher:e}},__vite__mapDeps([0,1,2,3,4,5,6]));await c.onOAuthLogin(t(),u)}else throw Error(`${c.name} does not support interactive login.`)}catch(e){l||await i.removeAccount(t).catch(()=>void 0),a.error(`WC settings OAuth login failed`,{providerId:t,err:e}),o(`Login failed: ${e instanceof Error?e.message:String(e)}`,!0)}}function l(e,t,n){let{ps:r,log:o,setStatus:l,renderList:u}=n,d=i(`wcset__row`),f=i(`wcset__info`);if(f.append(i(`wcset__name`,t.name),i(`wcset__detail`,s(e))),d.append(f),t.isOAuth){let t=e.loggedOut===!0;d.append(a(`wcset__btn`,t?`Log in`:`Log out`,()=>{t?c(e.providerId,``,n):r.logoutOAuthAccount(e.providerId).then(u).catch(t=>{o.error(`WC settings logout failed`,{providerId:e.providerId,err:t}),l(`Logout failed.`,!0)})}))}return d.append(a(`wcset__btn wcset__btn--danger`,`Remove`,()=>{r.removeAccount(e.providerId).then(u).catch(t=>{o.error(`WC settings remove failed`,{providerId:e.providerId,err:t}),l(`Remove failed.`,!0)})})),d}function u(e){let{ps:t,setStatus:n}=e,r=i(`wcset__add`);r.append(i(`wcset__label`,`Add account`));let o=document.createElement(`select`);o.className=`wcset__select`;let s=document.createElement(`option`);s.value=``,s.textContent=`Choose a provider…`,o.append(s);let l=new Set(t.getAccounts().map(e=>e.providerId)),u=t.getAvailableProviders().filter(e=>!l.has(e)&&t.providerOffersLlmModels(e)).sort((e,n)=>t.getProviderConfig(e).name.localeCompare(t.getProviderConfig(n).name));for(let e of u){let n=document.createElement(`option`);n.value=e,n.textContent=t.getProviderConfig(e).name,o.append(n)}r.append(o);let d=i(`wcset__controls`);return d.style.cssText=`display:flex;flex-direction:column;gap:8px;`,r.append(d),o.addEventListener(`change`,()=>{d.replaceChildren(),n(``);let r=o.value;if(!r)return;let i=t.getProviderConfig(r),s=document.createElement(`input`);if(s.className=`wcset__input`,s.placeholder
|
|
24
|
+
`;function r(e){if(e.getElementById(t))return;let r=e.createElement(`style`);r.id=t,r.textContent=n,e.head.appendChild(r)}function i(e,t){let n=document.createElement(`div`);return n.className=e,t!==void 0&&(n.textContent=t),n}function a(e,t,n){let r=document.createElement(`button`);return r.type=`button`,r.className=e,r.textContent=t,r.addEventListener(`click`,n),r}function o(e){return e?e.length<=8?`••••`:`${e.slice(0,4)}…${e.slice(-4)}`:``}function s(e){let t;return t=e.loggedOut?e.userName?`Logged out — was ${e.userName}`:`Logged out`:e.userName?e.userName:e.accessToken?`Logged in`:o(e.apiKey),e.baseUrl?`${t} • ${e.baseUrl}`:t}async function c(t,n,r){let{ps:i,log:a,setStatus:o,renderList:s}=r,c=i.getProviderConfig(t),l=i.getAccounts().some(e=>e.providerId===t);if(c.requiresBaseUrl){if(!n.trim()&&!i.getBaseUrlForProvider(t)){o(`Base URL is required.`,!0);return}n.trim()&&i.addAccount(t,``,n.trim())}o(`Opening login window…`);let u=()=>{o(``),s()};try{if(c.onOAuthLoginIntercepted){let{createInterceptingOAuthLauncherForCurrentRuntime:t}=await e(async()=>{let{createInterceptingOAuthLauncherForCurrentRuntime:e}=await import(`./oauth-service-YGl8VFS-.js`);return{createInterceptingOAuthLauncherForCurrentRuntime:e}},__vite__mapDeps([0,1,2,3,4,5,6])),n=await t();if(!n)throw Error(`No controlled-browser CDP transport available — open SLICC in standalone mode or the Chrome extension.`);await c.onOAuthLoginIntercepted(n,u)}else if(c.onOAuthLogin){let{createOAuthLauncher:t}=await e(async()=>{let{createOAuthLauncher:e}=await import(`./oauth-service-YGl8VFS-.js`);return{createOAuthLauncher:e}},__vite__mapDeps([0,1,2,3,4,5,6]));await c.onOAuthLogin(t(),u)}else throw Error(`${c.name} does not support interactive login.`)}catch(e){l||await i.removeAccount(t).catch(()=>void 0),a.error(`WC settings OAuth login failed`,{providerId:t,err:e}),o(`Login failed: ${e instanceof Error?e.message:String(e)}`,!0)}}function l(e,t,n){let{ps:r,log:o,setStatus:l,renderList:u}=n,d=i(`wcset__row`),f=i(`wcset__info`);if(f.append(i(`wcset__name`,t.name),i(`wcset__detail`,s(e))),d.append(f),t.isOAuth){let t=e.loggedOut===!0;d.append(a(`wcset__btn`,t?`Log in`:`Log out`,()=>{t?c(e.providerId,``,n):r.logoutOAuthAccount(e.providerId).then(u).catch(t=>{o.error(`WC settings logout failed`,{providerId:e.providerId,err:t}),l(`Logout failed.`,!0)})}))}return d.append(a(`wcset__btn wcset__btn--danger`,`Remove`,()=>{r.removeAccount(e.providerId).then(u).catch(t=>{o.error(`WC settings remove failed`,{providerId:e.providerId,err:t}),l(`Remove failed.`,!0)})})),d}function u(e){let{ps:t,setStatus:n}=e,r=i(`wcset__add`);r.append(i(`wcset__label`,`Add account`));let o=document.createElement(`select`);o.className=`wcset__select`;let s=document.createElement(`option`);s.value=``,s.textContent=`Choose a provider…`,o.append(s);let l=new Set(t.getAccounts().map(e=>e.providerId)),u=t.getAvailableProviders().filter(e=>!l.has(e)&&t.providerOffersLlmModels(e)).sort((e,n)=>t.getProviderConfig(e).name.localeCompare(t.getProviderConfig(n).name));for(let e of u){let n=document.createElement(`option`);n.value=e,n.textContent=t.getProviderConfig(e).name,o.append(n)}r.append(o);let d=i(`wcset__controls`);return d.style.cssText=`display:flex;flex-direction:column;gap:8px;`,r.append(d),o.addEventListener(`change`,()=>{d.replaceChildren(),n(``);let r=o.value;if(!r)return;let i=t.getProviderConfig(r),s=document.createElement(`input`);if(s.className=`wcset__input`,s.placeholder=i.baseUrlPlaceholder??`Base URL`,s.value=t.getBaseUrlForProvider(r)??``,i.requiresBaseUrl&&d.append(s),i.isOAuth){d.append(a(`wcset__btn wcset__btn--primary`,`Login with ${i.name}`,()=>{c(r,s.value,e)}));return}let l=document.createElement(`input`);l.className=`wcset__input`,l.placeholder=i.deploymentPlaceholder??`Model IDs (comma-separated)`,l.value=t.getDeploymentForProvider(r)??``,i.requiresDeployment&&d.append(l);let u=document.createElement(`input`);u.className=`wcset__input`,u.type=`password`,u.placeholder=i.apiKeyPlaceholder??`API key`,u.setAttribute(`data-testid`,`wcset-api-key`),(i.requiresApiKey||i.optionalApiKey)&&d.append(u),d.append(a(`wcset__btn wcset__btn--primary`,`Save`,()=>{let a=u.value.trim();if(i.requiresApiKey&&!a){n(`An API key is required.`,!0),u.focus();return}if(i.requiresBaseUrl&&!s.value.trim()){n(`Base URL is required.`,!0),s.focus();return}if(i.requiresDeployment&&!l.value.trim()){n(`Model IDs are required.`,!0),l.focus();return}t.addAccount(r,a,s.value.trim()||void 0,l.value.trim()||void 0),u.value=``,n(`${i.name} connected.`),e.renderList()}))}),r}async function d(t){let n=await e(()=>import(`./main-Bpuh8nYF.js`).then(e=>e.t),__vite__mapDeps([7,3,8,1,9,10,11,12,13,14,15,16,2,4,17,18,5,19,20,21,22]));r(document);let o=JSON.stringify(n.getAccounts());return new Promise(e=>{let r=document.createElement(`slicc-dialog`);r.classList.add(`wcset-dialog`),r.setAttribute(`heading`,`Accounts`);let s=i(`wcset`),c=i(`wcset__list`),d=i(`wcset__status`),f=(e,t=!1)=>{d.textContent=e,d.toggleAttribute(`data-error`,t)},p=o,m=()=>{let e=JSON.stringify(n.getAccounts());e!==p&&(p=e,window.dispatchEvent(new CustomEvent(`slicc:accounts-changed`)))},h=i(``),g={ps:n,log:t,setStatus:f,renderList:()=>{m(),c.replaceChildren();let e=n.getAccounts();if(e.length===0)c.append(i(`wcset__empty`,`No accounts configured.`));else for(let t of e)c.append(l(t,n.getProviderConfig(t.providerId),g));h.replaceChildren(u(g))}};g.renderList(),s.append(c,h,d),r.append(s);let _=a(`wcset__btn wcset__btn--primary`,`Done`,()=>{r.hide?.()});_.setAttribute(`slot`,`footer`),r.append(_),r.addEventListener(`slicc-dialog-close`,()=>{r.remove(),e(JSON.stringify(n.getAccounts())!==o)}),document.body.append(r),r.show?.()})}export{d as showWcSettings};
|