sliccy 4.28.2 → 4.28.3

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 (70) hide show
  1. package/dist/ui/assets/{account-store-DmjUSua_.js → account-store-BEhGWtfD.js} +2 -2
  2. package/dist/ui/assets/{account-store-Dha2nLml.js → account-store-Dd_leIXI.js} +2 -2
  3. package/dist/ui/assets/{adobe-CpNl5eLk.js → adobe-D48uApVM.js} +1 -1
  4. package/dist/ui/assets/{adobe-CtI7bDCt.js → adobe-n060f8AC.js} +1 -1
  5. package/dist/ui/assets/{agent-message-to-chat-DQErB0Zj.js → agent-message-to-chat-Bx_Ero1x.js} +1 -1
  6. package/dist/ui/assets/{apps-BAXGsVHu.js → apps-CywJTObv.js} +1 -1
  7. package/dist/ui/assets/{azure-openai-CKd81QhZ.js → azure-openai-B1Zfi2XG.js} +1 -1
  8. package/dist/ui/assets/{azure-openai-DTsNmcxo.js → azure-openai-VRDt5QVP.js} +1 -1
  9. package/dist/ui/assets/{bsh-watchdog-B27e-Og-.js → bsh-watchdog-DbLa5QsS.js} +1 -1
  10. package/dist/ui/assets/{connect-surface-CyQMJFj3.js → connect-surface-C-4WfE1D.js} +1 -1
  11. package/dist/ui/assets/dip-D889fVdn.js +1 -0
  12. package/dist/ui/assets/{dist-CVvNIY9j.js → dist-DLhwzhGb.js} +1 -1
  13. package/dist/ui/assets/{dist-Ciobg3J4.js → dist-Dn-OG2Uq.js} +1 -1
  14. package/dist/ui/assets/{es-DjQZltrp.js → es-DaEzN-e4.js} +1 -1
  15. package/dist/ui/assets/{fs-Bv2avR3Y.js → fs-B40WJSMO.js} +2 -2
  16. package/dist/ui/assets/{fs-B-yB8nmS.js → fs-FoD_qa2m.js} +1 -1
  17. package/dist/ui/assets/{github-DcwUCUyU.js → github-CAYclPFE.js} +1 -1
  18. package/dist/ui/assets/{github-DRvbws57.js → github-WET9dsz8.js} +2 -2
  19. package/dist/ui/assets/{github-copilot-CFeOxiAY.js → github-copilot-BSb0sjqN.js} +1 -1
  20. package/dist/ui/assets/{github-copilot--B7IUER8.js → github-copilot-R5lpJGvp.js} +1 -1
  21. package/dist/ui/assets/{hear-20YdcW5b.js → hear-C4xX91lk.js} +1 -1
  22. package/dist/ui/assets/{kernel-worker-DuaByjq4.js → kernel-worker-BWuqWtNZ.js} +21 -21
  23. package/dist/ui/assets/{kokoro-engine-CjyxHaAM.js → kokoro-engine-DuH7Gw3x.js} +1 -1
  24. package/dist/ui/assets/{lick-ws-bridge-CbVQgXpI.js → lick-ws-bridge-CO4sVUnO.js} +1 -1
  25. package/dist/ui/assets/{local-llm-FEU-X2iM.js → local-llm-BA1NDIU9.js} +1 -1
  26. package/dist/ui/assets/{main-D-3iO2Pb.js → main-xJNt0P6z.js} +3 -3
  27. package/dist/ui/assets/{mount-B60ugIMY.js → mount-Blejt3yC.js} +1 -1
  28. package/dist/ui/assets/{mount-TPowGzXN.js → mount-BpQ-KROh.js} +2 -2
  29. package/dist/ui/assets/{new-session-BjrjaQDu.js → new-session-BKd3_lSr.js} +2 -2
  30. package/dist/ui/assets/{oauth-bootstrap-D15vXH8k.js → oauth-bootstrap--I6asg_u.js} +2 -2
  31. package/dist/ui/assets/{oauth-service-D49nt7eJ.js → oauth-service-DAzsBd4D.js} +1 -1
  32. package/dist/ui/assets/{openai-codex-DIIqvcoZ.js → openai-codex-DyAASUvZ.js} +1 -1
  33. package/dist/ui/assets/{openai-codex-BpHxok9y.js → openai-codex-MZbc8sm2.js} +1 -1
  34. package/dist/ui/assets/{panel-rpc-handlers-Ca3yEyOL.js → panel-rpc-handlers-WBg5aql4.js} +1 -1
  35. package/dist/ui/assets/{provider-UGTRh0sb.js → provider-DNnOLtMP.js} +1 -1
  36. package/dist/ui/assets/{provider-CT4MGofi.js → provider-L4NElIF3.js} +2 -2
  37. package/dist/ui/assets/provider-store-access-CmS1duqc.js +1 -0
  38. package/dist/ui/assets/provider-store-access-IaKurQe7.js +1 -0
  39. package/dist/ui/assets/{providers-C-thqKYx.js → providers-DerbEWIP.js} +1 -1
  40. package/dist/ui/assets/{quick-llm-pCxnbK4A.js → quick-llm-BOgo_uty.js} +1 -1
  41. package/dist/ui/assets/session-freezer-k9segaoE.js +1 -0
  42. package/dist/ui/assets/setup-sudo-CocP-GMB.js +1 -0
  43. package/dist/ui/assets/{speak-EKtIqp6j.js → speak-BtCLW3r-.js} +1 -1
  44. package/dist/ui/assets/{sprinkle-manager-C3_2AgeR.js → sprinkle-manager-BXB1EDB8.js} +1 -1
  45. package/dist/ui/assets/{store-DSwnBJEJ.js → store-p07O-6qm.js} +1 -1
  46. package/dist/ui/assets/{sudo-B4yfntyh.js → sudo-BGiCdyHh.js} +1 -1
  47. package/dist/ui/assets/{transformers-env-O5Vtz_xj.js → transformers-env-BEJ8prM4.js} +1 -1
  48. package/dist/ui/assets/{tray-leave-runtime-Dk3OSbMO.js → tray-leave-runtime-BIU4slWr.js} +1 -1
  49. package/dist/ui/assets/{upgrade-detection-Dcc69AtK.js → upgrade-detection-CjNy2QVK.js} +1 -1
  50. package/dist/ui/assets/{wc-attach-B62W7N_T.js → wc-attach-B2r60IVZ.js} +2 -2
  51. package/dist/ui/assets/{wc-detached-CJFrvQ5w.js → wc-detached-CVCrBego.js} +1 -1
  52. package/dist/ui/assets/{wc-extension-C1CIBnT2.js → wc-extension-Bj-WZK-v.js} +2 -2
  53. package/dist/ui/assets/{wc-live-B3Dxlxlf.js → wc-live-692eqzbB.js} +5 -5
  54. package/dist/ui/assets/{wc-nav-DWMYNnDA.js → wc-nav-KPH2me07.js} +2 -2
  55. package/dist/ui/assets/{wc-onboarding-DpKk5u_V.js → wc-onboarding-BMIcqP11.js} +2 -2
  56. package/dist/ui/assets/{wc-placeholder-CGPP_IEm.js → wc-placeholder-LktBOWny.js} +3 -3
  57. package/dist/ui/assets/{wc-settings-DjqUSzpO.js → wc-settings-BZvKvAI9.js} +2 -2
  58. package/dist/ui/assets/{wc-shell-BGaEWRGh.js → wc-shell-Cl1ON8m4.js} +3 -3
  59. package/dist/ui/assets/{wc-sprinkles-B5_aCIM5.js → wc-sprinkles-C675pGpy.js} +2 -2
  60. package/dist/ui/assets/{wc-tray-kVPhrwG1.js → wc-tray-DDcDU_hv.js} +3 -3
  61. package/dist/ui/assets/{xai-grok-CggP425A.js → xai-grok-3pMUa44B.js} +1 -1
  62. package/dist/ui/assets/{xai-grok-BX1SWx3y.js → xai-grok-Dk2TY3YV.js} +1 -1
  63. package/dist/ui/index.html +2 -2
  64. package/dist/ui/packages/webapp/index.html +2 -2
  65. package/package.json +1 -1
  66. package/dist/ui/assets/dip-De30SVSa.js +0 -1
  67. package/dist/ui/assets/provider-store-access-BHHITTJF.js +0 -1
  68. package/dist/ui/assets/provider-store-access-BSS9maA7.js +0 -1
  69. package/dist/ui/assets/session-freezer-NFd-CALu.js +0 -1
  70. package/dist/ui/assets/setup-sudo-KPDfIsQ7.js +0 -1
