sliccy 4.12.0 → 4.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/dist/ui/assets/{account-store-CciZPZYw.js → account-store-BsFTtkDo.js} +3 -3
  2. package/dist/ui/assets/{account-store-CnQuK5TM.js → account-store-CQCPAo3-.js} +2 -2
  3. package/dist/ui/assets/{adobe-DWg3r4i_.js → adobe-BnQkVVxg.js} +1 -1
  4. package/dist/ui/assets/{adobe-R1hGOfYV.js → adobe-DH3oGYdw.js} +1 -1
  5. package/dist/ui/assets/{agent-message-to-chat-BRWp9gfc.js → agent-message-to-chat-CoVpiE-7.js} +1 -1
  6. package/dist/ui/assets/{anthropic-DOdK4eXe.js → anthropic-BaI_sJYa.js} +3 -3
  7. package/dist/ui/assets/{anthropic-DVpFSsKH.js → anthropic-UMaEJx-B.js} +3 -3
  8. package/dist/ui/assets/{apps-CePjpWpt.js → apps-BEmO-o_P.js} +1 -1
  9. package/dist/ui/assets/{azure-openai-DKzNQfZ1.js → azure-openai--GjF8ZEi.js} +1 -1
  10. package/dist/ui/assets/{azure-openai-DCbra7vW.js → azure-openai-Cqwx6emG.js} +1 -1
  11. package/dist/ui/assets/{azure-openai-responses-DXY_e5sT.js → azure-openai-responses-CMjHELHX.js} +1 -1
  12. package/dist/ui/assets/{azure-openai-responses-BPLbXfA6.js → azure-openai-responses-Ds4b3a5B.js} +1 -1
  13. package/dist/ui/assets/{bedrock-camp-D64i9rke.js → bedrock-camp-9-QEmC9Z.js} +1 -1
  14. package/dist/ui/assets/{bedrock-camp-wxdDcDkR.js → bedrock-camp-DS1dgU6g.js} +2 -2
  15. package/dist/ui/assets/{bsh-watchdog-CxRJbKS2.js → bsh-watchdog-CbJuDcM2.js} +1 -1
  16. package/dist/ui/assets/{connect-surface-mcsAfbnR.js → connect-surface-CBnfGpjO.js} +1 -1
  17. package/dist/ui/assets/{context-compaction-DJF_qJZJ.js → context-compaction-CFWyOzX1.js} +1 -1
  18. package/dist/ui/assets/dip-BI1zdXOs.js +1 -0
  19. package/dist/ui/assets/{dist-DmF2S22L.js → dist-B1qdTytm.js} +1 -1
  20. package/dist/ui/assets/{dist-9S2Rq5BL.js → dist-BSAyaQus.js} +1 -1
  21. package/dist/ui/assets/dist-BmWy99kl.js +4 -0
  22. package/dist/ui/assets/{es-3cnywMbU.js → es-BSfGyN8v.js} +1 -1
  23. package/dist/ui/assets/event-stream-BJI_nGaK.js +1 -0
  24. package/dist/ui/assets/{fs-DcOTYA_E.js → fs-C4yl2d9h.js} +1 -1
  25. package/dist/ui/assets/{fs-D1PvB4pn.js → fs-CC3wCrde.js} +2 -2
  26. package/dist/ui/assets/{github-iDZ5XfQI.js → github-Cki7nKmi.js} +1 -1
  27. package/dist/ui/assets/{github-DNulwPHw.js → github-DFrs5ruR.js} +2 -2
  28. package/dist/ui/assets/{github-copilot-DTMFNaWU.js → github-copilot-C1ep4OP2.js} +1 -1
  29. package/dist/ui/assets/{github-copilot-CFGmDylW.js → github-copilot-oDcZajDU.js} +1 -1
  30. package/dist/ui/assets/{google-syj0sMxL.js → google-CEOynCO5.js} +1 -1
  31. package/dist/ui/assets/{google-shared-BmpiIO3m.js → google-shared-CeGHiQ17.js} +1 -1
  32. package/dist/ui/assets/{google-vertex-CzAYHmbM.js → google-vertex-C7BX8ATF.js} +1 -1
  33. package/dist/ui/assets/{google-vertex-uZ8N77ah.js → google-vertex-Dbruz2uo.js} +1 -1
  34. package/dist/ui/assets/{google-Dl6In6_I.js → google-yB8wbiw4.js} +1 -1
  35. package/dist/ui/assets/{hear-DadLZglF.js → hear-BQpvCzbw.js} +1 -1
  36. package/dist/ui/assets/{kernel-worker-DDVO_q3_.js → kernel-worker-COIEwA3O.js} +18 -18
  37. package/dist/ui/assets/{kokoro-engine-BiHBMoJa.js → kokoro-engine-LKLpwLMy.js} +1 -1
  38. package/dist/ui/assets/{lick-ws-bridge-BW0jMyvK.js → lick-ws-bridge-BWmWXmfH.js} +1 -1
  39. package/dist/ui/assets/{local-llm-q9yzBPwM.js → local-llm-BpmQ1MMI.js} +1 -1
  40. package/dist/ui/assets/{main-CvMPSdtI.js → main-D4_0Qt4c.js} +3 -3
  41. package/dist/ui/assets/{mistral-pCZ0Zm3T.js → mistral-BzfpfZhh.js} +1 -1
  42. package/dist/ui/assets/{mistral-DGtcP1BQ.js → mistral-CJVvXrOL.js} +1 -1
  43. package/dist/ui/assets/{mount-BX9Dxv2f.js → mount-CcTj11tf.js} +2 -2
  44. package/dist/ui/assets/{mount-BjtT6hhU.js → mount-D6SpPk1r.js} +1 -1
  45. package/dist/ui/assets/{new-session-Bet5IM7o.js → new-session-BrzupjSx.js} +1 -1
  46. package/dist/ui/assets/{oauth-bootstrap-DNkIQDe2.js → oauth-bootstrap-DRU7eZqQ.js} +2 -2
  47. package/dist/ui/assets/{openai-codex-BkMFE8eH.js → openai-codex-5exfNP-1.js} +1 -1
  48. package/dist/ui/assets/{openai-codex-DZUmV6b1.js → openai-codex-D1QstjxU.js} +1 -1
  49. package/dist/ui/assets/{openai-codex-responses-Dpn8XW3b.js → openai-codex-responses-CLrAtex4.js} +1 -1
  50. package/dist/ui/assets/{openai-codex-responses-C8xgMZBo.js → openai-codex-responses-Cq5XDqVc.js} +1 -1
  51. package/dist/ui/assets/{openai-completions-CoYClIFl.js → openai-completions-CyC3I8Ls.js} +2 -2
  52. package/dist/ui/assets/{openai-completions-Dry_mhhJ.js → openai-completions-DLI0t_lj.js} +2 -2
  53. package/dist/ui/assets/openai-responses-ANbRIlpa.js +1 -0
  54. package/dist/ui/assets/openai-responses-D3BggRn6.js +1 -0
  55. package/dist/ui/assets/{openai-responses-shared-Ct3FUe7d.js → openai-responses-shared-CM2vkuNI.js} +1 -1
  56. package/dist/ui/assets/{openai-responses-shared-D4pZ3bEY.js → openai-responses-shared-GJLWYx-P.js} +1 -1
  57. package/dist/ui/assets/{panel-rpc-handlers-CAuti6mr.js → panel-rpc-handlers-CTfK_05R.js} +1 -1
  58. package/dist/ui/assets/{provider-BOcdPkeB.js → provider-Bz9SWQgu.js} +1 -1
  59. package/dist/ui/assets/{provider-nEyRJBk9.js → provider-VtoTPKkA.js} +2 -2
  60. package/dist/ui/assets/provider-store-access-7Hcqv5Xt.js +1 -0
  61. package/dist/ui/assets/provider-store-access-DsmlbFAV.js +1 -0
  62. package/dist/ui/assets/{providers-Dap3HM2Z.js → providers-C6yHgQYK.js} +1 -1
  63. package/dist/ui/assets/{quick-llm-CV2IWc0g.js → quick-llm-DpbDYQvU.js} +1 -1
  64. package/dist/ui/assets/session-freezer-aIbhhwjG.js +1 -0
  65. package/dist/ui/assets/setup-sudo-D2Kx4E1z.js +1 -0
  66. package/dist/ui/assets/{speak-y6Vv_XqZ.js → speak-BaKhhiBu.js} +1 -1
  67. package/dist/ui/assets/{sprinkle-manager-CS1Iqx66.js → sprinkle-manager-CZmzgqNx.js} +1 -1
  68. package/dist/ui/assets/{store-BA8oONSm.js → store-DArwj9HG.js} +1 -1
  69. package/dist/ui/assets/{sudo-EQUqv7s5.js → sudo-BdOdMLg0.js} +1 -1
  70. package/dist/ui/assets/transform-messages-BjP6vDPY.js +1 -0
  71. package/dist/ui/assets/{transformers-env-DP8ngDL6.js → transformers-env-GdKbK31I.js} +1 -1
  72. package/dist/ui/assets/{tray-leave-runtime-Cy842jwt.js → tray-leave-runtime-DK5OzgsI.js} +1 -1
  73. package/dist/ui/assets/{upgrade-detection-BEc8qNP3.js → upgrade-detection-BDUrUlcF.js} +1 -1
  74. package/dist/ui/assets/{wc-attach-DTgAPuZk.js → wc-attach-BLDharFn.js} +2 -2
  75. package/dist/ui/assets/{wc-detached-BuCuD_9T.js → wc-detached-CeMTHgOq.js} +1 -1
  76. package/dist/ui/assets/{wc-extension-BdvqNx5f.js → wc-extension-B7zz24A-.js} +2 -2
  77. package/dist/ui/assets/{wc-live-C9u3SoiD.js → wc-live-BCM49lWd.js} +5 -5
  78. package/dist/ui/assets/{wc-nav-D8LEWAo4.js → wc-nav-CtwFXc1c.js} +2 -2
  79. package/dist/ui/assets/{wc-onboarding-Cfn5YCB9.js → wc-onboarding-kPr1QmJD.js} +2 -2
  80. package/dist/ui/assets/{wc-placeholder-CRE0AJfG.js → wc-placeholder-Bg8WOXwa.js} +2 -2
  81. package/dist/ui/assets/{wc-settings-eaFoZXLz.js → wc-settings-3zZYo6Tq.js} +2 -2
  82. package/dist/ui/assets/{wc-shell-TQNSA882.js → wc-shell-B72d5hwo.js} +2 -2
  83. package/dist/ui/assets/{wc-sprinkles-GyllyY2P.js → wc-sprinkles-DrCsxX3z.js} +2 -2
  84. package/dist/ui/assets/{wc-tray-CsI8SUNX.js → wc-tray-Cml9CUrH.js} +3 -3
  85. package/dist/ui/assets/{xai-grok-CZJMJOif.js → xai-grok-CTb_0Daa.js} +1 -1
  86. package/dist/ui/assets/{xai-grok-BugmJ5jK.js → xai-grok-Cp-9Yhbu.js} +1 -1
  87. package/dist/ui/index.html +6 -6
  88. package/dist/ui/packages/webapp/index.html +6 -6
  89. package/package.json +2 -1
  90. package/dist/ui/assets/dip-ND8PRsBY.js +0 -1
  91. package/dist/ui/assets/dist-CSwuvPa6.js +0 -4
  92. package/dist/ui/assets/event-stream-Cs43PhOB.js +0 -1
  93. package/dist/ui/assets/openai-responses-Bmov8oh7.js +0 -1
  94. package/dist/ui/assets/openai-responses-DqkDb9a5.js +0 -1
  95. package/dist/ui/assets/provider-store-access-BSKSBLFN.js +0 -1
  96. package/dist/ui/assets/provider-store-access-CqzGI1_e.js +0 -1
  97. package/dist/ui/assets/session-freezer-DUci4QJ-.js +0 -1
  98. package/dist/ui/assets/setup-sudo-HPMjz1FQ.js +0 -1
  99. package/dist/ui/assets/transform-messages-C1X1O3BY.js +0 -1
