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.
Files changed (79) hide show
  1. package/dist/ui/assets/{account-store-B9L-iw3_.js → account-store-C6_gIZ9b.js} +2 -2
  2. package/dist/ui/assets/{account-store-J1i56LXB.js → account-store-DFegnWPt.js} +2 -2
  3. package/dist/ui/assets/{adobe-uU9WScyf.js → adobe-CCrNID9W.js} +1 -1
  4. package/dist/ui/assets/{adobe-BE4O6RpW.js → adobe-CyL6g4I7.js} +1 -1
  5. package/dist/ui/assets/{adobe-oauth-state-BSzOZOb6.js → adobe-oauth-state-BPiIC94C.js} +1 -1
  6. package/dist/ui/assets/{agent-message-to-chat-BDsWz4XM.js → agent-message-to-chat-BWe23vP6.js} +1 -1
  7. package/dist/ui/assets/{apps-D9vX8Iuh.js → apps-DgoHi_Jt.js} +1 -1
  8. package/dist/ui/assets/{azure-openai-BANs3KGr.js → azure-openai-B8RJsHT-.js} +1 -1
  9. package/dist/ui/assets/{azure-openai-D6toPyQ8.js → azure-openai-hJ0wnltF.js} +1 -1
  10. package/dist/ui/assets/{connect-surface-DAC3CNei.js → connect-surface-w5IyESwF.js} +1 -1
  11. package/dist/ui/assets/dip-BPGGcpgQ.js +1 -0
  12. package/dist/ui/assets/{dist-BWYQOlqM.js → dist-CC-3PhWb.js} +1 -1
  13. package/dist/ui/assets/{dist--TcGqpJG.js → dist-DVFuglk5.js} +1 -1
  14. package/dist/ui/assets/{ensure-speech-assets-B-pBwbKb.js → ensure-speech-assets-Cis-PX6Z.js} +1 -1
  15. package/dist/ui/assets/esp8266-CgUXgl1_.js +1 -0
  16. package/dist/ui/assets/{esptool-operations-CP9wpmtB.js → esptool-operations-9UQedhXq.js} +2 -2
  17. package/dist/ui/assets/{fs-BMm4juUO.js → fs-B8VqdCUY.js} +2 -2
  18. package/dist/ui/assets/{fs-CDxFmHhs.js → fs-RC1NWcFZ.js} +1 -1
  19. package/dist/ui/assets/{github-igAb2Tr3.js → github-BDhArZ5j.js} +1 -1
  20. package/dist/ui/assets/{github-Bv3awCy-.js → github-DL1eb7HW.js} +2 -2
  21. package/dist/ui/assets/{github-copilot-EhpEoXT_.js → github-copilot-B9SO52A1.js} +1 -1
  22. package/dist/ui/assets/{github-copilot-Bo6St-mj.js → github-copilot-C8u3akzN.js} +1 -1
  23. package/dist/ui/assets/{hear-CTBETRuZ.js → hear-C_Cy0mUe.js} +1 -1
  24. package/dist/ui/assets/{kernel-worker-DU2Lsjyz.js → kernel-worker-BOiHtoD5.js} +18 -18
  25. package/dist/ui/assets/{kokoro-engine-qxvtO16S.js → kokoro-engine-C39-3JHF.js} +1 -1
  26. package/dist/ui/assets/{lick-ws-bridge-D_Q0B4_w.js → lick-ws-bridge-Bix1ByUo.js} +1 -1
  27. package/dist/ui/assets/{lick-ws-bridge-CAy0-YSl.js → lick-ws-bridge-BkAmRj1Z.js} +1 -1
  28. package/dist/ui/assets/{local-llm-yvkTurpV.js → local-llm-BSI0PlfX.js} +1 -1
  29. package/dist/ui/assets/main-Bpuh8nYF.js +24 -0
  30. package/dist/ui/assets/{mount-BMTmsC-u.js → mount-Bax8wvuA.js} +1 -1
  31. package/dist/ui/assets/{mount-C0n7eObT.js → mount-N_JmQdl5.js} +2 -2
  32. package/dist/ui/assets/{new-session-BgzUQaQk.js → new-session-sPDR0jnx.js} +2 -2
  33. package/dist/ui/assets/{oauth-bootstrap-B35kl1hZ.js → oauth-bootstrap-Dm-vVRTU.js} +2 -2
  34. package/dist/ui/assets/{openai-codex-CNXAYokU.js → openai-codex-DUpVk0wP.js} +1 -1
  35. package/dist/ui/assets/{openai-codex-BziCxD0k.js → openai-codex-bYCB3ofj.js} +1 -1
  36. package/dist/ui/assets/{page-follower-tray-tXYeooU8.js → page-follower-tray-CgF4beVv.js} +1 -1
  37. package/dist/ui/assets/{panel-rpc-handlers-Cxg9OE7o.js → panel-rpc-handlers-DI4DAW21.js} +1 -1
  38. package/dist/ui/assets/{provider-CzdDndd-.js → provider-9p5HvPY9.js} +2 -2
  39. package/dist/ui/assets/{provider-DOAeQgJY.js → provider-NnBB2k3A.js} +1 -1
  40. package/dist/ui/assets/provider-store-access-5pcZED05.js +1 -0
  41. package/dist/ui/assets/provider-store-access-Bv09jBJf.js +1 -0
  42. package/dist/ui/assets/{providers-Kx_BEFqJ.js → providers-BYT33r_r.js} +1 -1
  43. package/dist/ui/assets/{quick-llm-BW-brmSb.js → quick-llm-BtUslSmP.js} +1 -1
  44. package/dist/ui/assets/session-freezer-Znp08p_F.js +1 -0
  45. package/dist/ui/assets/{speak-B8c3oh9Y.js → speak-CT1k5FTD.js} +1 -1
  46. package/dist/ui/assets/{sprinkle-manager-BpLedeCo.js → sprinkle-manager-j1ikTeY0.js} +1 -1
  47. package/dist/ui/assets/{store-Ccl5ODaE.js → store-ihd6OnKT.js} +1 -1
  48. package/dist/ui/assets/{sudo-D6_01n3k.js → sudo-D3T4jmgn.js} +1 -1
  49. package/dist/ui/assets/{transformers-env-D2tn9gLL.js → transformers-env-CoQS_92g.js} +1 -1
  50. package/dist/ui/assets/{tray-leader-DGFajpwM.js → tray-leader-CaTLZ0nn.js} +1 -1
  51. package/dist/ui/assets/{tray-leave-runtime-taK1Ebp7.js → tray-leave-runtime-BsLt7Kau.js} +1 -1
  52. package/dist/ui/assets/{upgrade-detection-DrfEt3Mi.js → upgrade-detection-qlGMMdg_.js} +1 -1
  53. package/dist/ui/assets/{wc-attach-DBF_z5mw.js → wc-attach-B6M5u9Mf.js} +2 -2
  54. package/dist/ui/assets/{wc-detached-Wt3lzK1R.js → wc-detached-CvvTnnwH.js} +1 -1
  55. package/dist/ui/assets/{wc-extension-DfX8q6Ih.js → wc-extension-CxcxNKVO.js} +2 -2
  56. package/dist/ui/assets/{wc-follower-BVeqP5KF.js → wc-follower-Pgc81YTH.js} +2 -2
  57. package/dist/ui/assets/wc-live-Chbuwmqb.js +253 -0
  58. package/dist/ui/assets/wc-nav-CkFqKz85.js +2 -0
  59. package/dist/ui/assets/{wc-onboarding-CEjOIdK5.js → wc-onboarding-BEbuwhSQ.js} +2 -2
  60. package/dist/ui/assets/{wc-placeholder-CHDb9Kuo.js → wc-placeholder-Gu8g7ydZ.js} +3 -3
  61. package/dist/ui/assets/{wc-settings-qlpR6Q6T.js → wc-settings-BteAfHGT.js} +2 -2
  62. package/dist/ui/assets/{wc-shell-DTsW2ra1.js → wc-shell-DjTIqVcb.js} +9 -9
  63. package/dist/ui/assets/{wc-sprinkles-D_fwWOq8.js → wc-sprinkles-DvkKhy2T.js} +2 -2
  64. package/dist/ui/assets/{wc-tray-2mdLomRm.js → wc-tray-BVb6lvIH.js} +2 -2
  65. package/dist/ui/assets/{whisper-engine-CvJzjL-a.js → whisper-engine-CyUutfK8.js} +1 -1
  66. package/dist/ui/assets/{xai-grok-BoTmSfDH.js → xai-grok-BvUbyyZg.js} +1 -1
  67. package/dist/ui/assets/{xai-grok-U2afiu3-.js → xai-grok-MczhRIwJ.js} +1 -1
  68. package/dist/ui/electron-overlay-entry.js +2 -2
  69. package/dist/ui/index.html +2 -2
  70. package/dist/ui/packages/webapp/index.html +2 -2
  71. package/package.json +1 -1
  72. package/dist/ui/assets/dip-3VX86RoF.js +0 -1
  73. package/dist/ui/assets/esp8266-DEulqnXg.js +0 -1
  74. package/dist/ui/assets/main-DYwi5YqO.js +0 -24
  75. package/dist/ui/assets/provider-store-access-02kN2Pzi.js +0 -1
  76. package/dist/ui/assets/provider-store-access-DOOb1KbA.js +0 -1
  77. package/dist/ui/assets/session-freezer-D6kbwY6i.js +0 -1
  78. package/dist/ui/assets/wc-live-DqgXrP0F.js +0 -253
  79. package/dist/ui/assets/wc-nav-6aYy7HCy.js +0 -2
