sliccy 5.67.1 → 5.68.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/ui/assets/__vite-browser-external-CtuZSfo7.js +1 -0
- package/dist/ui/assets/{account-store-D7kMPjMl.js → account-store-CoA-EjrR.js} +1 -1
- package/dist/ui/assets/account-store-Cw-Kdlic.js +94 -0
- package/dist/ui/assets/adobe-B4gTTma2.js +1 -0
- package/dist/ui/assets/adobe-CqST5E4B.js +2 -0
- package/dist/ui/assets/amazon-bedrock-Cg62P8pR.json +1 -0
- package/dist/ui/assets/anthropic-4_qTN2Mu.json +1 -0
- package/dist/ui/assets/anthropic-messages-6XWFkWWy.js +39 -0
- package/dist/ui/assets/anthropic-messages-D42B1WVl.js +39 -0
- package/dist/ui/assets/{apps-BoOkGG9c.js → apps-BtS9MYxU.js} +1 -1
- package/dist/ui/assets/azure-openai-CKRM23oV.js +1 -0
- package/dist/ui/assets/azure-openai-CcIDDU6v.js +1 -0
- package/dist/ui/assets/azure-openai-responses-BvEv9lZE.js +1 -0
- package/dist/ui/assets/azure-openai-responses-DE9sINqp.json +1 -0
- package/dist/ui/assets/azure-openai-responses-DRSA640t.js +1 -0
- package/dist/ui/assets/bedrock-camp-D_7EbOFH.js +1 -0
- package/dist/ui/assets/bedrock-camp-PMQ4Iu6f.js +1 -0
- package/dist/ui/assets/cerebras-Cjamhn6S.js +1 -0
- package/dist/ui/assets/cerebras-DsAtsb2V.js +1 -0
- package/dist/ui/assets/cloudflare-ai-gateway-DDb7hKDm.json +1 -0
- package/dist/ui/assets/cloudflare-workers-ai-hYVOS3es.json +1 -0
- package/dist/ui/assets/compat-Spvv5tCW.js +2 -0
- package/dist/ui/assets/{composer-speech-CWgEvzia.js → composer-speech-BSy_wbJC.js} +1 -1
- package/dist/ui/assets/{connect-surface-C-7W435s.js → connect-surface-C6I8TboO.js} +1 -1
- package/dist/ui/assets/{context-compaction-dcYYajWb.js → context-compaction-CW5AQ9bv.js} +1 -1
- package/dist/ui/assets/deferred-tools-C1IEsG5C.js +1 -0
- package/dist/ui/assets/deferred-tools-DNuoafg8.js +1 -0
- package/dist/ui/assets/diagnostics-BsVbaNHR.js +1 -0
- package/dist/ui/assets/{dip-CxC1oNbs.js → dip-D3QakWLH.js} +1 -1
- package/dist/ui/assets/{ensure-speech-assets-Wr0NmhbD.js → ensure-speech-assets-8cWrra0n.js} +1 -1
- package/dist/ui/assets/event-stream-qbAZIAKV.js +1 -0
- package/dist/ui/assets/fireworks-B7kEGNCU.json +1 -0
- package/dist/ui/assets/{fs-D5H4qV90.js → fs-Bmq507Od.js} +1 -1
- package/dist/ui/assets/{fs-D_yANcgX.js → fs-WTyVMSI7.js} +2 -2
- package/dist/ui/assets/{github-BpqJV3zd.js → github-B6i7fX-k.js} +1 -1
- package/dist/ui/assets/{github-O8AoJ7u2.js → github-D7xWsi2X.js} +2 -2
- package/dist/ui/assets/github-copilot-Bo5sSGEf.js +2 -0
- package/dist/ui/assets/github-copilot-DgH4lVlG.js +1 -0
- package/dist/ui/assets/github-copilot-K9C_HNHm.json +1 -0
- package/dist/ui/assets/google-F4XgvJ1y.json +1 -0
- package/dist/ui/assets/google-generative-ai-BqEHWDKc.js +1 -0
- package/dist/ui/assets/google-generative-ai-DOAY2Bef.js +1 -0
- package/dist/ui/assets/{google-shared-CCJkdw81.js → google-shared-2WQG4pNx.js} +1 -1
- package/dist/ui/assets/{google-shared-p5XdfI6c.js → google-shared-CGD-JGZx.js} +1 -1
- package/dist/ui/assets/google-vertex-C-dQj0iH.js +1 -0
- package/dist/ui/assets/google-vertex-CiTExP0E.js +1 -0
- package/dist/ui/assets/{hear-C1RTIY9q.js → hear-B5lURJtR.js} +1 -1
- package/dist/ui/assets/{hear-BxiGt0Ct.js → hear-DI5vlKdf.js} +1 -1
- package/dist/ui/assets/huggingface-BjNadu0v.json +1 -0
- package/dist/ui/assets/{installer-FOVSBgCf.js → installer-kDSMsl2T.js} +1 -1
- package/dist/ui/assets/{js-realm-worker-DFnuhv4z.js → js-realm-worker-d_SDr24a.js} +7 -7
- package/dist/ui/assets/{kernel-worker-uWACBBhV.js → kernel-worker-DNk5pbO8.js} +592 -588
- package/dist/ui/assets/{kokoro-engine-8rE8HqhM.js → kokoro-engine-DX7VicqD.js} +1 -1
- package/dist/ui/assets/{legacy-api-aliases-BQSsmFIS.js → legacy-api-aliases-CRTuRAqQ.js} +1 -1
- package/dist/ui/assets/{legacy-api-aliases-BEwZmDvB.js → legacy-api-aliases-CdGTJw-r.js} +1 -1
- package/dist/ui/assets/{lick-ws-bridge-TTCR56gq.js → lick-ws-bridge-BVIYLuDJ.js} +1 -1
- package/dist/ui/assets/{local-llm-DuSay7Zm.js → local-llm-4lJSiK5z.js} +1 -1
- package/dist/ui/assets/{local-llm-DtdiuuN-.js → local-llm-BHmd5Fd7.js} +2 -2
- package/dist/ui/assets/{magick-wasm-BiCoSTdr.js → magick-wasm-Daq1kpb4.js} +1 -1
- package/dist/ui/assets/{main-DXAgi47H.js → main-CrR9ucLa.js} +3 -3
- package/dist/ui/assets/mistral-CLEcIOtP.json +1 -0
- package/dist/ui/assets/{mistral-conversations-DbKikZnf.js → mistral-conversations-BIHTMTfL.js} +1 -1
- package/dist/ui/assets/{mistral-conversations-CLDzxp2F.js → mistral-conversations-CFKNSaPt.js} +2 -2
- package/dist/ui/assets/models-Bnh9VDA1.js +1 -0
- package/dist/ui/assets/moonshotai-8QShYhhE.json +1 -0
- package/dist/ui/assets/moonshotai-cn-7hHZff5z.json +1 -0
- package/dist/ui/assets/{mount-B6AQ9wuU.js → mount-Bt1UFWjP.js} +2 -2
- package/dist/ui/assets/{mount-C5cBuZIQ.js → mount-Cvxu87k0.js} +1 -1
- package/dist/ui/assets/{mount-recovery-DUunzxUB.js → mount-recovery-2ElXrqlr.js} +1 -1
- package/dist/ui/assets/new-session-CiuddhGl.js +2 -0
- package/dist/ui/assets/nvidia-dA6GzUPm.json +1 -0
- package/dist/ui/assets/oauth-bootstrap-BKh-w2bl.js +2 -0
- package/dist/ui/assets/openai-BehvdaXx.json +1 -0
- package/dist/ui/assets/openai-codex-BTjoLqTw.js +1 -0
- package/dist/ui/assets/openai-codex-ChonaqJh.js +1 -0
- package/dist/ui/assets/openai-codex-responses-B7cFMjWk.js +7 -0
- package/dist/ui/assets/openai-codex-responses-DqxoDEwc.js +7 -0
- package/dist/ui/assets/openai-completions-Z1aRkqWe.js +5 -0
- package/dist/ui/assets/openai-completions-o78dOizF.js +5 -0
- package/dist/ui/assets/openai-responses-SPfzkTJm.js +1 -0
- package/dist/ui/assets/openai-responses-shared-BHsJFKuB.js +10 -0
- package/dist/ui/assets/openai-responses-shared-Dg5Ojqlw.js +10 -0
- package/dist/ui/assets/openai-responses-xSdsW9lw.js +1 -0
- package/dist/ui/assets/opencode-4chvZrBR.json +1 -0
- package/dist/ui/assets/opencode-go-Chp1OOUx.json +1 -0
- package/dist/ui/assets/openrouter-BG0ZjAOt.js +1 -0
- package/dist/ui/assets/openrouter-DuD25f7F.js +1 -0
- package/dist/ui/assets/openrouter-ZLTwKIjA.json +1 -0
- package/dist/ui/assets/openrouter-models-B8MWxzTa.js +1 -0
- package/dist/ui/assets/openrouter-models-DM9v24kQ.js +1 -0
- package/dist/ui/assets/openrouter-oauth-CK60lvKj.js +1 -0
- package/dist/ui/assets/openrouter-oauth-COmvA0Z1.js +1 -0
- package/dist/ui/assets/openrouter.models-Bi9GV7Zn.js +1 -0
- package/dist/ui/assets/openrouter.models-D41M1z_D.js +1 -0
- package/dist/ui/assets/{page-follower-tray-BblmGsa_.js → page-follower-tray-9fFxBm3_.js} +1 -1
- package/dist/ui/assets/{panel-rpc-handlers-C7cI_wpd.js → panel-rpc-handlers-CFg5NA3F.js} +2 -2
- package/dist/ui/assets/pi-messages-DRdk3sMN.js +7 -0
- package/dist/ui/assets/pi-messages-fKU_b1SK.js +7 -0
- package/dist/ui/assets/{provider-mNJ81Nmf.js → provider-4BBnXotd.js} +2 -2
- package/dist/ui/assets/{provider-B_beyvZ1.js → provider-DXnAAcyy.js} +1 -1
- package/dist/ui/assets/{provider-settings-Br12uT6y.js → provider-settings-Bv01tMmE.js} +1 -1
- package/dist/ui/assets/{provider-settings-Bynyth1-.js → provider-settings-DsZhN2JS.js} +1 -1
- package/dist/ui/assets/{provider-store-access-DPdIt2P7.js → provider-store-access-JTv_TUOb.js} +2 -2
- package/dist/ui/assets/provider-store-access-saWse80P.js +1 -0
- package/dist/ui/assets/providers-BoV1YFxZ.js +1 -0
- package/dist/ui/assets/providers-u1yhVbk3.js +2 -0
- package/dist/ui/assets/py-realm-worker-C9yzXwPb.js +244 -0
- package/dist/ui/assets/{pyodide-BahZNzwn.js → pyodide-B9hoVXZ4.js} +2 -2
- package/dist/ui/assets/{quick-llm-DAjUwXji.js → quick-llm-CXqHh13i.js} +1 -1
- package/dist/ui/assets/qwen-token-plan-BpxmzamU.json +1 -0
- package/dist/ui/assets/qwen-token-plan-cn-CPhDR0u_.json +1 -0
- package/dist/ui/assets/{session-freezer-ByN74MO5.js → session-freezer-Dd9Vda0R.js} +3 -3
- package/dist/ui/assets/setup-sudo-CDu03XrJ.js +2 -0
- package/dist/ui/assets/shared-BYVJAPbn.js +1 -0
- package/dist/ui/assets/shared-pjIf7b3g.js +4 -0
- package/dist/ui/assets/{skills-BMDzPReO.js → skills-CW8kM1BJ.js} +1 -1
- package/dist/ui/assets/{speak-BeDix5EH.js → speak-B4wyr-p6.js} +1 -1
- package/dist/ui/assets/{speak-CkvZB0fq.js → speak-aEIq7SEP.js} +1 -1
- package/dist/ui/assets/{sprinkle-bridge-YYPWJ55I.js → sprinkle-bridge-DziYRsuS.js} +1 -1
- package/dist/ui/assets/{sprinkle-manager-CK0eo6zp.js → sprinkle-manager-354rS3Fe.js} +1 -1
- package/dist/ui/assets/{store-Bo-VXhKX.js → store-J9T9BcgY.js} +1 -1
- package/dist/ui/assets/{sudo-CIRZ-EUo.js → sudo-DzRD7NyW.js} +1 -1
- package/dist/ui/assets/together-CYZ-lBBF.json +1 -0
- package/dist/ui/assets/transform-messages-Bp94o3FD.js +1 -0
- package/dist/ui/assets/transform-messages-wECJwtH0.js +1 -0
- package/dist/ui/assets/{transformers-env-C77NUYNM.js → transformers-env-CeJN6XlP.js} +1 -1
- package/dist/ui/assets/{transformers-env-RUMoBRzi.js → transformers-env-DZtq7i0I.js} +1 -1
- package/dist/ui/assets/{upgrade-detection-BGS7lBbj.js → upgrade-detection-BIhXOe-Q.js} +1 -1
- package/dist/ui/assets/vercel-ai-gateway-ZtkcQH_C.json +1 -0
- package/dist/ui/assets/{voice-reply-RJ5RbAjY.js → voice-reply-6cMxpz9H.js} +1 -1
- package/dist/ui/assets/{wc-extension-BS1GKkBY.js → wc-extension-DrjbYKDl.js} +2 -2
- package/dist/ui/assets/wc-follower-Ss6qgVMU.js +17 -0
- package/dist/ui/assets/{wc-live-BU8bhGYQ.js → wc-live-DALR9RxO.js} +3 -3
- package/dist/ui/assets/wc-nav-rD7F67u7.js +2 -0
- package/dist/ui/assets/{wc-onboarding-oXM_3rWS.js → wc-onboarding-D3EwB9c1.js} +2 -2
- package/dist/ui/assets/wc-placeholder-BEIr39eF.js +4 -0
- package/dist/ui/assets/{wc-settings-CwYBG83C.js → wc-settings-CZc7gWTY.js} +2 -2
- package/dist/ui/assets/{wc-shell-APVSI6kq.js → wc-shell-BgYP6QNP.js} +2 -2
- package/dist/ui/assets/{wc-sprinkles-XTLYtBLP.js → wc-sprinkles-DtnXjTrx.js} +2 -2
- package/dist/ui/assets/wc-tray-DDa-t_xi.js +2 -0
- package/dist/ui/assets/{whisper-engine-6Ks_tvV1.js → whisper-engine-G1YfvaDM.js} +1 -1
- package/dist/ui/assets/{whisper-session-36PZh-9m.js → whisper-session-Ds5v74N9.js} +2 -2
- package/dist/ui/assets/xai-grok-Co4pMrel.js +1 -0
- package/dist/ui/assets/xai-grok-HbxyqvtP.js +1 -0
- package/dist/ui/index.html +12 -10
- package/dist/ui/packages/webapp/index.html +12 -10
- package/package.json +3 -2
- package/dist/ui/assets/__vite-browser-external-DZX1xHt-.js +0 -1
- package/dist/ui/assets/account-store-DpZitlUY.js +0 -98
- package/dist/ui/assets/adobe-Bmh-_khT.js +0 -2
- package/dist/ui/assets/adobe-DyH_9qJK.js +0 -1
- package/dist/ui/assets/anthropic-messages-CIsUSIzG.js +0 -39
- package/dist/ui/assets/anthropic-messages-_fPAePlR.js +0 -39
- package/dist/ui/assets/azure-openai-Dm2kMacy.js +0 -1
- package/dist/ui/assets/azure-openai-rcs4Z0Nm.js +0 -1
- package/dist/ui/assets/azure-openai-responses-DhzbC_tL.js +0 -1
- package/dist/ui/assets/azure-openai-responses-bHfWNMbx.js +0 -1
- package/dist/ui/assets/bedrock-camp-BqDUcxBp.js +0 -1
- package/dist/ui/assets/bedrock-camp-DdoLg8ey.js +0 -1
- package/dist/ui/assets/cerebras-Bb96dS8U.js +0 -1
- package/dist/ui/assets/cerebras-Ih70UTEx.js +0 -1
- package/dist/ui/assets/compat-DyT25qXb.js +0 -2
- package/dist/ui/assets/github-copilot-Bf-iW8mK.js +0 -2
- package/dist/ui/assets/github-copilot-C_R0Ma0E.js +0 -1
- package/dist/ui/assets/google-generative-ai-CyS9qbzb.js +0 -1
- package/dist/ui/assets/google-generative-ai-DkRyuoBH.js +0 -1
- package/dist/ui/assets/google-vertex-Cp9ldPyE.js +0 -1
- package/dist/ui/assets/google-vertex-D7VRnbrL.js +0 -1
- package/dist/ui/assets/models-CzSI8IsT.js +0 -1
- package/dist/ui/assets/new-session-CgnPWa_k.js +0 -2
- package/dist/ui/assets/oauth-bootstrap-CmurjaMI.js +0 -2
- package/dist/ui/assets/openai-codex-D-gmV2fj.js +0 -1
- package/dist/ui/assets/openai-codex-Dv3Zo1Dx.js +0 -1
- package/dist/ui/assets/openai-codex-responses-B_k2rCqO.js +0 -7
- package/dist/ui/assets/openai-codex-responses-RviMslSH.js +0 -7
- package/dist/ui/assets/openai-completions-CGLtJfv2.js +0 -5
- package/dist/ui/assets/openai-completions-COYKlBqA.js +0 -5
- package/dist/ui/assets/openai-responses-C4mUX6jK.js +0 -1
- package/dist/ui/assets/openai-responses-D02gU0ey.js +0 -1
- package/dist/ui/assets/openai-responses-shared-CCTyKL6A.js +0 -10
- package/dist/ui/assets/openai-responses-shared-bVKJbQt9.js +0 -10
- package/dist/ui/assets/provider-store-access-CeFzxjQ9.js +0 -1
- package/dist/ui/assets/providers-DiQPQy2w.js +0 -2
- package/dist/ui/assets/providers-t50k54fw.js +0 -1
- package/dist/ui/assets/py-realm-worker-VuYxvTG9.js +0 -244
- package/dist/ui/assets/setup-sudo-PBmKBl1V.js +0 -2
- package/dist/ui/assets/shared-Bs3KpKjW.js +0 -4
- package/dist/ui/assets/shared-CR9p6ivA.js +0 -1
- package/dist/ui/assets/transform-messages-CVIV-EgO.js +0 -1
- package/dist/ui/assets/transform-messages-fFaW-DLG.js +0 -1
- package/dist/ui/assets/wc-follower-BWvESj7q.js +0 -17
- package/dist/ui/assets/wc-nav-CPVp8Fk2.js +0 -2
- package/dist/ui/assets/wc-placeholder-BvLEsaiK.js +0 -4
- package/dist/ui/assets/wc-tray-CUbKbp0U.js +0 -2
- package/dist/ui/assets/xai-grok-B5CWbUwl.js +0 -1
- package/dist/ui/assets/xai-grok-models-B0Tf--xf.js +0 -1
- package/dist/ui/assets/xai-grok-models-CeEBaUMC.js +0 -1
- package/dist/ui/assets/xai-grok-qyS7ZUXU.js +0 -1
- package/dist/ui/assets/xai-grok-sanitize-CR2JoOJd.js +0 -5
- package/dist/ui/assets/xai-grok-sanitize-CV6qvaEF.js +0 -5
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/quick-llm-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/quick-llm-CXqHh13i.js","assets/rolldown-runtime-aKtaBQYM.js","assets/compat-Spvv5tCW.js","assets/models-Bnh9VDA1.js","assets/event-stream-qbAZIAKV.js","assets/preload-helper-Czpn1I53.js","assets/provider-env-D37PhSJu.js","assets/__vite-browser-external-SwrSgYTf.js","assets/openrouter.models-D41M1z_D.js","assets/account-store-CoA-EjrR.js","assets/context-compaction-CW5AQ9bv.js","assets/logger-DDBAeTLF.js","assets/src-CS5gSDhT.js","assets/proxied-fetch-D5h5REZy.js","assets/base64-DpPqYZJF.js","assets/runtime-env-DH4NDw4t.js","assets/fetch-body-D2PwksUW.js","assets/secret-topology-CptRwAX3.js","assets/secrets-bridge-client-D6nwnBvr.js","assets/port-bridge-client-CoFZLSYm.js","assets/tool-ui-DfXu6quJ.js","assets/providers-u1yhVbk3.js","assets/panel-rpc-DmJSNs0I.js","assets/bedrock-camp-PMQ4Iu6f.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{i as n}from"./src-CS5gSDhT.js";import{c as r,i,l as a,s as o}from"./telemetry-C8rZr13D.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-6TqoULh8.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,dt={},F=null,ft=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`]),pt=null,mt=w({},[`audio`,`video`,`img`,`source`,`image`,`track`]),ht=null,gt=w({},[`alt`,`class`,`for`,`id`,`label`,`name`,`pattern`,`placeholder`,`role`,`summary`,`title`,`value`,`style`,`xmlns`]),I=`http://www.w3.org/1998/Math/MathML`,_t=`http://www.w3.org/2000/svg`,L=`http://www.w3.org/1999/xhtml`,vt=L,yt=!1,bt=null,xt=w({},[I,_t,L],De),St=w({},[`mi`,`mo`,`mn`,`ms`,`mtext`]),Ct=w({},[`annotation-xml`]),wt=w({},[`title`,`style`,`font`,`a`,`script`]),Tt=null,Et=[`application/xhtml+xml`,`text/html`],R=null,Dt=null,Ot=n.createElement(`form`),kt=function(e){return e instanceof RegExp||e instanceof Function},At=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!(Dt&&Dt===e)){if((!e||typeof e!=`object`)&&(e={}),e=E(e),Tt=Et.indexOf(e.PARSER_MEDIA_TYPE)===-1?`text/html`:e.PARSER_MEDIA_TYPE,R=Tt===`application/xhtml+xml`?De:Ee,b=x(e,`ALLOWED_TAGS`)?w({},e.ALLOWED_TAGS,R):be,C=x(e,`ALLOWED_ATTR`)?w({},e.ALLOWED_ATTR,R):Ne,bt=x(e,`ALLOWED_NAMESPACES`)?w({},e.ALLOWED_NAMESPACES,De):xt,ht=x(e,`ADD_URI_SAFE_ATTR`)?w(E(gt),e.ADD_URI_SAFE_ATTR,R):gt,pt=x(e,`ADD_DATA_URI_TAGS`)?w(E(mt),e.ADD_DATA_URI_TAGS,R):mt,F=x(e,`FORBID_CONTENTS`)?w({},e.FORBID_CONTENTS,R):ft,Ke=x(e,`FORBID_TAGS`)?w({},e.FORBID_TAGS,R):E({}),qe=x(e,`FORBID_ATTR`)?w({},e.FORBID_ATTR,R):E({}),dt=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,vt=e.NAMESPACE||L,St=e.MATHML_TEXT_INTEGRATION_POINTS||St,Ct=e.HTML_INTEGRATION_POINTS||Ct,T=e.CUSTOM_ELEMENT_HANDLING||{},e.CUSTOM_ELEMENT_HANDLING&&kt(e.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(T.tagNameCheck=e.CUSTOM_ELEMENT_HANDLING.tagNameCheck),e.CUSTOM_ELEMENT_HANDLING&&kt(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),dt&&(b=w({},Ve),C=ye(null),dt.html===!0&&(w(b,Fe),w(C,He)),dt.svg===!0&&(w(b,Ie),w(C,Ue),w(C,Ge)),dt.svgFilters===!0&&(w(b,Le),w(C,Ue),w(C,Ge)),dt.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,R))),e.ADD_ATTR&&(typeof e.ADD_ATTR==`function`?D.attributeCheck=e.ADD_ATTR:(C===Ne&&(C=E(C)),w(C,e.ADD_ATTR,R))),e.ADD_URI_SAFE_ATTR&&w(ht,e.ADD_URI_SAFE_ATTR,R),e.FORBID_CONTENTS&&(F===ft&&(F=E(F)),w(F,e.FORBID_CONTENTS,R)),e.ADD_FORBID_CONTENTS&&(F===ft&&(F=E(F)),w(F,e.ADD_FORBID_CONTENTS,R)),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),Dt=e}},z=w({},[...Ie,...Le,...Re]),jt=w({},[...ze,...Be]),Mt=function(e){let t=m(e);(!t||!t.tagName)&&(t={namespaceURI:vt,tagName:`template`});let n=Ee(e.tagName),r=Ee(t.tagName);return bt[e.namespaceURI]?e.namespaceURI===_t?t.namespaceURI===L?n===`svg`:t.namespaceURI===I?n===`svg`&&(r===`annotation-xml`||St[r]):!!z[n]:e.namespaceURI===I?t.namespaceURI===L?n===`math`:t.namespaceURI===_t?n===`math`&&Ct[r]:!!jt[n]:e.namespaceURI===L?t.namespaceURI===_t&&!Ct[r]||t.namespaceURI===I&&!St[r]?!1:!jt[n]&&(wt[n]||!z[n]):!!(Tt===`application/xhtml+xml`&&bt[e.namespaceURI]):!1},B=function(e){we(t.removed,{element:e});try{m(e).removeChild(e)}catch{ne(e)}},V=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{B(n)}catch{}else try{n.setAttribute(e,``)}catch{}},Nt=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]}Tt===`application/xhtml+xml`&&vt===L&&(e=`<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>`+e+`</body></html>`);let i=h?h.createHTML(e):e;if(vt===L)try{t=new ee().parseFromString(i,Tt)}catch{}if(!t||!t.documentElement){t=ae.createDocument(vt,`template`,null);try{t.documentElement.innerHTML=yt?g:i}catch{}}let a=t.body||t.documentElement;return e&&r&&a.insertBefore(n.createTextNode(r),a.childNodes[0]||null),vt===L?ce.call(t,k?`html`:`body`)[0]:k?t.documentElement:a},Pt=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)},Ft=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`)},It=function(e){return typeof s==`function`&&e instanceof s};function H(e,n,r){xe(e,e=>{e.call(t,n,r,Dt)})}let Lt=function(e){let n=null;if(H(_.beforeSanitizeElements,e,null),Ft(e))return B(e),!0;let r=R(e.nodeName);if(H(_.uponSanitizeElement,e,{tagName:r,allowedTags:b}),O&&e.hasChildNodes()&&!It(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 B(e),!0;if(!(D.tagCheck instanceof Function&&D.tagCheck(r))&&(!b[r]||Ke[r])){if(!Ke[r]&&zt(r)&&(T.tagNameCheck instanceof RegExp&&S(T.tagNameCheck,r)||T.tagNameCheck instanceof Function&&T.tagNameCheck(r)))return!1;if(lt&&!F[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 B(e),!0}return e instanceof c&&!Mt(e)||(r===`noscript`||r===`noembed`||r===`noframes`)&&S(/<\/no(script|embed|frames)/i,e.innerHTML)?(B(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)),H(_.afterSanitizeElements,e,null),!1)},Rt=function(e,t,r){if(qe[t]||ct&&(t===`id`||t===`name`)&&(r in n||r in Ot))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(!(zt(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(!ht[t]&&!S(y,ke(r,_e,``))&&!((t===`src`||t===`xlink:href`||t===`href`)&&e!==`script`&&Ae(r,`data:`)===0&&pt[e])&&!(Ze&&!S(ge,ke(r,_e,``)))&&r)return!1}return!0},zt=function(e){return e!==`annotation-xml`&&Oe(e,ve)},Bt=function(e){H(_.beforeSanitizeAttributes,e,null);let{attributes:n}=e;if(!n||Ft(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=R(a),l=s,u=a===`value`?l:je(l);if(r.attrName=c,r.attrValue=u,r.keepAttr=!0,r.forceKeepAttr=void 0,H(_.uponSanitizeAttribute,e,r),u=r.attrValue,P&&(c===`id`||c===`name`)&&(V(a,e),u=`user-content-`+u),O&&S(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,u)){V(a,e);continue}if(c===`attributename`&&Oe(u,`href`)){V(a,e);continue}if(r.forceKeepAttr)continue;if(!r.keepAttr){V(a,e);continue}if(!Qe&&S(/\/>/i,u)){V(a,e);continue}et&&xe([ue,de,fe],e=>{u=ke(u,e,` `)});let d=R(e.nodeName);if(!Rt(d,c,u)){V(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),Ft(e)?B(e):Ce(t.removed)}catch{V(a,e)}}H(_.afterSanitizeAttributes,e,null)},Vt=function e(t){let n=null,r=Pt(t);for(H(_.beforeSanitizeShadowDOM,t,null);n=r.nextNode();)H(_.uponSanitizeShadowNode,n,null),Lt(n),Bt(n),n.content instanceof a&&e(n.content);H(_.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(yt=!e,yt&&(e=`<!-->`),typeof e!=`string`&&!It(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||At(n),t.removed=[],typeof e==`string`&&(ut=!1),ut){if(e.nodeName){let t=R(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=Nt(`<!---->`),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=Nt(e),!i)return j?null:N?g:``}i&&A&&B(i.firstChild);let u=Pt(ut?e:i);for(;c=u.nextNode();)Lt(c),Bt(c),c.content instanceof a&&Vt(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]:{};At(e),st=!0},t.clearConfig=function(){Dt=null,st=!1},t.isValidAttribute=function(e,t,n){Dt||At({});let r=R(e),i=R(t);return Rt(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|$))*)?)+/,dt=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,F=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,ft=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,pt=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,mt=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,ht=N(mt).replace(/bull/g,pt).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(),gt=N(mt).replace(/bull/g,pt).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(),I=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,_t=/^[^\n]+/,L=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,vt=N(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace(`label`,L).replace(`title`,/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),yt=N(/^(bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,pt).getRegex(),bt=`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`,xt=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,St=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`,xt).replace(`tag`,bt).replace(`attribute`,/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),Ct=N(I).replace(`hr`,F).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`,bt).getRegex(),wt={blockquote:N(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace(`paragraph`,Ct).getRegex(),code:ut,def:vt,fences:dt,heading:ft,hr:F,html:St,lheading:ht,list:yt,newline:lt,paragraph:Ct,table:M,text:_t},Tt=N(`^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)`).replace(`hr`,F).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`,bt).getRegex(),Et={...wt,lheading:gt,table:Tt,paragraph:N(I).replace(`hr`,F).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`|lheading`,``).replace(`table`,Tt).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`,bt).getRegex()},R={...wt,html:N(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace(`comment`,xt).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(I).replace(`hr`,F).replace(`heading`,` *#{1,6} *[^
|
|
4
4
|
]`).replace(`lheading`,ht).replace(`|table`,``).replace(`blockquote`,` {0,3}>`).replace(`|fences`,``).replace(`|list`,``).replace(`|html`,``).replace(`|tag`,``).getRegex()},Dt=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,Ot=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,kt=/^( {2,}|\\)\n(?!\s*$)/,At=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,z=/[\p{P}\p{S}]/u,jt=/[\s\p{P}\p{S}]/u,Mt=/[^\s\p{P}\p{S}]/u,B=N(/^((?![*_])punctSpace)/,`u`).replace(/punctSpace/g,jt).getRegex(),V=/(?!~)[\p{P}\p{S}]/u,Nt=/(?!~)[\s\p{P}\p{S}]/u,Pt=/(?:[^\s\p{P}\p{S}]|~)/u,Ft=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(),It=/^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/,H=N(It,`u`).replace(/punct/g,z).getRegex(),Lt=N(It,`u`).replace(/punct/g,V).getRegex(),Rt=`^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)`,zt=N(Rt,`gu`).replace(/notPunctSpace/g,Mt).replace(/punctSpace/g,jt).replace(/punct/g,z).getRegex(),Bt=N(Rt,`gu`).replace(/notPunctSpace/g,Pt).replace(/punctSpace/g,Nt).replace(/punct/g,V).getRegex(),Vt=N(`^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)`,`gu`).replace(/notPunctSpace/g,Mt).replace(/punctSpace/g,jt).replace(/punct/g,z).getRegex(),Ht=N(/^~~?(?:((?!~)punct)|[^\s~])/,`u`).replace(/punct/g,z).getRegex(),Ut=N(`^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)`,`gu`).replace(/notPunctSpace/g,Mt).replace(/punctSpace/g,jt).replace(/punct/g,z).getRegex(),Wt=N(/\\(punct)/,`gu`).replace(/punct/g,z).getRegex(),Gt=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(),Kt=N(xt).replace(`(?:-->|$)`,`-->`).getRegex(),qt=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`,Kt).replace(`attribute`,/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),Jt=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/,Yt=N(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace(`label`,Jt).replace(`href`,/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace(`title`,/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),Xt=N(/^!?\[(label)\]\[(ref)\]/).replace(`label`,Jt).replace(`ref`,L).getRegex(),Zt=N(/^!?\[(ref)\](?:\[\])?/).replace(`ref`,L).getRegex(),Qt=N(`reflink|nolink(?!\\()`,`g`).replace(`reflink`,Xt).replace(`nolink`,Zt).getRegex(),$t=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,en={_backpedal:M,anyPunctuation:Wt,autolink:Gt,blockSkip:Ft,br:kt,code:Ot,del:M,delLDelim:M,delRDelim:M,emStrongLDelim:H,emStrongRDelimAst:zt,emStrongRDelimUnd:Vt,escape:Dt,link:Yt,nolink:Zt,punctuation:B,reflink:Xt,reflinkSearch:Qt,tag:qt,text:At,url:M},tn={...en,link:N(/^!?\[(label)\]\((.*?)\)/).replace(`label`,Jt).getRegex(),reflink:N(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace(`label`,Jt).getRegex()},nn={...en,emStrongRDelimAst:Bt,emStrongLDelim:Lt,delLDelim:Ht,delRDelim:Ut,url:N(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace(`protocol`,$t).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`,$t).getRegex()},rn={...nn,br:N(kt).replace(`{2,}`,`*`).getRegex(),text:N(nn.text).replace(`\\b_`,`\\b_| {2,}\\n`).replace(/\{2,\}/g,`*`).getRegex()},an={normal:wt,gfm:Et,pedantic:R},on={normal:en,gfm:nn,breaks:rn,pedantic:tn},sn={"&":`&`,"<":`<`,">":`>`,'"':`"`,"'":`'`},cn=e=>sn[e];function U(e,t){if(t){if(P.escapeTest.test(e))return e.replace(P.escapeReplace,cn)}else if(P.escapeTestNoEncode.test(e))return e.replace(P.escapeReplaceNoEncode,cn);return e}function ln(e){try{e=encodeURI(e).replace(P.percentDecode,`%`)}catch{return null}return e}function un(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 W(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 dn(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-
|
|
74
|
+
`);t(async()=>{let{quickLabel:e}=await import(`./quick-llm-CXqHh13i.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-
|
|
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-
|
|
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-354rS3Fe.js","assets/logger-DDBAeTLF.js","assets/panel-rpc-DmJSNs0I.js","assets/rolldown-runtime-aKtaBQYM.js","assets/telemetry-C8rZr13D.js","assets/runtime-env-DH4NDw4t.js","assets/sprinkle-renderer-qv3mGpBG.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-DD6jqggr.js","assets/dip-D3QakWLH.js","assets/wc-permissions-registry-Blyunq37.js","assets/quick-llm-CXqHh13i.js","assets/compat-Spvv5tCW.js","assets/models-Bnh9VDA1.js","assets/event-stream-qbAZIAKV.js","assets/provider-env-D37PhSJu.js","assets/__vite-browser-external-SwrSgYTf.js","assets/openrouter.models-D41M1z_D.js","assets/account-store-CoA-EjrR.js","assets/context-compaction-CW5AQ9bv.js","assets/src-CS5gSDhT.js","assets/proxied-fetch-D5h5REZy.js","assets/base64-DpPqYZJF.js","assets/secret-topology-CptRwAX3.js","assets/secrets-bridge-client-D6nwnBvr.js","assets/port-bridge-client-CoFZLSYm.js","assets/tool-ui-DfXu6quJ.js","assets/providers-u1yhVbk3.js","assets/bedrock-camp-PMQ4Iu6f.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-354rS3Fe.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-DD6jqggr.js`);return{createSprinkleExecHandler:e}},__vite__mapDeps([19,1])),{setDipExecHandler:b}=await e(async()=>{let{setDipExecHandler:e}=await import(`./dip-D3QakWLH.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-354rS3Fe.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-CXqHh13i.js`).then(e=>e.n);return{pickLucideIcon:e}},__vite__mapDeps([22,5,23,24,25,1,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-CFg5NA3F.js","assets/preload-helper-Czpn1I53.js","assets/account-store-CoA-EjrR.js","assets/compat-Spvv5tCW.js","assets/models-Bnh9VDA1.js","assets/event-stream-qbAZIAKV.js","assets/provider-env-D37PhSJu.js","assets/__vite-browser-external-SwrSgYTf.js","assets/openrouter.models-D41M1z_D.js","assets/context-compaction-CW5AQ9bv.js","assets/logger-DDBAeTLF.js","assets/src-CS5gSDhT.js","assets/proxied-fetch-D5h5REZy.js","assets/base64-DpPqYZJF.js","assets/runtime-env-DH4NDw4t.js","assets/fetch-body-D2PwksUW.js","assets/secret-topology-CptRwAX3.js","assets/secrets-bridge-client-D6nwnBvr.js","assets/port-bridge-client-CoFZLSYm.js","assets/tool-ui-DfXu6quJ.js","assets/providers-u1yhVbk3.js","assets/bedrock-camp-PMQ4Iu6f.js","assets/transform-messages-wECJwtH0.js","assets/provider-settings-DsZhN2JS.js","assets/tray-runtime-config-DquE2Rx9.js","assets/messages-BD4p8GuF.js","assets/tray-follower-status-CyJIKXH4.js","assets/clipboard-DuHpK59o.js","assets/telemetry-C8rZr13D.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-DicSB8Dn.js","assets/db-ysOO0kLr.js","assets/tray-sync-protocol-CVdiCvfU.js","assets/hosted-config-apply-uAym2aS5.js","assets/theme-engine-jfuTMXZM.js","assets/legacy-styles-DcRu2WCJ.js","assets/tray-leave-runtime-BI5IM82V.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{t as e}from"./preload-helper-Czpn1I53.js";import{P as t,R as n,d as r}from"./account-store-CoA-EjrR.js";import{n as i}from"./attachments-CByeG2Ru.js";import{t as a}from"./logger-DDBAeTLF.js";import{n as o}from"./base64-DpPqYZJF.js";import{a as s,l as c,n as l,o as u,r as d,u as f}from"./tray-sync-protocol-CVdiCvfU.js";import{o as p,t as m}from"./proxied-fetch-D5h5REZy.js";import{d as h,i as g,n as _,r as v}from"./tray-runtime-config-DquE2Rx9.js";import{r as y}from"./panel-rpc-DmJSNs0I.js";import{a as b,n as x,t as S}from"./tray-follower-status-CyJIKXH4.js";import"./provider-settings-DsZhN2JS.js";import"./handoff-link-CfgH86mb.js";import{t as ee}from"./remote-cdp-transport-DOoXIxy3.js";import"./browser-COVn7LPD.js";import{i as te,n as C,t as ne}from"./tray-leader-DicSB8Dn.js";import{t as re}from"./synthetic-cdp-transport-DLIt5SkY.js";import{n as ie,t as ae}from"./leader-session-events-m7I5BMZy.js";import{t as w}from"./wc-scoop-color-CByZNEJo.js";import{a as oe,i as T,n as se,o as ce,r as le,t as E}from"./page-follower-tray-9fFxBm3_.js";a(`scoops.tray-leave`),a(`scoops.tray-join`);var D=null;function O(e){D=e}function k(){return D?.()??[]}var ue=`slicc.leaderTrayFollowers`;function A(e,t=globalThis.localStorage){try{t?.setItem(ue,JSON.stringify(e))}catch{}}function j(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 M(){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?j(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 N(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-CFg5NA3F.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,20,21,22,0,23,24,25,26,27,28,29,30,31,32,33,34,35])),{getLeaderPermissionsSurface:f}=await e(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:n}),m=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})=>(h(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,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-DicSB8Dn.js`).then(e=>e.a);return{getLeaderTrayRuntimeStatus:e}},__vite__mapDeps([37,1,12,14,3,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 e(async()=>{let{CHERRY_RUNTIME_TAG:e}=await import(`./tray-sync-protocol-CVdiCvfU.js`).then(e=>e.s);return{CHERRY_RUNTIME_TAG:e}},__vite__mapDeps([39,1,12,13])),{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 M(),{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-DicSB8Dn.js`).then(e=>e.a);return{getLeaderTrayRuntimeStatus:e}},__vite__mapDeps([37,1,12,14,3,15,13,16,17,26,27,38])),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-DicSB8Dn.js`).then(e=>e.a);return{getLeaderTrayRuntimeStatus:e}},__vite__mapDeps([37,1,12,14,3,15,13,16,17,26,27,38])),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:()=>f()})});c.addEventListener(`beforeunload`,()=>{m(),p.dispose(),i.disposeAll(),a?.close()},{once:!0})}async function P(r){let{log:i}=r;await new Promise(e=>setTimeout(e,5e3));try{let r=await fetch(p(`/api/hosted-bootstrap`),{signal:AbortSignal.timeout(1e4),headers:m()});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},l]=await Promise.all([e(()=>import(`./hosted-config-apply-uAym2aS5.js`),__vite__mapDeps([40,12])),e(()=>import(`./provider-settings-DsZhN2JS.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:n,addAccount:l.addAccount,removeAccount:t,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)})}}function F(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 I=64*1024;async function L(e,t,n){let{reqId:r,servedRoot:i,asText:a}=e,s=e.vfsPath;if(!F(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`,!F(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=z(s),d=R(c,I);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 R(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 z(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 B=3e4,V={target:`preview-target`,session:`preview-session`,frame:`preview-frame`,loader:`preview-loader`},H=class extends re{connId;sendToWorker;nextId=1;pending=new Map;constructor(e){super({targetUrl:e.targetUrl,targetOrigin:e.targetOrigin,title:e.title,ids:e.ids??V}),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=B){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 U=new Set([`navigate`,`discovery`]),de=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 fe(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 pe(e,t){return e.filter(e=>e.kind===`preview`?!1:!K(e)||!t.requireNetwork||e.capabilities?.network===!0)}var me=class e{options;followers=new Map;registry=new de;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=l(t),i=r.onMessage(t=>{this.handleFollowerMessage(e,t)}),a=new oe({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:fe(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,u(n.sync,i,r),W.debug(`Snapshot sent to follower`,{bootstrapId:e,messageCount:i.length,scoopJid:r})}broadcastSnapshot(){if(this.followers.size!==0)for(let e of this.followers.keys())this.sendSnapshotToFollower(e)}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||!U.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`new_session`:W.info(`Follower new-session received`,{bootstrapId:e,action:t.action});try{this.options.onFollowerNewSession?.(t.action,e)}catch(e){W.warn(`onFollowerNewSession handler threw`,{error:e instanceof Error?e.message:String(e)})}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=f(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 ee({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||pe(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 c=this.options.browserTransport;if(!c){o.sync.send({type:`cdp.response`,requestId:e,error:`Leader has no browser transport`});return}try{let t=await c.send(n,r,i);s(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=d(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&&s(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(!c(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||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 H({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 he(e,t){return new me({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,onCherryHostEvent:e.onCherryHostEvent,onPreviewLick:e.onPreviewLick,browserAPI:e.browserAPI,browserTransport:e.browserTransport,vfs:e.vfs})}function ge(e,t){return new le({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 _e(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}L(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 ve(e,t){let n=new ce(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 ye(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 be(e){return t=>{let n=e._historyOverride??xe();if(n)try{let e=g(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=be(e),a=he(e,()=>r);e.browserAPI.setTrayTargetProvider(a);let o=ge(()=>r,a);r=_e(e,o,a,n,i,()=>r);let s=e.onAgentEvent(e=>a.broadcastEvent(e)),c=[],l=ve(e,a);c.push(setInterval(l,t)),l(),c.push(ye(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(){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 Se(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 Ce(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=Ce(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 we(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 Q(){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:w(e),label:e.isCone?`sliccy`:e.name,eyes:`open`})),e.refs.switcher.setAttribute(`active`,n)}}}function Te(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,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,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(),onFollowerNewSession:t=>{e.window.dispatchEvent(new CustomEvent(ie,{detail:{action:t}}))},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 Ee(t,n){return{wireLeaderHooks:n=>{O(()=>n.peers.getPeers().map(e=>({runtimeId:se(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-jfuTMXZM.js`).then(e=>e.p);return{setThemeChangeListener:e,getActiveThemeId:t}},__vite__mapDeps([41,1,12])).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-jfuTMXZM.js`).then(e=>e.p);return{setThemeChangeListener:e}},__vite__mapDeps([41,1,12])).then(({setThemeChangeListener:e})=>{e(null)})}}}function De(e){return{runtime:`slicc-hosted-leader`,kind:`hosted`,onLeaderReady:t=>{fetch(p(`/api/cloud-status`),{method:`POST`,headers:m({"content-type":`application/json`}),body:JSON.stringify({joinUrl:t.joinUrl,trayId:t.trayId,controllerUrl:t.controllerUrl,webhookUrl:t.webhookUrl,runtime:t.runtime,sliccVersion:`5.68.0`}),signal:AbortSignal.timeout(1e4)}).catch(t=>{e.log.error(`failed to POST /api/cloud-status`,{error:String(t)})})}}}function Oe(e,t,n,r,i){let{window:a,log:o}=e;if(e.runtimeMode===`hosted-leader`){a.localStorage.removeItem(_);let i=a.localStorage.getItem(v);if(!i){o.error(`hosted-leader: tray worker base URL not seeded`);return}t.leader=J({...n(i),...De(e)}),r(t.leader),P({log:o});return}let s=a.localStorage.getItem(_),c=a.localStorage.getItem(v);s?t.follower=E($(e,s)):c&&ke(c,e,t,n,r,i)}function ke(e,t,n,r,i,a){we({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 Ae(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($(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 je(t){let{loadSprinkleStyles:n}=await e(async()=>{let{loadSprinkleStyles:e}=await import(`./legacy-styles-DcRu2WCJ.js`);return{loadSprinkleStyles:e}},__vite__mapDeps([42,3]));await n();let{client:r,instanceId:i,window:a,log:o}=t,s={leader:null,follower:null,lockRelease:null},c=Q(),l=typeof BroadcastChannel==`function`?new BroadcastChannel(y(i)):null,u=Se({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 d=Te(t,s,u),{wireLeaderHooks:f,clearLeaderHooks:p}=Ee(t,u);a.addEventListener(ae,()=>{s.leader?.sync.broadcastSnapshot()});let m=async t=>{let{performTrayLeave:n}=await e(async()=>{let{performTrayLeave:e}=await import(`./tray-leave-runtime-BI5IM82V.js`);return{performTrayLeave:e}},__vite__mapDeps([43,26,13,14,1,3,15,16,17,27])),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(d(e))),clearLeaderHooks:p,wireLeaderHooks:f,storage:a.localStorage,log:o});try{let e=await i;return r(),e}catch(e){throw r(),e}};return await N({instanceId:i,browser:t.browser,remoteCdpBridge:u,remoteCdpPushChannel:l,getLeader:()=>s.leader,performTrayLeaveLocally:m,window:a}),Oe(t,s,d,f,c),te(e=>{a.localStorage.setItem(`slicc.leaderTrayStatus`,JSON.stringify(e))}),a.localStorage.setItem(`slicc.leaderTrayStatus`,JSON.stringify(C())),b(e=>{a.localStorage.setItem(S,JSON.stringify(e))}),a.localStorage.setItem(S,JSON.stringify(x())),A(k(),a.localStorage),Ae(t,s,p,m),{getLeader:()=>s.leader,getFollower:()=>s.follower,performTrayLeaveLocally:m}}export{je as wireWcTray};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./logger-LESFN7Hj.js";import{a as t,i as n,o as r,r as i}from"./transformers-env-
|
|
1
|
+
import{t as e}from"./logger-LESFN7Hj.js";import{a as t,i as n,o as r,r as i}from"./transformers-env-DZtq7i0I.js";const a=e(`speech:whisper`),o=`onnx-community/whisper-tiny`;let s=null,c=`idle`,l=null;const u=new Set;function d(){return c}function f(){return l}function p(e){return e&&u.add(e),s||=(c=`loading`,h().then(e=>(c=`ready`,m(),e),e=>{throw c=`failed`,s=null,a.error(`whisper load failed`,e),e})),s}function m(){import(`./speak-aEIq7SEP.js`).then(({kokoroWarmup:e})=>e()).catch(e=>a.warn(`kokoro warmup (chained after whisper) failed`,e))}async function h(){let{pipeline:e,env:s}=await import(`./transformers.web-CrioJkWG.js`);n(s),await i(o),await t();let c=r(),d=e=>{if(e?.file){if(e.status===`progress`)c.update(e.file,e.loaded??0,e.total??0);else if(e.status===`done`)c.complete(e.file);else return;l=c.snapshot();for(let e of u)e(l)}},f=async t=>await e(`automatic-speech-recognition`,o,{device:t,dtype:t===`webgpu`?`fp32`:`q8`,progress_callback:d}),p=typeof navigator<`u`&&`gpu`in navigator,m;if(p)try{m=await f(`webgpu`)}catch(e){a.warn(`whisper webgpu init failed; retrying on wasm`,e),m=await f(`wasm`)}else m=await f(`wasm`);return a.info(`whisper ready`,{model:o,device:p?`webgpu`:`wasm`}),{async transcribe(e,t){let n=await m(e,{chunk_length_s:30,task:`transcribe`,...t?.language?{language:t.language}:{}});return(Array.isArray(n)?n.map(e=>e.text??``).join(` `):n.text??``).trim()}}}export{d as i,p as n,f as r,o as t};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/speak-
|
|
2
|
-
import{t as e}from"./preload-helper-Czpn1I53.js";import{t}from"./logger-DDBAeTLF.js";import{i as n,n as r,r as i,t as a}from"./transformers-env-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/speak-B4wyr-p6.js","assets/preload-helper-Czpn1I53.js","assets/logger-DDBAeTLF.js","assets/runtime-env-DH4NDw4t.js","assets/speech-assets-bridge-CFYafE89.js","assets/transformers-env-CeJN6XlP.js","assets/proxied-fetch-D5h5REZy.js","assets/rolldown-runtime-aKtaBQYM.js","assets/base64-DpPqYZJF.js","assets/src-CS5gSDhT.js","assets/fetch-body-D2PwksUW.js","assets/shared-BYVJAPbn.js","assets/mime-types-ugOWOUZ9.js","assets/transformers.web-D6viRW2X.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{t as e}from"./preload-helper-Czpn1I53.js";import{t}from"./logger-DDBAeTLF.js";import{i as n,n as r,r as i,t as a}from"./transformers-env-CeJN6XlP.js";var o=t(`speech:whisper`),s=`onnx-community/whisper-tiny`,c=null,l=`idle`,u=null,d=new Set;function f(){return l}function p(){return u}function m(e){return e&&d.add(e),c||=(l=`loading`,g().then(e=>(l=`ready`,h(),e),e=>{throw l=`failed`,c=null,o.error(`whisper load failed`,e),e})),c}function h(){e(async()=>{let{kokoroWarmup:e}=await import(`./speak-B4wyr-p6.js`);return{kokoroWarmup:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12])).then(({kokoroWarmup:e})=>e()).catch(e=>o.warn(`kokoro warmup (chained after whisper) failed`,e))}async function g(){let{pipeline:t,env:c}=await e(async()=>{let{pipeline:e,env:t}=await import(`./transformers.web-D6viRW2X.js`);return{pipeline:e,env:t}},__vite__mapDeps([13,7,1]));r(c),await a(s),await i();let l=n(),f=e=>{if(e?.file){if(e.status===`progress`)l.update(e.file,e.loaded??0,e.total??0);else if(e.status===`done`)l.complete(e.file);else return;u=l.snapshot();for(let e of d)e(u)}},p=async e=>await t(`automatic-speech-recognition`,s,{device:e,dtype:e===`webgpu`?`fp32`:`q8`,progress_callback:f}),m=typeof navigator<`u`&&`gpu`in navigator,h;if(m)try{h=await p(`webgpu`)}catch(e){o.warn(`whisper webgpu init failed; retrying on wasm`,e),h=await p(`wasm`)}else h=await p(`wasm`);return o.info(`whisper ready`,{model:s,device:m?`webgpu`:`wasm`}),{async transcribe(e,t){let n=await h(e,{chunk_length_s:30,task:`transcribe`,...t?.language?{language:t.language}:{}});return(Array.isArray(n)?n.map(e=>e.text??``).join(` `):n.text??``).trim()}}}var _=16e3;async function v(e){if(typeof AudioContext>`u`||typeof OfflineAudioContext>`u`)throw Error(`audio decoding requires a window/page realm (AudioContext unavailable)`);let t=new AudioContext,n;try{n=await t.decodeAudioData(e.slice(0))}finally{await t.close().catch(()=>{})}let r=Math.max(1,Math.ceil(n.duration*_)),i=new OfflineAudioContext(1,r,_),a=i.createBufferSource();return a.buffer=n,a.connect(i.destination),a.start(),(await i.startRendering()).getChannelData(0).slice(0)}var y=t(`speech:whisper-session`),b=2e3,x=500,S=5e3,C=3e4,w=(e,t,n)=>new Promise((r,i)=>{let a=setTimeout(()=>i(Error(`${n} timed out after ${t}ms`)),t);e.then(e=>{clearTimeout(a),r(e)},e=>{clearTimeout(a),i(e)})});function T(e){return e?.split(`-`)[0]?.toLowerCase()||void 0}async function E(e,t){let n;if(t.stream)n=t.stream;else{if(!navigator.mediaDevices?.getUserMedia)throw Error(`microphone capture unavailable in this realm`);n=await navigator.mediaDevices.getUserMedia({audio:t.deviceId&&t.deviceId!=="default"?{deviceId:{exact:t.deviceId}}:!0})}let r=new MediaRecorder(n),i=[],a=T(t.lang),o=!1,s=!1;r.ondataavailable=e=>{e.data.size>0&&i.push(e.data)};let c=async()=>{if(i.length===0)return``;let t=await v(await new Blob(i,{type:r.mimeType||`audio/webm`}).arrayBuffer());return e.transcribe(t,{language:a})},l=Promise.resolve(``),u=()=>{let e=l.catch(()=>``).then(()=>c());return l=e.catch(()=>``),e},d=setInterval(()=>{o||s||i.length===0||(o=!0,u().then(e=>{!s&&e&&t.onPartial?.(e)}).catch(e=>{y.warn(`partial transcription failed`,e)}).finally(()=>{o=!1}))},b),f=()=>{if(clearInterval(d),r.state!==`inactive`)try{r.stop()}catch{}for(let e of n.getTracks())e.stop()},p=()=>new Promise(e=>{if(r.state===`inactive`){e();return}r.onstop=()=>e();try{r.stop()}catch{e()}});return r.start(x),{async stop(){if(s)return``;s=!0,clearInterval(d);try{await w(p(),S,`recorder flush`);for(let e of n.getTracks())e.stop();return await w(u(),C,`transcription`)}catch(e){for(let e of n.getTracks())e.stop();let r=e instanceof Error?e.message:String(e);return t.onError?.(`transcription failed: ${r}`),``}},cancel(){s||(s=!0,f())}}}export{p as a,m as i,T as n,f as o,v as r,E as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{O as e,i as t}from"./account-store-Cw-Kdlic.js";import{n}from"./event-stream-qbAZIAKV.js";import{d as r,p as i}from"./bedrock-camp-D_7EbOFH.js";import{c as a,i as o,r as s,s as c}from"./legacy-api-aliases-CdGTJw-r.js";import"./provider-settings-Bv01tMmE.js";import{XaiErrorCode as l,XaiOAuthError as u}from"./xai-grok-errors-ByEMMSoz.js";const d=`xai-grok`,f=`https://auth.x.ai`,p=`${f}/oauth2/authorize`,m=`${f}/oauth2/token`,h=`b1a00492-073a-47ea-816f-4c329264a828`,g=`http://127.0.0.1:56121/callback`,_=`https://api.x.ai/v1`,v=`grok-4.5`,y=`${d}-openai`;function b(){return r(`xai`)}function x(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 S(e){let t=b(),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 "${v}"`),n=t.find(e=>e.id===v),!n))throw Error(`xAI default model "${v}" 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:_}}function C(e){let t=``;for(let n of e)t+=String.fromCharCode(n);return btoa(t).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/,``)}function w(e){let t=new Uint8Array(e);return crypto.getRandomValues(t),t}function T(){return C(w(32))}async function E(e){let t=new TextEncoder().encode(e);return C(new Uint8Array(await crypto.subtle.digest(`SHA-256`,t)))}function D(){return C(w(16))}async function O(e,t){let n=new URLSearchParams({grant_type:`authorization_code`,code:e,redirect_uri:g,client_id:h,code_verifier:t}),r=await fetch(m,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:n});if(!r.ok)throw new u(`xAI token exchange failed: ${r.status} ${await r.text()}`,l.TOKEN_EXCHANGE_FAILED);let i=await r.json();if(!i.access_token)throw new u(`xAI token exchange did not return access_token.`,l.TOKEN_EXCHANGE_INVALID);return i}async function k(e){try{let t=new URLSearchParams({grant_type:`refresh_token`,refresh_token:e,client_id:h}),n=await fetch(m,{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===d)}async function j(){let t=A();if(!t?.accessToken)throw new u("Not signed in to xAI Grok — run /login or `oauth-token xai-grok`",l.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:d,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:y,provider:d,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}const P=(e,t,r={})=>{let i=n();return(async()=>{try{let n=await j(),a=r.sessionId,c=S(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=S(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:d,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:v,oauthTokenDomains:[`api.x.ai`,`*.x.ai`,`auth.x.ai`,`accounts.x.ai`],getModelIds:()=>b().map(x),onOAuthLoginIntercepted:async(t,n,r)=>{let i=T(),a=await E(i),o=D(),s=D(),c=new URL(p);c.searchParams.set(`response_type`,`code`),c.searchParams.set(`client_id`,h),c.searchParams.set(`redirect_uri`,g),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 f=await t({authorizeUrl:c.toString(),redirectUriPattern:`http://127.0.0.1:56121/*`,onCapture:`close`});if(!f)throw new u(`xAI OAuth login was cancelled or timed out`,l.CALLBACK_TIMEOUT);let m=new URL(f),v=m.searchParams.get(`code`),y=m.searchParams.get(`state`);if(!v)throw new u(`xAI OAuth redirect did not include a code`,l.CODE_MISSING);if(y!==o)throw new u(`xAI OAuth state mismatch — possible CSRF, aborting`,l.STATE_MISMATCH);let b=await O(v,i);await e({providerId:d,accessToken:b.access_token,refreshToken:b.refresh_token,tokenExpiresAt:Date.now()+(b.expires_in??21600)*1e3,baseUrl:_}),n()},onOAuthLogout:async()=>{await e({providerId:d,accessToken:``})},onSilentRenew:async()=>{let t=A();if(!t?.refreshToken)return null;let n=await k(t.refreshToken);return n?.access_token?(await e({providerId:d,accessToken:n.access_token,refreshToken:n.refresh_token??t.refreshToken,tokenExpiresAt:Date.now()+(n.expires_in??21600)*1e3}),n.access_token):null}};function L(){i({api:y,stream:P,streamSimple:F})}export{l as XaiErrorCode,u as XaiOAuthError,I as config,L as register};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./event-stream-qbAZIAKV.js";import{a as t,r as n}from"./compat-Spvv5tCW.js";import{R as r,d as i}from"./account-store-CoA-EjrR.js";import{c as a,i as o,r as s,s as c}from"./legacy-api-aliases-CRTuRAqQ.js";import"./provider-settings-DsZhN2JS.js";import{XaiErrorCode as l,XaiOAuthError as u}from"./xai-grok-errors-bnlIBeu-.js";var d=`xai-grok`,f=`https://auth.x.ai`,p=`${f}/oauth2/authorize`,m=`${f}/oauth2/token`,h=`b1a00492-073a-47ea-816f-4c329264a828`,g=`openid profile email offline_access grok-cli:access api:access`,_=`http://127.0.0.1:56121/callback`,v=`http://127.0.0.1:56121/*`,y=`https://api.x.ai/v1`,b=`grok-4.5`,x=`${d}-openai`;function S(){return n(`xai`)}function C(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 w(e){let t=S(),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 "${b}"`),n=t.find(e=>e.id===b),!n))throw Error(`xAI default model "${b}" 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:y}}function T(e){let t=``;for(let n of e)t+=String.fromCharCode(n);return btoa(t).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/,``)}function E(e){let t=new Uint8Array(e);return crypto.getRandomValues(t),t}function D(){return T(E(32))}async function O(e){let t=new TextEncoder().encode(e);return T(new Uint8Array(await crypto.subtle.digest(`SHA-256`,t)))}function k(){return T(E(16))}async function A(e,t){let n=new URLSearchParams({grant_type:`authorization_code`,code:e,redirect_uri:_,client_id:h,code_verifier:t}),r=await fetch(m,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:n});if(!r.ok)throw new u(`xAI token exchange failed: ${r.status} ${await r.text()}`,l.TOKEN_EXCHANGE_FAILED);let i=await r.json();if(!i.access_token)throw new u(`xAI token exchange did not return access_token.`,l.TOKEN_EXCHANGE_INVALID);return i}async function j(e){try{let t=new URLSearchParams({grant_type:`refresh_token`,refresh_token:e,client_id:h}),n=await fetch(m,{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 M(){return i().find(e=>e.providerId===d)}async function N(){let e=M();if(!e?.accessToken)throw new u("Not signed in to xAI Grok — run /login or `oauth-token xai-grok`",l.AUTH_MISSING,!0);let t=e.tokenExpiresAt??0;if(t&&Date.now()+6e4<t)return e.accessToken;if(e.refreshToken){let t=await j(e.refreshToken);if(t?.access_token)return await r({providerId:d,accessToken:t.access_token,refreshToken:t.refresh_token??e.refreshToken,tokenExpiresAt:Date.now()+(t.expires_in??21600)*1e3}),t.access_token}return e.accessToken}function P(e,t){return{type:`error`,reason:`error`,error:{role:`assistant`,content:[],api:x,provider:d,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 F(e,t){return t?{...e??{},"x-grok-conv-id":t}:e}var I=(t,n,r={})=>{let i=e();return(async()=>{try{let e=await N(),a=r.sessionId,c=w(t),l={...r,apiKey:e,headers:F(r.headers,a)},u=c.api===`openai-responses`?o(c,n,l):s(c,n,l);for await(let e of u)i.push(e);i.end()}catch(e){console.error(`[xai-grok] Stream error:`,e instanceof Error?e.message:String(e)),i.push(P(t,e)),i.end()}})(),i},L=(t,n,r)=>{let i=e();return(async()=>{try{let e=await N(),o=r?.sessionId,s=w(t),l={...r,apiKey:e,headers:F(r?.headers,o)},u=s.api===`openai-responses`?a(s,n,l):c(s,n,l);for await(let e of u)i.push(e);i.end()}catch(e){console.error(`[xai-grok] Stream error:`,e instanceof Error?e.message:String(e)),i.push(P(t,e)),i.end()}})(),i},R={id:d,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:b,oauthTokenDomains:[`api.x.ai`,`*.x.ai`,`auth.x.ai`,`accounts.x.ai`],getModelIds:()=>S().map(C),onOAuthLoginIntercepted:async(e,t,n)=>{let i=D(),a=await O(i),o=k(),s=k(),c=new URL(p);c.searchParams.set(`response_type`,`code`),c.searchParams.set(`client_id`,h),c.searchParams.set(`redirect_uri`,_),c.searchParams.set(`scope`,n?.scopes??g),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 f=await e({authorizeUrl:c.toString(),redirectUriPattern:v,onCapture:`close`});if(!f)throw new u(`xAI OAuth login was cancelled or timed out`,l.CALLBACK_TIMEOUT);let m=new URL(f),b=m.searchParams.get(`code`),x=m.searchParams.get(`state`);if(!b)throw new u(`xAI OAuth redirect did not include a code`,l.CODE_MISSING);if(x!==o)throw new u(`xAI OAuth state mismatch — possible CSRF, aborting`,l.STATE_MISMATCH);let S=await A(b,i);await r({providerId:d,accessToken:S.access_token,refreshToken:S.refresh_token,tokenExpiresAt:Date.now()+(S.expires_in??21600)*1e3,baseUrl:y}),t()},onOAuthLogout:async()=>{await r({providerId:d,accessToken:``})},onSilentRenew:async()=>{let e=M();if(!e?.refreshToken)return null;let t=await j(e.refreshToken);return t?.access_token?(await r({providerId:d,accessToken:t.access_token,refreshToken:t.refresh_token??e.refreshToken,tokenExpiresAt:Date.now()+(t.expires_in??21600)*1e3}),t.access_token):null}};function z(){t({api:x,stream:I,streamSimple:L})}export{l as XaiErrorCode,u as XaiOAuthError,R as config,z as register};
|
package/dist/ui/index.html
CHANGED
|
@@ -5,16 +5,18 @@
|
|
|
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-
|
|
8
|
+
<script type="module" crossorigin src="/assets/main-CrR9ucLa.js"></script>
|
|
9
9
|
<link rel="modulepreload" crossorigin href="/assets/modulepreload-polyfill-Dezn_h7o.js">
|
|
10
10
|
<link rel="modulepreload" crossorigin href="/assets/preload-helper-Czpn1I53.js">
|
|
11
11
|
<link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-aKtaBQYM.js">
|
|
12
|
-
<link rel="modulepreload" crossorigin href="/assets/
|
|
12
|
+
<link rel="modulepreload" crossorigin href="/assets/event-stream-qbAZIAKV.js">
|
|
13
|
+
<link rel="modulepreload" crossorigin href="/assets/models-Bnh9VDA1.js">
|
|
13
14
|
<link rel="modulepreload" crossorigin href="/assets/__vite-browser-external-SwrSgYTf.js">
|
|
14
15
|
<link rel="modulepreload" crossorigin href="/assets/provider-env-D37PhSJu.js">
|
|
15
|
-
<link rel="modulepreload" crossorigin href="/assets/
|
|
16
|
+
<link rel="modulepreload" crossorigin href="/assets/openrouter.models-D41M1z_D.js">
|
|
17
|
+
<link rel="modulepreload" crossorigin href="/assets/compat-Spvv5tCW.js">
|
|
16
18
|
<link rel="modulepreload" crossorigin href="/assets/logger-DDBAeTLF.js">
|
|
17
|
-
<link rel="modulepreload" crossorigin href="/assets/context-compaction-
|
|
19
|
+
<link rel="modulepreload" crossorigin href="/assets/context-compaction-CW5AQ9bv.js">
|
|
18
20
|
<link rel="modulepreload" crossorigin href="/assets/src-CS5gSDhT.js">
|
|
19
21
|
<link rel="modulepreload" crossorigin href="/assets/base64-DpPqYZJF.js">
|
|
20
22
|
<link rel="modulepreload" crossorigin href="/assets/runtime-env-DH4NDw4t.js">
|
|
@@ -24,21 +26,21 @@
|
|
|
24
26
|
<link rel="modulepreload" crossorigin href="/assets/port-bridge-client-CoFZLSYm.js">
|
|
25
27
|
<link rel="modulepreload" crossorigin href="/assets/secrets-bridge-client-D6nwnBvr.js">
|
|
26
28
|
<link rel="modulepreload" crossorigin href="/assets/tool-ui-DfXu6quJ.js">
|
|
27
|
-
<link rel="modulepreload" crossorigin href="/assets/providers-
|
|
29
|
+
<link rel="modulepreload" crossorigin href="/assets/providers-u1yhVbk3.js">
|
|
28
30
|
<link rel="modulepreload" crossorigin href="/assets/panel-rpc-DmJSNs0I.js">
|
|
29
|
-
<link rel="modulepreload" crossorigin href="/assets/transform-messages-
|
|
30
|
-
<link rel="modulepreload" crossorigin href="/assets/bedrock-camp-
|
|
31
|
-
<link rel="modulepreload" crossorigin href="/assets/account-store-
|
|
31
|
+
<link rel="modulepreload" crossorigin href="/assets/transform-messages-wECJwtH0.js">
|
|
32
|
+
<link rel="modulepreload" crossorigin href="/assets/bedrock-camp-PMQ4Iu6f.js">
|
|
33
|
+
<link rel="modulepreload" crossorigin href="/assets/account-store-CoA-EjrR.js">
|
|
32
34
|
<link rel="modulepreload" crossorigin href="/assets/electron-overlay-route-CjT6k9Df.js">
|
|
33
35
|
<link rel="modulepreload" crossorigin href="/assets/bridge-launch-params-jegYRGJ6.js">
|
|
34
36
|
<link rel="modulepreload" crossorigin href="/assets/messages-BD4p8GuF.js">
|
|
35
37
|
<link rel="modulepreload" crossorigin href="/assets/tray-runtime-config-DquE2Rx9.js">
|
|
36
|
-
<link rel="modulepreload" crossorigin href="/assets/setup-sudo-
|
|
38
|
+
<link rel="modulepreload" crossorigin href="/assets/setup-sudo-CDu03XrJ.js">
|
|
37
39
|
<link rel="modulepreload" crossorigin href="/assets/telemetry-C8rZr13D.js">
|
|
38
40
|
<link rel="modulepreload" crossorigin href="/assets/tray-follower-status-CyJIKXH4.js">
|
|
39
41
|
<link rel="modulepreload" crossorigin href="/assets/clipboard-DuHpK59o.js">
|
|
40
42
|
<link rel="modulepreload" crossorigin href="/assets/tray-join-url-BIvzbiFR.js">
|
|
41
|
-
<link rel="modulepreload" crossorigin href="/assets/provider-settings-
|
|
43
|
+
<link rel="modulepreload" crossorigin href="/assets/provider-settings-DsZhN2JS.js">
|
|
42
44
|
</head>
|
|
43
45
|
<body>
|
|
44
46
|
<div id="app"></div>
|
|
@@ -5,16 +5,18 @@
|
|
|
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-
|
|
8
|
+
<script type="module" crossorigin src="/assets/main-CrR9ucLa.js"></script>
|
|
9
9
|
<link rel="modulepreload" crossorigin href="/assets/modulepreload-polyfill-Dezn_h7o.js">
|
|
10
10
|
<link rel="modulepreload" crossorigin href="/assets/preload-helper-Czpn1I53.js">
|
|
11
11
|
<link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-aKtaBQYM.js">
|
|
12
|
-
<link rel="modulepreload" crossorigin href="/assets/
|
|
12
|
+
<link rel="modulepreload" crossorigin href="/assets/event-stream-qbAZIAKV.js">
|
|
13
|
+
<link rel="modulepreload" crossorigin href="/assets/models-Bnh9VDA1.js">
|
|
13
14
|
<link rel="modulepreload" crossorigin href="/assets/__vite-browser-external-SwrSgYTf.js">
|
|
14
15
|
<link rel="modulepreload" crossorigin href="/assets/provider-env-D37PhSJu.js">
|
|
15
|
-
<link rel="modulepreload" crossorigin href="/assets/
|
|
16
|
+
<link rel="modulepreload" crossorigin href="/assets/openrouter.models-D41M1z_D.js">
|
|
17
|
+
<link rel="modulepreload" crossorigin href="/assets/compat-Spvv5tCW.js">
|
|
16
18
|
<link rel="modulepreload" crossorigin href="/assets/logger-DDBAeTLF.js">
|
|
17
|
-
<link rel="modulepreload" crossorigin href="/assets/context-compaction-
|
|
19
|
+
<link rel="modulepreload" crossorigin href="/assets/context-compaction-CW5AQ9bv.js">
|
|
18
20
|
<link rel="modulepreload" crossorigin href="/assets/src-CS5gSDhT.js">
|
|
19
21
|
<link rel="modulepreload" crossorigin href="/assets/base64-DpPqYZJF.js">
|
|
20
22
|
<link rel="modulepreload" crossorigin href="/assets/runtime-env-DH4NDw4t.js">
|
|
@@ -24,21 +26,21 @@
|
|
|
24
26
|
<link rel="modulepreload" crossorigin href="/assets/port-bridge-client-CoFZLSYm.js">
|
|
25
27
|
<link rel="modulepreload" crossorigin href="/assets/secrets-bridge-client-D6nwnBvr.js">
|
|
26
28
|
<link rel="modulepreload" crossorigin href="/assets/tool-ui-DfXu6quJ.js">
|
|
27
|
-
<link rel="modulepreload" crossorigin href="/assets/providers-
|
|
29
|
+
<link rel="modulepreload" crossorigin href="/assets/providers-u1yhVbk3.js">
|
|
28
30
|
<link rel="modulepreload" crossorigin href="/assets/panel-rpc-DmJSNs0I.js">
|
|
29
|
-
<link rel="modulepreload" crossorigin href="/assets/transform-messages-
|
|
30
|
-
<link rel="modulepreload" crossorigin href="/assets/bedrock-camp-
|
|
31
|
-
<link rel="modulepreload" crossorigin href="/assets/account-store-
|
|
31
|
+
<link rel="modulepreload" crossorigin href="/assets/transform-messages-wECJwtH0.js">
|
|
32
|
+
<link rel="modulepreload" crossorigin href="/assets/bedrock-camp-PMQ4Iu6f.js">
|
|
33
|
+
<link rel="modulepreload" crossorigin href="/assets/account-store-CoA-EjrR.js">
|
|
32
34
|
<link rel="modulepreload" crossorigin href="/assets/electron-overlay-route-CjT6k9Df.js">
|
|
33
35
|
<link rel="modulepreload" crossorigin href="/assets/bridge-launch-params-jegYRGJ6.js">
|
|
34
36
|
<link rel="modulepreload" crossorigin href="/assets/messages-BD4p8GuF.js">
|
|
35
37
|
<link rel="modulepreload" crossorigin href="/assets/tray-runtime-config-DquE2Rx9.js">
|
|
36
|
-
<link rel="modulepreload" crossorigin href="/assets/setup-sudo-
|
|
38
|
+
<link rel="modulepreload" crossorigin href="/assets/setup-sudo-CDu03XrJ.js">
|
|
37
39
|
<link rel="modulepreload" crossorigin href="/assets/telemetry-C8rZr13D.js">
|
|
38
40
|
<link rel="modulepreload" crossorigin href="/assets/tray-follower-status-CyJIKXH4.js">
|
|
39
41
|
<link rel="modulepreload" crossorigin href="/assets/clipboard-DuHpK59o.js">
|
|
40
42
|
<link rel="modulepreload" crossorigin href="/assets/tray-join-url-BIvzbiFR.js">
|
|
41
|
-
<link rel="modulepreload" crossorigin href="/assets/provider-settings-
|
|
43
|
+
<link rel="modulepreload" crossorigin href="/assets/provider-settings-DsZhN2JS.js">
|
|
42
44
|
</head>
|
|
43
45
|
<body>
|
|
44
46
|
<div id="app"></div>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sliccy",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.68.0",
|
|
4
4
|
"description": "Browser-based coding agent with thin CLI server",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -88,7 +88,8 @@
|
|
|
88
88
|
"postinstall": "if [ -d patches ]; then npx --no-install patch-package || { echo \"ERROR: patches/ present but patch-package not installed (run a full 'npm ci' incl. devDependencies)\"; exit 1; }; fi && if [ -d packages/shared-ts ]; then npm run build -w @slicc/shared-ts; fi && if [ -d packages/cloud-core ]; then npm run build -w @slicc/cloud-core; fi && if [ -d packages/spoon ]; then npm run build -w @ai-ecoverse/spoon; fi && if [ -d packages/webcomponents ]; then npm run build -w @slicc/webcomponents; fi && if [ -d packages/cherry ]; then npm run build -w @ai-ecoverse/cherry; fi",
|
|
89
89
|
"prepare": "husky",
|
|
90
90
|
"lint:no-raw-chrome-runtime-id": "node packages/dev-tools/tools/check-no-raw-chrome-runtime-id.mjs",
|
|
91
|
-
"lint:hosted-origin": "node packages/dev-tools/tools/check-hosted-origin-literal.mjs"
|
|
91
|
+
"lint:hosted-origin": "node packages/dev-tools/tools/check-hosted-origin-literal.mjs",
|
|
92
|
+
"verify": "bash packages/dev-tools/tools/pre-push-lint-gate.sh"
|
|
92
93
|
},
|
|
93
94
|
"dependencies": {
|
|
94
95
|
"e2b": "^2.35.0",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./py-realm-worker-VuYxvTG9.js";var t=e(((e,t)=>{t.exports={}}));export default t();
|