sliccy 5.84.0 → 5.85.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 (72) hide show
  1. package/dist/ui/assets/{account-store-DqOwEqPJ.js → account-store-Cl38jIN3.js} +1 -1
  2. package/dist/ui/assets/account-store-uZBiyCfC.js +101 -0
  3. package/dist/ui/assets/{adobe-DpUgMhMf.js → adobe-BRZiyGHt.js} +1 -1
  4. package/dist/ui/assets/{adobe-DGx3DYwC.js → adobe-CT-UsXZV.js} +1 -1
  5. package/dist/ui/assets/{apps-DVTVcvIV.js → apps-D0rkU7aR.js} +1 -1
  6. package/dist/ui/assets/{azure-openai-VvV3bfKn.js → azure-openai-CCPcd0Zz.js} +1 -1
  7. package/dist/ui/assets/{azure-openai-CvlKI0gI.js → azure-openai-Dz5p5R6j.js} +1 -1
  8. package/dist/ui/assets/{cdp-BvZO3XX0.js → cdp-BEmpfM7z.js} +3 -3
  9. package/dist/ui/assets/{cerebras-CJvtnPux.js → cerebras-B4jWV7B2.js} +1 -1
  10. package/dist/ui/assets/{cerebras-yb140WKQ.js → cerebras-b62QozG2.js} +1 -1
  11. package/dist/ui/assets/{connect-surface-DCr_sst4.js → connect-surface-BxEHN4gI.js} +1 -1
  12. package/dist/ui/assets/{fs-DHqCcha5.js → fs-C7Mt0maU.js} +2 -2
  13. package/dist/ui/assets/{fs-C3EYD3qT.js → fs-CQ25L4dA.js} +1 -1
  14. package/dist/ui/assets/{github-D03OPP_K.js → github-BYlDqXpn.js} +2 -2
  15. package/dist/ui/assets/{github-C1llen91.js → github-DahxKpAX.js} +1 -1
  16. package/dist/ui/assets/{github-copilot-5U2E9Vz_.js → github-copilot-DPE6uejC.js} +1 -1
  17. package/dist/ui/assets/{github-copilot-BOslP0sZ.js → github-copilot-kmzW6ouH.js} +1 -1
  18. package/dist/ui/assets/{kernel-worker-BNnqnIh-.js → kernel-worker-uFfrR9ir.js} +437 -434
  19. package/dist/ui/assets/{local-llm-DF_UaKBw.js → local-llm-DN1xgkKk.js} +1 -1
  20. package/dist/ui/assets/{local-llm-Dmd1MYay.js → local-llm-MsccM8G4.js} +1 -1
  21. package/dist/ui/assets/{main-OC7WLZIp.js → main-B10kZ_Ob.js} +3 -3
  22. package/dist/ui/assets/{main-cherry-CQ53lnqT.js → main-cherry-DCIO_2RP.js} +1 -1
  23. package/dist/ui/assets/{mount-BGLX5HYy.js → mount-DMj9lhpQ.js} +2 -2
  24. package/dist/ui/assets/{mount-DqW1EKLo.js → mount-DnOOuthV.js} +1 -1
  25. package/dist/ui/assets/{mount-recovery-EGuo4xHy.js → mount-recovery-C-ZLNXnx.js} +1 -1
  26. package/dist/ui/assets/{new-session-DeRaLfZJ.js → new-session-Bs_C1R2_.js} +2 -2
  27. package/dist/ui/assets/{oauth-bootstrap-BTv4hjuO.js → oauth-bootstrap-sCoftFUR.js} +2 -2
  28. package/dist/ui/assets/{openai-codex-DeSSYpyV.js → openai-codex-BatsqjVw.js} +1 -1
  29. package/dist/ui/assets/{openai-codex-0z7ugfds.js → openai-codex-DC9sfUHh.js} +1 -1
  30. package/dist/ui/assets/{openrouter-DmXu0orK.js → openrouter-D0j2IDaO.js} +1 -1
  31. package/dist/ui/assets/{openrouter-B684-YNV.js → openrouter-LemIswHz.js} +1 -1
  32. package/dist/ui/assets/{openrouter-oauth-4TQRhnJc.js → openrouter-oauth-B3f2WK2Z.js} +1 -1
  33. package/dist/ui/assets/{openrouter-oauth-B50WslGj.js → openrouter-oauth-BTRApFnw.js} +1 -1
  34. package/dist/ui/assets/{panel-rpc-handlers-89YhWuM8.js → panel-rpc-handlers-6LpO_FVl.js} +2 -2
  35. package/dist/ui/assets/{provider-Bi-hjlEX.js → provider-0VWOzm_p.js} +1 -1
  36. package/dist/ui/assets/{provider-oUC8vFQ5.js → provider-g6b9Kka8.js} +2 -2
  37. package/dist/ui/assets/{provider-settings-CzdPoa2L.js → provider-settings-5ZSUhS4X.js} +1 -1
  38. package/dist/ui/assets/{provider-settings-_PFHVGxB.js → provider-settings-CfhqyIyK.js} +1 -1
  39. package/dist/ui/assets/provider-store-access-1f-jNcnn.js +1 -0
  40. package/dist/ui/assets/{provider-store-access-BbYdUswr.js → provider-store-access-Bf-m4VVO.js} +2 -2
  41. package/dist/ui/assets/{providers-K_nrbRE6.js → providers-B4d7o0sL.js} +1 -1
  42. package/dist/ui/assets/{providers-Bq7zW4Gk.js → providers-C3QccIn1.js} +2 -2
  43. package/dist/ui/assets/{quick-llm-Dl7XIpey.js → quick-llm-BdPuR9YE.js} +1 -1
  44. package/dist/ui/assets/{session-freezer-BlEQaK0W.js → session-freezer-xprWWf7C.js} +2 -2
  45. package/dist/ui/assets/{setup-standalone-prelude-KH8G_LfB.js → setup-standalone-prelude-C8f1oX0w.js} +2 -2
  46. package/dist/ui/assets/{setup-sudo-krlb-y3i.js → setup-sudo-B9Ylt90j.js} +2 -2
  47. package/dist/ui/assets/{skills-CTb4NuXP.js → skills-BViuGAGa.js} +1 -1
  48. package/dist/ui/assets/{store--D7lWwZR.js → store-BHybUTO2.js} +1 -1
  49. package/dist/ui/assets/{sudo-QRrN7GP8.js → sudo-B_AcSXZk.js} +1 -1
  50. package/dist/ui/assets/synthetic-cdp-transport-CtfKyiws.js +1 -0
  51. package/dist/ui/assets/{upgrade-detection-e_modEZG.js → upgrade-detection-DBzqUQvq.js} +1 -1
  52. package/dist/ui/assets/{wc-extension-x68wh_S1.js → wc-extension-xlXuU7Ah.js} +2 -2
  53. package/dist/ui/assets/wc-floatbar-online-B6M0vf6K.js +5 -0
  54. package/dist/ui/assets/{wc-follower-DP6y1rn1.js → wc-follower-22gyIeMl.js} +3 -3
  55. package/dist/ui/assets/{wc-live-Ca_Pupdm.js → wc-live-Bzt-INQF.js} +3 -3
  56. package/dist/ui/assets/{wc-nav-BgXT_vJ8.js → wc-nav-B1Y-W-TA.js} +2 -2
  57. package/dist/ui/assets/{wc-onboarding-CMTrRNAb.js → wc-onboarding-C2m3Ngqf.js} +2 -2
  58. package/dist/ui/assets/{wc-placeholder-D0-hD2IZ.js → wc-placeholder-Coq_jyXk.js} +2 -2
  59. package/dist/ui/assets/{wc-settings-DUy4cLvW.js → wc-settings-fUJr1K7Q.js} +2 -2
  60. package/dist/ui/assets/{wc-shell-Fq-OIqlc.js → wc-shell-BKqeBMFY.js} +2 -2
  61. package/dist/ui/assets/{wc-sprinkles-1kb8khRN.js → wc-sprinkles-XFBEV_K6.js} +2 -2
  62. package/dist/ui/assets/wc-tray-CbpLz35a.js +2 -0
  63. package/dist/ui/assets/{xai-grok-BRS79NT7.js → xai-grok-DMMAcuyp.js} +1 -1
  64. package/dist/ui/assets/{xai-grok-CmlbtRNX.js → xai-grok-DVGV8-BT.js} +1 -1
  65. package/dist/ui/index.html +6 -6
  66. package/dist/ui/packages/webapp/index.html +6 -6
  67. package/package.json +1 -1
  68. package/dist/ui/assets/account-store-CJ9KAeuF.js +0 -101
  69. package/dist/ui/assets/provider-store-access-Dcw79llI.js +0 -1
  70. package/dist/ui/assets/synthetic-cdp-transport-DLIt5SkY.js +0 -1
  71. package/dist/ui/assets/wc-floatbar-online-0Dg_sFmu.js +0 -5
  72. package/dist/ui/assets/wc-tray-BhkmdnRe.js +0 -2
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/quick-llm-Dl7XIpey.js","assets/rolldown-runtime-aKtaBQYM.js","assets/account-store-DqOwEqPJ.js","assets/preload-helper-Czpn1I53.js","assets/compat-aVSWLlYQ.js","assets/models-Bnh9VDA1.js","assets/event-stream-qbAZIAKV.js","assets/provider-env-D37PhSJu.js","assets/__vite-browser-external-SwrSgYTf.js","assets/openrouter.models-DS1_VkCm.js","assets/context-compaction-_UkD06XB.js","assets/logger-DDBAeTLF.js","assets/src-DoFhVmQT.js","assets/proxied-fetch-CfcFb0B0.js","assets/base64-DpPqYZJF.js","assets/runtime-env-DH4NDw4t.js","assets/fetch-body-D2PwksUW.js","assets/secret-topology-Baeul5rD.js","assets/secrets-bridge-client-CLRo0NLf.js","assets/port-bridge-client-DdolH4cw.js","assets/tool-ui-DfXu6quJ.js","assets/providers-Bq7zW4Gk.js","assets/panel-rpc-DmJSNs0I.js","assets/bedrock-camp-CVignIdH.js","assets/transform-messages-wECJwtH0.js","assets/llm-session-id-bZQs6gBN.js","assets/icons-C5g936Qd.js"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/quick-llm-BdPuR9YE.js","assets/rolldown-runtime-aKtaBQYM.js","assets/account-store-Cl38jIN3.js","assets/preload-helper-Czpn1I53.js","assets/compat-aVSWLlYQ.js","assets/models-Bnh9VDA1.js","assets/event-stream-qbAZIAKV.js","assets/provider-env-D37PhSJu.js","assets/__vite-browser-external-SwrSgYTf.js","assets/openrouter.models-DS1_VkCm.js","assets/context-compaction-_UkD06XB.js","assets/logger-DDBAeTLF.js","assets/src-DoFhVmQT.js","assets/proxied-fetch-CfcFb0B0.js","assets/base64-DpPqYZJF.js","assets/runtime-env-DH4NDw4t.js","assets/fetch-body-D2PwksUW.js","assets/secret-topology-Baeul5rD.js","assets/secrets-bridge-client-CLRo0NLf.js","assets/port-bridge-client-DdolH4cw.js","assets/tool-ui-DfXu6quJ.js","assets/providers-C3QccIn1.js","assets/panel-rpc-DmJSNs0I.js","assets/bedrock-camp-CVignIdH.js","assets/transform-messages-wECJwtH0.js","assets/llm-session-id-bZQs6gBN.js","assets/icons-C5g936Qd.js"])))=>i.map(i=>d[i]);
2
2
  import{t as e}from"./preload-helper-Czpn1I53.js";import{a as t}from"./dictation-priming-DGpw1lUV.js";var n=400,r=800,i=`You suggest the user's next prompt in a coding-agent chat. Based on the recent conversation, output ONE concrete follow-up the user might type next. Reply with just the prompt text — no quotes, no preamble, no list. Max 80 characters. If nothing useful comes to mind, reply exactly: What shall we build?`;function a(e,t){return e.length>t?`${e.slice(0,t)}…`:e}function o(e){let i=e.filter(e=>!e.isStreaming&&!e.queued&&e.source!==`lick`),o=[...i].reverse().find(e=>e.role===`assistant`),s=i.filter(e=>e.role===`user`).slice(-3);return!o||s.length===0?null:[...s.map(e=>`[user]: ${a(t(e.content),n)}`),`[assistant]: ${a(o.content,r)}`].join(`
3
3
 
4
- `)}async function s(t){if(t.currentValue.length>0)return;let n=o(t.messages);if(!n){t.setPlaceholder(t.defaultPlaceholder);return}let r=await(t.quickLabelFn??(await e(async()=>{let{quickLabel:e}=await import(`./quick-llm-Dl7XIpey.js`).then(e=>e.n);return{quickLabel:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]))).quickLabel)({system:i,prompt:`Recent conversation:\n${n}`,maxTokens:40,signal:t.signal});t.signal?.aborted||t.currentValue.length>0||t.setPlaceholder(r&&r.length>0?r:t.defaultPlaceholder)}function c(e,t,n){t===n?(e.removeAttribute(`suggestion`),e.setAttribute(`placeholder`,t)):e.setAttribute(`suggestion`,t)}function l(e){let t=null;return()=>{e.inputCard.hasAttribute(`disabled`)||(t?.abort(),t=new AbortController,s({messages:e.getMessages(),currentValue:e.inputCard.value??``,setPlaceholder:t=>c(e.inputCard,t,e.defaultPlaceholder),defaultPlaceholder:e.defaultPlaceholder,signal:t.signal}).catch(()=>void 0))}}export{l as createPlaceholderRefresher};
4
+ `)}async function s(t){if(t.currentValue.length>0)return;let n=o(t.messages);if(!n){t.setPlaceholder(t.defaultPlaceholder);return}let r=await(t.quickLabelFn??(await e(async()=>{let{quickLabel:e}=await import(`./quick-llm-BdPuR9YE.js`).then(e=>e.n);return{quickLabel:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]))).quickLabel)({system:i,prompt:`Recent conversation:\n${n}`,maxTokens:40,signal:t.signal});t.signal?.aborted||t.currentValue.length>0||t.setPlaceholder(r&&r.length>0?r:t.defaultPlaceholder)}function c(e,t,n){t===n?(e.removeAttribute(`suggestion`),e.setAttribute(`placeholder`,t)):e.setAttribute(`suggestion`,t)}function l(e){let t=null;return()=>{e.inputCard.hasAttribute(`disabled`)||(t?.abort(),t=new AbortController,s({messages:e.getMessages(),currentValue:e.inputCard.value??``,setPlaceholder:t=>c(e.inputCard,t,e.defaultPlaceholder),defaultPlaceholder:e.defaultPlaceholder,signal:t.signal}).catch(()=>void 0))}}export{l as createPlaceholderRefresher};
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/oauth-service-Dk3L2UWh.js","assets/preload-helper-Czpn1I53.js","assets/proxied-fetch-CfcFb0B0.js","assets/rolldown-runtime-aKtaBQYM.js","assets/base64-DpPqYZJF.js","assets/src-DoFhVmQT.js","assets/runtime-env-DH4NDw4t.js","assets/fetch-body-D2PwksUW.js","assets/panel-rpc-DmJSNs0I.js","assets/wc-permissions-registry-Blyunq37.js","assets/provider-settings-CzdPoa2L.js","assets/account-store-DqOwEqPJ.js","assets/compat-aVSWLlYQ.js","assets/models-Bnh9VDA1.js","assets/event-stream-qbAZIAKV.js","assets/provider-env-D37PhSJu.js","assets/__vite-browser-external-SwrSgYTf.js","assets/openrouter.models-DS1_VkCm.js","assets/context-compaction-_UkD06XB.js","assets/logger-DDBAeTLF.js","assets/secret-topology-Baeul5rD.js","assets/secrets-bridge-client-CLRo0NLf.js","assets/port-bridge-client-DdolH4cw.js","assets/tool-ui-DfXu6quJ.js","assets/providers-Bq7zW4Gk.js","assets/bedrock-camp-CVignIdH.js","assets/transform-messages-wECJwtH0.js","assets/tray-runtime-config-9kTxza5l.js","assets/messages-BD4p8GuF.js","assets/tray-follower-status-5SqDRLX8.js","assets/clipboard-DuHpK59o.js","assets/telemetry-Dxrv_mDE.js","assets/tray-join-url-BIvzbiFR.js"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/oauth-service-Dk3L2UWh.js","assets/preload-helper-Czpn1I53.js","assets/proxied-fetch-CfcFb0B0.js","assets/rolldown-runtime-aKtaBQYM.js","assets/base64-DpPqYZJF.js","assets/src-DoFhVmQT.js","assets/runtime-env-DH4NDw4t.js","assets/fetch-body-D2PwksUW.js","assets/panel-rpc-DmJSNs0I.js","assets/wc-permissions-registry-Blyunq37.js","assets/provider-settings-5ZSUhS4X.js","assets/account-store-Cl38jIN3.js","assets/compat-aVSWLlYQ.js","assets/models-Bnh9VDA1.js","assets/event-stream-qbAZIAKV.js","assets/provider-env-D37PhSJu.js","assets/__vite-browser-external-SwrSgYTf.js","assets/openrouter.models-DS1_VkCm.js","assets/context-compaction-_UkD06XB.js","assets/logger-DDBAeTLF.js","assets/secret-topology-Baeul5rD.js","assets/secrets-bridge-client-CLRo0NLf.js","assets/port-bridge-client-DdolH4cw.js","assets/tool-ui-DfXu6quJ.js","assets/providers-C3QccIn1.js","assets/bedrock-camp-CVignIdH.js","assets/transform-messages-wECJwtH0.js","assets/tray-runtime-config-9kTxza5l.js","assets/messages-BD4p8GuF.js","assets/tray-follower-status-5SqDRLX8.js","assets/clipboard-DuHpK59o.js","assets/telemetry-Dxrv_mDE.js","assets/tray-join-url-BIvzbiFR.js"])))=>i.map(i=>d[i]);
2
2
  import{t as e}from"./preload-helper-Czpn1I53.js";import{a as t,c as n,d as r,f as i,i as a,l as o,m as s,o as c,s as l,t as u,u as d}from"./theme-engine-jfuTMXZM.js";import{t as f}from"./theme-C8b_iQ_9.js";import{n as p,t as m}from"./discovery-preference-C0L_79z7.js";import{i as h,n as g}from"./timestamp-preference-DgrTvVNx.js";var _={surfaces:[`--s2-gray-25`,`--s2-gray-50`,`--s2-gray-75`,`--s2-gray-100`,`--s2-gray-200`,`--s2-bg-base`,`--s2-bg-layer-1`,`--s2-bg-layer-2`,`--s2-bg-elevated`,`--s2-bg-sunken`],text:[`--s2-gray-800`,`--s2-gray-900`,`--s2-gray-1000`,`--s2-content-default`,`--s2-content-secondary`,`--s2-content-tertiary`,`--s2-content-disabled`],accents:[`--slicc-cone`,`--slicc-scoop-blue`,`--slicc-scoop-purple`,`--slicc-scoop-teal`,`--slicc-accent`,`--s2-accent`,`--s2-accent-hover`,`--s2-accent-down`],semantic:[`--s2-negative`,`--s2-positive`,`--s2-informative`,`--s2-notice`],chrome:[`--s2-border-default`,`--s2-border-subtle`,`--s2-border-focus`,`--s2-shadow-elevated`,`--s2-shadow-container`]},v=`slicc-wc-settings-style`,y=`
3
3
  /* Width is owned by the dialog card (via ::part) — a min-width on the body
4
4
  used to overflow the card's content box and clip the row borders. */
@@ -48,4 +48,4 @@ slicc-dialog.wcset-dialog::part(dialog){width:min(520px,92vw);}
48
48
  .wcset__toggle-row{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border:1px solid var(--line);border-radius:10px;background:var(--canvas);}
49
49
  .wcset__toggle-row label{font-size:13px;font-weight:500;color:var(--ink);}
50
50
  .wcset__toggle-row input[type="checkbox"]{width:16px;height:16px;accent-color:var(--ctx);}
