sliccy 5.52.0 → 5.54.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/node-server/_shared/agent-wire-types.d.ts +17 -1
- package/dist/node-server/_shared/agent-wire-types.d.ts.map +1 -1
- package/dist/ui/assets/{account-store-fUIbRrPn.js → account-store-Bfg1CRwM.js} +3 -3
- package/dist/ui/assets/{account-store-Cwu2pDmj.js → account-store-DIVQdMGy.js} +2 -2
- package/dist/ui/assets/{adobe-Br_Gdbb2.js → adobe-C5i6_wwf.js} +2 -2
- package/dist/ui/assets/{adobe-DQDvqCF8.js → adobe-D778QuoM.js} +1 -1
- package/dist/ui/assets/{adobe-oauth-state-Bwd-NlMn.js → adobe-oauth-state-COAZbAkx.js} +1 -1
- package/dist/ui/assets/agent-message-to-chat-hGyZAoqz.js +7 -0
- package/dist/ui/assets/{apps-Dp_IzuS3.js → apps-BKReSUo_.js} +1 -1
- package/dist/ui/assets/{azure-openai-DZkP0H1e.js → azure-openai-CbJynU6_.js} +1 -1
- package/dist/ui/assets/{azure-openai-DLUJX2fF.js → azure-openai-V5bR1P_g.js} +1 -1
- package/dist/ui/assets/{cdp-iT0_1vT5.js → cdp-Bwq6NLAx.js} +1 -1
- package/dist/ui/assets/{cerebras-CMFR2TZJ.js → cerebras-BxmNcXod.js} +1 -1
- package/dist/ui/assets/{cerebras-CyOi_XZC.js → cerebras-P5z8r27a.js} +1 -1
- package/dist/ui/assets/clipboard-BQvYsZDd.js +1 -0
- package/dist/ui/assets/{composer-speech-DPXp4vcl.js → composer-speech-B8V-HLb6.js} +1 -1
- package/dist/ui/assets/{connect-surface-C8ML_umN.js → connect-surface-_lE2lt_z.js} +1 -1
- package/dist/ui/assets/dip-MjKe6rcY.js +1 -0
- package/dist/ui/assets/discovery-preference-BW6cMs7y.js +1 -0
- package/dist/ui/assets/{dist-1ElqcKs_.js → dist-HnSPK0Dl.js} +1 -1
- package/dist/ui/assets/{dist-DScnLqz0.js → dist-bzQavVFh.js} +1 -1
- package/dist/ui/assets/{ensure-speech-assets-C7BGZKmk.js → ensure-speech-assets-BAuIy3Ni.js} +1 -1
- package/dist/ui/assets/esp8266-CsKVQ_sU.js +1 -0
- package/dist/ui/assets/{esptool-operations-BDEgM_Yx.js → esptool-operations-F-hkIiwx.js} +2 -2
- package/dist/ui/assets/extension-bridge-transport-Bi9JIuzJ.js +1 -0
- package/dist/ui/assets/follower-navigate-watcher-BG05gdE6.js +1 -0
- package/dist/ui/assets/{fs-CY4HCiAi.js → fs-D1LelFmP.js} +2 -2
- package/dist/ui/assets/{fs-_TvRxez_.js → fs-s_0LlRfL.js} +1 -1
- package/dist/ui/assets/{github-DnFvV77S.js → github-BG6P58I4.js} +1 -1
- package/dist/ui/assets/github-CyLfByWH.js +2 -0
- package/dist/ui/assets/{github-copilot-9JIFL_fS.js → github-copilot-CVilYl_j.js} +1 -1
- package/dist/ui/assets/{github-copilot-CyRqGKiv.js → github-copilot-Dy8s9hkq.js} +1 -1
- package/dist/ui/assets/{handoff-link-By6sYO7Q.js → handoff-link-CLvhqfpd.js} +1 -1
- package/dist/ui/assets/{hear-DmfBLEAs.js → hear-BKy_osDe.js} +1 -1
- package/dist/ui/assets/{hear-DRhcQ9-i.js → hear-BkXLpxpM.js} +1 -1
- package/dist/ui/assets/{js-realm-worker-D0EPN1-r.js → js-realm-worker-Ch8qkx8Z.js} +2 -2
- package/dist/ui/assets/{kernel-worker-D0pvhPqC.js → kernel-worker-BlqUFwWn.js} +1130 -1130
- package/dist/ui/assets/{kokoro-engine-DpxabN62.js → kokoro-engine-B_18RIz3.js} +1 -1
- package/dist/ui/assets/lick-ws-bridge-CRXtBTWE.js +1 -0
- package/dist/ui/assets/{lick-ws-bridge-CC2swAdo.js → lick-ws-bridge-mM-6WGeI.js} +1 -1
- package/dist/ui/assets/{local-llm-WCUqsTgf.js → local-llm-DPYoJ5Bb.js} +1 -1
- package/dist/ui/assets/{main-BA9clMpx.js → main-BppGyjdX.js} +4 -4
- package/dist/ui/assets/{main-cherry-B-6AaNS7.js → main-cherry-d-KDlb8k.js} +1 -1
- package/dist/ui/assets/{mount-CCT3Cmc5.js → mount-CFGIZX9q.js} +1 -1
- package/dist/ui/assets/{mount-CWljs_zl.js → mount-D8KkksGz.js} +2 -2
- package/dist/ui/assets/{mount-bridge-client-BGrzpnaP.js → mount-bridge-client-FRa4G0MH.js} +1 -1
- package/dist/ui/assets/navigation-watcher-DTSw-td6.js +1 -0
- package/dist/ui/assets/{new-session-BAs6CgoK.js → new-session-Dx98R-kd.js} +2 -2
- package/dist/ui/assets/{oauth-bootstrap-CXkJHGyw.js → oauth-bootstrap-CEp6B2Ml.js} +2 -2
- package/dist/ui/assets/{oauth-service-D_D4QXZX.js → oauth-service-D58ueyXA.js} +1 -1
- package/dist/ui/assets/{openai-codex-MePwX6c1.js → openai-codex-6d_KLiRt.js} +1 -1
- package/dist/ui/assets/{openai-codex-HmSO8p6Q.js → openai-codex-B92aTUuU.js} +1 -1
- package/dist/ui/assets/{page-follower-tray-B3Z88j65.js → page-follower-tray-2GSnipPF.js} +1 -1
- package/dist/ui/assets/{panel-rpc-handlers-DWFJ4rHR.js → panel-rpc-handlers-CN1dEDQK.js} +2 -2
- package/dist/ui/assets/port-bridge-client-CGFx2ke3.js +2 -0
- package/dist/ui/assets/{provider-CDP1z08R.js → provider-B-yhezsl.js} +1 -1
- package/dist/ui/assets/{provider-CPzr48yO.js → provider-BHJteE58.js} +2 -2
- package/dist/ui/assets/{provider-settings-BsrJn9IN.js → provider-settings-b5jFTV-5.js} +1 -1
- package/dist/ui/assets/provider-store-access-CE5SGYrx.js +1 -0
- package/dist/ui/assets/provider-store-access-CjJBs2vs.js +1 -0
- package/dist/ui/assets/{providers-IOmfn55S.js → providers-BqAiMtYH.js} +1 -1
- package/dist/ui/assets/{providers-DJQ__3fI.js → providers-C63wK-0B.js} +2 -2
- package/dist/ui/assets/{proxied-fetch-DYnrtCU7.js → proxied-fetch-yLWx9zA-.js} +1 -1
- package/dist/ui/assets/{quick-llm-cQt8fc_K.js → quick-llm-BkIrUtXB.js} +1 -1
- package/dist/ui/assets/{secret-env-DjYxJrPL.js → secret-env-xUB5Xung.js} +1 -1
- package/dist/ui/assets/{secret-topology-jJDgwoYT.js → secret-topology-W2sG5lL7.js} +1 -1
- package/dist/ui/assets/{secrets-bridge-client-t0NUGSqq.js → secrets-bridge-client-DfyO6Hhm.js} +1 -1
- package/dist/ui/assets/session-freezer-b9Ccyj2H.js +1 -0
- package/dist/ui/assets/{speak-PnHDgq7x.js → speak-B6Zp65kg.js} +1 -1
- package/dist/ui/assets/{speak-CHNaawUc.js → speak-CQPVDT0F.js} +1 -1
- package/dist/ui/assets/{sprinkle-manager-BzwEEPDU.js → sprinkle-manager-Bn2RHGq6.js} +1 -1
- package/dist/ui/assets/{store-BOABVLiO.js → store-Csn7JCXn.js} +1 -1
- package/dist/ui/assets/{sudo-Bs_E2zPV.js → sudo-DTuJ5m9n.js} +1 -1
- package/dist/ui/assets/{transformers-env-5B2oOoUE.js → transformers-env-BEcKpoPS.js} +1 -1
- package/dist/ui/assets/{transformers-env-Yi6TInv2.js → transformers-env-DO4B4fc3.js} +1 -1
- package/dist/ui/assets/{tray-leader-CeWWttmI.js → tray-leader-FQkUyUE9.js} +1 -1
- package/dist/ui/assets/{tray-leave-runtime-C9Ols8L5.js → tray-leave-runtime-yAcVzVDS.js} +1 -1
- package/dist/ui/assets/{upgrade-detection-mMBGXO42.js → upgrade-detection-t1cXrq3g.js} +1 -1
- package/dist/ui/assets/{voice-reply-C3-mzNMK.js → voice-reply-B6LXAwnO.js} +1 -1
- package/dist/ui/assets/{wc-attach-KPCV5u22.js → wc-attach-BiC7Vka3.js} +2 -2
- package/dist/ui/assets/{wc-extension-BEVU5WOQ.js → wc-extension-BngIfv-W.js} +2 -2
- package/dist/ui/assets/{wc-float-label-BISx64aP.js → wc-float-label-DfdeLjrr.js} +1 -1
- package/dist/ui/assets/{wc-follower-Bi3KCiAR.js → wc-follower-ChQMBU9M.js} +3 -3
- package/dist/ui/assets/{wc-live-BAo1_2JE.js → wc-live-CfLoHw3V.js} +5 -5
- package/dist/ui/assets/wc-nav-CBySgAvU.js +2 -0
- package/dist/ui/assets/{wc-onboarding-E9VSRabd.js → wc-onboarding-D1tzl2oz.js} +2 -2
- package/dist/ui/assets/{wc-placeholder-DwY4PhgM.js → wc-placeholder-BH3K2wWF.js} +3 -3
- package/dist/ui/assets/wc-settings-FL6xP_Rk.js +51 -0
- package/dist/ui/assets/{wc-shell-BocKvSH4.js → wc-shell-i3rmMNiS.js} +5 -5
- package/dist/ui/assets/{wc-sprinkles-DlQFM6ZP.js → wc-sprinkles-B5Ook5Ju.js} +2 -2
- package/dist/ui/assets/wc-tray-Ds7ybX-p.js +2 -0
- package/dist/ui/assets/{whisper-engine-CEOzULpt.js → whisper-engine-TfY1mUyu.js} +1 -1
- package/dist/ui/assets/{whisper-session-B15NxucK.js → whisper-session-_SNUO18n.js} +2 -2
- package/dist/ui/assets/{xai-grok-DF9MrRPm.js → xai-grok-CmATfO6u.js} +1 -1
- package/dist/ui/assets/{xai-grok-CWjdcPmw.js → xai-grok-Dq8hZmT4.js} +1 -1
- package/dist/ui/index.html +7 -7
- package/dist/ui/packages/webapp/index.html +7 -7
- package/package.json +1 -1
- package/dist/ui/assets/agent-message-to-chat-CCzla-L3.js +0 -7
- package/dist/ui/assets/clipboard-DBahUxoT.js +0 -1
- package/dist/ui/assets/dip-Bnst0gRj.js +0 -1
- package/dist/ui/assets/esp8266-Byg1_46x.js +0 -1
- package/dist/ui/assets/extension-bridge-transport-B9IadbHV.js +0 -1
- package/dist/ui/assets/follower-navigate-watcher-vgyyxB2t.js +0 -1
- package/dist/ui/assets/github-CI3yK5xn.js +0 -2
- package/dist/ui/assets/lick-ws-bridge-0w7Ct3pj.js +0 -1
- package/dist/ui/assets/navigation-watcher-mnaCOPhr.js +0 -1
- package/dist/ui/assets/port-bridge-client-Ca5V2n0P.js +0 -2
- package/dist/ui/assets/provider-store-access-COFx4VHW.js +0 -1
- package/dist/ui/assets/provider-store-access-D9SXEQkp.js +0 -1
- package/dist/ui/assets/session-freezer-D6E5eTL9.js +0 -1
- package/dist/ui/assets/wc-nav-DqQeS7QI.js +0 -2
- package/dist/ui/assets/wc-settings-D6Zz2Lqk.js +0 -51
- package/dist/ui/assets/wc-tray-PLGBACVf.js +0 -2
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/oauth-service-D_D4QXZX.js","assets/preload-helper-CZgWQFsJ.js","assets/proxied-fetch-DYnrtCU7.js","assets/rolldown-runtime-aKtaBQYM.js","assets/src-BvERX0WZ.js","assets/runtime-env-DH4NDw4t.js","assets/fetch-body-D2PwksUW.js","assets/panel-rpc-DmJSNs0I.js","assets/wc-permissions-registry-Blyunq37.js","assets/main-BA9clMpx.js","assets/modulepreload-polyfill-Dezn_h7o.js","assets/account-store-fUIbRrPn.js","assets/compat-FrhC6T45.js","assets/models-ByRUWfA-.js","assets/provider-env-D37PhSJu.js","assets/__vite-browser-external-SwrSgYTf.js","assets/context-compaction-LYFtS2_f.js","assets/logger-DDBAeTLF.js","assets/secret-topology-jJDgwoYT.js","assets/secrets-bridge-client-t0NUGSqq.js","assets/port-bridge-client-Ca5V2n0P.js","assets/tool-ui-DfXu6quJ.js","assets/providers-DJQ__3fI.js","assets/bedrock-camp-CZFsedRI.js","assets/transform-messages-DwI5R8if.js","assets/messages-BD4p8GuF.js","assets/clipboard-DuHpK59o.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{t as e}from"./preload-helper-CZgWQFsJ.js";import{_ as t,g as n}from"./wc-shell-BocKvSH4.js";import{a as r,c as i,d as a,f as o,i as s,l as c,m as l,o as u,s as d,t as f,u as p}from"./theme-engine-17gZ2QvH.js";import{t as m}from"./theme-VRTdmUBw.js";var h={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`]},g=`slicc-wc-settings-style`,_=`
|
|
3
|
-
/* Width is owned by the dialog card (via ::part) — a min-width on the body
|
|
4
|
-
used to overflow the card's content box and clip the row borders. */
|
|
5
|
-
slicc-dialog.wcset-dialog::part(dialog){width:min(520px,92vw);}
|
|
6
|
-
.wcset{display:flex;flex-direction:column;gap:14px;font-family:var(--ui);color:var(--ink);}
|
|
7
|
-
.wcset__list{display:flex;flex-direction:column;gap:8px;}
|
|
8
|
-
.wcset__empty{color:var(--txt-3);font-size:12.5px;}
|
|
9
|
-
.wcset__row{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--canvas);}
|
|
10
|
-
.wcset__info{flex:1;min-width:0;}
|
|
11
|
-
.wcset__name{font-size:13px;font-weight:600;}
|
|
12
|
-
.wcset__detail{font-size:11px;color:var(--txt-3);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
|
|
13
|
-
.wcset__btn{font:500 12px var(--ui);color:var(--ink);background:transparent;border:1px solid var(--line);border-radius:8px;padding:5px 10px;cursor:pointer;flex:0 0 auto;}
|
|
14
|
-
.wcset__btn:hover{background:var(--ghost);}
|
|
15
|
-
.wcset__btn--danger:hover{color:#b91c1c;border-color:#b91c1c;}
|
|
16
|
-
.wcset__btn--primary{background:var(--ink);color:var(--canvas);border-color:var(--ink);}
|
|
17
|
-
.wcset__btn--primary:hover{background:color-mix(in srgb,var(--ink) 85%,var(--canvas));}
|
|
18
|
-
.wcset__add{display:flex;flex-direction:column;gap:8px;border-top:1px solid var(--line);padding-top:14px;}
|
|
19
|
-
.wcset__label{font-size:11px;font-weight:600;color:var(--txt-2);text-transform:uppercase;letter-spacing:.04em;}
|
|
20
|
-
.wcset__select,.wcset__input{font:400 12.5px var(--ui);color:var(--ink);background:var(--canvas);border:1px solid var(--line);border-radius:8px;padding:7px 9px;outline:none;width:100%;box-sizing:border-box;}
|
|
21
|
-
.wcset__select:focus,.wcset__input:focus{border-color:var(--ctx);}
|
|
22
|
-
.wcset__status{font-size:11.5px;color:var(--txt-3);min-height:14px;}
|
|
23
|
-
.wcset__status[data-error]{color:#b91c1c;}
|
|
24
|
-
.wcset__appearance{display:flex;flex-direction:column;gap:12px;padding-bottom:14px;border-bottom:1px solid var(--line);}
|
|
25
|
-
.wcset__section-label{font-size:11px;font-weight:600;color:var(--txt-2);text-transform:uppercase;letter-spacing:.04em;}
|
|
26
|
-
.wcset__preset-grid{display:flex;flex-wrap:wrap;gap:8px;}
|
|
27
|
-
.wcset__preset-swatch{width:56px;height:48px;border-radius:8px;border:2px solid transparent;cursor:pointer;display:flex;flex-direction:column;overflow:hidden;transition:border-color 130ms ease;}
|
|
28
|
-
.wcset__preset-swatch:hover{border-color:var(--ctx);}
|
|
29
|
-
.wcset__preset-swatch--active{border-color:var(--ink);}
|
|
30
|
-
.wcset__preset-swatch__stripe{flex:1;}
|
|
31
|
-
.wcset__preset-name{font-size:9px;text-align:center;padding:2px 0;background:var(--canvas);color:var(--txt-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
|
|
32
|
-
.wcset__custom-themes{display:flex;flex-direction:column;gap:6px;}
|
|
33
|
-
.wcset__custom-row{display:flex;align-items:center;gap:8px;padding:6px 8px;border:1px solid var(--line);border-radius:8px;}
|
|
34
|
-
.wcset__custom-row__name{flex:1;font-size:12px;font-weight:500;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
|
|
35
|
-
.wcset__builder{display:flex;flex-direction:column;gap:10px;padding:12px;border:1px solid var(--line);border-radius:10px;background:var(--canvas);}
|
|
36
|
-
.wcset__builder-row{display:flex;align-items:center;gap:8px;}
|
|
37
|
-
.wcset__builder-row label{font-size:11px;color:var(--txt-2);min-width:80px;}
|
|
38
|
-
.wcset__builder-row input[type="color"]{width:32px;height:24px;border:1px solid var(--line);border-radius:4px;padding:0;cursor:pointer;background:transparent;}
|
|
39
|
-
.wcset__builder-row input[type="color"]::-webkit-color-swatch-wrapper{padding:2px;}
|
|
40
|
-
.wcset__builder-row input[type="color"]::-webkit-color-swatch{border-radius:2px;border:none;}
|
|
41
|
-
.wcset__advanced-toggle{font-size:11px;color:var(--ctx);cursor:pointer;background:none;border:none;padding:0;text-decoration:underline;}
|
|
42
|
-
.wcset__advanced-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px;}
|
|
43
|
-
.wcset__advanced-token{display:flex;align-items:center;gap:4px;font-size:10px;color:var(--txt-3);}
|
|
44
|
-
.wcset__advanced-token input[type="color"]{width:20px;height:16px;border:1px solid var(--line);border-radius:3px;padding:0;cursor:pointer;background:transparent;}
|
|
45
|
-
.wcset__base-toggle{display:flex;gap:4px;}
|
|
46
|
-
.wcset__base-toggle button{font-size:11px;padding:3px 8px;border-radius:6px;border:1px solid var(--line);background:transparent;color:var(--txt-2);cursor:pointer;}
|
|
47
|
-
.wcset__base-toggle button.active{background:var(--ink);color:var(--canvas);border-color:var(--ink);}
|
|
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
|
-
.wcset__toggle-row label{font-size:13px;font-weight:500;color:var(--ink);}
|
|
50
|
-
.wcset__toggle-row input[type="checkbox"]{width:16px;height:16px;accent-color:var(--ctx);}
|
|
51
|
-
`;function v(e){if(e.getElementById(g))return;let t=e.createElement(`style`);t.id=g,t.textContent=_,e.head.appendChild(t)}function y(e,t){let n=document.createElement(`div`);return n.className=e,t!==void 0&&(n.textContent=t),n}function b(e,t,n){let r=document.createElement(`button`);return r.type=`button`,r.className=e,r.textContent=t,r.addEventListener(`click`,n),r}function x(e){return e?e.length<=8?`••••`:`${e.slice(0,4)}…${e.slice(-4)}`:``}function S(e){let t;return t=e.loggedOut?e.userName?`Logged out — was ${e.userName}`:`Logged out`:e.userName?e.userName:e.accessToken?`Logged in`:x(e.apiKey),e.baseUrl?`${t} • ${e.baseUrl}`:t}async function C(t,n,r){let{ps:i,log:a,setStatus:o,renderList:s}=r,c=i.getProviderConfig(t),l=i.getAccounts().some(e=>e.providerId===t);if(c.requiresBaseUrl){if(!n.trim()&&!i.getBaseUrlForProvider(t)){o(`Base URL is required.`,!0);return}n.trim()&&i.addAccount(t,``,n.trim())}o(`Opening login window…`);let u=()=>{o(``),s()};try{if(c.onOAuthLoginIntercepted){let{createInterceptingOAuthLauncherForCurrentRuntime:t}=await e(async()=>{let{createInterceptingOAuthLauncherForCurrentRuntime:e}=await import(`./oauth-service-D_D4QXZX.js`);return{createInterceptingOAuthLauncherForCurrentRuntime:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8])),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-D_D4QXZX.js`);return{createOAuthLauncher:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8]));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 w(e,t,n){let{ps:r,log:i,setStatus:a,renderList:o}=n,s=y(`wcset__row`),c=y(`wcset__info`);if(c.append(y(`wcset__name`,t.name),y(`wcset__detail`,S(e))),s.append(c),t.isOAuth){let t=e.loggedOut===!0;s.append(b(`wcset__btn`,t?`Log in`:`Log out`,()=>{t?C(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(b(`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 T(e){let{ps:t,setStatus:n}=e,r=y(`wcset__add`);r.append(y(`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=y(`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(b(`wcset__btn wcset__btn--primary`,`Login with ${a.name}`,()=>{C(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(b(`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 E(){let e=y(`wcset__add`);e.append(y(`wcset__section-label`,`Chat`));let r=y(`wcset__toggle-row`),i=document.createElement(`label`);i.textContent=`Show timestamps`;let a=document.createElement(`input`);return a.type=`checkbox`,a.checked=n(),a.addEventListener(`change`,()=>t(a.checked)),r.append(i,a),e.append(r),e}function D(e){let t=y(`wcset__appearance`);t.append(y(`wcset__section-label`,`Appearance`));let n=i(),u=y(`wcset__preset-grid`),f=document.createElement(`div`);f.className=`wcset__preset-swatch${n?``:` wcset__preset-swatch--active`}`,f.innerHTML=[`#161618`,`#1f1f22`,`#f59e0b`].map(e=>`<div class="wcset__preset-swatch__stripe" style="background:${e}"></div>`).join(``)+`<div class="wcset__preset-name">Default</div>`,f.addEventListener(`click`,()=>{s(),m(),v()}),u.append(f);for(let e of l){let t=document.createElement(`div`);t.className=`wcset__preset-swatch${n===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`,()=>{o(e.id),m(),v()}),u.append(t)}t.append(u);let h=c().filter(e=>e.id!==`__preview`);if(h.length>0){let e=y(`wcset__custom-themes`);e.append(y(`wcset__section-label`,`My Themes`));for(let t of h){let i=y(`wcset__custom-row`),a=y(`wcset__custom-row__name`,t.name);n===t.id&&(a.style.fontWeight=`700`),i.append(a),i.append(b(`wcset__btn`,`Use`,()=>{o(t.id),m(),v()})),i.append(b(`wcset__btn`,`Edit`,()=>{x(t)})),i.append(b(`wcset__btn`,`Export`,()=>{let e=new Blob([d(t)],{type:`application/json`}),n=URL.createObjectURL(e),r=document.createElement(`a`);r.href=n,r.download=`${t.name.toLowerCase().replace(/\s+/g,`-`)}.slicc-theme.json`,r.click(),URL.revokeObjectURL(n)})),i.append(b(`wcset__btn wcset__btn--danger`,`×`,()=>{r(t.id),m(),v()})),e.append(i)}t.append(e)}let g=y(``);g.style.cssText=`display:flex;gap:8px;`,g.append(b(`wcset__btn wcset__btn--primary`,`+ Create Custom Theme`,()=>{x(null)})),g.append(b(`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=p(t);a(n),e.setStatus(`Imported "${n.name}".`),v()}catch(t){e.setStatus(`Import failed: ${t instanceof Error?t.message:String(t)}`,!0)}})}),t.click()})),t.append(g);let _=y(``);t.append(_);function v(){let n=t.parentElement;if(!n)return;let r=D(e);n.replaceChild(r,t)}function x(t){_.replaceChildren(P(t,e,v))}return t}function O(e,t,n,r){let i=[],a=u(e,t);for(let[e,t]of Object.entries(h)){i.push(y(`wcset__section-label`,e));let o=y(`wcset__advanced-grid`);for(let e of t){let t=y(`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 k(e,t,n,r,i){let a=[];for(let[r,o]of[[`background`,`Background`],[`text`,`Text`],[`accent`,`Links & buttons`]]){let s=y(`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(y(`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=y(`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 A(e,t){let n=y(`wcset__builder-row`),r=document.createElement(`label`);r.textContent=`Base`;let i=y(`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 j(e,t){let n=y(``);return n.style.cssText=`display:flex;gap:8px;margin-top:8px;`,n.append(b(`wcset__btn wcset__btn--primary`,`Save`,e)),n.append(b(`wcset__btn`,`Cancel`,t)),n}function M(e){return{userBubble:{background:e.bubbleBg,text:e.bubbleText},nav:{background:e.navBg},composer:{background:e.composerBg}}}function N(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 P(e,t,n){let i=y(`wcset__builder`),c=e?.base??`dark`,l=e?.disableShader??!1,d=!1,p={background:e?.tokens[`--s2-gray-25`]||(c===`dark`?`#1a1a1a`:`#ffffff`),surface:``,text:e?.tokens[`--s2-content-default`]||e?.tokens[`--s2-gray-900`]||(c===`dark`?`#e8e8e8`:`#131313`),accent:e?.tokens[`--s2-accent`]||`#3562ff`,border:``,success:`#2d9d78`,error:`#e34850`},h={background:1,text:1,accent:1},g=N(e,c),_={},v=document.createElement(`input`);v.className=`wcset__input`,v.placeholder=`Theme name`,v.value=e?.name??``;function b(){return v.value.toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-|-$/g,``)||`custom-${Date.now()}`}function x(){let e=c===`dark`;p.surface=f(p.background,e?.1:-.08),p.border=f(p.background,e?.15:-.12),p.success=`#2d9d78`,p.error=`#e34850`}function S(){x();let e={...u(p,c),..._};for(let[t,n]of Object.entries(h))if(n<1&&p[t]){let r=p[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}`)}a({id:`__preview`,name:`Preview`,base:c,tokens:e,disableShader:l,components:M(g)}),o(`__preview`),m()}function C(){i.replaceChildren();let f=y(`wcset__builder-row`),w=document.createElement(`label`);w.textContent=`Name`,f.append(w,v),i.append(f),i.append(A(c,e=>{c=e,C(),S()}));let T={disabled:l};for(let e of k(p,h,T,g,()=>{l=T.disabled,S()}))i.append(e);let E=document.createElement(`button`);if(E.className=`wcset__advanced-toggle`,E.textContent=d?`Hide advanced`:`Show advanced`,E.addEventListener(`click`,()=>{d=!d,C()}),i.append(E),d)for(let e of O(p,c,_,S))i.append(e);i.append(j(()=>{let i=v.value.trim();if(!i){t.setStatus(`Name is required.`,!0);return}x();let s={...u(p,c),..._},d=e?.id??b(),f={id:d,name:i,base:c,tokens:s,disableShader:l,components:M(g)};r(`__preview`),a(f),o(d),m(),t.setStatus(`Saved "${i}".`),n()},()=>{r(`__preview`),e?o(e.id):s(),m(),n()}))}return C(),S(),i}async function F(t){let n=await e(()=>import(`./main-BA9clMpx.js`).then(e=>e.t),__vite__mapDeps([9,3,10,1,11,12,13,14,15,16,17,4,2,5,6,18,19,20,21,22,7,23,24,25,26]));v(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=y(`wcset`),o=y(`wcset__list`),s=y(`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=y(``),f={ps:n,log:t,setStatus:c,renderList:()=>{u(),o.replaceChildren();let e=n.getAccounts();if(e.length===0)o.append(y(`wcset__empty`,`No accounts configured.`));else for(let t of e)o.append(w(t,n.getProviderConfig(t.providerId),f));d.replaceChildren(T(f))}};f.renderList(),a.append(o,d,s),i.append(a);let p=b(`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 I(e){return v(document),r(`__preview`),new Promise(t=>{let n=document.createElement(`slicc-dialog`);n.classList.add(`wcset-dialog`),n.setAttribute(`heading`,`Theme`);let a=y(`wcset`),c=y(`wcset__status`),l=D({ps:null,log:e,setStatus:(e,t=!1)=>{c.textContent=e,c.toggleAttribute(`data-error`,t)},renderList:()=>{}}),u=E();a.append(l,u,c),n.append(a);let d=b(`wcset__btn wcset__btn--primary`,`Done`,()=>{n.hide?.()});d.setAttribute(`slot`,`footer`),n.append(d);let f=i();n.addEventListener(`slicc-dialog-close`,()=>{i()===`__preview`&&(r(`__preview`),f&&f!==`__preview`?o(f):s(),m()),n.remove(),t()}),document.body.append(n),n.show?.()})}export{I as showThemeSettings,F as showWcSettings};
|
|
@@ -1,2 +0,0 @@
|
|
|
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-DWFJ4rHR.js","assets/preload-helper-CZgWQFsJ.js","assets/account-store-fUIbRrPn.js","assets/compat-FrhC6T45.js","assets/models-ByRUWfA-.js","assets/provider-env-D37PhSJu.js","assets/__vite-browser-external-SwrSgYTf.js","assets/context-compaction-LYFtS2_f.js","assets/logger-DDBAeTLF.js","assets/src-BvERX0WZ.js","assets/proxied-fetch-DYnrtCU7.js","assets/runtime-env-DH4NDw4t.js","assets/fetch-body-D2PwksUW.js","assets/secret-topology-jJDgwoYT.js","assets/secrets-bridge-client-t0NUGSqq.js","assets/port-bridge-client-Ca5V2n0P.js","assets/tool-ui-DfXu6quJ.js","assets/providers-DJQ__3fI.js","assets/bedrock-camp-CZFsedRI.js","assets/transform-messages-DwI5R8if.js","assets/main-BA9clMpx.js","assets/modulepreload-polyfill-Dezn_h7o.js","assets/messages-BD4p8GuF.js","assets/clipboard-DuHpK59o.js","assets/hid-device-registry-6w-g8ZpF.js","assets/serial-port-registry-DsPZvGpT.js","assets/usb-operations-D-YdmmuG.js","assets/usb-device-registry-k6vTKonT.js","assets/wc-permissions-registry-Blyunq37.js","assets/tray-leader-CeWWttmI.js","assets/remote-cdp-transport-DspFAFy_.js","assets/hosted-config-apply-uAym2aS5.js","assets/theme-engine-17gZ2QvH.js","assets/legacy-styles-CuB1P3LZ.js","assets/tray-leave-runtime-C9Ols8L5.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{t as e}from"./preload-helper-CZgWQFsJ.js";import{P as t,R as n,d as r}from"./account-store-fUIbRrPn.js";import{a as i}from"./context-compaction-LYFtS2_f.js";import{t as a}from"./logger-DDBAeTLF.js";import{n as o,p as s,r as c}from"./src-BvERX0WZ.js";import{a as l,t as u}from"./proxied-fetch-DYnrtCU7.js";import{r as d}from"./panel-rpc-DmJSNs0I.js";import{E as f,b as p,d as m,f as h,h as g,x as _,y as v}from"./main-BA9clMpx.js";import"./handoff-link-By6sYO7Q.js";import{i as y,o as b,r as x,s as ee,t as S}from"./remote-cdp-transport-DspFAFy_.js";import"./browser-2wdq8OwU.js";import{i as te,n as C,t as ne}from"./tray-leader-CeWWttmI.js";import{d as re}from"./wc-shell-BocKvSH4.js";import{t as ie}from"./synthetic-cdp-transport-DLIt5SkY.js";import{a as w,i as T,n as ae,o as oe,r as se,t as E}from"./page-follower-tray-B3Z88j65.js";a(`scoops.tray-leave`),a(`scoops.tray-join`);var D=null;function O(e){D=e}function k(){return D?.()??[]}var ce=`slicc.leaderTrayFollowers`;function A(e,t=globalThis.localStorage){try{t?.setItem(ce,JSON.stringify(e))}catch{}}function le(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 j(){try{let e=r().filter(e=>!e.loggedOut),t=[`adobe`,`github`].map(t=>e.find(e=>e.providerId===t)).find(Boolean)??e[0],n=t?le(t):null;if(!n)return`00000000`;let i=await crypto.subtle.digest(`SHA-256`,new TextEncoder().encode(n));return Array.from(new Uint8Array(i,0,4),e=>e.toString(16).padStart(2,`0`)).join(``)}catch{return`00000000`}}async function M(t){let{instanceId:n,browser:r,remoteCdpBridge:i,remoteCdpPushChannel:a,getLeader:o,performTrayLeaveLocally:s,window:c}=t,{installPanelRpcHandler:l,createPanelRpcEventEmitter:u}=await e(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 e(async()=>{let{createStandalonePanelRpcHandlers:e}=await import(`./panel-rpc-handlers-DWFJ4rHR.js`);return{createStandalonePanelRpcHandlers:e}},__vite__mapDeps([2,3,4,1,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,0,20,21,22,23,24,25,26,27,28,29])),{getLeaderPermissionsSurface:p}=await e(async()=>{let{getLeaderPermissionsSurface:e}=await import(`./wc-permissions-registry-Blyunq37.js`).then(e=>e.r);return{getLeaderPermissionsSurface:e}},__vite__mapDeps([30,1])),m=u({instanceId:n}),h=l({instanceId:n,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})=>(f(c.localStorage,e),c.dispatchEvent(new CustomEvent(`slicc:tray-join`,{detail:{joinUrl:e}})),{joinUrl:e}),emitEvent:(e,t)=>m.emit(e,t),emitCherrySliccEvent:(e,t,n)=>o()?.sync.emitCherrySliccEvent(e,t,n)??!1,mintPreview:async({entryPath:t,servedRoot:n,bridge:r,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 e(async()=>{let{getLeaderTrayRuntimeStatus:e}=await import(`./tray-leader-CeWWttmI.js`).then(e=>e.a);return{getLeaderTrayRuntimeStatus:e}},__vite__mapDeps([31,1,10,12,3,11,13,14,22,23,4,5,6,7,8,9,15,16,17,18,19,0,20,21,24,25])),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 e(async()=>{let{CHERRY_RUNTIME_TAG:e}=await import(`./remote-cdp-transport-DspFAFy_.js`).then(e=>e.c);return{CHERRY_RUNTIME_TAG:e}},__vite__mapDeps([32,1,10,11])),{mintPreviewViaWorker:m}=await e(async()=>{let{mintPreviewViaWorker:e}=await import(`./preview-mint-client-CNzSnbyh.js`);return{mintPreviewViaWorker:e}},[]),h=l.getConnectedFollowers().some(e=>e.runtime===p),g=!i&&(r||h),_=!i&&r,v=await j(),{url:y,previewToken:b}=await m({workerBaseUrl:d.workerBaseUrl,trayId:d.trayId,controllerToken:f,servedRoot:n,entryPath:t,allowLive:g,bridge:_,maxTabs:a,webhookId:c,userHash:v}),x=t?t.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:t})=>{let n=o()?.currentLeaderSync;if(!n)throw Error(`serve --stop: no active leader tray; cannot revoke preview`);let{getLeaderTrayRuntimeStatus:r}=await e(async()=>{let{getLeaderTrayRuntimeStatus:e}=await import(`./tray-leader-CeWWttmI.js`).then(e=>e.a);return{getLeaderTrayRuntimeStatus:e}},__vite__mapDeps([31,1,10,12,3,11,13,14,22,23,4,5,6,7,8,9,15,16,17,18,19,0,20,21,24,25])),i=r().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 e(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:t});return n.dropMintedPreview(t),c},listPreviews:async()=>{let{getLeaderTrayRuntimeStatus:t}=await e(async()=>{let{getLeaderTrayRuntimeStatus:e}=await import(`./tray-leader-CeWWttmI.js`).then(e=>e.a);return{getLeaderTrayRuntimeStatus:e}},__vite__mapDeps([31,1,10,12,3,11,13,14,22,23,4,5,6,7,8,9,15,16,17,18,19,0,20,21,24,25])),n=t().session;if(!n)throw Error(`serve: leader tray has no active session`);let r=new URL(n.controllerUrl).pathname.split(`/`).pop()??``,{listPreviewsViaWorker:i}=await e(async()=>{let{listPreviewsViaWorker:e}=await import(`./preview-mint-client-CNzSnbyh.js`);return{listPreviewsViaWorker:e}},[]);return await i({workerBaseUrl:n.workerBaseUrl,trayId:n.trayId,controllerToken:r})},listRemoteTargets:()=>r.listAllTargets(),remoteCdp:i,getPermissionsSurface:()=>p()})});c.addEventListener(`beforeunload`,()=>{h(),m.dispose(),i.disposeAll(),a?.close()},{once:!0})}async function N(r){let{log:i}=r;await new Promise(e=>setTimeout(e,5e3));try{let r=await fetch(l(`/api/hosted-bootstrap`),{signal:AbortSignal.timeout(1e4),headers:u()});if(!r.ok)return;let a=await r.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},d]=await Promise.all([e(()=>import(`./hosted-config-apply-uAym2aS5.js`),__vite__mapDeps([33,10])),e(()=>import(`./main-BA9clMpx.js`).then(e=>e.t),__vite__mapDeps([22,1,23,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,0,20,21,24,25]))]);await c(o,{getRefreshModels:e=>d.getProviderConfig(e).refreshModels});let f=JSON.parse(localStorage.getItem(`slicc_cloud_managed`)??`[]`);await s(o,{saveOAuthAccount:n,addAccount:d.addAccount,removeAccount:t,currentProviderIds:()=>d.getAccounts().map(e=>e.providerId),previouslyManaged:()=>f}),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)})}}function P(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?!0:e.startsWith(n+`/`)}var F=64*1024;async function I(e,t,n){let{reqId:r,servedRoot:i,asText:a}=e,o=e.vfsPath;if(!P(o,i)){t.send({type:`preview.response`,reqId:r,ok:!1,status:403});return}try{if((await n.stat(o)).type===`directory`&&(o=o.replace(/\/?$/,`/`)+`index.html`,!P(o,i))){t.send({type:`preview.response`,reqId:r,ok:!1,status:403});return}}catch{}let c,l;try{a?(c=await n.readFile(o,{encoding:`utf-8`}),l=`utf-8`):(c=s(await n.readFile(o,{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=R(o),d=L(c,F);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 L(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 R(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 z=3e4,B={target:`preview-target`,session:`preview-session`,frame:`preview-frame`,loader:`preview-loader`},V=class extends ie{connId;sendToWorker;nextId=1;pending=new Map;constructor(e){super({targetUrl:e.targetUrl,targetOrigin:e.targetOrigin,title:e.title,ids:e.ids??B}),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=z){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??{}))}};a(`lick-manager`);var H=new Set([`navigate`]),U=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()]}},W=a(`tray-leader-sync`);function ue(e){return e?e.includes(`ios`)?`ios`:e.includes(`standalone`)?`standalone`:e.includes(`extension`)?`extension`:e.includes(`electron`)?`electron`:`unknown`:`unknown`}function G(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`}}function K(e){return e.kind===`cherry`}function de(e,t){return e.filter(e=>e.kind===`preview`?!1:K(e)&&t.requireNetwork?e.capabilities?.network===!0:!0)}var fe=class e{options;followers=new Map;registry=new U;runtimeToBootstrap=new Map;pendingCDPRoutes=new Map;cdpChunkBuffers=new Map;remoteTransports=new Map;pendingTabOpenRoutes=new Map;tabOpenResolvers=new Map;pendingFsRoutes=new Map;fsResolvers=new Map;mintMap=new Map;bridgeConns=new Map;previewLickLastEmitAt=new Map;static PREVIEW_LICK_THROTTLE_MS=2e3;constructor(e){this.options=e}addFollower(e,t,n){this.removeFollower(e);let r=x(t),i=r.onMessage(t=>{this.handleFollowerMessage(e,t)}),a=new w({sendPing:()=>r.send({type:`ping`}),onDead:()=>{W.warn(`Follower keepalive dead, removing follower`,{bootstrapId:e}),this.removeFollower(e),this.options.onFollowerDead?.(e)}});a.start(),this.followers.set(e,{bootstrapId:e,sync:r,unsubscribe:i,keepalive:a,runtime:n?.runtime,connectedAt:n?.connectedAt,lastActivity:Date.now(),floatType:ue(n?.runtime)}),W.info(`Follower added to sync`,{bootstrapId:e,followerCount:this.followers.size}),this.options.onFollowerCountChanged?.(this.followers.size),r.send({type:`hello`,protocolVersion:1}),this.sendSnapshotToFollower(e),this.sendScoopsListToFollower(e),this.sendSprinklesListToFollower(e);let o=this.getFollowerBroadcastEntries();o.length>0&&r.send({type:`targets.registry`,targets:o})}removeFollower(e){let t=this.followers.get(e);if(t){t.keepalive.stop(),t.unsubscribe(),t.sync.close(),this.followers.delete(e),this.followerBroadcastErrorLogAt.delete(e);for(let[t,n]of this.runtimeToBootstrap)if(n===e){this.cleanupRemoteTransports(t),this.registry.removeRuntime(t),this.runtimeToBootstrap.delete(t);break}this.registry.hasChanged()&&this.broadcastTargetRegistry(),W.info(`Follower removed from sync`,{bootstrapId:e,followerCount:this.followers.size}),this.options.onFollowerCountChanged?.(this.followers.size)}}followerBroadcastErrorLogAt=new Map;static BROADCAST_ERROR_THROTTLE_MS=6e4;broadcastToAllFollowers(t){let n=performance.now();for(let[r,i]of this.followers)try{i.sync.send(t),this.followerBroadcastErrorLogAt.delete(r)}catch(i){n-(this.followerBroadcastErrorLogAt.get(r)??-1/0)>e.BROADCAST_ERROR_THROTTLE_MS&&(this.followerBroadcastErrorLogAt.set(r,n),W.error(`Broadcast send to follower failed (channel may be stuck)`,{bootstrapId:r,messageType:t.type,error:i instanceof Error?i.message:String(i)}))}}broadcastEvent(e){if(this.followers.size===0)return;let t={type:`agent_event`,event:e,scoopJid:this.options.getScoopJid()};this.broadcastToAllFollowers(t)}broadcastUserMessage(e,t,n){if(this.followers.size===0)return;let r={type:`user_message_echo`,text:e,messageId:t,scoopJid:this.options.getScoopJid(),attachments:n?.length?i(n):n};this.broadcastToAllFollowers(r)}broadcastStatus(e){if(this.followers.size===0)return;let t={type:`status`,scoopStatus:e};this.broadcastToAllFollowers(t)}async sendSnapshotToFollower(e,t){let n=this.followers.get(e);if(!n)return;let r=t??n.selectedScoopJid??this.options.getScoopJid(),i;if(this.options.getMessagesForScoop&&r!==this.options.getScoopJid())try{i=await Promise.resolve(this.options.getMessagesForScoop(r))}catch(e){W.warn(`getMessagesForScoop failed, falling back to active scoop`,{targetJid:r,error:e instanceof Error?e.message:String(e)}),i=this.options.getMessages()}else i=this.options.getMessages();n.selectedScoopJid=r,ee(n.sync,i,r),W.debug(`Snapshot sent to follower`,{bootstrapId:e,messageCount:i.length,scoopJid:r})}sendScoopsListToFollower(e){let t=this.followers.get(e);if(!t)return;let n=this.options.getScoops;if(n)try{let e=n(),r=this.options.getScoopJid();t.sync.send({type:`scoops.list`,scoops:e,activeScoopJid:r})}catch(t){W.warn(`Failed to send scoops.list`,{bootstrapId:e,error:t instanceof Error?t.message:String(t)})}}sendSprinklesListToFollower(e){let t=this.followers.get(e);if(!t)return;let n=this.options.getSprinkles;if(n)try{let e=n();t.sync.send({type:`sprinkles.list`,sprinkles:e})}catch(t){W.warn(`Failed to send sprinkles.list`,{bootstrapId:e,error:t instanceof Error?t.message:String(t)})}}broadcastScoopsList(){if(this.followers.size===0)return;let e=this.options.getScoops;if(!e)return;let t;try{t=e()}catch(e){W.warn(`Failed to compute scoops list`,{error:e instanceof Error?e.message:String(e)});return}let n=this.options.getScoopJid(),r={type:`scoops.list`,scoops:t,activeScoopJid:n};this.broadcastToAllFollowers(r)}broadcastSprinklesList(){if(this.followers.size===0)return;let e=this.options.getSprinkles;if(!e)return;let t;try{t=e()}catch(e){W.warn(`Failed to compute sprinkles list`,{error:e instanceof Error?e.message:String(e)});return}let n={type:`sprinkles.list`,sprinkles:t};this.broadcastToAllFollowers(n)}broadcastSprinkleUpdate(e,t){if(this.followers.size===0)return;let n={type:`sprinkle.update`,sprinkleName:e,data:t};this.broadcastToAllFollowers(n)}broadcastTheme(e){this.followers.size!==0&&this.broadcastToAllFollowers({type:`theme.apply`,themeJson:e})}broadcastSprinkleReloaded(e){this.followers.size!==0&&this.broadcastToAllFollowers({type:`sprinkle.reloaded`,sprinkleName:e})}broadcastPreviewOpen(e){if(this.followers.size===0)return;let t=`prv-${crypto.randomUUID()}`;this.broadcastToAllFollowers({type:`preview.open`,requestId:t,url:e})}static SPRINKLE_CHUNK_SIZE=32*1024;static SPRINKLE_CHUNK_THRESHOLD=64*1024;async handleSprinkleFetch(t,n,r){let i=this.followers.get(t);if(!i)return;let a=this.options.readSprinkleContent;if(!a){i.sync.send({type:`sprinkle.content`,requestId:n,sprinkleName:r,content:``,error:`Leader has no sprinkle content reader`});return}let o=null;try{o=await Promise.resolve(a(r))}catch(e){i.sync.send({type:`sprinkle.content`,requestId:n,sprinkleName:r,content:``,error:e instanceof Error?e.message:String(e)});return}if(o==null){i.sync.send({type:`sprinkle.content`,requestId:n,sprinkleName:r,content:``,error:`Sprinkle not found: ${r}`});return}if(o.length<=e.SPRINKLE_CHUNK_THRESHOLD){i.sync.send({type:`sprinkle.content`,requestId:n,sprinkleName:r,content:o});return}let s=e.SPRINKLE_CHUNK_SIZE,c=Math.ceil(o.length/s);for(let e=0;e<c;e++){let t=o.slice(e*s,(e+1)*s);i.sync.send({type:`sprinkle.content`,requestId:n,sprinkleName:r,content:t,chunkIndex:e,totalChunks:c})}}handleFollowerUserMessage(e,t){W.info(`Follower user message received`,{bootstrapId:e,messageId:t.messageId});let n=t.attachments?.length?i(t.attachments):t.attachments;this.options.onFollowerMessage(t.text,t.messageId,n)}handleFollowerSprinkleLick(e,t){W.info(`Follower sprinkle lick received`,{bootstrapId:e,sprinkleName:t.sprinkleName});let n=this.followers.get(e),r=G(n?.floatType??`unknown`,n?.runtime);try{this.options.onSprinkleLick?.(t.sprinkleName,t.body,t.targetScoop,r)}catch(e){W.warn(`onSprinkleLick handler threw`,{error:e instanceof Error?e.message:String(e)})}}handleFollowerLick(e,t){let n=t.event;if(!n||!H.has(n.type)){W.warn(`Rejecting malformed or non-forwardable lick from follower`,{bootstrapId:e,type:n?.type});return}let r=this.followers.get(e),{targetScoop:i,...a}=n,o={...a,originFollowerId:e,originLabel:G(r?.floatType??`unknown`,r?.runtime)};try{this.options.onForwardedLick?.(o,e)}catch(e){W.warn(`onForwardedLick handler threw`,{error:e instanceof Error?e.message:String(e)})}}handleFollowerTargetsAdvertise(e,t){W.info(`Follower targets advertised`,{bootstrapId:e,runtimeId:t.runtimeId,targetCount:t.targets.length});for(let e of[...this.remoteTransports.keys()]){let n=e.substring(0,e.indexOf(`:`));n!==`leader`&&!this.runtimeToBootstrap.has(n)&&n!==t.runtimeId&&(this.remoteTransports.get(e)?.disconnect(),this.remoteTransports.delete(e),W.debug(`Cleaned up orphaned remote transport on advertise`,{key:e}))}this.runtimeToBootstrap.set(t.runtimeId,e),this.registry.setTargets(t.runtimeId,t.targets),this.broadcastTargetRegistry()}handleFollowerMessage(e,t){if(t.type!==`hello`){let t=this.followers.get(e);t&&t.peerProtocolVersion===void 0&&!t.legacyPeerLogged&&(t.legacyPeerLogged=!0,W.info(`Follower sent no hello — legacy peer (pre-versioning build)`,{bootstrapId:e}))}switch(t.type){case`user_message`:this.handleFollowerUserMessage(e,t);break;case`abort`:W.info(`Follower abort received`,{bootstrapId:e}),this.options.onFollowerAbort();break;case`request_snapshot`:W.info(`Follower snapshot request received`,{bootstrapId:e,scoopJid:t.scoopJid}),this.sendSnapshotToFollower(e,t.scoopJid);break;case`scoops.select`:{W.info(`Follower selected scoop`,{bootstrapId:e,scoopJid:t.scoopJid});let n=this.followers.get(e);n&&(n.selectedScoopJid=t.scoopJid,this.sendSnapshotToFollower(e,t.scoopJid));break}case`sprinkles.refresh`:W.info(`Follower requested sprinkles refresh`,{bootstrapId:e}),this.sendSprinklesListToFollower(e);break;case`sprinkle.fetch`:this.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`:this.handleFollowerTargetsAdvertise(e,t);break;case`cdp.request`:{let{requestId:n,targetRuntimeId:r,localTargetId:i,method:a,params:o,sessionId:s}=t;r===`leader`?this.executeLocalCDP(n,i,a,o,s,e):this.forwardCDPRequest(n,r,i,a,o,s,e);break}case`cdp.response`:this.handleCDPResponse(t);break;case`cdp.event`:this.handleCDPEvent(e,t.method,t.params,t.sessionId);break;case`tab.open`:{let{requestId:n,targetRuntimeId:r,url:i}=t;r===`leader`?this.executeLocalTabOpen(n,i,e):this.forwardTabOpen(n,r,i,e);break}case`tab.opened`:this.handleTabOpenResponse(t.requestId,t.targetId);break;case`tab.open.error`:this.handleTabOpenError(t.requestId,t.error);break;case`fs.request`:{let{requestId:n,targetRuntimeId:r,request:i}=t;r===`leader`?this.executeLocalFs(n,i,e):this.forwardFsRequest(n,r,i,e);break}case`fs.response`:this.handleFsResponse(t.requestId,t.response);break;case`cherry.host_event`:this.routeCherryHostEvent(e,t);break;case`ping`:{let t=this.followers.get(e);t&&(t.keepalive.receivePing(),t.lastActivity=Date.now(),t.sync.send({type:`pong`}));break}case`pong`:{let t=this.followers.get(e);t&&(t.keepalive.receivePong(),t.lastActivity=Date.now());break}case`hello`:{let n=this.followers.get(e);n&&(n.peerProtocolVersion=t.protocolVersion),t.protocolVersion>1?W.warn(`Follower speaks a newer tray sync protocol — update this build`,{bootstrapId:e,followerVersion:t.protocolVersion,ourVersion:1}):W.info(`Follower hello`,{bootstrapId:e,protocolVersion:t.protocolVersion});break}default:{let n=c(t);W.warn(`Unknown follower message type — skewed follower?`,{bootstrapId:e,type:n.type});break}}}setLocalTargets(e){this.registry.setTargets(`leader`,e),this.registry.hasChanged()&&this.broadcastTargetRegistry()}broadcastTargetRegistry(){if(this.followers.size===0)return;let e={type:`targets.registry`,targets:this.getFollowerBroadcastEntries()};this.broadcastToAllFollowers(e)}getTargets(){return this.getConnectedEntries()}getFollowerBroadcastEntries(){return this.getConnectedEntries().filter(e=>e.kind!==`preview`)}getConnectedEntries(){let e=this.registry.getEntries().filter(e=>{if(e.runtimeId===`leader`)return!0;let t=this.runtimeToBootstrap.get(e.runtimeId);return t?this.followers.has(t):!1}),t=[];for(let[e,n]of this.bridgeConns)t.push({targetId:`preview:${n.previewToken}:${e}`,localTargetId:e,runtimeId:`preview`,title:n.title,url:n.url,isLocal:!1,kind:`preview`});return[...e,...t]}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.getBridgeTransport(n);if(!r)throw Error(`Preview bridge connection "${n}" not found`);return r}let n=new S({sendCDPRequest:(n,r,i,a)=>{let o=this.runtimeToBootstrap.get(e),s=o?this.followers.get(o):void 0;if(!s){this.remoteTransports.get(`${e}:${t}`)?.handleResponse(n,void 0,`Target runtime "${e}" not connected`);return}this.pendingCDPRoutes.set(n,{requesterBootstrapId:`__leader__`,requestId:n}),s.sync.send({type:`cdp.request`,requestId:n,localTargetId:t,method:r,params:i,sessionId:a})}});return this.remoteTransports.set(`${e}:${t}`,n),n}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),W.debug(`Cleaned up stale remote transport`,{key:e}));try{this.options.onRemoteTransportsCleaned?.(e)}catch(t){W.warn(`onRemoteTransportsCleaned handler threw`,{runtimeId:e,error:t instanceof Error?t.message:String(t)})}}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}})}canRuntimeServeTeleport(e,t){if(t.runtime===`slicc-cherry`)return!1;let n=this.registry.getEntries().filter(t=>t.runtimeId===e);return n.length===0?!0:de(n,{requireNetwork:!0}).length>0}getBestFollowerForTeleport(){let e=[];for(let[t,n]of this.runtimeToBootstrap){let r=this.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]}get hasFollowers(){return this.followers.size>0}stop(){for(let e of[...this.followers.keys()])this.removeFollower(e);for(let e of this.bridgeConns.values())e.transport.disconnect();this.bridgeConns.clear(),this.mintMap.clear(),this.previewLickLastEmitAt.clear()}async executeLocalCDP(e,t,n,r,i,a){let o=this.followers.get(a);if(!o)return;let s=this.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);b(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.runtimeToBootstrap.get(t),c=s?this.followers.get(s):void 0,l=this.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=y(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.followers.get(n.requesterBootstrapId);i&&b(i.sync,t,r.result,r.error)}handleCDPEvent(e,t,n,r){let i;for(let[t,n]of this.runtimeToBootstrap)if(n===e){i=t;break}if(!i)return;let a=`${i}:`;for(let[e,r]of this.remoteTransports)e.startsWith(a)&&r.handleEvent(t,n)}runtimeIdForBootstrap(e){for(let[t,n]of this.runtimeToBootstrap)if(n===e)return t}routeCherryHostEvent(e,t){if(!o(t))return;let n=this.options.onCherryHostEvent;if(!n){W.debug(`cherry.host_event received but no onCherryHostEvent wired`,{bootstrapId:e,name:t.name});return}let r=this.runtimeIdForBootstrap(e);try{n(r,t.name,t.detail)}catch(n){W.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.runtimeToBootstrap.get(i),o=a?this.followers.get(a):void 0;return o?o.sync.send({type:`cherry.slicc_event`,targetId:e,name:t,detail:n}):(W.warn(`emitCherrySliccEvent: owning follower not connected`,{targetId:e,name:t}),!1)}canRuntimeOpenTab(e){let t=this.registry.getEntries().filter(t=>t.runtimeId===e);return t.length===0?!0:t.some(e=>!K(e))}openRemoteTab(e,t){let n=this.runtimeToBootstrap.get(e),r=n?this.followers.get(n):void 0;if(!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,n)=>{this.tabOpenResolvers.set(i,{resolve:e,reject:n}),this.pendingTabOpenRoutes.set(i,{requesterBootstrapId:`__leader__`,requestId:i}),r.sync.send({type:`tab.open`,requestId:i,url:t})})}async executeLocalTabOpen(e,t,n){let r=this.followers.get(n);if(!r)return;let i=this.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.runtimeToBootstrap.get(t),a=i?this.followers.get(i):void 0,o=this.followers.get(r);if(!a){o&&o.sync.send({type:`tab.open.error`,requestId:e,error:`Target runtime "${t}" not connected`});return}if(!this.canRuntimeOpenTab(t)){o&&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,requestId:e}),a.sync.send({type:`tab.open`,requestId:e,url:n})}handleTabOpenResponse(e,t){let n=this.pendingTabOpenRoutes.get(e);if(!n)return;if(this.pendingTabOpenRoutes.delete(e),n.requesterBootstrapId===`__leader__`){let n=this.tabOpenResolvers.get(e);n&&(this.tabOpenResolvers.delete(e),n.resolve(t));return}let r=this.followers.get(n.requesterBootstrapId);r&&r.sync.send({type:`tab.opened`,requestId:e,targetId:t})}handleTabOpenError(e,t){let n=this.pendingTabOpenRoutes.get(e);if(!n)return;if(this.pendingTabOpenRoutes.delete(e),n.requesterBootstrapId===`__leader__`){let n=this.tabOpenResolvers.get(e);n&&(this.tabOpenResolvers.delete(e),n.reject(Error(t)));return}let r=this.followers.get(n.requesterBootstrapId);r&&r.sync.send({type:`tab.open.error`,requestId:e,error:t})}async executeLocalFs(e,t,n){let r=this.followers.get(n);if(!r)return;let i=this.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.runtimeToBootstrap.get(t),a=i?this.followers.get(i):void 0,o=this.followers.get(r);if(!a){o&&o.sync.send({type:`fs.response`,requestId:e,response:{ok:!1,error:`Target runtime "${t}" not connected`}});return}this.pendingFsRoutes.set(e,{requesterBootstrapId:r,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){let n=this.fsResolvers.get(e);if(n){n.responses.push(t);let r=t.ok&&t.totalChunks||1;n.responses.length>=r&&(this.fsResolvers.delete(e),n.resolve(n.responses))}return}if(n.requesterBootstrapId===`__leader__`){let n=this.fsResolvers.get(e);if(n){n.responses.push(t);let r=t.ok&&t.totalChunks||1;n.responses.length>=r&&(this.fsResolvers.delete(e),this.pendingFsRoutes.delete(e),n.resolve(n.responses))}return}let r=this.followers.get(n.requesterBootstrapId);r&&r.sync.send({type:`fs.response`,requestId:e,response:t}),n.chunks.push(t),n.totalChunks=t.ok&&t.totalChunks||1,n.chunks.length>=n.totalChunks&&this.pendingFsRoutes.delete(e)}sendFsRequest(e,t){if(e===`leader`){let e=this.options.vfs;return e?T(e,t):Promise.resolve([{ok:!1,error:`Leader has no VFS`}])}let n=this.runtimeToBootstrap.get(e),r=n?this.followers.get(n):void 0;if(!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,n)=>{this.fsResolvers.set(i,{resolve:e,reject:n,responses:[]}),this.pendingFsRoutes.set(i,{requesterBootstrapId:`__leader__`,requestId:i,chunks:[],totalChunks:1}),r.sync.send({type:`fs.request`,requestId:i,request:t})})}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 V({connId:t,targetUrl:s,targetOrigin:r,title:c,send:e=>this.options.sendControl(e)});u.connect(),this.bridgeConns.set(t,{previewToken:n,origin:r,userAgent:i,connectedAt:a,url:s,title:c,quiet:l,transport:u}),W.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),W.info(`Preview bridge disconnected`,{connId:t,reason:n}),this.emitPreviewLifecycleLick(`disconnected`,{connId:t,previewToken:i,origin:a,userAgent:o,connectedAt:s,quiet:c})}emitPreviewLifecycleLick(t,n){if(n.quiet||!this.options.onPreviewLick)return;let r=`${n.previewToken}:${t}`,i=Date.now();if(i-(this.previewLickLastEmitAt.get(r)??0)<e.PREVIEW_LICK_THROTTLE_MS)return;this.previewLickLastEmitAt.set(r,i);let a={type:`preview`,previewLifecycle:t,previewConnId:n.connId,previewToken:n.previewToken,previewOrigin:n.origin,previewUserAgent:n.userAgent,previewConnectedAt:n.connectedAt,timestamp:new Date().toISOString(),body:{}};try{this.options.onPreviewLick(a)}catch(e){W.warn(`onPreviewLick handler threw`,{error:e instanceof Error?e.message:String(e)})}}onBridgeCdpResponse(e){let{connId:t,id:n,result:r,error:i}=e,a=this.bridgeConns.get(t);if(!a){W.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}},q=a(`page-leader-tray`);function pe(e,t){return new fe({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,onFollowerCountChanged:e.onFollowerCountChanged,onRemoteTransportsCleaned:e.onRemoteTransportsCleaned,onCherryHostEvent:e.onCherryHostEvent,onPreviewLick:e.onPreviewLick,browserAPI:e.browserAPI,browserTransport:e.browserTransport,vfs:e.vfs})}function me(e,t){return new se({sendControlMessage:t=>e().sendControlMessage(t),onPeerConnected:(e,n)=>{q.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)=>{q.info(`Tray follower disconnected`,{bootstrapId:e,reason:t})}})}function he(e,t,n,r,i,a){let o=t=>{e.browserTransport?.sendLeaderJoinUrl?.(t)};return new ne({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}I(r,{send:e=>a().sendControlMessage(e)},t).catch(e=>{q.error(`preview.request handling failed`,{error:e instanceof Error?e.message:String(e)})});return}if(r.type===`preview.revoked`){q.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=>{q.error(`Tray leader bootstrap handling failed`,{error:e instanceof Error?e.message:String(e)})})},onReconnecting:(e,t)=>{q.info(`Leader tray reconnecting`,{attempt:e,lastError:t})},onReconnected:e=>{q.info(`Leader tray reconnected`,{trayId:e.trayId}),i(e),o(e.joinUrl)},onReconnectGaveUp:(e,t)=>{q.error(`Leader tray reconnect gave up`,{lastError:e,attempts:t}),o(null)}})}function ge(e,t){let n=new oe(q,{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){q.error(`Leader target broadcast failed (sync.setLocalTargets threw)`,{error:e instanceof Error?e.message:String(e)})}}}function _e(e,t){return setInterval(()=>{try{e.broadcastScoopsList(),e.broadcastSprinklesList()}catch(e){q.error(`Failed to broadcast follower lists`,{error:e instanceof Error?e.message:String(e)})}},t)}function ve(e){return t=>{let n=e._historyOverride??ye();if(n)try{let e=_(n.href,t.workerBaseUrl,t.trayId);e!==n.href&&n.replaceState(null,``,e)}catch(e){q.debug(`URL bar update skipped`,{error:e instanceof Error?e.message:String(e)})}}}function J(e){let t=e._refreshIntervalMs??5e3,n=e._fetchImpl??((e,t)=>fetch(e,t)),r,i=ve(e),a=pe(e,()=>r);e.browserAPI.setTrayTargetProvider(a);let o=me(()=>r,a);r=he(e,o,a,n,i,()=>r);let s=e.onAgentEvent(e=>a.broadcastEvent(e)),c=[],l=ge(e,a);c.push(setInterval(l,t)),l(),c.push(_e(a,t));let u=r.start();u.then(i).catch(e=>{q.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(){return a.stop(),o.stop(),r.stop(),await r.clearSession(),i(await r.start()),C()},leader:r,peers:o,sync:a,get currentLeaderSync(){return d?null:a}}}function ye(){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 be(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 Y=a(`tray-leader-lock`);function xe(e){return`slicc-tray-leader:${e}`}function X(){let e=!1,t=null;return{release:()=>{e||(e=!0,t?.())},heldPromise:new Promise(e=>{t=e})}}async function Z(e,t){if(!t)return{status:`granted`,release:()=>{}};let n=xe(e),r,i=new Promise(e=>{r=e}),a=X();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=X();t.request(n,{mode:`exclusive`},()=>(e({release:r.release}),r.heldPromise))})}}async function Se(e){let t=await Z(e.workerBaseUrl,e.lockManager);if(t.status===`granted`){if(!e.shouldLead()){t.release();return}e.onGranted(t.release);return}Y.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}Y.error(`Late promotion: this tab is now the tray leader.`),e.onGranted(n)}function Ce(){return typeof navigator<`u`&&navigator.locks&&typeof navigator.locks.request==`function`?navigator.locks:null}function Q(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:re(e),label:e.isCone?`sliccy`:e.name,eyes:`open`})),e.refs.switcher.setAttribute(`active`,n)}}}function $(e,t,n){let{client:r,refs:i}=e;return a=>({workerBaseUrl:a,getMessages:()=>e.getController()?.getMessages()??[],getMessagesForScoop:e=>r.getMessagesForScoop(e),getScoopJid:()=>e.getSelectedJid(),getScoops:()=>r.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}))},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,i)=>r.sendSprinkleLick(e,t,n,i),onFollowerMessage:(n,r,i)=>{e.getController()?.addUserMessage(n,i),e.agentHandle.sendMessage(n,r,i),t.leader?.sync.broadcastUserMessage(n,r,i)},onFollowerAbort:()=>e.agentHandle.stop(),onFollowerCountChanged:t=>{i.floatbar.setAttribute(`label`,t>0?`tray · ${t} follower${t===1?``:`s`}`:e.baseFloatLabel??`standalone · live`),A(k())},onRemoteTransportsCleaned:e=>n.cleanupRuntime(e),onForwardedLick:e=>r.sendForwardedLick(e),onCherryHostEvent:(e,t,n)=>r.sendCherryHostEvent(e,t,n),onPreviewLick:e=>r.sendPreviewLick(e),sendWebhookEvent:(e,t,n)=>r.sendWebhookEvent(e,t,n),onAgentEvent:t=>e.agentHandle.onEvent(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 we(t,n){return{wireLeaderHooks:n=>{O(()=>n.peers.getPeers().map(e=>({runtimeId:ae(e.bootstrapId),runtime:e.runtime,connectedAt:e.connectedAt??void 0}))),t.sprinkleManager.setSendToSprinkleHook((e,t)=>n.sync.broadcastSprinkleUpdate(e,t)),t.sprinkleManager.setReloadHook(e=>n.sync.broadcastSprinkleReloaded(e)),t.getController()?.setOnLocalUserMessage((e,t,r)=>n.sync.broadcastUserMessage(e,t,r)),t.getController()?.setOnLocalProcessingChange(e=>n.sync.broadcastStatus(e?`processing`:`ready`)),e(async()=>{let{setThemeChangeListener:e,getActiveThemeId:t}=await import(`./theme-engine-17gZ2QvH.js`).then(e=>e.p);return{setThemeChangeListener:e,getActiveThemeId:t}},__vite__mapDeps([34,1,10])).then(({setThemeChangeListener:e,getActiveThemeId:t})=>{let r;e(e=>{t()!==`__preview`&&(clearTimeout(r),r=setTimeout(()=>n.sync.broadcastTheme(e),150))})})},clearLeaderHooks:()=>{O(null),A([]),t.getController()?.setOnLocalUserMessage(void 0),t.getController()?.setOnLocalProcessingChange(void 0),t.sprinkleManager.setSendToSprinkleHook(void 0),t.sprinkleManager.setReloadHook(void 0),n.disposeAll(),e(async()=>{let{setThemeChangeListener:e}=await import(`./theme-engine-17gZ2QvH.js`).then(e=>e.p);return{setThemeChangeListener:e}},__vite__mapDeps([34,1,10])).then(({setThemeChangeListener:e})=>{e(null)})}}}function Te(e){return{runtime:`slicc-hosted-leader`,kind:`hosted`,onLeaderReady:t=>{fetch(l(`/api/cloud-status`),{method:`POST`,headers:u({"content-type":`application/json`}),body:JSON.stringify({joinUrl:t.joinUrl,trayId:t.trayId,controllerUrl:t.controllerUrl,webhookUrl:t.webhookUrl,runtime:t.runtime,sliccVersion:`5.52.0`}),signal:AbortSignal.timeout(1e4)}).catch(t=>{e.log.error(`failed to POST /api/cloud-status`,{error:String(t)})})}}}function Ee(e,t,n,r,i){let{window:a,log:o}=e;if(e.runtimeMode===`hosted-leader`){a.localStorage.removeItem(v);let i=a.localStorage.getItem(p);if(!i){o.error(`hosted-leader: tray worker base URL not seeded`);return}t.leader=J({...n(i),...Te(e)}),r(t.leader),N({log:o});return}let s=a.localStorage.getItem(v),c=a.localStorage.getItem(p);s?t.follower=E(Q(e,s)):c&&De(c,e,t,n,r,i)}function De(e,t,n,r,i,a){Se({workerBaseUrl:e,lockManager:a,shouldLead:()=>!n.leader&&!n.follower&&t.window.localStorage.getItem(`slicc.trayWorkerBaseUrl`)===e,onGranted:t=>{n.lockRelease=t,n.leader=J(r(e)),i(n.leader)}})}function Oe(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=E(Q(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 ke(t){let{loadSprinkleStyles:n}=await e(async()=>{let{loadSprinkleStyles:e}=await import(`./legacy-styles-CuB1P3LZ.js`);return{loadSprinkleStyles:e}},__vite__mapDeps([35,3]));await n();let{client:r,instanceId:i,window:a,log:o}=t,s={leader:null,follower:null,lockRelease:null},c=Ce(),l=typeof BroadcastChannel==`function`?new BroadcastChannel(d(i)):null,u=be({getSync:()=>s.leader?.sync??null,postEvent:e=>{let t={type:`panel-rpc-push`,op:`remote-cdp-event`,payload:e};l?.postMessage(t)}});r.setForwardLickHandler(e=>{let t=s.follower?.currentSync;t?t.forwardLick(e):o.warn(`forward-lick dropped: no active follower sync`)});let f=$(t,s,u),{wireLeaderHooks:p,clearLeaderHooks:_}=we(t,u),v=async t=>{let{performTrayLeave:n}=await e(async()=>{let{performTrayLeave:e}=await import(`./tray-leave-runtime-C9Ols8L5.js`);return{performTrayLeave:e}},__vite__mapDeps([36,22,1,23,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,0,20,21,24,25])),r=()=>{s.leader||(s.lockRelease?.(),s.lockRelease=null)},i=n({workerBaseUrl:t.workerBaseUrl,requestId:t.requestId},{getLeader:()=>s.leader,setLeader:e=>{s.leader=e},getFollower:()=>s.follower,setFollower:e=>{s.follower=e},startLeader:e=>(s.lockRelease?.(),s.lockRelease=null,Z(e,c).then(e=>{if(e.status===`granted`){if(!s.leader){e.release();return}s.lockRelease=e.release}}),J(f(e))),clearLeaderHooks:_,wireLeaderHooks:p,storage:a.localStorage,log:o});try{let e=await i;return r(),e}catch(e){throw r(),e}};return await M({instanceId:i,browser:t.browser,remoteCdpBridge:u,remoteCdpPushChannel:l,getLeader:()=>s.leader,performTrayLeaveLocally:v,window:a}),Ee(t,s,f,p,c),te(e=>{a.localStorage.setItem(`slicc.leaderTrayStatus`,JSON.stringify(e))}),a.localStorage.setItem(`slicc.leaderTrayStatus`,JSON.stringify(C())),g(e=>{a.localStorage.setItem(m,JSON.stringify(e))}),a.localStorage.setItem(m,JSON.stringify(h())),A(k(),a.localStorage),Oe(t,s,_,v),{getLeader:()=>s.leader,getFollower:()=>s.follower,performTrayLeaveLocally:v}}export{ke as wireWcTray};
|