@@ -1 +1 @@
1
- import{s as e}from"./kernel-worker-DDVO_q3_.js";function t(e=()=>Date.now()){let t=new Map,n=null,r=0,i=()=>{let e=0,n=0;for(let r of t.values())e+=r.loaded,n+=r.total;return{loaded:e,total:n}};return{update(a,o,s){t.set(a,{loaded:Math.max(0,o),total:Math.max(t.get(a)?.total??0,s,o)}),n===null&&(n=e(),r=i().loaded)},complete(e){let n=t.get(e);n&&(n.loaded=n.total)},snapshot(){let{loaded:t,total:a}=i(),o=null;if(n!==null&&a>0&&t<a){let i=e()-n,s=t-r;if(i>=1e3&&s>0){let e=s/i;o=(a-t)/e/1e3}}return a>0&&t>=a&&(o=0),{loaded:t,total:a,etaSeconds:o}}}}function n(t){let n=t.backends?.onnx?.wasm;n&&(n.wasmPaths=e(`onnxruntime-web`,`1.26.0-dev.20260416-b7804b056c`,`dist/`).toString())}export{t as n,n as t};
1
+ import{s as e}from"./kernel-worker-COIEwA3O.js";function t(e=()=>Date.now()){let t=new Map,n=null,r=0,i=()=>{let e=0,n=0;for(let r of t.values())e+=r.loaded,n+=r.total;return{loaded:e,total:n}};return{update(a,o,s){t.set(a,{loaded:Math.max(0,o),total:Math.max(t.get(a)?.total??0,s,o)}),n===null&&(n=e(),r=i().loaded)},complete(e){let n=t.get(e);n&&(n.loaded=n.total)},snapshot(){let{loaded:t,total:a}=i(),o=null;if(n!==null&&a>0&&t<a){let i=e()-n,s=t-r;if(i>=1e3&&s>0){let e=s/i;o=(a-t)/e/1e3}}return a>0&&t>=a&&(o=0),{loaded:t,total:a,etaSeconds:o}}}}function n(t){let n=t.backends?.onnx?.wasm;n&&(n.wasmPaths=e(`onnxruntime-web`,`1.26.0-dev.20260416-b7804b056c`,`dist/`).toString())}export{t as n,n as t};
@@ -1 +1 @@
1
- import{c as e,l as t}from"./main-CvMPSdtI.js";async function n(n,i){let a=i.getLeader()?`leader`:i.getFollower()?`follower`:`inactive`,o=i.getLeader();i.setLeader(null);let s=i.getFollower();i.setFollower(null),i.clearLeaderHooks();let{requestId:c}=n;try{o?.stop()}catch(e){i.log.error(`Leader stop threw during tray-leave — resources may have leaked`,{requestId:c,error:e instanceof Error?e.message:String(e)})}try{s?.stop()}catch(e){i.log.error(`Follower stop threw during tray-leave — resources may have leaked`,{requestId:c,error:e instanceof Error?e.message:String(e)})}if(r(()=>i.storage.removeItem(e),i.log,`join-clear`,c),n.workerBaseUrl===null)return r(()=>i.storage.removeItem(t),i.log,`worker-clear`,c),a===`inactive`?{kind:`noop`}:{kind:`left`,previousMode:a};let l=n.workerBaseUrl,u;try{u=i.startLeader(l)}catch(e){throw i.log.error(`startLeader failed during tray-leave — runtime is now dormant`,{workerBaseUrl:l,requestId:c,error:e instanceof Error?e.message:String(e)}),r(()=>i.storage.removeItem(t),i.log,`worker-clear-on-failure`,c),e}return i.setLeader(u),i.wireLeaderHooks(u),r(()=>i.storage.setItem(t,l),i.log,`worker-set`,c),{kind:`switched`,previousMode:a,workerBaseUrl:l}}function r(e,t,n,r){try{e()}catch(e){t.error(`tray-leave storage write failed`,{kind:n,requestId:r,error:e instanceof Error?e.message:String(e)})}}export{n as performTrayLeave};
1
+ import{c as e,l as t}from"./main-D4_0Qt4c.js";async function n(n,i){let a=i.getLeader()?`leader`:i.getFollower()?`follower`:`inactive`,o=i.getLeader();i.setLeader(null);let s=i.getFollower();i.setFollower(null),i.clearLeaderHooks();let{requestId:c}=n;try{o?.stop()}catch(e){i.log.error(`Leader stop threw during tray-leave — resources may have leaked`,{requestId:c,error:e instanceof Error?e.message:String(e)})}try{s?.stop()}catch(e){i.log.error(`Follower stop threw during tray-leave — resources may have leaked`,{requestId:c,error:e instanceof Error?e.message:String(e)})}if(r(()=>i.storage.removeItem(e),i.log,`join-clear`,c),n.workerBaseUrl===null)return r(()=>i.storage.removeItem(t),i.log,`worker-clear`,c),a===`inactive`?{kind:`noop`}:{kind:`left`,previousMode:a};let l=n.workerBaseUrl,u;try{u=i.startLeader(l)}catch(e){throw i.log.error(`startLeader failed during tray-leave — runtime is now dormant`,{workerBaseUrl:l,requestId:c,error:e instanceof Error?e.message:String(e)}),r(()=>i.storage.removeItem(t),i.log,`worker-clear-on-failure`,c),e}return i.setLeader(u),i.wireLeaderHooks(u),r(()=>i.storage.setItem(t,l),i.log,`worker-set`,c),{kind:`switched`,previousMode:a,workerBaseUrl:l}}function r(e,t,n,r){try{e()}catch(e){t.error(`tray-leave storage write failed`,{kind:n,requestId:r,error:e instanceof Error?e.message:String(e)})}}export{n as performTrayLeave};
@@ -1 +1 @@
1
- import{b as e,x as t}from"./kernel-worker-DDVO_q3_.js";const n=`slicc:last-seen-version`;function r(){return{version:`4.12.0`,releasedAt:`2026-06-15T20:02:35Z`}}async function i(){let t=await e(n);return t&&t.length>0?t:null}async function a(e){await t(n,e)}async function o(){let e=r(),t=await i();return t===null?(await a(e.version),{bundled:e,lastSeen:null,isUpgrade:!1}):t===e.version?{bundled:e,lastSeen:t,isUpgrade:!1}:{bundled:e,lastSeen:t,isUpgrade:!0}}async function s(e){await a(e)}export{o as detectUpgrade,s as recordVersionSeen};
1
+ import{b as e,x as t}from"./kernel-worker-COIEwA3O.js";const n=`slicc:last-seen-version`;function r(){return{version:`4.13.0`,releasedAt:`2026-06-15T20:31:15Z`}}async function i(){let t=await e(n);return t&&t.length>0?t:null}async function a(e){await t(n,e)}async function o(){let e=r(),t=await i();return t===null?(await a(e.version),{bundled:e,lastSeen:null,isUpgrade:!1}):t===e.version?{bundled:e,lastSeen:t,isUpgrade:!1}:{bundled:e,lastSeen:t,isUpgrade:!0}}async function s(e){await a(e)}export{o as detectUpgrade,s as recordVersionSeen};
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/wc-shell-TQNSA882.js","assets/chunk-aKtaBQYM.js","assets/preload-helper-zJ_50EbN.js","assets/iconsAndAliases-Bzj1tGpU.js","assets/speech-GZe1rUoJ.js","assets/wc-shell-WkeczD9x.css"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/wc-shell-B72d5hwo.js","assets/chunk-aKtaBQYM.js","assets/preload-helper-zJ_50EbN.js","assets/iconsAndAliases-Bzj1tGpU.js","assets/speech-GZe1rUoJ.js","assets/wc-shell-WkeczD9x.css"])))=>i.map(i=>d[i]);
2
2
  import{t as e}from"./preload-helper-zJ_50EbN.js";var t=8,n=2e3,r=[`/workspace`,`/shared`,`/tmp`],i=8,a=new Set([`node_modules`,`.git`]),o=1e4,s=/\.(png|jpe?g|gif|webp|svg|avif)$/i,c=4*1024*1024,l=256*1024;function u(){return`att-${Date.now()}-${Math.random().toString(36).slice(2,8)}`}function d(e){let t=``,n=32768;for(let r=0;r<e.length;r+=n)t+=String.fromCharCode(...e.subarray(r,r+n));return btoa(t)}function f(e){return{png:`image/png`,jpg:`image/jpeg`,jpeg:`image/jpeg`,gif:`image/gif`,webp:`image/webp`,svg:`image/svg+xml`,avif:`image/avif`,md:`text/markdown`,json:`application/json`}[e.toLowerCase().split(`.`).pop()??``]??`text/plain`}function p(e,t){let n={id:u(),name:e,size:t.length};return s.test(e)?t.length>c?{...n,mimeType:f(e),kind:`image`,error:`image too large to inline`}:{...n,mimeType:f(e),kind:`image`,data:d(t)}:t.length>l?{...n,mimeType:`text/plain`,kind:`file`,error:`file too large to inline`}:{...n,mimeType:f(e),kind:`text`,text:new TextDecoder().decode(t)}}async function m(e){let t=new Uint8Array(await e.arrayBuffer()),n=p(e.name,t);return e.type?{...n,mimeType:e.type}:n}function h(e,t){let n=t.match(/^data:(image\/[^;]+);base64,(.+)$/);return n?{id:u(),name:e,mimeType:n[1],size:Math.floor(n[2].length*3/4),kind:`image`,data:n[2]}:null}var g=`/tmp/upload`,_=1568;function v(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}async function y(e,t,n){await e.mkdir(g,{recursive:!0}).catch(()=>void 0);let r=`${g}/${Date.now()}-${t.replace(/[^A-Za-z0-9._-]+/g,`_`)}`;return await e.writeFile(r,n),r}async function b(e,t=_){let n=new Image;n.src=e;try{await n.decode()}catch{return e}let r=Math.min(1,t/Math.max(n.naturalWidth,n.naturalHeight,1));if(r>=1)return e;let i=document.createElement(`canvas`);return i.width=Math.round(n.naturalWidth*r),i.height=Math.round(n.naturalHeight*r),i.getContext(`2d`)?.drawImage(n,0,0,i.width,i.height),i.toDataURL(`image/jpeg`,.85)}async function x(e,t,n){let r=h(e,t);if(!r)return null;let i;return n&&r.data&&(i=await y(n,e,v(r.data)).catch(()=>void 0)),{...h(e,await b(t).catch(()=>t))??r,name:e,path:i}}async function S(e){let t=[],o=r.map(e=>({dir:e,depth:0}));for(;o.length>0&&t.length<n;){let{dir:r,depth:s}=o.shift(),c;try{c=await e.readDir(r)}catch{continue}for(let e of c){let c=`${r}/${e.name}`;if(e.type===`directory`)s<i&&!a.has(e.name)&&o.push({dir:c,depth:s+1});else if(t.push(c),t.length>=n)break}}return t}function C(e){let n=null;return async r=>{let i=await e.openReader();(!n||Date.now()-n.at>o)&&(n={at:Date.now(),paths:await S(i)});let a=e=>r===``||e.toLowerCase().includes(r),s=n.paths.filter(e=>a(e)).slice(0,t).map(e=>({id:e,label:e.split(`/`).pop()??e,sub:e.slice(0,e.lastIndexOf(`/`))})),c=[];try{c=(await i.readDir(`/workspace/skills`)).filter(e=>e.type===`directory`&&a(e.name)).slice(0,t).map(e=>({id:e.name,label:e.name}))}catch{}let l=(await e.listConversations().catch(()=>[])).filter(e=>a(e.label)).slice(0,t);return[{kind:`file`,label:`Files`,icon:`file`,entries:s},{kind:`skill`,label:`Skills`,icon:`sparkles`,entries:c},{kind:`conversation`,label:`Conversations`,icon:`message-square`,entries:l}]}}var w=`slicc-wc-attach-style`,T=`
3
3
  .wcatt{display:flex;flex-wrap:wrap;gap:6px;padding:8px 10px 0;font-family:var(--ui);}
4
4
  .wcatt:empty{display:none;}
@@ -10,4 +10,4 @@ import{t as e}from"./preload-helper-zJ_50EbN.js";var t=8,n=2e3,r=[`/workspace`,`
10
10
  .wcatt__x{appearance:none;background:none;border:none;cursor:pointer;color:var(--txt-3);
11
11
  font:inherit;padding:0;line-height:1;}
12
12
  .wcatt__x:hover{color:var(--ink);}