51
- `;function b(e){if(e.getElementById(v))return;let t=e.createElement(`style`);t.id=v,t.textContent=y,e.head.appendChild(t)}function x(e,t){let n=document.createElement(`div`);return n.className=e,t!==void 0&&(n.textContent=t),n}function S(e,t,n){let r=document.createElement(`button`);return r.type=`button`,r.className=e,r.textContent=t,r.addEventListener(`click`,n),r}function C(e){return e?e.length<=8?`••••`:`${e.slice(0,4)}…${e.slice(-4)}`:``}function w(e){let t;return t=e.loggedOut?e.userName?`Logged out — was ${e.userName}`:`Logged out`:e.userName?e.userName:e.accessToken?`Logged in`:C(e.apiKey),e.baseUrl?`${t} • ${e.baseUrl}`:t}async function T(t,n,r){let{ps:i,log:a,setStatus:o,renderList:s}=r,c=i.getProviderConfig(t),l=i.getAccounts().some(e=>e.providerId===t);if(c.requiresBaseUrl){if(!n.trim()&&!i.getBaseUrlForProvider(t)){o(`Base URL is required.`,!0);return}n.trim()&&i.addAccount(t,``,n.trim())}o(`Opening login window…`);let u=()=>{o(``),s()};try{if(c.onOAuthLoginIntercepted){let{createInterceptingOAuthLauncherForCurrentRuntime:t}=await e(async()=>{let{createInterceptingOAuthLauncherForCurrentRuntime:e}=await import(`./oauth-service-Dk3L2UWh.js`);return{createInterceptingOAuthLauncherForCurrentRuntime:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9])),n=await t();if(!n)throw Error(`No controlled-browser CDP transport available — open SLICC in standalone mode or the Chrome extension.`);await c.onOAuthLoginIntercepted(n,u)}else if(c.onOAuthLogin){let{createOAuthLauncher:t}=await e(async()=>{let{createOAuthLauncher:e}=await import(`./oauth-service-Dk3L2UWh.js`);return{createOAuthLauncher:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9]));await c.onOAuthLogin(t(),u)}else throw Error(`${c.name} does not support interactive login.`)}catch(e){l||await i.removeAccount(t).catch(()=>void 0),a.error(`WC settings OAuth login failed`,{providerId:t,err:e}),o(`Login failed: ${e instanceof Error?e.message:String(e)}`,!0)}}function E(e,t,n){let{ps:r,log:i,setStatus:a,renderList:o}=n,s=x(`wcset__row`),c=x(`wcset__info`);if(c.append(x(`wcset__name`,t.name),x(`wcset__detail`,w(e))),s.append(c),t.isOAuth){let t=e.loggedOut===!0;s.append(S(`wcset__btn`,t?`Log in`:`Log out`,()=>{t?T(e.providerId,``,n):r.logoutOAuthAccount(e.providerId).then(o).catch(t=>{i.error(`WC settings logout failed`,{providerId:e.providerId,err:t}),a(`Logout failed.`,!0)})}))}return s.append(S(`wcset__btn wcset__btn--danger`,`Remove`,()=>{r.removeAccount(e.providerId).then(o).catch(t=>{i.error(`WC settings remove failed`,{providerId:e.providerId,err:t}),a(`Remove failed.`,!0)})})),s}function D(e){let{ps:t,setStatus:n}=e,r=x(`wcset__add`);r.append(x(`wcset__label`,`Add account`));let i=document.createElement(`select`);i.className=`wcset__select`;let a=document.createElement(`option`);a.value=``,a.textContent=`Choose a provider…`,i.append(a);let o=new Set(t.getAccounts().map(e=>e.providerId)),s=t.getAvailableProviders().filter(e=>!o.has(e)&&t.providerOffersLlmModels(e)).sort((e,n)=>t.getProviderConfig(e).name.localeCompare(t.getProviderConfig(n).name));for(let e of s){let n=document.createElement(`option`);n.value=e,n.textContent=t.getProviderConfig(e).name,i.append(n)}r.append(i);let c=x(`wcset__controls`);return c.style.cssText=`display:flex;flex-direction:column;gap:8px;`,r.append(c),i.addEventListener(`change`,()=>{c.replaceChildren(),n(``);let r=i.value;if(!r)return;let a=t.getProviderConfig(r),o=document.createElement(`input`);if(o.className=`wcset__input`,o.placeholder=a.baseUrlPlaceholder??`Base URL`,o.value=t.getBaseUrlForProvider(r)??``,a.requiresBaseUrl&&c.append(o),a.isOAuth){c.append(S(`wcset__btn wcset__btn--primary`,`Login with ${a.name}`,()=>{T(r,o.value,e)}));return}let s=document.createElement(`input`);s.className=`wcset__input`,s.placeholder=a.deploymentPlaceholder??`Model IDs (comma-separated)`,s.value=t.getDeploymentForProvider(r)??``,a.requiresDeployment&&c.append(s);let l=document.createElement(`input`);l.className=`wcset__input`,l.type=`password`,l.placeholder=a.apiKeyPlaceholder??`API key`,l.setAttribute(`data-testid`,`wcset-api-key`),(a.requiresApiKey||a.optionalApiKey)&&c.append(l),c.append(S(`wcset__btn wcset__btn--primary`,`Save`,()=>{let i=l.value.trim();if(a.requiresApiKey&&!i){n(`An API key is required.`,!0),l.focus();return}if(a.requiresBaseUrl&&!o.value.trim()){n(`Base URL is required.`,!0),o.focus();return}if(a.requiresDeployment&&!s.value.trim()){n(`Model IDs are required.`,!0),s.focus();return}t.addAccount(r,i,o.value.trim()||void 0,s.value.trim()||void 0),l.value=``,n(`${a.name} connected.`),e.renderList()}))}),r}function O(){let e=x(`wcset__add`);e.append(x(`wcset__section-label`,`Chat`));let t=x(`wcset__toggle-row`),n=document.createElement(`label`);n.textContent=`Show timestamps`;let r=document.createElement(`input`);return r.type=`checkbox`,r.checked=g(),r.addEventListener(`change`,()=>h(r.checked)),t.append(n,r),e.append(t),e}function k(){let e=x(`wcset__add`);e.append(x(`wcset__section-label`,`Browsing`));let t=x(`wcset__toggle-row`),n=document.createElement(`label`);n.textContent=`Autodiscover agentic resources`;let r=document.createElement(`input`);return r.type=`checkbox`,r.checked=m(),r.addEventListener(`change`,()=>p(r.checked)),t.append(n,r),e.append(t),e}function A(e){let c=x(`wcset__appearance`);c.append(x(`wcset__section-label`,`Appearance`));let u=n(),p=x(`wcset__preset-grid`),m=document.createElement(`div`);m.className=`wcset__preset-swatch${u?``:` wcset__preset-swatch--active`}`,m.innerHTML=[`#161618`,`#1f1f22`,`#f59e0b`].map(e=>`<div class="wcset__preset-swatch__stripe" style="background:${e}"></div>`).join(``)+`<div class="wcset__preset-name">Default</div>`,m.addEventListener(`click`,()=>{a(),f(),v()}),p.append(m);for(let e of s){let t=document.createElement(`div`);t.className=`wcset__preset-swatch${u===e.id?` wcset__preset-swatch--active`:``}`,t.innerHTML=`<div class="wcset__preset-swatch__stripe" style="background:${e.tokens[`--s2-gray-25`]||`#1a1a1a`}"></div><div class="wcset__preset-swatch__stripe" style="background:${e.tokens[`--s2-gray-100`]||`#2c2c2c`}"></div><div class="wcset__preset-swatch__stripe" style="background:${e.tokens[`--s2-accent`]||`#3562ff`}"></div><div class="wcset__preset-name">${e.name}</div>`,t.addEventListener(`click`,()=>{i(e.id),f(),v()}),p.append(t)}c.append(p);let h=o().filter(e=>e.id!==`__preview`);if(h.length>0){let e=x(`wcset__custom-themes`);e.append(x(`wcset__section-label`,`My Themes`));for(let n of h){let r=x(`wcset__custom-row`),a=x(`wcset__custom-row__name`,n.name);u===n.id&&(a.style.fontWeight=`700`),r.append(a),r.append(S(`wcset__btn`,`Use`,()=>{i(n.id),f(),v()})),r.append(S(`wcset__btn`,`Edit`,()=>{y(n)})),r.append(S(`wcset__btn`,`Export`,()=>{let e=new Blob([l(n)],{type:`application/json`}),t=URL.createObjectURL(e),r=document.createElement(`a`);r.href=t,r.download=`${n.name.toLowerCase().replace(/\s+/g,`-`)}.slicc-theme.json`,r.click(),URL.revokeObjectURL(t)})),r.append(S(`wcset__btn wcset__btn--danger`,`×`,()=>{t(n.id),f(),v()})),e.append(r)}c.append(e)}let g=x(``);g.style.cssText=`display:flex;gap:8px;`,g.append(S(`wcset__btn wcset__btn--primary`,`+ Create Custom Theme`,()=>{y(null)})),g.append(S(`wcset__btn`,`Import Theme…`,()=>{let t=document.createElement(`input`);t.type=`file`,t.accept=`.json`,t.addEventListener(`change`,()=>{let n=t.files?.[0];n&&n.text().then(t=>{try{let n=d(t);r(n),e.setStatus(`Imported "${n.name}".`),v()}catch(t){e.setStatus(`Import failed: ${t instanceof Error?t.message:String(t)}`,!0)}})}),t.click()})),c.append(g);let _=x(``);c.append(_);function v(){let t=c.parentElement;if(!t)return;let n=A(e);t.replaceChild(n,c)}function y(t){_.replaceChildren(L(t,e,v))}return c}function j(e,t,n,r){let i=[],a=c(e,t);for(let[e,t]of Object.entries(_)){i.push(x(`wcset__section-label`,e));let o=x(`wcset__advanced-grid`);for(let e of t){let t=x(`wcset__advanced-token`),i=document.createElement(`input`);i.type=`color`;let s=n[e]||a[e]||`#000000`;i.value=s.startsWith(`#`)?s:`#000000`,i.addEventListener(`input`,()=>{n[e]=i.value,r()});let c=document.createElement(`span`);c.textContent=e.replace(`--s2-`,``).replace(`--slicc-`,``),t.append(i,c),o.append(t)}i.push(o)}return i}function M(e,t,n,r,i){let a=[];for(let[r,o]of[[`background`,`Background`],[`text`,`Text`],[`accent`,`Links & buttons`]]){let s=x(`wcset__builder-row`),c=document.createElement(`label`);c.textContent=o;let l=document.createElement(`input`);l.type=`color`,l.value=e[r],l.addEventListener(`input`,()=>{e[r]=l.value,i()});let u=document.createElement(`input`);if(u.type=`range`,u.min=`0`,u.max=`100`,u.value=String(Math.round((t[r]??1)*100)),u.style.cssText=`width:60px;margin-left:6px;`,u.title=`Opacity`,u.addEventListener(`input`,()=>{t[r]=Number(u.value)/100,i()}),s.append(c,l,u),r===`background`){let e=document.createElement(`input`);e.type=`checkbox`,e.checked=n.disabled,e.style.cssText=`width:auto;margin:0 0 0 8px;`,e.title=`Hide animated background`,e.addEventListener(`change`,()=>{n.disabled=e.checked,i()});let t=document.createElement(`span`);t.textContent=`Static`,t.style.cssText=`font-size:10px;color:var(--txt-3);`,s.append(e,t)}a.push(s)}a.push(x(`wcset__section-label`,`Components`));for(let[e,t]of[[`bubbleBg`,`User bubble bg`],[`bubbleText`,`User bubble text`],[`navBg`,`Nav bar`],[`composerBg`,`Input box`]]){let n=x(`wcset__builder-row`),o=document.createElement(`label`);o.textContent=t;let s=document.createElement(`input`);s.type=`color`,s.value=r[e]||`#000000`,s.addEventListener(`input`,()=>{r[e]=s.value,i()}),n.append(o,s),a.push(n)}return a}function N(e,t){let n=x(`wcset__builder-row`),r=document.createElement(`label`);r.textContent=`Base`;let i=x(`wcset__base-toggle`);for(let n of[`dark`,`light`]){let r=document.createElement(`button`);r.textContent=n.charAt(0).toUpperCase()+n.slice(1),r.className=e===n?`active`:``,r.addEventListener(`click`,()=>t(n)),i.append(r)}return n.append(r,i),n}function P(e,t){let n=x(``);return n.style.cssText=`display:flex;gap:8px;margin-top:8px;`,n.append(S(`wcset__btn wcset__btn--primary`,`Save`,e)),n.append(S(`wcset__btn`,`Cancel`,t)),n}function F(e){return{userBubble:{background:e.bubbleBg,text:e.bubbleText},nav:{background:e.navBg},composer:{background:e.composerBg}}}function I(e,t){let n=t===`dark`;return{bubbleBg:e?.components?.userBubble?.background||(n?`#f5f5f2`:`#0a0a0a`),bubbleText:e?.components?.userBubble?.text||(n?`#0a0a0a`:`#ffffff`),navBg:e?.components?.nav?.background||(n?`#161618`:`#ffffff`),composerBg:e?.components?.composer?.background||(n?`#161618`:`#ffffff`)}}function L(e,n,o){let s=x(`wcset__builder`),l=e?.base??`dark`,d=e?.disableShader??!1,p=!1,m={background:e?.tokens[`--s2-gray-25`]||(l===`dark`?`#1a1a1a`:`#ffffff`),surface:``,text:e?.tokens[`--s2-content-default`]||e?.tokens[`--s2-gray-900`]||(l===`dark`?`#e8e8e8`:`#131313`),accent:e?.tokens[`--s2-accent`]||`#3562ff`,border:``,success:`#2d9d78`,error:`#e34850`},h={background:1,text:1,accent:1},g=I(e,l),_={},v=document.createElement(`input`);v.className=`wcset__input`,v.placeholder=`Theme name`,v.value=e?.name??``;function y(){return v.value.toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-|-$/g,``)||`custom-${Date.now()}`}function b(){let e=l===`dark`;m.surface=u(m.background,e?.1:-.08),m.border=u(m.background,e?.15:-.12),m.success=`#2d9d78`,m.error=`#e34850`}function S(){b();let e={...c(m,l),..._};for(let[t,n]of Object.entries(h))if(n<1&&m[t]){let r=m[t],i=Math.round(n*255).toString(16).padStart(2,`0`);for(let n of{background:[`--canvas`,`--s2-gray-25`,`--s2-bg-base`,`--shaderbg`],text:[`--ink`,`--s2-content-default`,`--s2-gray-900`],accent:[`--ctx`,`--waffle`,`--s2-accent`]}[t]||[])e[n]&&(e[n]=`${r}${i}`)}r({id:`__preview`,name:`Preview`,base:l,tokens:e,disableShader:d,components:F(g)}),i(`__preview`),f()}function C(){s.replaceChildren();let u=x(`wcset__builder-row`),w=document.createElement(`label`);w.textContent=`Name`,u.append(w,v),s.append(u),s.append(N(l,e=>{l=e,C(),S()}));let T={disabled:d};for(let e of M(m,h,T,g,()=>{d=T.disabled,S()}))s.append(e);let E=document.createElement(`button`);if(E.className=`wcset__advanced-toggle`,E.textContent=p?`Hide advanced`:`Show advanced`,E.addEventListener(`click`,()=>{p=!p,C()}),s.append(E),p)for(let e of j(m,l,_,S))s.append(e);s.append(P(()=>{let a=v.value.trim();if(!a){n.setStatus(`Name is required.`,!0);return}b();let s={...c(m,l),..._},u=e?.id??y(),p={id:u,name:a,base:l,tokens:s,disableShader:d,components:F(g)};t(`__preview`),r(p),i(u),f(),n.setStatus(`Saved "${a}".`),o()},()=>{t(`__preview`),e?i(e.id):a(),f(),o()}))}return C(),S(),s}async function R(t){let n=await e(()=>import(`./provider-settings-CzdPoa2L.js`).then(e=>e.t),__vite__mapDeps([10,3,11,1,12,13,14,15,16,17,18,19,5,2,4,6,7,20,21,22,23,24,8,25,26,27,28,29,30,31,32]));b(document);let r=JSON.stringify(n.getAccounts());return new Promise(e=>{let i=document.createElement(`slicc-dialog`);i.classList.add(`wcset-dialog`),i.setAttribute(`heading`,`Accounts`);let a=x(`wcset`),o=x(`wcset__list`),s=x(`wcset__status`),c=(e,t=!1)=>{s.textContent=e,s.toggleAttribute(`data-error`,t)},l=r,u=()=>{let e=JSON.stringify(n.getAccounts());e!==l&&(l=e,window.dispatchEvent(new CustomEvent(`slicc:accounts-changed`)))},d=x(``),f={ps:n,log:t,setStatus:c,renderList:()=>{u(),o.replaceChildren();let e=n.getAccounts();if(e.length===0)o.append(x(`wcset__empty`,`No accounts configured.`));else for(let t of e)o.append(E(t,n.getProviderConfig(t.providerId),f));d.replaceChildren(D(f))}};f.renderList(),a.append(o,d,s),i.append(a);let p=S(`wcset__btn wcset__btn--primary`,`Done`,()=>{i.hide?.()});p.setAttribute(`slot`,`footer`),i.append(p),i.addEventListener(`slicc-dialog-close`,()=>{i.remove(),e(JSON.stringify(n.getAccounts())!==r)}),document.body.append(i),i.show?.()})}async function z(e){return b(document),t(`__preview`),new Promise(r=>{let o=document.createElement(`slicc-dialog`);o.classList.add(`wcset-dialog`),o.setAttribute(`heading`,`Theme`);let s=x(`wcset`),c=x(`wcset__status`),l=A({ps:null,log:e,setStatus:(e,t=!1)=>{c.textContent=e,c.toggleAttribute(`data-error`,t)},renderList:()=>{}}),u=O(),d=k();s.append(l,u,d,c),o.append(s);let p=S(`wcset__btn wcset__btn--primary`,`Done`,()=>{o.hide?.()});p.setAttribute(`slot`,`footer`),o.append(p);let m=n();o.addEventListener(`slicc-dialog-close`,()=>{n()===`__preview`&&(t(`__preview`),m&&m!==`__preview`?i(m):a(),f()),o.remove(),r()}),document.body.append(o),o.show?.()})}export{z as showThemeSettings,R as showWcSettings};
51
+ `;function b(e){if(e.getElementById(v))return;let t=e.createElement(`style`);t.id=v,t.textContent=y,e.head.appendChild(t)}function x(e,t){let n=document.createElement(`div`);return n.className=e,t!==void 0&&(n.textContent=t),n}function S(e,t,n){let r=document.createElement(`button`);return r.type=`button`,r.className=e,r.textContent=t,r.addEventListener(`click`,n),r}function C(e){return e?e.length<=8?`••••`:`${e.slice(0,4)}…${e.slice(-4)}`:``}function w(e){let t;return t=e.loggedOut?e.userName?`Logged out — was ${e.userName}`:`Logged out`:e.userName?e.userName:e.accessToken?`Logged in`:C(e.apiKey),e.baseUrl?`${t} • ${e.baseUrl}`:t}async function T(t,n,r){let{ps:i,log:a,setStatus:o,renderList:s}=r,c=i.getProviderConfig(t),l=i.getAccounts().some(e=>e.providerId===t);if(c.requiresBaseUrl){if(!n.trim()&&!i.getBaseUrlForProvider(t)){o(`Base URL is required.`,!0);return}n.trim()&&i.addAccount(t,``,n.trim())}o(`Opening login window…`);let u=()=>{o(``),s()};try{if(c.onOAuthLoginIntercepted){let{createInterceptingOAuthLauncherForCurrentRuntime:t}=await e(async()=>{let{createInterceptingOAuthLauncherForCurrentRuntime:e}=await import(`./oauth-service-Dk3L2UWh.js`);return{createInterceptingOAuthLauncherForCurrentRuntime:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9])),n=await t();if(!n)throw Error(`No controlled-browser CDP transport available — open SLICC in standalone mode or the Chrome extension.`);await c.onOAuthLoginIntercepted(n,u)}else if(c.onOAuthLogin){let{createOAuthLauncher:t}=await e(async()=>{let{createOAuthLauncher:e}=await import(`./oauth-service-Dk3L2UWh.js`);return{createOAuthLauncher:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9]));await c.onOAuthLogin(t(),u)}else throw Error(`${c.name} does not support interactive login.`)}catch(e){l||await i.removeAccount(t).catch(()=>void 0),a.error(`WC settings OAuth login failed`,{providerId:t,err:e}),o(`Login failed: ${e instanceof Error?e.message:String(e)}`,!0)}}function E(e,t,n){let{ps:r,log:i,setStatus:a,renderList:o}=n,s=x(`wcset__row`),c=x(`wcset__info`);if(c.append(x(`wcset__name`,t.name),x(`wcset__detail`,w(e))),s.append(c),t.isOAuth){let t=e.loggedOut===!0;s.append(S(`wcset__btn`,t?`Log in`:`Log out`,()=>{t?T(e.providerId,``,n):r.logoutOAuthAccount(e.providerId).then(o).catch(t=>{i.error(`WC settings logout failed`,{providerId:e.providerId,err:t}),a(`Logout failed.`,!0)})}))}return s.append(S(`wcset__btn wcset__btn--danger`,`Remove`,()=>{r.removeAccount(e.providerId).then(o).catch(t=>{i.error(`WC settings remove failed`,{providerId:e.providerId,err:t}),a(`Remove failed.`,!0)})})),s}function D(e){let{ps:t,setStatus:n}=e,r=x(`wcset__add`);r.append(x(`wcset__label`,`Add account`));let i=document.createElement(`select`);i.className=`wcset__select`;let a=document.createElement(`option`);a.value=``,a.textContent=`Choose a provider…`,i.append(a);let o=new Set(t.getAccounts().map(e=>e.providerId)),s=t.getAvailableProviders().filter(e=>!o.has(e)&&t.providerOffersLlmModels(e)).sort((e,n)=>t.getProviderConfig(e).name.localeCompare(t.getProviderConfig(n).name));for(let e of s){let n=document.createElement(`option`);n.value=e,n.textContent=t.getProviderConfig(e).name,i.append(n)}r.append(i);let c=x(`wcset__controls`);return c.style.cssText=`display:flex;flex-direction:column;gap:8px;`,r.append(c),i.addEventListener(`change`,()=>{c.replaceChildren(),n(``);let r=i.value;if(!r)return;let a=t.getProviderConfig(r),o=document.createElement(`input`);if(o.className=`wcset__input`,o.placeholder=a.baseUrlPlaceholder??`Base URL`,o.value=t.getBaseUrlForProvider(r)??``,a.requiresBaseUrl&&c.append(o),a.isOAuth){c.append(S(`wcset__btn wcset__btn--primary`,`Login with ${a.name}`,()=>{T(r,o.value,e)}));return}let s=document.createElement(`input`);s.className=`wcset__input`,s.placeholder=a.deploymentPlaceholder??`Model IDs (comma-separated)`,s.value=t.getDeploymentForProvider(r)??``,a.requiresDeployment&&c.append(s);let l=document.createElement(`input`);l.className=`wcset__input`,l.type=`password`,l.placeholder=a.apiKeyPlaceholder??`API key`,l.setAttribute(`data-testid`,`wcset-api-key`),(a.requiresApiKey||a.optionalApiKey)&&c.append(l),c.append(S(`wcset__btn wcset__btn--primary`,`Save`,()=>{let i=l.value.trim();if(a.requiresApiKey&&!i){n(`An API key is required.`,!0),l.focus();return}if(a.requiresBaseUrl&&!o.value.trim()){n(`Base URL is required.`,!0),o.focus();return}if(a.requiresDeployment&&!s.value.trim()){n(`Model IDs are required.`,!0),s.focus();return}t.addAccount(r,i,o.value.trim()||void 0,s.value.trim()||void 0),l.value=``,n(`${a.name} connected.`),e.renderList()}))}),r}function O(){let e=x(`wcset__add`);e.append(x(`wcset__section-label`,`Chat`));let t=x(`wcset__toggle-row`),n=document.createElement(`label`);n.textContent=`Show timestamps`;let r=document.createElement(`input`);return r.type=`checkbox`,r.checked=g(),r.addEventListener(`change`,()=>h(r.checked)),t.append(n,r),e.append(t),e}function k(){let e=x(`wcset__add`);e.append(x(`wcset__section-label`,`Browsing`));let t=x(`wcset__toggle-row`),n=document.createElement(`label`);n.textContent=`Autodiscover agentic resources`;let r=document.createElement(`input`);return r.type=`checkbox`,r.checked=m(),r.addEventListener(`change`,()=>p(r.checked)),t.append(n,r),e.append(t),e}function A(e){let c=x(`wcset__appearance`);c.append(x(`wcset__section-label`,`Appearance`));let u=n(),p=x(`wcset__preset-grid`),m=document.createElement(`div`);m.className=`wcset__preset-swatch${u?``:` wcset__preset-swatch--active`}`,m.innerHTML=[`#161618`,`#1f1f22`,`#f59e0b`].map(e=>`<div class="wcset__preset-swatch__stripe" style="background:${e}"></div>`).join(``)+`<div class="wcset__preset-name">Default</div>`,m.addEventListener(`click`,()=>{a(),f(),v()}),p.append(m);for(let e of s){let t=document.createElement(`div`);t.className=`wcset__preset-swatch${u===e.id?` wcset__preset-swatch--active`:``}`,t.innerHTML=`<div class="wcset__preset-swatch__stripe" style="background:${e.tokens[`--s2-gray-25`]||`#1a1a1a`}"></div><div class="wcset__preset-swatch__stripe" style="background:${e.tokens[`--s2-gray-100`]||`#2c2c2c`}"></div><div class="wcset__preset-swatch__stripe" style="background:${e.tokens[`--s2-accent`]||`#3562ff`}"></div><div class="wcset__preset-name">${e.name}</div>`,t.addEventListener(`click`,()=>{i(e.id),f(),v()}),p.append(t)}c.append(p);let h=o().filter(e=>e.id!==`__preview`);if(h.length>0){let e=x(`wcset__custom-themes`);e.append(x(`wcset__section-label`,`My Themes`));for(let n of h){let r=x(`wcset__custom-row`),a=x(`wcset__custom-row__name`,n.name);u===n.id&&(a.style.fontWeight=`700`),r.append(a),r.append(S(`wcset__btn`,`Use`,()=>{i(n.id),f(),v()})),r.append(S(`wcset__btn`,`Edit`,()=>{y(n)})),r.append(S(`wcset__btn`,`Export`,()=>{let e=new Blob([l(n)],{type:`application/json`}),t=URL.createObjectURL(e),r=document.createElement(`a`);r.href=t,r.download=`${n.name.toLowerCase().replace(/\s+/g,`-`)}.slicc-theme.json`,r.click(),URL.revokeObjectURL(t)})),r.append(S(`wcset__btn wcset__btn--danger`,`×`,()=>{t(n.id),f(),v()})),e.append(r)}c.append(e)}let g=x(``);g.style.cssText=`display:flex;gap:8px;`,g.append(S(`wcset__btn wcset__btn--primary`,`+ Create Custom Theme`,()=>{y(null)})),g.append(S(`wcset__btn`,`Import Theme…`,()=>{let t=document.createElement(`input`);t.type=`file`,t.accept=`.json`,t.addEventListener(`change`,()=>{let n=t.files?.[0];n&&n.text().then(t=>{try{let n=d(t);r(n),e.setStatus(`Imported "${n.name}".`),v()}catch(t){e.setStatus(`Import failed: ${t instanceof Error?t.message:String(t)}`,!0)}})}),t.click()})),c.append(g);let _=x(``);c.append(_);function v(){let t=c.parentElement;if(!t)return;let n=A(e);t.replaceChild(n,c)}function y(t){_.replaceChildren(L(t,e,v))}return c}function j(e,t,n,r){let i=[],a=c(e,t);for(let[e,t]of Object.entries(_)){i.push(x(`wcset__section-label`,e));let o=x(`wcset__advanced-grid`);for(let e of t){let t=x(`wcset__advanced-token`),i=document.createElement(`input`);i.type=`color`;let s=n[e]||a[e]||`#000000`;i.value=s.startsWith(`#`)?s:`#000000`,i.addEventListener(`input`,()=>{n[e]=i.value,r()});let c=document.createElement(`span`);c.textContent=e.replace(`--s2-`,``).replace(`--slicc-`,``),t.append(i,c),o.append(t)}i.push(o)}return i}function M(e,t,n,r,i){let a=[];for(let[r,o]of[[`background`,`Background`],[`text`,`Text`],[`accent`,`Links & buttons`]]){let s=x(`wcset__builder-row`),c=document.createElement(`label`);c.textContent=o;let l=document.createElement(`input`);l.type=`color`,l.value=e[r],l.addEventListener(`input`,()=>{e[r]=l.value,i()});let u=document.createElement(`input`);if(u.type=`range`,u.min=`0`,u.max=`100`,u.value=String(Math.round((t[r]??1)*100)),u.style.cssText=`width:60px;margin-left:6px;`,u.title=`Opacity`,u.addEventListener(`input`,()=>{t[r]=Number(u.value)/100,i()}),s.append(c,l,u),r===`background`){let e=document.createElement(`input`);e.type=`checkbox`,e.checked=n.disabled,e.style.cssText=`width:auto;margin:0 0 0 8px;`,e.title=`Hide animated background`,e.addEventListener(`change`,()=>{n.disabled=e.checked,i()});let t=document.createElement(`span`);t.textContent=`Static`,t.style.cssText=`font-size:10px;color:var(--txt-3);`,s.append(e,t)}a.push(s)}a.push(x(`wcset__section-label`,`Components`));for(let[e,t]of[[`bubbleBg`,`User bubble bg`],[`bubbleText`,`User bubble text`],[`navBg`,`Nav bar`],[`composerBg`,`Input box`]]){let n=x(`wcset__builder-row`),o=document.createElement(`label`);o.textContent=t;let s=document.createElement(`input`);s.type=`color`,s.value=r[e]||`#000000`,s.addEventListener(`input`,()=>{r[e]=s.value,i()}),n.append(o,s),a.push(n)}return a}function N(e,t){let n=x(`wcset__builder-row`),r=document.createElement(`label`);r.textContent=`Base`;let i=x(`wcset__base-toggle`);for(let n of[`dark`,`light`]){let r=document.createElement(`button`);r.textContent=n.charAt(0).toUpperCase()+n.slice(1),r.className=e===n?`active`:``,r.addEventListener(`click`,()=>t(n)),i.append(r)}return n.append(r,i),n}function P(e,t){let n=x(``);return n.style.cssText=`display:flex;gap:8px;margin-top:8px;`,n.append(S(`wcset__btn wcset__btn--primary`,`Save`,e)),n.append(S(`wcset__btn`,`Cancel`,t)),n}function F(e){return{userBubble:{background:e.bubbleBg,text:e.bubbleText},nav:{background:e.navBg},composer:{background:e.composerBg}}}function I(e,t){let n=t===`dark`;return{bubbleBg:e?.components?.userBubble?.background||(n?`#f5f5f2`:`#0a0a0a`),bubbleText:e?.components?.userBubble?.text||(n?`#0a0a0a`:`#ffffff`),navBg:e?.components?.nav?.background||(n?`#161618`:`#ffffff`),composerBg:e?.components?.composer?.background||(n?`#161618`:`#ffffff`)}}function L(e,n,o){let s=x(`wcset__builder`),l=e?.base??`dark`,d=e?.disableShader??!1,p=!1,m={background:e?.tokens[`--s2-gray-25`]||(l===`dark`?`#1a1a1a`:`#ffffff`),surface:``,text:e?.tokens[`--s2-content-default`]||e?.tokens[`--s2-gray-900`]||(l===`dark`?`#e8e8e8`:`#131313`),accent:e?.tokens[`--s2-accent`]||`#3562ff`,border:``,success:`#2d9d78`,error:`#e34850`},h={background:1,text:1,accent:1},g=I(e,l),_={},v=document.createElement(`input`);v.className=`wcset__input`,v.placeholder=`Theme name`,v.value=e?.name??``;function y(){return v.value.toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-|-$/g,``)||`custom-${Date.now()}`}function b(){let e=l===`dark`;m.surface=u(m.background,e?.1:-.08),m.border=u(m.background,e?.15:-.12),m.success=`#2d9d78`,m.error=`#e34850`}function S(){b();let e={...c(m,l),..._};for(let[t,n]of Object.entries(h))if(n<1&&m[t]){let r=m[t],i=Math.round(n*255).toString(16).padStart(2,`0`);for(let n of{background:[`--canvas`,`--s2-gray-25`,`--s2-bg-base`,`--shaderbg`],text:[`--ink`,`--s2-content-default`,`--s2-gray-900`],accent:[`--ctx`,`--waffle`,`--s2-accent`]}[t]||[])e[n]&&(e[n]=`${r}${i}`)}r({id:`__preview`,name:`Preview`,base:l,tokens:e,disableShader:d,components:F(g)}),i(`__preview`),f()}function C(){s.replaceChildren();let u=x(`wcset__builder-row`),w=document.createElement(`label`);w.textContent=`Name`,u.append(w,v),s.append(u),s.append(N(l,e=>{l=e,C(),S()}));let T={disabled:d};for(let e of M(m,h,T,g,()=>{d=T.disabled,S()}))s.append(e);let E=document.createElement(`button`);if(E.className=`wcset__advanced-toggle`,E.textContent=p?`Hide advanced`:`Show advanced`,E.addEventListener(`click`,()=>{p=!p,C()}),s.append(E),p)for(let e of j(m,l,_,S))s.append(e);s.append(P(()=>{let a=v.value.trim();if(!a){n.setStatus(`Name is required.`,!0);return}b();let s={...c(m,l),..._},u=e?.id??y(),p={id:u,name:a,base:l,tokens:s,disableShader:d,components:F(g)};t(`__preview`),r(p),i(u),f(),n.setStatus(`Saved "${a}".`),o()},()=>{t(`__preview`),e?i(e.id):a(),f(),o()}))}return C(),S(),s}async function R(t){let n=await e(()=>import(`./provider-settings-5ZSUhS4X.js`).then(e=>e.t),__vite__mapDeps([10,3,11,1,12,13,14,15,16,17,18,19,5,2,4,6,7,20,21,22,23,24,8,25,26,27,28,29,30,31,32]));b(document);let r=JSON.stringify(n.getAccounts());return new Promise(e=>{let i=document.createElement(`slicc-dialog`);i.classList.add(`wcset-dialog`),i.setAttribute(`heading`,`Accounts`);let a=x(`wcset`),o=x(`wcset__list`),s=x(`wcset__status`),c=(e,t=!1)=>{s.textContent=e,s.toggleAttribute(`data-error`,t)},l=r,u=()=>{let e=JSON.stringify(n.getAccounts());e!==l&&(l=e,window.dispatchEvent(new CustomEvent(`slicc:accounts-changed`)))},d=x(``),f={ps:n,log:t,setStatus:c,renderList:()=>{u(),o.replaceChildren();let e=n.getAccounts();if(e.length===0)o.append(x(`wcset__empty`,`No accounts configured.`));else for(let t of e)o.append(E(t,n.getProviderConfig(t.providerId),f));d.replaceChildren(D(f))}};f.renderList(),a.append(o,d,s),i.append(a);let p=S(`wcset__btn wcset__btn--primary`,`Done`,()=>{i.hide?.()});p.setAttribute(`slot`,`footer`),i.append(p),i.addEventListener(`slicc-dialog-close`,()=>{i.remove(),e(JSON.stringify(n.getAccounts())!==r)}),document.body.append(i),i.show?.()})}async function z(e){return b(document),t(`__preview`),new Promise(r=>{let o=document.createElement(`slicc-dialog`);o.classList.add(`wcset-dialog`),o.setAttribute(`heading`,`Theme`);let s=x(`wcset`),c=x(`wcset__status`),l=A({ps:null,log:e,setStatus:(e,t=!1)=>{c.textContent=e,c.toggleAttribute(`data-error`,t)},renderList:()=>{}}),u=O(),d=k();s.append(l,u,d,c),o.append(s);let p=S(`wcset__btn wcset__btn--primary`,`Done`,()=>{o.hide?.()});p.setAttribute(`slot`,`footer`),o.append(p);let m=n();o.addEventListener(`slicc-dialog-close`,()=>{n()===`__preview`&&(t(`__preview`),m&&m!==`__preview`?i(m):a(),f()),o.remove(),r()}),document.body.append(o),o.show?.()})}export{z as showThemeSettings,R as showWcSettings};
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/quick-llm-Dl7XIpey.js","assets/rolldown-runtime-aKtaBQYM.js","assets/account-store-DqOwEqPJ.js","assets/preload-helper-Czpn1I53.js","assets/compat-aVSWLlYQ.js","assets/models-Bnh9VDA1.js","assets/event-stream-qbAZIAKV.js","assets/provider-env-D37PhSJu.js","assets/__vite-browser-external-SwrSgYTf.js","assets/openrouter.models-DS1_VkCm.js","assets/context-compaction-_UkD06XB.js","assets/logger-DDBAeTLF.js","assets/src-DoFhVmQT.js","assets/proxied-fetch-CfcFb0B0.js","assets/base64-DpPqYZJF.js","assets/runtime-env-DH4NDw4t.js","assets/fetch-body-D2PwksUW.js","assets/secret-topology-Baeul5rD.js","assets/secrets-bridge-client-CLRo0NLf.js","assets/port-bridge-client-DdolH4cw.js","assets/tool-ui-DfXu6quJ.js","assets/providers-Bq7zW4Gk.js","assets/panel-rpc-DmJSNs0I.js","assets/bedrock-camp-CVignIdH.js","assets/transform-messages-wECJwtH0.js","assets/llm-session-id-bZQs6gBN.js","assets/icons-C5g936Qd.js"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/quick-llm-BdPuR9YE.js","assets/rolldown-runtime-aKtaBQYM.js","assets/account-store-Cl38jIN3.js","assets/preload-helper-Czpn1I53.js","assets/compat-aVSWLlYQ.js","assets/models-Bnh9VDA1.js","assets/event-stream-qbAZIAKV.js","assets/provider-env-D37PhSJu.js","assets/__vite-browser-external-SwrSgYTf.js","assets/openrouter.models-DS1_VkCm.js","assets/context-compaction-_UkD06XB.js","assets/logger-DDBAeTLF.js","assets/src-DoFhVmQT.js","assets/proxied-fetch-CfcFb0B0.js","assets/base64-DpPqYZJF.js","assets/runtime-env-DH4NDw4t.js","assets/fetch-body-D2PwksUW.js","assets/secret-topology-Baeul5rD.js","assets/secrets-bridge-client-CLRo0NLf.js","assets/port-bridge-client-DdolH4cw.js","assets/tool-ui-DfXu6quJ.js","assets/providers-C3QccIn1.js","assets/panel-rpc-DmJSNs0I.js","assets/bedrock-camp-CVignIdH.js","assets/transform-messages-wECJwtH0.js","assets/llm-session-id-bZQs6gBN.js","assets/icons-C5g936Qd.js"])))=>i.map(i=>d[i]);
2
2
  import{n as e}from"./rolldown-runtime-aKtaBQYM.js";import{t}from"./preload-helper-Czpn1I53.js";import{l as n}from"./src-DoFhVmQT.js";import{c as r,i,l as a,s as o}from"./telemetry-Dxrv_mDE.js";import{t as s}from"./icons-C5g936Qd.js";import{a as c,o as l}from"./dictation-priming-DGpw1lUV.js";import{r as u,t as d}from"./timestamp-preference-DgrTvVNx.js";import{n as ee,r as f}from"./src-q42bWiRK.js";import{t as p}from"./wc-scoop-color-CByZNEJo.js";var te=new Set([`webhook`,`cron`,`sprinkle`,`fswatch`,`session-reload`,`navigate`,`discovery`,`upgrade`,`workflow`,`scoop-notify`,`scoop-idle`,`scoop-wait`,`sudo-request`]);function ne(e){return e!=null&&te.has(e)}var re=`\x1B`,ie=[`#0c0c0e`,`#f43f5e`,`#5bd17b`,`#f59e0b`,`#3b82f6`,`#8b5cf6`,`#06b6d4`,`#e7e7ea`],m=[`#8a8a93`,`#fb7185`,`#86efac`,`#fbbf24`,`#60a5fa`,`#a78bfa`,`#22d3ee`,`#ffffff`],h=[0,95,135,175,215,255];function g(){return{bold:!1,dim:!1,italic:!1,underline:!1,fg:null,bg:null}}function ae(e){return!e.bold&&!e.dim&&!e.italic&&!e.underline&&e.fg===null&&e.bg===null}function oe(e){return Math.max(0,Math.min(255,Math.round(e)))}function se(e){if(e<0)return null;if(e<16)return[...ie,...m][e]??null;if(e<232){let t=e-16;return`rgb(${h[Math.floor(t/36)]}, ${h[Math.floor(t%36/6)]}, ${h[t%6]})`}if(e<=255){let t=8+(e-232)*10;return`rgb(${t}, ${t}, ${t})`}return null}function ce(e,t){let n=e[t+1];if(n===5){let n=se(e[t+2]??NaN);return n?{color:n,next:t+2}:null}if(n===2){let[n,r,i]=[e[t+2],e[t+3],e[t+4]];return[n,r,i].some(e=>typeof e!=`number`||Number.isNaN(e))?null:{color:`rgb(${oe(n)}, ${oe(r)}, ${oe(i)})`,next:t+4}}return null}var le={0:e=>Object.assign(e,g()),1:e=>{e.bold=!0},2:e=>{e.dim=!0},3:e=>{e.italic=!0},4:e=>{e.underline=!0},22:e=>{e.bold=e.dim=!1},23:e=>{e.italic=!1},24:e=>{e.underline=!1},39:e=>{e.fg=null},49:e=>{e.bg=null}};function _(e,t){if(t>=30&&t<=37)e.fg=ie[t-30];else if(t>=40&&t<=47)e.bg=ie[t-40];else if(t>=90&&t<=97)e.fg=m[t-90];else if(t>=100&&t<=107)e.bg=m[t-100];else return!1;return!0}function ue(e,t){let n=(t===``?`0`:t).split(`;`).map(e=>e===``?0:parseInt(e,10));for(let t=0;t<n.length;t++){let r=n[t];if(Number.isNaN(r))continue;let i=le[r];if(i)i(e);else if(r===38||r===48){let i=ce(n,t);i&&(r===38?e.fg=i.color:e.bg=i.color,t=i.next)}else _(e,r)}}function de(e,t){if(ae(t))return document.createTextNode(e);let n=document.createElement(`span`);n.textContent=e;let r=n.style;return t.fg&&(r.color=t.fg),t.bg&&(r.backgroundColor=t.bg),t.bold&&(r.fontWeight=`bold`),t.dim&&(r.opacity=`0.6`),t.italic&&(r.fontStyle=`italic`),t.underline&&(r.textDecoration=`underline`),n}function fe(e,t){let n=e.length,r=e[t+1];if(r===`[`){let r=t+2;for(;r<n&&e.charCodeAt(r)>=48&&e.charCodeAt(r)<=63;)r++;for(;r<n&&e.charCodeAt(r)>=32&&e.charCodeAt(r)<=47;)r++;return r<n&&e[r]===`m`?{next:r+1,sgr:e.slice(t+2,r)}:{next:r<n?r+1:n,sgr:null}}if(r===`]`){let r=t+2;for(;r<n&&e.charCodeAt(r)!==7&&!(e[r]===re&&e[r+1]===`\\`);)r++;return{next:r<n&&e[r]===re?r+2:r+1,sgr:null}}let i=t+1;for(;i<n&&e.charCodeAt(i)>=32&&e.charCodeAt(i)<=47;)i++;return{next:i<n?i+1:n,sgr:null}}function pe(e){if(!e.includes(re))return document.createTextNode(e);let t=document.createDocumentFragment(),n=g(),r=``,i=()=>{r&&t.appendChild(de(r,n)),r=``},a=e.length,o=0;for(;o<a;){if(e[o]!==re){r+=e[o],o++;continue}let{next:t,sgr:a}=fe(e,o);a!==null&&(i(),ue(n,a)),o=t}return i(),t}var{entries:me,setPrototypeOf:he,isFrozen:ge,getPrototypeOf:_e,getOwnPropertyDescriptor:ve}=Object,{freeze:v,seal:y,create:ye}=Object,{apply:b,construct:be}=typeof Reflect<`u`&&Reflect;v||=function(e){return e},y||=function(e){return e},b||=function(e,t){var n=[...arguments].slice(2);return e.apply(t,n)},be||=function(e){return new e(...[...arguments].slice(1))};var xe=C(Array.prototype.forEach),Se=C(Array.prototype.lastIndexOf),Ce=C(Array.prototype.pop),we=C(Array.prototype.push),Te=C(Array.prototype.splice),Ee=C(String.prototype.toLowerCase),De=C(String.prototype.toString),Oe=C(String.prototype.match),ke=C(String.prototype.replace),Ae=C(String.prototype.indexOf),je=C(String.prototype.trim),x=C(Object.prototype.hasOwnProperty),S=C(RegExp.prototype.test),Me=Ne(TypeError);function C(e){return function(t){t instanceof RegExp&&(t.lastIndex=0);var n=[...arguments].slice(1);return b(e,t,n)}}function Ne(e){return function(){return be(e,[...arguments])}}function w(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:Ee;he&&he(e,null);let r=t.length;for(;r--;){let i=t[r];if(typeof i==`string`){let e=n(i);e!==i&&(ge(t)||(t[r]=e),i=e)}e[i]=!0}return e}function T(e){for(let t=0;t<e.length;t++)x(e,t)||(e[t]=null);return e}function E(e){let t=ye(null);for(let[n,r]of me(e))x(e,n)&&(Array.isArray(r)?t[n]=T(r):r&&typeof r==`object`&&r.constructor===Object?t[n]=E(r):t[n]=r);return t}function Pe(e,t){for(;e!==null;){let n=ve(e,t);if(n){if(n.get)return C(n.get);if(typeof n.value==`function`)return C(n.value)}e=_e(e)}function n(){return null}return n}var Fe=v(`a.abbr.acronym.address.area.article.aside.audio.b.bdi.bdo.big.blink.blockquote.body.br.button.canvas.caption.center.cite.code.col.colgroup.content.data.datalist.dd.decorator.del.details.dfn.dialog.dir.div.dl.dt.element.em.fieldset.figcaption.figure.font.footer.form.h1.h2.h3.h4.h5.h6.head.header.hgroup.hr.html.i.img.input.ins.kbd.label.legend.li.main.map.mark.marquee.menu.menuitem.meter.nav.nobr.ol.optgroup.option.output.p.picture.pre.progress.q.rp.rt.ruby.s.samp.search.section.select.shadow.slot.small.source.spacer.span.strike.strong.style.sub.summary.sup.table.tbody.td.template.textarea.tfoot.th.thead.time.tr.track.tt.u.ul.var.video.wbr`.split(`.`)),Ie=v(`svg.a.altglyph.altglyphdef.altglyphitem.animatecolor.animatemotion.animatetransform.circle.clippath.defs.desc.ellipse.enterkeyhint.exportparts.filter.font.g.glyph.glyphref.hkern.image.inputmode.line.lineargradient.marker.mask.metadata.mpath.part.path.pattern.polygon.polyline.radialgradient.rect.stop.style.switch.symbol.text.textpath.title.tref.tspan.view.vkern`.split(`.`)),Le=v([`feBlend`,`feColorMatrix`,`feComponentTransfer`,`feComposite`,`feConvolveMatrix`,`feDiffuseLighting`,`feDisplacementMap`,`feDistantLight`,`feDropShadow`,`feFlood`,`feFuncA`,`feFuncB`,`feFuncG`,`feFuncR`,`feGaussianBlur`,`feImage`,`feMerge`,`feMergeNode`,`feMorphology`,`feOffset`,`fePointLight`,`feSpecularLighting`,`feSpotLight`,`feTile`,`feTurbulence`]),Re=v([`animate`,`color-profile`,`cursor`,`discard`,`font-face`,`font-face-format`,`font-face-name`,`font-face-src`,`font-face-uri`,`foreignobject`,`hatch`,`hatchpath`,`mesh`,`meshgradient`,`meshpatch`,`meshrow`,`missing-glyph`,`script`,`set`,`solidcolor`,`unknown`,`use`]),ze=v(`math.menclose.merror.mfenced.mfrac.mglyph.mi.mlabeledtr.mmultiscripts.mn.mo.mover.mpadded.mphantom.mroot.mrow.ms.mspace.msqrt.mstyle.msub.msup.msubsup.mtable.mtd.mtext.mtr.munder.munderover.mprescripts`.split(`.`)),Be=v([`maction`,`maligngroup`,`malignmark`,`mlongdiv`,`mscarries`,`mscarry`,`msgroup`,`mstack`,`msline`,`msrow`,`semantics`,`annotation`,`annotation-xml`,`mprescripts`,`none`]),Ve=v([`#text`]),He=v(`accept.action.align.alt.autocapitalize.autocomplete.autopictureinpicture.autoplay.background.bgcolor.border.capture.cellpadding.cellspacing.checked.cite.class.clear.color.cols.colspan.controls.controlslist.coords.crossorigin.datetime.decoding.default.dir.disabled.disablepictureinpicture.disableremoteplayback.download.draggable.enctype.enterkeyhint.exportparts.face.for.headers.height.hidden.high.href.hreflang.id.inert.inputmode.integrity.ismap.kind.label.lang.list.loading.loop.low.max.maxlength.media.method.min.minlength.multiple.muted.name.nonce.noshade.novalidate.nowrap.open.optimum.part.pattern.placeholder.playsinline.popover.popovertarget.popovertargetaction.poster.preload.pubdate.radiogroup.readonly.rel.required.rev.reversed.role.rows.rowspan.spellcheck.scope.selected.shape.size.sizes.slot.span.srclang.start.src.srcset.step.style.summary.tabindex.title.translate.type.usemap.valign.value.width.wrap.xmlns.slot`.split(`.`)),Ue=v(`accent-height.accumulate.additive.alignment-baseline.amplitude.ascent.attributename.attributetype.azimuth.basefrequency.baseline-shift.begin.bias.by.class.clip.clippathunits.clip-path.clip-rule.color.color-interpolation.color-interpolation-filters.color-profile.color-rendering.cx.cy.d.dx.dy.diffuseconstant.direction.display.divisor.dur.edgemode.elevation.end.exponent.fill.fill-opacity.fill-rule.filter.filterunits.flood-color.flood-opacity.font-family.font-size.font-size-adjust.font-stretch.font-style.font-variant.font-weight.fx.fy.g1.g2.glyph-name.glyphref.gradientunits.gradienttransform.height.href.id.image-rendering.in.in2.intercept.k.k1.k2.k3.k4.kerning.keypoints.keysplines.keytimes.lang.lengthadjust.letter-spacing.kernelmatrix.kernelunitlength.lighting-color.local.marker-end.marker-mid.marker-start.markerheight.markerunits.markerwidth.maskcontentunits.maskunits.max.mask.mask-type.media.method.mode.min.name.numoctaves.offset.operator.opacity.order.orient.orientation.origin.overflow.paint-order.path.pathlength.patterncontentunits.patterntransform.patternunits.points.preservealpha.preserveaspectratio.primitiveunits.r.rx.ry.radius.refx.refy.repeatcount.repeatdur.restart.result.rotate.scale.seed.shape-rendering.slope.specularconstant.specularexponent.spreadmethod.startoffset.stddeviation.stitchtiles.stop-color.stop-opacity.stroke-dasharray.stroke-dashoffset.stroke-linecap.stroke-linejoin.stroke-miterlimit.stroke-opacity.stroke.stroke-width.style.surfacescale.systemlanguage.tabindex.tablevalues.targetx.targety.transform.transform-origin.text-anchor.text-decoration.text-rendering.textlength.type.u1.u2.unicode.values.viewbox.visibility.version.vert-adv-y.vert-origin-x.vert-origin-y.width.word-spacing.wrap.writing-mode.xchannelselector.ychannelselector.x.x1.x2.xmlns.y.y1.y2.z.zoomandpan`.split(`.`)),We=v(`accent.accentunder.align.bevelled.close.columnsalign.columnlines.columnspan.denomalign.depth.dir.display.displaystyle.encoding.fence.frame.height.href.id.largeop.length.linethickness.lspace.lquote.mathbackground.mathcolor.mathsize.mathvariant.maxsize.minsize.movablelimits.notation.numalign.open.rowalign.rowlines.rowspacing.rowspan.rspace.rquote.scriptlevel.scriptminsize.scriptsizemultiplier.selection.separator.separators.stretchy.subscriptshift.supscriptshift.symmetric.voffset.width.xmlns`.split(`.`)),Ge=v([`xlink:href`,`xml:id`,`xlink:title`,`xml:space`,`xmlns:xlink`]),Ke=y(/\{\{[\w\W]*|[\w\W]*\}\}/gm),qe=y(/<%[\w\W]*|[\w\W]*%>/gm),D=y(/\$\{[\w\W]*/gm),Je=y(/^data-[\-\w.\u00B7-\uFFFF]+$/),Ye=y(/^aria-[\-\w]+$/),Xe=y(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),Ze=y(/^(?:\w+script|data):/i),Qe=y(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),$e=y(/^html$/i),et=y(/^[a-z][.\w]*(-[.\w]+)+$/i),tt=Object.freeze({__proto__:null,ARIA_ATTR:Ye,ATTR_WHITESPACE:Qe,CUSTOM_ELEMENT:et,DATA_ATTR:Je,DOCTYPE_NAME:$e,ERB_EXPR:qe,IS_ALLOWED_URI:Xe,IS_SCRIPT_OR_DATA:Ze,MUSTACHE_EXPR:Ke,TMPLIT_EXPR:D}),nt={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,progressingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},rt=function(){return typeof window>`u`?null:window},it=function(e,t){if(typeof e!=`object`||typeof e.createPolicy!=`function`)return null;let n=null,r=`data-tt-policy-suffix`;t&&t.hasAttribute(r)&&(n=t.getAttribute(r));let i=`dompurify`+(n?`#`+n:``);try{return e.createPolicy(i,{createHTML(e){return e},createScriptURL(e){return e}})}catch{return console.warn(`TrustedTypes policy `+i+` could not be created.`),null}},at=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}};function ot(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:rt(),t=e=>ot(e);if(t.version=`3.3.3`,t.removed=[],!e||!e.document||e.document.nodeType!==nt.document||!e.Element)return t.isSupported=!1,t;let{document:n}=e,r=n,i=r.currentScript,{DocumentFragment:a,HTMLTemplateElement:o,Node:s,Element:c,NodeFilter:l,NamedNodeMap:u=e.NamedNodeMap||e.MozNamedAttrMap,HTMLFormElement:d,DOMParser:ee,trustedTypes:f}=e,p=c.prototype,te=Pe(p,`cloneNode`),ne=Pe(p,`remove`),re=Pe(p,`nextSibling`),ie=Pe(p,`childNodes`),m=Pe(p,`parentNode`);if(typeof o==`function`){let e=n.createElement(`template`);e.content&&e.content.ownerDocument&&(n=e.content.ownerDocument)}let h,g=``,{implementation:ae,createNodeIterator:oe,createDocumentFragment:se,getElementsByTagName:ce}=n,{importNode:le}=r,_=at();t.isSupported=typeof me==`function`&&typeof m==`function`&&ae&&ae.createHTMLDocument!==void 0;let{MUSTACHE_EXPR:ue,ERB_EXPR:de,TMPLIT_EXPR:fe,DATA_ATTR:pe,ARIA_ATTR:he,IS_SCRIPT_OR_DATA:ge,ATTR_WHITESPACE:_e,CUSTOM_ELEMENT:ve}=tt,{IS_ALLOWED_URI:y}=tt,b=null,be=w({},[...Fe,...Ie,...Le,...ze,...Ve]),C=null,Ne=w({},[...He,...Ue,...We,...Ge]),T=Object.seal(ye(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Ke=null,qe=null,D=Object.seal(ye(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}})),Je=!0,Ye=!0,Ze=!1,Qe=!0,et=!1,O=!0,k=!1,st=!1,A=!1,j=!1,M=!1,N=!1,ct=!0,P=!1,lt=!0,ut=!1,F={},I=null,dt=w({},[`annotation-xml`,`audio`,`colgroup`,`desc`,`foreignobject`,`head`,`iframe`,`math`,`mi`,`mn`,`mo`,`ms`,`mtext`,`noembed`,`noframes`,`noscript`,`plaintext`,`script`,`style`,`svg`,`template`,`thead`,`title`,`video`,`xmp`]),ft=null,pt=w({},[`audio`,`video`,`img`,`source`,`image`,`track`]),mt=null,ht=w({},[`alt`,`class`,`for`,`id`,`label`,`name`,`pattern`,`placeholder`,`role`,`summary`,`title`,`value`,`style`,`xmlns`]),gt=`http://www.w3.org/1998/Math/MathML`,_t=`http://www.w3.org/2000/svg`,L=`http://www.w3.org/1999/xhtml`,R=L,vt=!1,yt=null,bt=w({},[gt,_t,L],De),xt=w({},[`mi`,`mo`,`mn`,`ms`,`mtext`]),St=w({},[`annotation-xml`]),Ct=w({},[`title`,`style`,`font`,`a`,`script`]),wt=null,Tt=[`application/xhtml+xml`,`text/html`],z=null,Et=null,Dt=n.createElement(`form`),Ot=function(e){return e instanceof RegExp||e instanceof Function},kt=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!(Et&&Et===e)){if((!e||typeof e!=`object`)&&(e={}),e=E(e),wt=Tt.indexOf(e.PARSER_MEDIA_TYPE)===-1?`text/html`:e.PARSER_MEDIA_TYPE,z=wt===`application/xhtml+xml`?De:Ee,b=x(e,`ALLOWED_TAGS`)?w({},e.ALLOWED_TAGS,z):be,C=x(e,`ALLOWED_ATTR`)?w({},e.ALLOWED_ATTR,z):Ne,yt=x(e,`ALLOWED_NAMESPACES`)?w({},e.ALLOWED_NAMESPACES,De):bt,mt=x(e,`ADD_URI_SAFE_ATTR`)?w(E(ht),e.ADD_URI_SAFE_ATTR,z):ht,ft=x(e,`ADD_DATA_URI_TAGS`)?w(E(pt),e.ADD_DATA_URI_TAGS,z):pt,I=x(e,`FORBID_CONTENTS`)?w({},e.FORBID_CONTENTS,z):dt,Ke=x(e,`FORBID_TAGS`)?w({},e.FORBID_TAGS,z):E({}),qe=x(e,`FORBID_ATTR`)?w({},e.FORBID_ATTR,z):E({}),F=x(e,`USE_PROFILES`)?e.USE_PROFILES:!1,Je=e.ALLOW_ARIA_ATTR!==!1,Ye=e.ALLOW_DATA_ATTR!==!1,Ze=e.ALLOW_UNKNOWN_PROTOCOLS||!1,Qe=e.ALLOW_SELF_CLOSE_IN_ATTR!==!1,et=e.SAFE_FOR_TEMPLATES||!1,O=e.SAFE_FOR_XML!==!1,k=e.WHOLE_DOCUMENT||!1,j=e.RETURN_DOM||!1,M=e.RETURN_DOM_FRAGMENT||!1,N=e.RETURN_TRUSTED_TYPE||!1,A=e.FORCE_BODY||!1,ct=e.SANITIZE_DOM!==!1,P=e.SANITIZE_NAMED_PROPS||!1,lt=e.KEEP_CONTENT!==!1,ut=e.IN_PLACE||!1,y=e.ALLOWED_URI_REGEXP||Xe,R=e.NAMESPACE||L,xt=e.MATHML_TEXT_INTEGRATION_POINTS||xt,St=e.HTML_INTEGRATION_POINTS||St,T=e.CUSTOM_ELEMENT_HANDLING||{},e.CUSTOM_ELEMENT_HANDLING&&Ot(e.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(T.tagNameCheck=e.CUSTOM_ELEMENT_HANDLING.tagNameCheck),e.CUSTOM_ELEMENT_HANDLING&&Ot(e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(T.attributeNameCheck=e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),e.CUSTOM_ELEMENT_HANDLING&&typeof e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements==`boolean`&&(T.allowCustomizedBuiltInElements=e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),et&&(Ye=!1),M&&(j=!0),F&&(b=w({},Ve),C=ye(null),F.html===!0&&(w(b,Fe),w(C,He)),F.svg===!0&&(w(b,Ie),w(C,Ue),w(C,Ge)),F.svgFilters===!0&&(w(b,Le),w(C,Ue),w(C,Ge)),F.mathMl===!0&&(w(b,ze),w(C,We),w(C,Ge))),x(e,`ADD_TAGS`)||(D.tagCheck=null),x(e,`ADD_ATTR`)||(D.attributeCheck=null),e.ADD_TAGS&&(typeof e.ADD_TAGS==`function`?D.tagCheck=e.ADD_TAGS:(b===be&&(b=E(b)),w(b,e.ADD_TAGS,z))),e.ADD_ATTR&&(typeof e.ADD_ATTR==`function`?D.attributeCheck=e.ADD_ATTR:(C===Ne&&(C=E(C)),w(C,e.ADD_ATTR,z))),e.ADD_URI_SAFE_ATTR&&w(mt,e.ADD_URI_SAFE_ATTR,z),e.FORBID_CONTENTS&&(I===dt&&(I=E(I)),w(I,e.FORBID_CONTENTS,z)),e.ADD_FORBID_CONTENTS&&(I===dt&&(I=E(I)),w(I,e.ADD_FORBID_CONTENTS,z)),lt&&(b[`#text`]=!0),k&&w(b,[`html`,`head`,`body`]),b.table&&(w(b,[`tbody`]),delete Ke.tbody),e.TRUSTED_TYPES_POLICY){if(typeof e.TRUSTED_TYPES_POLICY.createHTML!=`function`)throw Me(`TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.`);if(typeof e.TRUSTED_TYPES_POLICY.createScriptURL!=`function`)throw Me(`TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.`);h=e.TRUSTED_TYPES_POLICY,g=h.createHTML(``)}else h===void 0&&(h=it(f,i)),h!==null&&typeof g==`string`&&(g=h.createHTML(``));v&&v(e),Et=e}},B=w({},[...Ie,...Le,...Re]),At=w({},[...ze,...Be]),jt=function(e){let t=m(e);(!t||!t.tagName)&&(t={namespaceURI:R,tagName:`template`});let n=Ee(e.tagName),r=Ee(t.tagName);return yt[e.namespaceURI]?e.namespaceURI===_t?t.namespaceURI===L?n===`svg`:t.namespaceURI===gt?n===`svg`&&(r===`annotation-xml`||xt[r]):!!B[n]:e.namespaceURI===gt?t.namespaceURI===L?n===`math`:t.namespaceURI===_t?n===`math`&&St[r]:!!At[n]:e.namespaceURI===L?t.namespaceURI===_t&&!St[r]||t.namespaceURI===gt&&!xt[r]?!1:!At[n]&&(Ct[n]||!B[n]):!!(wt===`application/xhtml+xml`&&yt[e.namespaceURI]):!1},V=function(e){we(t.removed,{element:e});try{m(e).removeChild(e)}catch{ne(e)}},H=function(e,n){try{we(t.removed,{attribute:n.getAttributeNode(e),from:n})}catch{we(t.removed,{attribute:null,from:n})}if(n.removeAttribute(e),e===`is`)if(j||M)try{V(n)}catch{}else try{n.setAttribute(e,``)}catch{}},Mt=function(e){let t=null,r=null;if(A)e=`<remove></remove>`+e;else{let t=Oe(e,/^[\r\n\t ]+/);r=t&&t[0]}wt===`application/xhtml+xml`&&R===L&&(e=`<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>`+e+`</body></html>`);let i=h?h.createHTML(e):e;if(R===L)try{t=new ee().parseFromString(i,wt)}catch{}if(!t||!t.documentElement){t=ae.createDocument(R,`template`,null);try{t.documentElement.innerHTML=vt?g:i}catch{}}let a=t.body||t.documentElement;return e&&r&&a.insertBefore(n.createTextNode(r),a.childNodes[0]||null),R===L?ce.call(t,k?`html`:`body`)[0]:k?t.documentElement:a},Nt=function(e){return oe.call(e.ownerDocument||e,e,l.SHOW_ELEMENT|l.SHOW_COMMENT|l.SHOW_TEXT|l.SHOW_PROCESSING_INSTRUCTION|l.SHOW_CDATA_SECTION,null)},Pt=function(e){return e instanceof d&&(typeof e.nodeName!=`string`||typeof e.textContent!=`string`||typeof e.removeChild!=`function`||!(e.attributes instanceof u)||typeof e.removeAttribute!=`function`||typeof e.setAttribute!=`function`||typeof e.namespaceURI!=`string`||typeof e.insertBefore!=`function`||typeof e.hasChildNodes!=`function`)},Ft=function(e){return typeof s==`function`&&e instanceof s};function U(e,n,r){xe(e,e=>{e.call(t,n,r,Et)})}let It=function(e){let n=null;if(U(_.beforeSanitizeElements,e,null),Pt(e))return V(e),!0;let r=z(e.nodeName);if(U(_.uponSanitizeElement,e,{tagName:r,allowedTags:b}),O&&e.hasChildNodes()&&!Ft(e.firstElementChild)&&S(/<[/\w!]/g,e.innerHTML)&&S(/<[/\w!]/g,e.textContent)||e.nodeType===nt.progressingInstruction||O&&e.nodeType===nt.comment&&S(/<[/\w]/g,e.data))return V(e),!0;if(!(D.tagCheck instanceof Function&&D.tagCheck(r))&&(!b[r]||Ke[r])){if(!Ke[r]&&Rt(r)&&(T.tagNameCheck instanceof RegExp&&S(T.tagNameCheck,r)||T.tagNameCheck instanceof Function&&T.tagNameCheck(r)))return!1;if(lt&&!I[r]){let t=m(e)||e.parentNode,n=ie(e)||e.childNodes;if(n&&t){let r=n.length;for(let i=r-1;i>=0;--i){let r=te(n[i],!0);r.__removalCount=(e.__removalCount||0)+1,t.insertBefore(r,re(e))}}}return V(e),!0}return e instanceof c&&!jt(e)||(r===`noscript`||r===`noembed`||r===`noframes`)&&S(/<\/no(script|embed|frames)/i,e.innerHTML)?(V(e),!0):(et&&e.nodeType===nt.text&&(n=e.textContent,xe([ue,de,fe],e=>{n=ke(n,e,` `)}),e.textContent!==n&&(we(t.removed,{element:e.cloneNode()}),e.textContent=n)),U(_.afterSanitizeElements,e,null),!1)},Lt=function(e,t,r){if(qe[t]||ct&&(t===`id`||t===`name`)&&(r in n||r in Dt))return!1;if(!(Ye&&!qe[t]&&S(pe,t))&&!(Je&&S(he,t))&&!(D.attributeCheck instanceof Function&&D.attributeCheck(t,e))){if(!C[t]||qe[t]){if(!(Rt(e)&&(T.tagNameCheck instanceof RegExp&&S(T.tagNameCheck,e)||T.tagNameCheck instanceof Function&&T.tagNameCheck(e))&&(T.attributeNameCheck instanceof RegExp&&S(T.attributeNameCheck,t)||T.attributeNameCheck instanceof Function&&T.attributeNameCheck(t,e))||t===`is`&&T.allowCustomizedBuiltInElements&&(T.tagNameCheck instanceof RegExp&&S(T.tagNameCheck,r)||T.tagNameCheck instanceof Function&&T.tagNameCheck(r))))return!1}else if(!mt[t]&&!S(y,ke(r,_e,``))&&!((t===`src`||t===`xlink:href`||t===`href`)&&e!==`script`&&Ae(r,`data:`)===0&&ft[e])&&!(Ze&&!S(ge,ke(r,_e,``)))&&r)return!1}return!0},Rt=function(e){return e!==`annotation-xml`&&Oe(e,ve)},zt=function(e){U(_.beforeSanitizeAttributes,e,null);let{attributes:n}=e;if(!n||Pt(e))return;let r={attrName:``,attrValue:``,keepAttr:!0,allowedAttributes:C,forceKeepAttr:void 0},i=n.length;for(;i--;){let{name:a,namespaceURI:o,value:s}=n[i],c=z(a),l=s,u=a===`value`?l:je(l);if(r.attrName=c,r.attrValue=u,r.keepAttr=!0,r.forceKeepAttr=void 0,U(_.uponSanitizeAttribute,e,r),u=r.attrValue,P&&(c===`id`||c===`name`)&&(H(a,e),u=`user-content-`+u),O&&S(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,u)){H(a,e);continue}if(c===`attributename`&&Oe(u,`href`)){H(a,e);continue}if(r.forceKeepAttr)continue;if(!r.keepAttr){H(a,e);continue}if(!Qe&&S(/\/>/i,u)){H(a,e);continue}et&&xe([ue,de,fe],e=>{u=ke(u,e,` `)});let d=z(e.nodeName);if(!Lt(d,c,u)){H(a,e);continue}if(h&&typeof f==`object`&&typeof f.getAttributeType==`function`&&!o)switch(f.getAttributeType(d,c)){case`TrustedHTML`:u=h.createHTML(u);break;case`TrustedScriptURL`:u=h.createScriptURL(u);break}if(u!==l)try{o?e.setAttributeNS(o,a,u):e.setAttribute(a,u),Pt(e)?V(e):Ce(t.removed)}catch{H(a,e)}}U(_.afterSanitizeAttributes,e,null)},Bt=function e(t){let n=null,r=Nt(t);for(U(_.beforeSanitizeShadowDOM,t,null);n=r.nextNode();)U(_.uponSanitizeShadowNode,n,null),It(n),zt(n),n.content instanceof a&&e(n.content);U(_.afterSanitizeShadowDOM,t,null)};return t.sanitize=function(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=null,o=null,c=null,l=null;if(vt=!e,vt&&(e=`<!-->`),typeof e!=`string`&&!Ft(e))if(typeof e.toString==`function`){if(e=e.toString(),typeof e!=`string`)throw Me(`dirty is not a string, aborting`)}else throw Me(`toString is not a function`);if(!t.isSupported)return e;if(st||kt(n),t.removed=[],typeof e==`string`&&(ut=!1),ut){if(e.nodeName){let t=z(e.nodeName);if(!b[t]||Ke[t])throw Me(`root node is forbidden and cannot be sanitized in-place`)}}else if(e instanceof s)i=Mt(`<!---->`),o=i.ownerDocument.importNode(e,!0),o.nodeType===nt.element&&o.nodeName===`BODY`||o.nodeName===`HTML`?i=o:i.appendChild(o);else{if(!j&&!et&&!k&&e.indexOf(`<`)===-1)return h&&N?h.createHTML(e):e;if(i=Mt(e),!i)return j?null:N?g:``}i&&A&&V(i.firstChild);let u=Nt(ut?e:i);for(;c=u.nextNode();)It(c),zt(c),c.content instanceof a&&Bt(c.content);if(ut)return e;if(j){if(M)for(l=se.call(i.ownerDocument);i.firstChild;)l.appendChild(i.firstChild);else l=i;return(C.shadowroot||C.shadowrootmode)&&(l=le.call(r,l,!0)),l}let d=k?i.outerHTML:i.innerHTML;return k&&b[`!doctype`]&&i.ownerDocument&&i.ownerDocument.doctype&&i.ownerDocument.doctype.name&&S($e,i.ownerDocument.doctype.name)&&(d=`<!DOCTYPE `+i.ownerDocument.doctype.name+`>
3
3
  `+d),et&&xe([ue,de,fe],e=>{d=ke(d,e,` `)}),h&&N?h.createHTML(d):d},t.setConfig=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};kt(e),st=!0},t.clearConfig=function(){Et=null,st=!1},t.isValidAttribute=function(e,t,n){Et||kt({});let r=z(e),i=z(t);return Lt(r,i,n)},t.addHook=function(e,t){typeof t==`function`&&we(_[e],t)},t.removeHook=function(e,t){if(t!==void 0){let n=Se(_[e],t);return n===-1?void 0:Te(_[e],n,1)[0]}return Ce(_[e])},t.removeHooks=function(e){_[e]=[]},t.removeAllHooks=function(){_=at()},t}var O=ot(),k=O.sanitize.bind(O);O.isSupported,O.addHook.bind(O),O.removeHook.bind(O),O.removeHooks.bind(O),O.removeAllHooks.bind(O),O.setConfig.bind(O),O.clearConfig.bind(O),O.isValidAttribute.bind(O),O.version,O.removed;function st(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var A=st();function j(e){A=e}var M={exec:()=>null};function N(e,t=``){let n=typeof e==`string`?e:e.source,r={replace:(e,t)=>{let i=typeof t==`string`?t:t.source;return i=i.replace(P.caret,`$1`),n=n.replace(e,i),r},getRegex:()=>new RegExp(n,t)};return r}var ct=(()=>{try{return!0}catch{return!1}})(),P={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:e=>RegExp(`^( {0,3}${e})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),hrRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}#`),htmlBeginRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}<(?:[a-z].*>|!--)`,`i`),blockquoteBeginRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}>`)},lt=/^(?:[ \t]*(?:\n|$))+/,ut=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,F=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,I=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,dt=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,ft=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,pt=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,mt=N(pt).replace(/bull/g,ft).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,``).getRegex(),ht=N(pt).replace(/bull/g,ft).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),gt=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,_t=/^[^\n]+/,L=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,R=N(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace(`label`,L).replace(`title`,/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),vt=N(/^(bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,ft).getRegex(),yt=`address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul`,bt=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,xt=N(`^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))`,`i`).replace(`comment`,bt).replace(`tag`,yt).replace(`attribute`,/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),St=N(gt).replace(`hr`,I).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`|lheading`,``).replace(`|table`,``).replace(`blockquote`,` {0,3}>`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace(`list`,` {0,3}(?:[*+-]|1[.)])[ \\t]`).replace(`html`,`</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)`).replace(`tag`,yt).getRegex(),Ct={blockquote:N(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace(`paragraph`,St).getRegex(),code:ut,def:R,fences:F,heading:dt,hr:I,html:xt,lheading:mt,list:vt,newline:lt,paragraph:St,table:M,text:_t},wt=N(`^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)`).replace(`hr`,I).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`blockquote`,` {0,3}>`).replace(`code`,`(?: {4}| {0,3} )[^\\n]`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace(`list`,` {0,3}(?:[*+-]|1[.)])[ \\t]`).replace(`html`,`</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)`).replace(`tag`,yt).getRegex(),Tt={...Ct,lheading:ht,table:wt,paragraph:N(gt).replace(`hr`,I).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`|lheading`,``).replace(`table`,wt).replace(`blockquote`,` {0,3}>`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace(`list`,` {0,3}(?:[*+-]|1[.)])[ \\t]`).replace(`html`,`</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)`).replace(`tag`,yt).getRegex()},z={...Ct,html:N(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace(`comment`,bt).replace(/tag/g,`(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b`).getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:M,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:N(gt).replace(`hr`,I).replace(`heading`,` *#{1,6} *[^
4
4
  ]`).replace(`lheading`,mt).replace(`|table`,``).replace(`blockquote`,` {0,3}>`).replace(`|fences`,``).replace(`|list`,``).replace(`|html`,``).replace(`|tag`,``).getRegex()},Et=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,Dt=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,Ot=/^( {2,}|\\)\n(?!\s*$)/,kt=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,B=/[\p{P}\p{S}]/u,At=/[\s\p{P}\p{S}]/u,jt=/[^\s\p{P}\p{S}]/u,V=N(/^((?![*_])punctSpace)/,`u`).replace(/punctSpace/g,At).getRegex(),H=/(?!~)[\p{P}\p{S}]/u,Mt=/(?!~)[\s\p{P}\p{S}]/u,Nt=/(?:[^\s\p{P}\p{S}]|~)/u,Pt=N(/link|precode-code|html/,`g`).replace(`link`,/\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace(`precode-`,ct?"(?<!`)()":"(^^|[^`])").replace(`code`,/(?<b>`+)[^`]+\k<b>(?!`)/).replace(`html`,/<(?! )[^<>]*?>/).getRegex(),Ft=/^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/,U=N(Ft,`u`).replace(/punct/g,B).getRegex(),It=N(Ft,`u`).replace(/punct/g,H).getRegex(),Lt=`^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)`,Rt=N(Lt,`gu`).replace(/notPunctSpace/g,jt).replace(/punctSpace/g,At).replace(/punct/g,B).getRegex(),zt=N(Lt,`gu`).replace(/notPunctSpace/g,Nt).replace(/punctSpace/g,Mt).replace(/punct/g,H).getRegex(),Bt=N(`^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)`,`gu`).replace(/notPunctSpace/g,jt).replace(/punctSpace/g,At).replace(/punct/g,B).getRegex(),Vt=N(/^~~?(?:((?!~)punct)|[^\s~])/,`u`).replace(/punct/g,B).getRegex(),Ht=N(`^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)`,`gu`).replace(/notPunctSpace/g,jt).replace(/punctSpace/g,At).replace(/punct/g,B).getRegex(),Ut=N(/\\(punct)/,`gu`).replace(/punct/g,B).getRegex(),Wt=N(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace(`scheme`,/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace(`email`,/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),Gt=N(bt).replace(`(?:-->|$)`,`-->`).getRegex(),Kt=N(`^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>`).replace(`comment`,Gt).replace(`attribute`,/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),qt=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/,Jt=N(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace(`label`,qt).replace(`href`,/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace(`title`,/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),Yt=N(/^!?\[(label)\]\[(ref)\]/).replace(`label`,qt).replace(`ref`,L).getRegex(),Xt=N(/^!?\[(ref)\](?:\[\])?/).replace(`ref`,L).getRegex(),Zt=N(`reflink|nolink(?!\\()`,`g`).replace(`reflink`,Yt).replace(`nolink`,Xt).getRegex(),Qt=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,$t={_backpedal:M,anyPunctuation:Ut,autolink:Wt,blockSkip:Pt,br:Ot,code:Dt,del:M,delLDelim:M,delRDelim:M,emStrongLDelim:U,emStrongRDelimAst:Rt,emStrongRDelimUnd:Bt,escape:Et,link:Jt,nolink:Xt,punctuation:V,reflink:Yt,reflinkSearch:Zt,tag:Kt,text:kt,url:M},en={...$t,link:N(/^!?\[(label)\]\((.*?)\)/).replace(`label`,qt).getRegex(),reflink:N(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace(`label`,qt).getRegex()},tn={...$t,emStrongRDelimAst:zt,emStrongLDelim:It,delLDelim:Vt,delRDelim:Ht,url:N(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace(`protocol`,Qt).replace(`email`,/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:N(/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/).replace(`protocol`,Qt).getRegex()},nn={...tn,br:N(Ot).replace(`{2,}`,`*`).getRegex(),text:N(tn.text).replace(`\\b_`,`\\b_| {2,}\\n`).replace(/\{2,\}/g,`*`).getRegex()},rn={normal:Ct,gfm:Tt,pedantic:z},an={normal:$t,gfm:tn,breaks:nn,pedantic:en},on={"&":`&amp;`,"<":`&lt;`,">":`&gt;`,'"':`&quot;`,"'":`&#39;`},sn=e=>on[e];function W(e,t){if(t){if(P.escapeTest.test(e))return e.replace(P.escapeReplace,sn)}else if(P.escapeTestNoEncode.test(e))return e.replace(P.escapeReplaceNoEncode,sn);return e}function cn(e){try{e=encodeURI(e).replace(P.percentDecode,`%`)}catch{return null}return e}function ln(e,t){let n=e.replace(P.findPipe,(e,t,n)=>{let r=!1,i=t;for(;--i>=0&&n[i]===`\\`;)r=!r;return r?`|`:` |`}).split(P.splitPipe),r=0;if(n[0].trim()||n.shift(),n.length>0&&!n.at(-1)?.trim()&&n.pop(),t)if(n.length>t)n.splice(t);else for(;n.length<t;)n.push(``);for(;r<n.length;r++)n[r]=n[r].trim().replace(P.slashPipe,`|`);return n}function G(e,t,n){let r=e.length;if(r===0)return``;let i=0;for(;i<r;){let a=e.charAt(r-i-1);if(a===t&&!n)i++;else if(a!==t&&n)i++;else break}return e.slice(0,r-i)}function un(e){let t=e.split(`
@@ -71,7 +71,7 @@ Example input:
71
71
  2. bash: {"command":"ls /published"}
72
72
  3. bash: {"command":"diff /drafts /published"}
73
73
  Example output: Compare drafts against published files`;function _r(e){return e.length>=6&&/[a-zA-Z]/.test(e)&&/\s/.test(e.trim())}function vr(e,n){if(e.length===0)return;let r=hr(e);if(!r)return;let i=fr.get(r);if(i){n.setAttribute(`label`,i);return}let a=e[0]?.id;if(a){let e=mr.get(a);e&&n.setAttribute(`label`,e)}if(pr.has(r))return;pr.add(r);let o=e.map((e,t)=>{let n;try{n=JSON.stringify(e.input??{})}catch{n=String(e.input??``)}return n.length>300&&(n=`${n.slice(0,300)}…`),`${t+1}. ${e.name}: ${n}`}).join(`
74
- `);t(async()=>{let{quickLabel:e}=await import(`./quick-llm-Dl7XIpey.js`).then(e=>e.n);return{quickLabel:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26])).then(({quickLabel:e})=>e({system:gr,prompt:`Label these tool calls (inputs only):\n${o}`,maxTokens:40})).then(e=>{let t=e?.replace(/^["']|["']$|\.$/g,``).trim()??``;_r(t)&&(fr.set(r,t),a&&mr.set(a,t),n.isConnected&&n.setAttribute(`label`,t))}).catch(()=>void 0).finally(()=>pr.delete(r))}function yr(e,t={}){let n=Y(`slicc-tool-cluster`,{count:String(e.length)});return t.open&&n.setAttribute(`open`,``),n.append(...e),t.toolCalls&&t.toolCalls.length>0&&vr(t.toolCalls,n),n}function br(e){let t=document.createElement(`slicc-agent-message`);t.setAttribute(`data-msg-id`,e.id);let n=(e.content??``).trim().length>0,r=d(e.timestamp);return r&&n&&t.setAttribute(`timestamp`,r),e.isStreaming&&t.setAttribute(`streaming`,``),t.setBodyHtml(Rn(e.content,e.isStreaming===!0)),n||t.setAttribute(`data-empty`,``),[t,...(e.toolCalls??[]).map(t=>lr(t,e.id))]}function xr(e,t){let n=e.querySelectorAll(`:scope > slicc-tool-cluster`);for(let e of n){let n=Array.from(e.querySelectorAll(`slicc-action-row`));Sr(e,n,t);let r=e.parentNode;if(!r){e.remove();continue}for(let t of n)Cr(t,r,e);e.remove()}}function Sr(e,t,n){if(!e.hasAttribute(`open`))return;let r=t[0]?.dataset.msgId;if(!r)return;let i=t.length>0&&t.every(e=>e.dataset.msgId===r),a=e.parentElement?.querySelector(`slicc-agent-message[data-msg-id="${r}"]`);i&&a?.hasAttribute(`streaming`)===!0||n.add(r)}function Cr(e,t,n){let r=e.dataset.msgId,i=r&&t instanceof Element?t.querySelector(`:scope > slicc-agent-message[data-msg-id="${r}"]`):null;if(!i||i.parentNode!==t){t.insertBefore(e,n);return}let a=i;for(;a.nextSibling instanceof HTMLElement&&a.nextSibling.tagName.toLowerCase()===`slicc-action-row`&&a.nextSibling.dataset.msgId===r;)a=a.nextSibling;t.insertBefore(e,a.nextSibling)}var wr=new Set([`slicc-user-message`,`slicc-lick-card`,`slicc-error-card`,`slicc-delegation-line`,`slicc-day-separator`]);function Tr(e){return e instanceof HTMLElement?wr.has(e.tagName.toLowerCase()):!0}function Er(e){return e instanceof HTMLElement&&e.tagName.toLowerCase()===`slicc-action-row`}function Dr(e){return e instanceof HTMLElement&&e.tagName.toLowerCase()===`slicc-agent-message`}function Or(e){let t=[],n=[];for(let r of e)Dr(r)?!r.hasAttribute(`data-empty`)&&n.length>0&&(t.push(n),n=[]):Er(r)&&n.push(r);return n.length>0&&t.push(n),t}function kr(e,t){let n=t[0]?.dataset.msgId;return!n||!t.every(e=>e.dataset.msgId===n)?!1:e.querySelector(`slicc-agent-message[data-msg-id="${n}"]`)?.hasAttribute(`streaming`)===!0}function Ar(e,t){let n=[];for(let r of e){let e=r.dataset.msgId,i=r.dataset.toolId;if(!e||!i)return;let a=t(e,i);if(!a)return;n.push(a)}return n}function jr(e,t){let n=e[0],r=n.parentNode;if(!r)return;let i=new Set(e),a=n.nextSibling;for(;a&&i.has(a);)a=a.nextSibling;let o=n.dataset.msgId,s=yr(e,{open:!!(o&&t.openClusterAnchors.has(o))||kr(r,e),toolCalls:t.toolCallLookup?Ar(e,t.toolCallLookup):void 0});r.insertBefore(s,a)}function Mr(e,t){xr(e,t.openClusterAnchors);let n=Array.from(e.children),r=0;for(;r<n.length;){if(Tr(n[r])){r++;continue}let e=r;for(;e<n.length&&!Tr(n[e]);)e++;let i=Or(n.slice(r,e));for(let e of i)e.length>=3&&jr(e,t);r=e}t.openClusterAnchors.clear()}function Nr(e){let t=Vn.exec(e.content),n=e.lickCount??1,r=Gn.exec(e.content),i=r?Kn(r[1]):null,a=Y(`slicc-lick-card`,{kind:e.channel??`webhook`,"event-label":i??t?.[2]??e.channel??`event`,collapsible:``,collapsed:``});i&&a.setAttribute(`hue`,p({isCone:!1,name:i})),n>1&&a.setAttribute(`count`,String(n)),e.lickState&&e.lickState!==`pending`&&a.setAttribute(`state`,e.lickState);let o=e.lickParts??[e.content];for(let e of o){let t=document.createElement(`div`);t.innerHTML=Ln(Un(e)),a.append(t)}return a}function Pr(e){let t=Y(`slicc-delegation-line`,{kind:`feed`,verb:`feed_scoop`,label:qn(e.content.replace(/\*\*\[[^\]]*\]\*\*\s*/,``))}),n=document.createElement(`slicc-user-message`);return n.setBodyHtml(Ln(e.content)),[t,n]}function Fr(e){let t={message:e.content,"message-id":e.id};return a(e.content)?t.action=`settings`:r(e.content)?t.action=`change-model`:o(e.content)&&(t.action=`login`),Y(`slicc-error-card`,t)}function Ir(e){if(e.source===`lick`)return[Nr(e)];if(e.source===`delegation`||e.channel===`delegation`)return Pr(e);if(e.error)return[Fr(e)];if(e.role===`assistant`)return br(e);let t=Wn(e.content);return t?[Nr({...e,source:`lick`,channel:t})]:[ur(e)]}function Lr(e){let t=[];for(let n of e){let e=n;if(!n.source&&n.role===`user`){let t=Wn(n.content);t&&(e={...n,source:`lick`,channel:t})}let r=t[t.length-1];if(!(e.lickId||r?.lickId)&&e.source===`lick`&&r?.source===`lick`&&r.channel===e.channel){r.lickParts=[...r.lickParts??[r.content],e.content],r.lickCount=r.lickParts.length,r.content+=`\n\n${e.content}`;continue}t.push({...e})}return t}function Rr(e){return new Date(e).toLocaleDateString(void 0,{weekday:`short`,month:`short`,day:`numeric`})}function zr(e){return Y(`slicc-day-separator`,{label:Rr(e)})}function Br(e){let t=[],n=``;for(let r of e){let e=new Date(r.timestamp).toDateString();e!==n&&(t.push(zr(r.timestamp)),n=e),t.push(...Ir(r))}let r=document.createElement(`div`);return r.append(...t),Mr(r,{openClusterAnchors:new Set,toolCallLookup:(t,n)=>e.find(e=>e.id===t)?.toolCalls?.find(e=>e.id===n)}),Array.from(r.children)}var Vr=new Uint8Array([137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,1,0,0,0,1,8,4,0,0,0,181,28,12,2,0,0,0,11,73,68,65,84,120,218,99,100,96,0,0,0,6,0,2,48,129,208,47,0,0,0,0,73,69,78,68,174,66,96,130]);function Hr(e){let t=``;for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return typeof btoa==`function`?btoa(t):Buffer.from(t,`binary`).toString(`base64`)}var Ur=new Date(`2024-01-01T10:00:00`).getTime();function Q(e){return Ur+e*6e4}var Wr=`ui-fixture`;function Gr(){return[{id:`fx-user-1`,role:`user`,content:`Hey sliccy — can you summarize what this fixture covers?`,timestamp:Q(0)},{id:`fx-assistant-1`,role:`assistant`,content:`Sure! This session walks through every chat UI variant I know about. You'll see user and assistant bubbles, tool calls in every status, the six lick channels, a delegation, queued messages, and a streaming tail at the end so you can inspect the live state.`,timestamp:Q(.2)}]}function Kr(){return[{id:`fx-user-2`,role:`user`,content:`Show me some **markdown** — headings, lists, code, a blockquote.`,timestamp:Q(1)},{id:`fx-user-attachment`,role:`user`,content:`Use these attachments as visual and text context.`,timestamp:Q(1.1),attachments:[{id:`fx-att-image`,name:`dot.png`,mimeType:`image/png`,size:Vr.byteLength,kind:`image`,data:Hr(Vr)},{id:`fx-att-text`,name:`notes.txt`,mimeType:`text/plain`,size:21,kind:`text`,text:`Fixture attachment text`}]},{id:`fx-assistant-2`,role:`assistant`,content:"## Rich content sample,,Here is a short list:,,- `renderAssistantMessageContent` handles GFM markdown,- Code blocks get syntax highlighting,- Inline `code` uses the mono token,,A fenced code block:,,```ts,import { createChatFixture } from './chat-fixture.js';,,const msgs = createChatFixture();,console.log(msgs.length);,```,,> Blockquotes should feel quieter than regular text.,,And a nested ordered list:,,1. First step,2. Second step, 1. Sub-step A, 2. Sub-step B,3. Third step".split(`,`).join(`
74
+ `);t(async()=>{let{quickLabel:e}=await import(`./quick-llm-BdPuR9YE.js`).then(e=>e.n);return{quickLabel:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26])).then(({quickLabel:e})=>e({system:gr,prompt:`Label these tool calls (inputs only):\n${o}`,maxTokens:40})).then(e=>{let t=e?.replace(/^["']|["']$|\.$/g,``).trim()??``;_r(t)&&(fr.set(r,t),a&&mr.set(a,t),n.isConnected&&n.setAttribute(`label`,t))}).catch(()=>void 0).finally(()=>pr.delete(r))}function yr(e,t={}){let n=Y(`slicc-tool-cluster`,{count:String(e.length)});return t.open&&n.setAttribute(`open`,``),n.append(...e),t.toolCalls&&t.toolCalls.length>0&&vr(t.toolCalls,n),n}function br(e){let t=document.createElement(`slicc-agent-message`);t.setAttribute(`data-msg-id`,e.id);let n=(e.content??``).trim().length>0,r=d(e.timestamp);return r&&n&&t.setAttribute(`timestamp`,r),e.isStreaming&&t.setAttribute(`streaming`,``),t.setBodyHtml(Rn(e.content,e.isStreaming===!0)),n||t.setAttribute(`data-empty`,``),[t,...(e.toolCalls??[]).map(t=>lr(t,e.id))]}function xr(e,t){let n=e.querySelectorAll(`:scope > slicc-tool-cluster`);for(let e of n){let n=Array.from(e.querySelectorAll(`slicc-action-row`));Sr(e,n,t);let r=e.parentNode;if(!r){e.remove();continue}for(let t of n)Cr(t,r,e);e.remove()}}function Sr(e,t,n){if(!e.hasAttribute(`open`))return;let r=t[0]?.dataset.msgId;if(!r)return;let i=t.length>0&&t.every(e=>e.dataset.msgId===r),a=e.parentElement?.querySelector(`slicc-agent-message[data-msg-id="${r}"]`);i&&a?.hasAttribute(`streaming`)===!0||n.add(r)}function Cr(e,t,n){let r=e.dataset.msgId,i=r&&t instanceof Element?t.querySelector(`:scope > slicc-agent-message[data-msg-id="${r}"]`):null;if(!i||i.parentNode!==t){t.insertBefore(e,n);return}let a=i;for(;a.nextSibling instanceof HTMLElement&&a.nextSibling.tagName.toLowerCase()===`slicc-action-row`&&a.nextSibling.dataset.msgId===r;)a=a.nextSibling;t.insertBefore(e,a.nextSibling)}var wr=new Set([`slicc-user-message`,`slicc-lick-card`,`slicc-error-card`,`slicc-delegation-line`,`slicc-day-separator`]);function Tr(e){return e instanceof HTMLElement?wr.has(e.tagName.toLowerCase()):!0}function Er(e){return e instanceof HTMLElement&&e.tagName.toLowerCase()===`slicc-action-row`}function Dr(e){return e instanceof HTMLElement&&e.tagName.toLowerCase()===`slicc-agent-message`}function Or(e){let t=[],n=[];for(let r of e)Dr(r)?!r.hasAttribute(`data-empty`)&&n.length>0&&(t.push(n),n=[]):Er(r)&&n.push(r);return n.length>0&&t.push(n),t}function kr(e,t){let n=t[0]?.dataset.msgId;return!n||!t.every(e=>e.dataset.msgId===n)?!1:e.querySelector(`slicc-agent-message[data-msg-id="${n}"]`)?.hasAttribute(`streaming`)===!0}function Ar(e,t){let n=[];for(let r of e){let e=r.dataset.msgId,i=r.dataset.toolId;if(!e||!i)return;let a=t(e,i);if(!a)return;n.push(a)}return n}function jr(e,t){let n=e[0],r=n.parentNode;if(!r)return;let i=new Set(e),a=n.nextSibling;for(;a&&i.has(a);)a=a.nextSibling;let o=n.dataset.msgId,s=yr(e,{open:!!(o&&t.openClusterAnchors.has(o))||kr(r,e),toolCalls:t.toolCallLookup?Ar(e,t.toolCallLookup):void 0});r.insertBefore(s,a)}function Mr(e,t){xr(e,t.openClusterAnchors);let n=Array.from(e.children),r=0;for(;r<n.length;){if(Tr(n[r])){r++;continue}let e=r;for(;e<n.length&&!Tr(n[e]);)e++;let i=Or(n.slice(r,e));for(let e of i)e.length>=3&&jr(e,t);r=e}t.openClusterAnchors.clear()}function Nr(e){let t=Vn.exec(e.content),n=e.lickCount??1,r=Gn.exec(e.content),i=r?Kn(r[1]):null,a=Y(`slicc-lick-card`,{kind:e.channel??`webhook`,"event-label":i??t?.[2]??e.channel??`event`,collapsible:``,collapsed:``});i&&a.setAttribute(`hue`,p({isCone:!1,name:i})),n>1&&a.setAttribute(`count`,String(n)),e.lickState&&e.lickState!==`pending`&&a.setAttribute(`state`,e.lickState);let o=e.lickParts??[e.content];for(let e of o){let t=document.createElement(`div`);t.innerHTML=Ln(Un(e)),a.append(t)}return a}function Pr(e){let t=Y(`slicc-delegation-line`,{kind:`feed`,verb:`feed_scoop`,label:qn(e.content.replace(/\*\*\[[^\]]*\]\*\*\s*/,``))}),n=document.createElement(`slicc-user-message`);return n.setBodyHtml(Ln(e.content)),[t,n]}function Fr(e){let t={message:e.content,"message-id":e.id};return a(e.content)?t.action=`settings`:r(e.content)?t.action=`change-model`:o(e.content)&&(t.action=`login`),Y(`slicc-error-card`,t)}function Ir(e){if(e.source===`lick`)return[Nr(e)];if(e.source===`delegation`||e.channel===`delegation`)return Pr(e);if(e.error)return[Fr(e)];if(e.role===`assistant`)return br(e);let t=Wn(e.content);return t?[Nr({...e,source:`lick`,channel:t})]:[ur(e)]}function Lr(e){let t=[];for(let n of e){let e=n;if(!n.source&&n.role===`user`){let t=Wn(n.content);t&&(e={...n,source:`lick`,channel:t})}let r=t[t.length-1];if(!(e.lickId||r?.lickId)&&e.source===`lick`&&r?.source===`lick`&&r.channel===e.channel){r.lickParts=[...r.lickParts??[r.content],e.content],r.lickCount=r.lickParts.length,r.content+=`\n\n${e.content}`;continue}t.push({...e})}return t}function Rr(e){return new Date(e).toLocaleDateString(void 0,{weekday:`short`,month:`short`,day:`numeric`})}function zr(e){return Y(`slicc-day-separator`,{label:Rr(e)})}function Br(e){let t=[],n=``;for(let r of e){let e=new Date(r.timestamp).toDateString();e!==n&&(t.push(zr(r.timestamp)),n=e),t.push(...Ir(r))}let r=document.createElement(`div`);return r.append(...t),Mr(r,{openClusterAnchors:new Set,toolCallLookup:(t,n)=>e.find(e=>e.id===t)?.toolCalls?.find(e=>e.id===n)}),Array.from(r.children)}var Vr=new Uint8Array([137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,1,0,0,0,1,8,4,0,0,0,181,28,12,2,0,0,0,11,73,68,65,84,120,218,99,100,96,0,0,0,6,0,2,48,129,208,47,0,0,0,0,73,69,78,68,174,66,96,130]);function Hr(e){let t=``;for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return typeof btoa==`function`?btoa(t):Buffer.from(t,`binary`).toString(`base64`)}var Ur=new Date(`2024-01-01T10:00:00`).getTime();function Q(e){return Ur+e*6e4}var Wr=`ui-fixture`;function Gr(){return[{id:`fx-user-1`,role:`user`,content:`Hey sliccy — can you summarize what this fixture covers?`,timestamp:Q(0)},{id:`fx-assistant-1`,role:`assistant`,content:`Sure! This session walks through every chat UI variant I know about. You'll see user and assistant bubbles, tool calls in every status, the six lick channels, a delegation, queued messages, and a streaming tail at the end so you can inspect the live state.`,timestamp:Q(.2)}]}function Kr(){return[{id:`fx-user-2`,role:`user`,content:`Show me some **markdown** — headings, lists, code, a blockquote.`,timestamp:Q(1)},{id:`fx-user-attachment`,role:`user`,content:`Use these attachments as visual and text context.`,timestamp:Q(1.1),attachments:[{id:`fx-att-image`,name:`dot.png`,mimeType:`image/png`,size:Vr.byteLength,kind:`image`,data:Hr(Vr)},{id:`fx-att-text`,name:`notes.txt`,mimeType:`text/plain`,size:21,kind:`text`,text:`Fixture attachment text`}]},{id:`fx-assistant-2`,role:`assistant`,content:"## Rich content sample,,Here is a short list:,,- `renderAssistantMessageContent` handles GFM markdown,- Code blocks get syntax highlighting,- Inline `code` uses the mono token,,A fenced code block:,,```ts,import { createChatFixture } from './chat-fixture.js';,,const msgs = createChatFixture();,console.log(msgs.length);,```,,> Blockquotes should feel quieter than regular text.,,And a nested ordered list:,,1. First step,2. Second step, 1. Sub-step A, 2. Sub-step B,3. Third step".split(`,`).join(`
75
75
  `),timestamp:Q(1.3)}]}function qr(){return[{id:`fx-assistant-3`,role:`assistant`,content:`Let me check a few things before I answer.`,timestamp:Q(2),toolCalls:[{id:`fx-tc-read`,name:`read_file`,input:{path:`/workspace/README.md`},result:`# Sample README
76
76
 
77
77
  This is the contents that read_file returned.`},{id:`fx-tc-bash`,name:`bash`,input:{command:`ls -la /workspace`},result:`total 24
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/legacy-styles-DcRu2WCJ.js","assets/preload-helper-Czpn1I53.js","assets/sprinkle-manager-BlrAt5ae.js","assets/logger-DDBAeTLF.js","assets/panel-rpc-DmJSNs0I.js","assets/rolldown-runtime-aKtaBQYM.js","assets/telemetry-Dxrv_mDE.js","assets/runtime-env-DH4NDw4t.js","assets/sprinkle-renderer-oLgy--3J.js","assets/theme-C8b_iQ_9.js","assets/theme-engine-jfuTMXZM.js","assets/sprinkle-bridge-DziYRsuS.js","assets/hid-device-registry-DboUgvzI.js","assets/serial-port-registry-DsPZvGpT.js","assets/usb-operations-BQbhk96u.js","assets/usb-device-registry-BOGfZXgp.js","assets/shared-BYVJAPbn.js","assets/mime-types-ugOWOUZ9.js","assets/fetch-body-D2PwksUW.js","assets/setup-sprinkle-exec-jQ0RvgRy.js","assets/dip-BubHLPf_.js","assets/wc-permissions-registry-Blyunq37.js","assets/quick-llm-Dl7XIpey.js","assets/account-store-DqOwEqPJ.js","assets/compat-aVSWLlYQ.js","assets/models-Bnh9VDA1.js","assets/event-stream-qbAZIAKV.js","assets/provider-env-D37PhSJu.js","assets/__vite-browser-external-SwrSgYTf.js","assets/openrouter.models-DS1_VkCm.js","assets/context-compaction-_UkD06XB.js","assets/src-DoFhVmQT.js","assets/proxied-fetch-CfcFb0B0.js","assets/base64-DpPqYZJF.js","assets/secret-topology-Baeul5rD.js","assets/secrets-bridge-client-CLRo0NLf.js","assets/port-bridge-client-DdolH4cw.js","assets/tool-ui-DfXu6quJ.js","assets/providers-Bq7zW4Gk.js","assets/bedrock-camp-CVignIdH.js","assets/transform-messages-wECJwtH0.js","assets/llm-session-id-bZQs6gBN.js","assets/icons-C5g936Qd.js"])))=>i.map(i=>d[i]);
2
- import{t as e}from"./preload-helper-Czpn1I53.js";import{n as t}from"./runtime-env-DH4NDw4t.js";var n=`sprinkle:`,r=`slicc-sprinkle-icons`;function i(){try{let e=localStorage.getItem(r);if(!e)return{};let t=JSON.parse(e);if(typeof t!=`object`||!t)return{};let n={};for(let[e,r]of Object.entries(t))typeof r==`string`&&(n[e]=r);return n}catch{return{}}}function a(e){try{let t=new Set(e),n=Object.fromEntries(Object.entries(i()).filter(([e])=>t.has(e)));localStorage.setItem(r,JSON.stringify(n))}catch{}}function o(e,t){try{localStorage.setItem(r,JSON.stringify({...i(),[e]:t}))}catch{}}function s(e){return typeof e==`string`&&/^[a-z0-9]+(-[a-z0-9]+)*$/.test(e)}function c(e){return`${n}${e}`}function l(e){return e?.startsWith(n)?e.slice(9):null}var u=[{id:`files`,label:`files`,kind:`tool`},{id:`term`,label:`terminal`,kind:`tool`},{id:`memory`,label:`memory`,kind:`tool`},{id:`monitor`,label:`monitor`,kind:`tool`}],d=class{#e;#t=new Map;#n=new Map;#r=new Map;#i=new Set;constructor(e){this.#e=e}seedDockItems(e){let t=i(),n=!1;for(let r of e)this.#n.has(r)||(this.#i.add(r),this.#n.set(r,{id:c(r),icon:t[r]??`sparkles`,label:r,kind:`sprinkle`}),n=!0);n&&this.#d()}dropUnconfirmedSeeds(){let e=!1;for(let t of this.#i)this.#r.has(t)||(this.#n.delete(t),e=!0);this.#i.clear(),e&&this.#d()}callbacks(){return{addSprinkle:(e,t,n,r,i)=>this.#a(e,t,n,i),removeSprinkle:e=>this.#o(e,{keepDockItem:!1}),minimizeSprinkle:e=>this.#s(e),registerSprinkle:(e,t,n)=>this.#c(e,t,n?.icon),unregisterSprinkle:e=>this.#u(e),closeSprinkleContent:e=>this.#o(e,{keepDockItem:!0})}}updateDockIcon(e,t){let n=this.#n.get(e);!n||n.icon===t||(this.#n.set(e,{...n,icon:t}),this.#d())}defaultIconNames(){return[...this.#n.entries()].filter(([,e])=>e.icon===`sparkles`).map(([e])=>e)}isOpen(e){return this.#r.has(e)}#a(e,t,n,r){let i=c(e),a=this.#r.get(e);a||(a=document.createElement(`slicc-surface`),a.setAttribute(`surface-id`,i),a.setAttribute(`layout`,`flex`),this.#e.workbenchBody.append(a),this.#r.set(e,a)),a.replaceChildren(n);let o=this.#l(e,r?.icon);this.#t.set(e,{id:i,label:t,kind:`sprinkle`,closable:!0,badge:o}),this.#c(e,t,r?.icon),this.#d(),!r?.attention&&!r?.background&&this.#f(i)}#o(e,t){let n=c(e);this.#r.get(e)?.remove(),this.#r.delete(e),this.#t.delete(e),t.keepDockItem||this.#n.delete(e),this.#d(),this.#e.workbenchBody.getAttribute(`active`)===n&&this.#f(`files`)}#s(e){this.#e.workbenchBody.getAttribute(`active`)===c(e)&&(this.#e.shell.removeAttribute(`open`),this.#e.dock.removeAttribute(`active`))}#c(e,t,n){this.#i.delete(e);let r=this.#l(e,n);this.#n.set(e,{id:c(e),icon:r,label:t,kind:`sprinkle`}),this.#d()}#l(e,t){return s(t)?t:i()[e]??`sparkles`}#u(e){this.#r.has(e)||(this.#n.delete(e),this.#d())}#d(){this.#e.tabBar.tabs=[...u,...this.#t.values()],this.#e.dock.items=[...this.#n.values()],this.#e.workbenchHeader.toggleAttribute(`hidden`,this.#t.size===0)}#f(e){this.#e.shell.setAttribute(`open`,``),this.#e.workbenchBody.setAttribute(`active`,e),this.#e.dock.setAttribute(`active`,e),this.#e.tabBar.setAttribute(`active`,e)}};async function f(n){let{refs:r,client:i,fs:o,instanceId:s,onAttachImage:c,log:u}=n,f=new d(r),{loadSprinkleStyles:h}=await e(async()=>{let{loadSprinkleStyles:e}=await import(`./legacy-styles-DcRu2WCJ.js`);return{loadSprinkleStyles:e}},__vite__mapDeps([0,1]));await h();let{SprinkleManager:g,readKnownSprinkleNames:_}=await e(async()=>{let{SprinkleManager:e,readKnownSprinkleNames:t}=await import(`./sprinkle-manager-BlrAt5ae.js`);return{SprinkleManager:e,readKnownSprinkleNames:t}},__vite__mapDeps([2,3,4,5,6,1,7,8,9,10,11,12,13,14,15,16,17,18]));f.seedDockItems(_());let{installSprinkleManagerHandlerOverChannel:v}=await e(async()=>{let{installSprinkleManagerHandlerOverChannel:e}=await import(`./sprinkle-bridge-channel-DiTL7Uq5.js`);return{installSprinkleManagerHandlerOverChannel:e}},[]),{createSprinkleExecHandler:y}=await e(async()=>{let{createSprinkleExecHandler:e}=await import(`./setup-sprinkle-exec-jQ0RvgRy.js`);return{createSprinkleExecHandler:e}},__vite__mapDeps([19,1])),{setDipExecHandler:b}=await e(async()=>{let{setDipExecHandler:e}=await import(`./dip-BubHLPf_.js`).then(e=>e.n);return{setDipExecHandler:e}},__vite__mapDeps([20,5,1,7,21,12,13,14,15,8,9,10,3,11,16,17,18])),x=t(),S=y(i),C=new g(o,e=>{e.type===`sprinkle`&&e.sprinkleName&&i.sendSprinkleLick(e.sprinkleName,e.body,e.targetScoop)},f.callbacks(),()=>{let e=i.getScoops().find(e=>e.isCone);e&&i.stopScoop(e.jid)},{...x?{autoOpenBehavior:`attention`}:{},inlineSprinkles:new Set([`welcome`]),execHandler:S,onAttachImage:c??(()=>{})});if(window.__slicc_sprinkleManager=C,b(S),s!==void 0){let e=v(C,{instanceId:s});window.addEventListener(`beforeunload`,()=>e(),{once:!0})}else if(x){let{handleSprinkleOp:t}=await e(async()=>{let{handleSprinkleOp:e}=await import(`./sprinkle-op-handler-Dta4p7Tc.js`);return{handleSprinkleOp:e}},[]);i.setSprinkleOpHandler(e=>{let{id:n,op:r,name:i,data:a}=e;t(C,n,r,i,a)})}m(r.tabBar,e=>C.close(e)),r.dock.addEventListener(`slicc-dock-select`,e=>{let t=l(e.detail?.id);t&&C.activate(t).catch(e=>u.error(`WC sprinkle activate failed`,e))});let w=!1,T=async()=>{if(await C.refresh(),C.available().length>0){f.dropUnconfirmedSeeds();let t=C.available().map(e=>e.name),{pruneKnownSprinkleNames:n}=await e(async()=>{let{pruneKnownSprinkleNames:e}=await import(`./sprinkle-manager-BlrAt5ae.js`);return{pruneKnownSprinkleNames:e}},__vite__mapDeps([2,3,4,5,6,1,7,8,9,10,11,12,13,14,15,16,17,18]));n(t),a(t)}await C.restoreOpenSprinkles().catch(e=>{u.warn(`WC shell: failed to restore open sprinkles`,e)}),w||(w=!0,e(async()=>{let{pickLucideIcon:e}=await import(`./quick-llm-Dl7XIpey.js`).then(e=>e.n);return{pickLucideIcon:e}},__vite__mapDeps([22,5,23,1,24,25,26,27,28,29,30,3,31,32,33,7,18,34,35,36,37,38,4,39,40,41,42])).then(({pickLucideIcon:e})=>p(f,C.available(),t=>e({subject:t}))).catch(()=>void 0).finally(()=>{w=!1}))};return T().catch(e=>u.warn(`WC shell: initial sprinkle resync failed`,e)),{manager:C,zone:f,resync:T}}async function p(e,t,n){let r=new Set(e.defaultIconNames()),a=i();for(let i of t){if(!r.has(i.name)||s(i.icon))continue;let t=a[i.name];if(t){e.updateDockIcon(i.name,t);continue}let c=await n(`"${i.title}" — a SLICC sprinkle panel (${i.name})`);c&&(o(i.name,c),e.updateDockIcon(i.name,c))}}function m(e,t){e.addEventListener(`tab-close`,e=>{let n=l(e.detail?.id);n&&t(n)})}export{d as WcSprinkleZone,f as wireWcSprinkles};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/legacy-styles-DcRu2WCJ.js","assets/preload-helper-Czpn1I53.js","assets/sprinkle-manager-BlrAt5ae.js","assets/logger-DDBAeTLF.js","assets/panel-rpc-DmJSNs0I.js","assets/rolldown-runtime-aKtaBQYM.js","assets/telemetry-Dxrv_mDE.js","assets/runtime-env-DH4NDw4t.js","assets/sprinkle-renderer-oLgy--3J.js","assets/theme-C8b_iQ_9.js","assets/theme-engine-jfuTMXZM.js","assets/sprinkle-bridge-DziYRsuS.js","assets/hid-device-registry-DboUgvzI.js","assets/serial-port-registry-DsPZvGpT.js","assets/usb-operations-BQbhk96u.js","assets/usb-device-registry-BOGfZXgp.js","assets/shared-BYVJAPbn.js","assets/mime-types-ugOWOUZ9.js","assets/fetch-body-D2PwksUW.js","assets/setup-sprinkle-exec-jQ0RvgRy.js","assets/dip-BubHLPf_.js","assets/wc-permissions-registry-Blyunq37.js","assets/quick-llm-BdPuR9YE.js","assets/account-store-Cl38jIN3.js","assets/compat-aVSWLlYQ.js","assets/models-Bnh9VDA1.js","assets/event-stream-qbAZIAKV.js","assets/provider-env-D37PhSJu.js","assets/__vite-browser-external-SwrSgYTf.js","assets/openrouter.models-DS1_VkCm.js","assets/context-compaction-_UkD06XB.js","assets/src-DoFhVmQT.js","assets/proxied-fetch-CfcFb0B0.js","assets/base64-DpPqYZJF.js","assets/secret-topology-Baeul5rD.js","assets/secrets-bridge-client-CLRo0NLf.js","assets/port-bridge-client-DdolH4cw.js","assets/tool-ui-DfXu6quJ.js","assets/providers-C3QccIn1.js","assets/bedrock-camp-CVignIdH.js","assets/transform-messages-wECJwtH0.js","assets/llm-session-id-bZQs6gBN.js","assets/icons-C5g936Qd.js"])))=>i.map(i=>d[i]);
2
+ import{t as e}from"./preload-helper-Czpn1I53.js";import{n as t}from"./runtime-env-DH4NDw4t.js";var n=`sprinkle:`,r=`slicc-sprinkle-icons`;function i(){try{let e=localStorage.getItem(r);if(!e)return{};let t=JSON.parse(e);if(typeof t!=`object`||!t)return{};let n={};for(let[e,r]of Object.entries(t))typeof r==`string`&&(n[e]=r);return n}catch{return{}}}function a(e){try{let t=new Set(e),n=Object.fromEntries(Object.entries(i()).filter(([e])=>t.has(e)));localStorage.setItem(r,JSON.stringify(n))}catch{}}function o(e,t){try{localStorage.setItem(r,JSON.stringify({...i(),[e]:t}))}catch{}}function s(e){return typeof e==`string`&&/^[a-z0-9]+(-[a-z0-9]+)*$/.test(e)}function c(e){return`${n}${e}`}function l(e){return e?.startsWith(n)?e.slice(9):null}var u=[{id:`files`,label:`files`,kind:`tool`},{id:`term`,label:`terminal`,kind:`tool`},{id:`memory`,label:`memory`,kind:`tool`},{id:`monitor`,label:`monitor`,kind:`tool`}],d=class{#e;#t=new Map;#n=new Map;#r=new Map;#i=new Set;constructor(e){this.#e=e}seedDockItems(e){let t=i(),n=!1;for(let r of e)this.#n.has(r)||(this.#i.add(r),this.#n.set(r,{id:c(r),icon:t[r]??`sparkles`,label:r,kind:`sprinkle`}),n=!0);n&&this.#d()}dropUnconfirmedSeeds(){let e=!1;for(let t of this.#i)this.#r.has(t)||(this.#n.delete(t),e=!0);this.#i.clear(),e&&this.#d()}callbacks(){return{addSprinkle:(e,t,n,r,i)=>this.#a(e,t,n,i),removeSprinkle:e=>this.#o(e,{keepDockItem:!1}),minimizeSprinkle:e=>this.#s(e),registerSprinkle:(e,t,n)=>this.#c(e,t,n?.icon),unregisterSprinkle:e=>this.#u(e),closeSprinkleContent:e=>this.#o(e,{keepDockItem:!0})}}updateDockIcon(e,t){let n=this.#n.get(e);!n||n.icon===t||(this.#n.set(e,{...n,icon:t}),this.#d())}defaultIconNames(){return[...this.#n.entries()].filter(([,e])=>e.icon===`sparkles`).map(([e])=>e)}isOpen(e){return this.#r.has(e)}#a(e,t,n,r){let i=c(e),a=this.#r.get(e);a||(a=document.createElement(`slicc-surface`),a.setAttribute(`surface-id`,i),a.setAttribute(`layout`,`flex`),this.#e.workbenchBody.append(a),this.#r.set(e,a)),a.replaceChildren(n);let o=this.#l(e,r?.icon);this.#t.set(e,{id:i,label:t,kind:`sprinkle`,closable:!0,badge:o}),this.#c(e,t,r?.icon),this.#d(),!r?.attention&&!r?.background&&this.#f(i)}#o(e,t){let n=c(e);this.#r.get(e)?.remove(),this.#r.delete(e),this.#t.delete(e),t.keepDockItem||this.#n.delete(e),this.#d(),this.#e.workbenchBody.getAttribute(`active`)===n&&this.#f(`files`)}#s(e){this.#e.workbenchBody.getAttribute(`active`)===c(e)&&(this.#e.shell.removeAttribute(`open`),this.#e.dock.removeAttribute(`active`))}#c(e,t,n){this.#i.delete(e);let r=this.#l(e,n);this.#n.set(e,{id:c(e),icon:r,label:t,kind:`sprinkle`}),this.#d()}#l(e,t){return s(t)?t:i()[e]??`sparkles`}#u(e){this.#r.has(e)||(this.#n.delete(e),this.#d())}#d(){this.#e.tabBar.tabs=[...u,...this.#t.values()],this.#e.dock.items=[...this.#n.values()],this.#e.workbenchHeader.toggleAttribute(`hidden`,this.#t.size===0)}#f(e){this.#e.shell.setAttribute(`open`,``),this.#e.workbenchBody.setAttribute(`active`,e),this.#e.dock.setAttribute(`active`,e),this.#e.tabBar.setAttribute(`active`,e)}};async function f(n){let{refs:r,client:i,fs:o,instanceId:s,onAttachImage:c,log:u}=n,f=new d(r),{loadSprinkleStyles:h}=await e(async()=>{let{loadSprinkleStyles:e}=await import(`./legacy-styles-DcRu2WCJ.js`);return{loadSprinkleStyles:e}},__vite__mapDeps([0,1]));await h();let{SprinkleManager:g,readKnownSprinkleNames:_}=await e(async()=>{let{SprinkleManager:e,readKnownSprinkleNames:t}=await import(`./sprinkle-manager-BlrAt5ae.js`);return{SprinkleManager:e,readKnownSprinkleNames:t}},__vite__mapDeps([2,3,4,5,6,1,7,8,9,10,11,12,13,14,15,16,17,18]));f.seedDockItems(_());let{installSprinkleManagerHandlerOverChannel:v}=await e(async()=>{let{installSprinkleManagerHandlerOverChannel:e}=await import(`./sprinkle-bridge-channel-DiTL7Uq5.js`);return{installSprinkleManagerHandlerOverChannel:e}},[]),{createSprinkleExecHandler:y}=await e(async()=>{let{createSprinkleExecHandler:e}=await import(`./setup-sprinkle-exec-jQ0RvgRy.js`);return{createSprinkleExecHandler:e}},__vite__mapDeps([19,1])),{setDipExecHandler:b}=await e(async()=>{let{setDipExecHandler:e}=await import(`./dip-BubHLPf_.js`).then(e=>e.n);return{setDipExecHandler:e}},__vite__mapDeps([20,5,1,7,21,12,13,14,15,8,9,10,3,11,16,17,18])),x=t(),S=y(i),C=new g(o,e=>{e.type===`sprinkle`&&e.sprinkleName&&i.sendSprinkleLick(e.sprinkleName,e.body,e.targetScoop)},f.callbacks(),()=>{let e=i.getScoops().find(e=>e.isCone);e&&i.stopScoop(e.jid)},{...x?{autoOpenBehavior:`attention`}:{},inlineSprinkles:new Set([`welcome`]),execHandler:S,onAttachImage:c??(()=>{})});if(window.__slicc_sprinkleManager=C,b(S),s!==void 0){let e=v(C,{instanceId:s});window.addEventListener(`beforeunload`,()=>e(),{once:!0})}else if(x){let{handleSprinkleOp:t}=await e(async()=>{let{handleSprinkleOp:e}=await import(`./sprinkle-op-handler-Dta4p7Tc.js`);return{handleSprinkleOp:e}},[]);i.setSprinkleOpHandler(e=>{let{id:n,op:r,name:i,data:a}=e;t(C,n,r,i,a)})}m(r.tabBar,e=>C.close(e)),r.dock.addEventListener(`slicc-dock-select`,e=>{let t=l(e.detail?.id);t&&C.activate(t).catch(e=>u.error(`WC sprinkle activate failed`,e))});let w=!1,T=async()=>{if(await C.refresh(),C.available().length>0){f.dropUnconfirmedSeeds();let t=C.available().map(e=>e.name),{pruneKnownSprinkleNames:n}=await e(async()=>{let{pruneKnownSprinkleNames:e}=await import(`./sprinkle-manager-BlrAt5ae.js`);return{pruneKnownSprinkleNames:e}},__vite__mapDeps([2,3,4,5,6,1,7,8,9,10,11,12,13,14,15,16,17,18]));n(t),a(t)}await C.restoreOpenSprinkles().catch(e=>{u.warn(`WC shell: failed to restore open sprinkles`,e)}),w||(w=!0,e(async()=>{let{pickLucideIcon:e}=await import(`./quick-llm-BdPuR9YE.js`).then(e=>e.n);return{pickLucideIcon:e}},__vite__mapDeps([22,5,23,1,24,25,26,27,28,29,30,3,31,32,33,7,18,34,35,36,37,38,4,39,40,41,42])).then(({pickLucideIcon:e})=>p(f,C.available(),t=>e({subject:t}))).catch(()=>void 0).finally(()=>{w=!1}))};return T().catch(e=>u.warn(`WC shell: initial sprinkle resync failed`,e)),{manager:C,zone:f,resync:T}}async function p(e,t,n){let r=new Set(e.defaultIconNames()),a=i();for(let i of t){if(!r.has(i.name)||s(i.icon))continue;let t=a[i.name];if(t){e.updateDockIcon(i.name,t);continue}let c=await n(`"${i.title}" — a SLICC sprinkle panel (${i.name})`);c&&(o(i.name,c),e.updateDockIcon(i.name,c))}}function m(e,t){e.addEventListener(`tab-close`,e=>{let n=l(e.detail?.id);n&&t(n)})}export{d as WcSprinkleZone,f as wireWcSprinkles};
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/panel-rpc-DmJSNs0I.js","assets/rolldown-runtime-aKtaBQYM.js","assets/panel-rpc-handlers-6LpO_FVl.js","assets/account-store-Cl38jIN3.js","assets/preload-helper-Czpn1I53.js","assets/compat-aVSWLlYQ.js","assets/models-Bnh9VDA1.js","assets/event-stream-qbAZIAKV.js","assets/provider-env-D37PhSJu.js","assets/__vite-browser-external-SwrSgYTf.js","assets/openrouter.models-DS1_VkCm.js","assets/context-compaction-_UkD06XB.js","assets/logger-DDBAeTLF.js","assets/src-DoFhVmQT.js","assets/proxied-fetch-CfcFb0B0.js","assets/base64-DpPqYZJF.js","assets/runtime-env-DH4NDw4t.js","assets/fetch-body-D2PwksUW.js","assets/secret-topology-Baeul5rD.js","assets/secrets-bridge-client-CLRo0NLf.js","assets/port-bridge-client-DdolH4cw.js","assets/tool-ui-DfXu6quJ.js","assets/providers-C3QccIn1.js","assets/bedrock-camp-CVignIdH.js","assets/transform-messages-wECJwtH0.js","assets/provider-settings-5ZSUhS4X.js","assets/tray-runtime-config-9kTxza5l.js","assets/messages-BD4p8GuF.js","assets/tray-follower-status-5SqDRLX8.js","assets/clipboard-DuHpK59o.js","assets/telemetry-Dxrv_mDE.js","assets/tray-join-url-BIvzbiFR.js","assets/hid-device-registry-DboUgvzI.js","assets/serial-port-registry-DsPZvGpT.js","assets/usb-operations-BQbhk96u.js","assets/usb-device-registry-BOGfZXgp.js","assets/wc-permissions-registry-Blyunq37.js","assets/tray-leader-BDMuV-1a.js","assets/db-ysOO0kLr.js","assets/tray-sync-protocol-DdoErB3E.js","assets/hosted-config-apply-uAym2aS5.js","assets/sha256-DmK25X5D.js","assets/wc-transcript-export-B3p8LhYu.js","assets/export-spool-DCxGPg43.js","assets/theme-engine-jfuTMXZM.js","assets/legacy-styles-DcRu2WCJ.js","assets/tray-leave-runtime-DuZ41JQ-.js"])))=>i.map(i=>d[i]);
2
+ import{P as e,R as t,d as n}from"./account-store-Cl38jIN3.js";import{t as r}from"./preload-helper-Czpn1I53.js";import{n as i}from"./attachments-CByeG2Ru.js";import{t as a}from"./logger-DDBAeTLF.js";import{n as o,t as s}from"./base64-DpPqYZJF.js";import{r as c}from"./src-DoFhVmQT.js";import{a as l,l as u,n as d,o as f,r as p,u as m}from"./tray-sync-protocol-DdoErB3E.js";import{o as h,t as g}from"./proxied-fetch-CfcFb0B0.js";import{d as _,i as v,n as y,r as b}from"./tray-runtime-config-9kTxza5l.js";import{r as x}from"./panel-rpc-DmJSNs0I.js";import{n as ee,o as te,t as S}from"./tray-follower-status-5SqDRLX8.js";import"./provider-settings-5ZSUhS4X.js";import"./handoff-link-Dmaaww5x.js";import{t as ne}from"./remote-cdp-transport-BWNdvwP2.js";import"./browser-COVn7LPD.js";import{t as re}from"./terminal-session-client-BylrXUky.js";import{i as ie,n as C,t as ae}from"./tray-leader-BDMuV-1a.js";import{t as oe}from"./synthetic-cdp-transport-CtfKyiws.js";import{n as w,t as se}from"./leader-session-events-m7I5BMZy.js";import{t as ce}from"./wc-scoop-color-CByZNEJo.js";import{a as T,i as E,n as D,o as le,r as ue,s as de,t as fe}from"./wc-floatbar-online-B6M0vf6K.js";a(`scoops.tray-leave`),a(`scoops.tray-join`);var O=null;function k(e){O=e}function A(){return O?.()??[]}var pe=`slicc.leaderTrayFollowers`;function j(e,t=globalThis.localStorage){try{t?.setItem(pe,JSON.stringify(e))}catch{}}function M(e){if(e.userName)return`${e.providerId}:${e.userName}`;if(e.accessToken)try{let t=JSON.parse(atob(e.accessToken.split(`.`)[1].replace(/-/g,`+`).replace(/_/g,`/`))),n=t.email??t.user_id??t.sub;if(n)return`${e.providerId}:${n}`}catch{}return null}async function N(){try{let e=n().filter(e=>!e.loggedOut),t=[`adobe`,`github`].map(t=>e.find(e=>e.providerId===t)).find(Boolean)??e[0],r=t?M(t):null;if(!r)return`00000000`;let i=await crypto.subtle.digest(`SHA-256`,new TextEncoder().encode(r));return Array.from(new Uint8Array(i,0,4),e=>e.toString(16).padStart(2,`0`)).join(``)}catch{return`00000000`}}async function P(e){let{instanceId:t,browser:n,remoteCdpBridge:i,remoteCdpPushChannel:a,getLeader:o,performTrayLeaveLocally:s,window:c}=e,{installPanelRpcHandler:l,createPanelRpcEventEmitter:u}=await r(async()=>{let{installPanelRpcHandler:e,createPanelRpcEventEmitter:t}=await import(`./panel-rpc-DmJSNs0I.js`).then(e=>e.i);return{installPanelRpcHandler:e,createPanelRpcEventEmitter:t}},__vite__mapDeps([0,1])),{createStandalonePanelRpcHandlers:d}=await r(async()=>{let{createStandalonePanelRpcHandlers:e}=await import(`./panel-rpc-handlers-6LpO_FVl.js`);return{createStandalonePanelRpcHandlers:e}},__vite__mapDeps([2,3,1,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,0,23,24,25,26,27,28,29,30,31,32,33,34,35])),{getLeaderPermissionsSurface:f}=await r(async()=>{let{getLeaderPermissionsSurface:e}=await import(`./wc-permissions-registry-Blyunq37.js`).then(e=>e.r);return{getLeaderPermissionsSurface:e}},__vite__mapDeps([36,1])),p=u({instanceId:t}),m=new Map,h=l({instanceId:t,handlers:d({resetTray:async()=>{let e=o();if(!e)throw Error(`no active tray session to reset`);return await e.reset()},leaveTray:async({workerBaseUrl:e,requestId:t})=>await s({workerBaseUrl:e,requestId:t}),joinTray:({joinUrl:e})=>(_(c.localStorage,e),c.dispatchEvent(new CustomEvent(`slicc:tray-join`,{detail:{joinUrl:e}})),{joinUrl:e}),emitEvent:(e,t)=>p.emit(e,t),emitCherrySliccEvent:(e,t,n)=>o()?.sync.emitCherrySliccEvent(e,t,n)??!1,execOnRemote:async({runtimeId:e,command:t,cwd:n,env:r,execToken:i,timeoutMs:a})=>{let s=o()?.currentLeaderSync;if(!s)throw Error(`ssh: no active leader tray`);let c=new AbortController;m.set(i,c);try{return await s.execOnRemote(e,t,{cwd:n,env:r,signal:c.signal,timeoutMs:a})}finally{m.delete(i)}},signalRemoteExec:({execToken:e})=>{m.get(e)?.abort()},mintPreview:async({entryPath:e,servedRoot:t,bridge:n,noBridge:i,maxTabs:a,quiet:s,webhookId:c})=>{let l=o()?.currentLeaderSync;if(!l)throw Error(`serve: no active leader tray; cannot mint preview`);let{getLeaderTrayRuntimeStatus:u}=await r(async()=>{let{getLeaderTrayRuntimeStatus:e}=await import(`./tray-leader-BDMuV-1a.js`).then(e=>e.a);return{getLeaderTrayRuntimeStatus:e}},__vite__mapDeps([37,1,12,14,4,15,13,16,17,26,27,38])),d=u().session;if(!d)throw Error(`serve: leader tray has no active session`);let f=new URL(d.controllerUrl).pathname.split(`/`).pop()??``,{CHERRY_RUNTIME_TAG:p}=await r(async()=>{let{CHERRY_RUNTIME_TAG:e}=await import(`./tray-sync-protocol-DdoErB3E.js`).then(e=>e.s);return{CHERRY_RUNTIME_TAG:e}},__vite__mapDeps([39,1,12,13])),{mintPreviewViaWorker:m}=await r(async()=>{let{mintPreviewViaWorker:e}=await import(`./preview-mint-client-CNzSnbyh.js`);return{mintPreviewViaWorker:e}},[]),h=l.getConnectedFollowers().some(e=>e.runtime===p),g=!i&&(n||h),_=!i&&n,v=await N(),{url:y,previewToken:b}=await m({workerBaseUrl:d.workerBaseUrl,trayId:d.trayId,controllerToken:f,servedRoot:t,entryPath:e,allowLive:g,bridge:_,maxTabs:a,webhookId:c,userHash:v}),x=e?e.split(`/`).pop()??`Preview`:`Preview`;return l.registerMintedPreview(b,{url:y,title:x,quiet:s??!1}),l.broadcastPreviewOpen(y),{url:y,pushed:l.getConnectedFollowers().length,previewToken:b}},revokePreview:async({previewToken:e})=>{let t=o()?.currentLeaderSync;if(!t)throw Error(`serve --stop: no active leader tray; cannot revoke preview`);let{getLeaderTrayRuntimeStatus:n}=await r(async()=>{let{getLeaderTrayRuntimeStatus:e}=await import(`./tray-leader-BDMuV-1a.js`).then(e=>e.a);return{getLeaderTrayRuntimeStatus:e}},__vite__mapDeps([37,1,12,14,4,15,13,16,17,26,27,38])),i=n().session;if(!i)throw Error(`serve --stop: leader tray has no active session`);let a=new URL(i.controllerUrl).pathname.split(`/`).pop()??``,{revokePreviewViaWorker:s}=await r(async()=>{let{revokePreviewViaWorker:e}=await import(`./preview-mint-client-CNzSnbyh.js`);return{revokePreviewViaWorker:e}},[]),c=await s({workerBaseUrl:i.workerBaseUrl,trayId:i.trayId,controllerToken:a,previewToken:e});return t.dropMintedPreview(e),c},listPreviews:async()=>{let{getLeaderTrayRuntimeStatus:e}=await r(async()=>{let{getLeaderTrayRuntimeStatus:e}=await import(`./tray-leader-BDMuV-1a.js`).then(e=>e.a);return{getLeaderTrayRuntimeStatus:e}},__vite__mapDeps([37,1,12,14,4,15,13,16,17,26,27,38])),t=e().session;if(!t)throw Error(`serve: leader tray has no active session`);let n=new URL(t.controllerUrl).pathname.split(`/`).pop()??``,{listPreviewsViaWorker:i}=await r(async()=>{let{listPreviewsViaWorker:e}=await import(`./preview-mint-client-CNzSnbyh.js`);return{listPreviewsViaWorker:e}},[]);return await i({workerBaseUrl:t.workerBaseUrl,trayId:t.trayId,controllerToken:n})},listRemoteTargets:()=>n.listAllTargets(),remoteCdp:i,getPermissionsSurface:()=>f()})});c.addEventListener(`beforeunload`,()=>{h(),p.dispose(),i.disposeAll(),a?.close()},{once:!0})}async function F(n){let{log:i}=n;await new Promise(e=>setTimeout(e,5e3));try{let n=await fetch(h(`/api/hosted-bootstrap`),{signal:AbortSignal.timeout(1e4),headers:g()});if(!n.ok)return;let a=await n.json(),o=a.accounts??(a.adobeImsToken?[{providerId:`adobe`,kind:`oauth`,accessToken:a.adobeImsToken}]:[]);a.model?localStorage.setItem(`selected-model`,a.model):localStorage.getItem(`selected-model`)||localStorage.setItem(`selected-model`,`adobe:claude-opus-4-6`),a.effortLevel?localStorage.setItem(`slicc_locked_effort_level`,a.effortLevel):localStorage.removeItem(`slicc_locked_effort_level`);let[{applyHostedAccounts:s,prewarmHostedModels:c},l]=await Promise.all([r(()=>import(`./hosted-config-apply-uAym2aS5.js`),__vite__mapDeps([40,12])),r(()=>import(`./provider-settings-5ZSUhS4X.js`).then(e=>e.t),__vite__mapDeps([25,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,0,23,24,26,27,28,29,30,31]))]);await c(o,{getRefreshModels:e=>l.getProviderConfig(e).refreshModels});let u=JSON.parse(localStorage.getItem(`slicc_cloud_managed`)??`[]`);await s(o,{saveOAuthAccount:t,addAccount:l.addAccount,removeAccount:e,currentProviderIds:()=>l.getAccounts().map(e=>e.providerId),previouslyManaged:()=>u}),localStorage.setItem(`slicc_cloud_managed`,JSON.stringify(o.map(e=>e.providerId))),i.info(`hosted-leader: cone config applied`,{count:o.length})}catch(e){i.warn(`hosted-leader: bootstrap fetch failed; provider needs manual login`,{error:e instanceof Error?e.message:String(e)})}}var I=0;async function L(e,t){let n=new re({client:e,sid:`ssh-exec-${++I}-${Date.now()}`,onEvent:e=>{e.type===`terminal-output`&&t.onChunk(e.stream,e.data)}}),r=()=>n.signal(`SIGINT`);try{return await n.open({cwd:t.cwd,env:t.env}),t.signal.addEventListener(`abort`,r,{once:!0}),t.signal.aborted?{exitCode:130}:{exitCode:(await n.exec(t.command)).exitCode}}catch(e){return{exitCode:1,error:e instanceof Error?e.message:String(e)}}finally{t.signal.removeEventListener(`abort`,r),n.close(),n.dispose()}}function R(e,t){if(!e||!t||!e.startsWith(`/`)||t===`/`||/%2[eE]/.test(e)||e.split(`/`).some(e=>e===`.`||e===`..`))return!1;let n=t.endsWith(`/`)?t.slice(0,-1):t;return e===n||e.startsWith(n+`/`)}var z=64*1024;async function B(e,t,n){let{reqId:r,servedRoot:i,asText:a}=e,s=e.vfsPath;if(!R(s,i)){t.send({type:`preview.response`,reqId:r,ok:!1,status:403});return}try{if((await n.stat(s)).type===`directory`&&(s=s.replace(/\/?$/,`/`)+`index.html`,!R(s,i))){t.send({type:`preview.response`,reqId:r,ok:!1,status:403});return}}catch{}let c,l;try{a?(c=await n.readFile(s,{encoding:`utf-8`}),l=`utf-8`):(c=o(await n.readFile(s,{encoding:`binary`})),l=`base64`)}catch(e){e?.code===`ENOENT`?t.send({type:`preview.response`,reqId:r,ok:!1,status:404}):t.send({type:`preview.response`,reqId:r,ok:!1,status:500,reason:String(e?.message??e)});return}let u=he(s),d=me(c,z);for(let e=0;e<d.length;e++)t.send({type:`preview.response`,reqId:r,ok:!0,mime:u,chunkIndex:e,totalChunks:d.length,content:d[e],encoding:l})}function me(e,t){if(e.length<=t)return[e];let n=[];for(let r=0;r<e.length;r+=t)n.push(e.slice(r,r+t));return n}function he(e){return/\.html?$/i.test(e)?`text/html`:/\.css$/i.test(e)?`text/css`:/\.m?js$/i.test(e)?`application/javascript`:/\.json$/i.test(e)?`application/json`:/\.svg$/i.test(e)?`image/svg+xml`:/\.png$/i.test(e)?`image/png`:/\.jpe?g$/i.test(e)?`image/jpeg`:/\.gif$/i.test(e)?`image/gif`:/\.webp$/i.test(e)?`image/webp`:/\.ico$/i.test(e)?`image/x-icon`:/\.woff2$/i.test(e)?`font/woff2`:/\.woff$/i.test(e)?`font/woff`:/\.ttf$/i.test(e)?`font/ttf`:/\.mp4$/i.test(e)?`video/mp4`:/\.webm$/i.test(e)?`video/webm`:/\.mp3$/i.test(e)?`audio/mpeg`:/\.pdf$/i.test(e)?`application/pdf`:/\.xml$/i.test(e)?`application/xml`:/\.wasm$/i.test(e)?`application/wasm`:`application/octet-stream`}var V=32*1024,H=`[content too large to sync — view on leader]`;function ge(e){switch(e.type){case`tool_result`:return{...e,result:H};case`tool_use_start`:return{...e,toolInput:{note:H}};case`tool_ui`:return{...e,html:`<p>${H}</p>`};case`content_delta`:return{...e,text:H};case`terminal_output`:return{...e,text:H};case`screenshot`:return{type:`error`,error:`Screenshot ${H}`};default:return null}}var _e=class{context;constructor(e){this.context=e}broadcastEvent(e){if(this.context.followers.followers.size===0)return;let t=this.context.options.getScoopJid(),n=this.context.followers.broadcastToAllFollowers({type:`agent_event`,event:e,scoopJid:t});if(n.length===0)return;let r=ge(e);if(r)for(let e of n)this.context.followers.followers.get(e)?.sync.send({type:`agent_event`,event:r,scoopJid:t})}broadcastUserMessage(e,t,n){if(this.context.followers.followers.size===0)return;let r=n?.length?i(n):n;this.broadcast({type:`user_message_echo`,text:e,messageId:t,scoopJid:this.context.options.getScoopJid(),attachments:r})}broadcastStatus(e){this.context.followers.followers.size!==0&&this.broadcast({type:`status`,scoopStatus:e})}async sendSnapshotToFollower(e,t){let n=this.context.followers.followers.get(e);if(!n)return;let{options:r}=this.context,i=t??n.selectedScoopJid??r.getScoopJid(),a;if(r.getMessagesForScoop&&i!==r.getScoopJid())try{a=await Promise.resolve(r.getMessagesForScoop(i))}catch(e){this.context.log.warn(`getMessagesForScoop failed, falling back to active scoop`,{targetJid:i,error:e instanceof Error?e.message:String(e)}),a=r.getMessages()}else a=r.getMessages();n.selectedScoopJid=i,f(n.sync,a,i),this.context.log.debug(`Snapshot sent to follower`,{bootstrapId:e,messageCount:a.length,scoopJid:i})}broadcastSnapshot(){if(this.context.followers.followers.size!==0)for(let e of this.context.followers.followers.keys())this.sendSnapshotToFollower(e)}sendScoopsListToFollower(e){let t=this.context.followers.followers.get(e);if(!t)return;let n=this.context.options.getScoops;if(n)try{t.sync.send({type:`scoops.list`,scoops:n(),activeScoopJid:this.context.options.getScoopJid()})}catch(t){this.context.log.warn(`Failed to send scoops.list`,{bootstrapId:e,error:t instanceof Error?t.message:String(t)})}}sendSprinklesListToFollower(e){let t=this.context.followers.followers.get(e);if(!t)return;let n=this.context.options.getSprinkles;if(n)try{t.sync.send({type:`sprinkles.list`,sprinkles:n()})}catch(t){this.context.log.warn(`Failed to send sprinkles.list`,{bootstrapId:e,error:t instanceof Error?t.message:String(t)})}}broadcastScoopsList(){if(this.context.followers.followers.size===0)return;let e=this.context.options.getScoops;if(!e)return;let t;try{t=e()}catch(e){this.context.log.warn(`Failed to compute scoops list`,{error:e instanceof Error?e.message:String(e)});return}this.broadcast({type:`scoops.list`,scoops:t,activeScoopJid:this.context.options.getScoopJid()})}broadcastSprinklesList(){if(this.context.followers.followers.size===0)return;let e=this.context.options.getSprinkles;if(!e)return;let t;try{t=e()}catch(e){this.context.log.warn(`Failed to compute sprinkles list`,{error:e instanceof Error?e.message:String(e)});return}this.broadcast({type:`sprinkles.list`,sprinkles:t})}broadcastSprinkleUpdate(e,t){this.context.followers.followers.size!==0&&this.broadcast({type:`sprinkle.update`,sprinkleName:e,data:t})}broadcastTheme(e){this.context.followers.followers.size!==0&&this.broadcast({type:`theme.apply`,themeJson:e})}broadcastSprinkleReloaded(e){this.context.followers.followers.size!==0&&this.broadcast({type:`sprinkle.reloaded`,sprinkleName:e})}broadcastPreviewOpen(e){this.context.followers.followers.size!==0&&this.broadcast({type:`preview.open`,requestId:`prv-${crypto.randomUUID()}`,url:e})}async handleSprinkleFetch(e,t,n){let r=this.context.followers.followers.get(e);if(!r)return;let i=this.context.options.readSprinkleContent;if(!i){r.sync.send({type:`sprinkle.content`,requestId:t,sprinkleName:n,content:``,error:`Leader has no sprinkle content reader`});return}let a=null;try{a=await Promise.resolve(i(n))}catch(e){r.sync.send({type:`sprinkle.content`,requestId:t,sprinkleName:n,content:``,error:e instanceof Error?e.message:String(e)});return}if(a==null){r.sync.send({type:`sprinkle.content`,requestId:t,sprinkleName:n,content:``,error:`Sprinkle not found: ${n}`});return}if(a.length<=65536){r.sync.send({type:`sprinkle.content`,requestId:t,sprinkleName:n,content:a});return}let o=Math.ceil(a.length/V);for(let e=0;e<o;e++)r.sync.send({type:`sprinkle.content`,requestId:t,sprinkleName:n,content:a.slice(e*V,(e+1)*V),chunkIndex:e,totalChunks:o})}broadcast(e){this.context.followers.broadcastToAllFollowers(e)}},ve=class{context;options;pendingCDPRoutes=new Map;cdpChunkBuffers=new Map;remoteTransports=new Map;constructor(e,t){this.context=e,this.options=t,e.followers.onFollowerRemoved({removeRuntime:(e,t)=>this.cleanupRemoteTransports(t)})}handleCDPRequest(e,t){let{requestId:n,targetRuntimeId:r,localTargetId:i,method:a,params:o,sessionId:s}=t;if(r===`leader`){this.executeLocalCDP(n,i,a,o,s,e);return}this.forwardCDPRequest(n,r,i,a,o,s,e)}async executeLocalCDP(e,t,n,r,i,a){let o=this.context.followers.followers.get(a);if(!o)return;let s=this.context.options.browserTransport;if(!s){o.sync.send({type:`cdp.response`,requestId:e,error:`Leader has no browser transport`});return}try{let t=await s.send(n,r,i);l(o.sync,e,t)}catch(t){o.sync.send({type:`cdp.response`,requestId:e,error:t instanceof Error?t.message:String(t)})}}forwardCDPRequest(e,t,n,r,i,a,o){let s=this.context.followers.runtimeToBootstrap.get(t),c=s?this.context.followers.followers.get(s):void 0,l=this.context.followers.followers.get(o);if(!c){l&&l.sync.send({type:`cdp.response`,requestId:e,error:`Target runtime "${t}" not connected`});return}this.pendingCDPRoutes.set(e,{requesterBootstrapId:o,requestId:e}),c.sync.send({type:`cdp.request`,requestId:e,localTargetId:n,method:r,params:i,sessionId:a})}handleCDPResponse(e){let{requestId:t}=e,n=this.pendingCDPRoutes.get(t);if(!n)return;let r=p(this.cdpChunkBuffers,e);if(!r)return;if(this.pendingCDPRoutes.delete(t),n.requesterBootstrapId===`__leader__`){for(let e of this.remoteTransports.values())e.handleResponse(t,r.result,r.error);return}let i=this.context.followers.followers.get(n.requesterBootstrapId);i&&l(i.sync,t,r.result,r.error)}handleCDPEvent(e,t,n,r){let i=this.context.followers.runtimeIdForBootstrap(e);if(!i)return;let a=`${i}:`,o=r?{...n,sessionId:r}:n;for(let[e,n]of this.remoteTransports)e.startsWith(a)&&n.handleEvent(t,o)}createRemoteTransport(e,t){if(e===`preview`){let e=t.indexOf(`:`);if(e===-1)throw Error(`Invalid preview localTargetId format: expected "<token>:<connId>", got "${t}"`);let n=t.slice(e+1),r=this.options.getBridgeTransport(n);if(!r)throw Error(`Preview bridge connection "${n}" not found`);return r}let n=`${e}:${t}`,r=new ne({sendCDPRequest:(r,i,a,o)=>{let s=this.context.followers.runtimeToBootstrap.get(e),c=s?this.context.followers.followers.get(s):void 0;if(!c){this.remoteTransports.get(n)?.handleResponse(r,void 0,`Target runtime "${e}" not connected`);return}this.pendingCDPRoutes.set(r,{requesterBootstrapId:`__leader__`,requestId:r}),c.sync.send({type:`cdp.request`,requestId:r,localTargetId:t,method:i,params:a,sessionId:o})}});return this.remoteTransports.set(n,r),r}removeRemoteTransport(e,t){let n=`${e}:${t}`,r=this.remoteTransports.get(n);r&&(r.disconnect(),this.remoteTransports.delete(n))}cleanupRemoteTransports(e){let t=`${e}:`;for(let e of[...this.remoteTransports.keys()])e.startsWith(t)&&(this.remoteTransports.get(e)?.disconnect(),this.remoteTransports.delete(e),this.context.log.debug(`Cleaned up stale remote transport`,{key:e}));try{this.context.options.onRemoteTransportsCleaned?.(e)}catch(t){this.context.log.warn(`onRemoteTransportsCleaned handler threw`,{runtimeId:e,error:t instanceof Error?t.message:String(t)})}}cleanupOrphanedRemoteTransports(e){for(let t of[...this.remoteTransports.keys()]){let n=t.substring(0,t.indexOf(`:`));n!==`leader`&&!this.context.followers.runtimeToBootstrap.has(n)&&n!==e&&(this.remoteTransports.get(t)?.disconnect(),this.remoteTransports.delete(t),this.context.log.debug(`Cleaned up orphaned remote transport on advertise`,{key:t}))}}},ye=class{context;constructor(e){this.context=e}routeCherryHostEvent(e,t){if(!u(t))return;let n=this.context.options.onCherryHostEvent;if(!n){this.context.log.debug(`cherry.host_event received but no onCherryHostEvent wired`,{bootstrapId:e,name:t.name});return}let r=this.context.followers.runtimeIdForBootstrap(e);try{n(r,t.name,t.detail)}catch(n){this.context.log.warn(`Failed to route cherry.host_event to cone`,{bootstrapId:e,name:t.name,error:n instanceof Error?n.message:String(n)})}}emitCherrySliccEvent(e,t,n){let r=e.indexOf(`:`),i=r>=0?e.slice(0,r):e,a=this.context.followers.runtimeToBootstrap.get(i),o=a?this.context.followers.followers.get(a):void 0;return o?o.sync.send({type:`cherry.slicc_event`,targetId:e,name:t,detail:n}):(this.context.log.warn(`emitCherrySliccEvent: owning follower not connected`,{targetId:e,name:t}),!1)}};a(`lick-manager`);var be=new Set([`navigate`,`discovery`]);function xe(e){return e?e.includes(`ios`)?`ios`:e.includes(`standalone`)?`standalone`:e.includes(`extension`)?`extension`:e.includes(`electron`)?`electron`:`unknown`:`unknown`}function U(e,t){switch(e){case`extension`:return`extension follower`;case`standalone`:return`standalone follower`;case`electron`:return`Electron follower`;case`ios`:return`iOS follower`;default:return t?`follower (${t})`:`follower`}}var Se=6e4,Ce=class{options;followers=new Map;runtimeToBootstrap=new Map;removalHooks=new Set;followerBroadcastErrorLogAt=new Map;constructor(e){this.options=e}addFollower(e,t,n){this.removeFollower(e);let r=d(t),i=r.onMessage(t=>this.options.onMessage(e,t)),a=new le({sendPing:()=>r.send({type:`ping`}),isTransportOpen:()=>r.isOpen,onStalled:()=>{this.options.log.warn(`Follower stopped answering pings; channel still open, keeping it`,{bootstrapId:e})},onRecovered:()=>{this.options.log.info(`Follower is answering pings again`,{bootstrapId:e})},onDead:()=>{this.options.log.warn(`Follower keepalive dead, removing follower`,{bootstrapId:e}),this.removeFollower(e),this.options.onFollowerDead?.(e)}});a.start();let o={bootstrapId:e,sync:r,unsubscribe:i,keepalive:a,runtime:n?.runtime,connectedAt:n?.connectedAt,lastActivity:Date.now(),floatType:xe(n?.runtime)};return this.followers.set(e,o),this.options.log.info(`Follower added to sync`,{bootstrapId:e,followerCount:this.followers.size}),this.notifyFollowerCountChanged(),o}removeFollower(e){let t=this.followers.get(e);if(!t)return;t.keepalive.stop(),t.unsubscribe(),t.sync.close(),this.followers.delete(e);for(let t of this.removalHooks)t.beforeRegistryCleanup?.(e);this.followerBroadcastErrorLogAt.delete(e);let n=this.runtimeIdForBootstrap(e);if(n){for(let t of this.removalHooks)t.removeRuntime?.(e,n);this.runtimeToBootstrap.delete(n)}for(let t of this.removalHooks)t.afterRegistryCleanup?.(e,n);this.options.log.info(`Follower removed from sync`,{bootstrapId:e,followerCount:this.followers.size}),this.notifyFollowerCountChanged()}onFollowerRemoved(e){return this.removalHooks.add(e),()=>this.removalHooks.delete(e)}notifyFollowerCountChanged(){this.options.onFollowerCountChanged?.(this.followers.size)}setRuntimeId(e,t){this.runtimeToBootstrap.set(e,t)}resolveFollowerByRuntimeId(e){let t=this.runtimeToBootstrap.get(e);if(t){let e=this.followers.get(t);if(e)return{bootstrapId:t,follower:e}}let n=[e];e.startsWith(`follower-`)&&n.push(e.slice(9));for(let e of n){let t=this.followers.get(e);if(t)return{bootstrapId:e,follower:t}}return null}runtimeIdForBootstrap(e){for(let[t,n]of this.runtimeToBootstrap)if(n===e)return t}getFollowerMotds(){let e=new Map;for(let[t,n]of this.followers)n.peerMotd&&e.set(t,n.peerMotd);return e}getExecCapableBootstrapIds(){let e=new Set;for(let[t,n]of this.followers)n.peerCapabilities?.exec&&e.add(t);return e}getBrowserCapableBootstrapIds(){return new Set(this.runtimeToBootstrap.values())}getConnectedFollowers(){return[...this.runtimeToBootstrap.entries()].map(([e,t])=>{let n=this.followers.get(t);return{runtimeId:e,runtime:n?.runtime,connectedAt:n?.connectedAt,lastActivity:n?.lastActivity,floatType:n?.floatType}})}broadcastToAllFollowers(e){let t=performance.now(),n=[];for(let[r,i]of this.followers){let a=!1,o;try{a=i.sync.send(e)}catch(e){o=e}if(a){this.followerBroadcastErrorLogAt.delete(r);continue}n.push(r),t-(this.followerBroadcastErrorLogAt.get(r)??-1/0)>Se&&(this.followerBroadcastErrorLogAt.set(r,t),this.options.log.error(`Broadcast send to follower failed`,{bootstrapId:r,messageType:e.type,...o?{error:o instanceof Error?o.message:String(o)}:{}}))}return n}},we=class{context;collaborators;constructor(e,t){this.context=e,this.collaborators=t}dispatch(e,t){this.noteLegacyPeer(e,t);let{broadcast:n,cdpRouter:r,remoteExec:i,fsRouter:a,tabRouter:o}=this.collaborators,{teleportPool:s,transcriptExport:c,cherryRouter:l}=this.collaborators;switch(t.type){case`user_message`:this.handleFollowerUserMessage(e,t);break;case`abort`:this.context.log.info(`Follower abort received`,{bootstrapId:e}),this.context.options.onFollowerAbort();break;case`new_session`:this.handleFollowerNewSession(e,t.action);break;case`request_snapshot`:this.context.log.info(`Follower snapshot request received`,{bootstrapId:e,scoopJid:t.scoopJid}),n.sendSnapshotToFollower(e,t.scoopJid);break;case`scoops.select`:this.handleScoopSelection(e,t.scoopJid);break;case`sprinkles.refresh`:this.context.log.info(`Follower requested sprinkles refresh`,{bootstrapId:e}),n.sendSprinklesListToFollower(e);break;case`sprinkle.fetch`:n.handleSprinkleFetch(e,t.requestId,t.sprinkleName);break;case`sprinkle.lick`:this.handleFollowerSprinkleLick(e,t);break;case`lick`:this.handleFollowerLick(e,t);break;case`targets.advertise`:s.handleFollowerTargetsAdvertise(e,t);break;case`cdp.request`:r.handleCDPRequest(e,t);break;case`cdp.response`:r.handleCDPResponse(t);break;case`cdp.event`:r.handleCDPEvent(e,t.method,t.params,t.sessionId);break;case`tab.open`:this.routeTabOpen(e,t);break;case`tab.opened`:o.handleTabOpenResponse(t.requestId,t.targetId);break;case`tab.open.error`:o.handleTabOpenError(t.requestId,t.error);break;case`fs.request`:this.routeFsRequest(e,t);break;case`fs.response`:a.handleFsResponse(t.requestId,t.response);break;case`exec.request`:case`exec.chunk`:case`exec.response`:case`exec.signal`:i.handleFollowerExecMessage(e,t);break;case`transcript.export.request`:c.handleTranscriptExportRequest(e,t.requestId,t.selector);break;case`transcript.export.cancel`:c.handleTranscriptExportCancel(e,t.requestId);break;case`transcript.export.ack`:c.handleTranscriptExportAck(e,t.requestId,t.index);break;case`transcript.export.approve.response`:c.handleTranscriptExportApprovalResponse(e,t.requestId,t.approved);break;case`cherry.host_event`:l.routeCherryHostEvent(e,t);break;case`ping`:this.handlePing(e);break;case`pong`:this.handlePong(e);break;case`hello`:this.handleFollowerHello(e,t);break;default:{let n=m(t);this.context.log.warn(`Unknown follower message type — skewed follower?`,{bootstrapId:e,type:n.type})}}}noteLegacyPeer(e,t){if(t.type===`hello`)return;let n=this.context.followers.followers.get(e);!n||n.peerProtocolVersion!==void 0||n.legacyPeerLogged||(n.legacyPeerLogged=!0,this.context.log.info(`Follower sent no hello — legacy peer (pre-versioning build)`,{bootstrapId:e}))}handleFollowerUserMessage(e,t){this.context.log.info(`Follower user message received`,{bootstrapId:e,messageId:t.messageId});let n=t.attachments?.length?i(t.attachments):t.attachments;t.steer?this.context.options.onFollowerMessage(t.text,t.messageId,n,{steer:!0}):this.context.options.onFollowerMessage(t.text,t.messageId,n)}handleFollowerNewSession(e,t){this.context.log.info(`Follower new-session received`,{bootstrapId:e,action:t});try{this.context.options.onFollowerNewSession?.(t,e)}catch(e){this.context.log.warn(`onFollowerNewSession handler threw`,{error:e instanceof Error?e.message:String(e)})}}handleScoopSelection(e,t){this.context.log.info(`Follower selected scoop`,{bootstrapId:e,scoopJid:t});let n=this.context.followers.followers.get(e);n&&(n.selectedScoopJid=t,this.collaborators.broadcast.sendSnapshotToFollower(e,t))}handleFollowerSprinkleLick(e,t){this.context.log.info(`Follower sprinkle lick received`,{bootstrapId:e,sprinkleName:t.sprinkleName});let n=this.context.followers.followers.get(e),r=U(n?.floatType??`unknown`,n?.runtime);try{this.context.options.onSprinkleLick?.(t.sprinkleName,t.body,t.targetScoop,r)}catch(e){this.context.log.warn(`onSprinkleLick handler threw`,{error:e instanceof Error?e.message:String(e)})}}handleFollowerLick(e,t){let n=t.event;if(!n||!be.has(n.type)){this.context.log.warn(`Rejecting malformed or non-forwardable lick from follower`,{bootstrapId:e,type:n?.type});return}let r=this.context.followers.followers.get(e),{targetScoop:i,...a}=n,o={...a,originFollowerId:e,originLabel:U(r?.floatType??`unknown`,r?.runtime)};try{this.context.options.onForwardedLick?.(o,e)}catch(e){this.context.log.warn(`onForwardedLick handler threw`,{error:e instanceof Error?e.message:String(e)})}}routeTabOpen(e,t){let{requestId:n,targetRuntimeId:r,url:i}=t;r===`leader`?this.collaborators.tabRouter.executeLocalTabOpen(n,i,e):this.collaborators.tabRouter.forwardTabOpen(n,r,i,e)}routeFsRequest(e,t){let{requestId:n,targetRuntimeId:r,request:i}=t;r===`leader`?this.collaborators.fsRouter.executeLocalFs(n,i,e):this.collaborators.fsRouter.forwardFsRequest(n,r,i,e)}handlePing(e){let t=this.context.followers.followers.get(e);t&&(t.keepalive.receivePing(),t.lastActivity=Date.now(),t.sync.send({type:`pong`}))}handlePong(e){let t=this.context.followers.followers.get(e);t&&(t.keepalive.receivePong(),t.lastActivity=Date.now())}handleFollowerHello(e,t){let n=this.context.followers.followers.get(e);n&&(n.peerProtocolVersion=t.protocolVersion,n.peerCapabilities=t.capabilities,n.peerMotd=t.motd,this.context.followers.notifyFollowerCountChanged()),t.protocolVersion>4?this.context.log.warn(`Follower speaks a newer tray sync protocol — update this build`,{bootstrapId:e,followerVersion:t.protocolVersion,ourVersion:4}):this.context.log.info(`Follower hello`,{bootstrapId:e,protocolVersion:t.protocolVersion})}},Te=class{context;pendingFsRoutes=new Map;fsResolvers=new Map;constructor(e){this.context=e,e.followers.onFollowerRemoved({afterRegistryCleanup:e=>this.rejectPendingForFollower(e)})}async executeLocalFs(e,t,n){let r=this.context.followers.followers.get(n);if(!r)return;let i=this.context.options.vfs;if(!i){r.sync.send({type:`fs.response`,requestId:e,response:{ok:!1,error:`Leader has no VFS`}});return}let a=await T(i,t);for(let t of a)r.sync.send({type:`fs.response`,requestId:e,response:t})}forwardFsRequest(e,t,n,r){let i=this.context.followers.runtimeToBootstrap.get(t),a=i?this.context.followers.followers.get(i):void 0,o=this.context.followers.followers.get(r);if(!i||!a){o?.sync.send({type:`fs.response`,requestId:e,response:{ok:!1,error:`Target runtime "${t}" not connected`}});return}this.pendingFsRoutes.set(e,{requesterBootstrapId:r,targetBootstrapId:i,requestId:e,chunks:[],totalChunks:1}),a.sync.send({type:`fs.request`,requestId:e,request:n})}handleFsResponse(e,t){let n=this.pendingFsRoutes.get(e);if(!n){this.resolveUnroutedLeaderResponse(e,t);return}n.requesterBootstrapId!==`__leader__`&&this.context.followers.followers.get(n.requesterBootstrapId)?.sync.send({type:`fs.response`,requestId:e,response:t});let r=this.addResponseChunk(n,t);if(r&&(this.pendingFsRoutes.delete(e),n.requesterBootstrapId===`__leader__`)){let t=this.fsResolvers.get(e);t&&(this.fsResolvers.delete(e),t.resolve(r))}}sendFsRequest(e,t){if(e===`leader`){let e=this.context.options.vfs;return e?T(e,t):Promise.resolve([{ok:!1,error:`Leader has no VFS`}])}let n=this.context.followers.runtimeToBootstrap.get(e),r=n?this.context.followers.followers.get(n):void 0;if(!n||!r)return Promise.resolve([{ok:!1,error:`Target runtime "${e}" not connected`}]);let i=`fs-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;return new Promise((e,a)=>{this.fsResolvers.set(i,{resolve:e,reject:a,responses:[]}),this.pendingFsRoutes.set(i,{requesterBootstrapId:`__leader__`,targetBootstrapId:n,requestId:i,chunks:[],totalChunks:1}),r.sync.send({type:`fs.request`,requestId:i,request:t})})}addResponseChunk(e,t){return e.chunks.push(t),e.totalChunks=t.ok&&t.totalChunks||1,e.chunks.length<e.totalChunks?null:e.chunks}resolveUnroutedLeaderResponse(e,t){let n=this.fsResolvers.get(e);if(!n)return;n.responses.push(t);let r=t.ok&&t.totalChunks||1;n.responses.length>=r&&(this.fsResolvers.delete(e),n.resolve(n.responses))}rejectPendingForFollower(e){for(let[t,n]of this.pendingFsRoutes){if(n.targetBootstrapId!==e&&n.requesterBootstrapId!==e)continue;this.pendingFsRoutes.delete(t);let r=this.fsResolvers.get(t);r&&(this.fsResolvers.delete(t),r.reject(Error(`follower disconnected before the fs request completed`)))}}},Ee=3e4,De={target:`preview-target`,session:`preview-session`,frame:`preview-frame`,loader:`preview-loader`},Oe=class extends oe{connId;sendToWorker;nextId=1;pending=new Map;constructor(e){super({targetUrl:e.targetUrl,targetOrigin:e.targetOrigin,title:e.title,ids:e.ids??De}),this.connId=e.connId,this.sendToWorker=e.send}async connect(e){this._state=`connected`}onCloseTarget(){this.sendToWorker({type:`bridge.close`,connId:this.connId})}disconnect(){for(let[e,t]of this.pending)clearTimeout(t.timer),t.reject(Error(`PreviewBridgeCdpTransport disconnected`));this.pending.clear(),this._state=`disconnected`}async forward(e,t,n,r=Ee){let i=this.nextId++;return new Promise((a,o)=>{let s=setTimeout(()=>{this.pending.delete(i),o(Error(`PreviewBridge CDP timed out after ${r}ms: ${e}`))},r);this.pending.set(i,{resolve:e=>{clearTimeout(s),a(e)},reject:e=>{clearTimeout(s),o(e)},timer:s}),this.sendToWorker({type:`bridge.cdp.request`,connId:this.connId,id:i,method:e,params:t,sessionId:n})})}deliverResponse(e,t){let n=this.pending.get(e);n&&(this.pending.delete(e),clearTimeout(n.timer),t.error?n.reject(Error(`PreviewBridge CDP error: ${t.error.message} (${t.error.code})`)):n.resolve(t.result??{}))}},ke=2e3,Ae=class{context;mintMap=new Map;bridgeConns=new Map;previewLickLastEmitAt=new Map;constructor(e){this.context=e}registerMintedPreview(e,t){this.mintMap.set(e,t)}dropMintedPreview(e){this.mintMap.delete(e),this.previewLickLastEmitAt.delete(`${e}:connected`),this.previewLickLastEmitAt.delete(`${e}:disconnected`)}onBridgeConnected(e){let{connId:t,previewToken:n,origin:r,userAgent:i,connectedAt:a}=e;if(this.bridgeConns.has(t))return;let o=this.mintMap.get(n),s=o?.url??r,c=o?.title??`Preview`,l=o?.quiet??!1,u=new Oe({connId:t,targetUrl:s,targetOrigin:r,title:c,send:e=>this.context.sendControl(e)});u.connect(),this.bridgeConns.set(t,{previewToken:n,origin:r,userAgent:i,connectedAt:a,url:s,title:c,quiet:l,transport:u}),this.context.log.info(`Preview bridge connected`,{connId:t,previewToken:n,origin:r,userAgent:i}),this.emitPreviewLifecycleLick(`connected`,{connId:t,previewToken:n,origin:r,userAgent:i,connectedAt:a,quiet:l})}onBridgeDisconnected(e){let{connId:t,reason:n}=e,r=this.bridgeConns.get(t);if(!r)return;let{previewToken:i,origin:a,userAgent:o,connectedAt:s,quiet:c}=r;r.transport.disconnect(),this.bridgeConns.delete(t),this.context.log.info(`Preview bridge disconnected`,{connId:t,reason:n}),this.emitPreviewLifecycleLick(`disconnected`,{connId:t,previewToken:i,origin:a,userAgent:o,connectedAt:s,quiet:c})}onBridgeCdpResponse(e){let{connId:t,id:n,result:r,error:i}=e,a=this.bridgeConns.get(t);if(!a){this.context.log.warn(`Received bridge.cdp.response for unknown connId`,{connId:t,id:n});return}a.transport.deliverResponse(n,{result:r,error:i})}getBridgeTransport(e){return this.bridgeConns.get(e)?.transport}getTargetEntries(){return[...this.bridgeConns].map(([e,t])=>({targetId:`preview:${t.previewToken}:${e}`,localTargetId:e,runtimeId:`preview`,title:t.title,url:t.url,isLocal:!1,kind:`preview`}))}stop(){for(let e of this.bridgeConns.values())e.transport.disconnect();this.bridgeConns.clear(),this.mintMap.clear(),this.previewLickLastEmitAt.clear()}emitPreviewLifecycleLick(e,t){if(t.quiet||!this.context.options.onPreviewLick)return;let n=`${t.previewToken}:${e}`,r=Date.now();if(r-(this.previewLickLastEmitAt.get(n)??0)<ke)return;this.previewLickLastEmitAt.set(n,r);let i={type:`preview`,previewLifecycle:e,previewConnId:t.connId,previewToken:t.previewToken,previewOrigin:t.origin,previewUserAgent:t.userAgent,previewConnectedAt:t.connectedAt,timestamp:new Date().toISOString(),body:{}};try{this.context.options.onPreviewLick(i)}catch(e){this.context.log.warn(`onPreviewLick handler threw`,{error:e instanceof Error?e.message:String(e)})}}},je=16*1024*1024,W=class{context;pendingRemoteExecs=new Map;localExecAborters=new Map;constructor(e){this.context=e,e.followers.onFollowerRemoved({beforeRegistryCleanup:e=>this.handleFollowerRemoved(e)})}async execOnRemote(e,t,n={}){let r=this.context.followers.resolveFollowerByRuntimeId(e);if(!r)throw Error(`No connected follower for '${e}'`);let{bootstrapId:i,follower:a}=r;if(!a.peerCapabilities?.exec)throw Error(`Follower '${e}' is not an exec target — only a 'slicc … follow' CLI accepts commands`);let o=`lexec-${crypto.randomUUID()}`;return new Promise((r,s)=>{let c={bootstrapId:i,stdout:``,stderr:``,stdoutDecoder:new TextDecoder(`utf-8`),stderrDecoder:new TextDecoder(`utf-8`),bytes:0,truncated:!1,onChunk:n.onChunk,resolve:r,reject:s};if(n.timeoutMs&&n.timeoutMs>0&&(c.timer=setTimeout(()=>{this.pendingRemoteExecs.delete(o)&&(this.sendExecSignal(i,o,`SIGKILL`),s(Error(`exec on '${e}' timed out after ${n.timeoutMs}ms`)))},n.timeoutMs)),this.pendingRemoteExecs.set(o,c),n.signal){let e=()=>this.sendExecSignal(i,o,`SIGINT`);n.signal.aborted?e():n.signal.addEventListener(`abort`,e,{once:!0})}a.sync.send({type:`exec.request`,requestId:o,command:t,cwd:n.cwd,env:n.env})||(this.pendingRemoteExecs.delete(o),c.timer&&clearTimeout(c.timer),s(Error(`Failed to send exec.request to follower '${e}'`)))})}handleFollowerExecMessage(e,t){switch(t.type){case`exec.request`:this.handleFollowerExecRequest(e,t);break;case`exec.chunk`:this.handleRemoteExecChunk(e,t);break;case`exec.response`:this.handleRemoteExecResponse(e,t);break;case`exec.signal`:this.handleFollowerExecSignal(e,t);break}}sendExecSignal(e,t,n){this.context.followers.followers.get(e)?.sync.send({type:`exec.signal`,requestId:t,signal:n})}handleRemoteExecChunk(e,t){let n=this.pendingRemoteExecs.get(t.requestId);if(!n||n.bootstrapId!==e)return;let r;try{r=s(t.data)}catch{return}if(n.truncated)return;n.bytes+=r.length,n.bytes>je&&(n.truncated=!0);let i=(t.stream===`stdout`?n.stdoutDecoder:n.stderrDecoder).decode(r,{stream:!0});t.stream===`stdout`?n.stdout+=i:n.stderr+=i,n.onChunk?.(t.stream,i)}handleRemoteExecResponse(e,t){let n=this.pendingRemoteExecs.get(t.requestId);!n||n.bootstrapId!==e||(this.pendingRemoteExecs.delete(t.requestId),n.timer&&clearTimeout(n.timer),n.stdout+=n.stdoutDecoder.decode(),n.stderr+=n.stderrDecoder.decode(),n.resolve({stdout:n.truncated?`${n.stdout}\n[output truncated at cap]`:n.stdout,stderr:n.stderr,exitCode:t.exitCode,error:t.error}))}async handleFollowerExecRequest(e,t){let{requestId:n,command:r,cwd:i,env:a}=t,s=this.context.options.execInShell;if(!s){this.context.followers.followers.get(e)?.sync.send({type:`exec.response`,requestId:n,exitCode:127,error:`exec is not supported on this leader`});return}let c=new AbortController,l=`${e}:${n}`;this.localExecAborters.set(l,{bootstrapId:e,controller:c});try{let t=await s(r,{cwd:i,env:a,signal:c.signal,onChunk:(t,r)=>{this.context.followers.followers.get(e)?.sync.send({type:`exec.chunk`,requestId:n,stream:t,data:o(new TextEncoder().encode(r))})}});this.context.followers.followers.get(e)?.sync.send({type:`exec.response`,requestId:n,exitCode:t.exitCode,error:t.error})}catch(t){this.context.followers.followers.get(e)?.sync.send({type:`exec.response`,requestId:n,exitCode:1,error:t instanceof Error?t.message:String(t)})}finally{this.localExecAborters.delete(l)}}handleFollowerExecSignal(e,t){this.localExecAborters.get(`${e}:${t.requestId}`)?.controller.abort()}handleFollowerRemoved(e){for(let[t,n]of this.pendingRemoteExecs)n.bootstrapId===e&&(this.pendingRemoteExecs.delete(t),n.timer&&clearTimeout(n.timer),n.reject(Error(`follower disconnected before the command completed`)));for(let[t,n]of this.localExecAborters)n.bootstrapId===e&&(n.controller.abort(),this.localExecAborters.delete(t))}},Me=class{context;options;pendingTabOpenRoutes=new Map;tabOpenResolvers=new Map;constructor(e,t){this.context=e,this.options=t,e.followers.onFollowerRemoved({afterRegistryCleanup:e=>this.rejectPendingForFollower(e)})}canRuntimeOpenTab(e){let t=this.options.getTargetEntries().filter(t=>t.runtimeId===e);return t.length===0||t.some(e=>!this.options.isCherryTarget(e))}openRemoteTab(e,t){let n=this.context.followers.runtimeToBootstrap.get(e),r=n?this.context.followers.followers.get(n):void 0;if(!n||!r)return Promise.reject(Error(`Target runtime "${e}" not connected`));if(!this.canRuntimeOpenTab(e))return Promise.reject(Error(`Target runtime "${e}" is a cherry host that cannot open tabs`));let i=`tab-open-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;return new Promise((e,a)=>{this.tabOpenResolvers.set(i,{resolve:e,reject:a}),this.pendingTabOpenRoutes.set(i,{requesterBootstrapId:`__leader__`,targetBootstrapId:n,requestId:i}),r.sync.send({type:`tab.open`,requestId:i,url:t})})}async executeLocalTabOpen(e,t,n){let r=this.context.followers.followers.get(n);if(!r)return;let i=this.context.options.browserTransport;if(!i){r.sync.send({type:`tab.open.error`,requestId:e,error:`Leader has no browser transport`});return}try{let n=(await i.send(`Target.createTarget`,{url:t,background:!0})).targetId;r.sync.send({type:`tab.opened`,requestId:e,targetId:`leader:${n}`})}catch(t){r.sync.send({type:`tab.open.error`,requestId:e,error:t instanceof Error?t.message:String(t)})}}forwardTabOpen(e,t,n,r){let i=this.context.followers.runtimeToBootstrap.get(t),a=i?this.context.followers.followers.get(i):void 0,o=this.context.followers.followers.get(r);if(!i||!a){o?.sync.send({type:`tab.open.error`,requestId:e,error:`Target runtime "${t}" not connected`});return}if(!this.canRuntimeOpenTab(t)){o?.sync.send({type:`tab.open.error`,requestId:e,error:`Target runtime "${t}" is a cherry host that cannot open tabs`});return}this.pendingTabOpenRoutes.set(e,{requesterBootstrapId:r,targetBootstrapId:i,requestId:e}),a.sync.send({type:`tab.open`,requestId:e,url:n})}handleTabOpenResponse(e,t){let n=this.pendingTabOpenRoutes.get(e);if(n){if(this.pendingTabOpenRoutes.delete(e),n.requesterBootstrapId===`__leader__`){let n=this.tabOpenResolvers.get(e);n&&(this.tabOpenResolvers.delete(e),n.resolve(t));return}this.context.followers.followers.get(n.requesterBootstrapId)?.sync.send({type:`tab.opened`,requestId:e,targetId:t})}}handleTabOpenError(e,t){let n=this.pendingTabOpenRoutes.get(e);if(n){if(this.pendingTabOpenRoutes.delete(e),n.requesterBootstrapId===`__leader__`){let n=this.tabOpenResolvers.get(e);n&&(this.tabOpenResolvers.delete(e),n.reject(Error(t)));return}this.context.followers.followers.get(n.requesterBootstrapId)?.sync.send({type:`tab.open.error`,requestId:e,error:t})}}rejectPendingForFollower(e){for(let[t,n]of this.pendingTabOpenRoutes){if(n.targetBootstrapId!==e&&n.requesterBootstrapId!==e)continue;this.pendingTabOpenRoutes.delete(t);let r=this.tabOpenResolvers.get(t);r&&(this.tabOpenResolvers.delete(t),r.reject(Error(`follower disconnected before the tab opened`)))}}},Ne=class{runtimes=new Map;dirty=!1;setTargets(e,t){this.runtimes.set(e,t),this.dirty=!0}removeRuntime(e){this.runtimes.delete(e)&&(this.dirty=!0)}getEntries(){this.dirty=!1;let e=[];for(let[t,n]of this.runtimes)for(let r of n)e.push({targetId:`${t}:${r.targetId}`,localTargetId:r.targetId,runtimeId:t,title:r.title,url:r.url,isLocal:!1,kind:r.kind??`browser`,capabilities:r.capabilities});return e}hasChanged(){return this.dirty}getRuntimeIds(){return[...this.runtimes.keys()]}};function G(e){return e.kind===`cherry`}function Pe(e,t){return e.filter(e=>e.kind===`preview`?!1:!G(e)||!t.requireNetwork||e.capabilities?.network===!0)}var Fe=class{context;options;registry=new Ne;constructor(e,t){this.context=e,this.options=t,e.followers.onFollowerRemoved({removeRuntime:(e,t)=>this.registry.removeRuntime(t),afterRegistryCleanup:()=>{this.registry.hasChanged()&&this.broadcastTargetRegistry()}})}setLocalTargets(e){this.registry.setTargets(`leader`,e),this.registry.hasChanged()&&this.broadcastTargetRegistry()}broadcastTargetRegistry(){this.context.followers.followers.size!==0&&this.context.followers.broadcastToAllFollowers({type:`targets.registry`,targets:this.getFollowerBroadcastEntries()})}sendTargetRegistryToFollower(e){let t=this.getFollowerBroadcastEntries();t.length!==0&&this.context.followers.followers.get(e)?.sync.send({type:`targets.registry`,targets:t})}getTargets(){return this.getConnectedEntries()}getRegistryEntries(){return this.registry.getEntries()}getFollowerBroadcastEntries(){return this.getConnectedEntries().filter(e=>e.kind!==`preview`)}getConnectedEntries(){return[...this.registry.getEntries().filter(e=>{if(e.runtimeId===`leader`)return!0;let t=this.context.followers.runtimeToBootstrap.get(e.runtimeId);return t?this.context.followers.followers.has(t):!1}),...this.options.getPreviewTargetEntries()]}canRuntimeServeTeleport(e,t){if(t.runtime===`slicc-cherry`)return!1;let n=this.registry.getEntries().filter(t=>t.runtimeId===e);return n.length===0||Pe(n,{requireNetwork:!0}).length>0}getBestFollowerForTeleport(){let e=[];for(let[t,n]of this.context.followers.runtimeToBootstrap){let r=this.context.followers.followers.get(n);!r||!this.canRuntimeServeTeleport(t,r)||e.push({runtimeId:t,bootstrapId:n,floatType:r.floatType,lastActivity:r.lastActivity})}if(e.length===0)return null;let t=e.filter(e=>e.floatType===`standalone`),n=t.length>0?t:e;return n.sort((e,t)=>t.lastActivity-e.lastActivity),n[0]}handleFollowerTargetsAdvertise(e,t){this.context.log.info(`Follower targets advertised`,{bootstrapId:e,runtimeId:t.runtimeId,targetCount:t.targets.length}),this.options.cleanupOrphanedRemoteTransports(t.runtimeId),this.context.followers.setRuntimeId(t.runtimeId,e),this.registry.setTargets(t.runtimeId,t.targets);let n=this.context.followers.followers.get(e);if(n&&n.runtime===`slicc-cherry`){let e=t.targets.find(e=>e.kind===`cherry`);if(e)try{n.hostOrigin=new URL(e.url).origin}catch{}}this.broadcastTargetRegistry()}},K=32*1024,Ie=1024*1024,Le=3e4,Re=12e4,ze=3;function Be(e){let t=8192,n=``;for(let r=0;r<e.length;r+=t)n+=String.fromCharCode(...e.subarray(r,r+t));return btoa(n)}async function Ve(e,t,n){if(typeof e.bufferedAmount==`number`)for(;!n.aborted&&e.bufferedAmount>t;)await new Promise(e=>setTimeout(e,25))}var He=class e{context;activeExports=new Map;ackWaiters=new Map;approvalWaiters=new Map;constructor(e){this.context=e,e.followers.onFollowerRemoved({afterRegistryCleanup:e=>this.handleFollowerRemoved(e)})}static exportKey(e,t){return`${e}:${t}`}static ackKey(e,t,n){return`${e}:${t}:${n}`}clearAckWaiters(e,t){let n=`${e}:${t}:`;for(let[e,t]of this.ackWaiters)e.startsWith(n)&&(t.reject(Error(`export aborted`)),this.ackWaiters.delete(e))}handleFollowerRemoved(e){for(let[t,n]of this.activeExports){if(n.bootstrapId!==e)continue;n.abort.abort();let r=t.slice(e.length+1);this.clearAckWaiters(e,r),this.activeExports.delete(t)}for(let t of[...this.approvalWaiters.keys()])t.startsWith(`${e}:`)&&this.settleApproval(t,!1)}async handleTranscriptExportRequest(t,n,r){let i=e.exportKey(t,n);if(this.activeExports.has(i)){this.context.log.warn(`Duplicate transcript export request from same follower, ignoring`,{bootstrapId:t,requestId:n});return}let a=this.context.followers.followers.get(t);if(!a)return;let{requestTranscriptExportApproval:o,createTranscriptExport:s,headlessLeader:c}=this.context.options;if(!o&&!c||!s){a.sync.send({type:`transcript.export.denied`,requestId:n});return}if([...this.activeExports.values()].some(e=>e.bootstrapId===t)){this.context.log.warn(`Follower already has an in-flight export; denying duplicate`,{bootstrapId:t,requestId:n}),a.sync.send({type:`transcript.export.denied`,requestId:n});return}let l=new AbortController;this.activeExports.set(i,{bootstrapId:t,abort:l});let u=U(a.floatType,a.runtime);a.sync.send({type:`transcript.export.pending`,requestId:n});let d=!1;try{c?d=await this.requestDelegatedApproval(t,n,r):o&&(d=await o({requestId:n,followerLabel:u,hostOrigin:a.hostOrigin,selector:r}))}catch(e){this.context.log.warn(`transcript export approval threw`,{requestId:n,error:e instanceof Error?e.message:String(e)}),d=!1}let f=this.context.followers.followers.get(t);if(!this.activeExports.has(i)||!f){this.activeExports.delete(i);return}if(!d){f.sync.send({type:`transcript.export.denied`,requestId:n}),this.activeExports.delete(i);return}this.streamTranscriptExport(t,n,r,l)}handleTranscriptExportCancel(t,n){let r=e.exportKey(t,n),i=this.activeExports.get(r);i&&(this.context.log.info(`Transcript export cancelled by follower`,{requestId:n,bootstrapId:t}),i.abort.abort(),this.activeExports.delete(r),this.clearAckWaiters(t,n),this.settleApproval(r,!1))}requestDelegatedApproval(t,n,r){let i=this.context.followers.followers.get(t);if(!i)return Promise.resolve(!1);let a=e.exportKey(t,n);return new Promise(e=>{let o=setTimeout(()=>{this.context.log.warn(`Delegated transcript export approval timed out`,{bootstrapId:t,requestId:n}),this.settleApproval(a,!1)},Re);this.approvalWaiters.set(a,t=>{clearTimeout(o),e(t)}),i.sync.send({type:`transcript.export.approve.request`,requestId:n,selector:r})||(this.context.log.warn(`Failed to send delegated approval prompt — denying`,{bootstrapId:t,requestId:n}),this.settleApproval(a,!1))})}settleApproval(e,t){let n=this.approvalWaiters.get(e);n&&(this.approvalWaiters.delete(e),n(t))}handleTranscriptExportApprovalResponse(t,n,r){this.settleApproval(e.exportKey(t,n),r===!0)}handleTranscriptExportAck(t,n,r){let i=e.ackKey(t,n,r),a=this.ackWaiters.get(i);a&&(this.ackWaiters.delete(i),a.resolve())}async streamTranscriptExport(t,n,i,a){let o=e.exportKey(t,n),{createTranscriptExport:s}=this.context.options;if(!this.context.followers.followers.get(t)||!s){this.activeExports.delete(o);return}let l=e=>{let r=this.context.followers.followers.get(t);r&&r.sync.send({type:`transcript.export.error`,requestId:n,code:e}),this.activeExports.delete(o)},u;try{u=await s(i,a.signal)}catch(e){if(a.signal.aborted){this.activeExports.delete(o);return}this.context.log.warn(`createTranscriptExport failed`,{requestId:n,error:e instanceof Error?e.message:String(e)}),l(e instanceof c?e.code:`session-not-found`);return}if(a.signal.aborted||!this.activeExports.has(o)){this.activeExports.delete(o);return}let d=this.context.followers.followers.get(t)?.sync;if(!d){this.activeExports.delete(o);return}d.send({type:`transcript.export.start`,requestId:n,filename:u.filename});let{sha256:f}=await r(async()=>{let{sha256:e}=await import(`./sha256-DmK25X5D.js`).then(e=>e.n);return{sha256:e}},__vite__mapDeps([41,1])),p=f.create(),m=(this.context.followers.followers.get(t)?.peerProtocolVersion??0)>=ze,{streamError:h,chunkCount:g,byteLength:_}=await this.sendExportChunks({bootstrapId:t,requestId:n,chunks:u.chunks,hasher:p,abort:a,awaitAck:m,onSlice:(e,r)=>{let i=this.context.followers.followers.get(t);return i?(i.sync.send({type:`transcript.export.chunk`,requestId:n,index:e,data:r}),!0):!1}});if(h){l(`transfer-corrupt`);return}if(!this.activeExports.has(o))return;if(a.signal.aborted){l(`transfer-aborted`);return}let v;try{v=await u.completion}catch{if(a.signal.aborted){this.activeExports.delete(o);return}l(`transfer-aborted`);return}if(a.signal.aborted||!this.activeExports.has(o)){this.activeExports.delete(o);return}if(v.byteLength!==_){this.context.log.warn(`Transcript export byte count mismatch between service and leader stream`,{requestId:n,serviceByteLength:v.byteLength,leaderByteCount:_}),l(`transfer-corrupt`);return}let y=p.hex();if(v.sha256!==y){this.context.log.warn(`Transcript export SHA-256 mismatch between service and leader stream`,{requestId:n}),l(`transfer-corrupt`);return}let b=this.context.followers.followers.get(t);b&&b.sync.send({type:`transcript.export.complete`,requestId:n,chunks:g,byteLength:_,sha256:y}),this.activeExports.delete(o)}async sendExportChunks(t){let{bootstrapId:n,requestId:r,chunks:i,hasher:a,abort:o,onSlice:s,awaitAck:c}=t,l=e.exportKey(n,r),u=this.context.followers.followers.get(n)?.sync;if(!u)return{streamError:!0,chunkCount:0,byteLength:0};let d=0,f=0;try{for await(let e of i){if(o.signal.aborted||!this.activeExports.has(l))return{streamError:!1,chunkCount:d,byteLength:f};a.update(e),f+=e.byteLength;let t=await this.sendExportSlices({bootstrapId:n,requestId:r,b64:Be(e),sync:u,key:l,abort:o,onSlice:s,awaitAck:c,startIdx:d});if(d=t.nextIdx,t.done!==`continue`)return{streamError:t.done===`error`,chunkCount:d,byteLength:f}}}catch(e){return o.signal.aborted?{streamError:!1,chunkCount:d,byteLength:f}:(this.context.log.warn(`Error streaming transcript export chunks`,{requestId:r,error:e instanceof Error?e.message:String(e)}),{streamError:!0,chunkCount:d,byteLength:f})}return{streamError:!1,chunkCount:d,byteLength:f}}async sendExportSlices(e){let{bootstrapId:t,requestId:n,b64:r,sync:i,key:a,abort:o,onSlice:s,awaitAck:c}=e,l=e.startIdx;for(let e=0;e<r.length;e+=K){if(o.signal.aborted||!this.activeExports.has(a)||(await Ve(i,Ie,o.signal),o.signal.aborted||!this.activeExports.has(a)))return{nextIdx:l,done:`abort`};let u=r.slice(e,e+K);if(!s(l,u))return{nextIdx:l,done:`error`};if(c&&(!await this.waitForAck(t,n,l,o)||o.signal.aborted||!this.activeExports.has(a)))return{nextIdx:l+1,done:`abort`};l++}return{nextIdx:l,done:`continue`}}waitForAck(t,n,r,i){let a=i.signal;return new Promise(o=>{if(a.aborted){o(!1);return}let s=e.ackKey(t,n,r),c,l=()=>{c!==void 0&&(clearTimeout(c),c=void 0)},u=()=>{this.ackWaiters.delete(s),l()},d=()=>{u(),o(!1)};a.addEventListener(`abort`,d,{once:!0}),c=setTimeout(()=>{c=void 0,i.abort(),this.clearAckWaiters(t,n)},Le),this.ackWaiters.set(s,{resolve:()=>{a.removeEventListener(`abort`,d),u(),o(!0)},reject:()=>{a.removeEventListener(`abort`,d),u(),o(!1)}})})}},q=a(`tray-leader-sync`),Ue=class{options;followerRegistry;broadcast;cdpRouter;remoteExec;fsRouter;tabRouter;previewBridge;cherryRouter;teleportPool;transcriptExport;followerDispatch;get followers(){return this.followerRegistry.followers}constructor(e){this.options=e,this.followerRegistry=new Ce({log:q,onMessage:(e,t)=>this.followerDispatch.dispatch(e,t),onFollowerDead:e=>this.options.onFollowerDead?.(e),onFollowerCountChanged:e=>this.options.onFollowerCountChanged?.(e)});let t={options:e,followers:this.followerRegistry,log:q,sendControl:e.sendControl};this.broadcast=new _e(t),this.previewBridge=new Ae(t),this.cdpRouter=new ve(t,{getBridgeTransport:e=>this.previewBridge.getBridgeTransport(e)}),this.remoteExec=new W(t),this.teleportPool=new Fe(t,{cleanupOrphanedRemoteTransports:e=>this.cdpRouter.cleanupOrphanedRemoteTransports(e),getPreviewTargetEntries:()=>this.previewBridge.getTargetEntries()}),this.transcriptExport=new He(t),this.fsRouter=new Te(t),this.tabRouter=new Me(t,{getTargetEntries:()=>this.teleportPool.getRegistryEntries(),isCherryTarget:G}),this.cherryRouter=new ye(t),this.followerDispatch=new we(t,{broadcast:this.broadcast,cdpRouter:this.cdpRouter,remoteExec:this.remoteExec,fsRouter:this.fsRouter,tabRouter:this.tabRouter,teleportPool:this.teleportPool,transcriptExport:this.transcriptExport,cherryRouter:this.cherryRouter}),Object.defineProperties(this,{activeExports:{get:()=>this.transcriptExport.activeExports},bridgeConns:{get:()=>this.previewBridge.bridgeConns},mintMap:{get:()=>this.previewBridge.mintMap}})}addFollower(e,t,n){let{sync:r}=this.followerRegistry.addFollower(e,t,n);r.send({type:`hello`,protocolVersion:4}),this.broadcast.sendSnapshotToFollower(e),this.broadcast.sendScoopsListToFollower(e),this.broadcast.sendSprinklesListToFollower(e),this.teleportPool.sendTargetRegistryToFollower(e)}removeFollower(e){this.followerRegistry.removeFollower(e)}broadcastEvent(e){this.broadcast.broadcastEvent(e)}broadcastUserMessage(e,t,n){this.broadcast.broadcastUserMessage(e,t,n)}broadcastStatus(e){this.broadcast.broadcastStatus(e)}broadcastSnapshot(){this.broadcast.broadcastSnapshot()}broadcastScoopsList(){this.broadcast.broadcastScoopsList()}broadcastSprinklesList(){this.broadcast.broadcastSprinklesList()}broadcastSprinkleUpdate(e,t){this.broadcast.broadcastSprinkleUpdate(e,t)}broadcastTheme(e){this.broadcast.broadcastTheme(e)}broadcastSprinkleReloaded(e){this.broadcast.broadcastSprinkleReloaded(e)}broadcastPreviewOpen(e){this.broadcast.broadcastPreviewOpen(e)}async execOnRemote(e,t,n={}){return this.remoteExec.execOnRemote(e,t,n)}getExecCapableBootstrapIds(){return this.followerRegistry.getExecCapableBootstrapIds()}getBrowserCapableBootstrapIds(){return this.followerRegistry.getBrowserCapableBootstrapIds()}getFollowerMotds(){return this.followerRegistry.getFollowerMotds()}setLocalTargets(e){this.teleportPool.setLocalTargets(e)}broadcastTargetRegistry(){this.teleportPool.broadcastTargetRegistry()}getTargets(){return this.teleportPool.getTargets()}createRemoteTransport(e,t){return this.cdpRouter.createRemoteTransport(e,t)}removeRemoteTransport(e,t){this.cdpRouter.removeRemoteTransport(e,t)}getConnectedFollowers(){return this.followerRegistry.getConnectedFollowers()}getBestFollowerForTeleport(){return this.teleportPool.getBestFollowerForTeleport()}get hasFollowers(){return this.followers.size>0}stop(){for(let e of[...this.followers.keys()])this.removeFollower(e);this.previewBridge.stop()}emitCherrySliccEvent(e,t,n){return this.cherryRouter.emitCherrySliccEvent(e,t,n)}openRemoteTab(e,t){return this.tabRouter.openRemoteTab(e,t)}sendFsRequest(e,t){return this.fsRouter.sendFsRequest(e,t)}registerMintedPreview(e,t){this.previewBridge.registerMintedPreview(e,t)}dropMintedPreview(e){this.previewBridge.dropMintedPreview(e)}onBridgeConnected(e){this.previewBridge.onBridgeConnected(e)}onBridgeDisconnected(e){this.previewBridge.onBridgeDisconnected(e)}onBridgeCdpResponse(e){this.previewBridge.onBridgeCdpResponse(e)}getBridgeTransport(e){return this.previewBridge.getBridgeTransport(e)}},J=a(`page-leader-tray`);function We(e,t){return new Ue({sendControl:e=>t().sendControlMessage(e),getMessages:e.getMessages,getMessagesForScoop:e.getMessagesForScoop,getScoopJid:e.getScoopJid,getScoops:e.getScoops,getSprinkles:e.getSprinkles,readSprinkleContent:e.readSprinkleContent,onSprinkleLick:e.onSprinkleLick,onForwardedLick:e.onForwardedLick,onFollowerMessage:e.onFollowerMessage,onFollowerAbort:e.onFollowerAbort,onFollowerNewSession:e.onFollowerNewSession,onFollowerCountChanged:e.onFollowerCountChanged,onRemoteTransportsCleaned:e.onRemoteTransportsCleaned,execInShell:e.execInShell,onCherryHostEvent:e.onCherryHostEvent,onPreviewLick:e.onPreviewLick,requestTranscriptExportApproval:e.requestTranscriptExportApproval,createTranscriptExport:e.createTranscriptExport,headlessLeader:e.kind===`hosted`,browserAPI:e.browserAPI,browserTransport:e.browserTransport,vfs:e.vfs})}function Ge(e,t){return new E({sendControlMessage:t=>e().sendControlMessage(t),onPeerConnected:(e,n)=>{J.info(`Tray follower data channel opened`,{controllerId:e.controllerId,bootstrapId:e.bootstrapId,attempt:e.attempt,runtime:e.runtime}),t.addFollower(e.bootstrapId,n,{runtime:e.runtime,connectedAt:e.connectedAt??void 0})},onPeerDisconnected:(e,t)=>{J.info(`Tray follower disconnected`,{bootstrapId:e,reason:t})}})}function Ke(e,t,n,r,i,a){let o=t=>{e.browserTransport?.sendLeaderJoinUrl?.(t)};return new ae({workerBaseUrl:e.workerBaseUrl,runtime:e.runtime??`slicc-standalone`,...e.kind?{kind:e.kind}:{},onLeaderReady:t=>{e.onLeaderReady?.(t),o(t.joinUrl)},fetchImpl:r,...e._storeOverride?{store:e._storeOverride}:{},...e._webSocketFactory?{webSocketFactory:e._webSocketFactory}:{},onControlMessage:r=>{if(r.type===`webhook.event`){e.sendWebhookEvent(r.webhookId,r.headers,r.body);return}if(r.type===`preview.request`){let t=e.vfs;if(!t){a().sendControlMessage({type:`preview.response`,reqId:r.reqId,ok:!1,status:500,reason:`leader has no VFS bound`});return}B(r,{send:e=>a().sendControlMessage(e)},t).catch(e=>{J.error(`preview.request handling failed`,{error:e instanceof Error?e.message:String(e)})});return}if(r.type===`preview.revoked`){J.info(`Preview revoked by worker`,{previewToken:r.previewToken}),n.dropMintedPreview(r.previewToken);return}if(r.type===`bridge.connected`){n.onBridgeConnected(r);return}if(r.type===`bridge.disconnected`){n.onBridgeDisconnected(r);return}if(r.type===`bridge.cdp.response`){n.onBridgeCdpResponse(r);return}t.handleControlMessage(r).catch(e=>{J.error(`Tray leader bootstrap handling failed`,{error:e instanceof Error?e.message:String(e)})})},onReconnecting:(e,t)=>{J.info(`Leader tray reconnecting`,{attempt:e,lastError:t})},onReconnected:e=>{J.info(`Leader tray reconnected`,{trayId:e.trayId}),i(e),o(e.joinUrl)},onReconnectGaveUp:(e,t)=>{J.error(`Leader tray reconnect gave up`,{lastError:e,attempts:t}),o(null)}})}function qe(e,t){let n=new de(J,{failureMessage:`Leader CDP target refresh failed (best-effort, throttled)`,recoveryMessage:`Leader CDP target refresh recovered (stable for debounce window)`});return async()=>{let r;try{r=await e.browserAPI.listPages()}catch(e){n.reportFailure(e);return}n.reportSuccess();try{let e=r.map(e=>({targetId:e.targetId,title:e.title,url:e.url}));t.setLocalTargets(e)}catch(e){J.error(`Leader target broadcast failed (sync.setLocalTargets threw)`,{error:e instanceof Error?e.message:String(e)})}}}function Je(e,t){return setInterval(()=>{try{e.broadcastScoopsList(),e.broadcastSprinklesList()}catch(e){J.error(`Failed to broadcast follower lists`,{error:e instanceof Error?e.message:String(e)})}},t)}function Ye(e){return t=>{let n=e._historyOverride??Xe();if(n)try{let e=v(n.href,t.workerBaseUrl,t.trayId);e!==n.href&&n.replaceState(null,``,e)}catch(e){J.debug(`URL bar update skipped`,{error:e instanceof Error?e.message:String(e)})}}}function Y(e){let t=e._refreshIntervalMs??5e3,n=e._fetchImpl??((e,t)=>fetch(e,t)),r,i=Ye(e),a=We(e,()=>r);e.browserAPI.setTrayTargetProvider(a);let o=Ge(()=>r,a);r=Ke(e,o,a,n,i,()=>r);let s=e.onAgentEvent(e=>a.broadcastEvent(e)),c=[],l=qe(e,a);c.push(setInterval(l,t)),l(),c.push(Je(a,t));let u=r.start();u.then(i).catch(e=>{J.error(`Leader tray start failed`,{error:e instanceof Error?e.message:String(e)})});let d=!1;return{ready:u,stop(){d=!0,s();for(let e of c)clearInterval(e);a.stop(),o.stop(),r.stop()},async reset(){a.stop(),o.stop(),r.stop(),await r.clearSession();let e=await r.start();return i(e),C()},leader:r,peers:o,sync:a,get currentLeaderSync(){return d?null:a}}}function Xe(){return typeof window>`u`||!window.history||!window.location?null:{get href(){return window.location.href},replaceState(e,t,n){window.history.replaceState(e,t,n)}}}function Ze(e){let t=new Map,n=(e,t)=>`${e}:${t}`,r=(r,i)=>{let a=n(r,i),o=t.get(a);if(!o){let n=e.getSync();if(!n)throw Error(`remote-cdp: leader tray not started`);o={runtimeId:r,localTargetId:i,transport:n.createRemoteTransport(r,i),forwarders:new Map},t.set(a,o)}return o},i=n=>{let r=t.get(n);if(!r)return;for(let[e,t]of r.forwarders)r.transport.off(e,t.listener);r.forwarders.clear();let i=e.getSync();i?.removeRemoteTransport?i.removeRemoteTransport(r.runtimeId,r.localTargetId):r.transport.disconnect(),t.delete(n)};return{async send({runtimeId:e,localTargetId:t,method:n,params:i,sessionId:a,timeout:o}){return r(e,t).transport.send(n,i,a,o)},async subscribe({runtimeId:t,localTargetId:n,event:i}){let a=r(t,n),o=a.forwarders.get(i);if(o)return o.count+=1,{ok:!0};let s=r=>e.postEvent({runtimeId:t,localTargetId:n,method:i,params:r});return a.transport.on(i,s),a.forwarders.set(i,{listener:s,count:1}),{ok:!0}},async unsubscribe({runtimeId:e,localTargetId:r,event:i}){let a=t.get(n(e,r)),o=a?.forwarders.get(i);return!a||!o?{ok:!0}:(--o.count,o.count<=0&&(a.transport.off(i,o.listener),a.forwarders.delete(i)),{ok:!0})},async detach({runtimeId:e,localTargetId:t}){return i(n(e,t)),{ok:!0}},async openTab({runtimeId:t,url:n}){let r=e.getSync();if(!r?.openRemoteTab)throw Error(`remote-cdp: openRemoteTab not available`);return{targetId:await r.openRemoteTab(t,n)}},cleanupRuntime(e){let n=`${e}:`;for(let e of[...t.keys()])e.startsWith(n)&&i(e)},disposeAll(){for(let e of[...t.keys()])i(e)}}}var X=a(`tray-leader-lock`);function Qe(e){return`slicc-tray-leader:${e}`}function Z(){let e=!1,t=null;return{release:()=>{e||(e=!0,t?.())},heldPromise:new Promise(e=>{t=e})}}async function Q(e,t){if(!t)return{status:`granted`,release:()=>{}};let n=Qe(e),r,i=new Promise(e=>{r=e}),a=Z();return t.request(n,{mode:`exclusive`,ifAvailable:!0},e=>e===null?(r(!1),Promise.resolve()):(r(!0),a.heldPromise)),await i?{status:`granted`,release:a.release}:{status:`deferred`,waitForPromotion:()=>new Promise(e=>{let r=Z();t.request(n,{mode:`exclusive`},()=>(e({release:r.release}),r.heldPromise))})}}async function $e(e){let t=await Q(e.workerBaseUrl,e.lockManager);if(t.status===`granted`){if(!e.shouldLead()){t.release();return}e.onGranted(t.release);return}X.error(`Another tab is already leading on this tray worker — deferring leader start until the other tab releases the lock.`);let{release:n}=await t.waitForPromotion();if(!e.shouldLead()){n();return}X.error(`Late promotion: this tab is now the tray leader.`),e.onGranted(n)}function et(){return typeof navigator<`u`&&navigator.locks&&typeof navigator.locks.request==`function`?navigator.locks:null}function $(e,t){let{browser:n,client:r,getController:i}=e;return{joinUrl:t,onSnapshot:e=>i()?.loadMessages(e),onUserMessage:(e,t,n,r)=>i()?.addUserMessage(e,r),onStatus:e=>i()?.setProcessing(e===`processing`),setChatAgent:e=>i()?.setAgent(e),browserAPI:n,onForwardingToggle:e=>r.sendSetFollowerForwarding(e),addSprinkle:(t,n,r)=>e.addSprinkle(t,n,r),removeSprinkle:t=>e.removeSprinkle(t),onScoopsList:(t,n)=>{e.refs.switcher.scoops=t.map(e=>({key:e.jid,type:e.isCone?`cone`:`scoop`,color:ce(e),label:e.isCone?`sliccy`:e.name,eyes:`open`})),e.refs.switcher.setAttribute(`active`,n)}}}function tt(e,t,n){let{client:i,refs:a}=e;return o=>({workerBaseUrl:o,getMessages:()=>e.getController()?.getMessages()??[],getMessagesForScoop:e=>i.getMessagesForScoop(e),getScoopJid:()=>e.getSelectedJid(),getScoops:()=>i.getScoops().map(e=>({jid:e.jid,name:e.name,folder:e.folder,isCone:e.isCone,assistantLabel:e.assistantLabel,trigger:e.trigger})),getSprinkles:()=>{let t=new Set(e.sprinkleManager.opened());return e.sprinkleManager.available().map(e=>({name:e.name,title:e.title,path:e.path,open:t.has(e.name),autoOpen:e.autoOpen,icon:e.icon}))},readSprinkleContent:async t=>{let n=e.sprinkleManager.available().find(e=>e.name===t);if(!n)return null;try{let t=await(await e.openFs()).readFile(n.path,{encoding:`utf-8`});return typeof t==`string`?t:new TextDecoder(`utf-8`).decode(t)}catch{return null}},onSprinkleLick:(e,t,n,r)=>i.sendSprinkleLick(e,t,n,r),onFollowerMessage:(n,r,i,a)=>{e.getController()?.addUserMessage(n,i),e.agentHandle.sendMessage(n,r,i,a),t.leader?.sync.broadcastUserMessage(n,r,i)},onFollowerAbort:()=>e.agentHandle.stop(),onFollowerNewSession:t=>{e.window.dispatchEvent(new CustomEvent(w,{detail:{action:t}}))},onFollowerCountChanged:t=>{a.floatbar.setAttribute(`label`,t>0?`tray · ${t} follower${t===1?``:`s`}`:e.baseFloatLabel??`standalone · live`),j(A())},onRemoteTransportsCleaned:e=>n.cleanupRuntime(e),onForwardedLick:e=>i.sendForwardedLick(e),onCherryHostEvent:(e,t,n)=>i.sendCherryHostEvent(e,t,n),onPreviewLick:e=>i.sendPreviewLick(e),requestTranscriptExportApproval:e=>r(async()=>{let{openTranscriptExportApproval:e}=await import(`./wc-transcript-export-B3p8LhYu.js`);return{openTranscriptExportApproval:e}},__vite__mapDeps([42,4,43,13,41,1])).then(({openTranscriptExportApproval:t})=>t(e)),createTranscriptExport:async(e,t)=>{let{runTranscriptExportForFollower:n}=await r(async()=>{let{runTranscriptExportForFollower:e}=await import(`./wc-transcript-export-B3p8LhYu.js`);return{runTranscriptExportForFollower:e}},__vite__mapDeps([42,4,43,13,41,1]));return n(e,t,i)},sendWebhookEvent:(e,t,n)=>i.sendWebhookEvent(e,t,n),onAgentEvent:t=>e.agentHandle.onEvent(t),execInShell:(e,t)=>L(i,{command:e,...t}),browserAPI:e.browser,browserTransport:e.realCdpTransport,vfs:{async stat(t){return(await e.openFs()).stat(t)},async readFile(t,n){return(await e.openFs()).readFile(t,n)}}})}function nt(e,t){return{wireLeaderHooks:t=>{k(()=>{let e=t.sync.getExecCapableBootstrapIds(),n=t.sync.getBrowserCapableBootstrapIds(),r=t.sync.getFollowerMotds();return t.peers.getPeers().map(t=>({runtimeId:ue(t.bootstrapId),runtime:t.runtime,connectedAt:t.connectedAt??void 0,exec:e.has(t.bootstrapId),cdp:n.has(t.bootstrapId),motd:r.get(t.bootstrapId)}))}),e.sprinkleManager.setSendToSprinkleHook((e,n)=>t.sync.broadcastSprinkleUpdate(e,n)),e.sprinkleManager.setReloadHook(e=>t.sync.broadcastSprinkleReloaded(e)),e.getController()?.setOnLocalUserMessage((e,n,r)=>t.sync.broadcastUserMessage(e,n,r)),e.getController()?.setOnLocalProcessingChange(e=>t.sync.broadcastStatus(e?`processing`:`ready`)),r(async()=>{let{setThemeChangeListener:e,getActiveThemeId:t}=await import(`./theme-engine-jfuTMXZM.js`).then(e=>e.p);return{setThemeChangeListener:e,getActiveThemeId:t}},__vite__mapDeps([44,1,12])).then(({setThemeChangeListener:e,getActiveThemeId:n})=>{let r;e(e=>{n()!==`__preview`&&(clearTimeout(r),r=setTimeout(()=>t.sync.broadcastTheme(e),150))})})},clearLeaderHooks:()=>{k(null),j([]),e.getController()?.setOnLocalUserMessage(void 0),e.getController()?.setOnLocalProcessingChange(void 0),e.sprinkleManager.setSendToSprinkleHook(void 0),e.sprinkleManager.setReloadHook(void 0),t.disposeAll(),r(async()=>{let{setThemeChangeListener:e}=await import(`./theme-engine-jfuTMXZM.js`).then(e=>e.p);return{setThemeChangeListener:e}},__vite__mapDeps([44,1,12])).then(({setThemeChangeListener:e})=>{e(null)})}}}function rt(e){return{runtime:`slicc-hosted-leader`,kind:`hosted`,onLeaderReady:t=>{fetch(h(`/api/cloud-status`),{method:`POST`,headers:g({"content-type":`application/json`}),body:JSON.stringify({joinUrl:t.joinUrl,trayId:t.trayId,controllerUrl:t.controllerUrl,webhookUrl:t.webhookUrl,runtime:t.runtime,sliccVersion:`5.85.0`}),signal:AbortSignal.timeout(1e4)}).catch(t=>{e.log.error(`failed to POST /api/cloud-status`,{error:String(t)})})}}}function it(e,t,n,r,i){let{window:a,log:o}=e;if(e.runtimeMode===`hosted-leader`){a.localStorage.removeItem(y);let i=a.localStorage.getItem(b);if(!i){o.error(`hosted-leader: tray worker base URL not seeded`);return}t.leader=Y({...n(i),...rt(e)}),r(t.leader),F({log:o});return}let s=a.localStorage.getItem(y),c=a.localStorage.getItem(b);s?t.follower=D($(e,s)):c&&at(c,e,t,n,r,i)}function at(e,t,n,r,i,a){$e({workerBaseUrl:e,lockManager:a,shouldLead:()=>!n.leader&&!n.follower&&t.window.localStorage.getItem(`slicc.trayWorkerBaseUrl`)===e,onGranted:t=>{n.lockRelease=t,n.leader=Y(r(e)),i(n.leader)}})}function ot(e,t,n,r){let{window:i,log:a}=e;i.addEventListener(`slicc:tray-join`,r=>{let i=r.detail?.joinUrl;if(!i)return;let o=t.leader,s=t.lockRelease;t.leader=null,t.lockRelease=null,n();let c=t.follower;t.follower=null;try{o?.stop()}catch(e){a.error(`leader stop threw during tray-join switch`,e)}s?.();try{c?.stop()}catch(e){a.error(`previous follower stop threw during tray-join switch`,e)}try{t.follower=D($(e,i))}catch(e){a.error(`tray-join failed`,e)}}),i.addEventListener(`slicc:tray-leave`,e=>{let t=e;r({workerBaseUrl:t.detail?.workerBaseUrl??null,requestId:t.detail?.requestId}).catch(e=>a.error(`tray-leave failed`,e))}),i.addEventListener(`beforeunload`,()=>{t.leader?.stop(),t.follower?.stop(),t.lockRelease?.(),t.lockRelease=null},{once:!0})}async function st(e){let{loadSprinkleStyles:t}=await r(async()=>{let{loadSprinkleStyles:e}=await import(`./legacy-styles-DcRu2WCJ.js`);return{loadSprinkleStyles:e}},__vite__mapDeps([45,4]));await t();let{client:n,instanceId:i,window:a,log:o}=e,s={leader:null,follower:null,lockRelease:null},c=et(),l=typeof BroadcastChannel==`function`?new BroadcastChannel(x(i)):null,u=Ze({getSync:()=>s.leader?.sync??null,postEvent:e=>{let t={type:`panel-rpc-push`,op:`remote-cdp-event`,payload:e};l?.postMessage(t)}});n.setForwardLickHandler(e=>{let t=s.follower?.currentSync;t?t.forwardLick(e):o.warn(`forward-lick dropped: no active follower sync`)});let d=tt(e,s,u),{wireLeaderHooks:f,clearLeaderHooks:p}=nt(e,u);a.addEventListener(se,()=>{s.leader?.sync.broadcastSnapshot()});let m=async e=>{let{performTrayLeave:t}=await r(async()=>{let{performTrayLeave:e}=await import(`./tray-leave-runtime-DuZ41JQ-.js`);return{performTrayLeave:e}},__vite__mapDeps([46,26,13,14,1,4,15,16,17,27])),n=()=>{s.leader||(s.lockRelease?.(),s.lockRelease=null)},i=t({workerBaseUrl:e.workerBaseUrl,requestId:e.requestId},{getLeader:()=>s.leader,setLeader:e=>{s.leader=e},getFollower:()=>s.follower,setFollower:e=>{s.follower=e},startLeader:e=>(s.lockRelease?.(),s.lockRelease=null,Q(e,c).then(e=>{if(e.status===`granted`){if(!s.leader){e.release();return}s.lockRelease=e.release}}),Y(d(e))),clearLeaderHooks:p,wireLeaderHooks:f,storage:a.localStorage,log:o});try{let e=await i;return n(),e}catch(e){throw n(),e}};return await P({instanceId:i,browser:e.browser,remoteCdpBridge:u,remoteCdpPushChannel:l,getLeader:()=>s.leader,performTrayLeaveLocally:m,window:a}),it(e,s,d,f,c),fe(e.refs.floatbar),ie(e=>{a.localStorage.setItem(`slicc.leaderTrayStatus`,JSON.stringify(e))}),a.localStorage.setItem(`slicc.leaderTrayStatus`,JSON.stringify(C())),te(e=>{a.localStorage.setItem(S,JSON.stringify(e))}),a.localStorage.setItem(S,JSON.stringify(ee())),j(A(),a.localStorage),ot(e,s,p,m),{getLeader:()=>s.leader,getFollower:()=>s.follower,performTrayLeaveLocally:m}}export{st as wireWcTray};
@@ -1 +1 @@
1
- import{R as e,d as t}from"./account-store-DqOwEqPJ.js";import{n}from"./event-stream-qbAZIAKV.js";import{a as r,r as i}from"./compat-aVSWLlYQ.js";import{c as a,i as o,r as s,s as c}from"./legacy-api-aliases-IllWZ-uu.js";import"./provider-settings-CzdPoa2L.js";import{n as l,r as u,t as d}from"./pkce-hGf_TEnP.js";import{XaiErrorCode as f,XaiOAuthError as p}from"./xai-grok-errors-bnlIBeu-.js";var m=`xai-grok`,h=`https://auth.x.ai`,g=`${h}/oauth2/authorize`,_=`${h}/oauth2/token`,v=`b1a00492-073a-47ea-816f-4c329264a828`,y=`openid profile email offline_access grok-cli:access api:access`,b=`http://127.0.0.1:56121/callback`,x=`http://127.0.0.1:56121/*`,S=`https://api.x.ai/v1`,C=`grok-4.5`,w=`${m}-openai`;function T(){return i(`xai`)}function E(e){return{id:e.id,name:e.name,api:`openai`,reasoning:e.reasoning,input:e.input,context_window:e.contextWindow,max_tokens:e.maxTokens,compat:e.compat,thinkingLevelMap:e.thinkingLevelMap}}function D(e){let t=T(),n=t.find(t=>t.id===e.id);if(!n&&(console.warn(`xAI model "${e.id}" is no longer in the pi-ai catalog; falling back to default "${C}"`),n=t.find(e=>e.id===C),!n))throw Error(`xAI default model "${C}" is not registered by pi-ai`);if(n.api!==`openai-responses`&&n.api!==`openai-completions`)throw Error(`Unsupported pi-ai API "${n.api}" for xAI model "${e.id}"`);return{...e,...n,baseUrl:S}}async function O(e,t){let n=new URLSearchParams({grant_type:`authorization_code`,code:e,redirect_uri:b,client_id:v,code_verifier:t}),r=await fetch(_,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:n});if(!r.ok)throw new p(`xAI token exchange failed: ${r.status} ${await r.text()}`,f.TOKEN_EXCHANGE_FAILED);let i=await r.json();if(!i.access_token)throw new p(`xAI token exchange did not return access_token.`,f.TOKEN_EXCHANGE_INVALID);return i}async function k(e){try{let t=new URLSearchParams({grant_type:`refresh_token`,refresh_token:e,client_id:v}),n=await fetch(_,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:t});return n.ok?await n.json():(console.error(`[xai-grok] refresh failed:`,n.status,await n.text()),null)}catch(e){return console.error(`[xai-grok] refresh error:`,e instanceof Error?e.message:String(e)),null}}function A(){return t().find(e=>e.providerId===m)}async function j(){let t=A();if(!t?.accessToken)throw new p("Not signed in to xAI Grok — run /login or `oauth-token xai-grok`",f.AUTH_MISSING,!0);let n=t.tokenExpiresAt??0;if(n&&Date.now()+6e4<n)return t.accessToken;if(t.refreshToken){let n=await k(t.refreshToken);if(n?.access_token)return await e({providerId:m,accessToken:n.access_token,refreshToken:n.refresh_token??t.refreshToken,tokenExpiresAt:Date.now()+(n.expires_in??21600)*1e3}),n.access_token}return t.accessToken}function M(e,t){return{type:`error`,reason:`error`,error:{role:`assistant`,content:[],api:w,provider:m,model:e.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:`error`,errorMessage:t instanceof Error?t.message:String(t),timestamp:Date.now()}}}function N(e,t){return t?{...e??{},"x-grok-conv-id":t}:e}var P=(e,t,r={})=>{let i=n();return(async()=>{try{let n=await j(),a=r.sessionId,c=D(e),l={...r,apiKey:n,headers:N(r.headers,a)},u=c.api===`openai-responses`?o(c,t,l):s(c,t,l);for await(let e of u)i.push(e);i.end()}catch(t){console.error(`[xai-grok] Stream error:`,t instanceof Error?t.message:String(t)),i.push(M(e,t)),i.end()}})(),i},F=(e,t,r)=>{let i=n();return(async()=>{try{let n=await j(),o=r?.sessionId,s=D(e),l={...r,apiKey:n,headers:N(r?.headers,o)},u=s.api===`openai-responses`?a(s,t,l):c(s,t,l);for await(let e of u)i.push(e);i.end()}catch(t){console.error(`[xai-grok] Stream error:`,t instanceof Error?t.message:String(t)),i.push(M(e,t)),i.end()}})(),i},I={id:m,name:`xAI Grok (SuperGrok OAuth)`,description:`Grok via xAI OAuth — uses your SuperGrok subscription, no API key needed. Default model is Grok 4.5.`,requiresApiKey:!1,requiresBaseUrl:!1,isOAuth:!0,defaultModelId:C,oauthTokenDomains:[`api.x.ai`,`*.x.ai`,`auth.x.ai`,`accounts.x.ai`],getModelIds:()=>T().map(E),onOAuthLoginIntercepted:async(t,n,r)=>{let i=l(),a=await d(i),o=u(),s=u(),c=new URL(g);c.searchParams.set(`response_type`,`code`),c.searchParams.set(`client_id`,v),c.searchParams.set(`redirect_uri`,b),c.searchParams.set(`scope`,r?.scopes??y),c.searchParams.set(`code_challenge`,a),c.searchParams.set(`code_challenge_method`,`S256`),c.searchParams.set(`state`,o),c.searchParams.set(`nonce`,s),c.searchParams.set(`plan`,`generic`),c.searchParams.set(`referrer`,`slicc`);let h=await t({authorizeUrl:c.toString(),redirectUriPattern:x,onCapture:`close`});if(!h)throw new p(`xAI OAuth login was cancelled or timed out`,f.CALLBACK_TIMEOUT);let _=new URL(h),C=_.searchParams.get(`code`),w=_.searchParams.get(`state`);if(!C)throw new p(`xAI OAuth redirect did not include a code`,f.CODE_MISSING);if(w!==o)throw new p(`xAI OAuth state mismatch — possible CSRF, aborting`,f.STATE_MISMATCH);let T=await O(C,i);await e({providerId:m,accessToken:T.access_token,refreshToken:T.refresh_token,tokenExpiresAt:Date.now()+(T.expires_in??21600)*1e3,baseUrl:S}),n()},onOAuthLogout:async()=>{await e({providerId:m,accessToken:``})},onSilentRenew:async()=>{let t=A();if(!t?.refreshToken)return null;let n=await k(t.refreshToken);return n?.access_token?(await e({providerId:m,accessToken:n.access_token,refreshToken:n.refresh_token??t.refreshToken,tokenExpiresAt:Date.now()+(n.expires_in??21600)*1e3}),n.access_token):null}};function L(){r({api:w,stream:P,streamSimple:F})}export{f as XaiErrorCode,p as XaiOAuthError,I as config,L as register};
1
+ import{R as e,d as t}from"./account-store-Cl38jIN3.js";import{n}from"./event-stream-qbAZIAKV.js";import{a as r,r as i}from"./compat-aVSWLlYQ.js";import{c as a,i as o,r as s,s as c}from"./legacy-api-aliases-IllWZ-uu.js";import"./provider-settings-5ZSUhS4X.js";import{n as l,r as u,t as d}from"./pkce-hGf_TEnP.js";import{XaiErrorCode as f,XaiOAuthError as p}from"./xai-grok-errors-bnlIBeu-.js";var m=`xai-grok`,h=`https://auth.x.ai`,g=`${h}/oauth2/authorize`,_=`${h}/oauth2/token`,v=`b1a00492-073a-47ea-816f-4c329264a828`,y=`openid profile email offline_access grok-cli:access api:access`,b=`http://127.0.0.1:56121/callback`,x=`http://127.0.0.1:56121/*`,S=`https://api.x.ai/v1`,C=`grok-4.5`,w=`${m}-openai`;function T(){return i(`xai`)}function E(e){return{id:e.id,name:e.name,api:`openai`,reasoning:e.reasoning,input:e.input,context_window:e.contextWindow,max_tokens:e.maxTokens,compat:e.compat,thinkingLevelMap:e.thinkingLevelMap}}function D(e){let t=T(),n=t.find(t=>t.id===e.id);if(!n&&(console.warn(`xAI model "${e.id}" is no longer in the pi-ai catalog; falling back to default "${C}"`),n=t.find(e=>e.id===C),!n))throw Error(`xAI default model "${C}" is not registered by pi-ai`);if(n.api!==`openai-responses`&&n.api!==`openai-completions`)throw Error(`Unsupported pi-ai API "${n.api}" for xAI model "${e.id}"`);return{...e,...n,baseUrl:S}}async function O(e,t){let n=new URLSearchParams({grant_type:`authorization_code`,code:e,redirect_uri:b,client_id:v,code_verifier:t}),r=await fetch(_,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:n});if(!r.ok)throw new p(`xAI token exchange failed: ${r.status} ${await r.text()}`,f.TOKEN_EXCHANGE_FAILED);let i=await r.json();if(!i.access_token)throw new p(`xAI token exchange did not return access_token.`,f.TOKEN_EXCHANGE_INVALID);return i}async function k(e){try{let t=new URLSearchParams({grant_type:`refresh_token`,refresh_token:e,client_id:v}),n=await fetch(_,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:t});return n.ok?await n.json():(console.error(`[xai-grok] refresh failed:`,n.status,await n.text()),null)}catch(e){return console.error(`[xai-grok] refresh error:`,e instanceof Error?e.message:String(e)),null}}function A(){return t().find(e=>e.providerId===m)}async function j(){let t=A();if(!t?.accessToken)throw new p("Not signed in to xAI Grok — run /login or `oauth-token xai-grok`",f.AUTH_MISSING,!0);let n=t.tokenExpiresAt??0;if(n&&Date.now()+6e4<n)return t.accessToken;if(t.refreshToken){let n=await k(t.refreshToken);if(n?.access_token)return await e({providerId:m,accessToken:n.access_token,refreshToken:n.refresh_token??t.refreshToken,tokenExpiresAt:Date.now()+(n.expires_in??21600)*1e3}),n.access_token}return t.accessToken}function M(e,t){return{type:`error`,reason:`error`,error:{role:`assistant`,content:[],api:w,provider:m,model:e.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:`error`,errorMessage:t instanceof Error?t.message:String(t),timestamp:Date.now()}}}function N(e,t){return t?{...e??{},"x-grok-conv-id":t}:e}var P=(e,t,r={})=>{let i=n();return(async()=>{try{let n=await j(),a=r.sessionId,c=D(e),l={...r,apiKey:n,headers:N(r.headers,a)},u=c.api===`openai-responses`?o(c,t,l):s(c,t,l);for await(let e of u)i.push(e);i.end()}catch(t){console.error(`[xai-grok] Stream error:`,t instanceof Error?t.message:String(t)),i.push(M(e,t)),i.end()}})(),i},F=(e,t,r)=>{let i=n();return(async()=>{try{let n=await j(),o=r?.sessionId,s=D(e),l={...r,apiKey:n,headers:N(r?.headers,o)},u=s.api===`openai-responses`?a(s,t,l):c(s,t,l);for await(let e of u)i.push(e);i.end()}catch(t){console.error(`[xai-grok] Stream error:`,t instanceof Error?t.message:String(t)),i.push(M(e,t)),i.end()}})(),i},I={id:m,name:`xAI Grok (SuperGrok OAuth)`,description:`Grok via xAI OAuth — uses your SuperGrok subscription, no API key needed. Default model is Grok 4.5.`,requiresApiKey:!1,requiresBaseUrl:!1,isOAuth:!0,defaultModelId:C,oauthTokenDomains:[`api.x.ai`,`*.x.ai`,`auth.x.ai`,`accounts.x.ai`],getModelIds:()=>T().map(E),onOAuthLoginIntercepted:async(t,n,r)=>{let i=l(),a=await d(i),o=u(),s=u(),c=new URL(g);c.searchParams.set(`response_type`,`code`),c.searchParams.set(`client_id`,v),c.searchParams.set(`redirect_uri`,b),c.searchParams.set(`scope`,r?.scopes??y),c.searchParams.set(`code_challenge`,a),c.searchParams.set(`code_challenge_method`,`S256`),c.searchParams.set(`state`,o),c.searchParams.set(`nonce`,s),c.searchParams.set(`plan`,`generic`),c.searchParams.set(`referrer`,`slicc`);let h=await t({authorizeUrl:c.toString(),redirectUriPattern:x,onCapture:`close`});if(!h)throw new p(`xAI OAuth login was cancelled or timed out`,f.CALLBACK_TIMEOUT);let _=new URL(h),C=_.searchParams.get(`code`),w=_.searchParams.get(`state`);if(!C)throw new p(`xAI OAuth redirect did not include a code`,f.CODE_MISSING);if(w!==o)throw new p(`xAI OAuth state mismatch — possible CSRF, aborting`,f.STATE_MISMATCH);let T=await O(C,i);await e({providerId:m,accessToken:T.access_token,refreshToken:T.refresh_token,tokenExpiresAt:Date.now()+(T.expires_in??21600)*1e3,baseUrl:S}),n()},onOAuthLogout:async()=>{await e({providerId:m,accessToken:``})},onSilentRenew:async()=>{let t=A();if(!t?.refreshToken)return null;let n=await k(t.refreshToken);return n?.access_token?(await e({providerId:m,accessToken:n.access_token,refreshToken:n.refresh_token??t.refreshToken,tokenExpiresAt:Date.now()+(n.expires_in??21600)*1e3}),n.access_token):null}};function L(){r({api:w,stream:P,streamSimple:F})}export{f as XaiErrorCode,p as XaiOAuthError,I as config,L as register};
@@ -1 +1 @@
1
- import{R as e,d as t}from"./account-store-CJ9KAeuF.js";import{n}from"./event-stream-qbAZIAKV.js";import{d as r,p as i}from"./bedrock-camp-BO4bvAKs.js";import{c as a,i as o,r as s,s as c}from"./legacy-api-aliases-sqlB2uHc.js";import"./provider-settings-_PFHVGxB.js";import{n as l,r as u,t as d}from"./pkce-hGf_TEnP.js";import{XaiErrorCode as f,XaiOAuthError as p}from"./xai-grok-errors-ByEMMSoz.js";const m=`xai-grok`,h=`https://auth.x.ai`,g=`${h}/oauth2/authorize`,_=`${h}/oauth2/token`,v=`b1a00492-073a-47ea-816f-4c329264a828`,y=`http://127.0.0.1:56121/callback`,b=`https://api.x.ai/v1`,x=`grok-4.5`,S=`${m}-openai`;function C(){return r(`xai`)}function w(e){return{id:e.id,name:e.name,api:`openai`,reasoning:e.reasoning,input:e.input,context_window:e.contextWindow,max_tokens:e.maxTokens,compat:e.compat,thinkingLevelMap:e.thinkingLevelMap}}function T(e){let t=C(),n=t.find(t=>t.id===e.id);if(!n&&(console.warn(`xAI model "${e.id}" is no longer in the pi-ai catalog; falling back to default "${x}"`),n=t.find(e=>e.id===x),!n))throw Error(`xAI default model "${x}" is not registered by pi-ai`);if(n.api!==`openai-responses`&&n.api!==`openai-completions`)throw Error(`Unsupported pi-ai API "${n.api}" for xAI model "${e.id}"`);return{...e,...n,baseUrl:b}}async function E(e,t){let n=new URLSearchParams({grant_type:`authorization_code`,code:e,redirect_uri:y,client_id:v,code_verifier:t}),r=await fetch(_,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:n});if(!r.ok)throw new p(`xAI token exchange failed: ${r.status} ${await r.text()}`,f.TOKEN_EXCHANGE_FAILED);let i=await r.json();if(!i.access_token)throw new p(`xAI token exchange did not return access_token.`,f.TOKEN_EXCHANGE_INVALID);return i}async function D(e){try{let t=new URLSearchParams({grant_type:`refresh_token`,refresh_token:e,client_id:v}),n=await fetch(_,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:t});return n.ok?await n.json():(console.error(`[xai-grok] refresh failed:`,n.status,await n.text()),null)}catch(e){return console.error(`[xai-grok] refresh error:`,e instanceof Error?e.message:String(e)),null}}function O(){return t().find(e=>e.providerId===m)}async function k(){let t=O();if(!t?.accessToken)throw new p("Not signed in to xAI Grok — run /login or `oauth-token xai-grok`",f.AUTH_MISSING,!0);let n=t.tokenExpiresAt??0;if(n&&Date.now()+6e4<n)return t.accessToken;if(t.refreshToken){let n=await D(t.refreshToken);if(n?.access_token)return await e({providerId:m,accessToken:n.access_token,refreshToken:n.refresh_token??t.refreshToken,tokenExpiresAt:Date.now()+(n.expires_in??21600)*1e3}),n.access_token}return t.accessToken}function A(e,t){return{type:`error`,reason:`error`,error:{role:`assistant`,content:[],api:S,provider:m,model:e.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:`error`,errorMessage:t instanceof Error?t.message:String(t),timestamp:Date.now()}}}function j(e,t){return t?{...e??{},"x-grok-conv-id":t}:e}const M=(e,t,r={})=>{let i=n();return(async()=>{try{let n=await k(),a=r.sessionId,c=T(e),l={...r,apiKey:n,headers:j(r.headers,a)},u=c.api===`openai-responses`?o(c,t,l):s(c,t,l);for await(let e of u)i.push(e);i.end()}catch(t){console.error(`[xai-grok] Stream error:`,t instanceof Error?t.message:String(t)),i.push(A(e,t)),i.end()}})(),i},N=(e,t,r)=>{let i=n();return(async()=>{try{let n=await k(),o=r?.sessionId,s=T(e),l={...r,apiKey:n,headers:j(r?.headers,o)},u=s.api===`openai-responses`?a(s,t,l):c(s,t,l);for await(let e of u)i.push(e);i.end()}catch(t){console.error(`[xai-grok] Stream error:`,t instanceof Error?t.message:String(t)),i.push(A(e,t)),i.end()}})(),i},P={id:m,name:`xAI Grok (SuperGrok OAuth)`,description:`Grok via xAI OAuth — uses your SuperGrok subscription, no API key needed. Default model is Grok 4.5.`,requiresApiKey:!1,requiresBaseUrl:!1,isOAuth:!0,defaultModelId:x,oauthTokenDomains:[`api.x.ai`,`*.x.ai`,`auth.x.ai`,`accounts.x.ai`],getModelIds:()=>C().map(w),onOAuthLoginIntercepted:async(t,n,r)=>{let i=l(),a=await d(i),o=u(),s=u(),c=new URL(g);c.searchParams.set(`response_type`,`code`),c.searchParams.set(`client_id`,v),c.searchParams.set(`redirect_uri`,y),c.searchParams.set(`scope`,r?.scopes??`openid profile email offline_access grok-cli:access api:access`),c.searchParams.set(`code_challenge`,a),c.searchParams.set(`code_challenge_method`,`S256`),c.searchParams.set(`state`,o),c.searchParams.set(`nonce`,s),c.searchParams.set(`plan`,`generic`),c.searchParams.set(`referrer`,`slicc`);let h=await t({authorizeUrl:c.toString(),redirectUriPattern:`http://127.0.0.1:56121/*`,onCapture:`close`});if(!h)throw new p(`xAI OAuth login was cancelled or timed out`,f.CALLBACK_TIMEOUT);let _=new URL(h),x=_.searchParams.get(`code`),S=_.searchParams.get(`state`);if(!x)throw new p(`xAI OAuth redirect did not include a code`,f.CODE_MISSING);if(S!==o)throw new p(`xAI OAuth state mismatch — possible CSRF, aborting`,f.STATE_MISMATCH);let C=await E(x,i);await e({providerId:m,accessToken:C.access_token,refreshToken:C.refresh_token,tokenExpiresAt:Date.now()+(C.expires_in??21600)*1e3,baseUrl:b}),n()},onOAuthLogout:async()=>{await e({providerId:m,accessToken:``})},onSilentRenew:async()=>{let t=O();if(!t?.refreshToken)return null;let n=await D(t.refreshToken);return n?.access_token?(await e({providerId:m,accessToken:n.access_token,refreshToken:n.refresh_token??t.refreshToken,tokenExpiresAt:Date.now()+(n.expires_in??21600)*1e3}),n.access_token):null}};function F(){i({api:S,stream:M,streamSimple:N})}export{f as XaiErrorCode,p as XaiOAuthError,P as config,F as register};
1
+ import{R as e,d as t}from"./account-store-uZBiyCfC.js";import{n}from"./event-stream-qbAZIAKV.js";import{d as r,p as i}from"./bedrock-camp-BO4bvAKs.js";import{c as a,i as o,r as s,s as c}from"./legacy-api-aliases-sqlB2uHc.js";import"./provider-settings-CfhqyIyK.js";import{n as l,r as u,t as d}from"./pkce-hGf_TEnP.js";import{XaiErrorCode as f,XaiOAuthError as p}from"./xai-grok-errors-ByEMMSoz.js";const m=`xai-grok`,h=`https://auth.x.ai`,g=`${h}/oauth2/authorize`,_=`${h}/oauth2/token`,v=`b1a00492-073a-47ea-816f-4c329264a828`,y=`http://127.0.0.1:56121/callback`,b=`https://api.x.ai/v1`,x=`grok-4.5`,S=`${m}-openai`;function C(){return r(`xai`)}function w(e){return{id:e.id,name:e.name,api:`openai`,reasoning:e.reasoning,input:e.input,context_window:e.contextWindow,max_tokens:e.maxTokens,compat:e.compat,thinkingLevelMap:e.thinkingLevelMap}}function T(e){let t=C(),n=t.find(t=>t.id===e.id);if(!n&&(console.warn(`xAI model "${e.id}" is no longer in the pi-ai catalog; falling back to default "${x}"`),n=t.find(e=>e.id===x),!n))throw Error(`xAI default model "${x}" is not registered by pi-ai`);if(n.api!==`openai-responses`&&n.api!==`openai-completions`)throw Error(`Unsupported pi-ai API "${n.api}" for xAI model "${e.id}"`);return{...e,...n,baseUrl:b}}async function E(e,t){let n=new URLSearchParams({grant_type:`authorization_code`,code:e,redirect_uri:y,client_id:v,code_verifier:t}),r=await fetch(_,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:n});if(!r.ok)throw new p(`xAI token exchange failed: ${r.status} ${await r.text()}`,f.TOKEN_EXCHANGE_FAILED);let i=await r.json();if(!i.access_token)throw new p(`xAI token exchange did not return access_token.`,f.TOKEN_EXCHANGE_INVALID);return i}async function D(e){try{let t=new URLSearchParams({grant_type:`refresh_token`,refresh_token:e,client_id:v}),n=await fetch(_,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:t});return n.ok?await n.json():(console.error(`[xai-grok] refresh failed:`,n.status,await n.text()),null)}catch(e){return console.error(`[xai-grok] refresh error:`,e instanceof Error?e.message:String(e)),null}}function O(){return t().find(e=>e.providerId===m)}async function k(){let t=O();if(!t?.accessToken)throw new p("Not signed in to xAI Grok — run /login or `oauth-token xai-grok`",f.AUTH_MISSING,!0);let n=t.tokenExpiresAt??0;if(n&&Date.now()+6e4<n)return t.accessToken;if(t.refreshToken){let n=await D(t.refreshToken);if(n?.access_token)return await e({providerId:m,accessToken:n.access_token,refreshToken:n.refresh_token??t.refreshToken,tokenExpiresAt:Date.now()+(n.expires_in??21600)*1e3}),n.access_token}return t.accessToken}function A(e,t){return{type:`error`,reason:`error`,error:{role:`assistant`,content:[],api:S,provider:m,model:e.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:`error`,errorMessage:t instanceof Error?t.message:String(t),timestamp:Date.now()}}}function j(e,t){return t?{...e??{},"x-grok-conv-id":t}:e}const M=(e,t,r={})=>{let i=n();return(async()=>{try{let n=await k(),a=r.sessionId,c=T(e),l={...r,apiKey:n,headers:j(r.headers,a)},u=c.api===`openai-responses`?o(c,t,l):s(c,t,l);for await(let e of u)i.push(e);i.end()}catch(t){console.error(`[xai-grok] Stream error:`,t instanceof Error?t.message:String(t)),i.push(A(e,t)),i.end()}})(),i},N=(e,t,r)=>{let i=n();return(async()=>{try{let n=await k(),o=r?.sessionId,s=T(e),l={...r,apiKey:n,headers:j(r?.headers,o)},u=s.api===`openai-responses`?a(s,t,l):c(s,t,l);for await(let e of u)i.push(e);i.end()}catch(t){console.error(`[xai-grok] Stream error:`,t instanceof Error?t.message:String(t)),i.push(A(e,t)),i.end()}})(),i},P={id:m,name:`xAI Grok (SuperGrok OAuth)`,description:`Grok via xAI OAuth — uses your SuperGrok subscription, no API key needed. Default model is Grok 4.5.`,requiresApiKey:!1,requiresBaseUrl:!1,isOAuth:!0,defaultModelId:x,oauthTokenDomains:[`api.x.ai`,`*.x.ai`,`auth.x.ai`,`accounts.x.ai`],getModelIds:()=>C().map(w),onOAuthLoginIntercepted:async(t,n,r)=>{let i=l(),a=await d(i),o=u(),s=u(),c=new URL(g);c.searchParams.set(`response_type`,`code`),c.searchParams.set(`client_id`,v),c.searchParams.set(`redirect_uri`,y),c.searchParams.set(`scope`,r?.scopes??`openid profile email offline_access grok-cli:access api:access`),c.searchParams.set(`code_challenge`,a),c.searchParams.set(`code_challenge_method`,`S256`),c.searchParams.set(`state`,o),c.searchParams.set(`nonce`,s),c.searchParams.set(`plan`,`generic`),c.searchParams.set(`referrer`,`slicc`);let h=await t({authorizeUrl:c.toString(),redirectUriPattern:`http://127.0.0.1:56121/*`,onCapture:`close`});if(!h)throw new p(`xAI OAuth login was cancelled or timed out`,f.CALLBACK_TIMEOUT);let _=new URL(h),x=_.searchParams.get(`code`),S=_.searchParams.get(`state`);if(!x)throw new p(`xAI OAuth redirect did not include a code`,f.CODE_MISSING);if(S!==o)throw new p(`xAI OAuth state mismatch — possible CSRF, aborting`,f.STATE_MISMATCH);let C=await E(x,i);await e({providerId:m,accessToken:C.access_token,refreshToken:C.refresh_token,tokenExpiresAt:Date.now()+(C.expires_in??21600)*1e3,baseUrl:b}),n()},onOAuthLogout:async()=>{await e({providerId:m,accessToken:``})},onSilentRenew:async()=>{let t=O();if(!t?.refreshToken)return null;let n=await D(t.refreshToken);return n?.access_token?(await e({providerId:m,accessToken:n.access_token,refreshToken:n.refresh_token??t.refreshToken,tokenExpiresAt:Date.now()+(n.expires_in??21600)*1e3}),n.access_token):null}};function F(){i({api:S,stream:M,streamSimple:N})}export{f as XaiErrorCode,p as XaiOAuthError,P as config,F as register};
@@ -5,7 +5,7 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <title>slicc</title>
7
7
  <link rel="icon" type="image/png" href="/logos/sliccy-color-1scoops-32x32.png" />