@@ -1,253 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/mount-picker-popup-Hrvzr69c.js","assets/chunk-aKtaBQYM.js","assets/logger-DDBAeTLF.js","assets/picker-popup-CpulHQsi.js","assets/usb-picker-D_K0weAY.js","assets/serial-picker-B6s4NeaB.js","assets/hid-picker-DUJBI46p.js","assets/usb-device-registry-BP58Vi0S.js","assets/serial-port-registry-Bc4wlwED.js","assets/hid-device-registry-D2LsJCRr.js","assets/quick-llm-BW-brmSb.js","assets/account-store-J1i56LXB.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-DYwi5YqO.js","assets/modulepreload-polyfill-Dezn_h7o.js","assets/clipboard-DgFtRQbq.js","assets/llm-session-id-DVmZ9C2t.js","assets/new-session-BgzUQaQk.js","assets/session-store-CCH7W8KY.js","assets/wc-shell-DTsW2ra1.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-CEjOIdK5.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-CHDb9Kuo.js","assets/wc-attach-DBF_z5mw.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-D_fwWOq8.js","assets/wc-tray-2mdLomRm.js","assets/remote-cdp-transport-Cf0sDZ5N.js","assets/page-follower-tray-tXYeooU8.js","assets/sprinkle-renderer-GiRRbdBx.js","assets/tray-leader-DGFajpwM.js","assets/wc-nav-6aYy7HCy.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-J1i56LXB.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{_ as u,i as d,l as f,u as p}from"./main-DYwi5YqO.js";import{t as m}from"./wc-permissions-registry-CR1rTd2H.js";import{n as h,r as g}from"./hid-device-registry-D2LsJCRr.js";import{a as _,i as v}from"./serial-port-registry-Bc4wlwED.js";import{C as ee,D as te,E as ne,S as re,_ as ie,a as ae,g as oe,h as se,k as ce,l as le,m as ue,n as de,o as fe,s as pe,w as me,x as he,y as ge}from"./usb-operations-CkcrNzZw.js";import{i as _e,r as ve}from"./usb-device-registry-BP58Vi0S.js";import{r as ye}from"./tray-leader-DGFajpwM.js";import{_ as be,c as xe,d as y,h as Se,i as Ce,l as we,m as Te,n as Ee,o as De,p as Oe,r as ke,s as Ae,t as je,u as Me}from"./wc-shell-DTsW2ra1.js";import{t as Ne}from"./icons-BU6llBsN.js";import{n as Pe}from"./sprinkle-bridge-Du2dCM8G.js";import{i as Fe,n as b,t as Ie}from"./theme-BBwuyzvz.js";import{n as Le}from"./sprinkle-renderer-GiRRbdBx.js";var Re=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 ze(){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=ze();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 Be=[`/shared/sprinkles/`,`/workspace/skills/sprinkles/`,`/workspace/sprinkles/`],Ve=[`/shared/`,`/workspace/skills/sprinkles/`,`/workspace/sprinkles/`];function He(e){return Be.some(t=>e.startsWith(t))}function Ue(e){return typeof e!=`string`||!e.startsWith(`/`)||e.includes(`..`)?!1:Ve.some(t=>e.startsWith(t))}var w=new WeakSet,We=`,
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
- }`,Ge=`,
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
- }`,Ke=`,
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 qe(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?We:``}${e?Ge:``}${e?Ke:``}
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 Je=`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}`,Ye=`(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 Xe(e,t,n=!1){let r=Le(),i=Ie()?` class="theme-light"`:``,a=t||e.includes(`<slicc-editor`),o=t||e.includes(`<slicc-diff`),s=t?`<script>${Ye}<\/script>`:``;return`<!DOCTYPE html>
222
- <html${i}><head>
223
- <meta charset="utf-8">
224
- <style>${r}</style>
225
- <style>${Je}</style>
226
- <script>${qe(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 Ze(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 Qe(e){E=e}function D(e){return e.length===0?`''`:`'${e.replace(/'/g,`'\\''`)}'`}function $e(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 et(e,t){let n=await O($e(e,t));return{stdout:n.stdout||n.stderr,exitCode:n.exitCode}}async function tt(e,t){let n=await Pe(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 nt(e,t){try{e.postMessage({type:`dip-device-event`,channel:`hid:inputreport`,payload:t},`*`)}catch{}}async function rt(e,t){let n=k.get(e);if(n||(n=new Map,k.set(e,n)),n.has(t))return;let r=await re(g(),t,n=>{let r=n.bytes instanceof Uint8Array?n.bytes:new Uint8Array(n.bytes);nt(e,{handle:t,reportId:n.reportId,data:r})});n.set(t,r)}async function it(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 at(e){let t=k.get(e);if(t){for(let e of t.values())try{Promise.resolve(e()).catch(()=>{})}catch{}k.delete(e)}}function ot(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 st(e,t,n){let r=g();switch(t){case`list`:{let e=h();if(!e)throw Error(`WebHID is unavailable in this browser`);return oe(r,e)}case`request`:{let e=h();if(!e)throw Error(`WebHID is unavailable in this browser`);return ge(r,e,n[0]??[])}case`info`:return se(r,n[0]);case`open`:{let t=n[0];return await ie(r,t),await rt(e,t),{ok:!0}}case`close`:{let t=n[0];return await it(e,t),await ue(r,t),{ok:!0}}case`sendReport`:{let e=n[0],t=n[1],i=ot(n[2]);return await he(r,e,t,i.buffer.slice(i.byteOffset,i.byteOffset+i.byteLength)),{ok:!0}}default:throw Error(`hid: unknown op '${t}'`)}}async function ct(e,t){let n=_();switch(e){case`list`:{let e=v();if(!e)throw Error(`Web Serial is unavailable in this browser`);return ne(n,e)}case`request`:{let e=v();if(!e)throw Error(`Web Serial is unavailable in this browser`);return ce(n,e,t[0]??[])}case`info`:return me(n,t[0]);case`open`:{let e=t[0];return await te(n,e,t[1]??{baudRate:9600}),{ok:!0}}case`close`:return await ee(n,t[0]),{ok:!0};default:throw Error(`serial: unknown op '${e}'`)}}async function lt(e,t){let n=_e();switch(e){case`list`:{let e=ve();if(!e)throw Error(`WebUSB is unavailable in this browser`);return fe(n,e)}case`request`:{let e=ve();if(!e)throw Error(`WebUSB is unavailable in this browser`);return le(n,e,t[0]??[])}case`info`:return ae(n,t[0]);case`open`:return await pe(n,t[0]),{ok:!0};case`close`:return await de(n,t[0]),{ok:!0};default:throw Error(`usb: unknown op '${e}'`)}}async function ut(e,t,n,r){switch(t){case`hid`:return st(e,n,r);case`serial`:return ct(n,r);case`usb`:return lt(n,r);default:throw Error(`unknown device channel '${t}'`)}}async function dt(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 ut(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 A(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 et(typeof t.prompt==`string`?t.prompt:``,t.opts)}),!0;if(t.type===`dip-jsh`){try{n({type:`dip-jsh-response`,result:await tt(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=Xe(t,!1,r);if(Re)return xt(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`?pt(t.url):t.type===`dip-picker-action`?M(t,n):t.type===`dip-readfile`||t.type===`dip-exists`||t.type===`dip-stat`?ft(a.contentWindow,t):t.type===`dip-exec`||t.type===`dip-agent`||t.type===`dip-jsh`?A(a.contentWindow,t):t.type===`dip-device-op`&&dt(a.contentWindow,t))};return window.addEventListener(`message`,o),{dispose(){window.removeEventListener(`message`,o),Fe(a.contentWindow),a.contentWindow&&(T.delete(a.contentWindow),w.delete(a.contentWindow),at(a.contentWindow)),a.remove()}}}async function ft(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(!Ue(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 pt(e){if(!(typeof e!=`string`||!e)&&/^(https?:|mailto:)/i.test(e))try{window.open(e,`_blank`,`noopener,noreferrer`)}catch{}}function mt(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&&He(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 ht(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(Re){await gt(e.picker,e.action,r,t);return}switch(e.picker){case`directory`:await _t(e.action,t);return;case`usb-device`:await vt(e.action,r,t);return;case`serial-port`:await yt(e.action,r,t);return;case`hid-device`:await bt(e.action,r,t);return;default:t(e.action,e.data);return}}async function gt(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=m();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 _t(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 vt(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 yt(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 bt(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 xt(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`?pt(t.url):t.type===`dip-readfile`||t.type===`dip-exists`||t.type===`dip-stat`?ft(i.contentWindow,t):t.type===`dip-exec`||t.type===`dip-agent`||t.type===`dip-jsh`?A(i.contentWindow,t):t.type===`dip-device-op`?dt(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:Ie()},`*`)},{once:!0}),{dispose(){window.removeEventListener(`message`,a),Fe(i.contentWindow),i.contentWindow&&(T.delete(i.contentWindow),w.delete(i.contentWindow),at(i.contentWindow)),i.remove()}}}var F=c(`cone-memory-budget`),St=4e3,Ct=2e3,wt=1.25,Tt=`/workspace/CLAUDE.md`,Et=`/sessions/index.json`,Dt=4096,Ot=/^## Auto-extracted/m,kt=`Consolidate the auto-extracted memory bullets below into a single tighter set of durable memories.
234
-
235
- Rules:
236
- - Output ONLY a single \`## Auto-extracted (consolidated)\` heading followed by markdown bullets.
237
- - One fact per bullet. Drop duplicates and superseded facts. Keep the most recent / specific phrasing.
238
- - Preserve concrete identifiers (file paths, URLs, IDs, names) verbatim.
239
- - Be terse. Aim well under the original size.
240
- - Do NOT add preamble, commentary, or any heading other than the single consolidated one.`;function At(e){return Math.round(St+Ct*Math.log2((Number.isFinite(e)&&e>=0?e:0)+2))}function jt(e){let t=Ot.exec(e);if(!t)return{header:e,autoExtracted:``};let n=t.index;return{header:e.slice(0,n),autoExtracted:e.slice(n)}}async function Mt(e){try{let t=await e.readFile(Et,{encoding:`utf-8`}),n=typeof t==`string`?t:new TextDecoder().decode(t),r=JSON.parse(n);return Array.isArray(r)?r.length:0}catch{return 0}}async function Nt(t){let{header:n,autoExtracted:r}=jt(t.currentContent);if(!r.trim())return t.currentContent;let i=`You are a memory consolidation assistant. You are given a markdown file's "auto-extracted" section — a list of memory bullets accumulated across sessions of an AI coding assistant. Your job is to rewrite that section as a tighter, deduplicated set of durable memories that fits well within ${t.budget} characters.
241
-
242
- <auto-extracted>
243
- ${r}
244
- </auto-extracted>`,a={role:`user`,content:[{type:`text`,text:kt}],timestamp:Date.now()},o=await e(t.model,{systemPrompt:i,messages:[a]},{apiKey:t.apiKey,maxTokens:Dt,headers:t.headers,signal:t.signal});if(o.stopReason===`error`)throw Error(`Restructure call failed: ${o.errorMessage||`Unknown error`}`);let s=o.content.filter(e=>e.type===`text`).map(e=>e.text).join(`
245
- `).trim();if(!s)throw Error(`Restructure call returned empty content`);return`${n}${n.length===0||n.endsWith(`
246
- `)?``:`
247
- `}${s}\n`}async function Pt(e){if(!e.model||!e.apiKey)return{restructured:!1,reason:`no-llm`};let t=``;try{let n=await e.vfs.readFile(Tt,{encoding:`utf-8`});t=typeof n==`string`?n:new TextDecoder().decode(n)}catch{return{restructured:!1,reason:`missing-file`}}let n=await Mt(e.vfs),r=At(n),i=r*wt;if(t.length<=i)return{restructured:!1,reason:`under-threshold`};F.info(`Cone memory over threshold — restructuring`,{size:t.length,budget:r,threshold:i,sessionCount:n});try{let n=await Nt({currentContent:t,budget:r,model:e.model,apiKey:e.apiKey,headers:e.headers,signal:e.signal});return await e.vfs.writeFile(Tt,n),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`?be(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`),Ft=4,It=2048,Lt=40,R=`/sessions`,z=`/sessions/index.json`;async function Rt(e){let t=await Ut(e.sessionStore);if(!t||t.messages.length<Ft)return L.info(`Skipping freeze: session below threshold or missing`,{messageCount:t?.messages.length??0}),null;let n=Wt(t.messages),r=e.mode??`full`,i=r===`full`&&!!(e.apiKey&&e.model);await Bt(e,n,i);let a=await Vt(e,n,i)||Xt(t.messages);return await Ht(e,t,a,r,i?await zt(e,a):void 0)}async function zt(e,n){try{return B(await(e.pickIcon??(await t(async()=>{let{pickLucideIcon:e}=await import(`./quick-llm-BW-brmSb.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 B(e){if(e)return Ne(e)?e:void 0}async function Bt(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:It,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 $t(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 Vt(e,t,n){if(!n)return``;try{return Yt(await o({messages:t,instruction:a,model:e.model,apiKey:e.apiKey,maxTokens:Lt,headers:e.headers}))}catch(e){return L.warn(`Title generation call failed (using heuristic)`,{error:e instanceof Error?e.message:String(e)}),``}}async function Ht(e,t,n,r,i){let a=new Date().toISOString(),o=r===`quick`?`pending-${Qt()}.md`:`${a.replace(/[:.]/g,`-`)}-${Zt(n)}.md`,s={id:t.id,title:n,frozenAt:a,createdAt:t.createdAt,updatedAt:t.updatedAt,messageCount:t.messages.length,messages:t.messages},c=Jt(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,R),await e.vfs.writeFile(`${R}/${o}`,c),await en(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 Ut(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 Wt(e){return e.map(e=>({role:e.role,content:[{type:`text`,text:e.content}],timestamp:e.timestamp}))}var Gt=`<!-- slicc:session-data
249
- `,Kt=`
250
- -->`;function qt(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 Jt(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=`${Gt}${JSON.stringify(qt(e.messages)).replace(/-->/g,`-- >`)}${Kt}\n\n`,r=`# ${e.title}\n\n`;return t+n+r+I(e.messages)}function Yt(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 Xt(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 Zt(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``).slice(0,48)||`session`}function Qt(){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 $t(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 Pt({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 en(e,t){let n=[];try{let t=await e.readFile(z,{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(z,JSON.stringify(r,null,2))}async function tn(e){try{let t=await e.readFile(z,{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`${R}/${e.filename}`}async function nn(e,t,n){if(!t.pendingEnrichment)return null;let r=await an(e,t);if(r===null)return null;let i=on(t,r);if(i===null)return null;let a=await sn(t,i,n);if(a===null)return null;let o=await rn(n,a.newTitle);return await cn(e,t,a.bullets,n),await ln(e,t,r,a.newTitle,o)}async function rn(e,t){if(e.pickIcon)try{return await B(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 an(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 on(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):Wt(n)}async function sn(e,t,n){let r=``;try{r=await o({messages:t,instruction:s,model:n.model,apiKey:n.apiKey,maxTokens:It,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=Yt(await o({messages:t,instruction:a,model:n.model,apiKey:n.apiKey,maxTokens:Lt,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 cn(e,t,n,r){let i=n.trim();if(!(!i||i===`NONE`))try{await $t(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 ln(e,t,n,r,i){let a=H(t),o=un(n,r),s=`${t.frozenAt.replace(/[:.]/g,`-`)}-${Zt(r)}.md`,c=`${R}/${s}`;try{await V(e,R),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 fn(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 un(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 dn=Promise.resolve();async function fn(e,t,n){let r=async()=>{let r=[];try{let t=await e.readFile(z,{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(z,JSON.stringify(a,null,2))},i=dn.then(r,r);return dn=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:pn(t)}}function pn(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 mn=`__slicc_binary__`,hn=`b64`;function gn(e){if(!e||typeof e!=`object`)return!1;let t=e;return t[mn]===hn&&typeof t.data==`string`}function _n(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 vn(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{[mn]:hn,data:_n(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(gn(e))return vn(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 yn=c(`panel-transport`);function bn(e){return typeof e==`object`&&!!e&&`source`in e&&`payload`in e}function xn(){return{onMessage:e=>{let t=(t,n,r)=>(bn(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=>{yn.error(`failed to send to offscreen`,{error:e instanceof Error?e.message:String(e)})})}}}var K=c(`offscreen-client`),Sn=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??xn(),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;Cn(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&&Cn(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 Cn(e,t){ye({state:e.state,error:e.error,reconnectAttempts:e.reconnectAttempts,session:e.session?{...e.session}:null}),f({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 wn(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 Tn(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 En(e){let t=Tn(e);return{onMessage:e=>t.onMessage(e),send:(e,n)=>{t.send({source:`panel`,payload:e},n)}}}function Dn(e,t){let n=Tn(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 On(){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 kn(e){let{worker:t,realCdpTransport:n,callbacks:r}=e,i=e.readyTimeoutMs??3e4,a=e.localStorageSeed??{},o=new MessageChannel,s=new MessageChannel,c=new Sn(r,En(o.port1)),l=Dn(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 An(e){return kn({worker:e.workerUrl?new Worker(e.workerUrl,{type:`module`}):new Worker(new URL(`/assets/kernel-worker-DU2Lsjyz.js`,``+import.meta.url),{type:`module`}),realCdpTransport:e.realCdpTransport,callbacks:e.callbacks,readyTimeoutMs:e.readyTimeoutMs,localStorageSeed:e.localStorageSeed??On(),instanceId:e.instanceId,localApiBaseUrl:e.localApiBaseUrl,bridgeToken:e.bridgeToken,localLickWsUrl:e.localLickWsUrl,extensionDelegateId:e.extensionDelegateId})}var jn=`<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 Mn(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 Nn(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(jn));let a=()=>{r.style.color=`var(--green)`,setTimeout(()=>{r.style.color=`var(--txt-3)`},1500)};return r.addEventListener(`short-click`,()=>{(async()=>{await t(Mn(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 X(e){let t={id:e.id,text:e.content};return e.attachments?.length&&(t.attachments=e.attachments.length),t}var Pn=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.#U(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.#H(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.#K({id:Y(),role:`user`,content:e,timestamp:Date.now()})}getQueuedMessages(){return this.#h.map(X)}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.#K(t);this.#E()}#E(){this.#s?.(this.#h.map(X))}addAssistantMessage(e){this.#K({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.#H(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=De(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(Ae(e.timestamp)),r=t);let i=this.#G(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.#X();for(let e of this.#m)e.isStreaming||this.#r?.(e,this.#g.get(e.id)??[]);this.#A(),this.#Q()}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.#K(a),this.#t.sendMessage(i,a.id,a.attachments),this.#O();try{let e=n?.dictation?be(i):i;this.#d?.(e,a.id,a.attachments)}catch(e){console.error(`onLocalUserMessage hook threw`,e)}}#D(e){return Te(e,Se())}#O(){if(this.#o)try{let e=this.#o();if(!e)return;d(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.#q(a);return}this.#K({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.#q(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.#W(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??=Nn({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.#B(e.messageId,e.requestId,e.html);break;case`tool_ui_done`:this.#V(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.#K({id:e,role:`assistant`,content:``,timestamp:Date.now(),isStreaming:!0,toolCalls:[]})}#N(e,t){this.#W(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.#W(e);t&&(t.content+=this.#y,this.#y=``,this.#q(t))}#F(e){let t=this.#W(e);t&&(this.#y&&this.#_===e&&(t.content+=this.#y),this.#y=``,this.#b=!1,t.isStreaming=!1,this.#q(t))}#I(e,t,n){let r=this.#W(e);r&&(r.toolCalls=r.toolCalls??[],r.toolCalls.push({id:Y(),name:t,input:n}),this.#q(r))}#L(e,t,n,r){let i=this.#W(e),a=[...i?.toolCalls??[]].reverse().find(e=>e.name===t&&e.result===void 0);!i||!a||(a.result=n,a.isError=r,this.#q(i))}#R(e){let t=this.#W(e);t?.isStreaming&&(t.isStreaming=!1,this.#q(t)),this.#_=null,this.setProcessing(!1)}#z(e){this.setProcessing(!1),this.#K({id:Y(),role:`assistant`,content:e,timestamp:Date.now(),error:!0})}#B(e,t,n){this.#H(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)}#V(e){this.#H(e)}#H(e){let t=this.#w.get(e);if(t){this.#w.delete(e);try{t.instance.dispose()}catch{}t.container.remove()}}#U(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)}#W(e){return this.#m.find(t=>t.id===e)}#G(e){try{return xe(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]}}#K(e){this.#Y(),this.#m.push(e);let t=this.#G(e);this.#g.set(e.id,t),this.#e.append(...t),this.#X(),e.isStreaming||this.#r?.(e,t),e.role===`user`?this.#Q():this.#$()}#q(e){this.#Y(),this.#i?.(e.id);let t=this.#g.get(e.id)??[],n=this.#G(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.#X(),e.isStreaming||this.#r?.(e,n),this.#$()}#J(){return this.#e.inner??this.#e}#Y(){Me(this.#J(),this.#C)}#X(){we(this.#J(),{openClusterAnchors:this.#C,toolCallLookup:(e,t)=>this.#Z(e,t)})}#Z(e,t){return this.#m.find(t=>t.id===e)?.toolCalls?.find(e=>e.id===t)}#Q(){this.#e.scrollTop=this.#e.scrollHeight}#$(){let e=this.#e;typeof e.requestFollow==`function`?e.requestFollow():this.#Q()}};function Fn(e){return`${new Date(e.frozenAt).toLocaleDateString(void 0,{month:`short`,day:`numeric`})} · ${e.messageCount} turns`}function In(e){let t=document.createElement(`slicc-freezer-card`);return t.setAttribute(`title`,e.title),t.setAttribute(`meta`,Fn(e)),t.setAttribute(`slug`,e.filename),e.icon&&t.setAttribute(`icon`,e.icon),t}async function Ln(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 Z(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(z,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 Z(e){let t=await Rn(e);return t.kind===`ok`?t.entries:t.kind===`missing`?[]:null}async function Rn(e){let t;try{let n=await e.readFile(z,{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 zn(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 Bn(e,t){for(let t of Array.from(e.querySelectorAll(`slicc-freezer-card`)))t.remove();e.append(...t.map(In))}async function Vn(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 Hn=`/workspace/CLAUDE.md`,Q=64;function Un(e){if(e.length<=Q)return{title:e,summary:``};let t=e.lastIndexOf(` `,Q),n=t>Q/2?t:Q;return{title:`${e.slice(0,n)}…`,summary:e.slice(n).trim()}}function Wn(e){let t=[],n=null,r=()=>{if(!n)return;let e=n.join(` `).trim();e&&t.push(Un(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(Un(e.trim())),t}async function Gn(e){let t=``;try{let n=await e.readFile(Hn,{encoding:`utf-8`});t=typeof n==`string`?n:new TextDecoder().decode(n)}catch{t=``}return Wn(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 Kn=[`/workspace`,`/shared`],qn=3,Jn=200;async function Yn(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,Jn)){let i=`${t}/${r.name}`;r.type===`directory`?o.push({kind:`dir`,id:i,label:r.name,children:n<qn?await Yn(e,i,n+1):[]}):o.push({kind:`file`,id:i,label:r.name,path:i})}return o}async function Xn(e){let t=[];for(let n of Kn)t.push({kind:`group`,label:`${n.slice(1)}/`}),t.push(...await Yn(e,n,1));return t}function Zn(e){let t=!1;return n=>{if(n===`files`){e.openFs().then(async t=>{e.fileTree.items=await Xn(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 Gn(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 Qn={off:`off`,low:`low`,medium:`medium`,high:`high`,xhigh:`xhigh`,max:`xhigh`},$n={off:`off`,minimal:`low`,low:`low`,medium:`medium`,high:`high`,xhigh:`xhigh`};function er(e){return e?Qn[e]:void 0}function tr(e){return(e&&$n[e])??`off`}function nr(e,t){return e!=null&&e!==`cone`||new URL(t.location.href).searchParams.get(`cherry`)===`1`?!0:u(t.localStorage)}function $(e){return e===`error`?`dead`:e===`initializing`?`none`:`open`}function rr(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:$(t?.get(e.jid)),fill:typeof r==`number`?Math.round(r*100):void 0}})}function ir(e){let t=()=>{let t=e.getClient();t&&(e.refs.switcher.scoops=rr(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),$(i)!==$(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`&&Oe(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 ar(e,n){e.thread.setAttribute(`context`,n.isCone?`cone`:`scoop:${n.name}`),e.thread.setAttribute(`accent`,y(n)),Ee(e,n.isCone?{kind:`cone`}:{kind:`scoop`,accent:y(n)}),e.switcher.setAttribute(`active`,n.jid),e.composerMeta.setAttribute(`thinking`,tr(n.config?.thinkingLevel));try{let{resolveCurrentModel:r,resolveModelById:i}=await t(async()=>{let{resolveCurrentModel:e,resolveModelById:t}=await import(`./main-DYwi5YqO.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 or(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 Z(r);if(a===null){if((await Rn(r)).kind!==`corrupt`||(l.warn(`WC freezer index corrupt — rebuilding from archives`),a=await zn(r),a.length===0))return;await i.writeFile(z,JSON.stringify(a,null,2))}e===d&&(u=a,Bn(n.freezer,a),!f&&a.some(e=>!e.icon&&!e.pendingEnrichment)&&(f=!0,t(async()=>{let{pickLucideIcon:e}=await import(`./quick-llm-BW-brmSb.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})=>Ln({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-BgzUQaQk.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-DTsW2ra1.js`).then(e=>e.g);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 Z(t)??[]).find(t=>t.filename===e);let{messages:o}=await Vn(t,i??{filename:e,title:e,frozenAt:``,messageCount:0});a()?.loadMessages(o),n.thread.setAttribute(`context`,`freezer:${i?.filename??e}`),n.thread.setAttribute(`accent`,je),Ee(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 sr(e,t){let n=null,r=ke(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`),ar(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 cr(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 lr(e,n,r,i,a){e.onClientReady(()=>{i.intercept||t(async()=>{let{wireWcOnboarding:e}=await import(`./wc-onboarding-CEjOIdK5.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 ur(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 Pn({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&&(ht(t),c.delete(e))},onMessageRendered:(e,t)=>{let n=t[0];n&&c.set(e.id,mt(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 dr(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-CHDb9Kuo.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(nr(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-DBF_z5mw.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-D6kbwY6i.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=Ce(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=er(t),a=n.getSelected();a&&i&&r.setScoopThinkingLevel(a.jid,i)})}function fr(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=rr(t.getScoops(),e.statuses,e.fills)}})};return setInterval(n,15e3),n}function pr(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 mr(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)}),gr({switcher:n.switcher,getScoops:()=>t.getScoops(),lastActivity:e.wiring.lastActivity})}function hr(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 gr(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-BW-brmSb.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 _r(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 vr(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 yr(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:br(e,n)})}).catch(e=>i.warn(`WC permissions surface wiring failed`,e))}function br(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 xr(e,n,r,i={}){let{refs:a}=e;e.setClient(n);let o=null,s=fr(e.wiring,n),c=()=>o?.(),l={intercept:null},{controller:u,agentHandle:d}=ur(a,n,()=>e.getSelected(),hr({boot:e,triggerPlaceholder:c,refreshStats:s}),l);e.setController(u),e.onClientReady(s);let f=cr(n),p=async()=>(await f()).reader;i.standalone?.runtimeMode!==`cherry`&&lr(e,n,f,l,r),dr({boot:e,client:n,agentHandle:d,setRefreshPlaceholder:e=>{o=e},triggerPlaceholder:c,openReader:p,openWriter:async()=>(await f()).writer,log:r}),mr(e,n),pr(e,i,r),yr(e,n,i,r),e.setActivateSurface(Zn({fileTree:a.fileTree,termSurface:a.termSurface,memoryHost:a.memoryHost,openFs:p,mountTerminal:t=>_r(e,n,t),log:r}));let{refreshFreezer:m,openFrozen:h}=or({refs:a,openVfs:f,client:n,getController:()=>e.getController(),getSelected:()=>e.getSelected(),selectScoop:e.selectScoop,clearSelection:e.clearSelection,log:r});m(),e.onClientReady(m),vr(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-D_fwWOq8.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-2mdLomRm.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-6aYy7HCy.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 Sr(e,n,r=`standalone`){let{browser:i,realCdpTransport:a,instanceId:o,localApiBaseUrl:s,bridgeToken:c,localLickWsUrl:l,extensionDelegateId:u,attachLickForwardingClient:d}=await p({runtimeMode:r,envBaseUrl:null,window,log:n}),{resolveStandaloneFloatLabel:f,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 f():m,g=sr(e,h),_=An({realCdpTransport:a,instanceId:o,callbacks:ir(g.wiring),localApiBaseUrl:s,bridgeToken:c,localLickWsUrl:l,extensionDelegateId:u});wn({send:e=>_.client.sendRaw(e)}),d?.(_.client),xr(g,_.client,n,{instanceId:o,standalone:{browser:i,realCdpTransport:a,runtimeMode:r,baseFloatLabel:h}});let{setupSudoStandalone:v}=await t(async()=>{let{setupSudoStandalone:e}=await import(`./main-DYwi5YqO.js`).then(e=>e.d);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 v({log:n}),await _.ready,g.wiring.notifyReady?.(),n.info(`WC live shell ready`,{scoops:_.client.getScoops().length})}export{Rt as a,xr as attachWcClient,tn as c,ir as createWcLiveCallbacks,M as d,mt as f,nn as i,Ze as l,Qe as m,Sr as mountWcUiLive,Sn as n,H as o,j as p,sr as prepareWcShell,z as r,U as s,Pn as t,ht as u};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/main-DYwi5YqO.js","assets/chunk-aKtaBQYM.js","assets/modulepreload-polyfill-Dezn_h7o.js","assets/preload-helper-zJ_50EbN.js","assets/account-store-J1i56LXB.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-qlpR6Q6T.js","assets/wc-detached-Wt3lzK1R.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{f as n,r,s as i,y as a}from"./main-DYwi5YqO.js";import{n as o}from"./tray-leader-DGFajpwM.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:a,log:l}=t,{getAllAvailableModels:m,getAccounts:h}=await e(async()=>{let{getAllAvailableModels:e,getAccounts:t}=await import(`./main-DYwi5YqO.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])),g=()=>{n.composerMeta.models=c(m())};g();let _=null;await f(n,a,()=>{let e=_;_=null,e!=null&&n.thread?.dispatchEvent(new CustomEvent(`slicc-error-retry`,{detail:{messageId:e},bubbles:!0,composed:!0}))});let v=typeof chrome<`u`&&!!chrome?.runtime?.id,y=()=>{let e=s(h()),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:v?`extension`:`standalone`})};y();let b=()=>{if(v)return[];let e=r(o(),i()),t=[{kind:`separator`}];return e.kind===`leader-offer`?t.push({id:`tray-enable`,label:e.label,icon:`radio`}):e.kind===`leader-copy`?(t.push({id:`tray-copy`,label:`Copy tray join URL`,icon:`link`}),t.push({id:`tray-stop`,label:`Stop multi-browser sync`,icon:`square`,danger:!0})):e.kind===`leader-pending`?(t.push({kind:`caption`,label:e.caption}),t.push({id:`tray-stop`,label:`Stop multi-browser sync`,icon:`square`,danger:!0})):(t.push({kind:`caption`,label:e.caption}),t.push({id:`tray-stop`,label:`Disconnect from leader`,icon:`unplug`,danger:!0})),t},x=new URLSearchParams(window.location.search).has(`detached`),S=()=>v&&!x?[{id:`popout`,label:`Pop out into a tab`,icon:`external-link`}]:[],C=()=>{n.avatarMenu.items=[{id:`settings`,label:`Account settings…`,icon:`settings`},...S(),...b()]};C(),n.avatarMenu.addEventListener(`slicc-avatar-menu-toggle`,e=>{e.detail?.open&&C()});let w=e=>u(e,l),T=()=>{e(async()=>{let{showWcSettings:e}=await import(`./wc-settings-qlpR6Q6T.js`);return{showWcSettings:e}},__vite__mapDeps([21,3])).then(({showWcSettings:e})=>e(l)).then(()=>{g(),y(),a.updateModel()}).catch(e=>l.error(`WC settings dialog failed`,e))};n.avatarMenu.addEventListener(`slicc-avatar-action`,t=>{let n=t.detail?.id;if(n&&w(n)){C();return}if(n===`popout`){e(async()=>{let{requestDetachedPopout:e}=await import(`./wc-detached-Wt3lzK1R.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`&&T()}),n.composerMeta.addEventListener(`add-ai`,T),n.thread?.addEventListener(`slicc-error-open-settings`,T),d({refs:n,log:l,openSettings:T,setPendingReplayMessageId:e=>{_=e}}),p({refreshModels:g,applyIdentity:y,client:a})}function u(r,i){if(r===`tray-enable`)return a({locationHref:window.location.href,storage:window.localStorage,envBaseUrl:null,defaultWorkerBaseUrl:n}).then(e=>{if(!e)return i.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=>i.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,n,r){let{resolveModelById:i,resolveCurrentModel:a,setSelectedModelId:o}=await e(async()=>{let{resolveModelById:e,resolveCurrentModel:t,setSelectedModelId:n}=await import(`./main-DYwi5YqO.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 p(t){let{refreshModels:n,applyIdentity:r,client:i}=t,{getAccounts:a,getProviderConfig:o}=await e(async()=>{let{getAccounts:e,getProviderConfig:t}=await import(`./main-DYwi5YqO.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};