@@ -1,5 +1,5 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/sudo-B4yfntyh.js","assets/logger-DDBAeTLF.js","assets/quick-llm-pCxnbK4A.js","assets/chunk-aKtaBQYM.js","assets/account-store-Dha2nLml.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/panel-rpc-DqT2FG7c.js","assets/bedrock-camp-9-QEmC9Z.js","assets/transform-messages-DzB_lMo-.js","assets/tool-ui-YOPqzMmL.js","assets/icons-BU6llBsN.js","assets/main-D-3iO2Pb.js","assets/modulepreload-polyfill-Dezn_h7o.js","assets/clipboard-DgFtRQbq.js","assets/llm-session-id-DVmZ9C2t.js","assets/mount-picker-popup-BORxgnGu.js","assets/usb-device-registry-BP58Vi0S.js","assets/serial-port-registry-Bc4wlwED.js","assets/hid-device-registry-D2LsJCRr.js","assets/cdp-D4JkCTey.js","assets/remote-cdp-transport-Cf0sDZ5N.js","assets/main-cherry-B1mI8ArD.js","assets/new-session-BjrjaQDu.js","assets/session-store-CCH7W8KY.js","assets/wc-shell-BGaEWRGh.js","assets/soundscape-cues-5_sT5Un6.js","assets/speech-CqQdPtyQ.js","assets/wc-shell-WkeczD9x.css","assets/remote-vfs-client-BwJhhtIV.js","assets/types-idfTVsM8.js","assets/writable-vfs-client-DMYsajEE.js","assets/wc-onboarding-DpKk5u_V.js","assets/welcome-detection-Cr8mNEkt.js","assets/legacy-styles-4PP74ISo.js","assets/theme-BBwuyzvz.js","assets/soundscape-TvriK11t.js","assets/voice-reply-UcYXGV0I.js","assets/speak-D511iTBd.js","assets/kokoro-engine-CHIq9iyX.js","assets/transformers-env-6vj5CcH9.js","assets/cdn-url-builder-Cq7LLgru.js","assets/wc-placeholder-CGPP_IEm.js","assets/wc-attach-B62W7N_T.js","assets/remote-terminal-view-CSqiig2G.js","assets/browser-ukv9lM61.js","assets/terminal-session-client-CbAduNfC.js","assets/picker-approval-tzbkMw-e.js","assets/secret-env-DcfTe28K.js","assets/remote-sprinkle-vfs-e81pZJKo.js","assets/wc-sprinkles-B5_aCIM5.js","assets/wc-tray-kVPhrwG1.js","assets/shared-B7TdM-Ik.js","assets/sprinkle-renderer-GiRRbdBx.js","assets/wc-nav-DWMYNnDA.js","assets/wc-voice-erm0EtRv.js","assets/composer-speech-DYshRh0w.js","assets/whisper-session-D89gZWHf.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-Dha2nLml.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{S as l,b as u,g as d,h as f,l as p,m,o as h,p as g,t as _}from"./main-D-3iO2Pb.js";import{a as ee,i as te,o as v,s as y}from"./proxied-fetch-BBO8HwcV.js";import{n as b,r as x}from"./hid-device-registry-D2LsJCRr.js";import{a as ne,i as re}from"./serial-port-registry-Bc4wlwED.js";import{C as ie,D as ae,E as oe,S as se,_ as ce,a as le,g as ue,h as de,k as fe,l as pe,m as me,n as he,o as ge,s as _e,w as ve,x as ye,y as be}from"./usb-operations-CkcrNzZw.js";import{i as xe,r as Se}from"./usb-device-registry-BP58Vi0S.js";import{_ as Ce,c as we,d as S,h as Te,i as Ee,l as De,m as Oe,n as ke,o as Ae,p as je,r as Me,s as Ne,t as Pe,u as Fe}from"./wc-shell-BGaEWRGh.js";import{t as Ie}from"./icons-BU6llBsN.js";import{n as Le}from"./sprinkle-bridge-DrAUCEC_.js";import{i as Re,n as C,t as ze}from"./theme-BBwuyzvz.js";import{n as Be}from"./sprinkle-renderer-GiRRbdBx.js";async function Ve(e){let{installSudoTestHook:n}=await t(async()=>{let{installSudoTestHook:e}=await import(`./sudo-B4yfntyh.js`);return{installSudoTestHook:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]));n()}async function He(e){let{installPanelSudoResponder:n}=await t(async()=>{let{installPanelSudoResponder:e}=await import(`./sudo-B4yfntyh.js`);return{installPanelSudoResponder:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]));n()}var Ue=typeof chrome<`u`&&!!chrome?.runtime?.id;async function We(e,t){if(t?.aborted)throw new DOMException(`aborted`,`AbortError`);let n=await T(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 w=null;function Ge(){if(w)return w;if(typeof BroadcastChannel>`u`)return null;try{w=new BroadcastChannel(`preview-vfs`)}catch{return null}return w}async function T(e,t,n){let r=Ge();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 Ke=[`/shared/sprinkles/`,`/workspace/skills/sprinkles/`,`/workspace/sprinkles/`],qe=[`/shared/`,`/workspace/skills/sprinkles/`,`/workspace/sprinkles/`];function Je(e){return Ke.some(t=>e.startsWith(t))}function Ye(e){return typeof e!=`string`||!e.startsWith(`/`)||e.includes(`..`)?!1:qe.some(t=>e.startsWith(t))}var E=new WeakSet,Xe=`,
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/sudo-BGiCdyHh.js","assets/logger-DDBAeTLF.js","assets/quick-llm-BOgo_uty.js","assets/chunk-aKtaBQYM.js","assets/account-store-Dd_leIXI.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/panel-rpc-DqT2FG7c.js","assets/bedrock-camp-9-QEmC9Z.js","assets/transform-messages-DzB_lMo-.js","assets/tool-ui-YOPqzMmL.js","assets/icons-BU6llBsN.js","assets/main-xJNt0P6z.js","assets/modulepreload-polyfill-Dezn_h7o.js","assets/clipboard-DgFtRQbq.js","assets/llm-session-id-DVmZ9C2t.js","assets/mount-picker-popup-BORxgnGu.js","assets/usb-device-registry-BP58Vi0S.js","assets/serial-port-registry-Bc4wlwED.js","assets/hid-device-registry-D2LsJCRr.js","assets/cdp-D4JkCTey.js","assets/remote-cdp-transport-Cf0sDZ5N.js","assets/main-cherry-B1mI8ArD.js","assets/new-session-BKd3_lSr.js","assets/session-store-CCH7W8KY.js","assets/wc-shell-Cl1ON8m4.js","assets/soundscape-cues-5_sT5Un6.js","assets/speech-CqQdPtyQ.js","assets/wc-shell-WkeczD9x.css","assets/remote-vfs-client-BwJhhtIV.js","assets/types-idfTVsM8.js","assets/writable-vfs-client-DMYsajEE.js","assets/wc-onboarding-BMIcqP11.js","assets/welcome-detection-Cr8mNEkt.js","assets/legacy-styles-4PP74ISo.js","assets/theme-BBwuyzvz.js","assets/soundscape-TvriK11t.js","assets/voice-reply-UcYXGV0I.js","assets/speak-D511iTBd.js","assets/kokoro-engine-CHIq9iyX.js","assets/transformers-env-6vj5CcH9.js","assets/cdn-url-builder-Cq7LLgru.js","assets/wc-placeholder-LktBOWny.js","assets/wc-attach-B2r60IVZ.js","assets/remote-terminal-view-CSqiig2G.js","assets/browser-ukv9lM61.js","assets/terminal-session-client-CbAduNfC.js","assets/picker-approval-tzbkMw-e.js","assets/secret-env-DcfTe28K.js","assets/remote-sprinkle-vfs-e81pZJKo.js","assets/wc-sprinkles-C675pGpy.js","assets/wc-tray-DDcDU_hv.js","assets/shared-B7TdM-Ik.js","assets/sprinkle-renderer-GiRRbdBx.js","assets/wc-nav-KPH2me07.js","assets/wc-voice-erm0EtRv.js","assets/composer-speech-DYshRh0w.js","assets/whisper-session-D89gZWHf.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-Dd_leIXI.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{S as l,b as u,g as d,h as f,l as p,m,o as h,p as g,t as _}from"./main-xJNt0P6z.js";import{a as ee,i as te,o as v,s as y}from"./proxied-fetch-BBO8HwcV.js";import{n as b,r as x}from"./hid-device-registry-D2LsJCRr.js";import{a as ne,i as re}from"./serial-port-registry-Bc4wlwED.js";import{C as ie,D as ae,E as oe,S as se,_ as ce,a as le,g as ue,h as de,k as fe,l as pe,m as me,n as he,o as ge,s as _e,w as ve,x as ye,y as be}from"./usb-operations-CkcrNzZw.js";import{i as xe,r as Se}from"./usb-device-registry-BP58Vi0S.js";import{_ as Ce,c as we,d as S,h as Te,i as Ee,l as De,m as Oe,n as ke,o as Ae,p as je,r as Me,s as Ne,t as Pe,u as Fe}from"./wc-shell-Cl1ON8m4.js";import{t as Ie}from"./icons-BU6llBsN.js";import{n as Le}from"./sprinkle-bridge-DrAUCEC_.js";import{i as Re,n as C,t as ze}from"./theme-BBwuyzvz.js";import{n as Be}from"./sprinkle-renderer-GiRRbdBx.js";async function Ve(e){let{installSudoTestHook:n}=await t(async()=>{let{installSudoTestHook:e}=await import(`./sudo-BGiCdyHh.js`);return{installSudoTestHook:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]));n()}async function He(e){let{installPanelSudoResponder:n}=await t(async()=>{let{installPanelSudoResponder:e}=await import(`./sudo-BGiCdyHh.js`);return{installPanelSudoResponder:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]));n()}var Ue=typeof chrome<`u`&&!!chrome?.runtime?.id;async function We(e,t){if(t?.aborted)throw new DOMException(`aborted`,`AbortError`);let n=await T(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 w=null;function Ge(){if(w)return w;if(typeof BroadcastChannel>`u`)return null;try{w=new BroadcastChannel(`preview-vfs`)}catch{return null}return w}async function T(e,t,n){let r=Ge();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 Ke=[`/shared/sprinkles/`,`/workspace/skills/sprinkles/`,`/workspace/sprinkles/`],qe=[`/shared/`,`/workspace/skills/sprinkles/`,`/workspace/sprinkles/`];function Je(e){return Ke.some(t=>e.startsWith(t))}function Ye(e){return typeof e!=`string`||!e.startsWith(`/`)||e.includes(`..`)?!1:qe.some(t=>e.startsWith(t))}var E=new WeakSet,Xe=`,
3
3
  exec: Object.assign(function(cmd) {
4
4
  return _vfsCall('dip-exec', { cmd: cmd }, function(m) { return m.result; });
5
5
  }, { spawn: function(argv) {
@@ -245,9 +245,9 @@ ${r}
245
245
  `).trim();if(!s)throw Error(`Restructure call returned empty content`);return`${n}${n.length===0||n.endsWith(`
246
246
  `)?``:`
247
247
  `}${s}\n`}async function Vt(e){if(!e.model||!e.apiKey)return{restructured:!1,reason:`no-llm`};let t=``;try{let n=await e.vfs.readFile(Mt,{encoding:`utf-8`});t=typeof n==`string`?n:new TextDecoder().decode(n)}catch{return{restructured:!1,reason:`missing-file`}}let n=await zt(e.vfs),r=Lt(n),i=r*jt;if(t.length<=i)return{restructured:!1,reason:`under-threshold`};N.info(`Cone memory over threshold — restructuring`,{size:t.length,budget:r,threshold:i,sessionCount:n});try{let n=await Bt({currentContent:t,budget:r,model:e.model,apiKey:e.apiKey,headers:e.headers,signal:e.signal});return await e.vfs.writeFile(Mt,n),N.info(`Cone memory restructured`,{before:t.length,after:n.length}),{restructured:!0}}catch(e){return N.warn(`Cone memory restructure failed — leaving appended content in place`,{error:e instanceof Error?e.message:String(e)}),{restructured:!1,reason:`error`}}}function P(e){let t=``;for(let n of e){let e=n.role===`user`?`User`:`Assistant`,r=n.role===`user`?Ce(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 F=c(`session-freezer`),Ht=4,Ut=2048,Wt=40,I=`/sessions`,L=`/sessions/index.json`;async function Gt(e){let t=await Zt(e.sessionStore);if(!t||t.messages.length<Ht)return F.info(`Skipping freeze: session below threshold or missing`,{messageCount:t?.messages.length??0}),null;let n=Qt(t.messages),r=e.mode??`full`,i=r===`full`&&!!(e.apiKey&&e.model);await Jt(e,n,i);let a=await Yt(e,n,i)||an(t.messages);return await Xt(e,t,a,r,i?await Kt(e,a):void 0)}async function Kt(e,n){try{return qt(await(e.pickIcon??(await t(async()=>{let{pickLucideIcon:e}=await import(`./quick-llm-pCxnbK4A.js`).then(e=>e.n);return{pickLucideIcon:e}},__vite__mapDeps([2,3,4,5,6,7,8,9,10,1,11,12,13,14,15,16,17,18,19,20]))).pickLucideIcon)({subject:`"${n}" — an archived chat session`})??void 0)}catch(e){F.warn(`Icon pick failed (freeze still proceeds)`,{error:e instanceof Error?e.message:String(e)});return}}function qt(e){if(e)return Ie(e)?e:void 0}async function Jt(e,t,n){if(!n){F.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:Ut,headers:e.headers})}catch(e){F.warn(`Memory extraction call failed (freeze still proceeds)`,{error:e instanceof Error?e.message:String(e)});return}if(!r.trim()||r.trim()===`NONE`){F.info(`Memory extraction returned no durable memories`);return}try{await cn(e.vfs,r.trim(),`new-session`,{model:e.model,apiKey:e.apiKey,headers:e.headers}),F.info(`Memory extracted and appended on new-session`)}catch(e){F.warn(`Memory append failed`,{error:e instanceof Error?e.message:String(e)})}}async function Yt(e,t,n){if(!n)return``;try{return rn(await o({messages:t,instruction:a,model:e.model,apiKey:e.apiKey,maxTokens:Wt,headers:e.headers}))}catch(e){return F.warn(`Title generation call failed (using heuristic)`,{error:e instanceof Error?e.message:String(e)}),``}}async function Xt(e,t,n,r,i){let a=new Date().toISOString(),o=r===`quick`?`pending-${sn()}.md`:`${a.replace(/[:.]/g,`-`)}-${on(n)}.md`,s={id:t.id,title:n,frozenAt:a,createdAt:t.createdAt,updatedAt:t.updatedAt,messageCount:t.messages.length,messages:t.messages},c=nn(s),l={filename:o,title:n,frozenAt:a,messageCount:t.messages.length,...i?{icon:i}:{},...r===`quick`?{pendingEnrichment:!0}:{}};try{return await R(e.vfs,I),await e.vfs.writeFile(`${I}/${o}`,c),await ln(e.vfs,l),await e.vfs.flush(),F.info(`Cone session frozen`,{filename:o,title:n,messageCount:t.messages.length}),{...l,archive:s}}catch(e){return F.warn(`Failed to write frozen session to VFS`,{error:e instanceof Error?e.message:String(e)}),null}}async function Zt(e){try{return await e.load(`session-cone`)}catch(e){return F.warn(`Failed to load session-cone`,{error:e instanceof Error?e.message:String(e)}),null}}function Qt(e){return e.map(e=>({role:e.role,content:[{type:`text`,text:e.content}],timestamp:e.timestamp}))}var $t=`<!-- slicc:session-data
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 F=c(`session-freezer`),Ht=4,Ut=2048,Wt=40,I=`/sessions`,L=`/sessions/index.json`;async function Gt(e){let t=await Zt(e.sessionStore);if(!t||t.messages.length<Ht)return F.info(`Skipping freeze: session below threshold or missing`,{messageCount:t?.messages.length??0}),null;let n=Qt(t.messages),r=e.mode??`full`,i=r===`full`&&!!(e.apiKey&&e.model);await Jt(e,n,i);let a=await Yt(e,n,i)||an(t.messages);return await Xt(e,t,a,r,i?await Kt(e,a):void 0)}async function Kt(e,n){try{return qt(await(e.pickIcon??(await t(async()=>{let{pickLucideIcon:e}=await import(`./quick-llm-BOgo_uty.js`).then(e=>e.n);return{pickLucideIcon:e}},__vite__mapDeps([2,3,4,5,6,7,8,9,10,1,11,12,13,14,15,16,17,18,19,20]))).pickLucideIcon)({subject:`"${n}" — an archived chat session`})??void 0)}catch(e){F.warn(`Icon pick failed (freeze still proceeds)`,{error:e instanceof Error?e.message:String(e)});return}}function qt(e){if(e)return Ie(e)?e:void 0}async function Jt(e,t,n){if(!n){F.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:Ut,headers:e.headers})}catch(e){F.warn(`Memory extraction call failed (freeze still proceeds)`,{error:e instanceof Error?e.message:String(e)});return}if(!r.trim()||r.trim()===`NONE`){F.info(`Memory extraction returned no durable memories`);return}try{await cn(e.vfs,r.trim(),`new-session`,{model:e.model,apiKey:e.apiKey,headers:e.headers}),F.info(`Memory extracted and appended on new-session`)}catch(e){F.warn(`Memory append failed`,{error:e instanceof Error?e.message:String(e)})}}async function Yt(e,t,n){if(!n)return``;try{return rn(await o({messages:t,instruction:a,model:e.model,apiKey:e.apiKey,maxTokens:Wt,headers:e.headers}))}catch(e){return F.warn(`Title generation call failed (using heuristic)`,{error:e instanceof Error?e.message:String(e)}),``}}async function Xt(e,t,n,r,i){let a=new Date().toISOString(),o=r===`quick`?`pending-${sn()}.md`:`${a.replace(/[:.]/g,`-`)}-${on(n)}.md`,s={id:t.id,title:n,frozenAt:a,createdAt:t.createdAt,updatedAt:t.updatedAt,messageCount:t.messages.length,messages:t.messages},c=nn(s),l={filename:o,title:n,frozenAt:a,messageCount:t.messages.length,...i?{icon:i}:{},...r===`quick`?{pendingEnrichment:!0}:{}};try{return await R(e.vfs,I),await e.vfs.writeFile(`${I}/${o}`,c),await ln(e.vfs,l),await e.vfs.flush(),F.info(`Cone session frozen`,{filename:o,title:n,messageCount:t.messages.length}),{...l,archive:s}}catch(e){return F.warn(`Failed to write frozen session to VFS`,{error:e instanceof Error?e.message:String(e)}),null}}async function Zt(e){try{return await e.load(`session-cone`)}catch(e){return F.warn(`Failed to load session-cone`,{error:e instanceof Error?e.message:String(e)}),null}}function Qt(e){return e.map(e=>({role:e.role,content:[{type:`text`,text:e.content}],timestamp:e.timestamp}))}var $t=`<!-- slicc:session-data
249
249
  `,en=`
250
250
  -->`;function tn(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 nn(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=`${$t}${JSON.stringify(tn(e.messages)).replace(/-->/g,`-- >`)}${en}\n\n`,r=`# ${e.title}\n\n`;return t+n+r+P(e.messages)}function rn(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 an(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 on(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``).slice(0,48)||`session`}function sn(){return`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,6)}`}async function R(e,t){try{await e.mkdir(t,{recursive:!0})}catch{}}async function cn(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 R(e,`/workspace`)}let o=`## Auto-extracted (${new Date().toISOString().slice(0,10)}, ${n})`,s=`${a.length===0||a.endsWith(`
251
251
  `)?``:`
252
- `}\n${o}\n\n${t}\n`;await e.writeFile(i,a+s);try{await Vt({vfs:e,model:r?.model,apiKey:r?.apiKey,headers:r?.headers,signal:r?.signal})}catch(e){F.warn(`Cone memory budget step threw (append already committed)`,{error:e instanceof Error?e.message:String(e)})}}async function ln(e,t){let n=[];try{let t=await e.readFile(L,{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(L,JSON.stringify(r,null,2))}async function un(e){try{let t=await e.readFile(L,{encoding:`utf-8`}),n=typeof t==`string`?t:new TextDecoder().decode(t),r=JSON.parse(n);return Array.isArray(r)?r:[]}catch{return[]}}function z(e){return`${I}/${e.filename}`}async function dn(e,t,n){if(!t.pendingEnrichment)return null;let r=await pn(e,t);if(r===null)return null;let i=mn(t,r);if(i===null)return null;let a=await hn(t,i,n);if(a===null)return null;let o=await fn(n,a.newTitle);return await gn(e,t,a.bullets,n),await _n(e,t,r,a.newTitle,o)}async function fn(e,t){if(e.pickIcon)try{return await qt(await e.pickIcon({subject:`"${t}" — an archived chat session`})??void 0)}catch(e){F.warn(`Enrichment icon pick failed (continuing without icon)`,{error:e instanceof Error?e.message:String(e)});return}}async function pn(e,t){try{let n=await e.readFile(z(t),{encoding:`utf-8`});return typeof n==`string`?n:new TextDecoder().decode(n)}catch(e){return e?.code===`ENOENT`?F.info(`Pending archive missing — treating as already enriched`,{filename:t.filename}):F.warn(`Failed to read pending archive (entry stays pending)`,{filename:t.filename,error:e instanceof Error?e.message:String(e)}),null}}function mn(e,t){let n;try{n=B(t).messages}catch(t){return F.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?(F.info(`Pending archive has no messages — skipping enrichment`,{filename:e.filename}),null):Qt(n)}async function hn(e,t,n){let r=``;try{r=await o({messages:t,instruction:s,model:n.model,apiKey:n.apiKey,maxTokens:Ut,headers:n.headers})}catch(t){return F.warn(`Enrichment memory call failed (entry stays pending)`,{filename:e.filename,error:t instanceof Error?t.message:String(t)}),null}let i=``;try{i=rn(await o({messages:t,instruction:a,model:n.model,apiKey:n.apiKey,maxTokens:Wt,headers:n.headers}))}catch(t){return F.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}:(F.info(`Enrichment title call returned empty — entry stays pending`,{filename:e.filename}),null)}async function gn(e,t,n,r){let i=n.trim();if(!(!i||i===`NONE`))try{await cn(e,i,`pending-enrichment`,{model:r.model,apiKey:r.apiKey,headers:r.headers})}catch(e){F.warn(`Enrichment memory append failed (continuing with title rewrite)`,{filename:t.filename,error:e instanceof Error?e.message:String(e)})}}async function _n(e,t,n,r,i){let a=z(t),o=vn(n,r),s=`${t.frozenAt.replace(/[:.]/g,`-`)}-${on(r)}.md`,c=`${I}/${s}`;try{await R(e,I),await e.writeFile(c,o)}catch(e){return F.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 bn(e,t.filename,u)}catch(e){return F.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){F.info(`Stale pending archive cleanup failed (harmless)`,{oldPath:a,error:e instanceof Error?e.message:String(e)})}try{await e.flush()}catch{}return F.info(`Pending session enriched`,{oldFilename:t.filename,newFilename:s,title:r}),u}function vn(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 yn=Promise.resolve();async function bn(e,t,n){let r=async()=>{let r=[];try{let t=await e.readFile(L,{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(L,JSON.stringify(a,null,2))},i=yn.then(r,r);return yn=i.then(()=>void 0,()=>void 0),i}function B(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:xn(t)}}function xn(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 Sn=`__slicc_binary__`,Cn=`b64`;function wn(e){if(!e||typeof e!=`object`)return!1;let t=e;return t[Sn]===Cn&&typeof t.data==`string`}function Tn(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 En(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 V(e){if(e instanceof Uint8Array)return{[Sn]:Cn,data:Tn(e)};if(Array.isArray(e))return e.map(V);if(e&&typeof e==`object`){let t={};for(let[n,r]of Object.entries(e))t[n]=V(r);return t}return e}function H(e){if(wn(e))return En(e.data);if(Array.isArray(e))return e.map(H);if(e&&typeof e==`object`){let t={};for(let[n,r]of Object.entries(e))t[n]=H(r);return t}return e}var Dn=c(`panel-transport`);function On(e){return typeof e==`object`&&!!e&&`source`in e&&`payload`in e}function kn(){return{onMessage:e=>{let t=(t,n,r)=>(On(t)&&e(H(t)),!1);return chrome.runtime.onMessage.addListener(t),()=>chrome.runtime.onMessage.removeListener(t)},send:(e,t)=>{let n=V(e);chrome.runtime.sendMessage({source:`panel`,payload:n}).catch(e=>{Dn.error(`failed to send to offscreen`,{error:e instanceof Error?e.message:String(e)})})}}}var An=`slicc-groups`,jn=3,U={SCOOPS:`scoops`,MESSAGES:`messages`,SESSIONS:`sessions`,TASKS:`tasks`,STATE:`state`,WEBHOOKS:`webhooks`,CRONTASKS:`crontasks`},W=null;function Mn(e){if(!e.objectStoreNames.contains(U.MESSAGES)){let t=e.createObjectStore(U.MESSAGES,{keyPath:`id`});t.createIndex(`chatJid`,`chatJid`),t.createIndex(`timestamp`,`timestamp`),t.createIndex(`chatJid_timestamp`,[`chatJid`,`timestamp`])}e.objectStoreNames.contains(U.SESSIONS)||e.createObjectStore(U.SESSIONS,{keyPath:`groupFolder`}),e.objectStoreNames.contains(U.TASKS)||e.createObjectStore(U.TASKS,{keyPath:`id`}).createIndex(`groupFolder`,`groupFolder`),e.objectStoreNames.contains(U.STATE)||e.createObjectStore(U.STATE,{keyPath:`key`})}function Nn(e){let t=e.isMain??!1;return{jid:e.jid,name:e.name,folder:e.folder,trigger:t?void 0:e.trigger||`@${e.folder}`,requiresTrigger:!t&&(e.requiresTrigger??!0),isCone:t,type:t?`cone`:`scoop`,assistantLabel:t?`sliccy`:e.config?.assistantName||e.folder,addedAt:e.addedAt,config:e.config?{systemPromptAppend:e.config.systemPromptAppend,timeout:e.config.timeout,assistantName:e.config.assistantName}:void 0}}function Pn(e,t){if(t.objectStoreNames.contains(`groups`)){let n=e.target.transaction.objectStore(`groups`).getAll();n.onsuccess=()=>{let e=n.result;t.deleteObjectStore(`groups`);let r=t.createObjectStore(U.SCOOPS,{keyPath:`jid`});r.createIndex(`type`,`type`);for(let t of e)r.put(Nn(t))};return}t.objectStoreNames.contains(U.SCOOPS)||t.createObjectStore(U.SCOOPS,{keyPath:`jid`}).createIndex(`type`,`type`)}function Fn(e){e.objectStoreNames.contains(U.WEBHOOKS)||e.createObjectStore(U.WEBHOOKS,{keyPath:`id`}),e.objectStoreNames.contains(U.CRONTASKS)||e.createObjectStore(U.CRONTASKS,{keyPath:`id`})}function In(e){let t=e.target.result,n=e.oldVersion;n<1&&Mn(t),n<2&&Pn(e,t),n<3&&Fn(t)}function Ln(){if(!W)return null;let e=Object.values(U).every(e=>W.objectStoreNames.contains(e));return W.version===jn&&e?W:(W.close(),W=null,null)}function Rn(e){e.onversionchange=()=>{e.close(),W===e&&(W=null)},e.onclose=()=>{W===e&&(W=null)}}async function zn(){return Ln()||new Promise((e,t)=>{let n=indexedDB.open(An,jn);n.onupgradeneeded=In,n.onsuccess=()=>{let t=n.result;Rn(t),W=t,e(t)},n.onerror=()=>t(n.error)})}async function Bn(e,t=`readonly`){return(await zn()).transaction(e,t).objectStore(e)}async function Vn(e){let t=await Bn(U.STATE);return new Promise((n,r)=>{let i=t.get(e);i.onsuccess=()=>n(i.result?.value??null),i.onerror=()=>r(i.error)})}async function Hn(e,t){let n=await Bn(U.STATE,`readwrite`);return new Promise((r,i)=>{let a=n.put({key:e,value:t});a.onsuccess=()=>r(),a.onerror=()=>i(a.error)})}var G=c(`tray-leader`),Un=`leader-tray-session`,Wn=3e4,Gn=1e4,Kn=1e3,qn=3e4,Jn=2,Yn=20,K={state:`inactive`,session:null,error:null};function Xn(){return{...K,session:K.session?{...K.session}:null}}var q=new Set;function Zn(e){return q.add(e),()=>{q.delete(e)}}function J(e){if(K={...e,session:e.session?{...e.session}:null},q.size!==0)for(let e of[...q])try{e(Xn())}catch{}}var Qn=class{key;constructor(e=Un){this.key=e}async load(){return $n(await Vn(this.key))}async save(e){await Hn(this.key,JSON.stringify(e))}async clear(){await Hn(this.key,``)}};function $n(e){if(!e)return null;try{let t=JSON.parse(e);return typeof t.workerBaseUrl!=`string`||typeof t.trayId!=`string`||typeof t.createdAt!=`string`||typeof t.controllerId!=`string`||typeof t.controllerUrl!=`string`||typeof t.joinUrl!=`string`||typeof t.webhookUrl!=`string`||typeof t.runtime!=`string`?null:{workerBaseUrl:t.workerBaseUrl,trayId:t.trayId,createdAt:t.createdAt,controllerId:t.controllerId,controllerUrl:t.controllerUrl,joinUrl:t.joinUrl,webhookUrl:t.webhookUrl,leaderKey:typeof t.leaderKey==`string`?t.leaderKey:void 0,leaderWebSocketUrl:typeof t.leaderWebSocketUrl==`string`?t.leaderWebSocketUrl:null,runtime:t.runtime}}catch{return null}}var er=class{options;store;fetchImpl;webSocketFactory;pingIntervalMs;connectTimeoutMs;reconnectEnabled;reconnectBaseDelayMs;reconnectMaxDelayMs;reconnectBackoffMultiplier;reconnectMaxAttempts;reconnectSleep;socket=null;pingTimer=null;currentSession=null;stopped=!1;reconnecting=!1;reconnectGeneration=0;constructor(e){this.options=e,this.store=e.store??new Qn,this.fetchImpl=e.fetchImpl??ir(),this.webSocketFactory=e.webSocketFactory??(e=>new WebSocket(e)),this.pingIntervalMs=e.pingIntervalMs??Wn,this.connectTimeoutMs=e.connectTimeoutMs??Gn;let t=e.reconnect;this.reconnectEnabled=t!==!1;let n=t===!1||!t?{}:t;this.reconnectBaseDelayMs=n.baseDelayMs??Kn,this.reconnectMaxDelayMs=n.maxDelayMs??qn,this.reconnectBackoffMultiplier=n.backoffMultiplier??Jn,this.reconnectMaxAttempts=n.maxAttempts??Yn,this.reconnectSleep=n.sleep??(e=>new Promise(t=>setTimeout(t,e)))}async start(){if(this.stopped=!1,this.currentSession&&this.socket)return J({state:`leader`,session:this.currentSession,error:null}),this.currentSession;J({state:`connecting`,session:null,error:null}),this.currentSession=null;try{let e=await this.connectOnce();G.info(`Leader joined tray`,{trayId:e.trayId,controllerId:e.controllerId,runtime:e.runtime});try{this.options.onLeaderReady?.(e)}catch(e){G.warn(`onLeaderReady callback threw`,{error:e instanceof Error?e.message:String(e)})}return e}catch(e){throw J({state:`error`,session:this.currentSession,error:e instanceof Error?e.message:String(e)}),e}}stop(){this.stopped=!0,this.reconnecting=!1,this.reconnectGeneration++,this.tearDownSocket(),this.currentSession=null,J({state:`inactive`,session:null,error:null})}tearDownSocket(){this.pingTimer&&=(clearInterval(this.pingTimer),null);let e=this.socket;if(this.socket=null,e)try{e.close()}catch{}}async connectOnce(){let e=await this.store.load(),t=e?.workerBaseUrl===this.options.workerBaseUrl?e:null,n=await this.attachWithRecovery(t);this.currentSession=n;let r=await this.openLeaderSocket(n.leaderWebSocketUrl);return this.socket=r,this.startPingLoop(r),J({state:`leader`,session:n,error:null}),n}async handleUnexpectedDisconnect(e){if(this.stopped)return;if(!this.reconnectEnabled){G.warn(`Leader WebSocket dropped and auto-reconnect is disabled`,{reason:e}),this.tearDownSocket(),this.currentSession=null,J({state:`error`,session:null,error:`Leader WebSocket dropped: ${e}`});return}if(this.reconnecting)return;this.reconnecting=!0;let t=++this.reconnectGeneration;G.warn(`Leader WebSocket dropped — starting reconnect loop`,{reason:e}),this.tearDownSocket();let n=0,r=this.reconnectBaseDelayMs,i=e;for(;!this.stopped&&t===this.reconnectGeneration&&n<this.reconnectMaxAttempts&&(n++,J({state:`reconnecting`,session:this.currentSession,error:null,reconnectAttempts:n}),this.options.onReconnecting?.(n,i),G.info(`Leader reconnect attempt`,{attempt:n,delay:r}),await this.reconnectSleep(r),!(this.stopped||t!==this.reconnectGeneration));){try{let e=await this.connectOnce();if(this.stopped||t!==this.reconnectGeneration){this.tearDownSocket();break}this.reconnecting=!1,G.info(`Leader reconnect successful`,{attempt:n,trayId:e.trayId}),this.options.onReconnected?.(e);try{this.options.onLeaderReady?.(e)}catch(e){G.warn(`onLeaderReady callback threw`,{error:e instanceof Error?e.message:String(e)})}return}catch(e){i=e instanceof Error?e.message:String(e),G.warn(`Leader reconnect attempt failed`,{attempt:n,error:i}),this.tearDownSocket()}r=Math.min(r*this.reconnectBackoffMultiplier,this.reconnectMaxDelayMs)}!this.stopped&&t===this.reconnectGeneration&&(this.reconnecting=!1,this.currentSession=null,J({state:`error`,session:null,error:`Leader reconnect failed after ${n} attempts: ${i}`,reconnectAttempts:n}),G.warn(`Leader reconnect gave up`,{attempts:n,lastError:i}),this.options.onReconnectGaveUp?.(i,n))}async clearSession(){await this.store.clear()}sendControlMessage(e){if(!this.socket)throw Error(`Tray leader WebSocket is not connected`);this.socket.send(JSON.stringify(e))}async attachWithRecovery(e){try{return await this.claimLeaderSession(e)}catch(t){if(!e||!nr(t))throw t;return G.warn(`Stored tray session is stale, creating a fresh tray`,{trayId:e.trayId,error:t instanceof Error?t.message:String(t)}),await this.store.clear(),this.claimLeaderSession(null)}}async claimLeaderSession(e){let t=e??await this.createTraySession(),n=await this.fetchJson(t.controllerUrl,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({controllerId:t.controllerId,leaderKey:t.leaderKey,runtime:this.options.runtime})});if(n.role!==`leader`||!n.leaderKey||!n.websocket?.url)throw Error(`Tray attach did not return leader access for controller ${n.controllerId}`);let r={...t,trayId:n.trayId,controllerId:n.controllerId,leaderKey:n.leaderKey,leaderWebSocketUrl:n.websocket.url,runtime:this.options.runtime};return await this.store.save(r),r}async createTraySession(){let e=this.options.kind?JSON.stringify({kind:this.options.kind}):void 0,t=await this.fetchJson(g(this.options.workerBaseUrl,`tray`),{method:`POST`,...e?{headers:{"content-type":`application/json`}}:{},...e?{body:e}:{}});return{workerBaseUrl:this.options.workerBaseUrl,trayId:t.trayId,createdAt:t.createdAt,controllerId:crypto.randomUUID(),controllerUrl:t.capabilities.controller.url,joinUrl:t.capabilities.join.url,webhookUrl:t.capabilities.webhook.url,runtime:this.options.runtime}}async openLeaderSocket(e){return await new Promise((t,n)=>{let r=this.webSocketFactory(e),i=!1,a=setTimeout(()=>{o(`Tray leader WebSocket timed out after ${this.connectTimeoutMs}ms waiting for leader.connected`);try{r.close(1e3,`leader.connected timeout`)}catch{}},this.connectTimeoutMs),o=e=>{i||(i=!0,clearTimeout(a),n(Error(e)))};r.addEventListener(`message`,e=>{let n=rr(e.data);if(n){if(n.type===`leader.connected`){i||(i=!0,clearTimeout(a),t(r));return}if(n.type===`pong`){G.debug(`Tray leader heartbeat acknowledged`,{trayId:this.currentSession?.trayId});return}this.options.onControlMessage?.(n)}}),r.addEventListener(`close`,()=>o(`Tray leader WebSocket closed before leader.connected`)),r.addEventListener(`error`,()=>o(`Tray leader WebSocket failed before leader.connected`))})}startPingLoop(e){this.pingTimer&&clearInterval(this.pingTimer);let t=t=>{this.stopped||this.socket!==e||this.handleUnexpectedDisconnect(t).catch(e=>{G.warn(`Leader reconnect loop crashed`,{error:e instanceof Error?e.message:String(e)})})},n=()=>{try{e.send(JSON.stringify({type:`ping`}))}catch(e){t(`Leader ping send failed: ${e instanceof Error?e.message:String(e)}`)}};n(),this.pingTimer=setInterval(n,this.pingIntervalMs),e.addEventListener(`close`,()=>t(`Leader WebSocket closed`)),e.addEventListener(`error`,()=>t(`Leader WebSocket errored`))}async fetchJson(e,t){let n=await this.fetchImpl(e,t);if(!n.ok)throw await tr.fromResponse(n);return await n.json()}},tr=class e extends Error{status;code;constructor(e,t,n){super(n),this.status=e,this.code=t,this.name=`LeaderTrayHttpError`}static async fromResponse(t){try{let n=await t.json();return new e(t.status,n.code??null,n.error??`Tray request failed (${t.status})`)}catch{return new e(t.status,null,`Tray request failed (${t.status})`)}}};function nr(e){return e instanceof tr&&[403,404,410].includes(e.status)}function rr(e){if(typeof e!=`string`)return null;try{return JSON.parse(e)}catch{return null}}function ir(e=fetch){return typeof chrome<`u`&&chrome?.runtime?.id?(t,n)=>e(t,n):async(t,n={})=>{let r=typeof t==`string`?t:t.toString();try{if(new URL(r).origin===window.location.origin)return e(r,{...n,cache:`no-store`})}catch{}let i=new Headers(n.headers);i.set(`X-Target-URL`,r);let a=await e(`/api/fetch-proxy`,{...n,headers:i,cache:`no-store`});if(v(a))throw Error(await y(a));return a}}var Y=c(`offscreen-client`),ar=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){Y.error(`onScoopSelected handler threw`,{error:e instanceof Error?e.message:String(e)})}}locked=!1;constructor(e,t){this.callbacks=e,this.transport=t??kn(),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}Y.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})}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?(Y.warn(`Offscreen restarted — re-requesting state`),this.ready=!1):Y.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;or(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){Y.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}-${X()}`,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}-${X()}`,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}-${X()}`,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}-${X()}`;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){Y.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&&or(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){Y.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 X(){return Date.now().toString(36)+Math.random().toString(36).slice(2,8)}function or(e,t){J({state:e.state,error:e.error,reconnectAttempts:e.reconnectAttempts,session:e.session?{...e.session}:null}),u({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 Z(e){return!e.includes(`\0`)}function sr(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(!Z(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(!Z(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),!Z(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),!Z(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(Z(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 cr(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 lr(e){let t=cr(e);return{onMessage:e=>t.onMessage(e),send:(e,n)=>{t.send({source:`panel`,payload:e},n)}}}function ur(e,t){let n=cr(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 dr(){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 fr(e){let{worker:t,realCdpTransport:n,callbacks:r}=e,i=e.readyTimeoutMs??3e4,a=e.localStorageSeed??{},o=new MessageChannel,s=new MessageChannel,c=new ar(r,lr(o.port1)),l=ur(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};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 pr(e){return fr({worker:e.workerUrl?new Worker(e.workerUrl,{type:`module`}):new Worker(new URL(`/assets/kernel-worker-DuaByjq4.js`,``+import.meta.url),{type:`module`}),realCdpTransport:e.realCdpTransport,callbacks:e.callbacks,readyTimeoutMs:e.readyTimeoutMs,localStorageSeed:e.localStorageSeed??dr(),instanceId:e.instanceId,localApiBaseUrl:e.localApiBaseUrl,bridgeToken:e.bridgeToken,localLickWsUrl:e.localLickWsUrl})}function mr(){return typeof crypto<`u`&&typeof crypto.randomUUID==`function`?crypto.randomUUID():`slicc-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`}var hr=[100,200,400,800,1600];async function gr(e,t,n,r=hr,i=e=>new Promise(t=>setTimeout(t,e))){let a=r.length+1,o=null;for(let s=0;s<a;s++)try{await e.connect(t),s>0&&n.info(`CDP bridge connect succeeded after retry`,{attempt:s+1});return}catch(e){o=e,s<r.length&&await i(r[s]??0)}n.warn(`Initial CDP connect failed after retries; worker-forwarded commands will retry on demand`,o instanceof Error?o.message:String(o))}async function _r(e){let{runtimeMode:n,envBaseUrl:r,window:i,log:a}=e,o=n===`electron-overlay`;a.info(`starting standalone with kernel worker`);let{BrowserAPI:s}=await t(async()=>{let{BrowserAPI:e}=await import(`./cdp-D4JkCTey.js`);return{BrowserAPI:e}},__vite__mapDeps([25,5,26,1]));await Ve({log:a});let c=await m(),u=_(o?`electron-overlay`:`standalone`,c!==null)?p:null;await d({locationHref:i.location.href,storage:i.localStorage,envBaseUrl:r,defaultWorkerBaseUrl:u,runtimeConfigFetcher:async()=>c});let f,h,g,v=null,y=null,b=null;if(n===`cherry`){let{setupCherryFollower:e}=await t(async()=>{let{setupCherryFollower:e}=await import(`./main-cherry-B1mI8ArD.js`);return{setupCherryFollower:e}},__vite__mapDeps([27,25,5,26,1])),n=await e();f=n.browser,h=n.joinUrl,g=n.transport}else{f=new s;let e=l(i.location.search);e&&(a.info(`Routing CDP through local standalone bridge`,{url:e.url}),e.apiBaseUrl&&(v=e.apiBaseUrl,ee(e.apiBaseUrl),y=e.token,te(e.token)),e.lickWsUrl&&(b=e.lickWsUrl));let t=e?{url:e.url,protocols:e.subprotocol}:void 0;await gr(f,t,a)}let x=f.getTransport();return globalThis.__slicc_browser=f,{browser:f,realCdpTransport:x,cherryJoinUrl:h,cherryTransport:g,instanceId:mr(),isElectronOverlay:o,localApiBaseUrl:v,bridgeToken:y,localLickWsUrl:b}}var vr=`<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 yr(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 br(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(vr));let a=()=>{r.style.color=`var(--green)`,setTimeout(()=>{r.style.color=`var(--txt-3)`},1500)};return r.addEventListener(`short-click`,()=>{(async()=>{await t(yr(e.getMessages())??P([...e.getMessages()])),a()})()}),r.addEventListener(`long-press`,()=>{(async()=>{let n=P([...e.getMessages()]);n&&(await t(n),a())})()}),n.append(r),n}function Q(){return`msg-${Date.now()}-${Math.random().toString(36).slice(2,8)}`}function xr(e){let t={id:e.id,text:e.content};return e.attachments?.length&&(t.attachments=e.attachments.length),t}var Sr=class{#e;#t;#n;#r;#i;#a;#o;#s;#c;#l;#u;#d;#f=[];#p=[];#m=new Map;#h=null;#g=null;#_=``;#v=!1;#y=!1;#b=null;#x=new Set;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.agent.onEvent(e=>this.#O(e)),this.#d=e=>this.#L(e),this.#e.addEventListener(`slicc-error-retry`,this.#d)}dispose(){this.#l(),this.#e.removeEventListener(`slicc-error-retry`,this.#d)}get processing(){return this.#y}getMessages(){return this.#f.map(e=>({...e}))}setAgent(e){this.#l(),this.#t=e,this.#l=e.onEvent(e=>this.#O(e))}setOnLocalUserMessage(e){this.#u=e}addUserMessage(e,t){this.#B({id:Q(),role:`user`,content:e,timestamp:Date.now()})}getQueuedMessages(){return this.#p.map(xr)}removeQueuedMessage(e){let t=this.#p.filter(t=>t.id!==e);t.length!==this.#p.length&&(this.#p=t,this.#C())}#S(){if(this.#p.length===0)return;let e=this.#p;this.#p=[];for(let t of e)this.#B(t);this.#C()}#C(){this.#s?.(this.#p.map(xr))}addAssistantMessage(e){this.#B({id:Q(),role:`assistant`,content:e,timestamp:Date.now()})}loadMessages(e){for(let e of this.#m.keys())this.#i?.(e);if(this.#p.length>0){if(this.#c)for(let e of this.#p)try{this.#c(e.id)}catch(e){console.error(`onQueuedCancel hook threw`,e)}this.#p=[],this.#C()}this.#f=Ae(e);let t=[...this.#f].reverse().find(e=>e.isStreaming);this.#h=t?.id??null,t&&(this.#g=t.id),this.#_=``,this.#v=!1,this.#m.clear();let n=[],r=``;for(let e of this.#f){let t=new Date(e.timestamp).toDateString();t!==r&&(n.push(Ne(e.timestamp)),r=t);let i=this.#z(e);this.#m.set(e.id,i),n.push(...i)}let i=this.#e;typeof i.replaceContent==`function`?i.replaceContent(...n):i.replaceChildren(...n),this.#W();for(let e of this.#f)e.isStreaming||this.#r?.(e,this.#m.get(e.id)??[]);this.#D(),this.#K()}sendUserMessage(e,t,n){let r=e.trim();if(!r&&!t?.length)return;let i=n?.dictation?this.#w(r):r,a={id:Q(),role:`user`,content:i,timestamp:Date.now(),attachments:t?.length?t:void 0};this.#y?(this.#p.push(a),this.#C()):this.#B(a),this.#t.sendMessage(i,a.id,a.attachments),this.#T();try{let e=n?.dictation?Ce(i):i;this.#u?.(e,a.id,a.attachments)}catch(e){console.error(`onLocalUserMessage hook threw`,e)}}#w(e){return Oe(e,Te())}#T(){if(this.#o)try{let e=this.#o();if(!e)return;h(e.scoopName,e.model)}catch{}}addLickMessage(e,t,n,r,i){let a=this.#f[this.#f.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.#V(a);return}this.#B({id:e,role:`user`,content:t,timestamp:r,source:`lick`,channel:n,lickId:i,lickState:i?`pending`:void 0,queued:this.#y?!0:void 0})}updateLickState(e,t){let n=this.#f.find(t=>t.lickId===e);n&&(n.lickState=t,this.#V(n))}setProcessing(e){this.#y!==e&&(this.#y=e,e&&(this.#g=null),e&&this.#S(),e||this.#D(),this.#n?.(e),e||this.#E())}#E(){let e=this.#g;if(this.#g=null,!this.#a)return;let t=e?this.#R(e):null;this.#a(t?{...t}:null)}#D(){let e=this.#f[this.#f.length-1];if(!(e?.role===`assistant`&&!e.isStreaming)){this.#b?.remove();return}this.#b??=br({getMessages:()=>this.getMessages()}),(this.#e.inner??this.#e).append(this.#b)}#O(e){switch(e.type){case`message_start`:this.#k(e.messageId);break;case`content_delta`:this.#A(e.messageId,e.text);break;case`content_done`:this.#M(e.messageId);break;case`tool_use_start`:this.#N(e.messageId,e.toolName,e.toolInput);break;case`tool_result`:this.#P(e.messageId,e.toolName,e.result,e.isError);break;case`turn_end`:this.#F(e.messageId);break;case`error`:this.#I(e.error);break;default:break}}#k(e){this.setProcessing(!0),this.#h=e,this.#g=e,this.#B({id:e,role:`assistant`,content:``,timestamp:Date.now(),isStreaming:!0,toolCalls:[]})}#A(e,t){this.#R(e)&&(this.#_+=t,!this.#v&&(this.#v=!0,requestAnimationFrame(()=>this.#j(e))))}#j(e){if(this.#v=!1,!this.#_)return;let t=this.#R(e);t&&(t.content+=this.#_,this.#_=``,this.#V(t))}#M(e){let t=this.#R(e);t&&(this.#_&&this.#h===e&&(t.content+=this.#_),this.#_=``,this.#v=!1,t.isStreaming=!1,this.#V(t))}#N(e,t,n){let r=this.#R(e);r&&(r.toolCalls=r.toolCalls??[],r.toolCalls.push({id:Q(),name:t,input:n}),this.#V(r))}#P(e,t,n,r){let i=this.#R(e),a=[...i?.toolCalls??[]].reverse().find(e=>e.name===t&&e.result===void 0);!i||!a||(a.result=n,a.isError=r,this.#V(i))}#F(e){let t=this.#R(e);t?.isStreaming&&(t.isStreaming=!1,this.#V(t)),this.#h=null,this.setProcessing(!1)}#I(e){this.setProcessing(!1),this.#B({id:Q(),role:`assistant`,content:e,timestamp:Date.now(),error:!0})}#L(e){if(this.#y)return;let t=e.detail?.messageId??null,n=this.#f.length;if(t){let e=this.#f.findIndex(e=>e.id===t);e>=0&&(n=e)}let r=n>0?this.#f[n-1]:void 0;if(r&&r.source===`lick`&&!r.queued){this.#t.sendMessage(r.content,Q(),r.attachments);return}let i;for(let e=n-1;e>=0;e--){let t=this.#f[e];if(t.role===`user`&&t.source!==`lick`&&t.source!==`delegation`&&!t.queued){i=t;break}}i&&this.#t.sendMessage(i.content,Q(),i.attachments)}#R(e){return this.#f.find(t=>t.id===e)}#z(e){try{return we(e)}catch(t){console.error(`[wc-chat] message render failed — degrading to plain bubble`,t);let n=document.createElement(e.role===`assistant`?`slicc-agent-message`:`slicc-user-message`);return n.setAttribute(`text`,String(e.content??``)),[n]}}#B(e){this.#U(),this.#f.push(e);let t=this.#z(e);this.#m.set(e.id,t),this.#e.append(...t),this.#W(),e.isStreaming||this.#r?.(e,t),e.role===`user`?this.#K():this.#q()}#V(e){this.#U(),this.#i?.(e.id);let t=this.#m.get(e.id)??[],n=this.#z(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.#m.set(e.id,n),this.#W(),e.isStreaming||this.#r?.(e,n),this.#q()}#H(){return this.#e.inner??this.#e}#U(){Fe(this.#H(),this.#x)}#W(){De(this.#H(),{openClusterAnchors:this.#x,toolCallLookup:(e,t)=>this.#G(e,t)})}#G(e,t){return this.#f.find(t=>t.id===e)?.toolCalls?.find(e=>e.id===t)}#K(){this.#e.scrollTop=this.#e.scrollHeight}#q(){let e=this.#e;typeof e.requestFollow==`function`?e.requestFollow():this.#K()}};function Cr(e){return`${new Date(e.frozenAt).toLocaleDateString(void 0,{month:`short`,day:`numeric`})} · ${e.messageCount} turns`}function wr(e){let t=document.createElement(`slicc-freezer-card`);return t.setAttribute(`title`,e.title),t.setAttribute(`meta`,Cr(e)),t.setAttribute(`slug`,e.filename),e.icon&&t.setAttribute(`icon`,e.icon),t}async function Tr(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 Er(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(L,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 Er(e){let t=await Dr(e);return t.kind===`ok`?t.entries:t.kind===`missing`?[]:null}async function Dr(e){let t;try{let n=await e.readFile(L,{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 Or(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 kr(e,t){for(let t of Array.from(e.querySelectorAll(`slicc-freezer-card`)))t.remove();e.append(...t.map(wr))}async function Ar(e,t){let n=await e.readFile(z(t),{encoding:`utf-8`}),r=B(typeof n==`string`?n:new TextDecoder().decode(n));return{title:r.title||t.title,messages:r.messages}}var jr=`/workspace/CLAUDE.md`,$=64;function Mr(e){if(e.length<=$)return{title:e,summary:``};let t=e.lastIndexOf(` `,$),n=t>$/2?t:$;return{title:`${e.slice(0,n)}…`,summary:e.slice(n).trim()}}function Nr(e){let t=[],n=null,r=()=>{if(!n)return;let e=n.join(` `).trim();e&&t.push(Mr(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(Mr(e.trim())),t}async function Pr(e){let t=``;try{let n=await e.readFile(jr,{encoding:`utf-8`});t=typeof n==`string`?n:new TextDecoder().decode(n)}catch{t=``}return Nr(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 Fr=[`/workspace`,`/shared`],Ir=3,Lr=200;async function Rr(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,Lr)){let i=`${t}/${r.name}`;r.type===`directory`?o.push({kind:`dir`,id:i,label:r.name,children:n<Ir?await Rr(e,i,n+1):[]}):o.push({kind:`file`,id:i,label:r.name,path:i})}return o}async function zr(e){let t=[];for(let n of Fr)t.push({kind:`group`,label:`${n.slice(1)}/`}),t.push(...await Rr(e,n,1));return t}function Br(e){let t=!1;return n=>{if(n===`files`){e.openFs().then(async t=>{e.fileTree.items=await zr(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 Pr(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 Vr={off:`off`,low:`low`,medium:`medium`,high:`high`,xhigh:`xhigh`,max:`xhigh`},Hr={off:`off`,minimal:`low`,low:`low`,medium:`medium`,high:`high`,xhigh:`xhigh`};function Ur(e){return e?Vr[e]:void 0}function Wr(e){return(e&&Hr[e])??`off`}function Gr(e,t){return e!=null&&e!==`cone`||new URL(t.location.href).searchParams.get(`cherry`)===`1`?!0:f(t.localStorage)}function Kr(e){return e===`error`?`dead`:e===`initializing`?`none`:`open`}function qr(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:S(e),label:e.isCone?`sliccy`:e.name,eyes:Kr(t?.get(e.jid)),fill:typeof r==`number`?Math.round(r*100):void 0}})}function Jr(e){let t=()=>{let t=e.getClient();t&&(e.refs.switcher.scoops=qr(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),Kr(i)!==Kr(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`&&je(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 Yr(e,n){e.thread.setAttribute(`context`,n.isCone?`cone`:`scoop:${n.name}`),e.thread.setAttribute(`accent`,S(n)),ke(e,n.isCone?{kind:`cone`}:{kind:`scoop`,accent:S(n)}),e.switcher.setAttribute(`active`,n.jid),e.composerMeta.setAttribute(`thinking`,Wr(n.config?.thinkingLevel));try{let{resolveCurrentModel:r,resolveModelById:i}=await t(async()=>{let{resolveCurrentModel:e,resolveModelById:t}=await import(`./main-D-3iO2Pb.js`).then(e=>e.r);return{resolveCurrentModel:e,resolveModelById:t}},__vite__mapDeps([17,3,18,5,4,6,7,8,9,10,1,11,12,13,14,15,19])),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 Xr(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 Er(r);if(a===null){if((await Dr(r)).kind!==`corrupt`||(l.warn(`WC freezer index corrupt — rebuilding from archives`),a=await Or(r),a.length===0))return;await i.writeFile(L,JSON.stringify(a,null,2))}e===d&&(u=a,kr(n.freezer,a),!f&&a.some(e=>!e.icon&&!e.pendingEnrichment)&&(f=!0,t(async()=>{let{pickLucideIcon:e}=await import(`./quick-llm-pCxnbK4A.js`).then(e=>e.n);return{pickLucideIcon:e}},__vite__mapDeps([2,3,4,5,6,7,8,9,10,1,11,12,13,14,15,16,17,18,19,20])).then(({pickLucideIcon:e})=>Tr({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-BjrjaQDu.js`);return{runNewSessionFreeze:e,runNewSessionFreezeQuick:t}},__vite__mapDeps([28,5,4,3,6,7,8,9,10,1,11,12,13,14,15,17,18,19,20,29]));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-BGaEWRGh.js`).then(e=>e.g);return{resetDictationPriming:e}},__vite__mapDeps([30,3,5,16,17,18,4,6,7,8,9,10,1,11,12,13,14,15,19,31,32,33])).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 Er(t)??[]).find(t=>t.filename===e);let{messages:o}=await Ar(t,i??{filename:e,title:e,frozenAt:``,messageCount:0});a()?.loadMessages(o),n.thread.setAttribute(`context`,`freezer:${i?.filename??e}`),n.thread.setAttribute(`accent`,Pe),ke(n,{kind:`freezer`}),n.inputCard.setAttribute(`disabled`,``),n.switcher.removeAttribute(`active`),c()}catch(e){if(l.error(`WC thaw failed`,e),!o()){let e=i.getScoops().find(e=>e.isCone);e&&s(e)}}};return n.freezer.addEventListener(`freezer-card-select`,e=>{let t=e.detail?.slug;t&&_(t)}),{refreshFreezer:p,openFrozen:_}}function Zr(e,t){let n=null,r=Me(e,{messages:[],scoops:[],floatLabel:t,placeholder:`Ask sliccy, or describe a change…`,onSurfaceActivate:e=>n?.(e),urlState:!0}),i=null,a=null,o=null,s=!1,c=new Set,l=e=>{if(o=e,!a)return;let t=a.selectedScoopJid;if(t&&t!==e.jid){let e=i?.getQueuedMessages()??[];for(let n of e)a.deleteQueuedMessage(t,n.id).catch(()=>void 0)}a.setSelectedScoopJid(e.jid),r.inputCard.removeAttribute(`disabled`),Yr(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 Qr(e){let n=null;return()=>(n??=(async()=>{let[{createRemoteVfsClient:n},{createRemoteWritableVfsClient:r}]=await Promise.all([t(()=>import(`./remote-vfs-client-BwJhhtIV.js`),__vite__mapDeps([34,35])),t(()=>import(`./writable-vfs-client-DMYsajEE.js`),__vite__mapDeps([36,35]))]);return{reader:n({transport:e.getTransport()}),writer:r({transport:e.getTransport()})}})(),n)}function $r(e,n,r,i,a){e.onClientReady(()=>{i.intercept||t(async()=>{let{wireWcOnboarding:e}=await import(`./wc-onboarding-DpKk5u_V.js`);return{wireWcOnboarding:e}},__vite__mapDeps([37,5,17,3,18,4,6,7,8,9,10,1,11,12,13,14,15,19,38])).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 ei(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([39,5])).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([40,3])).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([41,1,31])).then(({playCue:t})=>t(e.type===`tool_use_start`?`tool-start`:`tool-finish`)).catch(()=>void 0)});let u=new Sr({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-UcYXGV0I.js`);return{consumeVoiceSubmission:e,speakReplyMarkdown:t}},__vite__mapDeps([42,1,43,44,3,5,45,46])).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([41,1,31]));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&&(St(t),c.delete(e))},onMessageRendered:(e,t)=>{let n=t[0];n&&c.set(e.id,xt(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)},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 ti(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-CGPP_IEm.js`);return{createPlaceholderRefresher:e}},__vite__mapDeps([47,5,30,3,16,17,18,4,6,7,8,9,10,1,11,12,13,14,15,19,31,32,33])).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(Gr(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-B62W7N_T.js`);return{wireWcAttach:e}},__vite__mapDeps([48,5])).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-NFd-CALu.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=Ee(e);if(!r)return;let i=e.detail?.source===`dictation`;i&&(t(async()=>{let{markVoiceSubmission:e}=await import(`./voice-reply-UcYXGV0I.js`);return{markVoiceSubmission:e}},__vite__mapDeps([42,1,43,44,3,5,45,46])).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([41,1,31])).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=Ur(t),a=n.getSelected();a&&i&&r.setScoopThinkingLevel(a.jid,i)})}function ni(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=qr(t.getScoops(),e.statuses,e.fills)}})};return setInterval(n,15e3),n}function ri(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 ii(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)}),oi({switcher:n.switcher,getScoops:()=>t.getScoops(),lastActivity:e.wiring.lastActivity})}function ai(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 oi(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-pCxnbK4A.js`).then(e=>e.n);return{quickLabel:e}},__vite__mapDeps([2,3,4,5,6,7,8,9,10,1,11,12,13,14,15,16,17,18,19,20]))).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 si(e,n,r){let{RemoteTerminalView:i}=await t(async()=>{let{RemoteTerminalView:e}=await import(`./remote-terminal-view-CSqiig2G.js`);return{RemoteTerminalView:e}},__vite__mapDeps([49,5,50,3,21,1,24,23,51,22,52,15])),{fetchSecretEnvVars:a}=await t(async()=>{let{fetchSecretEnvVars:e}=await import(`./secret-env-DcfTe28K.js`);return{fetchSecretEnvVars:e}},__vite__mapDeps([53,1])),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 ci(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 li(e,n,r,i={}){let{refs:a}=e;e.setClient(n);let o=null,s=ni(e.wiring,n),c=()=>o?.(),l={intercept:null},{controller:u,agentHandle:d}=ei(a,n,()=>e.getSelected(),ai({boot:e,triggerPlaceholder:c,refreshStats:s}),l);e.setController(u),e.onClientReady(s);let f=Qr(n),p=async()=>(await f()).reader;i.standalone?.runtimeMode!==`cherry`&&$r(e,n,f,l,r),ti({boot:e,client:n,agentHandle:d,setRefreshPlaceholder:e=>{o=e},triggerPlaceholder:c,openReader:p,openWriter:async()=>(await f()).writer,log:r}),ii(e,n),ri(e,i,r),e.setActivateSurface(Br({fileTree:a.fileTree,termSurface:a.termSurface,memoryHost:a.memoryHost,openFs:p,mountTerminal:t=>si(e,n,t),log:r}));let{refreshFreezer:m,openFrozen:h}=Xr({refs:a,openVfs:f,client:n,getController:()=>e.getController(),getSelected:()=>e.getSelected(),selectScoop:e.selectScoop,clearSelection:e.clearSelection,log:r});m(),e.onClientReady(m),ci(e,n,h),f().then(async({reader:e})=>{let{installPreviewVfsResponder:n}=await t(async()=>{let{installPreviewVfsResponder:e}=await import(`./preview-vfs-responder-dyQBWIl5.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([54,35])),{wireWcSprinkles:l}=await t(async()=>{let{wireWcSprinkles:e}=await import(`./wc-sprinkles-B5_aCIM5.js`);return{wireWcSprinkles:e}},__vite__mapDeps([55,5])),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-kVPhrwG1.js`);return{wireWcTray:e}},__vite__mapDeps([56,5,4,3,6,7,8,9,10,1,11,12,13,14,15,50,17,18,19,26,57,58,40])),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,cherryJoinUrl:i.standalone.cherryJoinUrl,cherryTransport:i.standalone.cherryTransport,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-DWMYNnDA.js`);return{wireWcNav:e}},__vite__mapDeps([59,5,17,3,18,4,6,7,8,9,10,1,11,12,13,14,15,19])).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([60,5])).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}=await import(`./composer-speech-DYshRh0w.js`);return{getComposerSpeech:e}},__vite__mapDeps([61,1,62,5,45,46,32])).then(({getComposerSpeech:e})=>{let t=a.composer;t.speech=e(),t.setAttribute(`ptt`,``)}).catch(e=>r.error(`WC push-to-talk wiring failed`,e))}async function ui(e,n,r=`standalone`){let{browser:i,realCdpTransport:a,instanceId:o,cherryJoinUrl:s,cherryTransport:c,localApiBaseUrl:l,bridgeToken:u,localLickWsUrl:d}=await _r({runtimeMode:r,envBaseUrl:null,window,log:n}),{resolveStandaloneFloatLabel:f,DEFAULT_STANDALONE_LABEL:p}=await t(async()=>{let{resolveStandaloneFloatLabel:e,DEFAULT_STANDALONE_LABEL:t}=await import(`./wc-float-label-dfUH87GD.js`);return{resolveStandaloneFloatLabel:e,DEFAULT_STANDALONE_LABEL:t}},[]),m=r===`standalone`||r===`electron-overlay`?await f():p,h=Zr(e,m),g=pr({realCdpTransport:a,instanceId:o,callbacks:Jr(h.wiring),localApiBaseUrl:l,bridgeToken:u,localLickWsUrl:d});sr({send:e=>g.client.sendRaw(e)}),li(h,g.client,n,{instanceId:o,standalone:{browser:i,realCdpTransport:a,runtimeMode:r,cherryJoinUrl:s,cherryTransport:c,baseFloatLabel:m}});let{setupSudoStandalone:_}=await t(async()=>{let{setupSudoStandalone:e}=await import(`./setup-sudo-KPDfIsQ7.js`);return{setupSudoStandalone:e}},[]);await _({log:n}),await g.ready,h.wiring.notifyReady?.(),n.info(`WC live shell ready`,{scoops:g.client.getScoops().length})}export{Ve as _,L as a,li as attachWcClient,z as c,Jr as createWcLiveCallbacks,rt as d,St as f,He as g,it as h,Zn as i,B as l,M as m,ui as mountWcUiLive,er as n,dn as o,xt as p,Zr as prepareWcShell,Xn as r,Gt as s,ar as t,un as u};
252
+ `}\n${o}\n\n${t}\n`;await e.writeFile(i,a+s);try{await Vt({vfs:e,model:r?.model,apiKey:r?.apiKey,headers:r?.headers,signal:r?.signal})}catch(e){F.warn(`Cone memory budget step threw (append already committed)`,{error:e instanceof Error?e.message:String(e)})}}async function ln(e,t){let n=[];try{let t=await e.readFile(L,{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(L,JSON.stringify(r,null,2))}async function un(e){try{let t=await e.readFile(L,{encoding:`utf-8`}),n=typeof t==`string`?t:new TextDecoder().decode(t),r=JSON.parse(n);return Array.isArray(r)?r:[]}catch{return[]}}function z(e){return`${I}/${e.filename}`}async function dn(e,t,n){if(!t.pendingEnrichment)return null;let r=await pn(e,t);if(r===null)return null;let i=mn(t,r);if(i===null)return null;let a=await hn(t,i,n);if(a===null)return null;let o=await fn(n,a.newTitle);return await gn(e,t,a.bullets,n),await _n(e,t,r,a.newTitle,o)}async function fn(e,t){if(e.pickIcon)try{return await qt(await e.pickIcon({subject:`"${t}" — an archived chat session`})??void 0)}catch(e){F.warn(`Enrichment icon pick failed (continuing without icon)`,{error:e instanceof Error?e.message:String(e)});return}}async function pn(e,t){try{let n=await e.readFile(z(t),{encoding:`utf-8`});return typeof n==`string`?n:new TextDecoder().decode(n)}catch(e){return e?.code===`ENOENT`?F.info(`Pending archive missing — treating as already enriched`,{filename:t.filename}):F.warn(`Failed to read pending archive (entry stays pending)`,{filename:t.filename,error:e instanceof Error?e.message:String(e)}),null}}function mn(e,t){let n;try{n=B(t).messages}catch(t){return F.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?(F.info(`Pending archive has no messages — skipping enrichment`,{filename:e.filename}),null):Qt(n)}async function hn(e,t,n){let r=``;try{r=await o({messages:t,instruction:s,model:n.model,apiKey:n.apiKey,maxTokens:Ut,headers:n.headers})}catch(t){return F.warn(`Enrichment memory call failed (entry stays pending)`,{filename:e.filename,error:t instanceof Error?t.message:String(t)}),null}let i=``;try{i=rn(await o({messages:t,instruction:a,model:n.model,apiKey:n.apiKey,maxTokens:Wt,headers:n.headers}))}catch(t){return F.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}:(F.info(`Enrichment title call returned empty — entry stays pending`,{filename:e.filename}),null)}async function gn(e,t,n,r){let i=n.trim();if(!(!i||i===`NONE`))try{await cn(e,i,`pending-enrichment`,{model:r.model,apiKey:r.apiKey,headers:r.headers})}catch(e){F.warn(`Enrichment memory append failed (continuing with title rewrite)`,{filename:t.filename,error:e instanceof Error?e.message:String(e)})}}async function _n(e,t,n,r,i){let a=z(t),o=vn(n,r),s=`${t.frozenAt.replace(/[:.]/g,`-`)}-${on(r)}.md`,c=`${I}/${s}`;try{await R(e,I),await e.writeFile(c,o)}catch(e){return F.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 bn(e,t.filename,u)}catch(e){return F.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){F.info(`Stale pending archive cleanup failed (harmless)`,{oldPath:a,error:e instanceof Error?e.message:String(e)})}try{await e.flush()}catch{}return F.info(`Pending session enriched`,{oldFilename:t.filename,newFilename:s,title:r}),u}function vn(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 yn=Promise.resolve();async function bn(e,t,n){let r=async()=>{let r=[];try{let t=await e.readFile(L,{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(L,JSON.stringify(a,null,2))},i=yn.then(r,r);return yn=i.then(()=>void 0,()=>void 0),i}function B(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:xn(t)}}function xn(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 Sn=`__slicc_binary__`,Cn=`b64`;function wn(e){if(!e||typeof e!=`object`)return!1;let t=e;return t[Sn]===Cn&&typeof t.data==`string`}function Tn(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 En(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 V(e){if(e instanceof Uint8Array)return{[Sn]:Cn,data:Tn(e)};if(Array.isArray(e))return e.map(V);if(e&&typeof e==`object`){let t={};for(let[n,r]of Object.entries(e))t[n]=V(r);return t}return e}function H(e){if(wn(e))return En(e.data);if(Array.isArray(e))return e.map(H);if(e&&typeof e==`object`){let t={};for(let[n,r]of Object.entries(e))t[n]=H(r);return t}return e}var Dn=c(`panel-transport`);function On(e){return typeof e==`object`&&!!e&&`source`in e&&`payload`in e}function kn(){return{onMessage:e=>{let t=(t,n,r)=>(On(t)&&e(H(t)),!1);return chrome.runtime.onMessage.addListener(t),()=>chrome.runtime.onMessage.removeListener(t)},send:(e,t)=>{let n=V(e);chrome.runtime.sendMessage({source:`panel`,payload:n}).catch(e=>{Dn.error(`failed to send to offscreen`,{error:e instanceof Error?e.message:String(e)})})}}}var An=`slicc-groups`,jn=3,U={SCOOPS:`scoops`,MESSAGES:`messages`,SESSIONS:`sessions`,TASKS:`tasks`,STATE:`state`,WEBHOOKS:`webhooks`,CRONTASKS:`crontasks`},W=null;function Mn(e){if(!e.objectStoreNames.contains(U.MESSAGES)){let t=e.createObjectStore(U.MESSAGES,{keyPath:`id`});t.createIndex(`chatJid`,`chatJid`),t.createIndex(`timestamp`,`timestamp`),t.createIndex(`chatJid_timestamp`,[`chatJid`,`timestamp`])}e.objectStoreNames.contains(U.SESSIONS)||e.createObjectStore(U.SESSIONS,{keyPath:`groupFolder`}),e.objectStoreNames.contains(U.TASKS)||e.createObjectStore(U.TASKS,{keyPath:`id`}).createIndex(`groupFolder`,`groupFolder`),e.objectStoreNames.contains(U.STATE)||e.createObjectStore(U.STATE,{keyPath:`key`})}function Nn(e){let t=e.isMain??!1;return{jid:e.jid,name:e.name,folder:e.folder,trigger:t?void 0:e.trigger||`@${e.folder}`,requiresTrigger:!t&&(e.requiresTrigger??!0),isCone:t,type:t?`cone`:`scoop`,assistantLabel:t?`sliccy`:e.config?.assistantName||e.folder,addedAt:e.addedAt,config:e.config?{systemPromptAppend:e.config.systemPromptAppend,timeout:e.config.timeout,assistantName:e.config.assistantName}:void 0}}function Pn(e,t){if(t.objectStoreNames.contains(`groups`)){let n=e.target.transaction.objectStore(`groups`).getAll();n.onsuccess=()=>{let e=n.result;t.deleteObjectStore(`groups`);let r=t.createObjectStore(U.SCOOPS,{keyPath:`jid`});r.createIndex(`type`,`type`);for(let t of e)r.put(Nn(t))};return}t.objectStoreNames.contains(U.SCOOPS)||t.createObjectStore(U.SCOOPS,{keyPath:`jid`}).createIndex(`type`,`type`)}function Fn(e){e.objectStoreNames.contains(U.WEBHOOKS)||e.createObjectStore(U.WEBHOOKS,{keyPath:`id`}),e.objectStoreNames.contains(U.CRONTASKS)||e.createObjectStore(U.CRONTASKS,{keyPath:`id`})}function In(e){let t=e.target.result,n=e.oldVersion;n<1&&Mn(t),n<2&&Pn(e,t),n<3&&Fn(t)}function Ln(){if(!W)return null;let e=Object.values(U).every(e=>W.objectStoreNames.contains(e));return W.version===jn&&e?W:(W.close(),W=null,null)}function Rn(e){e.onversionchange=()=>{e.close(),W===e&&(W=null)},e.onclose=()=>{W===e&&(W=null)}}async function zn(){return Ln()||new Promise((e,t)=>{let n=indexedDB.open(An,jn);n.onupgradeneeded=In,n.onsuccess=()=>{let t=n.result;Rn(t),W=t,e(t)},n.onerror=()=>t(n.error)})}async function Bn(e,t=`readonly`){return(await zn()).transaction(e,t).objectStore(e)}async function Vn(e){let t=await Bn(U.STATE);return new Promise((n,r)=>{let i=t.get(e);i.onsuccess=()=>n(i.result?.value??null),i.onerror=()=>r(i.error)})}async function Hn(e,t){let n=await Bn(U.STATE,`readwrite`);return new Promise((r,i)=>{let a=n.put({key:e,value:t});a.onsuccess=()=>r(),a.onerror=()=>i(a.error)})}var G=c(`tray-leader`),Un=`leader-tray-session`,Wn=3e4,Gn=1e4,Kn=1e3,qn=3e4,Jn=2,Yn=20,K={state:`inactive`,session:null,error:null};function Xn(){return{...K,session:K.session?{...K.session}:null}}var q=new Set;function Zn(e){return q.add(e),()=>{q.delete(e)}}function J(e){if(K={...e,session:e.session?{...e.session}:null},q.size!==0)for(let e of[...q])try{e(Xn())}catch{}}var Qn=class{key;constructor(e=Un){this.key=e}async load(){return $n(await Vn(this.key))}async save(e){await Hn(this.key,JSON.stringify(e))}async clear(){await Hn(this.key,``)}};function $n(e){if(!e)return null;try{let t=JSON.parse(e);return typeof t.workerBaseUrl!=`string`||typeof t.trayId!=`string`||typeof t.createdAt!=`string`||typeof t.controllerId!=`string`||typeof t.controllerUrl!=`string`||typeof t.joinUrl!=`string`||typeof t.webhookUrl!=`string`||typeof t.runtime!=`string`?null:{workerBaseUrl:t.workerBaseUrl,trayId:t.trayId,createdAt:t.createdAt,controllerId:t.controllerId,controllerUrl:t.controllerUrl,joinUrl:t.joinUrl,webhookUrl:t.webhookUrl,leaderKey:typeof t.leaderKey==`string`?t.leaderKey:void 0,leaderWebSocketUrl:typeof t.leaderWebSocketUrl==`string`?t.leaderWebSocketUrl:null,runtime:t.runtime}}catch{return null}}var er=class{options;store;fetchImpl;webSocketFactory;pingIntervalMs;connectTimeoutMs;reconnectEnabled;reconnectBaseDelayMs;reconnectMaxDelayMs;reconnectBackoffMultiplier;reconnectMaxAttempts;reconnectSleep;socket=null;pingTimer=null;currentSession=null;stopped=!1;reconnecting=!1;reconnectGeneration=0;constructor(e){this.options=e,this.store=e.store??new Qn,this.fetchImpl=e.fetchImpl??ir(),this.webSocketFactory=e.webSocketFactory??(e=>new WebSocket(e)),this.pingIntervalMs=e.pingIntervalMs??Wn,this.connectTimeoutMs=e.connectTimeoutMs??Gn;let t=e.reconnect;this.reconnectEnabled=t!==!1;let n=t===!1||!t?{}:t;this.reconnectBaseDelayMs=n.baseDelayMs??Kn,this.reconnectMaxDelayMs=n.maxDelayMs??qn,this.reconnectBackoffMultiplier=n.backoffMultiplier??Jn,this.reconnectMaxAttempts=n.maxAttempts??Yn,this.reconnectSleep=n.sleep??(e=>new Promise(t=>setTimeout(t,e)))}async start(){if(this.stopped=!1,this.currentSession&&this.socket)return J({state:`leader`,session:this.currentSession,error:null}),this.currentSession;J({state:`connecting`,session:null,error:null}),this.currentSession=null;try{let e=await this.connectOnce();G.info(`Leader joined tray`,{trayId:e.trayId,controllerId:e.controllerId,runtime:e.runtime});try{this.options.onLeaderReady?.(e)}catch(e){G.warn(`onLeaderReady callback threw`,{error:e instanceof Error?e.message:String(e)})}return e}catch(e){throw J({state:`error`,session:this.currentSession,error:e instanceof Error?e.message:String(e)}),e}}stop(){this.stopped=!0,this.reconnecting=!1,this.reconnectGeneration++,this.tearDownSocket(),this.currentSession=null,J({state:`inactive`,session:null,error:null})}tearDownSocket(){this.pingTimer&&=(clearInterval(this.pingTimer),null);let e=this.socket;if(this.socket=null,e)try{e.close()}catch{}}async connectOnce(){let e=await this.store.load(),t=e?.workerBaseUrl===this.options.workerBaseUrl?e:null,n=await this.attachWithRecovery(t);this.currentSession=n;let r=await this.openLeaderSocket(n.leaderWebSocketUrl);return this.socket=r,this.startPingLoop(r),J({state:`leader`,session:n,error:null}),n}async handleUnexpectedDisconnect(e){if(this.stopped)return;if(!this.reconnectEnabled){G.warn(`Leader WebSocket dropped and auto-reconnect is disabled`,{reason:e}),this.tearDownSocket(),this.currentSession=null,J({state:`error`,session:null,error:`Leader WebSocket dropped: ${e}`});return}if(this.reconnecting)return;this.reconnecting=!0;let t=++this.reconnectGeneration;G.warn(`Leader WebSocket dropped — starting reconnect loop`,{reason:e}),this.tearDownSocket();let n=0,r=this.reconnectBaseDelayMs,i=e;for(;!this.stopped&&t===this.reconnectGeneration&&n<this.reconnectMaxAttempts&&(n++,J({state:`reconnecting`,session:this.currentSession,error:null,reconnectAttempts:n}),this.options.onReconnecting?.(n,i),G.info(`Leader reconnect attempt`,{attempt:n,delay:r}),await this.reconnectSleep(r),!(this.stopped||t!==this.reconnectGeneration));){try{let e=await this.connectOnce();if(this.stopped||t!==this.reconnectGeneration){this.tearDownSocket();break}this.reconnecting=!1,G.info(`Leader reconnect successful`,{attempt:n,trayId:e.trayId}),this.options.onReconnected?.(e);try{this.options.onLeaderReady?.(e)}catch(e){G.warn(`onLeaderReady callback threw`,{error:e instanceof Error?e.message:String(e)})}return}catch(e){i=e instanceof Error?e.message:String(e),G.warn(`Leader reconnect attempt failed`,{attempt:n,error:i}),this.tearDownSocket()}r=Math.min(r*this.reconnectBackoffMultiplier,this.reconnectMaxDelayMs)}!this.stopped&&t===this.reconnectGeneration&&(this.reconnecting=!1,this.currentSession=null,J({state:`error`,session:null,error:`Leader reconnect failed after ${n} attempts: ${i}`,reconnectAttempts:n}),G.warn(`Leader reconnect gave up`,{attempts:n,lastError:i}),this.options.onReconnectGaveUp?.(i,n))}async clearSession(){await this.store.clear()}sendControlMessage(e){if(!this.socket)throw Error(`Tray leader WebSocket is not connected`);this.socket.send(JSON.stringify(e))}async attachWithRecovery(e){try{return await this.claimLeaderSession(e)}catch(t){if(!e||!nr(t))throw t;return G.warn(`Stored tray session is stale, creating a fresh tray`,{trayId:e.trayId,error:t instanceof Error?t.message:String(t)}),await this.store.clear(),this.claimLeaderSession(null)}}async claimLeaderSession(e){let t=e??await this.createTraySession(),n=await this.fetchJson(t.controllerUrl,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({controllerId:t.controllerId,leaderKey:t.leaderKey,runtime:this.options.runtime})});if(n.role!==`leader`||!n.leaderKey||!n.websocket?.url)throw Error(`Tray attach did not return leader access for controller ${n.controllerId}`);let r={...t,trayId:n.trayId,controllerId:n.controllerId,leaderKey:n.leaderKey,leaderWebSocketUrl:n.websocket.url,runtime:this.options.runtime};return await this.store.save(r),r}async createTraySession(){let e=this.options.kind?JSON.stringify({kind:this.options.kind}):void 0,t=await this.fetchJson(g(this.options.workerBaseUrl,`tray`),{method:`POST`,...e?{headers:{"content-type":`application/json`}}:{},...e?{body:e}:{}});return{workerBaseUrl:this.options.workerBaseUrl,trayId:t.trayId,createdAt:t.createdAt,controllerId:crypto.randomUUID(),controllerUrl:t.capabilities.controller.url,joinUrl:t.capabilities.join.url,webhookUrl:t.capabilities.webhook.url,runtime:this.options.runtime}}async openLeaderSocket(e){return await new Promise((t,n)=>{let r=this.webSocketFactory(e),i=!1,a=setTimeout(()=>{o(`Tray leader WebSocket timed out after ${this.connectTimeoutMs}ms waiting for leader.connected`);try{r.close(1e3,`leader.connected timeout`)}catch{}},this.connectTimeoutMs),o=e=>{i||(i=!0,clearTimeout(a),n(Error(e)))};r.addEventListener(`message`,e=>{let n=rr(e.data);if(n){if(n.type===`leader.connected`){i||(i=!0,clearTimeout(a),t(r));return}if(n.type===`pong`){G.debug(`Tray leader heartbeat acknowledged`,{trayId:this.currentSession?.trayId});return}this.options.onControlMessage?.(n)}}),r.addEventListener(`close`,()=>o(`Tray leader WebSocket closed before leader.connected`)),r.addEventListener(`error`,()=>o(`Tray leader WebSocket failed before leader.connected`))})}startPingLoop(e){this.pingTimer&&clearInterval(this.pingTimer);let t=t=>{this.stopped||this.socket!==e||this.handleUnexpectedDisconnect(t).catch(e=>{G.warn(`Leader reconnect loop crashed`,{error:e instanceof Error?e.message:String(e)})})},n=()=>{try{e.send(JSON.stringify({type:`ping`}))}catch(e){t(`Leader ping send failed: ${e instanceof Error?e.message:String(e)}`)}};n(),this.pingTimer=setInterval(n,this.pingIntervalMs),e.addEventListener(`close`,()=>t(`Leader WebSocket closed`)),e.addEventListener(`error`,()=>t(`Leader WebSocket errored`))}async fetchJson(e,t){let n=await this.fetchImpl(e,t);if(!n.ok)throw await tr.fromResponse(n);return await n.json()}},tr=class e extends Error{status;code;constructor(e,t,n){super(n),this.status=e,this.code=t,this.name=`LeaderTrayHttpError`}static async fromResponse(t){try{let n=await t.json();return new e(t.status,n.code??null,n.error??`Tray request failed (${t.status})`)}catch{return new e(t.status,null,`Tray request failed (${t.status})`)}}};function nr(e){return e instanceof tr&&[403,404,410].includes(e.status)}function rr(e){if(typeof e!=`string`)return null;try{return JSON.parse(e)}catch{return null}}function ir(e=fetch){return typeof chrome<`u`&&chrome?.runtime?.id?(t,n)=>e(t,n):async(t,n={})=>{let r=typeof t==`string`?t:t.toString();try{if(new URL(r).origin===window.location.origin)return e(r,{...n,cache:`no-store`})}catch{}let i=new Headers(n.headers);i.set(`X-Target-URL`,r);let a=await e(`/api/fetch-proxy`,{...n,headers:i,cache:`no-store`});if(v(a))throw Error(await y(a));return a}}var Y=c(`offscreen-client`),ar=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){Y.error(`onScoopSelected handler threw`,{error:e instanceof Error?e.message:String(e)})}}locked=!1;constructor(e,t){this.callbacks=e,this.transport=t??kn(),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}Y.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})}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?(Y.warn(`Offscreen restarted — re-requesting state`),this.ready=!1):Y.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;or(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){Y.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}-${X()}`,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}-${X()}`,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}-${X()}`,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}-${X()}`;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){Y.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&&or(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){Y.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 X(){return Date.now().toString(36)+Math.random().toString(36).slice(2,8)}function or(e,t){J({state:e.state,error:e.error,reconnectAttempts:e.reconnectAttempts,session:e.session?{...e.session}:null}),u({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 Z(e){return!e.includes(`\0`)}function sr(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(!Z(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(!Z(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),!Z(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),!Z(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(Z(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 cr(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 lr(e){let t=cr(e);return{onMessage:e=>t.onMessage(e),send:(e,n)=>{t.send({source:`panel`,payload:e},n)}}}function ur(e,t){let n=cr(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 dr(){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 fr(e){let{worker:t,realCdpTransport:n,callbacks:r}=e,i=e.readyTimeoutMs??3e4,a=e.localStorageSeed??{},o=new MessageChannel,s=new MessageChannel,c=new ar(r,lr(o.port1)),l=ur(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};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 pr(e){return fr({worker:e.workerUrl?new Worker(e.workerUrl,{type:`module`}):new Worker(new URL(`/assets/kernel-worker-BWuqWtNZ.js`,``+import.meta.url),{type:`module`}),realCdpTransport:e.realCdpTransport,callbacks:e.callbacks,readyTimeoutMs:e.readyTimeoutMs,localStorageSeed:e.localStorageSeed??dr(),instanceId:e.instanceId,localApiBaseUrl:e.localApiBaseUrl,bridgeToken:e.bridgeToken,localLickWsUrl:e.localLickWsUrl})}function mr(){return typeof crypto<`u`&&typeof crypto.randomUUID==`function`?crypto.randomUUID():`slicc-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`}var hr=[100,200,400,800,1600];async function gr(e,t,n,r=hr,i=e=>new Promise(t=>setTimeout(t,e))){let a=r.length+1,o=null;for(let s=0;s<a;s++)try{await e.connect(t),s>0&&n.info(`CDP bridge connect succeeded after retry`,{attempt:s+1});return}catch(e){o=e,s<r.length&&await i(r[s]??0)}n.warn(`Initial CDP connect failed after retries; worker-forwarded commands will retry on demand`,o instanceof Error?o.message:String(o))}async function _r(e){let{runtimeMode:n,envBaseUrl:r,window:i,log:a}=e,o=n===`electron-overlay`;a.info(`starting standalone with kernel worker`);let{BrowserAPI:s}=await t(async()=>{let{BrowserAPI:e}=await import(`./cdp-D4JkCTey.js`);return{BrowserAPI:e}},__vite__mapDeps([25,5,26,1]));await Ve({log:a});let c=await m(),u=_(o?`electron-overlay`:`standalone`,c!==null)?p:null;await d({locationHref:i.location.href,storage:i.localStorage,envBaseUrl:r,defaultWorkerBaseUrl:u,runtimeConfigFetcher:async()=>c});let f,h,g,v=null,y=null,b=null;if(n===`cherry`){let{setupCherryFollower:e}=await t(async()=>{let{setupCherryFollower:e}=await import(`./main-cherry-B1mI8ArD.js`);return{setupCherryFollower:e}},__vite__mapDeps([27,25,5,26,1])),n=await e();f=n.browser,h=n.joinUrl,g=n.transport}else{f=new s;let e=l(i.location.search);e&&(a.info(`Routing CDP through local standalone bridge`,{url:e.url}),e.apiBaseUrl&&(v=e.apiBaseUrl,ee(e.apiBaseUrl),y=e.token,te(e.token)),e.lickWsUrl&&(b=e.lickWsUrl));let t=e?{url:e.url,protocols:e.subprotocol}:void 0;await gr(f,t,a)}let x=f.getTransport();return globalThis.__slicc_browser=f,{browser:f,realCdpTransport:x,cherryJoinUrl:h,cherryTransport:g,instanceId:mr(),isElectronOverlay:o,localApiBaseUrl:v,bridgeToken:y,localLickWsUrl:b}}var vr=`<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 yr(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 br(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(vr));let a=()=>{r.style.color=`var(--green)`,setTimeout(()=>{r.style.color=`var(--txt-3)`},1500)};return r.addEventListener(`short-click`,()=>{(async()=>{await t(yr(e.getMessages())??P([...e.getMessages()])),a()})()}),r.addEventListener(`long-press`,()=>{(async()=>{let n=P([...e.getMessages()]);n&&(await t(n),a())})()}),n.append(r),n}function Q(){return`msg-${Date.now()}-${Math.random().toString(36).slice(2,8)}`}function xr(e){let t={id:e.id,text:e.content};return e.attachments?.length&&(t.attachments=e.attachments.length),t}var Sr=class{#e;#t;#n;#r;#i;#a;#o;#s;#c;#l;#u;#d;#f=[];#p=[];#m=new Map;#h=null;#g=null;#_=``;#v=!1;#y=!1;#b=null;#x=new Set;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.agent.onEvent(e=>this.#O(e)),this.#d=e=>this.#L(e),this.#e.addEventListener(`slicc-error-retry`,this.#d)}dispose(){this.#l(),this.#e.removeEventListener(`slicc-error-retry`,this.#d)}get processing(){return this.#y}getMessages(){return this.#f.map(e=>({...e}))}setAgent(e){this.#l(),this.#t=e,this.#l=e.onEvent(e=>this.#O(e))}setOnLocalUserMessage(e){this.#u=e}addUserMessage(e,t){this.#B({id:Q(),role:`user`,content:e,timestamp:Date.now()})}getQueuedMessages(){return this.#p.map(xr)}removeQueuedMessage(e){let t=this.#p.filter(t=>t.id!==e);t.length!==this.#p.length&&(this.#p=t,this.#C())}#S(){if(this.#p.length===0)return;let e=this.#p;this.#p=[];for(let t of e)this.#B(t);this.#C()}#C(){this.#s?.(this.#p.map(xr))}addAssistantMessage(e){this.#B({id:Q(),role:`assistant`,content:e,timestamp:Date.now()})}loadMessages(e){for(let e of this.#m.keys())this.#i?.(e);if(this.#p.length>0){if(this.#c)for(let e of this.#p)try{this.#c(e.id)}catch(e){console.error(`onQueuedCancel hook threw`,e)}this.#p=[],this.#C()}this.#f=Ae(e);let t=[...this.#f].reverse().find(e=>e.isStreaming);this.#h=t?.id??null,t&&(this.#g=t.id),this.#_=``,this.#v=!1,this.#m.clear();let n=[],r=``;for(let e of this.#f){let t=new Date(e.timestamp).toDateString();t!==r&&(n.push(Ne(e.timestamp)),r=t);let i=this.#z(e);this.#m.set(e.id,i),n.push(...i)}let i=this.#e;typeof i.replaceContent==`function`?i.replaceContent(...n):i.replaceChildren(...n),this.#W();for(let e of this.#f)e.isStreaming||this.#r?.(e,this.#m.get(e.id)??[]);this.#D(),this.#K()}sendUserMessage(e,t,n){let r=e.trim();if(!r&&!t?.length)return;let i=n?.dictation?this.#w(r):r,a={id:Q(),role:`user`,content:i,timestamp:Date.now(),attachments:t?.length?t:void 0};this.#y?(this.#p.push(a),this.#C()):this.#B(a),this.#t.sendMessage(i,a.id,a.attachments),this.#T();try{let e=n?.dictation?Ce(i):i;this.#u?.(e,a.id,a.attachments)}catch(e){console.error(`onLocalUserMessage hook threw`,e)}}#w(e){return Oe(e,Te())}#T(){if(this.#o)try{let e=this.#o();if(!e)return;h(e.scoopName,e.model)}catch{}}addLickMessage(e,t,n,r,i){let a=this.#f[this.#f.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.#V(a);return}this.#B({id:e,role:`user`,content:t,timestamp:r,source:`lick`,channel:n,lickId:i,lickState:i?`pending`:void 0,queued:this.#y?!0:void 0})}updateLickState(e,t){let n=this.#f.find(t=>t.lickId===e);n&&(n.lickState=t,this.#V(n))}setProcessing(e){this.#y!==e&&(this.#y=e,e&&(this.#g=null),e&&this.#S(),e||this.#D(),this.#n?.(e),e||this.#E())}#E(){let e=this.#g;if(this.#g=null,!this.#a)return;let t=e?this.#R(e):null;this.#a(t?{...t}:null)}#D(){let e=this.#f[this.#f.length-1];if(!(e?.role===`assistant`&&!e.isStreaming)){this.#b?.remove();return}this.#b??=br({getMessages:()=>this.getMessages()}),(this.#e.inner??this.#e).append(this.#b)}#O(e){switch(e.type){case`message_start`:this.#k(e.messageId);break;case`content_delta`:this.#A(e.messageId,e.text);break;case`content_done`:this.#M(e.messageId);break;case`tool_use_start`:this.#N(e.messageId,e.toolName,e.toolInput);break;case`tool_result`:this.#P(e.messageId,e.toolName,e.result,e.isError);break;case`turn_end`:this.#F(e.messageId);break;case`error`:this.#I(e.error);break;default:break}}#k(e){this.setProcessing(!0),this.#h=e,this.#g=e,this.#B({id:e,role:`assistant`,content:``,timestamp:Date.now(),isStreaming:!0,toolCalls:[]})}#A(e,t){this.#R(e)&&(this.#_+=t,!this.#v&&(this.#v=!0,requestAnimationFrame(()=>this.#j(e))))}#j(e){if(this.#v=!1,!this.#_)return;let t=this.#R(e);t&&(t.content+=this.#_,this.#_=``,this.#V(t))}#M(e){let t=this.#R(e);t&&(this.#_&&this.#h===e&&(t.content+=this.#_),this.#_=``,this.#v=!1,t.isStreaming=!1,this.#V(t))}#N(e,t,n){let r=this.#R(e);r&&(r.toolCalls=r.toolCalls??[],r.toolCalls.push({id:Q(),name:t,input:n}),this.#V(r))}#P(e,t,n,r){let i=this.#R(e),a=[...i?.toolCalls??[]].reverse().find(e=>e.name===t&&e.result===void 0);!i||!a||(a.result=n,a.isError=r,this.#V(i))}#F(e){let t=this.#R(e);t?.isStreaming&&(t.isStreaming=!1,this.#V(t)),this.#h=null,this.setProcessing(!1)}#I(e){this.setProcessing(!1),this.#B({id:Q(),role:`assistant`,content:e,timestamp:Date.now(),error:!0})}#L(e){if(this.#y)return;let t=e.detail?.messageId??null,n=this.#f.length;if(t){let e=this.#f.findIndex(e=>e.id===t);e>=0&&(n=e)}let r=n>0?this.#f[n-1]:void 0;if(r&&r.source===`lick`&&!r.queued){this.#t.sendMessage(r.content,Q(),r.attachments);return}let i;for(let e=n-1;e>=0;e--){let t=this.#f[e];if(t.role===`user`&&t.source!==`lick`&&t.source!==`delegation`&&!t.queued){i=t;break}}i&&this.#t.sendMessage(i.content,Q(),i.attachments)}#R(e){return this.#f.find(t=>t.id===e)}#z(e){try{return we(e)}catch(t){console.error(`[wc-chat] message render failed — degrading to plain bubble`,t);let n=document.createElement(e.role===`assistant`?`slicc-agent-message`:`slicc-user-message`);return n.setAttribute(`text`,String(e.content??``)),[n]}}#B(e){this.#U(),this.#f.push(e);let t=this.#z(e);this.#m.set(e.id,t),this.#e.append(...t),this.#W(),e.isStreaming||this.#r?.(e,t),e.role===`user`?this.#K():this.#q()}#V(e){this.#U(),this.#i?.(e.id);let t=this.#m.get(e.id)??[],n=this.#z(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.#m.set(e.id,n),this.#W(),e.isStreaming||this.#r?.(e,n),this.#q()}#H(){return this.#e.inner??this.#e}#U(){Fe(this.#H(),this.#x)}#W(){De(this.#H(),{openClusterAnchors:this.#x,toolCallLookup:(e,t)=>this.#G(e,t)})}#G(e,t){return this.#f.find(t=>t.id===e)?.toolCalls?.find(e=>e.id===t)}#K(){this.#e.scrollTop=this.#e.scrollHeight}#q(){let e=this.#e;typeof e.requestFollow==`function`?e.requestFollow():this.#K()}};function Cr(e){return`${new Date(e.frozenAt).toLocaleDateString(void 0,{month:`short`,day:`numeric`})} · ${e.messageCount} turns`}function wr(e){let t=document.createElement(`slicc-freezer-card`);return t.setAttribute(`title`,e.title),t.setAttribute(`meta`,Cr(e)),t.setAttribute(`slug`,e.filename),e.icon&&t.setAttribute(`icon`,e.icon),t}async function Tr(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 Er(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(L,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 Er(e){let t=await Dr(e);return t.kind===`ok`?t.entries:t.kind===`missing`?[]:null}async function Dr(e){let t;try{let n=await e.readFile(L,{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 Or(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 kr(e,t){for(let t of Array.from(e.querySelectorAll(`slicc-freezer-card`)))t.remove();e.append(...t.map(wr))}async function Ar(e,t){let n=await e.readFile(z(t),{encoding:`utf-8`}),r=B(typeof n==`string`?n:new TextDecoder().decode(n));return{title:r.title||t.title,messages:r.messages}}var jr=`/workspace/CLAUDE.md`,$=64;function Mr(e){if(e.length<=$)return{title:e,summary:``};let t=e.lastIndexOf(` `,$),n=t>$/2?t:$;return{title:`${e.slice(0,n)}…`,summary:e.slice(n).trim()}}function Nr(e){let t=[],n=null,r=()=>{if(!n)return;let e=n.join(` `).trim();e&&t.push(Mr(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(Mr(e.trim())),t}async function Pr(e){let t=``;try{let n=await e.readFile(jr,{encoding:`utf-8`});t=typeof n==`string`?n:new TextDecoder().decode(n)}catch{t=``}return Nr(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 Fr=[`/workspace`,`/shared`],Ir=3,Lr=200;async function Rr(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,Lr)){let i=`${t}/${r.name}`;r.type===`directory`?o.push({kind:`dir`,id:i,label:r.name,children:n<Ir?await Rr(e,i,n+1):[]}):o.push({kind:`file`,id:i,label:r.name,path:i})}return o}async function zr(e){let t=[];for(let n of Fr)t.push({kind:`group`,label:`${n.slice(1)}/`}),t.push(...await Rr(e,n,1));return t}function Br(e){let t=!1;return n=>{if(n===`files`){e.openFs().then(async t=>{e.fileTree.items=await zr(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 Pr(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 Vr={off:`off`,low:`low`,medium:`medium`,high:`high`,xhigh:`xhigh`,max:`xhigh`},Hr={off:`off`,minimal:`low`,low:`low`,medium:`medium`,high:`high`,xhigh:`xhigh`};function Ur(e){return e?Vr[e]:void 0}function Wr(e){return(e&&Hr[e])??`off`}function Gr(e,t){return e!=null&&e!==`cone`||new URL(t.location.href).searchParams.get(`cherry`)===`1`?!0:f(t.localStorage)}function Kr(e){return e===`error`?`dead`:e===`initializing`?`none`:`open`}function qr(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:S(e),label:e.isCone?`sliccy`:e.name,eyes:Kr(t?.get(e.jid)),fill:typeof r==`number`?Math.round(r*100):void 0}})}function Jr(e){let t=()=>{let t=e.getClient();t&&(e.refs.switcher.scoops=qr(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),Kr(i)!==Kr(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`&&je(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 Yr(e,n){e.thread.setAttribute(`context`,n.isCone?`cone`:`scoop:${n.name}`),e.thread.setAttribute(`accent`,S(n)),ke(e,n.isCone?{kind:`cone`}:{kind:`scoop`,accent:S(n)}),e.switcher.setAttribute(`active`,n.jid),e.composerMeta.setAttribute(`thinking`,Wr(n.config?.thinkingLevel));try{let{resolveCurrentModel:r,resolveModelById:i}=await t(async()=>{let{resolveCurrentModel:e,resolveModelById:t}=await import(`./main-xJNt0P6z.js`).then(e=>e.r);return{resolveCurrentModel:e,resolveModelById:t}},__vite__mapDeps([17,3,18,5,4,6,7,8,9,10,1,11,12,13,14,15,19])),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 Xr(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 Er(r);if(a===null){if((await Dr(r)).kind!==`corrupt`||(l.warn(`WC freezer index corrupt — rebuilding from archives`),a=await Or(r),a.length===0))return;await i.writeFile(L,JSON.stringify(a,null,2))}e===d&&(u=a,kr(n.freezer,a),!f&&a.some(e=>!e.icon&&!e.pendingEnrichment)&&(f=!0,t(async()=>{let{pickLucideIcon:e}=await import(`./quick-llm-BOgo_uty.js`).then(e=>e.n);return{pickLucideIcon:e}},__vite__mapDeps([2,3,4,5,6,7,8,9,10,1,11,12,13,14,15,16,17,18,19,20])).then(({pickLucideIcon:e})=>Tr({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-BKd3_lSr.js`);return{runNewSessionFreeze:e,runNewSessionFreezeQuick:t}},__vite__mapDeps([28,5,4,3,6,7,8,9,10,1,11,12,13,14,15,17,18,19,20,29]));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-Cl1ON8m4.js`).then(e=>e.g);return{resetDictationPriming:e}},__vite__mapDeps([30,3,5,16,17,18,4,6,7,8,9,10,1,11,12,13,14,15,19,31,32,33])).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 Er(t)??[]).find(t=>t.filename===e);let{messages:o}=await Ar(t,i??{filename:e,title:e,frozenAt:``,messageCount:0});a()?.loadMessages(o),n.thread.setAttribute(`context`,`freezer:${i?.filename??e}`),n.thread.setAttribute(`accent`,Pe),ke(n,{kind:`freezer`}),n.inputCard.setAttribute(`disabled`,``),n.switcher.removeAttribute(`active`),c()}catch(e){if(l.error(`WC thaw failed`,e),!o()){let e=i.getScoops().find(e=>e.isCone);e&&s(e)}}};return n.freezer.addEventListener(`freezer-card-select`,e=>{let t=e.detail?.slug;t&&_(t)}),{refreshFreezer:p,openFrozen:_}}function Zr(e,t){let n=null,r=Me(e,{messages:[],scoops:[],floatLabel:t,placeholder:`Ask sliccy, or describe a change…`,onSurfaceActivate:e=>n?.(e),urlState:!0}),i=null,a=null,o=null,s=!1,c=new Set,l=e=>{if(o=e,!a)return;let t=a.selectedScoopJid;if(t&&t!==e.jid){let e=i?.getQueuedMessages()??[];for(let n of e)a.deleteQueuedMessage(t,n.id).catch(()=>void 0)}a.setSelectedScoopJid(e.jid),r.inputCard.removeAttribute(`disabled`),Yr(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 Qr(e){let n=null;return()=>(n??=(async()=>{let[{createRemoteVfsClient:n},{createRemoteWritableVfsClient:r}]=await Promise.all([t(()=>import(`./remote-vfs-client-BwJhhtIV.js`),__vite__mapDeps([34,35])),t(()=>import(`./writable-vfs-client-DMYsajEE.js`),__vite__mapDeps([36,35]))]);return{reader:n({transport:e.getTransport()}),writer:r({transport:e.getTransport()})}})(),n)}function $r(e,n,r,i,a){e.onClientReady(()=>{i.intercept||t(async()=>{let{wireWcOnboarding:e}=await import(`./wc-onboarding-BMIcqP11.js`);return{wireWcOnboarding:e}},__vite__mapDeps([37,5,17,3,18,4,6,7,8,9,10,1,11,12,13,14,15,19,38])).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 ei(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([39,5])).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([40,3])).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([41,1,31])).then(({playCue:t})=>t(e.type===`tool_use_start`?`tool-start`:`tool-finish`)).catch(()=>void 0)});let u=new Sr({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-UcYXGV0I.js`);return{consumeVoiceSubmission:e,speakReplyMarkdown:t}},__vite__mapDeps([42,1,43,44,3,5,45,46])).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([41,1,31]));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&&(St(t),c.delete(e))},onMessageRendered:(e,t)=>{let n=t[0];n&&c.set(e.id,xt(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)},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 ti(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-LktBOWny.js`);return{createPlaceholderRefresher:e}},__vite__mapDeps([47,5,30,3,16,17,18,4,6,7,8,9,10,1,11,12,13,14,15,19,31,32,33])).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(Gr(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-B2r60IVZ.js`);return{wireWcAttach:e}},__vite__mapDeps([48,5])).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-k9segaoE.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=Ee(e);if(!r)return;let i=e.detail?.source===`dictation`;i&&(t(async()=>{let{markVoiceSubmission:e}=await import(`./voice-reply-UcYXGV0I.js`);return{markVoiceSubmission:e}},__vite__mapDeps([42,1,43,44,3,5,45,46])).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([41,1,31])).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=Ur(t),a=n.getSelected();a&&i&&r.setScoopThinkingLevel(a.jid,i)})}function ni(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=qr(t.getScoops(),e.statuses,e.fills)}})};return setInterval(n,15e3),n}function ri(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 ii(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)}),oi({switcher:n.switcher,getScoops:()=>t.getScoops(),lastActivity:e.wiring.lastActivity})}function ai(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 oi(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-BOgo_uty.js`).then(e=>e.n);return{quickLabel:e}},__vite__mapDeps([2,3,4,5,6,7,8,9,10,1,11,12,13,14,15,16,17,18,19,20]))).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 si(e,n,r){let{RemoteTerminalView:i}=await t(async()=>{let{RemoteTerminalView:e}=await import(`./remote-terminal-view-CSqiig2G.js`);return{RemoteTerminalView:e}},__vite__mapDeps([49,5,50,3,21,1,24,23,51,22,52,15])),{fetchSecretEnvVars:a}=await t(async()=>{let{fetchSecretEnvVars:e}=await import(`./secret-env-DcfTe28K.js`);return{fetchSecretEnvVars:e}},__vite__mapDeps([53,1])),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 ci(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 li(e,n,r,i={}){let{refs:a}=e;e.setClient(n);let o=null,s=ni(e.wiring,n),c=()=>o?.(),l={intercept:null},{controller:u,agentHandle:d}=ei(a,n,()=>e.getSelected(),ai({boot:e,triggerPlaceholder:c,refreshStats:s}),l);e.setController(u),e.onClientReady(s);let f=Qr(n),p=async()=>(await f()).reader;i.standalone?.runtimeMode!==`cherry`&&$r(e,n,f,l,r),ti({boot:e,client:n,agentHandle:d,setRefreshPlaceholder:e=>{o=e},triggerPlaceholder:c,openReader:p,openWriter:async()=>(await f()).writer,log:r}),ii(e,n),ri(e,i,r),e.setActivateSurface(Br({fileTree:a.fileTree,termSurface:a.termSurface,memoryHost:a.memoryHost,openFs:p,mountTerminal:t=>si(e,n,t),log:r}));let{refreshFreezer:m,openFrozen:h}=Xr({refs:a,openVfs:f,client:n,getController:()=>e.getController(),getSelected:()=>e.getSelected(),selectScoop:e.selectScoop,clearSelection:e.clearSelection,log:r});m(),e.onClientReady(m),ci(e,n,h),f().then(async({reader:e})=>{let{installPreviewVfsResponder:n}=await t(async()=>{let{installPreviewVfsResponder:e}=await import(`./preview-vfs-responder-dyQBWIl5.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([54,35])),{wireWcSprinkles:l}=await t(async()=>{let{wireWcSprinkles:e}=await import(`./wc-sprinkles-C675pGpy.js`);return{wireWcSprinkles:e}},__vite__mapDeps([55,5])),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-DDcDU_hv.js`);return{wireWcTray:e}},__vite__mapDeps([56,5,4,3,6,7,8,9,10,1,11,12,13,14,15,50,17,18,19,26,57,58,40])),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,cherryJoinUrl:i.standalone.cherryJoinUrl,cherryTransport:i.standalone.cherryTransport,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-KPH2me07.js`);return{wireWcNav:e}},__vite__mapDeps([59,5,17,3,18,4,6,7,8,9,10,1,11,12,13,14,15,19])).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([60,5])).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}=await import(`./composer-speech-DYshRh0w.js`);return{getComposerSpeech:e}},__vite__mapDeps([61,1,62,5,45,46,32])).then(({getComposerSpeech:e})=>{let t=a.composer;t.speech=e(),t.setAttribute(`ptt`,``)}).catch(e=>r.error(`WC push-to-talk wiring failed`,e))}async function ui(e,n,r=`standalone`){let{browser:i,realCdpTransport:a,instanceId:o,cherryJoinUrl:s,cherryTransport:c,localApiBaseUrl:l,bridgeToken:u,localLickWsUrl:d}=await _r({runtimeMode:r,envBaseUrl:null,window,log:n}),{resolveStandaloneFloatLabel:f,DEFAULT_STANDALONE_LABEL:p}=await t(async()=>{let{resolveStandaloneFloatLabel:e,DEFAULT_STANDALONE_LABEL:t}=await import(`./wc-float-label-dfUH87GD.js`);return{resolveStandaloneFloatLabel:e,DEFAULT_STANDALONE_LABEL:t}},[]),m=r===`standalone`||r===`electron-overlay`?await f():p,h=Zr(e,m),g=pr({realCdpTransport:a,instanceId:o,callbacks:Jr(h.wiring),localApiBaseUrl:l,bridgeToken:u,localLickWsUrl:d});sr({send:e=>g.client.sendRaw(e)}),li(h,g.client,n,{instanceId:o,standalone:{browser:i,realCdpTransport:a,runtimeMode:r,cherryJoinUrl:s,cherryTransport:c,baseFloatLabel:m}});let{setupSudoStandalone:_}=await t(async()=>{let{setupSudoStandalone:e}=await import(`./setup-sudo-CocP-GMB.js`);return{setupSudoStandalone:e}},[]);await _({log:n}),await g.ready,h.wiring.notifyReady?.(),n.info(`WC live shell ready`,{scoops:g.client.getScoops().length})}export{Ve as _,L as a,li as attachWcClient,z as c,Jr as createWcLiveCallbacks,rt as d,St as f,He as g,it as h,Zn as i,B as l,M as m,ui as mountWcUiLive,er as n,dn as o,xt as p,Zr as prepareWcShell,Xn as r,Gt as s,ar as t,un as u};
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/main-D-3iO2Pb.js","assets/chunk-aKtaBQYM.js","assets/modulepreload-polyfill-Dezn_h7o.js","assets/preload-helper-zJ_50EbN.js","assets/account-store-Dha2nLml.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/panel-rpc-DqT2FG7c.js","assets/bedrock-camp-9-QEmC9Z.js","assets/transform-messages-DzB_lMo-.js","assets/tool-ui-YOPqzMmL.js","assets/clipboard-DgFtRQbq.js","assets/wc-settings-DjqUSzpO.js","assets/wc-detached-CJFrvQ5w.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{_ as n,a as r,l as i,v as a}from"./main-D-3iO2Pb.js";import{r as o}from"./wc-live-B3Dxlxlf.js";function s(e){let t=e.find(e=>e.userAvatar&&e.userName)??e.find(e=>e.userName);return t?.userName?{name:t.userName,avatarUrl:t.userAvatar,provider:t.providerId}:null}function c(e){return e.flatMap(e=>e.models.map(t=>({name:t.name??t.id,provider:e.providerName,id:`${e.providerId}:${t.id}`})))}async function l(t){let{refs:n,client:i,log:l}=t,{getAllAvailableModels:m,getAccounts:h}=await e(async()=>{let{getAllAvailableModels:e,getAccounts:t}=await import(`./main-D-3iO2Pb.js`).then(e=>e.r);return{getAllAvailableModels:e,getAccounts:t}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16])),g=()=>{n.composerMeta.models=c(m())};g();let _=null;await f(n,i,()=>{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(),a()),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-DjqUSzpO.js`);return{showWcSettings:e}},__vite__mapDeps([17,3])).then(({showWcSettings:e})=>e(l)).then(()=>{g(),y(),i.updateModel()}).catch(e=>l.error(`WC settings dialog failed`,e))};n.avatarMenu.addEventListener(`slicc-avatar-action`,t=>{let n=t.detail?.id;if(n&&w(n)){C();return}if(n===`popout`){e(async()=>{let{requestDetachedPopout:e}=await import(`./wc-detached-CJFrvQ5w.js`);return{requestDetachedPopout:e}},__vite__mapDeps([18,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16])).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:i})}function u(r,a){if(r===`tray-enable`)return n({locationHref:window.location.href,storage:window.localStorage,envBaseUrl:null,defaultWorkerBaseUrl:i}).then(e=>{if(!e)return a.error(`tray enable: no worker base URL resolvable`);window.dispatchEvent(new CustomEvent(`slicc:tray-leave`,{detail:{workerBaseUrl:e}}))}),!0;if(r===`tray-copy`){let n=o().session?.joinUrl;return n&&(t(n).catch(()=>void 0),e(async()=>{let{loadLegacyDialogStyles:e}=await import(`./legacy-styles-4PP74ISo.js`);return{loadLegacyDialogStyles:e}},__vite__mapDeps([19,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([20,16,1]));t({joinUrl:n,copied:!0})}).catch(e=>a.error(`sync dialog failed`,e))),!0}return r===`tray-stop`?(window.dispatchEvent(new CustomEvent(`slicc:tray-leave`,{detail:{workerBaseUrl:null}})),!0):!1}function d(e){let{refs:t,log:n,openSettings:r,setPendingReplayMessageId:i}=e;t.thread?.addEventListener(`slicc-error-change-model`,e=>{i(e.detail?.messageId??null);let a=t.composerMeta,o=a.models;if(Array.isArray(o)&&o.length===0){r();return}try{a.openMenu?.()}catch(e){n.error(`opening composer model picker failed`,e)}})}async function f(t,n,r){let{resolveModelById:i,resolveCurrentModel:a,setSelectedModelId:o}=await e(async()=>{let{resolveModelById:e,resolveCurrentModel:t,setSelectedModelId:n}=await import(`./main-D-3iO2Pb.js`).then(e=>e.r);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])),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-D-3iO2Pb.js`).then(e=>e.r);return{getAccounts:e,getProviderConfig:t}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]));window.addEventListener(`slicc:accounts-changed`,()=>{n(),r(),i.updateModel();for(let e of a()){let t=o(e.providerId)?.refreshModels;t&&t().then(()=>{n(),i.updateModel()}).catch(()=>void 0)}})}export{l as wireWcNav};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/main-xJNt0P6z.js","assets/chunk-aKtaBQYM.js","assets/modulepreload-polyfill-Dezn_h7o.js","assets/preload-helper-zJ_50EbN.js","assets/account-store-Dd_leIXI.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/panel-rpc-DqT2FG7c.js","assets/bedrock-camp-9-QEmC9Z.js","assets/transform-messages-DzB_lMo-.js","assets/tool-ui-YOPqzMmL.js","assets/clipboard-DgFtRQbq.js","assets/wc-settings-BZvKvAI9.js","assets/wc-detached-CVCrBego.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{_ as n,a as r,l as i,v as a}from"./main-xJNt0P6z.js";import{r as o}from"./wc-live-692eqzbB.js";function s(e){let t=e.find(e=>e.userAvatar&&e.userName)??e.find(e=>e.userName);return t?.userName?{name:t.userName,avatarUrl:t.userAvatar,provider:t.providerId}:null}function c(e){return e.flatMap(e=>e.models.map(t=>({name:t.name??t.id,provider:e.providerName,id:`${e.providerId}:${t.id}`})))}async function l(t){let{refs:n,client:i,log:l}=t,{getAllAvailableModels:m,getAccounts:h}=await e(async()=>{let{getAllAvailableModels:e,getAccounts:t}=await import(`./main-xJNt0P6z.js`).then(e=>e.r);return{getAllAvailableModels:e,getAccounts:t}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16])),g=()=>{n.composerMeta.models=c(m())};g();let _=null;await f(n,i,()=>{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(),a()),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-BZvKvAI9.js`);return{showWcSettings:e}},__vite__mapDeps([17,3])).then(({showWcSettings:e})=>e(l)).then(()=>{g(),y(),i.updateModel()}).catch(e=>l.error(`WC settings dialog failed`,e))};n.avatarMenu.addEventListener(`slicc-avatar-action`,t=>{let n=t.detail?.id;if(n&&w(n)){C();return}if(n===`popout`){e(async()=>{let{requestDetachedPopout:e}=await import(`./wc-detached-CVCrBego.js`);return{requestDetachedPopout:e}},__vite__mapDeps([18,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16])).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:i})}function u(r,a){if(r===`tray-enable`)return n({locationHref:window.location.href,storage:window.localStorage,envBaseUrl:null,defaultWorkerBaseUrl:i}).then(e=>{if(!e)return a.error(`tray enable: no worker base URL resolvable`);window.dispatchEvent(new CustomEvent(`slicc:tray-leave`,{detail:{workerBaseUrl:e}}))}),!0;if(r===`tray-copy`){let n=o().session?.joinUrl;return n&&(t(n).catch(()=>void 0),e(async()=>{let{loadLegacyDialogStyles:e}=await import(`./legacy-styles-4PP74ISo.js`);return{loadLegacyDialogStyles:e}},__vite__mapDeps([19,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([20,16,1]));t({joinUrl:n,copied:!0})}).catch(e=>a.error(`sync dialog failed`,e))),!0}return r===`tray-stop`?(window.dispatchEvent(new CustomEvent(`slicc:tray-leave`,{detail:{workerBaseUrl:null}})),!0):!1}function d(e){let{refs:t,log:n,openSettings:r,setPendingReplayMessageId:i}=e;t.thread?.addEventListener(`slicc-error-change-model`,e=>{i(e.detail?.messageId??null);let a=t.composerMeta,o=a.models;if(Array.isArray(o)&&o.length===0){r();return}try{a.openMenu?.()}catch(e){n.error(`opening composer model picker failed`,e)}})}async function f(t,n,r){let{resolveModelById:i,resolveCurrentModel:a,setSelectedModelId:o}=await e(async()=>{let{resolveModelById:e,resolveCurrentModel:t,setSelectedModelId:n}=await import(`./main-xJNt0P6z.js`).then(e=>e.r);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])),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-xJNt0P6z.js`).then(e=>e.r);return{getAccounts:e,getProviderConfig:t}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]));window.addEventListener(`slicc:accounts-changed`,()=>{n(),r(),i.updateModel();for(let e of a()){let t=o(e.providerId)?.refreshModels;t&&t().then(()=>{n(),i.updateModel()}).catch(()=>void 0)}})}export{l as wireWcNav};
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/onboarding-orchestrator-w98EfZg7.js","assets/logger-DDBAeTLF.js","assets/welcome-detection-Cr8mNEkt.js","assets/chunk-aKtaBQYM.js","assets/oauth-service-CoJ-pYVD.js","assets/preload-helper-zJ_50EbN.js","assets/proxied-fetch-BBO8HwcV.js","assets/panel-rpc-DqT2FG7c.js","assets/main-D-3iO2Pb.js","assets/modulepreload-polyfill-Dezn_h7o.js","assets/account-store-Dha2nLml.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/bedrock-camp-9-QEmC9Z.js","assets/transform-messages-DzB_lMo-.js","assets/tool-ui-YOPqzMmL.js","assets/clipboard-DgFtRQbq.js"])))=>i.map(i=>d[i]);
2
- import{t as e}from"./preload-helper-zJ_50EbN.js";import{h as t}from"./main-D-3iO2Pb.js";import{t as n}from"./welcome-detection-Cr8mNEkt.js";import{d as r}from"./wc-live-B3Dxlxlf.js";function i(e){let{vfs:r,storage:i,firedWelcomeActions:a,persistFiredWelcomeActions:o,getOrchestrator:s,log:c}=e;t(i)||n(r).then(e=>{if(e.isFirstRun){if(a.has(`first-run`)){c.debug(`Suppressing welcome re-fire: first-run already in dedup ledger`);return}a.add(`first-run`),o(a),s().handleFirstRun()}}).catch(e=>c.warn(`Welcome detection failed`,e))}function a(e){for(let t of[`slicc_accounts`,`selected-model`]){let n=localStorage.getItem(t);n!=null&&e.sendRaw({type:`local-storage-set`,key:t,value:n})}}function o(e,t,n,r){let i=n(e).filter(e=>!r(e.id)),a=t.defaultModelId?i.find(e=>e.id===t.defaultModelId):void 0,o=t.defaultModelId?i.find(e=>e.id.toLowerCase().includes(t.defaultModelId.toLowerCase())):void 0,s=a??o??i[0];return s?`${e}:${s.id}`:void 0}function s(e){let t=e.getAvailableProviders().filter(t=>e.providerOffersLlmModels(t)),n=t.map(t=>{let n=e.getProviderConfig(t);return{id:n.id,name:n.name??n.id,description:n.description,requiresApiKey:n.requiresApiKey??!0,requiresBaseUrl:n.requiresBaseUrl??!1,requiresDeployment:!!n.requiresDeployment,requiresApiVersion:!!n.requiresApiVersion,apiKeyPlaceholder:n.apiKeyPlaceholder??void 0,apiKeyEnvVar:n.apiKeyEnvVar??void 0,defaultBaseUrl:n.baseUrlPlaceholder??void 0,baseUrlDescription:n.baseUrlDescription??void 0,deploymentPlaceholder:n.deploymentPlaceholder??void 0,deploymentDescription:n.deploymentDescription??void 0,apiVersionDefault:n.apiVersionDefault??void 0,apiVersionDescription:n.apiVersionDescription??void 0,isOAuth:!!n.isOAuth}}).sort((e,t)=>e.name.localeCompare(t.name,void 0,{sensitivity:`base`})),r={};for(let n of t)try{r[n]=e.getProviderModels(n).filter(t=>!e.isModelHiddenFromPicker(t.id)).map(e=>({id:e.id,name:e.name}))}catch{r[n]=[]}return{providers:n,models:r}}async function c(t){let{OnboardingOrchestrator:n}=await e(async()=>{let{OnboardingOrchestrator:e}=await import(`./onboarding-orchestrator-w98EfZg7.js`);return{OnboardingOrchestrator:e}},__vite__mapDeps([0,1,2,3])),r=null;return{get:()=>r||(r=new n({fs:t.fs,postSystemMessage:t.postSystemMessage,postDipReference:t.postDipReference,getProviderCatalogue:()=>s(t.providers),saveAccount:(e,n,r,i,a)=>t.providers.addAccount(e,n,r,i,a),setSelectedModel:e=>t.providers.setSelectedModelId(e),resolveModelLabel:(e,n)=>{try{return t.providers.getProviderModels(e).find(e=>e.id===n)?.name??null}catch{return null}},broadcastToDip:e=>t.broadcastToDip(e),fireFinalLick:e=>t.onFireFinalLick(e),onAccountsChanged:t.onAccountsChanged?()=>t.onAccountsChanged?.():void 0,launchOAuth:async(e,n)=>await l(e,n??null,t)}),r),peek:()=>r,buildCatalogue:()=>s(t.providers)}}async function l(t,n,r){try{let i=r.providers.getProviderConfig(t);if(!i.isOAuth||!i.onOAuthLogin&&!i.onOAuthLoginIntercepted)return{ok:!1,message:`Provider does not support OAuth.`};if(i.requiresBaseUrl&&n&&r.providers.addAccount(t,``,n),i.onOAuthLoginIntercepted){let{createInterceptingOAuthLauncherForCurrentRuntime:t}=await e(async()=>{let{createInterceptingOAuthLauncherForCurrentRuntime:e}=await import(`./oauth-service-CoJ-pYVD.js`);return{createInterceptingOAuthLauncherForCurrentRuntime:e}},__vite__mapDeps([4,5,6,3,7])),n=await t();if(!n)return{ok:!1,message:`Intercepted OAuth requires the controlled-browser transport — open SLICC in standalone or extension mode.`};await i.onOAuthLoginIntercepted(n,()=>void 0,{presentDeviceCode:r.deviceCode.createSprinkleDeviceCodePrompter({broadcastToDip:e=>r.broadcastToDip(e)})})}else if(i.onOAuthLogin){let{createOAuthLauncher:t}=await e(async()=>{let{createOAuthLauncher:e}=await import(`./oauth-service-CoJ-pYVD.js`);return{createOAuthLauncher:e}},__vite__mapDeps([4,5,6,3,7])),n=t();await i.onOAuthLogin(n,()=>void 0)}return{ok:!0,model:o(t,i,r.providers.getProviderModels,r.providers.isModelHiddenFromPicker)}}catch(e){return{ok:!1,message:e instanceof Error?e.message:`OAuth login failed.`}}}var u=new Set([`first-run`,`onboarding-complete`,`onboarding-complete-with-provider`,`shortcut-migrate`]),d=`slicc:welcome-flow-fired`;function f(){try{let e=typeof localStorage<`u`?localStorage.getItem(d):null;if(!e)return new Set;let t=JSON.parse(e);return new Set(Array.isArray(t)?t.map(String):[])}catch{return new Set}}function p(e){try{if(typeof localStorage>`u`)return;localStorage.setItem(d,JSON.stringify([...e]))}catch{}}function m(e,t,n,r,i){if(u.has(e)&&t.has(e)){i.debug(`Suppressing duplicate welcome lick (${r})`,{action:e});return}u.has(e)&&(t.add(e),p(t)),n()}var h=new Set([`first-run`,`onboarding-complete`,`connect-ready`,`connect-attempt`,`oauth-attempt`,`device-code-decision`,`shortcut-migrate`]);function g(e){let{firedWelcomeActions:t,getAccounts:n,getProviderConfig:r,resolveDeviceCodeDecision:i,getOnboardingOrchestrator:a,applyPendingMount:o,fastForward:s,onShortcutMigrate:c,contextLabel:l,vfs:d,log:f}=e;return e=>{if(e.type!==`sprinkle`)return!1;let m=e.sprinkleName===`welcome`||e.sprinkleName===`inline`?e.body?.action:void 0;if(m&&u.has(m)){if(t.has(m))return f.debug(`Suppressing duplicate welcome lick (${l})`,{action:m}),!0;t.add(m),p(t)}if(!m||!h.has(m))return!1;let g=e.body;return S(m,g,{getAccounts:n,getProviderConfig:r,resolveDeviceCodeDecision:i,getOnboardingOrchestrator:a,applyPendingMount:o,fastForward:s,onShortcutMigrate:c,vfs:d,log:f})}}function _(e,t){let n=e[t];return typeof n==`string`&&n?n:null}function v(e,t){let n=t.getOnboardingOrchestrator(),r=e?.data??{};return r.mountWorkspace&&t.applyPendingMount&&t.applyPendingMount().catch(e=>t.log.warn(`Failed to mount workspace from onboarding`,e)),n.handleOnboardingComplete(r).catch(e=>t.log.warn(`OnboardingOrchestrator failed`,e)),!0}function y(e,t){let n=e?.data;return n&&t.getOnboardingOrchestrator().handleConnectAttempt({provider:String(n.provider??``),apiKey:String(n.apiKey??``),baseUrl:_(n,`baseUrl`),deployment:_(n,`deployment`),apiVersion:_(n,`apiVersion`),model:n.model==null?null:String(n.model)}).catch(e=>t.log.warn(`handleConnectAttempt failed`,e)),!0}function b(e,t){let n=e?.data;return n&&t.getOnboardingOrchestrator().handleOAuthAttempt({provider:String(n.provider??``),baseUrl:_(n,`baseUrl`)}).catch(e=>t.log.warn(`handleOAuthAttempt failed`,e)),!0}var x={"device-code-decision":(e,t)=>{let n=e?.data?.decision;return t.resolveDeviceCodeDecision(n===`cancel`?`cancel`:`continue`),!0},"first-run":(e,t)=>(t.getOnboardingOrchestrator().handleFirstRun(),!0),"onboarding-complete":v,"connect-ready":(e,t)=>C(t),"connect-attempt":y,"oauth-attempt":b,"shortcut-migrate":(e,t)=>(t.onShortcutMigrate(),!0)};function S(e,t,n){return x[e]?.(t,n)??!1}function C(e){let t=e.getAccounts();if(t.length===0)return e.getOnboardingOrchestrator().handleConnectReady(),!0;let n=t[0];return e.fastForward.broadcastAlreadyConnected(n.providerId),w(e.vfs,n.providerId,e.fastForward.fire).catch(t=>e.log.warn(`Failed to fire fast-forward final lick`,t)),!0}async function w(t,n,r){let{hasOnboardingFinalLickInHistory:i}=await e(async()=>{let{hasOnboardingFinalLickInHistory:e}=await import(`./welcome-detection-Cr8mNEkt.js`).then(e=>e.r);return{hasOnboardingFinalLickInHistory:e}},__vite__mapDeps([2,3,1]));if(await i())return;let a=t?await T(t):{},{getSelectedModelId:o,getProviderConfig:s,getProviderModels:c}=await e(async()=>{let{getSelectedModelId:e,getProviderConfig:t,getProviderModels:n}=await import(`./main-D-3iO2Pb.js`).then(e=>e.r);return{getSelectedModelId:e,getProviderConfig:t,getProviderModels:n}},__vite__mapDeps([8,3,9,5,10,11,12,13,14,15,1,16,7,17,18,19,20])),l=(()=>{try{return o()||null}catch{return null}})(),u=(()=>{if(!l)return null;try{return c(n).find(e=>e.id===l)?.name??l}catch{return l}})(),d=null;try{d=s(n).name??null}catch{}r({action:`onboarding-complete-with-provider`,data:{profile:a,provider:n,providerName:d,model:l,modelLabel:u,validation:`preexisting`}})}async function T(e){try{let t=await e.readDir(`/home`),n=null;for(let r of t){if(r.type!==`directory`)continue;let t=`/home/${r.name}/.welcome.json`;try{let r=(await e.stat(t)).mtime??0;if(n&&r<=n.mtime)continue;let i=await e.readFile(t,{encoding:`utf-8`}),a=JSON.parse(typeof i==`string`?i:new TextDecoder().decode(i));a&&typeof a==`object`&&(n={profile:a,mtime:r})}catch{}}return n?.profile??{}}catch{return{}}}function E(e){let{writer:t}=e;return{readFile:t.readFile.bind(t),writeFile:t.writeFile.bind(t),readDir:t.readDir.bind(t),stat:t.stat.bind(t),mkdir:t.mkdir.bind(t),exists:async e=>{try{return await t.stat(e),!0}catch{return!1}}}}async function D(t){let{client:n,getController:o,openVfs:s,log:l}=t,u=await e(()=>import(`./main-D-3iO2Pb.js`).then(e=>e.r),__vite__mapDeps([8,3,9,5,10,11,12,13,14,15,1,16,7,17,18,19,20])),{createSprinkleDeviceCodePrompter:d,resolveDeviceCodeDecision:h}=await e(async()=>{let{createSprinkleDeviceCodePrompter:e,resolveDeviceCodeDecision:t}=await import(`./device-code-bridge-CbHxw098.js`);return{createSprinkleDeviceCodePrompter:e,resolveDeviceCodeDecision:t}},[]),_=E(await s()),v=f(),y=e=>{let t=o();t?t.addAssistantMessage(e):l.warn(`WC onboarding: no controller to post welcome line`)},b=await c({fs:_,log:l,providers:u,deviceCode:{createSprinkleDeviceCodePrompter:d},postSystemMessage:y,postDipReference:y,broadcastToDip:e=>r(e),onFireFinalLick:e=>{a(n),m(String(e?.action??``),v,()=>n.sendSprinkleLick(`welcome`,e),`orchestrator-wc`,l)},onAccountsChanged:()=>{try{typeof window<`u`&&window.dispatchEvent(new CustomEvent(`slicc:accounts-changed`))}catch(e){l.warn(`Failed to dispatch slicc:accounts-changed`,e)}}}),x=g({firedWelcomeActions:v,getAccounts:u.getAccounts,getProviderConfig:u.getProviderConfig,resolveDeviceCodeDecision:h,getOnboardingOrchestrator:()=>b.get(),fastForward:{fire:e=>{m(String(e.action??``),v,()=>n.sendSprinkleLick(`welcome`,e),`fast-forward-wc`,l)},broadcastAlreadyConnected:e=>{let t=(()=>{try{return u.getProviderConfig(e)?.name??null}catch{return null}})();r({type:`slicc-already-connected`,provider:e,note:t?`Already connected to ${t}.`:`Already connected.`})}},onShortcutMigrate:()=>{_.writeFile(`/shared/.welcomed`,`1`).catch(e=>l.warn(`Failed to persist welcome completion marker`,e))},contextLabel:`wc`,vfs:_,log:l});return i({vfs:_,storage:window.localStorage,firedWelcomeActions:v,persistFiredWelcomeActions:p,getOrchestrator:()=>b.get(),log:l}),{interceptWelcomeLick:x}}export{D as wireWcOnboarding};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/onboarding-orchestrator-w98EfZg7.js","assets/logger-DDBAeTLF.js","assets/welcome-detection-Cr8mNEkt.js","assets/chunk-aKtaBQYM.js","assets/oauth-service-CoJ-pYVD.js","assets/preload-helper-zJ_50EbN.js","assets/proxied-fetch-BBO8HwcV.js","assets/panel-rpc-DqT2FG7c.js","assets/main-xJNt0P6z.js","assets/modulepreload-polyfill-Dezn_h7o.js","assets/account-store-Dd_leIXI.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/bedrock-camp-9-QEmC9Z.js","assets/transform-messages-DzB_lMo-.js","assets/tool-ui-YOPqzMmL.js","assets/clipboard-DgFtRQbq.js"])))=>i.map(i=>d[i]);
2
+ import{t as e}from"./preload-helper-zJ_50EbN.js";import{h as t}from"./main-xJNt0P6z.js";import{t as n}from"./welcome-detection-Cr8mNEkt.js";import{d as r}from"./wc-live-692eqzbB.js";function i(e){let{vfs:r,storage:i,firedWelcomeActions:a,persistFiredWelcomeActions:o,getOrchestrator:s,log:c}=e;t(i)||n(r).then(e=>{if(e.isFirstRun){if(a.has(`first-run`)){c.debug(`Suppressing welcome re-fire: first-run already in dedup ledger`);return}a.add(`first-run`),o(a),s().handleFirstRun()}}).catch(e=>c.warn(`Welcome detection failed`,e))}function a(e){for(let t of[`slicc_accounts`,`selected-model`]){let n=localStorage.getItem(t);n!=null&&e.sendRaw({type:`local-storage-set`,key:t,value:n})}}function o(e,t,n,r){let i=n(e).filter(e=>!r(e.id)),a=t.defaultModelId?i.find(e=>e.id===t.defaultModelId):void 0,o=t.defaultModelId?i.find(e=>e.id.toLowerCase().includes(t.defaultModelId.toLowerCase())):void 0,s=a??o??i[0];return s?`${e}:${s.id}`:void 0}function s(e){let t=e.getAvailableProviders().filter(t=>e.providerOffersLlmModels(t)),n=t.map(t=>{let n=e.getProviderConfig(t);return{id:n.id,name:n.name??n.id,description:n.description,requiresApiKey:n.requiresApiKey??!0,requiresBaseUrl:n.requiresBaseUrl??!1,requiresDeployment:!!n.requiresDeployment,requiresApiVersion:!!n.requiresApiVersion,apiKeyPlaceholder:n.apiKeyPlaceholder??void 0,apiKeyEnvVar:n.apiKeyEnvVar??void 0,defaultBaseUrl:n.baseUrlPlaceholder??void 0,baseUrlDescription:n.baseUrlDescription??void 0,deploymentPlaceholder:n.deploymentPlaceholder??void 0,deploymentDescription:n.deploymentDescription??void 0,apiVersionDefault:n.apiVersionDefault??void 0,apiVersionDescription:n.apiVersionDescription??void 0,isOAuth:!!n.isOAuth}}).sort((e,t)=>e.name.localeCompare(t.name,void 0,{sensitivity:`base`})),r={};for(let n of t)try{r[n]=e.getProviderModels(n).filter(t=>!e.isModelHiddenFromPicker(t.id)).map(e=>({id:e.id,name:e.name}))}catch{r[n]=[]}return{providers:n,models:r}}async function c(t){let{OnboardingOrchestrator:n}=await e(async()=>{let{OnboardingOrchestrator:e}=await import(`./onboarding-orchestrator-w98EfZg7.js`);return{OnboardingOrchestrator:e}},__vite__mapDeps([0,1,2,3])),r=null;return{get:()=>r||(r=new n({fs:t.fs,postSystemMessage:t.postSystemMessage,postDipReference:t.postDipReference,getProviderCatalogue:()=>s(t.providers),saveAccount:(e,n,r,i,a)=>t.providers.addAccount(e,n,r,i,a),setSelectedModel:e=>t.providers.setSelectedModelId(e),resolveModelLabel:(e,n)=>{try{return t.providers.getProviderModels(e).find(e=>e.id===n)?.name??null}catch{return null}},broadcastToDip:e=>t.broadcastToDip(e),fireFinalLick:e=>t.onFireFinalLick(e),onAccountsChanged:t.onAccountsChanged?()=>t.onAccountsChanged?.():void 0,launchOAuth:async(e,n)=>await l(e,n??null,t)}),r),peek:()=>r,buildCatalogue:()=>s(t.providers)}}async function l(t,n,r){try{let i=r.providers.getProviderConfig(t);if(!i.isOAuth||!i.onOAuthLogin&&!i.onOAuthLoginIntercepted)return{ok:!1,message:`Provider does not support OAuth.`};if(i.requiresBaseUrl&&n&&r.providers.addAccount(t,``,n),i.onOAuthLoginIntercepted){let{createInterceptingOAuthLauncherForCurrentRuntime:t}=await e(async()=>{let{createInterceptingOAuthLauncherForCurrentRuntime:e}=await import(`./oauth-service-CoJ-pYVD.js`);return{createInterceptingOAuthLauncherForCurrentRuntime:e}},__vite__mapDeps([4,5,6,3,7])),n=await t();if(!n)return{ok:!1,message:`Intercepted OAuth requires the controlled-browser transport — open SLICC in standalone or extension mode.`};await i.onOAuthLoginIntercepted(n,()=>void 0,{presentDeviceCode:r.deviceCode.createSprinkleDeviceCodePrompter({broadcastToDip:e=>r.broadcastToDip(e)})})}else if(i.onOAuthLogin){let{createOAuthLauncher:t}=await e(async()=>{let{createOAuthLauncher:e}=await import(`./oauth-service-CoJ-pYVD.js`);return{createOAuthLauncher:e}},__vite__mapDeps([4,5,6,3,7])),n=t();await i.onOAuthLogin(n,()=>void 0)}return{ok:!0,model:o(t,i,r.providers.getProviderModels,r.providers.isModelHiddenFromPicker)}}catch(e){return{ok:!1,message:e instanceof Error?e.message:`OAuth login failed.`}}}var u=new Set([`first-run`,`onboarding-complete`,`onboarding-complete-with-provider`,`shortcut-migrate`]),d=`slicc:welcome-flow-fired`;function f(){try{let e=typeof localStorage<`u`?localStorage.getItem(d):null;if(!e)return new Set;let t=JSON.parse(e);return new Set(Array.isArray(t)?t.map(String):[])}catch{return new Set}}function p(e){try{if(typeof localStorage>`u`)return;localStorage.setItem(d,JSON.stringify([...e]))}catch{}}function m(e,t,n,r,i){if(u.has(e)&&t.has(e)){i.debug(`Suppressing duplicate welcome lick (${r})`,{action:e});return}u.has(e)&&(t.add(e),p(t)),n()}var h=new Set([`first-run`,`onboarding-complete`,`connect-ready`,`connect-attempt`,`oauth-attempt`,`device-code-decision`,`shortcut-migrate`]);function g(e){let{firedWelcomeActions:t,getAccounts:n,getProviderConfig:r,resolveDeviceCodeDecision:i,getOnboardingOrchestrator:a,applyPendingMount:o,fastForward:s,onShortcutMigrate:c,contextLabel:l,vfs:d,log:f}=e;return e=>{if(e.type!==`sprinkle`)return!1;let m=e.sprinkleName===`welcome`||e.sprinkleName===`inline`?e.body?.action:void 0;if(m&&u.has(m)){if(t.has(m))return f.debug(`Suppressing duplicate welcome lick (${l})`,{action:m}),!0;t.add(m),p(t)}if(!m||!h.has(m))return!1;let g=e.body;return S(m,g,{getAccounts:n,getProviderConfig:r,resolveDeviceCodeDecision:i,getOnboardingOrchestrator:a,applyPendingMount:o,fastForward:s,onShortcutMigrate:c,vfs:d,log:f})}}function _(e,t){let n=e[t];return typeof n==`string`&&n?n:null}function v(e,t){let n=t.getOnboardingOrchestrator(),r=e?.data??{};return r.mountWorkspace&&t.applyPendingMount&&t.applyPendingMount().catch(e=>t.log.warn(`Failed to mount workspace from onboarding`,e)),n.handleOnboardingComplete(r).catch(e=>t.log.warn(`OnboardingOrchestrator failed`,e)),!0}function y(e,t){let n=e?.data;return n&&t.getOnboardingOrchestrator().handleConnectAttempt({provider:String(n.provider??``),apiKey:String(n.apiKey??``),baseUrl:_(n,`baseUrl`),deployment:_(n,`deployment`),apiVersion:_(n,`apiVersion`),model:n.model==null?null:String(n.model)}).catch(e=>t.log.warn(`handleConnectAttempt failed`,e)),!0}function b(e,t){let n=e?.data;return n&&t.getOnboardingOrchestrator().handleOAuthAttempt({provider:String(n.provider??``),baseUrl:_(n,`baseUrl`)}).catch(e=>t.log.warn(`handleOAuthAttempt failed`,e)),!0}var x={"device-code-decision":(e,t)=>{let n=e?.data?.decision;return t.resolveDeviceCodeDecision(n===`cancel`?`cancel`:`continue`),!0},"first-run":(e,t)=>(t.getOnboardingOrchestrator().handleFirstRun(),!0),"onboarding-complete":v,"connect-ready":(e,t)=>C(t),"connect-attempt":y,"oauth-attempt":b,"shortcut-migrate":(e,t)=>(t.onShortcutMigrate(),!0)};function S(e,t,n){return x[e]?.(t,n)??!1}function C(e){let t=e.getAccounts();if(t.length===0)return e.getOnboardingOrchestrator().handleConnectReady(),!0;let n=t[0];return e.fastForward.broadcastAlreadyConnected(n.providerId),w(e.vfs,n.providerId,e.fastForward.fire).catch(t=>e.log.warn(`Failed to fire fast-forward final lick`,t)),!0}async function w(t,n,r){let{hasOnboardingFinalLickInHistory:i}=await e(async()=>{let{hasOnboardingFinalLickInHistory:e}=await import(`./welcome-detection-Cr8mNEkt.js`).then(e=>e.r);return{hasOnboardingFinalLickInHistory:e}},__vite__mapDeps([2,3,1]));if(await i())return;let a=t?await T(t):{},{getSelectedModelId:o,getProviderConfig:s,getProviderModels:c}=await e(async()=>{let{getSelectedModelId:e,getProviderConfig:t,getProviderModels:n}=await import(`./main-xJNt0P6z.js`).then(e=>e.r);return{getSelectedModelId:e,getProviderConfig:t,getProviderModels:n}},__vite__mapDeps([8,3,9,5,10,11,12,13,14,15,1,16,7,17,18,19,20])),l=(()=>{try{return o()||null}catch{return null}})(),u=(()=>{if(!l)return null;try{return c(n).find(e=>e.id===l)?.name??l}catch{return l}})(),d=null;try{d=s(n).name??null}catch{}r({action:`onboarding-complete-with-provider`,data:{profile:a,provider:n,providerName:d,model:l,modelLabel:u,validation:`preexisting`}})}async function T(e){try{let t=await e.readDir(`/home`),n=null;for(let r of t){if(r.type!==`directory`)continue;let t=`/home/${r.name}/.welcome.json`;try{let r=(await e.stat(t)).mtime??0;if(n&&r<=n.mtime)continue;let i=await e.readFile(t,{encoding:`utf-8`}),a=JSON.parse(typeof i==`string`?i:new TextDecoder().decode(i));a&&typeof a==`object`&&(n={profile:a,mtime:r})}catch{}}return n?.profile??{}}catch{return{}}}function E(e){let{writer:t}=e;return{readFile:t.readFile.bind(t),writeFile:t.writeFile.bind(t),readDir:t.readDir.bind(t),stat:t.stat.bind(t),mkdir:t.mkdir.bind(t),exists:async e=>{try{return await t.stat(e),!0}catch{return!1}}}}async function D(t){let{client:n,getController:o,openVfs:s,log:l}=t,u=await e(()=>import(`./main-xJNt0P6z.js`).then(e=>e.r),__vite__mapDeps([8,3,9,5,10,11,12,13,14,15,1,16,7,17,18,19,20])),{createSprinkleDeviceCodePrompter:d,resolveDeviceCodeDecision:h}=await e(async()=>{let{createSprinkleDeviceCodePrompter:e,resolveDeviceCodeDecision:t}=await import(`./device-code-bridge-CbHxw098.js`);return{createSprinkleDeviceCodePrompter:e,resolveDeviceCodeDecision:t}},[]),_=E(await s()),v=f(),y=e=>{let t=o();t?t.addAssistantMessage(e):l.warn(`WC onboarding: no controller to post welcome line`)},b=await c({fs:_,log:l,providers:u,deviceCode:{createSprinkleDeviceCodePrompter:d},postSystemMessage:y,postDipReference:y,broadcastToDip:e=>r(e),onFireFinalLick:e=>{a(n),m(String(e?.action??``),v,()=>n.sendSprinkleLick(`welcome`,e),`orchestrator-wc`,l)},onAccountsChanged:()=>{try{typeof window<`u`&&window.dispatchEvent(new CustomEvent(`slicc:accounts-changed`))}catch(e){l.warn(`Failed to dispatch slicc:accounts-changed`,e)}}}),x=g({firedWelcomeActions:v,getAccounts:u.getAccounts,getProviderConfig:u.getProviderConfig,resolveDeviceCodeDecision:h,getOnboardingOrchestrator:()=>b.get(),fastForward:{fire:e=>{m(String(e.action??``),v,()=>n.sendSprinkleLick(`welcome`,e),`fast-forward-wc`,l)},broadcastAlreadyConnected:e=>{let t=(()=>{try{return u.getProviderConfig(e)?.name??null}catch{return null}})();r({type:`slicc-already-connected`,provider:e,note:t?`Already connected to ${t}.`:`Already connected.`})}},onShortcutMigrate:()=>{_.writeFile(`/shared/.welcomed`,`1`).catch(e=>l.warn(`Failed to persist welcome completion marker`,e))},contextLabel:`wc`,vfs:_,log:l});return i({vfs:_,storage:window.localStorage,firedWelcomeActions:v,persistFiredWelcomeActions:p,getOrchestrator:()=>b.get(),log:l}),{interceptWelcomeLick:x}}export{D as wireWcOnboarding};
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/quick-llm-pCxnbK4A.js","assets/chunk-aKtaBQYM.js","assets/account-store-Dha2nLml.js","assets/preload-helper-zJ_50EbN.js","assets/dist-BmWy99kl.js","assets/event-stream-BJI_nGaK.js","assets/json-parse-BUunmmNl.js","assets/__vite-browser-external-C7iut881.js","assets/context-compaction-CFWyOzX1.js","assets/logger-DDBAeTLF.js","assets/src-DlEHAkLd.js","assets/panel-rpc-DqT2FG7c.js","assets/bedrock-camp-9-QEmC9Z.js","assets/transform-messages-DzB_lMo-.js","assets/tool-ui-YOPqzMmL.js","assets/icons-BU6llBsN.js","assets/main-D-3iO2Pb.js","assets/modulepreload-polyfill-Dezn_h7o.js","assets/clipboard-DgFtRQbq.js","assets/llm-session-id-DVmZ9C2t.js"])))=>i.map(i=>d[i]);
2
- import{t as e}from"./preload-helper-zJ_50EbN.js";import{_ as t}from"./wc-shell-BGaEWRGh.js";var n=400,r=800,i=`You suggest the user's next prompt in a coding-agent chat. Based on the recent conversation, output ONE concrete follow-up the user might type next. Reply with just the prompt text — no quotes, no preamble, no list. Max 80 characters. If nothing useful comes to mind, reply exactly: What shall we build?`;function a(e,t){return e.length>t?`${e.slice(0,t)}…`:e}function o(e){let i=e.filter(e=>!e.isStreaming&&!e.queued&&e.source!==`lick`),o=[...i].reverse().find(e=>e.role===`assistant`),s=i.filter(e=>e.role===`user`).slice(-3);return!o||s.length===0?null:[...s.map(e=>`[user]: ${a(t(e.content),n)}`),`[assistant]: ${a(o.content,r)}`].join(`
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/quick-llm-BOgo_uty.js","assets/chunk-aKtaBQYM.js","assets/account-store-Dd_leIXI.js","assets/preload-helper-zJ_50EbN.js","assets/dist-BmWy99kl.js","assets/event-stream-BJI_nGaK.js","assets/json-parse-BUunmmNl.js","assets/__vite-browser-external-C7iut881.js","assets/context-compaction-CFWyOzX1.js","assets/logger-DDBAeTLF.js","assets/src-DlEHAkLd.js","assets/panel-rpc-DqT2FG7c.js","assets/bedrock-camp-9-QEmC9Z.js","assets/transform-messages-DzB_lMo-.js","assets/tool-ui-YOPqzMmL.js","assets/icons-BU6llBsN.js","assets/main-xJNt0P6z.js","assets/modulepreload-polyfill-Dezn_h7o.js","assets/clipboard-DgFtRQbq.js","assets/llm-session-id-DVmZ9C2t.js"])))=>i.map(i=>d[i]);
2
+ import{t as e}from"./preload-helper-zJ_50EbN.js";import{_ as t}from"./wc-shell-Cl1ON8m4.js";var n=400,r=800,i=`You suggest the user's next prompt in a coding-agent chat. Based on the recent conversation, output ONE concrete follow-up the user might type next. Reply with just the prompt text — no quotes, no preamble, no list. Max 80 characters. If nothing useful comes to mind, reply exactly: What shall we build?`;function a(e,t){return e.length>t?`${e.slice(0,t)}…`:e}function o(e){let i=e.filter(e=>!e.isStreaming&&!e.queued&&e.source!==`lick`),o=[...i].reverse().find(e=>e.role===`assistant`),s=i.filter(e=>e.role===`user`).slice(-3);return!o||s.length===0?null:[...s.map(e=>`[user]: ${a(t(e.content),n)}`),`[assistant]: ${a(o.content,r)}`].join(`
3
3
 
4
- `)}async function s(t){if(t.currentValue.length>0)return;let n=o(t.messages);if(!n){t.setPlaceholder(t.defaultPlaceholder);return}let r=await(t.quickLabelFn??(await e(async()=>{let{quickLabel:e}=await import(`./quick-llm-pCxnbK4A.js`).then(e=>e.n);return{quickLabel:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]))).quickLabel)({system:i,prompt:`Recent conversation:\n${n}`,maxTokens:40,signal:t.signal});t.signal?.aborted||t.currentValue.length>0||t.setPlaceholder(r&&r.length>0?r:t.defaultPlaceholder)}function c(e,t,n){t===n?(e.removeAttribute(`suggestion`),e.setAttribute(`placeholder`,t)):e.setAttribute(`suggestion`,t)}function l(e){let t=null;return()=>{e.inputCard.hasAttribute(`disabled`)||(t?.abort(),t=new AbortController,s({messages:e.getMessages(),currentValue:e.inputCard.value??``,setPlaceholder:t=>c(e.inputCard,t,e.defaultPlaceholder),defaultPlaceholder:e.defaultPlaceholder,signal:t.signal}).catch(()=>void 0))}}export{l as createPlaceholderRefresher};
4
+ `)}async function s(t){if(t.currentValue.length>0)return;let n=o(t.messages);if(!n){t.setPlaceholder(t.defaultPlaceholder);return}let r=await(t.quickLabelFn??(await e(async()=>{let{quickLabel:e}=await import(`./quick-llm-BOgo_uty.js`).then(e=>e.n);return{quickLabel:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]))).quickLabel)({system:i,prompt:`Recent conversation:\n${n}`,maxTokens:40,signal:t.signal});t.signal?.aborted||t.currentValue.length>0||t.setPlaceholder(r&&r.length>0?r:t.defaultPlaceholder)}function c(e,t,n){t===n?(e.removeAttribute(`suggestion`),e.setAttribute(`placeholder`,t)):e.setAttribute(`suggestion`,t)}function l(e){let t=null;return()=>{e.inputCard.hasAttribute(`disabled`)||(t?.abort(),t=new AbortController,s({messages:e.getMessages(),currentValue:e.inputCard.value??``,setPlaceholder:t=>c(e.inputCard,t,e.defaultPlaceholder),defaultPlaceholder:e.defaultPlaceholder,signal:t.signal}).catch(()=>void 0))}}export{l as createPlaceholderRefresher};
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/oauth-service-CoJ-pYVD.js","assets/preload-helper-zJ_50EbN.js","assets/proxied-fetch-BBO8HwcV.js","assets/chunk-aKtaBQYM.js","assets/panel-rpc-DqT2FG7c.js","assets/main-D-3iO2Pb.js","assets/modulepreload-polyfill-Dezn_h7o.js","assets/account-store-Dha2nLml.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/bedrock-camp-9-QEmC9Z.js","assets/transform-messages-DzB_lMo-.js","assets/tool-ui-YOPqzMmL.js","assets/clipboard-DgFtRQbq.js"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/oauth-service-CoJ-pYVD.js","assets/preload-helper-zJ_50EbN.js","assets/proxied-fetch-BBO8HwcV.js","assets/chunk-aKtaBQYM.js","assets/panel-rpc-DqT2FG7c.js","assets/main-xJNt0P6z.js","assets/modulepreload-polyfill-Dezn_h7o.js","assets/account-store-Dd_leIXI.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/bedrock-camp-9-QEmC9Z.js","assets/transform-messages-DzB_lMo-.js","assets/tool-ui-YOPqzMmL.js","assets/clipboard-DgFtRQbq.js"])))=>i.map(i=>d[i]);
2
2
  import{t as e}from"./preload-helper-zJ_50EbN.js";var t=`slicc-wc-settings-style`,n=`
3
3
  /* Width is owned by the dialog card (via ::part) — a min-width on the body
4
4
  used to overflow the card's content box and clip the row borders. */
@@ -21,4 +21,4 @@ slicc-dialog.wcset-dialog::part(dialog){width:min(520px,92vw);}
21
21
  .wcset__select:focus,.wcset__input:focus{border-color:var(--ctx);}
22
22
  .wcset__status{font-size:11.5px;color:var(--txt-3);min-height:14px;}
23
23
  .wcset__status[data-error]{color:#b91c1c;}
24
- `;function r(e){if(e.getElementById(t))return;let r=e.createElement(`style`);r.id=t,r.textContent=n,e.head.appendChild(r)}function i(e,t){let n=document.createElement(`div`);return n.className=e,t!==void 0&&(n.textContent=t),n}function a(e,t,n){let r=document.createElement(`button`);return r.type=`button`,r.className=e,r.textContent=t,r.addEventListener(`click`,n),r}function o(e){return e?e.length<=8?`••••`:`${e.slice(0,4)}…${e.slice(-4)}`:``}function s(e){let t;return t=e.loggedOut?e.userName?`Logged out — was ${e.userName}`:`Logged out`:e.userName?e.userName:e.accessToken?`Logged in`:o(e.apiKey),e.baseUrl?`${t} • ${e.baseUrl}`:t}async function c(t,n,r){let{ps:i,log:a,setStatus:o,renderList:s}=r,c=i.getProviderConfig(t),l=i.getAccounts().some(e=>e.providerId===t);if(c.requiresBaseUrl){if(!n.trim()&&!i.getBaseUrlForProvider(t)){o(`Base URL is required.`,!0);return}n.trim()&&i.addAccount(t,``,n.trim())}o(`Opening login window…`);let u=()=>{o(``),s()};try{if(c.onOAuthLoginIntercepted){let{createInterceptingOAuthLauncherForCurrentRuntime:t}=await e(async()=>{let{createInterceptingOAuthLauncherForCurrentRuntime:e}=await import(`./oauth-service-CoJ-pYVD.js`);return{createInterceptingOAuthLauncherForCurrentRuntime:e}},__vite__mapDeps([0,1,2,3,4])),n=await t();if(!n)throw Error(`No controlled-browser CDP transport available — open SLICC in standalone mode or the Chrome extension.`);await c.onOAuthLoginIntercepted(n,u)}else if(c.onOAuthLogin){let{createOAuthLauncher:t}=await e(async()=>{let{createOAuthLauncher:e}=await import(`./oauth-service-CoJ-pYVD.js`);return{createOAuthLauncher:e}},__vite__mapDeps([0,1,2,3,4]));await c.onOAuthLogin(t(),u)}else throw Error(`${c.name} does not support interactive login.`)}catch(e){l||await i.removeAccount(t).catch(()=>void 0),a.error(`WC settings OAuth login failed`,{providerId:t,err:e}),o(`Login failed: ${e instanceof Error?e.message:String(e)}`,!0)}}function l(e,t,n){let{ps:r,log:o,setStatus:l,renderList:u}=n,d=i(`wcset__row`),f=i(`wcset__info`);if(f.append(i(`wcset__name`,t.name),i(`wcset__detail`,s(e))),d.append(f),t.isOAuth){let t=e.loggedOut===!0;d.append(a(`wcset__btn`,t?`Log in`:`Log out`,()=>{t?c(e.providerId,``,n):r.logoutOAuthAccount(e.providerId).then(u).catch(t=>{o.error(`WC settings logout failed`,{providerId:e.providerId,err:t}),l(`Logout failed.`,!0)})}))}return d.append(a(`wcset__btn wcset__btn--danger`,`Remove`,()=>{r.removeAccount(e.providerId).then(u).catch(t=>{o.error(`WC settings remove failed`,{providerId:e.providerId,err:t}),l(`Remove failed.`,!0)})})),d}function u(e){let{ps:t,setStatus:n}=e,r=i(`wcset__add`);r.append(i(`wcset__label`,`Add account`));let o=document.createElement(`select`);o.className=`wcset__select`;let s=document.createElement(`option`);s.value=``,s.textContent=`Choose a provider…`,o.append(s);let l=new Set(t.getAccounts().map(e=>e.providerId)),u=t.getAvailableProviders().filter(e=>!l.has(e)&&t.providerOffersLlmModels(e)).sort((e,n)=>t.getProviderConfig(e).name.localeCompare(t.getProviderConfig(n).name));for(let e of u){let n=document.createElement(`option`);n.value=e,n.textContent=t.getProviderConfig(e).name,o.append(n)}r.append(o);let d=i(`wcset__controls`);return d.style.cssText=`display:flex;flex-direction:column;gap:8px;`,r.append(d),o.addEventListener(`change`,()=>{d.replaceChildren(),n(``);let r=o.value;if(!r)return;let i=t.getProviderConfig(r),s=document.createElement(`input`);if(s.className=`wcset__input`,s.placeholder=`Base URL`,s.value=t.getBaseUrlForProvider(r)??``,i.requiresBaseUrl&&d.append(s),i.isOAuth){d.append(a(`wcset__btn wcset__btn--primary`,`Login with ${i.name}`,()=>{c(r,s.value,e)}));return}let l=document.createElement(`input`);l.className=`wcset__input`,l.type=`password`,l.placeholder=`API key`,l.setAttribute(`data-testid`,`wcset-api-key`),d.append(l),d.append(a(`wcset__btn wcset__btn--primary`,`Save`,()=>{let a=l.value.trim();if(!a){n(`An API key is required.`,!0),l.focus();return}if(i.requiresBaseUrl&&!s.value.trim()){n(`Base URL is required.`,!0),s.focus();return}t.addAccount(r,a,s.value.trim()||void 0),l.value=``,n(`${i.name} connected.`),e.renderList()}))}),r}async function d(t){let n=await e(()=>import(`./main-D-3iO2Pb.js`).then(e=>e.r),__vite__mapDeps([5,3,6,1,7,8,9,10,11,12,13,14,4,15,16,17,18]));r(document);let o=JSON.stringify(n.getAccounts());return new Promise(e=>{let r=document.createElement(`slicc-dialog`);r.classList.add(`wcset-dialog`),r.setAttribute(`heading`,`Accounts`);let s=i(`wcset`),c=i(`wcset__list`),d=i(`wcset__status`),f=(e,t=!1)=>{d.textContent=e,d.toggleAttribute(`data-error`,t)},p=o,m=()=>{let e=JSON.stringify(n.getAccounts());e!==p&&(p=e,window.dispatchEvent(new CustomEvent(`slicc:accounts-changed`)))},h={ps:n,log:t,setStatus:f,renderList:()=>{m(),c.replaceChildren();let e=n.getAccounts();if(e.length===0){c.append(i(`wcset__empty`,`No accounts configured.`));return}for(let t of e)c.append(l(t,n.getProviderConfig(t.providerId),h))}};h.renderList(),s.append(c,u(h),d),r.append(s);let g=a(`wcset__btn wcset__btn--primary`,`Done`,()=>{r.hide?.()});g.setAttribute(`slot`,`footer`),r.append(g),r.addEventListener(`slicc-dialog-close`,()=>{r.remove(),e(JSON.stringify(n.getAccounts())!==o)}),document.body.append(r),r.show?.()})}export{d as showWcSettings};
24
+ `;function r(e){if(e.getElementById(t))return;let r=e.createElement(`style`);r.id=t,r.textContent=n,e.head.appendChild(r)}function i(e,t){let n=document.createElement(`div`);return n.className=e,t!==void 0&&(n.textContent=t),n}function a(e,t,n){let r=document.createElement(`button`);return r.type=`button`,r.className=e,r.textContent=t,r.addEventListener(`click`,n),r}function o(e){return e?e.length<=8?`••••`:`${e.slice(0,4)}…${e.slice(-4)}`:``}function s(e){let t;return t=e.loggedOut?e.userName?`Logged out — was ${e.userName}`:`Logged out`:e.userName?e.userName:e.accessToken?`Logged in`:o(e.apiKey),e.baseUrl?`${t} • ${e.baseUrl}`:t}async function c(t,n,r){let{ps:i,log:a,setStatus:o,renderList:s}=r,c=i.getProviderConfig(t),l=i.getAccounts().some(e=>e.providerId===t);if(c.requiresBaseUrl){if(!n.trim()&&!i.getBaseUrlForProvider(t)){o(`Base URL is required.`,!0);return}n.trim()&&i.addAccount(t,``,n.trim())}o(`Opening login window…`);let u=()=>{o(``),s()};try{if(c.onOAuthLoginIntercepted){let{createInterceptingOAuthLauncherForCurrentRuntime:t}=await e(async()=>{let{createInterceptingOAuthLauncherForCurrentRuntime:e}=await import(`./oauth-service-CoJ-pYVD.js`);return{createInterceptingOAuthLauncherForCurrentRuntime:e}},__vite__mapDeps([0,1,2,3,4])),n=await t();if(!n)throw Error(`No controlled-browser CDP transport available — open SLICC in standalone mode or the Chrome extension.`);await c.onOAuthLoginIntercepted(n,u)}else if(c.onOAuthLogin){let{createOAuthLauncher:t}=await e(async()=>{let{createOAuthLauncher:e}=await import(`./oauth-service-CoJ-pYVD.js`);return{createOAuthLauncher:e}},__vite__mapDeps([0,1,2,3,4]));await c.onOAuthLogin(t(),u)}else throw Error(`${c.name} does not support interactive login.`)}catch(e){l||await i.removeAccount(t).catch(()=>void 0),a.error(`WC settings OAuth login failed`,{providerId:t,err:e}),o(`Login failed: ${e instanceof Error?e.message:String(e)}`,!0)}}function l(e,t,n){let{ps:r,log:o,setStatus:l,renderList:u}=n,d=i(`wcset__row`),f=i(`wcset__info`);if(f.append(i(`wcset__name`,t.name),i(`wcset__detail`,s(e))),d.append(f),t.isOAuth){let t=e.loggedOut===!0;d.append(a(`wcset__btn`,t?`Log in`:`Log out`,()=>{t?c(e.providerId,``,n):r.logoutOAuthAccount(e.providerId).then(u).catch(t=>{o.error(`WC settings logout failed`,{providerId:e.providerId,err:t}),l(`Logout failed.`,!0)})}))}return d.append(a(`wcset__btn wcset__btn--danger`,`Remove`,()=>{r.removeAccount(e.providerId).then(u).catch(t=>{o.error(`WC settings remove failed`,{providerId:e.providerId,err:t}),l(`Remove failed.`,!0)})})),d}function u(e){let{ps:t,setStatus:n}=e,r=i(`wcset__add`);r.append(i(`wcset__label`,`Add account`));let o=document.createElement(`select`);o.className=`wcset__select`;let s=document.createElement(`option`);s.value=``,s.textContent=`Choose a provider…`,o.append(s);let l=new Set(t.getAccounts().map(e=>e.providerId)),u=t.getAvailableProviders().filter(e=>!l.has(e)&&t.providerOffersLlmModels(e)).sort((e,n)=>t.getProviderConfig(e).name.localeCompare(t.getProviderConfig(n).name));for(let e of u){let n=document.createElement(`option`);n.value=e,n.textContent=t.getProviderConfig(e).name,o.append(n)}r.append(o);let d=i(`wcset__controls`);return d.style.cssText=`display:flex;flex-direction:column;gap:8px;`,r.append(d),o.addEventListener(`change`,()=>{d.replaceChildren(),n(``);let r=o.value;if(!r)return;let i=t.getProviderConfig(r),s=document.createElement(`input`);if(s.className=`wcset__input`,s.placeholder=`Base URL`,s.value=t.getBaseUrlForProvider(r)??``,i.requiresBaseUrl&&d.append(s),i.isOAuth){d.append(a(`wcset__btn wcset__btn--primary`,`Login with ${i.name}`,()=>{c(r,s.value,e)}));return}let l=document.createElement(`input`);l.className=`wcset__input`,l.type=`password`,l.placeholder=`API key`,l.setAttribute(`data-testid`,`wcset-api-key`),d.append(l),d.append(a(`wcset__btn wcset__btn--primary`,`Save`,()=>{let a=l.value.trim();if(!a){n(`An API key is required.`,!0),l.focus();return}if(i.requiresBaseUrl&&!s.value.trim()){n(`Base URL is required.`,!0),s.focus();return}t.addAccount(r,a,s.value.trim()||void 0),l.value=``,n(`${i.name} connected.`),e.renderList()}))}),r}async function d(t){let n=await e(()=>import(`./main-xJNt0P6z.js`).then(e=>e.r),__vite__mapDeps([5,3,6,1,7,8,9,10,11,12,13,14,4,15,16,17,18]));r(document);let o=JSON.stringify(n.getAccounts());return new Promise(e=>{let r=document.createElement(`slicc-dialog`);r.classList.add(`wcset-dialog`),r.setAttribute(`heading`,`Accounts`);let s=i(`wcset`),c=i(`wcset__list`),d=i(`wcset__status`),f=(e,t=!1)=>{d.textContent=e,d.toggleAttribute(`data-error`,t)},p=o,m=()=>{let e=JSON.stringify(n.getAccounts());e!==p&&(p=e,window.dispatchEvent(new CustomEvent(`slicc:accounts-changed`)))},h={ps:n,log:t,setStatus:f,renderList:()=>{m(),c.replaceChildren();let e=n.getAccounts();if(e.length===0){c.append(i(`wcset__empty`,`No accounts configured.`));return}for(let t of e)c.append(l(t,n.getProviderConfig(t.providerId),h))}};h.renderList(),s.append(c,u(h),d),r.append(s);let g=a(`wcset__btn wcset__btn--primary`,`Done`,()=>{r.hide?.()});g.setAttribute(`slot`,`footer`),r.append(g),r.addEventListener(`slicc-dialog-close`,()=>{r.remove(),e(JSON.stringify(n.getAccounts())!==o)}),document.body.append(r),r.show?.()})}export{d as showWcSettings};