8
- <script type="module" crossorigin src="/assets/main-OC7WLZIp.js"></script>
8
+ <script type="module" crossorigin src="/assets/main-B10kZ_Ob.js"></script>
9
9
  <link rel="modulepreload" crossorigin href="/assets/modulepreload-polyfill-Dezn_h7o.js">
10
10
  <link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-aKtaBQYM.js">
11
11
  <link rel="modulepreload" crossorigin href="/assets/preload-helper-Czpn1I53.js">
@@ -26,23 +26,23 @@
26
26
  <link rel="modulepreload" crossorigin href="/assets/port-bridge-client-DdolH4cw.js">
27
27
  <link rel="modulepreload" crossorigin href="/assets/secrets-bridge-client-CLRo0NLf.js">
28
28
  <link rel="modulepreload" crossorigin href="/assets/tool-ui-DfXu6quJ.js">
29
- <link rel="modulepreload" crossorigin href="/assets/providers-Bq7zW4Gk.js">
29
+ <link rel="modulepreload" crossorigin href="/assets/providers-C3QccIn1.js">
30
30
  <link rel="modulepreload" crossorigin href="/assets/panel-rpc-DmJSNs0I.js">
31
31
  <link rel="modulepreload" crossorigin href="/assets/transform-messages-wECJwtH0.js">