13
- `,E=class{#e;#t=[];constructor(e){if(!document.getElementById(w)){let e=document.createElement(`style`);e.id=w,e.textContent=T,document.head.appendChild(e)}this.#e=document.createElement(`div`),this.#e.className=`wcatt`,e.prepend(this.#e)}get items(){return this.#t}add(e){this.#t.push(e),this.#n()}take(){let e=this.#t;return this.#t=[],this.#n(),e}#n(){this.#e.replaceChildren(...this.#t.map(e=>this.#r(e)))}#r(t){let n=document.createElement(`span`);if(n.className=`wcatt__chip`,t.kind===`image`&&t.data){let r=document.createElement(`img`);r.className=`wcatt__thumb`,r.src=`data:${t.mimeType};base64,${t.data}`,r.alt=t.name,r.addEventListener(`click`,()=>{e(async()=>{let{SliccImagePreview:e}=await import(`./wc-shell-TQNSA882.js`).then(e=>e.u);return{SliccImagePreview:e}},__vite__mapDeps([0,1,2,3,4,5])).then(({SliccImagePreview:e})=>e.show(r.src,r))}),n.append(r)}let r=document.createElement(`span`);r.className=`wcatt__name`,r.textContent=t.name;let i=document.createElement(`button`);return i.type=`button`,i.className=`wcatt__x`,i.setAttribute(`aria-label`,`Remove ${t.name}`),i.textContent=`×`,i.addEventListener(`click`,()=>{this.#t=this.#t.filter(e=>e.id!==t.id),this.#n()}),n.append(r,i),n}};async function D(e){let t=document.createElement(`video`);t.srcObject=e,t.muted=!0;try{await t.play(),await new Promise(e=>requestAnimationFrame(()=>e(null)));let e=document.createElement(`canvas`);return e.width=t.videoWidth,e.height=t.videoHeight,e.width===0||e.height===0?null:(e.getContext(`2d`)?.drawImage(t,0,0),e.toDataURL(`image/png`))}finally{for(let t of e.getTracks())t.stop();t.srcObject=null}}async function O(){return D(await navigator.mediaDevices.getDisplayMedia({video:!0}))}var k=`slicc_camera_device`;async function A(){let e=document.createElement(`slicc-camera-dialog`),t=localStorage.getItem(k);t&&e.setAttribute(`preferred-device`,t),e.addEventListener(`slicc-camera-device-change`,e=>{let t=e.detail?.deviceId;t&&localStorage.setItem(k,t)}),document.body.append(e);try{return await e.open()}finally{e.remove()}}async function j(e,t,n){let r=e.mode===`photo`,i=r?await A():await O();if(!i)return;let a=await x(`${r?`photo`:`screenshot`}-${Date.now()}.png`,i,await t.openWriter?.().catch(()=>null)??null);a&&n.add(a)}async function M(e,t,n){if(!e.error)return e;let r=await n.openWriter?.().catch(()=>null)??null;if(!r)return e;let i=await y(r,e.name,t).catch(()=>void 0);return i?{...e,error:void 0,path:i}:e}async function N(e,t,n){let r=await(await t.openReader()).readFile(e),i=typeof r==`string`?new TextEncoder().encode(r):r,a=p(e.split(`/`).pop()??e,i);n.add(a.error?{...a,error:void 0,path:e}:a)}function P(e,t){let n=t.value??t.getAttribute(`value`)??``,r=n&&!n.endsWith(` `)?` `:``;t.setAttribute(`value`,`${n}${r}Use the "${e}" skill: `)}async function F(e,t,n){if(e.kind===`upload`&&e.file instanceof File){let r=new Uint8Array(await e.file.arrayBuffer());n.add(await M(await m(e.file),r,t))}else e.kind===`capture`?await j(e,t,n):e.kind===`file`&&typeof e.id==`string`?await N(e.id,t,n):e.kind===`skill`&&typeof e.label==`string`?P(e.label,t.inputCard):e.kind===`conversation`&&typeof e.id==`string`&&t.freezer.dispatchEvent(new CustomEvent(`freezer-card-select`,{bubbles:!0,composed:!0,detail:{slug:e.id}}))}function I(e){let{inputCard:t,log:n}=e,r=new E(t),i=t.querySelector(`slicc-add-menu`);return i&&(i.provider=C({openReader:e.openReader,listConversations:e.listConversations})),t.addEventListener(`slicc-add`,t=>{let i=t.detail;i&&F(i,e,r).catch(e=>n.error(`WC add-menu action failed`,e))}),r}export{I as wireWcAttach};
13
+ `,E=class{#e;#t=[];constructor(e){if(!document.getElementById(w)){let e=document.createElement(`style`);e.id=w,e.textContent=T,document.head.appendChild(e)}this.#e=document.createElement(`div`),this.#e.className=`wcatt`,e.prepend(this.#e)}get items(){return this.#t}add(e){this.#t.push(e),this.#n()}take(){let e=this.#t;return this.#t=[],this.#n(),e}#n(){this.#e.replaceChildren(...this.#t.map(e=>this.#r(e)))}#r(t){let n=document.createElement(`span`);if(n.className=`wcatt__chip`,t.kind===`image`&&t.data){let r=document.createElement(`img`);r.className=`wcatt__thumb`,r.src=`data:${t.mimeType};base64,${t.data}`,r.alt=t.name,r.addEventListener(`click`,()=>{e(async()=>{let{SliccImagePreview:e}=await import(`./wc-shell-B72d5hwo.js`).then(e=>e.u);return{SliccImagePreview:e}},__vite__mapDeps([0,1,2,3,4,5])).then(({SliccImagePreview:e})=>e.show(r.src,r))}),n.append(r)}let r=document.createElement(`span`);r.className=`wcatt__name`,r.textContent=t.name;let i=document.createElement(`button`);return i.type=`button`,i.className=`wcatt__x`,i.setAttribute(`aria-label`,`Remove ${t.name}`),i.textContent=`×`,i.addEventListener(`click`,()=>{this.#t=this.#t.filter(e=>e.id!==t.id),this.#n()}),n.append(r,i),n}};async function D(e){let t=document.createElement(`video`);t.srcObject=e,t.muted=!0;try{await t.play(),await new Promise(e=>requestAnimationFrame(()=>e(null)));let e=document.createElement(`canvas`);return e.width=t.videoWidth,e.height=t.videoHeight,e.width===0||e.height===0?null:(e.getContext(`2d`)?.drawImage(t,0,0),e.toDataURL(`image/png`))}finally{for(let t of e.getTracks())t.stop();t.srcObject=null}}async function O(){return D(await navigator.mediaDevices.getDisplayMedia({video:!0}))}var k=`slicc_camera_device`;async function A(){let e=document.createElement(`slicc-camera-dialog`),t=localStorage.getItem(k);t&&e.setAttribute(`preferred-device`,t),e.addEventListener(`slicc-camera-device-change`,e=>{let t=e.detail?.deviceId;t&&localStorage.setItem(k,t)}),document.body.append(e);try{return await e.open()}finally{e.remove()}}async function j(e,t,n){let r=e.mode===`photo`,i=r?await A():await O();if(!i)return;let a=await x(`${r?`photo`:`screenshot`}-${Date.now()}.png`,i,await t.openWriter?.().catch(()=>null)??null);a&&n.add(a)}async function M(e,t,n){if(!e.error)return e;let r=await n.openWriter?.().catch(()=>null)??null;if(!r)return e;let i=await y(r,e.name,t).catch(()=>void 0);return i?{...e,error:void 0,path:i}:e}async function N(e,t,n){let r=await(await t.openReader()).readFile(e),i=typeof r==`string`?new TextEncoder().encode(r):r,a=p(e.split(`/`).pop()??e,i);n.add(a.error?{...a,error:void 0,path:e}:a)}function P(e,t){let n=t.value??t.getAttribute(`value`)??``,r=n&&!n.endsWith(` `)?` `:``;t.setAttribute(`value`,`${n}${r}Use the "${e}" skill: `)}async function F(e,t,n){if(e.kind===`upload`&&e.file instanceof File){let r=new Uint8Array(await e.file.arrayBuffer());n.add(await M(await m(e.file),r,t))}else e.kind===`capture`?await j(e,t,n):e.kind===`file`&&typeof e.id==`string`?await N(e.id,t,n):e.kind===`skill`&&typeof e.label==`string`?P(e.label,t.inputCard):e.kind===`conversation`&&typeof e.id==`string`&&t.freezer.dispatchEvent(new CustomEvent(`freezer-card-select`,{bubbles:!0,composed:!0,detail:{slug:e.id}}))}function I(e){let{inputCard:t,log:n}=e,r=new E(t),i=t.querySelector(`slicc-add-menu`);return i&&(i.provider=C({openReader:e.openReader,listConversations:e.listConversations})),t.addEventListener(`slicc-add`,t=>{let i=t.detail;i&&F(i,e,r).catch(e=>n.error(`WC add-menu action failed`,e))}),r}export{I as wireWcAttach};
@@ -1 +1 @@
1
- import{n as e}from"./main-CvMPSdtI.js";var t=`slicc-detached-overlay`;function n(t){let{client:n,isDetachedSelf:r}=t;chrome.runtime.onMessage.addListener(t=>(!e(t)||t.source!==`service-worker`||t.payload.type!==`detached-active`||r||i(n),!1)),r&&chrome.runtime.sendMessage({source:`panel`,payload:{type:`detached-claim`}}).catch(()=>void 0)}function r(){chrome.runtime.sendMessage({source:`panel`,payload:{type:`detached-popout-request`}}).catch(e=>{console.warn(`[slicc] detached-popout-request failed`,e)})}function i(e){try{window.close()}catch{}e.setLocked(!0),a()}function a(){if(document.getElementById(t))return;let e=document.createElement(`div`);e.id=t,e.style.cssText=`position:fixed;inset:0;z-index:9999;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:24px;text-align:center;background:var(--canvas,#fff);color:var(--ink,#111);font:14px/1.5 var(--ui,system-ui)`;let n=document.createElement(`strong`);n.textContent=`SLICC is open in a detached window`;let r=document.createElement(`span`);r.textContent=`This panel yields while the detached window is active.`;let i=document.createElement(`button`);i.textContent=`Close this window`,i.style.cssText=`margin-top:8px;padding:8px 16px;border:none;border-radius:999px;cursor:pointer;background:var(--ink,#111);color:var(--canvas,#fff);font:600 13px var(--ui,system-ui)`,i.addEventListener(`click`,()=>window.close()),e.append(n,r,i),document.body.appendChild(e)}export{r as requestDetachedPopout,n as wireWcDetached};
1
+ import{n as e}from"./main-D4_0Qt4c.js";var t=`slicc-detached-overlay`;function n(t){let{client:n,isDetachedSelf:r}=t;chrome.runtime.onMessage.addListener(t=>(!e(t)||t.source!==`service-worker`||t.payload.type!==`detached-active`||r||i(n),!1)),r&&chrome.runtime.sendMessage({source:`panel`,payload:{type:`detached-claim`}}).catch(()=>void 0)}function r(){chrome.runtime.sendMessage({source:`panel`,payload:{type:`detached-popout-request`}}).catch(e=>{console.warn(`[slicc] detached-popout-request failed`,e)})}function i(e){try{window.close()}catch{}e.setLocked(!0),a()}function a(){if(document.getElementById(t))return;let e=document.createElement(`div`);e.id=t,e.style.cssText=`position:fixed;inset:0;z-index:9999;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:24px;text-align:center;background:var(--canvas,#fff);color:var(--ink,#111);font:14px/1.5 var(--ui,system-ui)`;let n=document.createElement(`strong`);n.textContent=`SLICC is open in a detached window`;let r=document.createElement(`span`);r.textContent=`This panel yields while the detached window is active.`;let i=document.createElement(`button`);i.textContent=`Close this window`,i.style.cssText=`margin-top:8px;padding:8px 16px;border:none;border-radius:999px;cursor:pointer;background:var(--ink,#111);color:var(--canvas,#fff);font:600 13px var(--ui,system-ui)`,i.addEventListener(`click`,()=>window.close()),e.append(n,r,i),document.body.appendChild(e)}export{r as requestDetachedPopout,n as wireWcDetached};
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/setup-sudo-HPMjz1FQ.js","assets/wc-live-C9u3SoiD.js","assets/preload-helper-zJ_50EbN.js","assets/dist-CSwuvPa6.js","assets/event-stream-Cs43PhOB.js","assets/json-parse-BUunmmNl.js","assets/chunk-aKtaBQYM.js","assets/__vite-browser-external-C7iut881.js","assets/context-compaction-DJF_qJZJ.js","assets/logger-DDBAeTLF.js","assets/wc-shell-TQNSA882.js","assets/iconsAndAliases-Bzj1tGpU.js","assets/speech-GZe1rUoJ.js","assets/wc-shell-WkeczD9x.css","assets/main-CvMPSdtI.js","assets/modulepreload-polyfill-Dezn_h7o.js","assets/account-store-CciZPZYw.js","assets/src-DlEHAkLd.js","assets/panel-rpc-DqT2FG7c.js","assets/bedrock-camp-D64i9rke.js","assets/transform-messages-DzB_lMo-.js","assets/tool-ui-YOPqzMmL.js","assets/clipboard-DgFtRQbq.js","assets/proxy-error-9UvXMpzG.js","assets/hid-device-registry-D2LsJCRr.js","assets/usb-operations-CkcrNzZw.js","assets/serial-port-registry-Bc4wlwED.js","assets/usb-device-registry-BP58Vi0S.js","assets/sprinkle-bridge-DrAUCEC_.js","assets/shared-B7TdM-Ik.js","assets/sprinkle-renderer-GiRRbdBx.js","assets/theme-BBwuyzvz.js"])))=>i.map(i=>d[i]);
2
- import{t as e}from"./preload-helper-zJ_50EbN.js";import{wireWcDetached as t}from"./wc-detached-BuCuD_9T.js";import{attachWcClient as n,createWcLiveCallbacks as r,prepareWcShell as i,t as a}from"./wc-live-C9u3SoiD.js";async function o(o,s,c=!1){let l=i(o,`extension · wc`),u=new a(r(l.wiring));n(l,u,s),t({client:u,isDetachedSelf:c});let{setupSudoExtension:d}=await e(async()=>{let{setupSudoExtension:e}=await import(`./setup-sudo-HPMjz1FQ.js`);return{setupSudoExtension:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]));await d({log:s}),u.requestState(),s.info(`WC extension shell connected to offscreen engine`)}export{o as mountWcUiExtension};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/setup-sudo-D2Kx4E1z.js","assets/wc-live-BCM49lWd.js","assets/preload-helper-zJ_50EbN.js","assets/dist-BmWy99kl.js","assets/event-stream-BJI_nGaK.js","assets/json-parse-BUunmmNl.js","assets/chunk-aKtaBQYM.js","assets/__vite-browser-external-C7iut881.js","assets/context-compaction-CFWyOzX1.js","assets/logger-DDBAeTLF.js","assets/wc-shell-B72d5hwo.js","assets/iconsAndAliases-Bzj1tGpU.js","assets/speech-GZe1rUoJ.js","assets/wc-shell-WkeczD9x.css","assets/main-D4_0Qt4c.js","assets/modulepreload-polyfill-Dezn_h7o.js","assets/account-store-BsFTtkDo.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/proxy-error-9UvXMpzG.js","assets/hid-device-registry-D2LsJCRr.js","assets/usb-operations-CkcrNzZw.js","assets/serial-port-registry-Bc4wlwED.js","assets/usb-device-registry-BP58Vi0S.js","assets/sprinkle-bridge-DrAUCEC_.js","assets/shared-B7TdM-Ik.js","assets/sprinkle-renderer-GiRRbdBx.js","assets/theme-BBwuyzvz.js"])))=>i.map(i=>d[i]);
2
+ import{t as e}from"./preload-helper-zJ_50EbN.js";import{wireWcDetached as t}from"./wc-detached-CeMTHgOq.js";import{attachWcClient as n,createWcLiveCallbacks as r,prepareWcShell as i,t as a}from"./wc-live-BCM49lWd.js";async function o(o,s,c=!1){let l=i(o,`extension · wc`),u=new a(r(l.wiring));n(l,u,s),t({client:u,isDetachedSelf:c});let{setupSudoExtension:d}=await e(async()=>{let{setupSudoExtension:e}=await import(`./setup-sudo-D2Kx4E1z.js`);return{setupSudoExtension:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]));await d({log:s}),u.requestState(),s.info(`WC extension shell connected to offscreen engine`)}export{o as mountWcUiExtension};
@@ -1,5 +1,5 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/sudo-EQUqv7s5.js","assets/logger-DDBAeTLF.js","assets/quick-llm-CV2IWc0g.js","assets/chunk-aKtaBQYM.js","assets/account-store-CciZPZYw.js","assets/preload-helper-zJ_50EbN.js","assets/dist-CSwuvPa6.js","assets/event-stream-Cs43PhOB.js","assets/json-parse-BUunmmNl.js","assets/__vite-browser-external-C7iut881.js","assets/context-compaction-DJF_qJZJ.js","assets/src-DlEHAkLd.js","assets/panel-rpc-DqT2FG7c.js","assets/bedrock-camp-D64i9rke.js","assets/transform-messages-DzB_lMo-.js","assets/tool-ui-YOPqzMmL.js","assets/iconsAndAliases-Bzj1tGpU.js","assets/main-CvMPSdtI.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-Cbi5Katl.js","assets/remote-cdp-transport-Cf0sDZ5N.js","assets/main-cherry-Bap_NTtV.js","assets/new-session-Bet5IM7o.js","assets/session-store-D32FcG0Q.js","assets/remote-vfs-client-BwJhhtIV.js","assets/types-idfTVsM8.js","assets/writable-vfs-client-DMYsajEE.js","assets/wc-onboarding-Cfn5YCB9.js","assets/welcome-detection-Cr8mNEkt.js","assets/legacy-styles-4PP74ISo.js","assets/theme-BBwuyzvz.js","assets/voice-reply-BdYE1gSs.js","assets/speak-C8nGyR-z.js","assets/kokoro-engine-B330eLPz.js","assets/transformers-env-6vj5CcH9.js","assets/cdn-url-builder-Cq7LLgru.js","assets/wc-placeholder-CRE0AJfG.js","assets/wc-attach-DTgAPuZk.js","assets/remote-terminal-view-FVcjc7kw.js","assets/browser-ukv9lM61.js","assets/terminal-session-client-C_tYJ1IB.js","assets/picker-approval-tzbkMw-e.js","assets/secret-env-DcfTe28K.js","assets/remote-sprinkle-vfs-e81pZJKo.js","assets/wc-sprinkles-GyllyY2P.js","assets/wc-tray-CsI8SUNX.js","assets/shared-B7TdM-Ik.js","assets/sprinkle-renderer-GiRRbdBx.js","assets/wc-nav-D8LEWAo4.js","assets/wc-voice-erm0EtRv.js","assets/composer-speech-BuzPv_Yy.js","assets/whisper-session-DwkDWttW.js","assets/speech-GZe1rUoJ.js"])))=>i.map(i=>d[i]);
2
- import{t as e}from"./dist-CSwuvPa6.js";import{t}from"./preload-helper-zJ_50EbN.js";import{i as n,n as r,r as i,t as a}from"./context-compaction-DJF_qJZJ.js";import{t as o}from"./logger-DDBAeTLF.js";import{d as s,f as c,m as l,s as u,t as d,v as f}from"./main-CvMPSdtI.js";import{n as p,r as m}from"./hid-device-registry-D2LsJCRr.js";import{a as h,i as g}from"./serial-port-registry-Bc4wlwED.js";import{C as _,D as ee,E as te,S as ne,_ as re,a as ie,g as ae,h as oe,k as se,l as ce,m as le,n as ue,o as de,s as fe,w as pe,x as me,y as he}from"./usb-operations-CkcrNzZw.js";import{i as ge,r as _e}from"./usb-device-registry-BP58Vi0S.js";import{n as ve,t as ye}from"./proxy-error-9UvXMpzG.js";import{n as be}from"./sprinkle-bridge-DrAUCEC_.js";import{i as xe,n as v,t as Se}from"./theme-BBwuyzvz.js";import{n as Ce}from"./sprinkle-renderer-GiRRbdBx.js";import{c as we,d as Te,i as Ee,l as y,n as De,o as Oe,r as ke,s as Ae,t as je}from"./wc-shell-TQNSA882.js";async function b(e){let{installSudoTestHook:n}=await t(async()=>{let{installSudoTestHook:e}=await import(`./sudo-EQUqv7s5.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 Me(e){let{installPanelSudoResponder:n}=await t(async()=>{let{installPanelSudoResponder:e}=await import(`./sudo-EQUqv7s5.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 Ne=typeof chrome<`u`&&!!chrome?.runtime?.id;async function x(e,t){if(t?.aborted)throw new DOMException(`aborted`,`AbortError`);let n=await C(e,!0,t);if(t?.aborted)throw new DOMException(`aborted`,`AbortError`);if(n===null)throw Error(`VFS read failed: ${e}`);return typeof n==`string`?n:new TextDecoder().decode(n)}var S=null;function Pe(){if(S)return S;if(typeof BroadcastChannel>`u`)return null;try{S=new BroadcastChannel(`preview-vfs`)}catch{return null}return S}async function C(e,t,n){let r=Pe();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 Fe=[`/shared/sprinkles/`,`/workspace/skills/sprinkles/`,`/workspace/sprinkles/`],Ie=[`/shared/`,`/workspace/skills/sprinkles/`,`/workspace/sprinkles/`];function Le(e){return Fe.some(t=>e.startsWith(t))}function Re(e){return typeof e!=`string`||!e.startsWith(`/`)||e.includes(`..`)?!1:Ie.some(t=>e.startsWith(t))}var w=new WeakSet,ze=`,
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/sudo-BdOdMLg0.js","assets/logger-DDBAeTLF.js","assets/quick-llm-DpbDYQvU.js","assets/chunk-aKtaBQYM.js","assets/account-store-BsFTtkDo.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/iconsAndAliases-Bzj1tGpU.js","assets/main-D4_0Qt4c.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-Cbi5Katl.js","assets/remote-cdp-transport-Cf0sDZ5N.js","assets/main-cherry-Bap_NTtV.js","assets/new-session-BrzupjSx.js","assets/session-store-D32FcG0Q.js","assets/remote-vfs-client-BwJhhtIV.js","assets/types-idfTVsM8.js","assets/writable-vfs-client-DMYsajEE.js","assets/wc-onboarding-kPr1QmJD.js","assets/welcome-detection-Cr8mNEkt.js","assets/legacy-styles-4PP74ISo.js","assets/theme-BBwuyzvz.js","assets/voice-reply-BdYE1gSs.js","assets/speak-C8nGyR-z.js","assets/kokoro-engine-B330eLPz.js","assets/transformers-env-6vj5CcH9.js","assets/cdn-url-builder-Cq7LLgru.js","assets/wc-placeholder-Bg8WOXwa.js","assets/wc-attach-BLDharFn.js","assets/remote-terminal-view-FVcjc7kw.js","assets/browser-ukv9lM61.js","assets/terminal-session-client-C_tYJ1IB.js","assets/picker-approval-tzbkMw-e.js","assets/secret-env-DcfTe28K.js","assets/remote-sprinkle-vfs-e81pZJKo.js","assets/wc-sprinkles-DrCsxX3z.js","assets/wc-tray-Cml9CUrH.js","assets/shared-B7TdM-Ik.js","assets/sprinkle-renderer-GiRRbdBx.js","assets/wc-nav-CtwFXc1c.js","assets/wc-voice-erm0EtRv.js","assets/composer-speech-BuzPv_Yy.js","assets/whisper-session-DwkDWttW.js","assets/speech-GZe1rUoJ.js"])))=>i.map(i=>d[i]);
2
+ import{t as e}from"./dist-BmWy99kl.js";import{t}from"./preload-helper-zJ_50EbN.js";import{i as n,n as r,r as i,t as a}from"./context-compaction-CFWyOzX1.js";import{t as o}from"./logger-DDBAeTLF.js";import{d as s,f as c,m as l,s as u,t as d,v as f}from"./main-D4_0Qt4c.js";import{n as p,r as m}from"./hid-device-registry-D2LsJCRr.js";import{a as h,i as g}from"./serial-port-registry-Bc4wlwED.js";import{C as _,D as ee,E as te,S as ne,_ as re,a as ie,g as ae,h as oe,k as se,l as ce,m as le,n as ue,o as de,s as fe,w as pe,x as me,y as he}from"./usb-operations-CkcrNzZw.js";import{i as ge,r as _e}from"./usb-device-registry-BP58Vi0S.js";import{n as ve,t as ye}from"./proxy-error-9UvXMpzG.js";import{n as be}from"./sprinkle-bridge-DrAUCEC_.js";import{i as xe,n as v,t as Se}from"./theme-BBwuyzvz.js";import{n as Ce}from"./sprinkle-renderer-GiRRbdBx.js";import{c as we,d as Te,i as Ee,l as y,n as De,o as Oe,r as ke,s as Ae,t as je}from"./wc-shell-B72d5hwo.js";async function b(e){let{installSudoTestHook:n}=await t(async()=>{let{installSudoTestHook:e}=await import(`./sudo-BdOdMLg0.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 Me(e){let{installPanelSudoResponder:n}=await t(async()=>{let{installPanelSudoResponder:e}=await import(`./sudo-BdOdMLg0.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 Ne=typeof chrome<`u`&&!!chrome?.runtime?.id;async function x(e,t){if(t?.aborted)throw new DOMException(`aborted`,`AbortError`);let n=await C(e,!0,t);if(t?.aborted)throw new DOMException(`aborted`,`AbortError`);if(n===null)throw Error(`VFS read failed: ${e}`);return typeof n==`string`?n:new TextDecoder().decode(n)}var S=null;function Pe(){if(S)return S;if(typeof BroadcastChannel>`u`)return null;try{S=new BroadcastChannel(`preview-vfs`)}catch{return null}return S}async function C(e,t,n){let r=Pe();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 Fe=[`/shared/sprinkles/`,`/workspace/skills/sprinkles/`,`/workspace/sprinkles/`],Ie=[`/shared/`,`/workspace/skills/sprinkles/`,`/workspace/sprinkles/`];function Le(e){return Fe.some(t=>e.startsWith(t))}function Re(e){return typeof e!=`string`||!e.startsWith(`/`)||e.includes(`..`)?!1:Ie.some(t=>e.startsWith(t))}var w=new WeakSet,ze=`,
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) {
@@ -242,9 +242,9 @@ ${r}
242
242
  `).trim();if(!s)throw Error(`Restructure call returned empty content`);return`${n}${n.length===0||n.endsWith(`
243
243
  `)?``:`
244
244
  `}${s}\n`}async function Tt(e){if(!e.model||!e.apiKey)return{restructured:!1,reason:`no-llm`};let t=``;try{let n=await e.vfs.readFile(gt,{encoding:`utf-8`});t=typeof n==`string`?n:new TextDecoder().decode(n)}catch{return{restructured:!1,reason:`missing-file`}}let n=await Ct(e.vfs),r=xt(n),i=r*ht;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 wt({currentContent:t,budget:r,model:e.model,apiKey:e.apiKey,headers:e.headers,signal:e.signal});return await e.vfs.writeFile(gt,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 r of e){let e=r.role===`user`?`User`:`Assistant`;if(t+=`## ${e}\n${r.content}\n\n`,r.attachments?.length&&(t+=`Attachments:\n${r.attachments.map(e=>`- ${n(e)}`).join(`
245
- `)}\n\n`),r.toolCalls)for(let e of r.toolCalls)t+=`### Tool: ${e.name}\nInput: ${JSON.stringify(e.input,null,2)}\nResult: ${e.result??``}\n\n`}return t}var F=o(`session-freezer`),Et=4,Dt=2048,Ot=40,I=`/sessions`,L=`/sessions/index.json`;async function kt(e){let t=await Pt(e.sessionStore);if(!t||t.messages.length<Et)return F.info(`Skipping freeze: session below threshold or missing`,{messageCount:t?.messages.length??0}),null;let n=Ft(t.messages),r=e.mode??`full`,i=r===`full`&&!!(e.apiKey&&e.model);await jt(e,n,i);let a=await Mt(e,n,i)||Vt(t.messages);return await Nt(e,t,a,r,i?await At(e,a):void 0)}async function At(e,n){try{return await(e.pickIcon??(await t(async()=>{let{pickLucideIcon:e}=await import(`./quick-llm-CV2IWc0g.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}}async function jt(e,t,n){if(!n){F.info(`LLM unavailable — skipping memory extraction; freezing anyway`);return}let r=``;try{r=await i({messages:t,instruction:a,model:e.model,apiKey:e.apiKey,maxTokens:Dt,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 Gt(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 Mt(e,t,n){if(!n)return``;try{return Bt(await i({messages:t,instruction:r,model:e.model,apiKey:e.apiKey,maxTokens:Ot,headers:e.headers}))}catch(e){return F.warn(`Title generation call failed (using heuristic)`,{error:e instanceof Error?e.message:String(e)}),``}}async function Nt(e,t,n,r,i){let a=new Date().toISOString(),o=r===`quick`?`pending-${Ut()}.md`:`${a.replace(/[:.]/g,`-`)}-${Ht(n)}.md`,s={id:t.id,title:n,frozenAt:a,createdAt:t.createdAt,updatedAt:t.updatedAt,messageCount:t.messages.length,messages:t.messages},c=zt(s),l={filename:o,title:n,frozenAt:a,messageCount:t.messages.length,...i?{icon:i}:{},...r===`quick`?{pendingEnrichment:!0}:{}};try{return await Wt(e.vfs,I),await e.vfs.writeFile(`${I}/${o}`,c),await Kt(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 Pt(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 Ft(e){return e.map(e=>({role:e.role,content:[{type:`text`,text:e.content}],timestamp:e.timestamp}))}var It=`<!-- slicc:session-data
245
+ `)}\n\n`),r.toolCalls)for(let e of r.toolCalls)t+=`### Tool: ${e.name}\nInput: ${JSON.stringify(e.input,null,2)}\nResult: ${e.result??``}\n\n`}return t}var F=o(`session-freezer`),Et=4,Dt=2048,Ot=40,I=`/sessions`,L=`/sessions/index.json`;async function kt(e){let t=await Pt(e.sessionStore);if(!t||t.messages.length<Et)return F.info(`Skipping freeze: session below threshold or missing`,{messageCount:t?.messages.length??0}),null;let n=Ft(t.messages),r=e.mode??`full`,i=r===`full`&&!!(e.apiKey&&e.model);await jt(e,n,i);let a=await Mt(e,n,i)||Vt(t.messages);return await Nt(e,t,a,r,i?await At(e,a):void 0)}async function At(e,n){try{return await(e.pickIcon??(await t(async()=>{let{pickLucideIcon:e}=await import(`./quick-llm-DpbDYQvU.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}}async function jt(e,t,n){if(!n){F.info(`LLM unavailable — skipping memory extraction; freezing anyway`);return}let r=``;try{r=await i({messages:t,instruction:a,model:e.model,apiKey:e.apiKey,maxTokens:Dt,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 Gt(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 Mt(e,t,n){if(!n)return``;try{return Bt(await i({messages:t,instruction:r,model:e.model,apiKey:e.apiKey,maxTokens:Ot,headers:e.headers}))}catch(e){return F.warn(`Title generation call failed (using heuristic)`,{error:e instanceof Error?e.message:String(e)}),``}}async function Nt(e,t,n,r,i){let a=new Date().toISOString(),o=r===`quick`?`pending-${Ut()}.md`:`${a.replace(/[:.]/g,`-`)}-${Ht(n)}.md`,s={id:t.id,title:n,frozenAt:a,createdAt:t.createdAt,updatedAt:t.updatedAt,messageCount:t.messages.length,messages:t.messages},c=zt(s),l={filename:o,title:n,frozenAt:a,messageCount:t.messages.length,...i?{icon:i}:{},...r===`quick`?{pendingEnrichment:!0}:{}};try{return await Wt(e.vfs,I),await e.vfs.writeFile(`${I}/${o}`,c),await Kt(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 Pt(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 Ft(e){return e.map(e=>({role:e.role,content:[{type:`text`,text:e.content}],timestamp:e.timestamp}))}var It=`<!-- slicc:session-data
246
246
  `,Lt=`
247
247
  -->`;function Rt(e){return e.map(e=>{let t={id:e.id,role:e.role,content:e.content,timestamp:e.timestamp};return e.attachments?.length&&(t.attachments=e.attachments),e.toolCalls?.length&&(t.toolCalls=e.toolCalls.map(e=>({id:e.id,name:e.name,input:e.input,...e.result===void 0?{}:{result:e.result},...e.isError?{isError:e.isError}:{}}))),e.source&&(t.source=e.source),e.channel&&(t.channel=e.channel),t})}function zt(e){let t=`---\nid: ${e.id}\ntitle: ${JSON.stringify(e.title)}\nfrozenAt: ${e.frozenAt}\ncreatedAt: ${e.createdAt}\nupdatedAt: ${e.updatedAt}\nmessageCount: ${e.messageCount}\n---\n\n`,n=`${It}${JSON.stringify(Rt(e.messages)).replace(/-->/g,`-- >`)}${Lt}\n\n`,r=`# ${e.title}\n\n`;return t+n+r+P(e.messages)}function Bt(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 Vt(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 Ht(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``).slice(0,48)||`session`}function Ut(){return`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,6)}`}async function Wt(e,t){try{await e.mkdir(t,{recursive:!0})}catch{}}async function Gt(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 Wt(e,`/workspace`)}let o=`## Auto-extracted (${new Date().toISOString().slice(0,10)}, ${n})`,s=`${a.length===0||a.endsWith(`
248
248
  `)?``:`
249
- `}\n${o}\n\n${t}\n`;await e.writeFile(i,a+s);try{await Tt({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 Kt(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 qt(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 Jt(e){return`${I}/${e.filename}`}Promise.resolve();function R(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:Yt(t)}}function Yt(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 Xt=`__slicc_binary__`,Zt=`b64`;function Qt(e){if(!e||typeof e!=`object`)return!1;let t=e;return t[Xt]===Zt&&typeof t.data==`string`}function $t(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 z(e){if(e instanceof Uint8Array)return{[Xt]:Zt,data:$t(e)};if(Array.isArray(e))return e.map(z);if(e&&typeof e==`object`){let t={};for(let[n,r]of Object.entries(e))t[n]=z(r);return t}return e}function B(e){if(Qt(e))return en(e.data);if(Array.isArray(e))return e.map(B);if(e&&typeof e==`object`){let t={};for(let[n,r]of Object.entries(e))t[n]=B(r);return t}return e}var tn=o(`panel-transport`);function nn(e){return typeof e==`object`&&!!e&&`source`in e&&`payload`in e}function rn(){return{onMessage:e=>{let t=(t,n,r)=>(nn(t)&&e(B(t)),!1);return chrome.runtime.onMessage.addListener(t),()=>chrome.runtime.onMessage.removeListener(t)},send:(e,t)=>{let n=z(e);chrome.runtime.sendMessage({source:`panel`,payload:n}).catch(e=>{tn.error(`failed to send to offscreen`,{error:e instanceof Error?e.message:String(e)})})}}}var an=`slicc-groups`,on=3,V={SCOOPS:`scoops`,MESSAGES:`messages`,SESSIONS:`sessions`,TASKS:`tasks`,STATE:`state`,WEBHOOKS:`webhooks`,CRONTASKS:`crontasks`},H=null;async function sn(){if(H){let e=Object.values(V).every(e=>H.objectStoreNames.contains(e));if(H.version===on&&e)return H;H.close(),H=null}return new Promise((e,t)=>{let n=indexedDB.open(an,on);n.onupgradeneeded=e=>{let t=e.target.result,n=e.oldVersion;if(n<1){if(!t.objectStoreNames.contains(V.MESSAGES)){let e=t.createObjectStore(V.MESSAGES,{keyPath:`id`});e.createIndex(`chatJid`,`chatJid`),e.createIndex(`timestamp`,`timestamp`),e.createIndex(`chatJid_timestamp`,[`chatJid`,`timestamp`])}t.objectStoreNames.contains(V.SESSIONS)||t.createObjectStore(V.SESSIONS,{keyPath:`groupFolder`}),t.objectStoreNames.contains(V.TASKS)||t.createObjectStore(V.TASKS,{keyPath:`id`}).createIndex(`groupFolder`,`groupFolder`),t.objectStoreNames.contains(V.STATE)||t.createObjectStore(V.STATE,{keyPath:`key`})}if(n<2){let n=e.target.transaction;if(t.objectStoreNames.contains(`groups`)){let e=n.objectStore(`groups`).getAll();e.onsuccess=()=>{let n=e.result;t.deleteObjectStore(`groups`);let r=t.createObjectStore(V.SCOOPS,{keyPath:`jid`});r.createIndex(`type`,`type`);for(let e of n){let t=e.isMain??!1,n={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};r.put(n)}}}else t.objectStoreNames.contains(V.SCOOPS)||t.createObjectStore(V.SCOOPS,{keyPath:`jid`}).createIndex(`type`,`type`)}n<3&&(t.objectStoreNames.contains(V.WEBHOOKS)||t.createObjectStore(V.WEBHOOKS,{keyPath:`id`}),t.objectStoreNames.contains(V.CRONTASKS)||t.createObjectStore(V.CRONTASKS,{keyPath:`id`}))},n.onsuccess=()=>{H=n.result,e(H)},n.onerror=()=>t(n.error)})}async function cn(e,t=`readonly`){return(await sn()).transaction(e,t).objectStore(e)}async function ln(e){let t=await cn(V.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 un(e,t){let n=await cn(V.STATE,`readwrite`);return new Promise((r,i)=>{let a=n.put({key:e,value:t});a.onsuccess=()=>r(),a.onerror=()=>i(a.error)})}var U=o(`tray-leader`),dn=`leader-tray-session`,fn=3e4,pn=1e4,mn=1e3,hn=3e4,gn=2,_n=20,W={state:`inactive`,session:null,error:null};function vn(){return{...W,session:W.session?{...W.session}:null}}var G=new Set;function yn(e){return G.add(e),()=>{G.delete(e)}}function K(e){if(W={...e,session:e.session?{...e.session}:null},G.size!==0)for(let e of[...G])try{e(vn())}catch{}}var bn=class{key;constructor(e=dn){this.key=e}async load(){return xn(await ln(this.key))}async save(e){await un(this.key,JSON.stringify(e))}async clear(){await un(this.key,``)}};function xn(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 Sn=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 bn,this.fetchImpl=e.fetchImpl??En(),this.webSocketFactory=e.webSocketFactory??(e=>new WebSocket(e)),this.pingIntervalMs=e.pingIntervalMs??fn,this.connectTimeoutMs=e.connectTimeoutMs??pn;let t=e.reconnect;this.reconnectEnabled=t!==!1;let n=t===!1||!t?{}:t;this.reconnectBaseDelayMs=n.baseDelayMs??mn,this.reconnectMaxDelayMs=n.maxDelayMs??hn,this.reconnectBackoffMultiplier=n.backoffMultiplier??gn,this.reconnectMaxAttempts=n.maxAttempts??_n,this.reconnectSleep=n.sleep??(e=>new Promise(t=>setTimeout(t,e)))}async start(){if(this.stopped=!1,this.currentSession&&this.socket)return K({state:`leader`,session:this.currentSession,error:null}),this.currentSession;K({state:`connecting`,session:null,error:null}),this.currentSession=null;try{let e=await this.connectOnce();U.info(`Leader joined tray`,{trayId:e.trayId,controllerId:e.controllerId,runtime:e.runtime});try{this.options.onLeaderReady?.(e)}catch(e){U.warn(`onLeaderReady callback threw`,{error:e instanceof Error?e.message:String(e)})}return e}catch(e){throw K({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,K({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),K({state:`leader`,session:n,error:null}),n}async handleUnexpectedDisconnect(e){if(this.stopped)return;if(!this.reconnectEnabled){U.warn(`Leader WebSocket dropped and auto-reconnect is disabled`,{reason:e}),this.tearDownSocket(),this.currentSession=null,K({state:`error`,session:null,error:`Leader WebSocket dropped: ${e}`});return}if(this.reconnecting)return;this.reconnecting=!0;let t=++this.reconnectGeneration;U.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++,K({state:`reconnecting`,session:this.currentSession,error:null,reconnectAttempts:n}),this.options.onReconnecting?.(n,i),U.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,U.info(`Leader reconnect successful`,{attempt:n,trayId:e.trayId}),this.options.onReconnected?.(e);try{this.options.onLeaderReady?.(e)}catch(e){U.warn(`onLeaderReady callback threw`,{error:e instanceof Error?e.message:String(e)})}return}catch(e){i=e instanceof Error?e.message:String(e),U.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,K({state:`error`,session:null,error:`Leader reconnect failed after ${n} attempts: ${i}`,reconnectAttempts:n}),U.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||!wn(t))throw t;return U.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(s(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=Tn(e.data);if(n){if(n.type===`leader.connected`){i||(i=!0,clearTimeout(a),t(r));return}if(n.type===`pong`){U.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=>{U.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 Cn.fromResponse(n);return await n.json()}},Cn=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 wn(e){return e instanceof Cn&&[403,404,410].includes(e.status)}function Tn(e){if(typeof e!=`string`)return null;try{return JSON.parse(e)}catch{return null}}function En(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(ye(a))throw Error(await ve(a));return a}}var q=o(`offscreen-client`),Dn=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){q.error(`onScoopSelected handler threw`,{error:e instanceof Error?e.message:String(e)})}}locked=!1;constructor(e,t){this.callbacks=e,this.transport=t??rn(),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){}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}q.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?(q.warn(`Offscreen restarted — re-requesting state`),this.ready=!1):q.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`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;On(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){q.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){if(e.scoopJid===this.selectedScoopJid)switch(e.eventType){case`text_delta`:{let t=this.currentMessageId.get(e.scoopJid);t||(t=`scoop-${e.scoopJid}-${J()}`,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}-${J()}`,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}-${J()}`,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}-${J()}`;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){q.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&&On(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)}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){q.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 J(){return Date.now().toString(36)+Math.random().toString(36).slice(2,8)}function On(e,t){K({state:e.state,error:e.error,reconnectAttempts:e.reconnectAttempts,session:e.session?{...e.session}:null}),f({state:t.state,joinUrl:t.joinUrl,trayId:t.trayId,error:t.error,lastError:t.lastError,reconnectAttempts:t.reconnectAttempts,attachAttempts:t.attachAttempts,lastAttachCode:t.lastAttachCode,connectingSince:t.connectingSince,lastPingTime:t.lastPingTime})}function Y(e){return!e.includes(`\0`)}function kn(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(!Y(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(!Y(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),!Y(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),!Y(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(Y(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 An(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 jn(e){let t=An(e);return{onMessage:e=>t.onMessage(e),send:(e,n)=>{t.send({source:`panel`,payload:e},n)}}}function Mn(e,t){let n=An(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 Nn(){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 Pn(e){let{worker:t,realCdpTransport:n,callbacks:r}=e,i=e.readyTimeoutMs??3e4,a=e.localStorageSeed??{},o=new MessageChannel,s=new MessageChannel,c=new Dn(r,jn(o.port1)),l=Mn(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};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 Fn(e){return Pn({worker:e.workerUrl?new Worker(e.workerUrl,{type:`module`}):new Worker(new URL(`/assets/kernel-worker-DDVO_q3_.js`,``+import.meta.url),{type:`module`}),realCdpTransport:e.realCdpTransport,callbacks:e.callbacks,readyTimeoutMs:e.readyTimeoutMs,localStorageSeed:e.localStorageSeed??Nn(),instanceId:e.instanceId})}function In(){return typeof crypto<`u`&&typeof crypto.randomUUID==`function`?crypto.randomUUID():`slicc-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`}async function Ln(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-Cbi5Katl.js`);return{BrowserAPI:e}},__vite__mapDeps([25,5,26,1]));await b({log:a});let f=await c(),p=d(o?`electron-overlay`:`standalone`,f!==null)?u:null;await l({locationHref:i.location.href,storage:i.localStorage,envBaseUrl:r,defaultWorkerBaseUrl:p,runtimeConfigFetcher:async()=>f});let m,h,g;if(n===`cherry`){let{setupCherryFollower:e}=await t(async()=>{let{setupCherryFollower:e}=await import(`./main-cherry-Bap_NTtV.js`);return{setupCherryFollower:e}},__vite__mapDeps([27,25,5,26,1])),n=await e();m=n.browser,h=n.joinUrl,g=n.transport}else{m=new s;try{await m.connect()}catch(e){a.warn(`Initial CDP connect failed; worker-forwarded commands will retry on demand`,e instanceof Error?e.message:String(e))}}let _=m.getTransport();return globalThis.__slicc_browser=m,{browser:m,realCdpTransport:_,cherryJoinUrl:h,cherryTransport:g,instanceId:In(),isElectronOverlay:o}}var Rn=`<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 zn(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 Bn(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(Rn));let a=()=>{r.style.color=`var(--green)`,setTimeout(()=>{r.style.color=`var(--txt-3)`},1500)};return r.addEventListener(`short-click`,()=>{(async()=>{await t(zn(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 X(){return`msg-${Date.now()}-${Math.random().toString(36).slice(2,8)}`}var Vn=class{#e;#t;#n;#r;#i;#a;#o;#s;#c;#l=[];#u=new Map;#d=null;#f=null;#p=``;#m=!1;#h=!1;#g=null;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.agent.onEvent(e=>this.#y(e)),this.#c=e=>this.#O(e),this.#e.addEventListener(`slicc-error-retry`,this.#c)}dispose(){this.#o(),this.#e.removeEventListener(`slicc-error-retry`,this.#c)}get processing(){return this.#h}getMessages(){return this.#l.map(e=>({...e}))}setAgent(e){this.#o(),this.#t=e,this.#o=e.onEvent(e=>this.#y(e))}setOnLocalUserMessage(e){this.#s=e}addUserMessage(e,t){this.#j({id:X(),role:`user`,content:e,timestamp:Date.now()})}addAssistantMessage(e){this.#j({id:X(),role:`assistant`,content:e,timestamp:Date.now()})}loadMessages(e){for(let e of this.#u.keys())this.#i?.(e);this.#l=Oe(e);let t=[...this.#l].reverse().find(e=>e.isStreaming);this.#d=t?.id??null,t&&(this.#f=t.id),this.#p=``,this.#m=!1,this.#u.clear();let n=[],r=``;for(let e of this.#l){let t=new Date(e.timestamp).toDateString();t!==r&&(n.push(Ae(e.timestamp)),r=t);let i=this.#A(e);this.#u.set(e.id,i),n.push(...i)}let i=this.#e;typeof i.replaceContent==`function`?i.replaceContent(...n):i.replaceChildren(...n);for(let e of this.#l)e.isStreaming||this.#r?.(e,this.#u.get(e.id)??[]);this.#v(),this.#N()}sendUserMessage(e,t){let n=e.trim();if(!n&&!t?.length)return;let r={id:X(),role:`user`,content:n,timestamp:Date.now(),attachments:t?.length?t:void 0,queued:this.#h?!0:void 0};this.#j(r),this.#t.sendMessage(n,r.id,r.attachments);try{this.#s?.(n,r.id,r.attachments)}catch(e){console.error(`onLocalUserMessage hook threw`,e)}}addLickMessage(e,t,n,r){let i=this.#l[this.#l.length-1];if(i&&i.source===`lick`&&i.channel===n){i.lickParts=[...i.lickParts??[i.content],t],i.lickCount=i.lickParts.length,i.content+=`\n\n${t}`,this.#M(i);return}this.#j({id:e,role:`user`,content:t,timestamp:r,source:`lick`,channel:n})}setProcessing(e){this.#h!==e&&(this.#h=e,e&&(this.#f=null),e||this.#v(),this.#n?.(e),e||this.#_())}#_(){let e=this.#f;if(this.#f=null,!this.#a)return;let t=e?this.#k(e):null;this.#a(t?{...t}:null)}#v(){let e=this.#l[this.#l.length-1];if(!(e?.role===`assistant`&&!e.isStreaming)){this.#g?.remove();return}this.#g??=Bn({getMessages:()=>this.getMessages()}),(this.#e.inner??this.#e).append(this.#g)}#y(e){switch(e.type){case`message_start`:this.#b(e.messageId);break;case`content_delta`:this.#x(e.messageId,e.text);break;case`content_done`:this.#C(e.messageId);break;case`tool_use_start`:this.#w(e.messageId,e.toolName,e.toolInput);break;case`tool_result`:this.#T(e.messageId,e.toolName,e.result,e.isError);break;case`turn_end`:this.#E(e.messageId);break;case`error`:this.#D(e.error);break;default:break}}#b(e){this.setProcessing(!0),this.#d=e,this.#f=e,this.#j({id:e,role:`assistant`,content:``,timestamp:Date.now(),isStreaming:!0,toolCalls:[]})}#x(e,t){this.#k(e)&&(this.#p+=t,!this.#m&&(this.#m=!0,requestAnimationFrame(()=>this.#S(e))))}#S(e){if(this.#m=!1,!this.#p)return;let t=this.#k(e);t&&(t.content+=this.#p,this.#p=``,this.#M(t))}#C(e){let t=this.#k(e);t&&(this.#p&&this.#d===e&&(t.content+=this.#p),this.#p=``,this.#m=!1,t.isStreaming=!1,this.#M(t))}#w(e,t,n){let r=this.#k(e);r&&(r.toolCalls=r.toolCalls??[],r.toolCalls.push({id:X(),name:t,input:n}),this.#M(r))}#T(e,t,n,r){let i=this.#k(e),a=[...i?.toolCalls??[]].reverse().find(e=>e.name===t&&e.result===void 0);!i||!a||(a.result=n,a.isError=r,this.#M(i))}#E(e){let t=this.#k(e);t?.isStreaming&&(t.isStreaming=!1,this.#M(t)),this.#d=null,this.setProcessing(!1)}#D(e){this.setProcessing(!1),this.#j({id:X(),role:`assistant`,content:e,timestamp:Date.now(),error:!0})}#O(e){if(this.#h)return;let t=e.detail?.messageId??null,n=this.#l.length;if(t){let e=this.#l.findIndex(e=>e.id===t);e>=0&&(n=e)}let r;for(let e=n-1;e>=0;e--){let t=this.#l[e];if(t.role===`user`&&t.source!==`lick`&&t.source!==`delegation`){r=t;break}}r&&this.#t.sendMessage(r.content,X(),r.attachments)}#k(e){return this.#l.find(t=>t.id===e)}#A(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]}}#j(e){this.#l.push(e);let t=this.#A(e);this.#u.set(e.id,t),this.#e.append(...t),e.isStreaming||this.#r?.(e,t),e.role===`user`?this.#N():this.#P()}#M(e){this.#i?.(e.id);let t=this.#u.get(e.id)??[],n=this.#A(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.#u.set(e.id,n),e.isStreaming||this.#r?.(e,n),this.#P()}#N(){this.#e.scrollTop=this.#e.scrollHeight}#P(){let e=this.#e;typeof e.requestFollow==`function`?e.requestFollow():this.#N()}};function Hn(e){return`${new Date(e.frozenAt).toLocaleDateString(void 0,{month:`short`,day:`numeric`})} · ${e.messageCount} turns`}function Un(e){let t=document.createElement(`slicc-freezer-card`);return t.setAttribute(`title`,e.title),t.setAttribute(`meta`,Hn(e)),t.setAttribute(`slug`,e.filename),e.icon&&t.setAttribute(`icon`,e.icon),t}async function Wn(e){let t=new Map;for(let n of e.entries){if(n.icon||n.pendingEnrichment)continue;let r=await e.pickIcon(`"${n.title}" — an archived chat session`);r&&t.set(n.filename,r)}if(t.size===0)return;let n=await Z(e.reader);if(n===null||n.length===0)return;let r=n.map(e=>{let n=!e.icon&&t.has(e.filename)?t.get(e.filename):void 0;return n?{...e,icon:n}:e});await e.writer.writeFile(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 Z(e){let t=await Gn(e);return t.kind===`ok`?t.entries:t.kind===`missing`?[]:null}async function Gn(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 Kn(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 qn(e,t){for(let t of Array.from(e.querySelectorAll(`slicc-freezer-card`)))t.remove();e.append(...t.map(Un))}async function Jn(e,t){let n=await e.readFile(Jt(t),{encoding:`utf-8`}),r=R(typeof n==`string`?n:new TextDecoder().decode(n));return{title:r.title||t.title,messages:r.messages}}var Yn=`/workspace/CLAUDE.md`,Q=64;function Xn(e){if(e.length<=Q)return{title:e,summary:``};let t=e.lastIndexOf(` `,Q),n=t>Q/2?t:Q;return{title:`${e.slice(0,n)}…`,summary:e.slice(n).trim()}}function Zn(e){let t=[],n=null,r=()=>{if(!n)return;let e=n.join(` `).trim();e&&t.push(Xn(e)),n=null};for(let t of e.split(`
250
- `)){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(Xn(e.trim())),t}async function Qn(e){let t=``;try{let n=await e.readFile(Yn,{encoding:`utf-8`});t=typeof n==`string`?n:new TextDecoder().decode(n)}catch{t=``}return Zn(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 $n=[`/workspace`,`/shared`],er=3,tr=200;async function nr(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,tr)){let i=`${t}/${r.name}`;r.type===`directory`?o.push({kind:`dir`,id:i,label:r.name,children:n<er?await nr(e,i,n+1):[]}):o.push({kind:`file`,id:i,label:r.name,path:i})}return o}async function rr(e){let t=[];for(let n of $n)t.push({kind:`group`,label:`${n.slice(1)}/`}),t.push(...await nr(e,n,1));return t}function ir(e){let t=!1;return n=>{if(n===`files`){e.openFs().then(async t=>{e.fileTree.items=await rr(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 Qn(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 ar={off:`off`,low:`low`,medium:`medium`,high:`high`,xhigh:`xhigh`,max:`xhigh`},or={off:`off`,minimal:`low`,low:`low`,medium:`medium`,high:`high`,xhigh:`xhigh`};function sr(e){return e?ar[e]:void 0}function cr(e){return(e&&or[e])??`off`}function $(e){return e===`error`?`dead`:e===`initializing`?`none`:`open`}function lr(e,t,n){return[...e].sort((e,t)=>Number(t.isCone)-Number(e.isCone)).map(e=>{let r=n?.get(e.jid);return{key:e.jid,type:e.isCone?`cone`:`scoop`,color:y(e),label:e.isCone?`sliccy`:e.name,eyes:$(t?.get(e.jid)),fill:typeof r==`number`?Math.round(r*100):void 0}})}function ur(e){let t=()=>{let t=e.getClient();t&&(e.refs.switcher.scoops=lr(t.getScoops(),e.statuses,e.fills))},n=()=>(e.refs.thread.getAttribute(`context`)??``).startsWith(`freezer:`),r=()=>{if(e.getSelected()||n())return;let t=e.getClient()?.getScoops()??[],r=e.pendingUrlContext;if(r?.startsWith(`freezer:`))return;if(r?.startsWith(`scoop:`)){let n=r.slice(6),i=t.find(e=>!e.isCone&&e.name===n);if(i){e.pendingUrlContext=null,e.selectScoop(i);return}}let i=t.find(e=>e.isCone);i&&(e.pendingUrlContext=null,e.selectScoop(i))};return{onStatusChange:(n,r)=>{let i=e.statuses.get(n);e.statuses.set(n,r),$(i)!==$(r)&&t(),e.getSelected()?.jid===n&&e.getController()?.setProcessing(r===`processing`)},onScoopCreated:r=>{t(),!e.getSelected()&&!n()&&!e.pendingUrlContext&&e.selectScoop(r)},onScoopListUpdate:()=>{t(),r()},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`&&Te(n.channel)&&e.getController()?.addLickMessage(n.id,n.content,n.channel,new Date(n.timestamp).getTime())},onScoopMessagesReplaced:(t,n)=>{e.getSelected()?.jid===t&&e.getController()?.loadMessages(n)},onReady:()=>{t(),r(),e.notifyReady?.()}}}async function dr(e,n){e.thread.setAttribute(`context`,n.isCone?`cone`:`scoop:${n.name}`),e.thread.setAttribute(`accent`,y(n)),De(e,n.isCone?{kind:`cone`}:{kind:`scoop`,accent:y(n)}),e.switcher.setAttribute(`active`,n.jid),e.composerMeta.setAttribute(`thinking`,cr(n.config?.thinkingLevel));try{let{resolveCurrentModel:r,resolveModelById:i}=await t(async()=>{let{resolveCurrentModel:e,resolveModelById:t}=await import(`./main-CvMPSdtI.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 fr(e){let{refs:n,openVfs:r,client:i,getController:a,getSelected:o,selectScoop:s,clearSelection:c,log:l}=e,u=[],d=0,f=!1,p=()=>{let e=++d;r().then(async({reader:r,writer:i})=>{let a=await Z(r);if(a===null){if((await Gn(r)).kind!==`corrupt`||(l.warn(`WC freezer index corrupt — rebuilding from archives`),a=await Kn(r),a.length===0))return;await i.writeFile(L,JSON.stringify(a,null,2))}e===d&&(u=a,qn(n.freezer,a),!f&&a.some(e=>!e.icon&&!e.pendingEnrichment)&&(f=!0,t(async()=>{let{pickLucideIcon:e}=await import(`./quick-llm-CV2IWc0g.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})=>Wn({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-Bet5IM7o.js`);return{runNewSessionFreeze:e,runNewSessionFreezeQuick:t}},__vite__mapDeps([28,4,3,5,6,7,8,9,10,1,11,12,13,14,15,17,18,19,20,29]));e===`save`?await i({vfs:n}):await a({vfs:n})}await i.clearAllMessages(),a()?.loadMessages([]),p();let n=i.getScoops().find(e=>e.isCone);n&&s(n)}catch(e){l.error(`WC new session failed`,e)}finally{m=!1,h()?.removeAttribute(`busy`)}})())};for(let e of[`save`,`skip`,`erase`])n.freezer.addEventListener(`new-chat-${e}`,()=>g(e));let _=async e=>{try{let{reader:t}=await r(),i=u.find(t=>t.filename===e);i||=(await Z(t)??[]).find(t=>t.filename===e);let{messages:o}=await Jn(t,i??{filename:e,title:e,frozenAt:``,messageCount:0});a()?.loadMessages(o),n.thread.setAttribute(`context`,`freezer:${i?.filename??e}`),n.thread.setAttribute(`accent`,je),De(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 pr(e,t){let n=null,r=ke(e,{messages:[],scoops:[],floatLabel:t,placeholder:`Ask sliccy, or describe a change…`,onSurfaceActivate:e=>n?.(e),urlState:!0}),i=null,a=null,o=null,s=!1,c=new Set,l=e=>{o=e,a&&(a.setSelectedScoopJid(e.jid),r.inputCard.removeAttribute(`disabled`),dr(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 mr(e){let n=null;return()=>(n??=(async()=>{let[{createRemoteVfsClient:n},{createRemoteWritableVfsClient:r}]=await Promise.all([t(()=>import(`./remote-vfs-client-BwJhhtIV.js`),__vite__mapDeps([30,31])),t(()=>import(`./writable-vfs-client-DMYsajEE.js`),__vite__mapDeps([32,31]))]);return{reader:n({transport:e.getTransport()}),writer:r({transport:e.getTransport()})}})(),n)}function hr(e,n,r,i,a){e.onClientReady(()=>{i.intercept||t(async()=>{let{wireWcOnboarding:e}=await import(`./wc-onboarding-Cfn5YCB9.js`);return{wireWcOnboarding:e}},__vite__mapDeps([33,5,17,3,18,4,6,7,8,9,10,1,11,12,13,14,15,19,34])).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 gr(e,n,r,i){let a=new Map;t(async()=>{let{loadDipStyles:e}=await import(`./legacy-styles-4PP74ISo.js`);return{loadDipStyles:e}},__vite__mapDeps([35,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([36,3])).then(({watchSprinkleThemeBroadcast:e})=>e()).catch(()=>void 0);let o=n.createAgentHandle();return{controller:new Vn({thread:e.thread,agent:o,onTurnComplete:e=>{t(async()=>{let{consumeVoiceSubmission:e,speakReplyMarkdown:t}=await import(`./voice-reply-BdYE1gSs.js`);return{consumeVoiceSubmission:e,speakReplyMarkdown:t}},__vite__mapDeps([37,1,38,39,3,5,40,41])).then(({consumeVoiceSubmission:t,speakReplyMarkdown:n})=>{if(t()&&e?.content)return n(e.content)}).catch(()=>void 0)},onProcessingChange:t=>{e.frame.toggleAttribute(`data-processing`,t),e.inputCard.querySelector(`slicc-send-button`)?.toggleAttribute(`busy`,t),t||r?.()},onMessageDisposed:e=>{let t=a.get(e);t&&(ot(t),a.delete(e))},onMessageRendered:(e,t)=>{let r=t[0];r&&a.set(e.id,at(r,(e,t)=>{let r={type:`sprinkle`,sprinkleName:`inline`,timestamp:new Date().toISOString(),body:{action:e,data:t}};i?.intercept?.(r)||n.sendSprinkleLick(`inline`,{action:e,data:t})}))}}),agentHandle:o}}function _r(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-CRE0AJfG.js`);return{createPlaceholderRefresher:e}},__vite__mapDeps([42,5])).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{let r=n.wiring.pendingUrlContext;if(r!=null&&r!==`cone`)return;let{SessionStore:i}=await t(async()=>{let{SessionStore:e}=await import(`./session-store-D32FcG0Q.js`);return{SessionStore:e}},[]),a=new i;await a.init();let o=await a.load(`session-cone`);o&&o.messages.length>0&&!n.getSelected()&&(n.getController()?.loadMessages(o.messages),e.triggerPlaceholder())}catch(e){o.warn(`WC session hydration failed`,e)}})();let c=null;t(async()=>{let{wireWcAttach:e}=await import(`./wc-attach-DTgAPuZk.js`);return{wireWcAttach:e}},__vite__mapDeps([43,5])).then(({wireWcAttach:n})=>{c=n({inputCard:s.inputCard,freezer:s.freezer,openReader:a,openWriter:e.openWriter,listConversations:async()=>{let{readSessionsIndex:e}=await t(async()=>{let{readSessionsIndex:e}=await import(`./session-freezer-DUci4QJ-.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;e.detail?.source===`dictation`&&t(async()=>{let{markVoiceSubmission:e}=await import(`./voice-reply-BdYE1gSs.js`);return{markVoiceSubmission:e}},__vite__mapDeps([37,1,38,39,3,5,40,41])).then(({markVoiceSubmission:e})=>e()).catch(()=>void 0),n.getController()?.sendUserMessage(r,c?.take()),s.inputCard.clear?.();let i=n.getSelected()?.jid;i&&(s.switcher.setAttribute(`attention`,i),n.wiring.lastActivity.set(i,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=sr(t),a=n.getSelected();a&&i&&r.setScoopThinkingLevel(a.jid,i)})}function vr(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=lr(t.getScoops(),e.statuses,e.fills)}})};return setInterval(n,15e3),n}function yr(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 br(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)}),Sr({switcher:n.switcher,getScoops:()=>t.getScoops(),lastActivity:e.wiring.lastActivity})}function xr(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 Sr(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-CV2IWc0g.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)}})())})}function Cr(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 wr(e,n,r,i={}){let{refs:a}=e;e.setClient(n);let o=null,s=vr(e.wiring,n),c=()=>{o?.()},l={intercept:null},{controller:u,agentHandle:d}=gr(a,n,xr({boot:e,triggerPlaceholder:c,refreshStats:s}),l);e.setController(u),e.onClientReady(s);let f=mr(n),p=async()=>(await f()).reader;hr(e,n,f,l,r),_r({boot:e,client:n,agentHandle:d,setRefreshPlaceholder:e=>{o=e},triggerPlaceholder:c,openReader:p,openWriter:async()=>(await f()).writer,log:r}),br(e,n),yr(e,i,r),e.setActivateSurface(ir({fileTree:a.fileTree,termSurface:a.termSurface,memoryHost:a.memoryHost,openFs:p,mountTerminal:async e=>{let{RemoteTerminalView:r}=await t(async()=>{let{RemoteTerminalView:e}=await import(`./remote-terminal-view-FVcjc7kw.js`);return{RemoteTerminalView:e}},__vite__mapDeps([44,5,45,3,21,1,24,23,46,22,47,15])),{fetchSecretEnvVars:i}=await t(async()=>{let{fetchSecretEnvVars:e}=await import(`./secret-env-DcfTe28K.js`);return{fetchSecretEnvVars:e}},__vite__mapDeps([48,1])),a=await i(),o=new r({client:n,cwd:`/`,env:Object.keys(a).length>0?a:void 0});await o.mount(e),window.addEventListener(`beforeunload`,()=>o.dispose(),{once:!0})},log:r}));let{refreshFreezer:m,openFrozen:h}=fr({refs:a,openVfs:f,client:n,getController:()=>e.getController(),getSelected:()=>e.getSelected(),selectScoop:e.selectScoop,clearSelection:e.clearSelection,log:r});m(),e.onClientReady(m),Cr(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([49,31])),{wireWcSprinkles:l}=await t(async()=>{let{wireWcSprinkles:e}=await import(`./wc-sprinkles-GyllyY2P.js`);return{wireWcSprinkles:e}},__vite__mapDeps([50,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-CsI8SUNX.js`);return{wireWcTray:e}},__vite__mapDeps([51,5,4,3,6,7,8,9,10,1,11,12,13,14,15,45,17,18,19,26,52,53,36])),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-D8LEWAo4.js`);return{wireWcNav:e}},__vite__mapDeps([54,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([55,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-BuzPv_Yy.js`);return{getComposerSpeech:e}},__vite__mapDeps([56,1,57,5,40,41,58])).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 Tr(e,n,r=`standalone`){let{browser:i,realCdpTransport:a,instanceId:o,cherryJoinUrl:s,cherryTransport:c}=await Ln({runtimeMode:r,envBaseUrl:null,window,log:n}),{resolveStandaloneFloatLabel:l,DEFAULT_STANDALONE_LABEL:u}=await t(async()=>{let{resolveStandaloneFloatLabel:e,DEFAULT_STANDALONE_LABEL:t}=await import(`./wc-float-label-dfUH87GD.js`);return{resolveStandaloneFloatLabel:e,DEFAULT_STANDALONE_LABEL:t}},[]),d=r===`standalone`||r===`electron-overlay`?await l():u,f=pr(e,d),p=Fn({realCdpTransport:a,instanceId:o,callbacks:ur(f.wiring)});kn({send:e=>p.client.sendRaw(e)}),wr(f,p.client,n,{instanceId:o,standalone:{browser:i,realCdpTransport:a,runtimeMode:r,cherryJoinUrl:s,cherryTransport:c,baseFloatLabel:d}});let{setupSudoStandalone:m}=await t(async()=>{let{setupSudoStandalone:e}=await import(`./setup-sudo-HPMjz1FQ.js`);return{setupSudoStandalone:e}},[]);await m({log:n}),await p.ready,f.wiring.notifyReady?.(),n.info(`WC live shell ready`,{scoops:p.client.getScoops().length})}export{L as a,wr as attachWcClient,R as c,ur as createWcLiveCallbacks,ot as d,at as f,b as g,Me as h,yn as i,qt as l,qe as m,Tr as mountWcUiLive,Sn as n,kt as o,M as p,pr as prepareWcShell,vn as r,Jt as s,Dn as t,Ke as u};
249
+ `}\n${o}\n\n${t}\n`;await e.writeFile(i,a+s);try{await Tt({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 Kt(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 qt(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 Jt(e){return`${I}/${e.filename}`}Promise.resolve();function R(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:Yt(t)}}function Yt(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 Xt=`__slicc_binary__`,Zt=`b64`;function Qt(e){if(!e||typeof e!=`object`)return!1;let t=e;return t[Xt]===Zt&&typeof t.data==`string`}function $t(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 z(e){if(e instanceof Uint8Array)return{[Xt]:Zt,data:$t(e)};if(Array.isArray(e))return e.map(z);if(e&&typeof e==`object`){let t={};for(let[n,r]of Object.entries(e))t[n]=z(r);return t}return e}function B(e){if(Qt(e))return en(e.data);if(Array.isArray(e))return e.map(B);if(e&&typeof e==`object`){let t={};for(let[n,r]of Object.entries(e))t[n]=B(r);return t}return e}var tn=o(`panel-transport`);function nn(e){return typeof e==`object`&&!!e&&`source`in e&&`payload`in e}function rn(){return{onMessage:e=>{let t=(t,n,r)=>(nn(t)&&e(B(t)),!1);return chrome.runtime.onMessage.addListener(t),()=>chrome.runtime.onMessage.removeListener(t)},send:(e,t)=>{let n=z(e);chrome.runtime.sendMessage({source:`panel`,payload:n}).catch(e=>{tn.error(`failed to send to offscreen`,{error:e instanceof Error?e.message:String(e)})})}}}var an=`slicc-groups`,on=3,V={SCOOPS:`scoops`,MESSAGES:`messages`,SESSIONS:`sessions`,TASKS:`tasks`,STATE:`state`,WEBHOOKS:`webhooks`,CRONTASKS:`crontasks`},H=null;async function sn(){if(H){let e=Object.values(V).every(e=>H.objectStoreNames.contains(e));if(H.version===on&&e)return H;H.close(),H=null}return new Promise((e,t)=>{let n=indexedDB.open(an,on);n.onupgradeneeded=e=>{let t=e.target.result,n=e.oldVersion;if(n<1){if(!t.objectStoreNames.contains(V.MESSAGES)){let e=t.createObjectStore(V.MESSAGES,{keyPath:`id`});e.createIndex(`chatJid`,`chatJid`),e.createIndex(`timestamp`,`timestamp`),e.createIndex(`chatJid_timestamp`,[`chatJid`,`timestamp`])}t.objectStoreNames.contains(V.SESSIONS)||t.createObjectStore(V.SESSIONS,{keyPath:`groupFolder`}),t.objectStoreNames.contains(V.TASKS)||t.createObjectStore(V.TASKS,{keyPath:`id`}).createIndex(`groupFolder`,`groupFolder`),t.objectStoreNames.contains(V.STATE)||t.createObjectStore(V.STATE,{keyPath:`key`})}if(n<2){let n=e.target.transaction;if(t.objectStoreNames.contains(`groups`)){let e=n.objectStore(`groups`).getAll();e.onsuccess=()=>{let n=e.result;t.deleteObjectStore(`groups`);let r=t.createObjectStore(V.SCOOPS,{keyPath:`jid`});r.createIndex(`type`,`type`);for(let e of n){let t=e.isMain??!1,n={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};r.put(n)}}}else t.objectStoreNames.contains(V.SCOOPS)||t.createObjectStore(V.SCOOPS,{keyPath:`jid`}).createIndex(`type`,`type`)}n<3&&(t.objectStoreNames.contains(V.WEBHOOKS)||t.createObjectStore(V.WEBHOOKS,{keyPath:`id`}),t.objectStoreNames.contains(V.CRONTASKS)||t.createObjectStore(V.CRONTASKS,{keyPath:`id`}))},n.onsuccess=()=>{H=n.result,e(H)},n.onerror=()=>t(n.error)})}async function cn(e,t=`readonly`){return(await sn()).transaction(e,t).objectStore(e)}async function ln(e){let t=await cn(V.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 un(e,t){let n=await cn(V.STATE,`readwrite`);return new Promise((r,i)=>{let a=n.put({key:e,value:t});a.onsuccess=()=>r(),a.onerror=()=>i(a.error)})}var U=o(`tray-leader`),dn=`leader-tray-session`,fn=3e4,pn=1e4,mn=1e3,hn=3e4,gn=2,_n=20,W={state:`inactive`,session:null,error:null};function vn(){return{...W,session:W.session?{...W.session}:null}}var G=new Set;function yn(e){return G.add(e),()=>{G.delete(e)}}function K(e){if(W={...e,session:e.session?{...e.session}:null},G.size!==0)for(let e of[...G])try{e(vn())}catch{}}var bn=class{key;constructor(e=dn){this.key=e}async load(){return xn(await ln(this.key))}async save(e){await un(this.key,JSON.stringify(e))}async clear(){await un(this.key,``)}};function xn(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 Sn=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 bn,this.fetchImpl=e.fetchImpl??En(),this.webSocketFactory=e.webSocketFactory??(e=>new WebSocket(e)),this.pingIntervalMs=e.pingIntervalMs??fn,this.connectTimeoutMs=e.connectTimeoutMs??pn;let t=e.reconnect;this.reconnectEnabled=t!==!1;let n=t===!1||!t?{}:t;this.reconnectBaseDelayMs=n.baseDelayMs??mn,this.reconnectMaxDelayMs=n.maxDelayMs??hn,this.reconnectBackoffMultiplier=n.backoffMultiplier??gn,this.reconnectMaxAttempts=n.maxAttempts??_n,this.reconnectSleep=n.sleep??(e=>new Promise(t=>setTimeout(t,e)))}async start(){if(this.stopped=!1,this.currentSession&&this.socket)return K({state:`leader`,session:this.currentSession,error:null}),this.currentSession;K({state:`connecting`,session:null,error:null}),this.currentSession=null;try{let e=await this.connectOnce();U.info(`Leader joined tray`,{trayId:e.trayId,controllerId:e.controllerId,runtime:e.runtime});try{this.options.onLeaderReady?.(e)}catch(e){U.warn(`onLeaderReady callback threw`,{error:e instanceof Error?e.message:String(e)})}return e}catch(e){throw K({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,K({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),K({state:`leader`,session:n,error:null}),n}async handleUnexpectedDisconnect(e){if(this.stopped)return;if(!this.reconnectEnabled){U.warn(`Leader WebSocket dropped and auto-reconnect is disabled`,{reason:e}),this.tearDownSocket(),this.currentSession=null,K({state:`error`,session:null,error:`Leader WebSocket dropped: ${e}`});return}if(this.reconnecting)return;this.reconnecting=!0;let t=++this.reconnectGeneration;U.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++,K({state:`reconnecting`,session:this.currentSession,error:null,reconnectAttempts:n}),this.options.onReconnecting?.(n,i),U.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,U.info(`Leader reconnect successful`,{attempt:n,trayId:e.trayId}),this.options.onReconnected?.(e);try{this.options.onLeaderReady?.(e)}catch(e){U.warn(`onLeaderReady callback threw`,{error:e instanceof Error?e.message:String(e)})}return}catch(e){i=e instanceof Error?e.message:String(e),U.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,K({state:`error`,session:null,error:`Leader reconnect failed after ${n} attempts: ${i}`,reconnectAttempts:n}),U.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||!wn(t))throw t;return U.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(s(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=Tn(e.data);if(n){if(n.type===`leader.connected`){i||(i=!0,clearTimeout(a),t(r));return}if(n.type===`pong`){U.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=>{U.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 Cn.fromResponse(n);return await n.json()}},Cn=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 wn(e){return e instanceof Cn&&[403,404,410].includes(e.status)}function Tn(e){if(typeof e!=`string`)return null;try{return JSON.parse(e)}catch{return null}}function En(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(ye(a))throw Error(await ve(a));return a}}var q=o(`offscreen-client`),Dn=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){q.error(`onScoopSelected handler threw`,{error:e instanceof Error?e.message:String(e)})}}locked=!1;constructor(e,t){this.callbacks=e,this.transport=t??rn(),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){}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}q.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?(q.warn(`Offscreen restarted — re-requesting state`),this.ready=!1):q.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`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;On(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){q.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}-${J()}`,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}-${J()}`,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}-${J()}`,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}-${J()}`;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){q.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&&On(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)}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){q.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 J(){return Date.now().toString(36)+Math.random().toString(36).slice(2,8)}function On(e,t){K({state:e.state,error:e.error,reconnectAttempts:e.reconnectAttempts,session:e.session?{...e.session}:null}),f({state:t.state,joinUrl:t.joinUrl,trayId:t.trayId,error:t.error,lastError:t.lastError,reconnectAttempts:t.reconnectAttempts,attachAttempts:t.attachAttempts,lastAttachCode:t.lastAttachCode,connectingSince:t.connectingSince,lastPingTime:t.lastPingTime})}function Y(e){return!e.includes(`\0`)}function kn(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(!Y(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(!Y(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),!Y(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),!Y(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(Y(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 An(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 jn(e){let t=An(e);return{onMessage:e=>t.onMessage(e),send:(e,n)=>{t.send({source:`panel`,payload:e},n)}}}function Mn(e,t){let n=An(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 Nn(){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 Pn(e){let{worker:t,realCdpTransport:n,callbacks:r}=e,i=e.readyTimeoutMs??3e4,a=e.localStorageSeed??{},o=new MessageChannel,s=new MessageChannel,c=new Dn(r,jn(o.port1)),l=Mn(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};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 Fn(e){return Pn({worker:e.workerUrl?new Worker(e.workerUrl,{type:`module`}):new Worker(new URL(`/assets/kernel-worker-COIEwA3O.js`,``+import.meta.url),{type:`module`}),realCdpTransport:e.realCdpTransport,callbacks:e.callbacks,readyTimeoutMs:e.readyTimeoutMs,localStorageSeed:e.localStorageSeed??Nn(),instanceId:e.instanceId})}function In(){return typeof crypto<`u`&&typeof crypto.randomUUID==`function`?crypto.randomUUID():`slicc-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`}async function Ln(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-Cbi5Katl.js`);return{BrowserAPI:e}},__vite__mapDeps([25,5,26,1]));await b({log:a});let f=await c(),p=d(o?`electron-overlay`:`standalone`,f!==null)?u:null;await l({locationHref:i.location.href,storage:i.localStorage,envBaseUrl:r,defaultWorkerBaseUrl:p,runtimeConfigFetcher:async()=>f});let m,h,g;if(n===`cherry`){let{setupCherryFollower:e}=await t(async()=>{let{setupCherryFollower:e}=await import(`./main-cherry-Bap_NTtV.js`);return{setupCherryFollower:e}},__vite__mapDeps([27,25,5,26,1])),n=await e();m=n.browser,h=n.joinUrl,g=n.transport}else{m=new s;try{await m.connect()}catch(e){a.warn(`Initial CDP connect failed; worker-forwarded commands will retry on demand`,e instanceof Error?e.message:String(e))}}let _=m.getTransport();return globalThis.__slicc_browser=m,{browser:m,realCdpTransport:_,cherryJoinUrl:h,cherryTransport:g,instanceId:In(),isElectronOverlay:o}}var Rn=`<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 zn(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 Bn(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(Rn));let a=()=>{r.style.color=`var(--green)`,setTimeout(()=>{r.style.color=`var(--txt-3)`},1500)};return r.addEventListener(`short-click`,()=>{(async()=>{await t(zn(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 X(){return`msg-${Date.now()}-${Math.random().toString(36).slice(2,8)}`}var Vn=class{#e;#t;#n;#r;#i;#a;#o;#s;#c;#l=[];#u=new Map;#d=null;#f=null;#p=``;#m=!1;#h=!1;#g=null;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.agent.onEvent(e=>this.#y(e)),this.#c=e=>this.#O(e),this.#e.addEventListener(`slicc-error-retry`,this.#c)}dispose(){this.#o(),this.#e.removeEventListener(`slicc-error-retry`,this.#c)}get processing(){return this.#h}getMessages(){return this.#l.map(e=>({...e}))}setAgent(e){this.#o(),this.#t=e,this.#o=e.onEvent(e=>this.#y(e))}setOnLocalUserMessage(e){this.#s=e}addUserMessage(e,t){this.#j({id:X(),role:`user`,content:e,timestamp:Date.now()})}addAssistantMessage(e){this.#j({id:X(),role:`assistant`,content:e,timestamp:Date.now()})}loadMessages(e){for(let e of this.#u.keys())this.#i?.(e);this.#l=Oe(e);let t=[...this.#l].reverse().find(e=>e.isStreaming);this.#d=t?.id??null,t&&(this.#f=t.id),this.#p=``,this.#m=!1,this.#u.clear();let n=[],r=``;for(let e of this.#l){let t=new Date(e.timestamp).toDateString();t!==r&&(n.push(Ae(e.timestamp)),r=t);let i=this.#A(e);this.#u.set(e.id,i),n.push(...i)}let i=this.#e;typeof i.replaceContent==`function`?i.replaceContent(...n):i.replaceChildren(...n);for(let e of this.#l)e.isStreaming||this.#r?.(e,this.#u.get(e.id)??[]);this.#v(),this.#N()}sendUserMessage(e,t){let n=e.trim();if(!n&&!t?.length)return;let r={id:X(),role:`user`,content:n,timestamp:Date.now(),attachments:t?.length?t:void 0,queued:this.#h?!0:void 0};this.#j(r),this.#t.sendMessage(n,r.id,r.attachments);try{this.#s?.(n,r.id,r.attachments)}catch(e){console.error(`onLocalUserMessage hook threw`,e)}}addLickMessage(e,t,n,r){let i=this.#l[this.#l.length-1];if(i&&i.source===`lick`&&i.channel===n){i.lickParts=[...i.lickParts??[i.content],t],i.lickCount=i.lickParts.length,i.content+=`\n\n${t}`,this.#M(i);return}this.#j({id:e,role:`user`,content:t,timestamp:r,source:`lick`,channel:n})}setProcessing(e){this.#h!==e&&(this.#h=e,e&&(this.#f=null),e||this.#v(),this.#n?.(e),e||this.#_())}#_(){let e=this.#f;if(this.#f=null,!this.#a)return;let t=e?this.#k(e):null;this.#a(t?{...t}:null)}#v(){let e=this.#l[this.#l.length-1];if(!(e?.role===`assistant`&&!e.isStreaming)){this.#g?.remove();return}this.#g??=Bn({getMessages:()=>this.getMessages()}),(this.#e.inner??this.#e).append(this.#g)}#y(e){switch(e.type){case`message_start`:this.#b(e.messageId);break;case`content_delta`:this.#x(e.messageId,e.text);break;case`content_done`:this.#C(e.messageId);break;case`tool_use_start`:this.#w(e.messageId,e.toolName,e.toolInput);break;case`tool_result`:this.#T(e.messageId,e.toolName,e.result,e.isError);break;case`turn_end`:this.#E(e.messageId);break;case`error`:this.#D(e.error);break;default:break}}#b(e){this.setProcessing(!0),this.#d=e,this.#f=e,this.#j({id:e,role:`assistant`,content:``,timestamp:Date.now(),isStreaming:!0,toolCalls:[]})}#x(e,t){this.#k(e)&&(this.#p+=t,!this.#m&&(this.#m=!0,requestAnimationFrame(()=>this.#S(e))))}#S(e){if(this.#m=!1,!this.#p)return;let t=this.#k(e);t&&(t.content+=this.#p,this.#p=``,this.#M(t))}#C(e){let t=this.#k(e);t&&(this.#p&&this.#d===e&&(t.content+=this.#p),this.#p=``,this.#m=!1,t.isStreaming=!1,this.#M(t))}#w(e,t,n){let r=this.#k(e);r&&(r.toolCalls=r.toolCalls??[],r.toolCalls.push({id:X(),name:t,input:n}),this.#M(r))}#T(e,t,n,r){let i=this.#k(e),a=[...i?.toolCalls??[]].reverse().find(e=>e.name===t&&e.result===void 0);!i||!a||(a.result=n,a.isError=r,this.#M(i))}#E(e){let t=this.#k(e);t?.isStreaming&&(t.isStreaming=!1,this.#M(t)),this.#d=null,this.setProcessing(!1)}#D(e){this.setProcessing(!1),this.#j({id:X(),role:`assistant`,content:e,timestamp:Date.now(),error:!0})}#O(e){if(this.#h)return;let t=e.detail?.messageId??null,n=this.#l.length;if(t){let e=this.#l.findIndex(e=>e.id===t);e>=0&&(n=e)}let r;for(let e=n-1;e>=0;e--){let t=this.#l[e];if(t.role===`user`&&t.source!==`lick`&&t.source!==`delegation`){r=t;break}}r&&this.#t.sendMessage(r.content,X(),r.attachments)}#k(e){return this.#l.find(t=>t.id===e)}#A(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]}}#j(e){this.#l.push(e);let t=this.#A(e);this.#u.set(e.id,t),this.#e.append(...t),e.isStreaming||this.#r?.(e,t),e.role===`user`?this.#N():this.#P()}#M(e){this.#i?.(e.id);let t=this.#u.get(e.id)??[],n=this.#A(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.#u.set(e.id,n),e.isStreaming||this.#r?.(e,n),this.#P()}#N(){this.#e.scrollTop=this.#e.scrollHeight}#P(){let e=this.#e;typeof e.requestFollow==`function`?e.requestFollow():this.#N()}};function Hn(e){return`${new Date(e.frozenAt).toLocaleDateString(void 0,{month:`short`,day:`numeric`})} · ${e.messageCount} turns`}function Un(e){let t=document.createElement(`slicc-freezer-card`);return t.setAttribute(`title`,e.title),t.setAttribute(`meta`,Hn(e)),t.setAttribute(`slug`,e.filename),e.icon&&t.setAttribute(`icon`,e.icon),t}async function Wn(e){let t=new Map;for(let n of e.entries){if(n.icon||n.pendingEnrichment)continue;let r=await e.pickIcon(`"${n.title}" — an archived chat session`);r&&t.set(n.filename,r)}if(t.size===0)return;let n=await Z(e.reader);if(n===null||n.length===0)return;let r=n.map(e=>{let n=!e.icon&&t.has(e.filename)?t.get(e.filename):void 0;return n?{...e,icon:n}:e});await e.writer.writeFile(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 Z(e){let t=await Gn(e);return t.kind===`ok`?t.entries:t.kind===`missing`?[]:null}async function Gn(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 Kn(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 qn(e,t){for(let t of Array.from(e.querySelectorAll(`slicc-freezer-card`)))t.remove();e.append(...t.map(Un))}async function Jn(e,t){let n=await e.readFile(Jt(t),{encoding:`utf-8`}),r=R(typeof n==`string`?n:new TextDecoder().decode(n));return{title:r.title||t.title,messages:r.messages}}var Yn=`/workspace/CLAUDE.md`,Q=64;function Xn(e){if(e.length<=Q)return{title:e,summary:``};let t=e.lastIndexOf(` `,Q),n=t>Q/2?t:Q;return{title:`${e.slice(0,n)}…`,summary:e.slice(n).trim()}}function Zn(e){let t=[],n=null,r=()=>{if(!n)return;let e=n.join(` `).trim();e&&t.push(Xn(e)),n=null};for(let t of e.split(`
250
+ `)){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(Xn(e.trim())),t}async function Qn(e){let t=``;try{let n=await e.readFile(Yn,{encoding:`utf-8`});t=typeof n==`string`?n:new TextDecoder().decode(n)}catch{t=``}return Zn(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 $n=[`/workspace`,`/shared`],er=3,tr=200;async function nr(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,tr)){let i=`${t}/${r.name}`;r.type===`directory`?o.push({kind:`dir`,id:i,label:r.name,children:n<er?await nr(e,i,n+1):[]}):o.push({kind:`file`,id:i,label:r.name,path:i})}return o}async function rr(e){let t=[];for(let n of $n)t.push({kind:`group`,label:`${n.slice(1)}/`}),t.push(...await nr(e,n,1));return t}function ir(e){let t=!1;return n=>{if(n===`files`){e.openFs().then(async t=>{e.fileTree.items=await rr(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 Qn(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 ar={off:`off`,low:`low`,medium:`medium`,high:`high`,xhigh:`xhigh`,max:`xhigh`},or={off:`off`,minimal:`low`,low:`low`,medium:`medium`,high:`high`,xhigh:`xhigh`};function sr(e){return e?ar[e]:void 0}function cr(e){return(e&&or[e])??`off`}function $(e){return e===`error`?`dead`:e===`initializing`?`none`:`open`}function lr(e,t,n){return[...e].sort((e,t)=>Number(t.isCone)-Number(e.isCone)).map(e=>{let r=n?.get(e.jid);return{key:e.jid,type:e.isCone?`cone`:`scoop`,color:y(e),label:e.isCone?`sliccy`:e.name,eyes:$(t?.get(e.jid)),fill:typeof r==`number`?Math.round(r*100):void 0}})}function ur(e){let t=()=>{let t=e.getClient();t&&(e.refs.switcher.scoops=lr(t.getScoops(),e.statuses,e.fills))},n=()=>(e.refs.thread.getAttribute(`context`)??``).startsWith(`freezer:`),r=()=>{if(e.getSelected()||n())return;let t=e.getClient()?.getScoops()??[],r=e.pendingUrlContext;if(r?.startsWith(`freezer:`))return;if(r?.startsWith(`scoop:`)){let n=r.slice(6),i=t.find(e=>!e.isCone&&e.name===n);if(i){e.pendingUrlContext=null,e.selectScoop(i);return}}let i=t.find(e=>e.isCone);i&&(e.pendingUrlContext=null,e.selectScoop(i))};return{onStatusChange:(n,r)=>{let i=e.statuses.get(n);e.statuses.set(n,r),$(i)!==$(r)&&t(),e.getSelected()?.jid===n&&e.getController()?.setProcessing(r===`processing`)},onScoopCreated:r=>{t(),!e.getSelected()&&!n()&&!e.pendingUrlContext&&e.selectScoop(r)},onScoopListUpdate:()=>{t(),r()},onScoopActivity:t=>{e.refs.switcher.setAttribute(`attention`,t)},onIncomingMessage:(t,n)=>{e.refs.switcher.setAttribute(`attention`,t),e.lastActivity.set(t,String(n.content??``).slice(0,600)),e.getSelected()?.jid===t&&n.channel!==`web`&&Te(n.channel)&&e.getController()?.addLickMessage(n.id,n.content,n.channel,new Date(n.timestamp).getTime())},onScoopMessagesReplaced:(t,n)=>{e.getSelected()?.jid===t&&e.getController()?.loadMessages(n)},onReady:()=>{t(),r(),e.notifyReady?.()}}}async function dr(e,n){e.thread.setAttribute(`context`,n.isCone?`cone`:`scoop:${n.name}`),e.thread.setAttribute(`accent`,y(n)),De(e,n.isCone?{kind:`cone`}:{kind:`scoop`,accent:y(n)}),e.switcher.setAttribute(`active`,n.jid),e.composerMeta.setAttribute(`thinking`,cr(n.config?.thinkingLevel));try{let{resolveCurrentModel:r,resolveModelById:i}=await t(async()=>{let{resolveCurrentModel:e,resolveModelById:t}=await import(`./main-D4_0Qt4c.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 fr(e){let{refs:n,openVfs:r,client:i,getController:a,getSelected:o,selectScoop:s,clearSelection:c,log:l}=e,u=[],d=0,f=!1,p=()=>{let e=++d;r().then(async({reader:r,writer:i})=>{let a=await Z(r);if(a===null){if((await Gn(r)).kind!==`corrupt`||(l.warn(`WC freezer index corrupt — rebuilding from archives`),a=await Kn(r),a.length===0))return;await i.writeFile(L,JSON.stringify(a,null,2))}e===d&&(u=a,qn(n.freezer,a),!f&&a.some(e=>!e.icon&&!e.pendingEnrichment)&&(f=!0,t(async()=>{let{pickLucideIcon:e}=await import(`./quick-llm-DpbDYQvU.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})=>Wn({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-BrzupjSx.js`);return{runNewSessionFreeze:e,runNewSessionFreezeQuick:t}},__vite__mapDeps([28,4,3,5,6,7,8,9,10,1,11,12,13,14,15,17,18,19,20,29]));e===`save`?await i({vfs:n}):await a({vfs:n})}await i.clearAllMessages(),a()?.loadMessages([]),p();let n=i.getScoops().find(e=>e.isCone);n&&s(n)}catch(e){l.error(`WC new session failed`,e)}finally{m=!1,h()?.removeAttribute(`busy`)}})())};for(let e of[`save`,`skip`,`erase`])n.freezer.addEventListener(`new-chat-${e}`,()=>g(e));let _=async e=>{try{let{reader:t}=await r(),i=u.find(t=>t.filename===e);i||=(await Z(t)??[]).find(t=>t.filename===e);let{messages:o}=await Jn(t,i??{filename:e,title:e,frozenAt:``,messageCount:0});a()?.loadMessages(o),n.thread.setAttribute(`context`,`freezer:${i?.filename??e}`),n.thread.setAttribute(`accent`,je),De(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 pr(e,t){let n=null,r=ke(e,{messages:[],scoops:[],floatLabel:t,placeholder:`Ask sliccy, or describe a change…`,onSurfaceActivate:e=>n?.(e),urlState:!0}),i=null,a=null,o=null,s=!1,c=new Set,l=e=>{o=e,a&&(a.setSelectedScoopJid(e.jid),r.inputCard.removeAttribute(`disabled`),dr(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 mr(e){let n=null;return()=>(n??=(async()=>{let[{createRemoteVfsClient:n},{createRemoteWritableVfsClient:r}]=await Promise.all([t(()=>import(`./remote-vfs-client-BwJhhtIV.js`),__vite__mapDeps([30,31])),t(()=>import(`./writable-vfs-client-DMYsajEE.js`),__vite__mapDeps([32,31]))]);return{reader:n({transport:e.getTransport()}),writer:r({transport:e.getTransport()})}})(),n)}function hr(e,n,r,i,a){e.onClientReady(()=>{i.intercept||t(async()=>{let{wireWcOnboarding:e}=await import(`./wc-onboarding-kPr1QmJD.js`);return{wireWcOnboarding:e}},__vite__mapDeps([33,5,17,3,18,4,6,7,8,9,10,1,11,12,13,14,15,19,34])).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 gr(e,n,r,i){let a=new Map;t(async()=>{let{loadDipStyles:e}=await import(`./legacy-styles-4PP74ISo.js`);return{loadDipStyles:e}},__vite__mapDeps([35,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([36,3])).then(({watchSprinkleThemeBroadcast:e})=>e()).catch(()=>void 0);let o=n.createAgentHandle();return{controller:new Vn({thread:e.thread,agent:o,onTurnComplete:e=>{t(async()=>{let{consumeVoiceSubmission:e,speakReplyMarkdown:t}=await import(`./voice-reply-BdYE1gSs.js`);return{consumeVoiceSubmission:e,speakReplyMarkdown:t}},__vite__mapDeps([37,1,38,39,3,5,40,41])).then(({consumeVoiceSubmission:t,speakReplyMarkdown:n})=>{if(t()&&e?.content)return n(e.content)}).catch(()=>void 0)},onProcessingChange:t=>{e.frame.toggleAttribute(`data-processing`,t),e.inputCard.querySelector(`slicc-send-button`)?.toggleAttribute(`busy`,t),t||r?.()},onMessageDisposed:e=>{let t=a.get(e);t&&(ot(t),a.delete(e))},onMessageRendered:(e,t)=>{let r=t[0];r&&a.set(e.id,at(r,(e,t)=>{let r={type:`sprinkle`,sprinkleName:`inline`,timestamp:new Date().toISOString(),body:{action:e,data:t}};i?.intercept?.(r)||n.sendSprinkleLick(`inline`,{action:e,data:t})}))}}),agentHandle:o}}function _r(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-Bg8WOXwa.js`);return{createPlaceholderRefresher:e}},__vite__mapDeps([42,5])).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{let r=n.wiring.pendingUrlContext;if(r!=null&&r!==`cone`)return;let{SessionStore:i}=await t(async()=>{let{SessionStore:e}=await import(`./session-store-D32FcG0Q.js`);return{SessionStore:e}},[]),a=new i;await a.init();let o=await a.load(`session-cone`);o&&o.messages.length>0&&!n.getSelected()&&(n.getController()?.loadMessages(o.messages),e.triggerPlaceholder())}catch(e){o.warn(`WC session hydration failed`,e)}})();let c=null;t(async()=>{let{wireWcAttach:e}=await import(`./wc-attach-BLDharFn.js`);return{wireWcAttach:e}},__vite__mapDeps([43,5])).then(({wireWcAttach:n})=>{c=n({inputCard:s.inputCard,freezer:s.freezer,openReader:a,openWriter:e.openWriter,listConversations:async()=>{let{readSessionsIndex:e}=await t(async()=>{let{readSessionsIndex:e}=await import(`./session-freezer-aIbhhwjG.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;e.detail?.source===`dictation`&&t(async()=>{let{markVoiceSubmission:e}=await import(`./voice-reply-BdYE1gSs.js`);return{markVoiceSubmission:e}},__vite__mapDeps([37,1,38,39,3,5,40,41])).then(({markVoiceSubmission:e})=>e()).catch(()=>void 0),n.getController()?.sendUserMessage(r,c?.take()),s.inputCard.clear?.();let i=n.getSelected()?.jid;i&&(s.switcher.setAttribute(`attention`,i),n.wiring.lastActivity.set(i,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=sr(t),a=n.getSelected();a&&i&&r.setScoopThinkingLevel(a.jid,i)})}function vr(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=lr(t.getScoops(),e.statuses,e.fills)}})};return setInterval(n,15e3),n}function yr(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 br(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)}),Sr({switcher:n.switcher,getScoops:()=>t.getScoops(),lastActivity:e.wiring.lastActivity})}function xr(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 Sr(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-DpbDYQvU.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)}})())})}function Cr(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 wr(e,n,r,i={}){let{refs:a}=e;e.setClient(n);let o=null,s=vr(e.wiring,n),c=()=>{o?.()},l={intercept:null},{controller:u,agentHandle:d}=gr(a,n,xr({boot:e,triggerPlaceholder:c,refreshStats:s}),l);e.setController(u),e.onClientReady(s);let f=mr(n),p=async()=>(await f()).reader;hr(e,n,f,l,r),_r({boot:e,client:n,agentHandle:d,setRefreshPlaceholder:e=>{o=e},triggerPlaceholder:c,openReader:p,openWriter:async()=>(await f()).writer,log:r}),br(e,n),yr(e,i,r),e.setActivateSurface(ir({fileTree:a.fileTree,termSurface:a.termSurface,memoryHost:a.memoryHost,openFs:p,mountTerminal:async e=>{let{RemoteTerminalView:r}=await t(async()=>{let{RemoteTerminalView:e}=await import(`./remote-terminal-view-FVcjc7kw.js`);return{RemoteTerminalView:e}},__vite__mapDeps([44,5,45,3,21,1,24,23,46,22,47,15])),{fetchSecretEnvVars:i}=await t(async()=>{let{fetchSecretEnvVars:e}=await import(`./secret-env-DcfTe28K.js`);return{fetchSecretEnvVars:e}},__vite__mapDeps([48,1])),a=await i(),o=new r({client:n,cwd:`/`,env:Object.keys(a).length>0?a:void 0});await o.mount(e),window.addEventListener(`beforeunload`,()=>o.dispose(),{once:!0})},log:r}));let{refreshFreezer:m,openFrozen:h}=fr({refs:a,openVfs:f,client:n,getController:()=>e.getController(),getSelected:()=>e.getSelected(),selectScoop:e.selectScoop,clearSelection:e.clearSelection,log:r});m(),e.onClientReady(m),Cr(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([49,31])),{wireWcSprinkles:l}=await t(async()=>{let{wireWcSprinkles:e}=await import(`./wc-sprinkles-DrCsxX3z.js`);return{wireWcSprinkles:e}},__vite__mapDeps([50,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-Cml9CUrH.js`);return{wireWcTray:e}},__vite__mapDeps([51,5,4,3,6,7,8,9,10,1,11,12,13,14,15,45,17,18,19,26,52,53,36])),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-CtwFXc1c.js`);return{wireWcNav:e}},__vite__mapDeps([54,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([55,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-BuzPv_Yy.js`);return{getComposerSpeech:e}},__vite__mapDeps([56,1,57,5,40,41,58])).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 Tr(e,n,r=`standalone`){let{browser:i,realCdpTransport:a,instanceId:o,cherryJoinUrl:s,cherryTransport:c}=await Ln({runtimeMode:r,envBaseUrl:null,window,log:n}),{resolveStandaloneFloatLabel:l,DEFAULT_STANDALONE_LABEL:u}=await t(async()=>{let{resolveStandaloneFloatLabel:e,DEFAULT_STANDALONE_LABEL:t}=await import(`./wc-float-label-dfUH87GD.js`);return{resolveStandaloneFloatLabel:e,DEFAULT_STANDALONE_LABEL:t}},[]),d=r===`standalone`||r===`electron-overlay`?await l():u,f=pr(e,d),p=Fn({realCdpTransport:a,instanceId:o,callbacks:ur(f.wiring)});kn({send:e=>p.client.sendRaw(e)}),wr(f,p.client,n,{instanceId:o,standalone:{browser:i,realCdpTransport:a,runtimeMode:r,cherryJoinUrl:s,cherryTransport:c,baseFloatLabel:d}});let{setupSudoStandalone:m}=await t(async()=>{let{setupSudoStandalone:e}=await import(`./setup-sudo-D2Kx4E1z.js`);return{setupSudoStandalone:e}},[]);await m({log:n}),await p.ready,f.wiring.notifyReady?.(),n.info(`WC live shell ready`,{scoops:p.client.getScoops().length})}export{L as a,wr as attachWcClient,R as c,ur as createWcLiveCallbacks,ot as d,at as f,b as g,Me as h,yn as i,qt as l,qe as m,Tr as mountWcUiLive,Sn as n,kt as o,M as p,pr as prepareWcShell,vn as r,Jt as s,Dn as t,Ke as u};
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/main-CvMPSdtI.js","assets/chunk-aKtaBQYM.js","assets/modulepreload-polyfill-Dezn_h7o.js","assets/preload-helper-zJ_50EbN.js","assets/account-store-CciZPZYw.js","assets/dist-CSwuvPa6.js","assets/event-stream-Cs43PhOB.js","assets/json-parse-BUunmmNl.js","assets/__vite-browser-external-C7iut881.js","assets/context-compaction-DJF_qJZJ.js","assets/logger-DDBAeTLF.js","assets/src-DlEHAkLd.js","assets/panel-rpc-DqT2FG7c.js","assets/bedrock-camp-D64i9rke.js","assets/transform-messages-DzB_lMo-.js","assets/tool-ui-YOPqzMmL.js","assets/clipboard-DgFtRQbq.js","assets/legacy-styles-4PP74ISo.js","assets/sync-dialog-BFKWO6DT.js","assets/wc-settings-eaFoZXLz.js","assets/wc-detached-BuCuD_9T.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{a as n,g as r,h as i,s as a}from"./main-CvMPSdtI.js";import{r as o}from"./wc-live-C9u3SoiD.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(l){let{refs:f,client:p,log:m}=l,{getAllAvailableModels:h,getAccounts:g}=await e(async()=>{let{getAllAvailableModels:e,getAccounts:t}=await import(`./main-CvMPSdtI.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])),_=()=>{f.composerMeta.models=c(h())};_(),await u(f,p);let v=typeof chrome<`u`&&!!chrome?.runtime?.id,y=()=>{let e=s(g()),t=f.avatarMenu.querySelector(`slicc-avatar`),n=f.inputCard.querySelector(`slicc-send-button`);e?(t?.removeAttribute(`initials`),t?.setAttribute(`name`,e.name),e.avatarUrl&&(t?.setAttribute(`src`,e.avatarUrl),n?.setAttribute(`src`,e.avatarUrl)),f.avatarMenu.user={name:e.name,provider:e.provider}):(t?.removeAttribute(`name`),t?.removeAttribute(`src`),t?.removeAttribute(`initials`),n?.removeAttribute(`src`),f.avatarMenu.user={name:`SLICC`,provider:v?`extension`:`standalone`})};y();let b=()=>{if(v)return[];let e=n(o(),r()),t=[{kind:`separator`}];return e.kind===`leader-offer`?t.push({id:`tray-enable`,label:e.label,icon:`radio`}):e.kind===`leader-copy`?(t.push({id:`tray-copy`,label:`Copy tray join URL`,icon:`link`}),t.push({id:`tray-stop`,label:`Stop multi-browser sync`,icon:`square`,danger:!0})):e.kind===`leader-pending`?(t.push({kind:`caption`,label:e.caption}),t.push({id:`tray-stop`,label:`Stop multi-browser sync`,icon:`square`,danger:!0})):(t.push({kind:`caption`,label:e.caption}),t.push({id:`tray-stop`,label:`Disconnect from leader`,icon:`unplug`,danger:!0})),t},x=new URLSearchParams(window.location.search).has(`detached`),S=()=>v&&!x?[{id:`popout`,label:`Pop out into a tab`,icon:`external-link`}]:[],C=()=>{f.avatarMenu.items=[{id:`settings`,label:`Account settings…`,icon:`settings`},...S(),...b()]};C(),f.avatarMenu.addEventListener(`slicc-avatar-menu-toggle`,e=>{e.detail?.open&&C()});let w=n=>{if(n===`tray-enable`)return i({locationHref:window.location.href,storage:window.localStorage,envBaseUrl:null,defaultWorkerBaseUrl:a}).then(e=>{if(!e)return m.error(`tray enable: no worker base URL resolvable`);window.dispatchEvent(new CustomEvent(`slicc:tray-leave`,{detail:{workerBaseUrl:e}}))}),!0;if(n===`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([17,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([18,16,1]));t({joinUrl:n,copied:!0})}).catch(e=>m.error(`sync dialog failed`,e))),!0}return n===`tray-stop`?(window.dispatchEvent(new CustomEvent(`slicc:tray-leave`,{detail:{workerBaseUrl:null}})),!0):!1},T=()=>{e(async()=>{let{showWcSettings:e}=await import(`./wc-settings-eaFoZXLz.js`);return{showWcSettings:e}},__vite__mapDeps([19,3])).then(({showWcSettings:e})=>e(m)).then(()=>{_(),y(),p.updateModel()}).catch(e=>m.error(`WC settings dialog failed`,e))};f.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-BuCuD_9T.js`);return{requestDetachedPopout:e}},__vite__mapDeps([20,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16])).then(({requestDetachedPopout:e})=>e()).catch(e=>m.error(`detached popout request failed`,e));return}n===`settings`&&T()}),f.composerMeta.addEventListener(`add-ai`,T),d({refreshModels:_,applyIdentity:y,client:p})}async function u(t,n){let{resolveModelById:r,resolveCurrentModel:i,setSelectedModelId:a}=await e(async()=>{let{resolveModelById:e,resolveCurrentModel:t,setSelectedModelId:n}=await import(`./main-CvMPSdtI.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])),o=e=>{let t=e.indexOf(`:`);return t>0?e.slice(t+1):e},s=e=>{try{let n=e?r(o(e)):i();t.composerMeta.toggleAttribute(`no-thinking`,n.reasoning!==!0)}catch{}};s(),t.composerMeta.addEventListener(`model-change`,e=>{let t=e.detail?.id;t&&(a(t),s(t),n.updateModel())})}async function d(t){let{refreshModels:n,applyIdentity:r,client:i}=t,{getAccounts:a,getProviderConfig:o}=await e(async()=>{let{getAccounts:e,getProviderConfig:t}=await import(`./main-CvMPSdtI.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-D4_0Qt4c.js","assets/chunk-aKtaBQYM.js","assets/modulepreload-polyfill-Dezn_h7o.js","assets/preload-helper-zJ_50EbN.js","assets/account-store-BsFTtkDo.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/legacy-styles-4PP74ISo.js","assets/sync-dialog-BFKWO6DT.js","assets/wc-settings-3zZYo6Tq.js","assets/wc-detached-CeMTHgOq.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{a as n,g as r,h as i,s as a}from"./main-D4_0Qt4c.js";import{r as o}from"./wc-live-BCM49lWd.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(l){let{refs:f,client:p,log:m}=l,{getAllAvailableModels:h,getAccounts:g}=await e(async()=>{let{getAllAvailableModels:e,getAccounts:t}=await import(`./main-D4_0Qt4c.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])),_=()=>{f.composerMeta.models=c(h())};_(),await u(f,p);let v=typeof chrome<`u`&&!!chrome?.runtime?.id,y=()=>{let e=s(g()),t=f.avatarMenu.querySelector(`slicc-avatar`),n=f.inputCard.querySelector(`slicc-send-button`);e?(t?.removeAttribute(`initials`),t?.setAttribute(`name`,e.name),e.avatarUrl&&(t?.setAttribute(`src`,e.avatarUrl),n?.setAttribute(`src`,e.avatarUrl)),f.avatarMenu.user={name:e.name,provider:e.provider}):(t?.removeAttribute(`name`),t?.removeAttribute(`src`),t?.removeAttribute(`initials`),n?.removeAttribute(`src`),f.avatarMenu.user={name:`SLICC`,provider:v?`extension`:`standalone`})};y();let b=()=>{if(v)return[];let e=n(o(),r()),t=[{kind:`separator`}];return e.kind===`leader-offer`?t.push({id:`tray-enable`,label:e.label,icon:`radio`}):e.kind===`leader-copy`?(t.push({id:`tray-copy`,label:`Copy tray join URL`,icon:`link`}),t.push({id:`tray-stop`,label:`Stop multi-browser sync`,icon:`square`,danger:!0})):e.kind===`leader-pending`?(t.push({kind:`caption`,label:e.caption}),t.push({id:`tray-stop`,label:`Stop multi-browser sync`,icon:`square`,danger:!0})):(t.push({kind:`caption`,label:e.caption}),t.push({id:`tray-stop`,label:`Disconnect from leader`,icon:`unplug`,danger:!0})),t},x=new URLSearchParams(window.location.search).has(`detached`),S=()=>v&&!x?[{id:`popout`,label:`Pop out into a tab`,icon:`external-link`}]:[],C=()=>{f.avatarMenu.items=[{id:`settings`,label:`Account settings…`,icon:`settings`},...S(),...b()]};C(),f.avatarMenu.addEventListener(`slicc-avatar-menu-toggle`,e=>{e.detail?.open&&C()});let w=n=>{if(n===`tray-enable`)return i({locationHref:window.location.href,storage:window.localStorage,envBaseUrl:null,defaultWorkerBaseUrl:a}).then(e=>{if(!e)return m.error(`tray enable: no worker base URL resolvable`);window.dispatchEvent(new CustomEvent(`slicc:tray-leave`,{detail:{workerBaseUrl:e}}))}),!0;if(n===`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([17,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([18,16,1]));t({joinUrl:n,copied:!0})}).catch(e=>m.error(`sync dialog failed`,e))),!0}return n===`tray-stop`?(window.dispatchEvent(new CustomEvent(`slicc:tray-leave`,{detail:{workerBaseUrl:null}})),!0):!1},T=()=>{e(async()=>{let{showWcSettings:e}=await import(`./wc-settings-3zZYo6Tq.js`);return{showWcSettings:e}},__vite__mapDeps([19,3])).then(({showWcSettings:e})=>e(m)).then(()=>{_(),y(),p.updateModel()}).catch(e=>m.error(`WC settings dialog failed`,e))};f.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-CeMTHgOq.js`);return{requestDetachedPopout:e}},__vite__mapDeps([20,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16])).then(({requestDetachedPopout:e})=>e()).catch(e=>m.error(`detached popout request failed`,e));return}n===`settings`&&T()}),f.composerMeta.addEventListener(`add-ai`,T),d({refreshModels:_,applyIdentity:y,client:p})}async function u(t,n){let{resolveModelById:r,resolveCurrentModel:i,setSelectedModelId:a}=await e(async()=>{let{resolveModelById:e,resolveCurrentModel:t,setSelectedModelId:n}=await import(`./main-D4_0Qt4c.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])),o=e=>{let t=e.indexOf(`:`);return t>0?e.slice(t+1):e},s=e=>{try{let n=e?r(o(e)):i();t.composerMeta.toggleAttribute(`no-thinking`,n.reasoning!==!0)}catch{}};s(),t.composerMeta.addEventListener(`model-change`,e=>{let t=e.detail?.id;t&&(a(t),s(t),n.updateModel())})}async function d(t){let{refreshModels:n,applyIdentity:r,client:i}=t,{getAccounts:a,getProviderConfig:o}=await e(async()=>{let{getAccounts:e,getProviderConfig:t}=await import(`./main-D4_0Qt4c.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-MNoD_6wi.js","assets/logger-DDBAeTLF.js","assets/welcome-detection-Cr8mNEkt.js","assets/chunk-aKtaBQYM.js","assets/oauth-service-CTlktxVj.js","assets/preload-helper-zJ_50EbN.js","assets/panel-rpc-DqT2FG7c.js","assets/main-CvMPSdtI.js","assets/modulepreload-polyfill-Dezn_h7o.js","assets/account-store-CciZPZYw.js","assets/dist-CSwuvPa6.js","assets/event-stream-Cs43PhOB.js","assets/json-parse-BUunmmNl.js","assets/__vite-browser-external-C7iut881.js","assets/context-compaction-DJF_qJZJ.js","assets/src-DlEHAkLd.js","assets/bedrock-camp-D64i9rke.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{p as t}from"./main-CvMPSdtI.js";import{t as n}from"./welcome-detection-Cr8mNEkt.js";import{u as r}from"./wc-live-C9u3SoiD.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-MNoD_6wi.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),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-CTlktxVj.js`);return{createInterceptingOAuthLauncherForCurrentRuntime:e}},__vite__mapDeps([4,5,6,3])),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-CTlktxVj.js`);return{createOAuthLauncher:e}},__vite__mapDeps([4,5,6,3])),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-CvMPSdtI.js`).then(e=>e.r);return{getSelectedModelId:e,getProviderConfig:t,getProviderModels:n}},__vite__mapDeps([7,3,8,5,9,10,11,12,13,14,1,15,6,16,17,18,19])),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-CvMPSdtI.js`).then(e=>e.r),__vite__mapDeps([7,3,8,5,9,10,11,12,13,14,1,15,6,16,17,18,19])),{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)}}),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-MNoD_6wi.js","assets/logger-DDBAeTLF.js","assets/welcome-detection-Cr8mNEkt.js","assets/chunk-aKtaBQYM.js","assets/oauth-service-CTlktxVj.js","assets/preload-helper-zJ_50EbN.js","assets/panel-rpc-DqT2FG7c.js","assets/main-D4_0Qt4c.js","assets/modulepreload-polyfill-Dezn_h7o.js","assets/account-store-BsFTtkDo.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{p as t}from"./main-D4_0Qt4c.js";import{t as n}from"./welcome-detection-Cr8mNEkt.js";import{u as r}from"./wc-live-BCM49lWd.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-MNoD_6wi.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),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-CTlktxVj.js`);return{createInterceptingOAuthLauncherForCurrentRuntime:e}},__vite__mapDeps([4,5,6,3])),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-CTlktxVj.js`);return{createOAuthLauncher:e}},__vite__mapDeps([4,5,6,3])),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-D4_0Qt4c.js`).then(e=>e.r);return{getSelectedModelId:e,getProviderConfig:t,getProviderModels:n}},__vite__mapDeps([7,3,8,5,9,10,11,12,13,14,1,15,6,16,17,18,19])),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-D4_0Qt4c.js`).then(e=>e.r),__vite__mapDeps([7,3,8,5,9,10,11,12,13,14,1,15,6,16,17,18,19])),{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)}}),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-CV2IWc0g.js","assets/chunk-aKtaBQYM.js","assets/account-store-CciZPZYw.js","assets/preload-helper-zJ_50EbN.js","assets/dist-CSwuvPa6.js","assets/event-stream-Cs43PhOB.js","assets/json-parse-BUunmmNl.js","assets/__vite-browser-external-C7iut881.js","assets/context-compaction-DJF_qJZJ.js","assets/logger-DDBAeTLF.js","assets/src-DlEHAkLd.js","assets/panel-rpc-DqT2FG7c.js","assets/bedrock-camp-D64i9rke.js","assets/transform-messages-DzB_lMo-.js","assets/tool-ui-YOPqzMmL.js","assets/iconsAndAliases-Bzj1tGpU.js","assets/main-CvMPSdtI.js","assets/modulepreload-polyfill-Dezn_h7o.js","assets/clipboard-DgFtRQbq.js","assets/llm-session-id-DVmZ9C2t.js"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/quick-llm-DpbDYQvU.js","assets/chunk-aKtaBQYM.js","assets/account-store-BsFTtkDo.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/iconsAndAliases-Bzj1tGpU.js","assets/main-D4_0Qt4c.js","assets/modulepreload-polyfill-Dezn_h7o.js","assets/clipboard-DgFtRQbq.js","assets/llm-session-id-DVmZ9C2t.js"])))=>i.map(i=>d[i]);
2
2
  import{t as e}from"./preload-helper-zJ_50EbN.js";var t=400,n=800,r=`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 i(e,t){return e.length>t?`${e.slice(0,t)}…`:e}function a(e){let r=e.filter(e=>!e.isStreaming&&!e.queued&&e.source!==`lick`),a=[...r].reverse().find(e=>e.role===`assistant`),o=r.filter(e=>e.role===`user`).slice(-3);return!a||o.length===0?null:[...o.map(e=>`[user]: ${i(e.content,t)}`),`[assistant]: ${i(a.content,n)}`].join(`
3
3
 
4
- `)}async function o(t){if(t.currentValue.length>0)return;let n=a(t.messages);if(!n){t.setPlaceholder(t.defaultPlaceholder);return}let i=await(t.quickLabelFn??(await e(async()=>{let{quickLabel:e}=await import(`./quick-llm-CV2IWc0g.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:r,prompt:`Recent conversation:\n${n}`,maxTokens:40,signal:t.signal});t.signal?.aborted||t.currentValue.length>0||t.setPlaceholder(i&&i.length>0?i:t.defaultPlaceholder)}function s(e,t,n){t===n?(e.removeAttribute(`suggestion`),e.setAttribute(`placeholder`,t)):e.setAttribute(`suggestion`,t)}function c(e){let t=null;return()=>{e.inputCard.hasAttribute(`disabled`)||(t?.abort(),t=new AbortController,o({messages:e.getMessages(),currentValue:e.inputCard.value??``,setPlaceholder:t=>s(e.inputCard,t,e.defaultPlaceholder),defaultPlaceholder:e.defaultPlaceholder,signal:t.signal}).catch(()=>void 0))}}export{c as createPlaceholderRefresher};
4
+ `)}async function o(t){if(t.currentValue.length>0)return;let n=a(t.messages);if(!n){t.setPlaceholder(t.defaultPlaceholder);return}let i=await(t.quickLabelFn??(await e(async()=>{let{quickLabel:e}=await import(`./quick-llm-DpbDYQvU.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:r,prompt:`Recent conversation:\n${n}`,maxTokens:40,signal:t.signal});t.signal?.aborted||t.currentValue.length>0||t.setPlaceholder(i&&i.length>0?i:t.defaultPlaceholder)}function s(e,t,n){t===n?(e.removeAttribute(`suggestion`),e.setAttribute(`placeholder`,t)):e.setAttribute(`suggestion`,t)}function c(e){let t=null;return()=>{e.inputCard.hasAttribute(`disabled`)||(t?.abort(),t=new AbortController,o({messages:e.getMessages(),currentValue:e.inputCard.value??``,setPlaceholder:t=>s(e.inputCard,t,e.defaultPlaceholder),defaultPlaceholder:e.defaultPlaceholder,signal:t.signal}).catch(()=>void 0))}}export{c as createPlaceholderRefresher};