32
32
  <link rel="modulepreload" crossorigin href="/assets/bedrock-camp-CVignIdH.js">
33
- <link rel="modulepreload" crossorigin href="/assets/account-store-DqOwEqPJ.js">
33
+ <link rel="modulepreload" crossorigin href="/assets/account-store-Cl38jIN3.js">
34
34
  <link rel="modulepreload" crossorigin href="/assets/electron-overlay-route-CjT6k9Df.js">
35
35
  <link rel="modulepreload" crossorigin href="/assets/bridge-launch-params-QY3l_LbM.js">
36
36
  <link rel="modulepreload" crossorigin href="/assets/messages-BD4p8GuF.js">
37
37
  <link rel="modulepreload" crossorigin href="/assets/tray-runtime-config-9kTxza5l.js">
38
38
  <link rel="modulepreload" crossorigin href="/assets/runtime-mode-BweZnYql.js">
39
- <link rel="modulepreload" crossorigin href="/assets/setup-sudo-krlb-y3i.js">
40
- <link rel="modulepreload" crossorigin href="/assets/setup-standalone-prelude-KH8G_LfB.js">
39
+ <link rel="modulepreload" crossorigin href="/assets/setup-sudo-B9Ylt90j.js">
40
+ <link rel="modulepreload" crossorigin href="/assets/setup-standalone-prelude-C8f1oX0w.js">
41
41
  <link rel="modulepreload" crossorigin href="/assets/telemetry-Dxrv_mDE.js">
42
42
  <link rel="modulepreload" crossorigin href="/assets/tray-follower-status-5SqDRLX8.js">
43
43
  <link rel="modulepreload" crossorigin href="/assets/clipboard-DuHpK59o.js">
44
44
  <link rel="modulepreload" crossorigin href="/assets/tray-join-url-BIvzbiFR.js">
45
- <link rel="modulepreload" crossorigin href="/assets/provider-settings-CzdPoa2L.js">
45
+ <link rel="modulepreload" crossorigin href="/assets/provider-settings-5ZSUhS4X.js">
46
46
  </head>
47
47
  <body>
48
48
  <div id="app"></div>