sliccy 6.243.1 → 6.243.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ui/.vite/manifest.json +216 -216
- package/dist/ui/assets/{account-store-BJFsDWSZ.js → account-store-DavMHU4r.js} +1 -1
- package/dist/ui/assets/{account-store-lkEr3iIk.js → account-store-OAze3utw.js} +1 -1
- package/dist/ui/assets/{adobe-DeyS89Z1.js → adobe-CH34ZyZi.js} +1 -1
- package/dist/ui/assets/{adobe-DDodE_vF.js → adobe-D6OcJBBT.js} +1 -1
- package/dist/ui/assets/{agent-panels-C4RG9Ub_.js → agent-panels-CelkEdi9.js} +1 -1
- package/dist/ui/assets/{almost-bash-shell-headless-D0VY87gL.js → almost-bash-shell-headless-65Yqm6IC.js} +12 -12
- package/dist/ui/assets/{apply-layout-CYyV9fun.js → apply-layout-DPEleZz2.js} +1 -1
- package/dist/ui/assets/{azure-openai-BgFnoIfA.js → azure-openai-32F2rdBU.js} +1 -1
- package/dist/ui/assets/{azure-openai-UDS64Pms.js → azure-openai-C8BzsUm0.js} +1 -1
- package/dist/ui/assets/{cdp-C7gI7nwi.js → cdp-Br2ndzi3.js} +1 -1
- package/dist/ui/assets/{cerebras-DRfIpjta.js → cerebras-DfpflWWB.js} +1 -1
- package/dist/ui/assets/{cerebras-BE_VnaBM.js → cerebras-DtLqBhyz.js} +1 -1
- package/dist/ui/assets/{composer-speech-CEmutNrx.js → composer-speech-DK0XRoq3.js} +1 -1
- package/dist/ui/assets/{connect-surface-n0caH6ih.js → connect-surface-BpnrnNX9.js} +1 -1
- package/dist/ui/assets/{core-C--iyWKC.js → core-C3diKI3_.js} +1 -1
- package/dist/ui/assets/{directed-approval-zbsK6TVp.js → directed-approval-gXEtjPGM.js} +1 -1
- package/dist/ui/assets/{dist-BJx1GM3O.js → dist-CehypiRP.js} +1 -1
- package/dist/ui/assets/{dist-C66UNY2L.js → dist-Co7WrkVS.js} +1 -1
- package/dist/ui/assets/{dist--2RE4W9O.js → dist-CzUXmzlP.js} +1 -1
- package/dist/ui/assets/{dist-CqRNl2Ki.js → dist-OGhVX23P.js} +1 -1
- package/dist/ui/assets/{emscripten-vfs-hook-wFB8snre.js → emscripten-vfs-hook-C5ygtdNh.js} +1 -1
- package/dist/ui/assets/{frozen-archive-writer-BJ0wJaR_.js → frozen-archive-writer-CxOraREp.js} +1 -1
- package/dist/ui/assets/{frozen-archive-writer-AC06UCUb.js → frozen-archive-writer-DxdIIiWU.js} +1 -1
- package/dist/ui/assets/{frozen-session-delete-Bapa2Gei.js → frozen-session-delete-DRfrrQHj.js} +1 -1
- package/dist/ui/assets/{frozen-session-identity-bJgy_hch.js → frozen-session-identity-DHkq6CVA.js} +1 -1
- package/dist/ui/assets/{frozen-session-identity-CkIXB5VV.js → frozen-session-identity-DN7rO8YY.js} +1 -1
- package/dist/ui/assets/{gelatiere-unit-B220kXOx.js → gelatiere-unit-BWm1W4_I.js} +1 -1
- package/dist/ui/assets/{github-cdKZ9rew.js → github-BMnrT4Yf.js} +1 -1
- package/dist/ui/assets/{github-eHNRFngi.js → github-DBWTr5xg.js} +1 -1
- package/dist/ui/assets/{github-copilot-CtFv69wt.js → github-copilot-CReg0FfB.js} +1 -1
- package/dist/ui/assets/{github-copilot-LZz_GzBE.js → github-copilot-D6McKfnz.js} +1 -1
- package/dist/ui/assets/{guest-tool-gate-D5-Z-l4h.js → guest-tool-gate-BNo9y_Uv.js} +1 -1
- package/dist/ui/assets/{hear-pXmVzEZn.js → hear-cwnbPcy1.js} +1 -1
- package/dist/ui/assets/{image-processor-BlI3KRoz.js → image-processor-C15fHQoW.js} +1 -1
- package/dist/ui/assets/{index-kP-kVY3-.js → index-C9xmWnPK.js} +1900 -1885
- package/dist/ui/assets/{interrupted-work-recovery-Bc8UHznp.js → interrupted-work-recovery-Dbckx3Ur.js} +1 -1
- package/dist/ui/assets/{js-realm-worker-BHWkeaRb.js → js-realm-worker-DexiS1kr.js} +2 -2
- package/dist/ui/assets/{jsh-executor-D5qCzMEP.js → jsh-executor-BmjWQTfd.js} +2 -2
- package/dist/ui/assets/{kernel-worker-DX2Vi4XK.js → kernel-worker-DmM9pRNV.js} +9 -9
- package/dist/ui/assets/{lick-ws-bridge-Bz2aGwwC.js → lick-ws-bridge-ClpYrG_z.js} +1 -1
- package/dist/ui/assets/{lick-ws-bridge-Cwu5ARV0.js → lick-ws-bridge-sowukdrb.js} +1 -1
- package/dist/ui/assets/{live-session-curation-DUES5Svq.js → live-session-curation-CDrfX18C.js} +1 -1
- package/dist/ui/assets/{live-session-curation-fTEz4CoK.js → live-session-curation-zkh_Wkc7.js} +1 -1
- package/dist/ui/assets/{live-session-snapshot-bb0C0N-W.js → live-session-snapshot-BcRA8Xxe.js} +1 -1
- package/dist/ui/assets/{local-llm-CTsTPsNd.js → local-llm-BXdO_Xjk.js} +1 -1
- package/dist/ui/assets/{local-llm-DB1N4OCh.js → local-llm-tCEdVhm-.js} +1 -1
- package/dist/ui/assets/magick-wasm-i1MzN-IS.js +43 -0
- package/dist/ui/assets/{main-C73xRKFo.js → main-C90hD8JI.js} +3 -3
- package/dist/ui/assets/{main-cherry-B9oR_G-Y.js → main-cherry-D0_KUuC2.js} +1 -1
- package/dist/ui/assets/{mcp-command-BPfD2_6b.js → mcp-command-D1TQKEy4.js} +10 -10
- package/dist/ui/assets/{memory-curation-seam-CozbYrLJ.js → memory-curation-seam-BCrJp59X.js} +1 -1
- package/dist/ui/assets/{memory-health-Cuk7kP_b.js → memory-health-CFkCVATs.js} +1 -1
- package/dist/ui/assets/{memory-write-execute-DIOFNKgy.js → memory-write-execute-DJFsDfaR.js} +1 -1
- package/dist/ui/assets/{merge-folded-cost-into-frozen-DpNuVfvC.js → merge-folded-cost-into-frozen-CMO0DoXu.js} +1 -1
- package/dist/ui/assets/{new-session-TuTnf9kl.js → new-session-65D5H5Af.js} +2 -2
- package/dist/ui/assets/{oauth-bootstrap-DhPvV_hP.js → oauth-bootstrap-CVpyXhcC.js} +2 -2
- package/dist/ui/assets/{onboarding-orchestrator-ykxRS08c.js → onboarding-orchestrator-Dfzs-pFR.js} +1 -1
- package/dist/ui/assets/{openai-codex-BNDFbVKG.js → openai-codex-C22er4Pe.js} +1 -1
- package/dist/ui/assets/{openai-codex-B1Aep-z0.js → openai-codex-D-mUhIVy.js} +1 -1
- package/dist/ui/assets/{openrouter-CdJmtj-O.js → openrouter-BAErbpit.js} +1 -1
- package/dist/ui/assets/{openrouter-DKiybt03.js → openrouter-BB8Y8x3t.js} +1 -1
- package/dist/ui/assets/{openrouter-free-DEybPXcr.js → openrouter-free-BBShyP-b.js} +1 -1
- package/dist/ui/assets/{openrouter-free-Bz1T5U6K.js → openrouter-free-GQPkxIFG.js} +1 -1
- package/dist/ui/assets/{openrouter-oauth-1TO_HmLs.js → openrouter-oauth-wqXJrvZA.js} +1 -1
- package/dist/ui/assets/{openrouter-oauth-ObOCcBI7.js → openrouter-oauth-y1sOSAEE.js} +1 -1
- package/dist/ui/assets/{panel-rpc-handlers-CAL-BoZZ.js → panel-rpc-handlers-BD1IR7cj.js} +2 -2
- package/dist/ui/assets/{panelize-shell-x6YI93kr.js → panelize-shell-I8zPEKJM.js} +1 -1
- package/dist/ui/assets/{pi-edit-execution-Bb3EQRID.js → pi-edit-execution-CYm_AVKO.js} +1 -1
- package/dist/ui/assets/{provider-DdIRzZ8L.js → provider-Cr6BSFYJ.js} +1 -1
- package/dist/ui/assets/{provider-CJvEJd5h.js → provider-P--IxCQK.js} +1 -1
- package/dist/ui/assets/{provider-settings-C4MXTmad.js → provider-settings-CdQOc0ui.js} +1 -1
- package/dist/ui/assets/provider-store-access-B9j5FUuy.js +1 -0
- package/dist/ui/assets/provider-store-access-Cg5pbLbN.js +1 -0
- package/dist/ui/assets/{providers-CRbfL8DM.js → providers-C4_lEdVe.js} +2 -2
- package/dist/ui/assets/{providers-CRj5SAmh.js → providers-CxPkFUlz.js} +1 -1
- package/dist/ui/assets/{quick-llm-BGid1Nfi.js → quick-llm-BEV4p0nB.js} +1 -1
- package/dist/ui/assets/{realm-inprocess-DCzva8DF.js → realm-inprocess-DV-Xw5BZ.js} +2 -2
- package/dist/ui/assets/{realm-unhandled-rejections-BTpsYElo.js → realm-unhandled-rejections-BxEidS8a.js} +1 -1
- package/dist/ui/assets/{realm-unhandled-rejections-C7iRoy1c.js → realm-unhandled-rejections-DBWhxPd7.js} +1 -1
- package/dist/ui/assets/{recovery-screen-AGpbQeDv.js → recovery-screen-CweL0z_8.js} +1 -1
- package/dist/ui/assets/{remote-terminal-view-ClSeTi_D.js → remote-terminal-view-hCBfSTM_.js} +2 -2
- package/dist/ui/assets/{restore-BlXpjaKV.js → restore-p_0PYYqq.js} +1 -1
- package/dist/ui/assets/{run-DFuHxEdU.js → run-BIDp3M3h.js} +2 -2
- package/dist/ui/assets/{run-DO1mPczq.js → run-CW1TUsgu.js} +2 -2
- package/dist/ui/assets/{run-Chzm2K9l.js → run-Cl1AE5gC.js} +1 -1
- package/dist/ui/assets/{run-Y91MeFjE.js → run-DWPGdwY8.js} +1 -1
- package/dist/ui/assets/{serve-command-DpK9bAXS.js → serve-command-DpIfibWZ.js} +2 -2
- package/dist/ui/assets/{serve-runtime-Du96324Z.js → serve-runtime-8nNpxK2U.js} +1 -1
- package/dist/ui/assets/{session-command-memory-B_cbA6Yh.js → session-command-memory-B8KumfcH.js} +2 -2
- package/dist/ui/assets/{session-jsonl-C_ljwRsC.js → session-jsonl-Aeyy6bYO.js} +1 -1
- package/dist/ui/assets/{session-jsonl-C-wpqHB3.js → session-jsonl-fTJAJBSj.js} +1 -1
- package/dist/ui/assets/{session-search-index-B1xJARqI.js → session-search-index-BBxWBvag.js} +1 -1
- package/dist/ui/assets/{setup-feature-flags-remote-CcrXeFlK.js → setup-feature-flags-remote-D47csfRr.js} +1 -1
- package/dist/ui/assets/{setup-model-catalog-Dk0F9aSl.js → setup-model-catalog-CZW4Je4-.js} +1 -1
- package/dist/ui/assets/{silent-renew-backoff-NioGtMUC.js → silent-renew-backoff-B15ufbQP.js} +1 -1
- package/dist/ui/assets/{slicc-editor-DvUervn4.js → slicc-editor-CdEm4LHg.js} +3 -3
- package/dist/ui/assets/slicc-editor-DAaLAf5t.js +1 -0
- package/dist/ui/assets/slicc-version-BwLtS93H.js +1 -0
- package/dist/ui/assets/{soundscape-C2fNkDar.js → soundscape-DW-72Z0Y.js} +1 -1
- package/dist/ui/assets/{speak-PgRd2MYk.js → speak-B35W0TfW.js} +1 -1
- package/dist/ui/assets/{sprinkle-manager-Bek-iKlj.js → sprinkle-manager-B_goFSKM.js} +1 -1
- package/dist/ui/assets/{sprinkle-renderer-Cq--FJDO.js → sprinkle-renderer-DrMbnBY8.js} +3 -3
- package/dist/ui/assets/{sudo-CKnHwVs3.js → sudo-DUfFewQM.js} +1 -1
- package/dist/ui/assets/{supervisor-BvSLhIJl.js → supervisor-IVQpQaoF.js} +1 -1
- package/dist/ui/assets/{sync-dialog-BI1IAovz.js → sync-dialog-hpYw1TvP.js} +1 -1
- package/dist/ui/assets/{transformers-env-heAPSI7s.js → transformers-env-CJUqiPAP.js} +1 -1
- package/dist/ui/assets/{tray-leader-CL2QWqNl.js → tray-leader-DlYEWBqw.js} +1 -1
- package/dist/ui/assets/{tray-leave-runtime-bMGBnwb7.js → tray-leave-runtime-C9mN6hrw.js} +1 -1
- package/dist/ui/assets/{tray-sidecar-TWF8cm6D.js → tray-sidecar-ClkEe5Fi.js} +1 -1
- package/dist/ui/assets/{turn-journal-BJ3lAG7q.js → turn-journal-S3k7L0u2.js} +1 -1
- package/dist/ui/assets/{upgrade-detection-BCaBJ0pj.js → upgrade-detection-C7F6yis9.js} +1 -1
- package/dist/ui/assets/{voice-reply-xDtxF1e9.js → voice-reply-BUruZfw2.js} +1 -1
- package/dist/ui/assets/{wc-attach-Dl_c7G9f.js → wc-attach-B9M8p68t.js} +2 -2
- package/dist/ui/assets/{wc-browser-B1ERSJW9.js → wc-browser-gzvFw0m9.js} +1 -1
- package/dist/ui/assets/{wc-computers-BfIFM0hI.js → wc-computers-BxDAqYcl.js} +1 -1
- package/dist/ui/assets/{wc-detached-C13Al4oU.js → wc-detached-BrZ2M-6i.js} +1 -1
- package/dist/ui/assets/{wc-extension-Dh6SLGz5.js → wc-extension-Del7KWdu.js} +2 -2
- package/dist/ui/assets/{wc-follower-BzTYSMq0.js → wc-follower-J3wUyIaU.js} +3 -3
- package/dist/ui/assets/{wc-follower-oauth-ZzvxpowO.js → wc-follower-oauth-BuTKO9Gk.js} +1 -1
- package/dist/ui/assets/{wc-gelatiere-CzSC1zFW.js → wc-gelatiere-IFw93RLp.js} +1 -1
- package/dist/ui/assets/{wc-live-DSX8s_4R.js → wc-live-DISxqg6I.js} +5 -5
- package/dist/ui/assets/{wc-nav-Vr1F6uQc.js → wc-nav-CaScAx72.js} +2 -2
- package/dist/ui/assets/{wc-onboarding-DkovNDTy.js → wc-onboarding-C4vdCBGl.js} +2 -2
- package/dist/ui/assets/{wc-permissions-BRINha4S.js → wc-permissions-CC3l81OG.js} +2 -2
- package/dist/ui/assets/{wc-placeholder-CyAKwXOu.js → wc-placeholder-DolUSoJ8.js} +3 -3
- package/dist/ui/assets/{wc-secret-request-5SBbXCyp.js → wc-secret-request-h-lUD0ld.js} +1 -1
- package/dist/ui/assets/{wc-settings-Bw7Izcrk.js → wc-settings-4-zYg_pr.js} +3 -3
- package/dist/ui/assets/{wc-shell-DuUMUsfJ.js → wc-shell-C6n7vd_q.js} +3 -3
- package/dist/ui/assets/{wc-shortcut-config-C9iY0tja.js → wc-shortcut-config-BWd5_aec.js} +1 -1
- package/dist/ui/assets/{wc-sprinkles-BRbD_nG_.js → wc-sprinkles-DN29B4nE.js} +2 -2
- package/dist/ui/assets/{wc-transcript-export-Dx8FT2HA.js → wc-transcript-export-Dq42EPas.js} +2 -2
- package/dist/ui/assets/{wc-tray-D32PCpWc.js → wc-tray-D4fcmhCE.js} +4 -4
- package/dist/ui/assets/welcome-detection-CEIbJtw5.js +1 -0
- package/dist/ui/assets/{whisper-session-CeHEZu8f.js → whisper-session-D_xswc3a.js} +2 -2
- package/dist/ui/assets/{xai-grok-CgqeLG-2.js → xai-grok-OcwjrOgK.js} +1 -1
- package/dist/ui/assets/{xai-grok-CoGq6C-X.js → xai-grok-zmcXuGP7.js} +1 -1
- package/dist/ui/index.html +3 -3
- package/dist/ui/packages/webapp/index.html +3 -3
- package/dist/ui/slicc-editor.js +1 -1
- package/package.json +1 -1
- package/dist/ui/assets/magick-wasm-BbnwhVj1.js +0 -43
- package/dist/ui/assets/provider-store-access-Baic2oBa.js +0 -1
- package/dist/ui/assets/provider-store-access-BvztSrUA.js +0 -1
- package/dist/ui/assets/slicc-editor-ClPmdhB1.js +0 -1
- package/dist/ui/assets/slicc-version-QI-OWNWp.js +0 -1
- package/dist/ui/assets/welcome-detection-XGuofChI.js +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/setup-feature-flags-remote-
|
|
2
|
-
import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import"./modulepreload-polyfill-P2Xu9kJm.js";import{t}from"./preload-helper-Czpn1I53.js";import{t as n}from"./logger-DDBAeTLF.js";import"./core-DzRw0pz2.js";import{i as r}from"./feature-flags-DvsApnS-.js";import{a as i,i as a,n as o,o as s,r as c,t as l}from"./bridge-protocol-C52CnDIj.js";import{A as u,B as d,C as f,D as p,E as m,F as h,G as g,H as _,I as v,J as y,K as b,L as x,M as S,N as C,O as ee,P as te,Q as ne,R as re,S as ie,T as w,U as ae,V as oe,W as se,X as ce,Y as le,Z as ue,_ as de,a as fe,b as pe,c as me,d as he,f as ge,g as _e,h as ve,i as ye,j as be,k as xe,l as Se,m as Ce,n as T,o as we,p as Te,q as Ee,r as De,s as Oe,t as ke,u as E,v as Ae,w as je,x as Me,y as Ne,z as Pe}from"./account-store-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/setup-feature-flags-remote-D47csfRr.js","assets/feature-flags-DvsApnS-.js","assets/sudo-DUfFewQM.js","assets/preload-helper-Czpn1I53.js","assets/logger-DDBAeTLF.js","assets/quick-llm-BEV4p0nB.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/compat-0YnuwvMn.js","assets/models-D9KYIFyv.js","assets/diagnostics-B-5VkVir.js","assets/env-api-keys-BMbk-OAv.js","assets/provider-env-CTOcDKrQ.js","assets/__vite-browser-external-5eBdwsFd.js","assets/openrouter.models-C88RzzVZ.js","assets/azure-openai-config--zABV6W_.js","assets/utf16-clip-CGL7omVm.js","assets/account-store-OAze3utw.js","assets/core-DzRw0pz2.js","assets/proxied-fetch-4VBgrEIu.js","assets/base64-ELzoYfwP.js","assets/proxy-error-BSFYY7jj.js","assets/api-endpoint-DuEQRZ4g.js","assets/runtime-env-Dlaokqg1.js","assets/secret-topology-hMRoGGjt.js","assets/float-topology-C_iRKPQK.js","assets/secrets-bridge-client-D734Xx8G.js","assets/port-bridge-client-B-gpiOVR.js","assets/panel-rpc-accessor-B4BfPLSo.js","assets/image-markers-q8JQTtid.js","assets/tool-ui-eSQ1g2I1.js","assets/providers-C4_lEdVe.js","assets/stored-accounts-ChNHYF68.js","assets/bedrock-camp-compat-B1oHsbyo.js","assets/bedrock-camp-extra-models-Df3uDddz.js","assets/claude-model-version-3MWQoaco.js","assets/renamed-providers-DDe6My59.js","assets/llm-session-id-bZQs6gBN.js","assets/icons-BJTFywJo.js","assets/types-DSxCdZw6.js","assets/approval-decision-BvumWm-U.js","assets/capability-6V-AYPSJ.js","assets/page-approval-service-ja6kjLj8.js","assets/extension-bridge-transport-B-i9vQpb.js","assets/pending-request-table-k-D7ZZsL.js","assets/lick-ws-bridge-sowukdrb.js","assets/tray-leader-DlYEWBqw.js","assets/logger-BoSvu4mW.js","assets/cdp-Br2ndzi3.js","assets/navigation-watcher-CPcnZL9l.js","assets/bridge-protocol-C52CnDIj.js","assets/wc-follower-oauth-BuTKO9Gk.js","assets/wc-shell-C6n7vd_q.js","assets/mime-types-D0xZwlMO.js","assets/same-file-identity-OexpsaSD.js","assets/telemetry-B0sKnLBU.js","assets/types-D8gIX-W-.js","assets/wc-shell-WkeczD9x.css","assets/sprinkle-renderer-DrMbnBY8.js","assets/permissions-surface-registry-CilCRwhh.js","assets/hid-device-registry-B2R-0rNt.js","assets/serial-port-registry-CCqklAEr.js","assets/hid-operations-C97SZtrY.js","assets/usb-device-registry--JwKRTYp.js","assets/usb-operations-v1mGAdRY.js","assets/shared-DSEuryGJ.js","assets/theme-CwPIBqJE.js","assets/theme-engine-ZV7CeqWw.js","assets/slicc-app-url-BKHBBuTR.js","assets/transcript-export-DP-r8eDz.js","assets/tray-follower-status-BAjnN7Ar.js","assets/record-DtD74Jn0.js","assets/export-spool-CuNzzI8a.js","assets/src-BWaKqLvQ.js","assets/main-cherry-D0_KUuC2.js","assets/synthetic-cdp-transport-OUVdC4zy.js","assets/oauth-service-GpUOM3Aw.js","assets/setup-model-catalog-CZW4Je4-.js","assets/wc-follower-J3wUyIaU.js","assets/wc-live-DISxqg6I.js","assets/slugify-BYJ6QVAt.js","assets/frozen-archive-writer-CxOraREp.js","assets/provider-budget-LCzMPlKv.js","assets/browser-Chc3wUwj.js","assets/descriptor-1ECGTjSt.js","assets/types-CFfBWsH5.js","assets/frozen-session-identity-DHkq6CVA.js","assets/session-jsonl-Aeyy6bYO.js","assets/live-session-curation-zkh_Wkc7.js","assets/thinking-level-DCJktR5U.js","assets/wc-unit-context-D5liISq3.js","assets/wc-sprinkles-DN29B4nE.js","assets/wc-attach-B9M8p68t.js","assets/wc-permissions-CC3l81OG.js","assets/oauth-bootstrap-CVpyXhcC.js","assets/legacy-styles-B3nS5QUo.js","assets/connect-surface-BpnrnNX9.js","assets/wc-extension-Del7KWdu.js","assets/wc-detached-BrZ2M-6i.js","assets/recovery-screen-CweL0z_8.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import"./modulepreload-polyfill-P2Xu9kJm.js";import{t}from"./preload-helper-Czpn1I53.js";import{t as n}from"./logger-DDBAeTLF.js";import"./core-DzRw0pz2.js";import{i as r}from"./feature-flags-DvsApnS-.js";import{a as i,i as a,n as o,o as s,r as c,t as l}from"./bridge-protocol-C52CnDIj.js";import{A as u,B as d,C as f,D as p,E as m,F as h,G as g,H as _,I as v,J as y,K as b,L as x,M as S,N as C,O as ee,P as te,Q as ne,R as re,S as ie,T as w,U as ae,V as oe,W as se,X as ce,Y as le,Z as ue,_ as de,a as fe,b as pe,c as me,d as he,f as ge,g as _e,h as ve,i as ye,j as be,k as xe,l as Se,m as Ce,n as T,o as we,p as Te,q as Ee,r as De,s as Oe,t as ke,u as E,v as Ae,w as je,x as Me,y as Ne,z as Pe}from"./account-store-OAze3utw.js";import"./proxied-fetch-4VBgrEIu.js";import{n as D,t as O}from"./runtime-env-Dlaokqg1.js";import{c as Fe,d as Ie,l as Le,n as Re,o as ze,s as Be,t as Ve,u as He}from"./api-endpoint-DuEQRZ4g.js";import{o as Ue,t as We}from"./telemetry-B0sKnLBU.js";import{a as Ge}from"./providers-C4_lEdVe.js";import{t as Ke}from"./stored-accounts-ChNHYF68.js";import{t as qe}from"./tray-follower-status-BAjnN7Ar.js";import{n as Je}from"./clipboard-eqmn97SP.js";var Ye=`role`;function Xe(e){return typeof e==`object`&&!!e&&`source`in e&&`payload`in e&&typeof e.source==`string`}function Ze(e){if(!e)return!1;let t=e.startsWith(`[`)&&e.endsWith(`]`)?e.slice(1,-1):e;return!!(t===`localhost`||t===`::1`||/^127(\.\d{1,3}){3}$/.test(t))}var k=`tray`,Qe=`trayWorkerUrl`,$e=`lead`;function A(e){if(!e)return null;try{let t=new URL(e.trim());t.search=``,t.hash=``,t.pathname!==`/`&&(t.pathname=t.pathname.replace(/\/+$/,``)||`/`);let n=t.toString();return n.endsWith(`/`)?n.slice(0,-1):n}catch{return null}}function et(e){if(!e)return null;try{let t=new URL(e.trim());t.search=``,t.hash=``;let n=t.toString(),r=t.pathname.split(`/`).filter(Boolean);if(r.length<2||r.at(-2)!==`join`)return null;let[i,a,...o]=decodeURIComponent(r.at(-1)).split(`.`);if(!i||!a||o.length>0)return null;r.splice(-2,2),t.pathname=r.length>0?`/${r.join(`/`)}`:`/`;let s=A(t.toString());return s?{workerBaseUrl:s,trayId:i,joinUrl:n}:null}catch{return null}}function tt(e,t){let n=new URL(e);return n.searchParams.delete(Qe),n.searchParams.delete($e),n.searchParams.set(k,t),n.toString()}function nt(e){try{let t=new URL(e);return`${t.protocol===`wss:`?`https:`:`http:`}//${t.host}`}catch{return null}}function rt(e){try{let t=new URL(e);return`${t.protocol}//${t.host}/licks-ws`}catch{return null}}function it(e){let t;try{t=new URLSearchParams(e)}catch{return null}let n=t.get(a),r=t.get(c);if(!n||!r||!/^wss?:\/\//.test(n))return null;let i;try{i=new URL(n).hostname}catch{return null}if(!Ze(i))return null;let o=t.get(Ye),s=o===`leader`||o===`follower`?o:null;return{url:n,subprotocol:`${l}${r}`,token:r,apiBaseUrl:nt(n),lickWsUrl:rt(n),role:s}}var at=`slicc:bridge-config`,ot=`slicc:extension-delegate-config`;function st(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.type===`slicc:ext-fetch`&&typeof t.extensionId==`string`&&!!t.request&&typeof t.request==`object`}var ct=n(`boot/ext-fetch-delegate`);function lt(){let e=globalThis.chrome?.runtime;return e&&typeof e.connect==`function`?e:null}function ut(e,t,n){let r=lt();if(!r){try{t.postMessage({type:`response-error`,error:`extension-delegate: chrome.runtime.connect unavailable`})}catch{}t.close();return}let i=e.extensionId||n,a;try{a=r.connect(i,{name:`fetch-proxy.fetch`})}catch(e){try{t.postMessage({type:`response-error`,error:`extension-delegate: connect failed — ${e instanceof Error?e.message:String(e)}`})}catch{}t.close();return}let o=!1,s=()=>{o=!0;try{a.disconnect()}catch{}try{t.close()}catch{}};a.onMessage.addListener(e=>{if(o)return;let n=e;try{t.postMessage(n)}catch{}(n.type===`response-end`||n.type===`response-error`)&&s()}),a.onDisconnect.addListener(()=>{if(!o){try{t.postMessage({type:`response-error`,error:`extension-delegate: fetch-proxy port disconnected`})}catch{}s()}}),a.postMessage({type:`request`,...e.request})}function dt(e){typeof navigator>`u`||!navigator.serviceWorker||navigator.serviceWorker.addEventListener(`message`,t=>{if(!st(t.data))return;let n=t.ports?.[0];if(!n){ct.warn(`delegated fetch envelope arrived without a response port`);return}ut(t.data,n,e)})}var ft=`slicc_feature_flags_remote`;function pt(e){return`${ft}:${e}`}function mt(e,t){let n=gt(t);r(e,_t(n,e)??{})}function ht(e,t,n){try{e?.setItem(pt(t),JSON.stringify(n))}catch{}}function gt(e){if(e!==void 0)return e;try{let e=globalThis.localStorage;return typeof e?.getItem!=`function`||typeof e.setItem!=`function`?void 0:e}catch{return}}function _t(e,t){try{let n=e?.getItem(pt(t));return n?vt(JSON.parse(n)):null}catch{return null}}function vt(e){return!yt(e)||Object.values(e).some(e=>typeof e!=`string`)?null:e}function yt(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function bt(e){return Xe(e)}var j=`slicc.trayWorkerBaseUrl`,M=`slicc.trayJoinUrl`;function N(e){if(!e)return null;try{let t=new URL(e.trim());t.search=``,t.hash=``;let n=t.pathname.split(`/`).filter(Boolean),r=null;if(n.length>=2&&n.at(-2)===`tray`)r=decodeURIComponent(n.at(-1)),n.splice(-2,2),t.pathname=n.length>0?`/${n.join(`/`)}`:`/`;else if(n.length>=2&&n.at(-2)===`join`)return et(t.toString());let i=A(t.toString());return i?{workerBaseUrl:i,trayId:r,joinUrl:null}:null}catch{return null}}function P(e){let t=N(e);return t?.joinUrl?t:null}var xt=i,St=s;function Ct(e,t){let n=A(e);if(!n)throw Error(`Invalid tray worker base URL: ${e}`);let r=t.replace(/^\/+/,``);return new URL(r,`${n}/`).toString()}function F(e,t){let n=P(t);return n?(e.setItem(M,n.joinUrl),e.setItem(j,n.workerBaseUrl),n):null}function wt(e){return!!P(e?.getItem(`slicc.trayJoinUrl`)??null)}function Tt(e,t){let n=!1;try{let t=new URL(e),r=t.searchParams.get(k);if(r!==null){n=!0;let e=N(r);if(e?.joinUrl)return e.joinUrl}t.searchParams.get(`slicc`)===`leader`&&(n=!0)}catch{}let r=N(e);return r?.joinUrl?r.joinUrl:(r?.trayId&&(n=!0),n?null:P(t?.getItem(`slicc.trayJoinUrl`)??null)?.joinUrl??null)}function Et(e){try{let t=new URL(e);t.searchParams.delete(k);let n=t.pathname.split(`/`).filter(Boolean);return n.length>=2&&n.at(-2)===`join`&&(n.splice(-2,2),t.pathname=n.length>0?`/${n.join(`/`)}`:`/`),t.toString()}catch{return e}}function Dt(e,t){let n=A(e);if(!n)throw Error(`Invalid tray worker base URL: ${e}`);let r=t?.trim();return r?new URL(`tray/${encodeURIComponent(r)}`,`${n}/`).toString():n}function Ot(e,t,n){return tt(e,Dt(t,n))}async function kt(e){let t=Mt(e.locationHref);if(t)return e.storage&&(t.joinUrl&&e.storage.setItem(M,t.joinUrl),e.storage.setItem(j,t.workerBaseUrl)),t;let n=P(e.storage?.getItem(`slicc.trayJoinUrl`)??null);if(n)return e.storage&&e.storage.setItem(j,n.workerBaseUrl),n;let r=e.runtimeConfigFetcher?await Nt(e.runtimeConfigFetcher):null;if(r?.joinConfig)return e.storage&&(e.storage.setItem(M,r.joinConfig.joinUrl),e.storage.setItem(j,r.joinConfig.workerBaseUrl)),r.joinConfig;let i=r?.workerBaseUrl??null,a=A(e.storage?.getItem(`slicc.trayWorkerBaseUrl`)??null),o=A(e.envBaseUrl??null),s=A(e.defaultWorkerBaseUrl??null),c=i??a??o??s;return c?(e.storage&&e.storage.setItem(j,c),{workerBaseUrl:c,trayId:null,joinUrl:null}):null}async function At(e){return(await kt(e))?.workerBaseUrl??null}async function jt(e=fetch){try{let t=await e(Be(`/api/runtime-config`),{cache:`no-store`,headers:Ve()});return await Ie(t),t.ok?await t.json():null}catch(e){if(ze(e))throw e;return null}}function Mt(e){try{let t=new URL(e),n=N(t.searchParams.get(k));if(n)return n;let r=N(t.searchParams.get($e));if(r)return r;let i=A(t.searchParams.get(Qe));return i?{workerBaseUrl:i,trayId:null,joinUrl:null}:et(e)||null}catch{return null}}async function Nt(e){let t=await e();if(!t)return null;let n=P(t.trayJoinUrl??null);return{workerBaseUrl:A(t.trayWorkerBaseUrl??null),joinConfig:n}}function Pt(e,t,n){if(t){try{if(new URL(e).searchParams.has(`detached`))return`extension-detached`}catch{}return`extension`}try{let t=new URL(e);return t.searchParams.get(`connect`)===`1`?`connect`:t.searchParams.get(`runtime`)===`hosted-leader`?`hosted-leader`:t.searchParams.get(`cherry`)===`1`?`cherry`:Tt(e,n===void 0?typeof window<`u`?window.localStorage:null:n)?`follower`:It(t)?`electron-overlay`:`standalone`}catch{return`standalone`}}function Ft(e,t){return e===`electron-overlay`||e===`hosted-leader`||e===`standalone`&&t}function It(e){return e.pathname===`/electron`||e.pathname===`/electron/`||e.searchParams.get(`runtime`)===`electron-overlay`}function Lt(e,n){mt(e,n.storage),t(async()=>{let{refreshFeatureFlagsForPage:e,scheduleFeatureFlagsRefresh:t}=await import(`./setup-feature-flags-remote-D47csfRr.js`);return{refreshFeatureFlagsForPage:e,scheduleFeatureFlagsRefresh:t}},__vite__mapDeps([0,1])).then(({refreshFeatureFlagsForPage:t,scheduleFeatureFlagsRefresh:r})=>(r(e,n),t(e,n))).catch(()=>{})}function Rt(e){let t=Pt(e.locationHref,e.isExtension,e.storage);return Lt(t,e),t}function zt(){if(D())return;let e=new Blob([`
|
|
3
3
|
let lastPong = Date.now();
|
|
4
4
|
let frozen = false;
|
|
5
5
|
setInterval(() => {
|
|
@@ -19,4 +19,4 @@ import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import"./modulepreload-polyfi
|
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
21
|
};
|
|
22
|
-
`],{type:`application/javascript`}),t=URL.createObjectURL(e),n=new Worker(t);URL.revokeObjectURL(t),n.onmessage=e=>{if(e.data.type===`ping`)n.postMessage({type:`pong`});else if(e.data.type===`freeze-detected`)console.error(`[freeze-watchdog] Main thread blocked for ${e.data.elapsed}ms — capturing trace on recovery`);else if(e.data.type===`freeze-recovered`){console.error(`[freeze-watchdog] Main thread recovered. Stack trace at recovery point:`),console.trace(`[freeze-watchdog] recovery stack`);let e=performance.getEntriesByType(`longtask`);e.length>0&&console.error(`[freeze-watchdog] Long tasks:`,e.map(e=>({duration:e.duration,startTime:e.startTime,name:e.name})))}},window.addEventListener(`beforeunload`,()=>{n.terminate()},{once:!0})}var Bt=`slicc-nuke-control`,Vt=[`slicc:welcome-flow-fired`,`slicc.trayJoinUrl`,`slicc.trayWorkerBaseUrl`];function Ht(e=()=>location.reload()){if(typeof BroadcastChannel!=`function`)return()=>{};let t=new BroadcastChannel(Bt),n=t=>{let n=t.data;if(n?.type===`nuke-reload`){if(Array.isArray(n.keysToRemove)){for(let e of n.keysToRemove)if(typeof e==`string`)try{localStorage.removeItem(e)}catch{}}e()}};return t.addEventListener(`message`,n),()=>{t.removeEventListener(`message`,n),t.close()}}var I=null;function Ut(){return I||(I=Ht(),I)}n(`stale-asset`);var Wt=`slicc-stale-asset-reload`;function Gt(e,t){if(typeof BroadcastChannel!=`function`)return()=>{};let n=new BroadcastChannel(Wt),r=n=>{let r=n.data;r?.type===`stale-asset-reload`&&r.instanceId===e&&t(r.replayTurn===!0)};return n.addEventListener(`message`,r),()=>{n.removeEventListener(`message`,r),n.close()}}var Kt=`slicc:stale-asset-reloaded-at`,qt=6e4,L=`slicc:stale-asset-replay`;function Jt(e=window.sessionStorage){try{e.setItem(L,`1`)}catch{}}function Yt(e=window.sessionStorage){try{return e.getItem(L)===`1`&&(e.removeItem(L),!0)}catch{return!1}}function Xt(){return{reload:()=>window.location.reload(),storage:window.sessionStorage,now:()=>Date.now(),windowMs:qt,storageKey:Kt}}function Zt(e,t,n){return e===null||t-e>=n}function R(e=Xt()){let t;try{t=e.storage.getItem(e.storageKey)}catch{return!1}let n=t===null?null:Number(t),r=n!==null&&Number.isFinite(n)?n:null,i=e.now();if(!Zt(r,i,e.windowMs))return!1;try{e.storage.setItem(e.storageKey,String(i))}catch{return!1}return e.reload(),!0}var z=null,B=null;function Qt(e){z||(B={...Xt(),...e},z=e=>{R(B)&&e.preventDefault()},window.addEventListener(`vite:preloadError`,z))}var V=null;function $t(e){return V||(V=Gt(e,e=>{e&&Jt(),R(B??void 0)}),V)}var en=3e4,tn=.2,nn=`CDP bridge rejected the session token (bridge-token-required). Open SLICC again from Sliccstart to pick up a fresh token.`,rn=class extends Error{constructor(e=nn){super(e),this.name=`CdpBridgeRejectedError`}},an=class extends Error{constructor(){super(`CDP reconnect is backing off`),this.name=`CdpReconnectBackoffError`}};function on(e,t=Math.random){let n=Math.min(en,250*2**Math.min(Math.max(0,e),16)),r=Math.round(n*tn*t());return Math.min(en,n+r)}function sn(e){try{let t=new URL(e);return t.protocol!==`ws:`&&t.protocol!==`wss:`?null:`${t.protocol===`wss:`?`https:`:`http:`}//${t.host}`}catch{return null}}function cn(e){let t=(e===void 0?[]:Array.isArray(e)?e:[e]).find(e=>e.startsWith(l));if(!t)return null;let n=t.slice(l.length);return n.length>0?n:null}async function ln(e,t=globalThis.fetch){let n=cn(e.protocols),r=sn(e.url);if(!n||!r||typeof t!=`function`)return`transient`;try{let e=await t(`${r}/api/status`,{method:`GET`,headers:{[o]:n},cache:`no-store`,signal:AbortSignal.timeout(1e3)}),i=await e.text();return e.status===403&&i.includes(`bridge-token-required`)?`terminal`:`transient`}catch{return`transient`}}var H=`slicc-cdp-superseded-banner`,un=`slicc-cdp-bridge-rejected-banner`,dn=[`position:fixed`,`left:0`,`right:0`,`z-index:2147483647`,`padding:10px 16px`,`background:#b3261e`,`color:#fff`,`font:13px/1.4 system-ui,sans-serif`,`text-align:center`,`box-shadow:0 1px 4px rgba(0,0,0,0.3)`].join(`;`);function fn(e){if(e.getElementById(H))return;let t=e.createElement(`div`);t.id=H,t.setAttribute(`role`,`alert`),t.textContent=`Another SLICC tab or window has taken control of this browser instance. Only one tab can drive the browser per instance — close the other tabs, then reload this page to resume.`,t.style.cssText=`top:0;${dn}`,e.body.appendChild(t)}function pn(e){if(e.getElementById(un))return;let t=e.createElement(`div`);t.id=un,t.setAttribute(`role`,`alert`),t.textContent=`The bridge token for this tab was rejected by the local SLICC server. Open SLICC again from Sliccstart so the tab picks up a fresh token.`;let n=e.getElementById(H)?`top:44px;`:`top:0;`;t.style.cssText=`${n}${dn}`,e.body.appendChild(t)}var mn=e({setupSudoExtension:()=>gn,setupSudoStandalone:()=>hn});async function hn(e){let{createSudoBroker:n,installSudoTestHook:r}=await t(async()=>{let{createSudoBroker:e,installSudoTestHook:t}=await import(`./sudo-CKnHwVs3.js`);return{createSudoBroker:e,installSudoTestHook:t}},__vite__mapDeps([2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,1,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41])),{createRestCapabilityBroker:i}=await t(async()=>{let{createRestCapabilityBroker:e}=await import(`./capability-6V-AYPSJ.js`).then(e=>e.t);return{createRestCapabilityBroker:e}},__vite__mapDeps([40,6,3]));r(n(i()))}async function gn(e){let{installPanelSudoResponder:n}=await t(async()=>{let{installPanelSudoResponder:e}=await import(`./sudo-CKnHwVs3.js`);return{installPanelSudoResponder:e}},__vite__mapDeps([2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,1,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41]));n()}function _n(){return typeof crypto<`u`&&typeof crypto.randomUUID==`function`?crypto.randomUUID():`slicc-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`}function vn(e){let t;try{t=new URLSearchParams(e)}catch{return null}if(t.get(`slicc`)!==`leader`)return null;let n=t.get(`ext`);return n?{extensionId:n}:null}var yn=[100,200,400,800,1600];async function bn(e,t,n,r=yn,i=e=>new Promise(t=>setTimeout(t,e))){let a=r.length+1,o=null;for(let s=0;s<a;s++)try{await e.connect(t),s>0&&n.info(`CDP bridge connect succeeded after retry`,{attempt:s+1});return}catch(e){if(o=e,e instanceof rn){n.error(`CDP bridge rejected the session token; stopped reconnecting`,e.message);return}s<r.length&&await i(r[s]??0)}n.warn(`Initial CDP connect failed after retries; worker-forwarded commands will retry on demand`,o instanceof Error?o.message:String(o))}async function xn(e,n,r){let{ExtensionBridgeTransport:i}=await t(async()=>{let{ExtensionBridgeTransport:e}=await import(`./extension-bridge-transport-B-i9vQpb.js`);return{ExtensionBridgeTransport:e}},__vite__mapDeps([42,4,43])),{mapDiscoveryPayloadToLickEvent:a,mapNavigatePayloadToLickEvent:o}=await t(async()=>{let{mapDiscoveryPayloadToLickEvent:e,mapNavigatePayloadToLickEvent:t}=await import(`./lick-ws-bridge-Cwu5ARV0.js`);return{mapDiscoveryPayloadToLickEvent:e,mapNavigatePayloadToLickEvent:t}},__vite__mapDeps([44,4,45,6,20,21,22,46])),s=null,c=[],l=!1,u=e=>{s=e;for(let t of c)e.sendForwardedLick(t);c.length=0},d=e=>{if(e){if(s){s.sendForwardedLick(e);return}c.length>=50&&(c.shift(),l||(l=!0,r.warn(`extension-bridge lick buffer overflow (cap 50); dropping oldest pending licks until the kernel client attaches`))),c.push(e)}},f=new e(new i({extensionId:n,onLick:e=>{d(o(e))},onDiscovery:e=>{d(a(e))},onOpenSettings:()=>{globalThis.dispatchEvent(new CustomEvent(`slicc:open-settings-from-panel`))}}));return await bn(f,void 0,r),{browser:f,attachLickForwardingClient:u}}async function Sn(e){let{browser:t,bridge:n,log:r,document:i,sleep:a}=e;t.setCdpConnectFailureClassifier(ln),t.setCdpBridgeRejectedHandler(()=>pn(i)),n&&r.info(`Routing CDP through local standalone bridge`,{url:n.url,role:n.role??`(unset)`});let o=n?{url:n.url,protocols:n.subprotocol}:void 0;if(n?.role===`follower`){r.info(`Skipping CDP connect for follower overlay tab`),t.primeConnectOptions(o);return}await bn(t,o,r,void 0,a),t.setCdpSupersededHandler(()=>fn(i))}async function Cn(e){let{runtimeMode:n,envBaseUrl:r,window:i,log:a,sleep:o}=e,s=n===`electron-overlay`;a.info(`setting up standalone page runtime (BrowserAPI + CDP)`,{runtimeMode:n});let{BrowserAPI:c}=await t(async()=>{let{BrowserAPI:e}=await import(`./cdp-C7gI7nwi.js`);return{BrowserAPI:e}},__vite__mapDeps([47,4,48,49,50,6,3,51,52,19,16,17,7,8,9,10,11,12,13,14,15,1,18,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,53,54,55,37,56,57,58,59,60,61,62,63,64,65,66,67,68,69,43,70,71,72]));await hn({log:a});let l,u,d,f=null,p=null,m=null,h=null,g,_=n===`cherry`?null:vn(i.location.search),v=!!_&&O(),y=n===`cherry`||v?null:it(i.location.search);y?.apiBaseUrl&&(f=y.apiBaseUrl,He(y.apiBaseUrl),p=y.token,Fe(y.token)),y?.lickWsUrl&&(m=y.lickWsUrl);let b=n===`cherry`||v||y!==null,x=await jt(),S=Ft(n,x!==null)?xt:null;if(await kt({locationHref:i.location.href,storage:i.localStorage,envBaseUrl:r,defaultWorkerBaseUrl:S,runtimeConfigFetcher:async()=>x}),n===`cherry`){let{setupCherryFollower:e}=await t(async()=>{let{setupCherryFollower:e}=await import(`./main-cherry-B9oR_G-Y.js`);return{setupCherryFollower:e}},__vite__mapDeps([73,4,68,43,47,48,49,50,6,3,51,52,19,16,17,7,8,9,10,11,12,13,14,15,1,18,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,53,54,55,37,56,57,58,59,60,61,62,63,64,65,66,67,69,70,71,72,74])),n=await e();l=n.browser,u=n.joinUrl,d=n.transport}else if(_&&O()){a.info(`Routing CDP through the extension bridge (leader tab)`);let e=await xn(c,_.extensionId,a);l=e.browser,g=e.attachLickForwardingClient,h=_.extensionId,Le(_.extensionId)}else l=new c,await Sn({browser:l,bridge:y,log:a,document:i.document,sleep:o});let C=l.getUnderlyingTransport();return globalThis.__slicc_browser=l,{browser:l,realCdpTransport:C,hasLocalCdpSurface:b,cherryJoinUrl:u,cherryTransport:d,instanceId:_n(),isElectronOverlay:s,localApiBaseUrl:f,bridgeToken:p,localLickWsUrl:m,extensionDelegateId:h,attachLickForwardingClient:g}}var U=n(`storage-persist`);function wn(){try{return globalThis.navigator?.storage}catch{return}}async function Tn(e=wn()){try{return typeof e?.persist==`function`?typeof e.persisted==`function`&&await e.persisted()?`already-persisted`:await e.persist()?`granted`:`denied`:`unsupported`}catch(e){return U.warn(`storage persistence check failed`,e),`failed`}}var En=!1;function Dn(){En||(En=!0,Tn().then(e=>{switch(e){case`granted`:U.info(`OPFS marked persistent — SLICC data is now exempt from disk-pressure eviction`);break;case`already-persisted`:U.debug(`OPFS already persistent`);break;case`denied`:U.warn(`Browser declined persistent storage — SLICC data can be evicted if the disk fills up`);break;case`unsupported`:U.debug(`navigator.storage.persist() unavailable in this runtime`)}}).catch(()=>{}))}var W=n(`boot/sw-registration`);async function On(e=null,t=null){let n=(()=>{try{return new URL(window.location.href).searchParams.get(`connect`)===`1`}catch{return!1}})();if(`serviceWorker`in navigator&&n&&await jn())return`reload-pending`;if(!(`serviceWorker`in navigator)||n)return`ready`;try{if(await navigator.serviceWorker.register(`/preview-sw.js`,{scope:`/preview/`}),W.info(`Preview SW registered`),!D())try{await navigator.serviceWorker.register(`/llm-proxy-sw.js`,{scope:`/`}),W.info(`LLM-proxy SW registered`)}catch(e){W.error(`LLM-proxy SW registration failed — cross-origin LLM calls will hit CORS`,e)}if(navigator.serviceWorker.controller||await Promise.race([new Promise(e=>navigator.serviceWorker.addEventListener(`controllerchange`,()=>e(),{once:!0})),new Promise(e=>setTimeout(e,1500))]),!navigator.serviceWorker.controller&&!sessionStorage.getItem(`slicc-sw-reloaded`))return sessionStorage.setItem(`slicc-sw-reloaded`,`1`),W.info(`Reloading once to gain SW control`),location.reload(),`reload-pending`;sessionStorage.removeItem(`slicc-sw-reloaded`),e&&(kn(e),navigator.serviceWorker.addEventListener(`controllerchange`,()=>{kn(e)})),t&&(An(t),navigator.serviceWorker.addEventListener(`controllerchange`,()=>{An(t)}))}catch(e){W.error(`Preview SW registration failed — preview feature will not work`,e)}return`ready`}function kn(e){let t=navigator.serviceWorker.controller;if(!t)return;let n={type:at,apiBaseUrl:e.apiBaseUrl,token:e.token};try{t.postMessage(n)}catch(e){W.warn(`LLM-proxy SW bridge-config postMessage failed`,e)}}function An(e){let t=navigator.serviceWorker.controller;if(!t)return;let n={type:ot,extensionId:e.extensionId};try{t.postMessage(n)}catch(e){W.warn(`LLM-proxy SW extension-delegate postMessage failed`,e)}}async function jn(){try{let e=await navigator.serviceWorker.getRegistrations();if(await Promise.all(e.map(e=>e.unregister().catch(()=>!1))),navigator.serviceWorker.controller&&!sessionStorage.getItem(`slicc-connect-sw-cleared`))return sessionStorage.setItem(`slicc-connect-sw-cleared`,`1`),W.info(`connect mode: detaching from service worker (no proxy on worker origin)`),location.reload(),!0;sessionStorage.removeItem(`slicc-connect-sw-cleared`)}catch(e){W.error(`connect-mode SW cleanup failed`,e)}return!1}function Mn(e,t){if(e.state===`inactive`&&t.state===`inactive`)return{kind:`leader-offer`,label:`Enable multi-browser sync`,caption:`Connect another browser to this session.`};if(e.state===`leader`&&e.session?.joinUrl)return{kind:`leader-copy`,joinUrl:e.session.joinUrl,label:`Enable multi-browser sync`,caption:`Share this URL to connect more browsers.`};if(e.state!==`inactive`){let t=e.state===`connecting`?`Setting up multi-browser sync…`:e.state===`reconnecting`?`Reconnecting…`:`Sync service unreachable.`;return{kind:`leader-pending`,label:`Multi-browser sync`,caption:e.error??t}}return{kind:`follower`,label:`Multi-browser sync`,caption:t.error??t.lastError??Nn(t.state)??`Mirroring another browser.`}}function Nn(e){switch(e){case`connected`:return`Connected — mirroring another browser.`;case`connecting`:return`Connecting to the other browser…`;case`reconnecting`:return`Reconnecting…`;case`disconnected`:return`Disconnected from the other browser.`;default:return null}}function Pn(e){let t=e.trim();if(!t)return`Paste a sync URL to continue.`;let n=null;try{n=new URL(t)}catch{return`That doesn’t look like a URL. Paste the full https://… link from the other browser.`}return n.protocol!==`https:`&&n.protocol!==`http:`?`Sync URLs must start with https://.`:n.pathname.includes(`/join/`)?`That sync URL is malformed. Re-copy it from the other browser and try again.`:`This URL is missing the /join/… capability. Use “Enable multi-browser sync” on the other browser.`}var Fn=e({ACCOUNTS_KEY:()=>Ke,__test__:()=>ke,addAccount:()=>T,applyProviderDefaults:()=>De,clearAllSettings:()=>ye,clearApiKey:()=>fe,clearBaseUrl:()=>we,clearSelectedProvider:()=>Oe,describeInvalidJoinUrl:()=>Pn,downloadProviders:()=>zn,ensureOAuthMaskReplica:()=>me,exportProviders:()=>Se,getAccounts:()=>E,getAllAvailableModels:()=>he,getAllExtraOAuthDomains:()=>ge,getAlternativeModelProviders:()=>Te,getApiKey:()=>Ce,getApiKeyForProvider:()=>ve,getApiVersionForProvider:()=>_e,getAvailableProviders:()=>de,getBaseUrl:()=>Ae,getBaseUrlForProvider:()=>Ne,getDeploymentForProvider:()=>pe,getExtraOAuthDomains:()=>Me,getModelCatalogProviderIds:()=>ie,getOAuthAccountInfo:()=>f,getPickerHiddenModels:()=>je,getProviderConfig:()=>w,getProviderModels:()=>m,getRawApiKeyForProvider:()=>p,getSelectedModelId:()=>ee,getSelectedProvider:()=>xe,isModelHiddenFromPicker:()=>u,isUsableOAuthMaskReplica:()=>be,logoutOAuthAccount:()=>S,maskOAuthTokenWithRetry:()=>C,migrateLegacyAuthOnlySelection:()=>te,migrateRenamedPiProviders:()=>h,modelRunsOnProvider:()=>v,persistOAuthMaskViaServiceWorker:()=>x,policyVisible:()=>re,providerOffersLlmModels:()=>Pe,reloginOAuthAccount:()=>Un,removeAccount:()=>d,resolveCurrentModel:()=>oe,resolveModelById:()=>_,resolveModelByShorthand:()=>ae,resolveModelIdForScoop:()=>se,resolveModelSelectionForScoop:()=>g,saveOAuthAccount:()=>b,setApiKey:()=>Ee,setBaseUrl:()=>y,setExtraOAuthDomains:()=>le,setExtraOAuthDomainsAsync:()=>ce,setSelectedModelId:()=>ue,setSelectedProvider:()=>ne,showProviderSettings:()=>ur,testOnlyDispatchTrayJoinWithFailureFeedback:()=>Ln}),In=n(`provider-settings`);function Ln(e,t){return Rn(e,t)}function Rn(e,t){let n=`tray-join-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,r=!1,i,a=()=>{r||(r=!0,i!==void 0&&clearTimeout(i),window.removeEventListener(`slicc:tray-join-failed`,o))},o=r=>{let i=r.detail;if(i.requestId!==void 0&&i.requestId!==n)return;if(a(),!t.isConnected){In.error(`Tray-join failure arrived after dialog dismissed (UX swallowed half-state)`,{joinUrl:e,error:i.error,requestId:n});return}let o=t.dataset.dismissTimer;if(o){let e=Number(o);Number.isFinite(e)&&clearTimeout(e),delete t.dataset.dismissTimer}t.textContent=`Sync failed: ${i.error}. Reload the page and try again.`,t.style.color=`var(--slicc-cone)`};return window.addEventListener(`slicc:tray-join-failed`,o),i=setTimeout(a,1e4),window.dispatchEvent(new CustomEvent(`slicc:tray-join`,{detail:{joinUrl:e,requestId:n}})),a}function zn(){let e=JSON.stringify(Se(),null,2),t=new Blob([e],{type:`application/json`}),n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=`providers.json`,r.click(),URL.revokeObjectURL(n)}function Bn(e){return e.length<=10?`****`:e.slice(0,4)+`...`+e.slice(-4)}function G(e){let t=`http://www.w3.org/2000/svg`,n=document.createElementNS(t,`svg`);n.setAttribute(`width`,`14`),n.setAttribute(`height`,`14`),n.setAttribute(`viewBox`,`0 0 20 20`),n.setAttribute(`fill`,`none`),n.setAttribute(`stroke`,`currentColor`),n.setAttribute(`stroke-width`,`1.5`),n.setAttribute(`stroke-linecap`,`round`),n.setAttribute(`stroke-linejoin`,`round`);for(let r of e){let e=document.createElementNS(t,`path`);e.setAttribute(`d`,r),n.appendChild(e)}return n}var K={pen:[`M14.3 3.3a1.5 1.5 0 0 1 2.1 0l.3.3a1.5 1.5 0 0 1 0 2.1L7.7 14.8l-3.2.7.7-3.2z`],trash:[`M4 6h12`,`M8 6V4a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2`,`M6 6v10a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V6`],logout:[`M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4`,`M16 17l5-5-5-5`,`M21 12H9`],login:[`M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4`,`M10 17l5-5-5-5`,`M15 12H3`]},q=`background: transparent; border: 1px solid var(--s2-border-subtle); color: var(--s2-content-secondary); border-radius: var(--s2-radius-s); padding: 6px; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: color 0.15s, border-color 0.15s;`;function J(e,t){e.addEventListener(`mouseenter`,()=>{e.style.color=t,e.style.borderColor=t}),e.addEventListener(`mouseleave`,()=>{e.style.color=`var(--s2-content-secondary)`,e.style.borderColor=`var(--s2-border-subtle)`})}function Y(e){e.overlay.remove(),e.resolve((localStorage.getItem(`slicc_accounts`)??``)!==e.accountsBefore)}function Vn(e){e.options?.startInAddAccount?Y(e):X(e)}function Hn(e){let t=document.createElement(`div`);return t.style.cssText=`font-size: 11px; color: var(--s2-content-disabled); font-family: monospace; margin-top: 2px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;`,e.loggedOut?(t.textContent=e.userName?`Logged out — was ${e.userName}`:`Logged out`,t.style.color=`var(--s2-content-disabled)`):t.textContent=e.userName?e.userName:e.accessToken?`Logged in`:Bn(e.apiKey),e.baseUrl&&(t.textContent+=` • `+e.baseUrl),t}async function Un(e,n){let{createOAuthLauncher:r,createInterceptingOAuthLauncherForCurrentRuntime:i}=await t(async()=>{let{createOAuthLauncher:e,createInterceptingOAuthLauncherForCurrentRuntime:t}=await import(`./oauth-service-GpUOM3Aw.js`);return{createOAuthLauncher:e,createInterceptingOAuthLauncherForCurrentRuntime:t}},__vite__mapDeps([75,3,18,6,19,20,21,22,27,58])),a={forceReauth:!0};if(e.onOAuthLoginIntercepted){let t=await i();t&&await e.onOAuthLoginIntercepted(t,n,a)}else if(e.onOAuthLogin){let t=r();await e.onOAuthLogin(t,n,a)}}function Wn(e,t){let n=document.createElement(`button`);return n.style.cssText=q,n.setAttribute(`aria-label`,`Edit account`),n.appendChild(G(K.pen)),J(n,`var(--s2-accent)`),n.addEventListener(`click`,()=>Z(e,t)),n}function Gn(e,t,n){let r=document.createElement(`button`);return r.style.cssText=q,t.loggedOut===!0?(r.setAttribute(`aria-label`,`Log in`),r.setAttribute(`title`,`Log in`),r.appendChild(G(K.login)),J(r,`var(--s2-accent)`),r.addEventListener(`click`,()=>{Un(n,()=>X(e))})):(r.setAttribute(`aria-label`,`Log out`),r.setAttribute(`title`,`Log out`),r.appendChild(G(K.logout)),J(r,`var(--s2-warning, #f59e0b)`),r.addEventListener(`click`,()=>{(async()=>{await S(t.providerId),X(e)})()})),r}function Kn(e,t){let n=document.createElement(`button`);return n.style.cssText=q,n.setAttribute(`aria-label`,`Remove account`),n.appendChild(G(K.trash)),J(n,`var(--s2-negative)`),n.addEventListener(`click`,()=>{(async()=>{await d(t.providerId),X(e)})()}),n}function qn(e,t){let n=w(t.providerId),r=document.createElement(`div`);r.style.cssText=`display: flex; align-items: center; justify-content: space-between; padding: 10px 12px; background: var(--s2-bg-layer-2); border-radius: var(--s2-radius-default); margin-bottom: 8px; border: 1px solid var(--s2-border-subtle);`;let i=document.createElement(`div`);i.style.cssText=`flex: 1; min-width: 0;`;let a=document.createElement(`div`);a.style.cssText=`font-size: 14px; font-weight: 600; color: var(--s2-content-default);`,a.textContent=n.name,i.appendChild(a),i.appendChild(Hn(t)),r.appendChild(i);let o=document.createElement(`div`);return o.style.cssText=`display: flex; gap: 4px; margin-left: 12px; flex-shrink: 0;`,o.appendChild(Wn(e,t)),n.isOAuth&&o.appendChild(Gn(e,t,n)),o.appendChild(Kn(e,t)),r.appendChild(o),r}function Jn(e){let t=document.createDocumentFragment(),n=document.createElement(`hr`);n.style.cssText=`border: none; border-top: 1px solid var(--s2-border-subtle); margin: 16px 0;`,t.appendChild(n);let r=document.createElement(`div`);r.className=`dialog__desc`,r.style.cssText=`font-weight: 600; margin-bottom: 8px;`,r.textContent=`Tray`,t.appendChild(r);let i=qe(),a=i.state!==`inactive`,o=wt(window.localStorage);if(a||o){let e=document.createElement(`div`);e.style.cssText=`font-size: 12px; color: var(--s2-content-secondary); margin-bottom: 8px;`,e.textContent=`Follower: ${a?i.state:`configured`}`,i.error&&(e.textContent+=` — ${i.error}`,e.style.color=`var(--slicc-cone)`),t.appendChild(e)}let s=document.createElement(`button`);return s.className=`dialog__btn dialog__btn--secondary`,s.textContent=a||o?`Reconnect to other browser`:`Connect to another browser`,s.addEventListener(`click`,()=>lr(e)),t.appendChild(s),t}function X(e){let{dialog:t}=e;t.innerHTML=``;let n=document.createElement(`div`);n.className=`dialog__title`,n.textContent=`Accounts`,t.appendChild(n);let r=E();if(r.length===0){let e=document.createElement(`div`);e.className=`dialog__desc`,e.textContent=`No accounts configured.`,t.appendChild(e)}else{let n=document.createElement(`div`);n.style.cssText=`margin-bottom: 16px;`;for(let t of r)n.appendChild(qn(e,t));t.appendChild(n)}let i=document.createElement(`div`);i.style.cssText=`display: flex; gap: 8px;`;let a=document.createElement(`button`);a.className=r.length>0?`dialog__btn dialog__btn--secondary`:`dialog__btn`,a.style.flex=`1`,a.textContent=`Add Account`,a.addEventListener(`click`,()=>Z(e)),i.appendChild(a);let o=document.createElement(`button`);o.className=`dialog__btn dialog__btn--secondary`,o.style.flex=`1`,o.textContent=`Export`,o.addEventListener(`click`,()=>zn()),i.appendChild(o),t.appendChild(i),t.appendChild(Jn(e));let s=document.createElement(`hr`);s.style.cssText=`border: none; border-top: 1px solid var(--s2-border-subtle); margin: 16px 0;`,t.appendChild(s);let c=document.createElement(`button`);c.className=`dialog__btn`,c.textContent=`Get Started`,c.addEventListener(`click`,()=>Y(e)),t.appendChild(c)}function Yn(e,t){let n=document.createElement(`select`);if(n.className=`dialog__input`,n.style.marginBottom=`8px`,t){let e=w(t.providerId),r=document.createElement(`option`);return r.value=t.providerId,r.textContent=e.name,n.appendChild(r),n.disabled=!0,n.style.opacity=`0.7`,n}let r=document.createElement(`option`);r.value=``,r.textContent=`Select a provider…`,r.disabled=!0,r.selected=!0,r.hidden=!0,n.appendChild(r);let i=new Set(E().map(e=>e.providerId)),a=[...de()].sort((e,t)=>w(e).name.localeCompare(w(t).name));for(let t of a){if(i.has(t))continue;if(e?.providerFilter){if(!e.providerFilter(t))continue}else if(!Pe(t))continue;let r=document.createElement(`option`);r.value=t,r.textContent=w(t).name,n.appendChild(r)}return n}function Xn(e,t){let n=Yn(e,t),r=document.createElement(`div`);r.className=`dialog__desc`,r.style.cssText=`font-size: 12px; color: var(--s2-content-tertiary); margin-bottom: 16px; margin-top: -4px;`;let i=document.createElement(`div`);i.style.cssText=`margin-bottom: 16px; display: none;`;let a=document.createElement(`button`);a.className=`dialog__btn`,a.textContent=`Login`,a.style.cssText=`width: 100%; margin-bottom: 8px;`,i.appendChild(a);let o=document.createElement(`div`);o.className=`dialog__desc`,o.style.cssText=`font-size: 12px; color: var(--s2-content-secondary); text-align: center;`,i.appendChild(o);let s=document.createElement(`div`),c=document.createElement(`div`);c.className=`dialog__desc`,s.appendChild(c);let l=document.createElement(`input`);l.className=`dialog__input`,l.type=`password`,l.autocomplete=`off`,l.spellcheck=!1,t&&(l.value=t.apiKey),s.appendChild(l);let u=document.createElement(`div`),d=document.createElement(`div`);d.className=`dialog__desc`,d.textContent=`Base URL:`,u.appendChild(d);let f=document.createElement(`input`);f.className=`dialog__input`,f.type=`text`,f.autocomplete=`off`,f.spellcheck=!1,t?.baseUrl&&(f.value=t.baseUrl),u.appendChild(f);let p=document.createElement(`div`);p.className=`dialog__desc`,p.style.cssText=`font-size: 11px; color: var(--s2-content-secondary); margin-top: -12px; margin-bottom: 16px;`,u.appendChild(p);let m=document.createElement(`div`);m.style.display=`none`;let h=document.createElement(`div`);h.className=`dialog__desc`,h.textContent=`Deployment:`,m.appendChild(h);let g=document.createElement(`input`);g.className=`dialog__input`,g.type=`text`,g.autocomplete=`off`,g.spellcheck=!1,t?.deployment&&(g.value=t.deployment),m.appendChild(g);let _=document.createElement(`div`);_.className=`dialog__desc`,_.style.cssText=`font-size: 11px; color: var(--s2-content-secondary); margin-top: -12px; margin-bottom: 16px;`,m.appendChild(_);let v=document.createElement(`div`);v.style.display=`none`;let y=document.createElement(`div`);y.className=`dialog__desc`,y.textContent=`API Version:`,v.appendChild(y);let b=document.createElement(`input`);b.className=`dialog__input`,b.type=`text`,b.autocomplete=`off`,b.spellcheck=!1,t?.apiVersion&&(b.value=t.apiVersion),v.appendChild(b);let x=document.createElement(`div`);x.className=`dialog__desc`,x.style.cssText=`font-size: 11px; color: var(--s2-content-secondary); margin-top: -12px; margin-bottom: 16px;`,v.appendChild(x);let S=document.createElement(`div`);S.style.cssText=`color: var(--slicc-cone); font-size: 12px; margin-bottom: 8px; display: none;`;let C=document.createElement(`button`);return C.className=`dialog__btn`,C.textContent=t?`Save`:`Add`,{providerSelect:n,providerDesc:r,oauth:{section:i,loginBtn:a,status:o},apiKeySection:s,apiKeyLabel:c,apiKeyInput:l,baseUrlSection:u,baseUrlInput:f,baseUrlDesc:p,deploymentSection:m,deploymentInput:g,deploymentDesc:_,apiVersionSection:v,apiVersionInput:b,apiVersionDesc:x,errorEl:S,saveBtn:C}}function Zn(e){let t=document.createElement(`div`);t.setAttribute(`data-slicc-device-code-prompt`,``),t.style.cssText=`display:flex;flex-direction:column;gap:8px`;let n=document.createElement(`div`);n.className=`dialog__desc`,n.textContent=`Verification code`,n.style.cssText=`font-size: 11px; color: var(--s2-content-tertiary);`;let r=document.createElement(`div`);r.textContent=e,r.style.cssText=[`font: 600 22px ui-monospace, SFMono-Regular, Menlo, monospace`,`letter-spacing: 2px`,`color: var(--s2-content-primary, #e6edf3)`,`background: var(--s2-bg-secondary, #161b22)`,`border: 1px solid var(--s2-border, #30363d)`,`border-radius: 6px`,`padding: 10px 12px`,`text-align: center`,`user-select: all`,`cursor: text`].join(`;`);let i=document.createElement(`div`);i.className=`dialog__desc`,i.style.cssText=`font-size: 12px; color: var(--s2-content-secondary);`,i.textContent=`Click Copy & Continue — we will open the GitHub authorization page in a new tab. Paste this code there if it is not already filled in.`;let a=document.createElement(`div`);a.style.cssText=`display:flex;gap:8px;justify-content:flex-end;margin-top:4px`;let o=document.createElement(`button`);o.type=`button`,o.className=`dialog__btn`,o.textContent=`Cancel`;let s=document.createElement(`button`);return s.type=`button`,s.className=`dialog__btn dialog__btn--primary`,s.textContent=`Copy & Continue`,a.appendChild(o),a.appendChild(s),t.appendChild(n),t.appendChild(r),t.appendChild(i),t.appendChild(a),{prompt:t,cancelBtn:o,continueBtn:s}}function Qn(e){return t=>new Promise(n=>{let r=e.loginBtn.style.display,i=e.status.style.display;e.loginBtn.style.display=`none`,e.status.style.display=`none`;let{prompt:a,cancelBtn:o,continueBtn:s}=Zn(t.userCode),c=()=>{try{a.remove()}catch{}e.loginBtn.style.display=r,e.status.style.display=i};o.addEventListener(`click`,()=>{c(),n(`cancel`)}),s.addEventListener(`click`,()=>{(async()=>{try{await Je(t.userCode)}catch{}c(),e.status.style.display=i,e.status.textContent=`Waiting for you to authorize in the new tab…`,n(`continue`)})()}),e.section.appendChild(a)})}async function $n(e,n){let r=n.providerSelect.value;if(!r)return;let i=w(r);if(!i.onOAuthLogin&&!i.onOAuthLoginIntercepted)return;let{status:a}=n.oauth,o=E().some(e=>e.providerId===r),s=Ne(r);if(i.requiresBaseUrl&&!n.baseUrlInput.value.trim()&&!s){a.textContent=`Base URL is required.`,a.style.color=`var(--slicc-cone)`,n.baseUrlInput.focus();return}i.requiresBaseUrl&&n.baseUrlInput.value.trim()&&T(r,``,n.baseUrlInput.value.trim()),a.textContent=`Opening login window...`;try{if(i.onOAuthLoginIntercepted){let{createInterceptingOAuthLauncherForCurrentRuntime:r}=await t(async()=>{let{createInterceptingOAuthLauncherForCurrentRuntime:e}=await import(`./oauth-service-GpUOM3Aw.js`);return{createInterceptingOAuthLauncherForCurrentRuntime:e}},__vite__mapDeps([75,3,18,6,19,20,21,22,27,58])),a=await r();if(!a)throw Error(`No controlled-browser CDP transport available — open SLICC in standalone mode or the Chrome extension.`);await i.onOAuthLoginIntercepted(a,()=>Vn(e),{presentDeviceCode:Qn(n.oauth)})}else if(i.onOAuthLogin){let{createOAuthLauncher:n}=await t(async()=>{let{createOAuthLauncher:e}=await import(`./oauth-service-GpUOM3Aw.js`);return{createOAuthLauncher:e}},__vite__mapDeps([75,3,18,6,19,20,21,22,27,58])),r=n();await i.onOAuthLogin(r,()=>Vn(e))}}catch(e){if(!o)try{await d(r)}catch{}In.error(`OAuth login failed`,{providerId:r,error:e instanceof Error?e.message:String(e)}),a.textContent=`Login failed: ${e instanceof Error?e.message:String(e)}`}}function er(e,t){if(t.isOAuth){e.oauth.section.style.display=``,e.apiKeySection.style.display=`none`,e.baseUrlSection.style.display=t.requiresBaseUrl?``:`none`,t.requiresBaseUrl&&(e.baseUrlInput.placeholder=t.baseUrlPlaceholder||`https://...`,e.baseUrlDesc.textContent=t.baseUrlDescription||``),e.oauth.loginBtn.textContent=`Login with ${t.name}`,e.saveBtn.style.display=`none`;return}e.oauth.section.style.display=`none`;let n=t.requiresApiKey?`API Key`:`API Key (optional)`;e.apiKeyLabel.textContent=`${n}${t.apiKeyEnvVar?` (${t.apiKeyEnvVar})`:``}:`,e.apiKeyInput.placeholder=t.apiKeyPlaceholder||`API key`,e.apiKeySection.style.display=t.requiresApiKey||t.optionalApiKey?``:`none`,e.baseUrlInput.placeholder=t.baseUrlPlaceholder||`https://...`,e.baseUrlDesc.textContent=t.baseUrlDescription||``,e.baseUrlSection.style.display=t.requiresBaseUrl?``:`none`,e.saveBtn.style.display=``}function tr(e,t){t.requiresDeployment?(e.deploymentSection.style.display=``,e.deploymentInput.placeholder=t.deploymentPlaceholder||`deployment-name`,e.deploymentDesc.textContent=t.deploymentDescription||``):e.deploymentSection.style.display=`none`}function nr(e,t){t.requiresApiVersion?(e.apiVersionSection.style.display=``,!e.apiVersionInput.value&&t.apiVersionDefault&&(e.apiVersionInput.value=t.apiVersionDefault),e.apiVersionInput.placeholder=t.apiVersionDefault||`api-version`,e.apiVersionDesc.textContent=t.apiVersionDescription||``):e.apiVersionSection.style.display=`none`}function rr(e){let t=e.providerSelect.value;if(!t){e.providerDesc.textContent=``,e.oauth.section.style.display=`none`,e.apiKeySection.style.display=`none`,e.baseUrlSection.style.display=`none`,e.deploymentSection.style.display=`none`,e.apiVersionSection.style.display=`none`,e.saveBtn.style.display=`none`;return}let n=w(t);e.providerDesc.textContent=n.description,er(e,n),tr(e,n),nr(e,n)}function ir(e,t){let n=t.providerSelect.value;if(!n)return;let r=w(n),i=(e,n)=>{t.errorEl.textContent=e,t.errorEl.style.display=``,n.focus()};if(r.requiresApiKey&&t.apiKeyInput.value.trim().length<5){i(`API key is required (at least 5 characters).`,t.apiKeyInput);return}if(r.requiresBaseUrl&&!t.baseUrlInput.value.trim()){i(`Base URL is required for this provider.`,t.baseUrlInput);return}if(r.requiresDeployment&&!t.deploymentInput.value.trim()){i(`Deployment name is required for this provider.`,t.deploymentInput);return}T(n,t.apiKeyInput.value.trim(),t.baseUrlInput.value.trim()||void 0,t.deploymentInput.value.trim()||void 0,t.apiVersionInput.value.trim()||void 0),Vn(e)}function ar(e,t){let{dialog:n,options:r}=e,i=E().length>0;if(r?.startInAddAccount){let t=document.createElement(`button`);t.className=`dialog__btn dialog__btn--secondary`,t.style.marginTop=`8px`,t.textContent=`Cancel`,t.addEventListener(`click`,()=>Y(e)),n.appendChild(t)}else if(!t&&!i){let t=document.createElement(`button`);t.className=`dialog__btn dialog__btn--secondary`,t.style.marginTop=`8px`,t.textContent=`Connect to another browser`,t.addEventListener(`click`,()=>lr(e)),n.appendChild(t)}else if(i){let t=document.createElement(`button`);t.className=`dialog__btn dialog__btn--secondary`,t.style.marginTop=`8px`,t.textContent=`Back`,t.addEventListener(`click`,()=>X(e)),n.appendChild(t)}}function Z(e,t){let{dialog:n}=e;n.innerHTML=``;let r=document.createElement(`div`);r.className=`dialog__title`,r.textContent=t?`Edit Account`:`Add Account`,n.appendChild(r);let i=document.createElement(`div`);i.className=`dialog__desc`,i.textContent=`Provider:`,n.appendChild(i);let a=Xn(e.options,t);n.appendChild(a.providerSelect),n.appendChild(a.providerDesc),a.oauth.loginBtn.addEventListener(`click`,()=>{$n(e,a)}),t?.userName&&(a.oauth.status.textContent=`Logged in as ${t.userName}`,a.oauth.loginBtn.textContent=`Re-login`),n.appendChild(a.oauth.section),n.appendChild(a.apiKeySection),n.appendChild(a.baseUrlSection),n.appendChild(a.deploymentSection),n.appendChild(a.apiVersionSection),n.appendChild(a.errorEl),a.providerSelect.addEventListener(`change`,()=>{a.errorEl.style.display=`none`,rr(a)}),rr(a),a.saveBtn.addEventListener(`click`,()=>ir(e,a));let o=t=>{t.key===`Enter`&&ir(e,a)};a.apiKeyInput.addEventListener(`keydown`,o),a.baseUrlInput.addEventListener(`keydown`,o),a.deploymentInput.addEventListener(`keydown`,o),a.apiVersionInput.addEventListener(`keydown`,o),n.appendChild(a.saveBtn),ar(e,!!t),requestAnimationFrame(()=>{let e=a.providerSelect.value;if(!e)return;let t=w(e);t.requiresApiKey?a.apiKeyInput.focus():t.requiresBaseUrl&&a.baseUrlInput.focus()})}function or(e,t,n){Rn(t,n),n.textContent=`Connecting…`,n.style.display=``,n.style.color=`var(--s2-content-secondary)`;let r=setTimeout(()=>{e.overlay.remove(),e.resolve(!1)},800);n.dataset.dismissTimer=String(r)}function sr(e,t){let{dialog:n}=e;n.innerHTML=``;let r=document.createElement(`div`);r.className=`dialog__title`,r.textContent=`Connect this browser?`,n.appendChild(r);let i=document.createElement(`div`);i.className=`dialog__desc`,i.style.marginBottom=`12px`,i.textContent=`You’ve been invited to mirror another SLICC browser. Click below to start syncing.`,n.appendChild(i);let a=document.createElement(`div`);a.className=`dialog__desc`,a.style.cssText=`font-family: monospace; font-size: 11px; color: var(--s2-content-secondary); word-break: break-all; margin-bottom: 16px; padding: 8px; background: var(--s2-bg-secondary); border-radius: 4px;`,a.textContent=t.length>80?t.slice(0,40)+`…`+t.slice(-37):t,n.appendChild(a);let o=document.createElement(`div`);o.style.cssText=`font-size: 12px; color: var(--s2-content-secondary); margin-bottom: 8px; display: none;`,n.appendChild(o);let s=document.createElement(`button`);s.className=`dialog__btn`,s.textContent=`Connect`,s.addEventListener(`click`,()=>{let n=F(window.localStorage,t);if(!n){o.textContent=`Invalid sync URL.`,o.style.display=``,o.style.color=`var(--slicc-cone)`;return}or(e,n.joinUrl,o)}),n.appendChild(s);let c=document.createElement(`button`);c.className=`dialog__btn dialog__btn--secondary`,c.style.marginTop=`8px`,c.textContent=`Set up an account instead`,c.addEventListener(`click`,()=>Z(e)),n.appendChild(c)}function cr(){let e=document.createElement(`details`);e.style.cssText=`margin-bottom: 12px; font-size: 12px; color: var(--s2-content-secondary);`;let t=document.createElement(`summary`);t.style.cssText=`cursor: pointer; user-select: none; color: var(--s2-content-secondary);`,t.textContent=`How do I get the sync URL?`,e.appendChild(t);let n=document.createElement(`div`);n.style.cssText=`margin-top: 8px; padding: 10px 12px; background: var(--s2-bg-layer-2); border-radius: var(--s2-radius-default); border: 1px solid var(--s2-border-subtle); line-height: 1.5;`;let r=document.createElement(`ol`);r.style.cssText=`margin: 0; padding-left: 20px;`;for(let e of[`On the other SLICC, click the avatar (top right).`,`Choose “Enable multi-browser sync” — the URL is copied automatically.`,`Paste it below. Both browsers must be on the same SLICC version.`]){let t=document.createElement(`li`);t.textContent=e,r.appendChild(t)}return n.appendChild(r),e.appendChild(n),e}function lr(e){let{dialog:t}=e;t.innerHTML=``;let n=document.createElement(`div`);n.className=`dialog__title`,n.textContent=`Connect to another browser`,t.appendChild(n);let r=document.createElement(`div`);r.className=`dialog__desc`,r.style.marginBottom=`12px`,r.textContent=`Paste a multi-browser sync URL to mirror another SLICC browser.`,t.appendChild(r),t.appendChild(cr());let a=document.createElement(`div`);a.className=`dialog__desc`,a.textContent=`Sync URL:`,t.appendChild(a);let o=document.createElement(`input`);o.className=`dialog__input`,o.type=`text`,o.autocomplete=`off`,o.spellcheck=!1,o.placeholder=`${i}/join/<token>`,t.appendChild(o);let s=document.createElement(`div`);s.style.cssText=`color: var(--slicc-cone); font-size: 12px; margin-bottom: 8px; display: none;`,t.appendChild(s);let c=document.createElement(`div`);c.style.cssText=`font-size: 12px; color: var(--s2-content-secondary); margin-bottom: 8px; display: none;`;let l=document.createElement(`button`);l.className=`dialog__btn`,l.textContent=`Connect`,l.addEventListener(`click`,()=>{let t=o.value.trim();if(!t){s.textContent=`Paste a sync URL to continue.`,s.style.display=``,o.focus();return}let n=F(window.localStorage,t);if(!n){s.textContent=Pn(t),s.style.display=``,o.focus();return}or(e,n.joinUrl,c)}),t.appendChild(l),t.appendChild(c);let u=document.createElement(`button`);u.className=`dialog__btn dialog__btn--secondary`,u.style.marginTop=`8px`,u.textContent=`Back`,u.addEventListener(`click`,()=>Z(e)),t.appendChild(u),o.addEventListener(`input`,()=>{s.style.display=`none`}),o.addEventListener(`keydown`,e=>{e.key===`Enter`&&l.click()}),requestAnimationFrame(()=>o.focus())}function ur(e){return Ue(`button`),new Promise(t=>{let n=document.createElement(`div`);n.className=`dialog-overlay`;let r=document.createElement(`div`);r.className=`dialog`,r.style.cssText=`max-width: 480px; width: 90vw; padding: 32px;`;let i={overlay:n,dialog:r,options:e,accountsBefore:localStorage.getItem(`slicc_accounts`)??``,resolve:t};e?.startInAddAccount?Z(i):E().length>0?X(i):e?.autoJoinUrl?sr(i,e.autoJoinUrl):e?.preferTrayJoin?lr(i):Z(i),n.appendChild(r),document.body.appendChild(n)})}var dr=n(`tray-leader-lock`),fr=!1,Q=null,pr=null;function mr(e){let t=()=>{Q===t&&(Q=null),e()};return Q=t,t}function hr(e){pr=e}function gr(){return fr}function _r(){fr=!0;let e=pr;pr=null;try{e?.()}catch(e){dr.error(`Fatal-boot leader teardown threw`,e)}let t=Q;Q=null,t?.()}var $=n(`main`);function vr(e){try{return new URL(e).searchParams.has(`ui-fixture`)}catch{return!1}}function yr(){t(async()=>{let{setupModelCatalog:e}=await import(`./setup-model-catalog-Dk0F9aSl.js`);return{setupModelCatalog:e}},__vite__mapDeps([76,7,8,9,3,10,11,12,6,13,14,4,17,15,1,18,19,20,21,22,23,24,25,26,27,28,29,16,30,31,32,33,34,35,0])).then(({setupModelCatalog:e})=>e({locationHref:window.location.href,storage:window.localStorage,envBaseUrl:null,isDev:!1})).catch(()=>{})}async function br(){Qt();let e=document.getElementById(`app`);if(!e)throw Error(`#app element not found`);let n=D(),r=Rt({locationHref:window.location.href,storage:window.localStorage,envBaseUrl:null,isDev:!1,isExtension:n});if(vr(window.location.href)){let{mountWcUiPreview:n}=await t(async()=>{let{mountWcUiPreview:e}=await import(`./wc-shell-DuUMUsfJ.js`).then(e=>e.s);return{mountWcUiPreview:e}},__vite__mapDeps([51,6,3,4,52,19,49,16,17,7,8,9,10,11,12,13,14,15,1,18,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,53,54,55,37,56]));n(e);return}zt(),Ut(),Dn(),r!==`connect`&&We({isExtensionRealm:n}).catch(()=>{});let i=it(window.location.search),a=r===`cherry`?null:vn(window.location.search),o=!!a&&O();if(await On(i?{apiBaseUrl:i.apiBaseUrl,token:i.token}:null,o&&a?{extensionId:a.extensionId}:null)===`reload-pending`)return;if(!n&&(r===`follower`||r===`cherry`)){let{bootFollowerFloat:n}=await t(async()=>{let{bootFollowerFloat:e}=await import(`./wc-follower-BzTYSMq0.js`);return{bootFollowerFloat:e}},__vite__mapDeps([77,3,4,1,68,50,6,51,52,19,49,16,17,7,8,9,10,11,12,13,14,15,18,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,53,54,55,37,56,57,58,59,60,61,62,63,64,65,66,67,69,43,70,71,72,78,79,80,81,82,45,83,84,85,86,87,88,89,90,91,92]));return n(e,$,r)}await Ge(),De(),yr(),i?.apiBaseUrl&&!o&&(He(i.apiBaseUrl),Fe(i.token),await Re());let{bootstrapOAuthReplicas:s}=await t(async()=>{let{bootstrapOAuthReplicas:e}=await import(`./oauth-bootstrap-DhPvV_hP.js`);return{bootstrapOAuthReplicas:e}},__vite__mapDeps([93,3,4,16,17,7,8,9,10,11,12,6,13,14,15,1,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,46]));if(await Promise.race([s().catch(e=>{$.error(`OAuth bootstrap failed`,e)}),new Promise(e=>setTimeout(e,1e4))]),r===`connect`){globalThis.__slicc_connect_mode=!0;let{loadLegacyStyles:n}=await t(async()=>{let{loadLegacyStyles:e}=await import(`./legacy-styles-B3nS5QUo.js`);return{loadLegacyStyles:e}},__vite__mapDeps([94,3]));await n();let{mountConnectSurface:r}=await t(async()=>{let{mountConnectSurface:e}=await import(`./connect-surface-n0caH6ih.js`);return{mountConnectSurface:e}},__vite__mapDeps([95,16,3,4,17,7,8,9,10,11,12,6,13,14,15,1,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35]));await r(e);return}if(n){let{bootExtensionFloat:n}=await t(async()=>{let{bootExtensionFloat:e}=await import(`./wc-extension-Dh6SLGz5.js`);return{bootExtensionFloat:e}},__vite__mapDeps([96,3,78,6,4,51,52,19,49,16,17,7,8,9,10,11,12,13,14,15,1,18,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,53,54,55,37,56,57,58,59,60,61,62,63,64,65,66,79,68,80,69,72,81,82,45,70,83,84,85,86,87,88,89,97]));return n(e,$,r===`extension-detached`)}o&&a&&dt(a.extensionId);let{bootLeaderFloat:c}=await t(async()=>{let{bootLeaderFloat:e}=await import(`./wc-live-DSX8s_4R.js`).then(e=>e.n);return{bootLeaderFloat:e}},__vite__mapDeps([78,6,3,4,51,52,19,49,16,17,7,8,9,10,11,12,13,14,15,1,18,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,53,54,55,37,56,57,58,59,60,61,62,63,64,65,66,79,68,80,69,72,81,82,45,70,83,84,85,86,87,88,89]));return c(e,$,r)}function xr(e,t){let n=document.createElement(`div`);n.style.cssText=`padding:2rem;text-align:center;font-family:system-ui;`;let r=document.createElement(`h1`);r.textContent=`Failed to start`;let i=document.createElement(`p`);i.textContent=t instanceof Error?t.message:String(t);let a=document.createElement(`button`);a.type=`button`,a.textContent=`Reload`,a.addEventListener(`click`,()=>location.reload()),n.append(r,i,a),e.replaceChildren(n)}async function Sr(e,n){let r;try{({renderBootRecoveryScreen:r}=await t(()=>import(`./recovery-screen-AGpbQeDv.js`),__vite__mapDeps([98,21,22])))}catch{xr(e,n);return}if(r(e,n),n instanceof Error&&n.message.includes(`did not signal ready`))try{let{triageModuleWorkerHealth:i}=await t(async()=>{let{triageModuleWorkerHealth:e}=await import(`./worker-triage-BvsMZrdR.js`);return{triageModuleWorkerHealth:e}},[]),a=await i();a===`browser-wedged`&&r(e,n,{verdict:a})}catch{}}br().catch(e=>{$.error(`Fatal error`,e),_r();let t=document.getElementById(`app`);t&&Sr(t,e)});export{ht as A,F as C,j as D,M as E,Ze as M,bt as O,At as S,P as T,St as _,ur as a,wt as b,mn as c,on as d,Yt as f,xt as g,Vt as h,Fn as i,A as j,gt as k,rn as l,$t as m,gr as n,Mn as o,R as p,hr as r,Cn as s,mr as t,an as u,Ot as v,Et as w,Tt as x,Ct as y};
|
|
22
|
+
`],{type:`application/javascript`}),t=URL.createObjectURL(e),n=new Worker(t);URL.revokeObjectURL(t),n.onmessage=e=>{if(e.data.type===`ping`)n.postMessage({type:`pong`});else if(e.data.type===`freeze-detected`)console.error(`[freeze-watchdog] Main thread blocked for ${e.data.elapsed}ms — capturing trace on recovery`);else if(e.data.type===`freeze-recovered`){console.error(`[freeze-watchdog] Main thread recovered. Stack trace at recovery point:`),console.trace(`[freeze-watchdog] recovery stack`);let e=performance.getEntriesByType(`longtask`);e.length>0&&console.error(`[freeze-watchdog] Long tasks:`,e.map(e=>({duration:e.duration,startTime:e.startTime,name:e.name})))}},window.addEventListener(`beforeunload`,()=>{n.terminate()},{once:!0})}var Bt=`slicc-nuke-control`,Vt=[`slicc:welcome-flow-fired`,`slicc.trayJoinUrl`,`slicc.trayWorkerBaseUrl`];function Ht(e=()=>location.reload()){if(typeof BroadcastChannel!=`function`)return()=>{};let t=new BroadcastChannel(Bt),n=t=>{let n=t.data;if(n?.type===`nuke-reload`){if(Array.isArray(n.keysToRemove)){for(let e of n.keysToRemove)if(typeof e==`string`)try{localStorage.removeItem(e)}catch{}}e()}};return t.addEventListener(`message`,n),()=>{t.removeEventListener(`message`,n),t.close()}}var I=null;function Ut(){return I||(I=Ht(),I)}n(`stale-asset`);var Wt=`slicc-stale-asset-reload`;function Gt(e,t){if(typeof BroadcastChannel!=`function`)return()=>{};let n=new BroadcastChannel(Wt),r=n=>{let r=n.data;r?.type===`stale-asset-reload`&&r.instanceId===e&&t(r.replayTurn===!0)};return n.addEventListener(`message`,r),()=>{n.removeEventListener(`message`,r),n.close()}}var Kt=`slicc:stale-asset-reloaded-at`,qt=6e4,L=`slicc:stale-asset-replay`;function Jt(e=window.sessionStorage){try{e.setItem(L,`1`)}catch{}}function Yt(e=window.sessionStorage){try{return e.getItem(L)===`1`&&(e.removeItem(L),!0)}catch{return!1}}function Xt(){return{reload:()=>window.location.reload(),storage:window.sessionStorage,now:()=>Date.now(),windowMs:qt,storageKey:Kt}}function Zt(e,t,n){return e===null||t-e>=n}function R(e=Xt()){let t;try{t=e.storage.getItem(e.storageKey)}catch{return!1}let n=t===null?null:Number(t),r=n!==null&&Number.isFinite(n)?n:null,i=e.now();if(!Zt(r,i,e.windowMs))return!1;try{e.storage.setItem(e.storageKey,String(i))}catch{return!1}return e.reload(),!0}var z=null,B=null;function Qt(e){z||(B={...Xt(),...e},z=e=>{R(B)&&e.preventDefault()},window.addEventListener(`vite:preloadError`,z))}var V=null;function $t(e){return V||(V=Gt(e,e=>{e&&Jt(),R(B??void 0)}),V)}var en=3e4,tn=.2,nn=`CDP bridge rejected the session token (bridge-token-required). Open SLICC again from Sliccstart to pick up a fresh token.`,rn=class extends Error{constructor(e=nn){super(e),this.name=`CdpBridgeRejectedError`}},an=class extends Error{constructor(){super(`CDP reconnect is backing off`),this.name=`CdpReconnectBackoffError`}};function on(e,t=Math.random){let n=Math.min(en,250*2**Math.min(Math.max(0,e),16)),r=Math.round(n*tn*t());return Math.min(en,n+r)}function sn(e){try{let t=new URL(e);return t.protocol!==`ws:`&&t.protocol!==`wss:`?null:`${t.protocol===`wss:`?`https:`:`http:`}//${t.host}`}catch{return null}}function cn(e){let t=(e===void 0?[]:Array.isArray(e)?e:[e]).find(e=>e.startsWith(l));if(!t)return null;let n=t.slice(l.length);return n.length>0?n:null}async function ln(e,t=globalThis.fetch){let n=cn(e.protocols),r=sn(e.url);if(!n||!r||typeof t!=`function`)return`transient`;try{let e=await t(`${r}/api/status`,{method:`GET`,headers:{[o]:n},cache:`no-store`,signal:AbortSignal.timeout(1e3)}),i=await e.text();return e.status===403&&i.includes(`bridge-token-required`)?`terminal`:`transient`}catch{return`transient`}}var H=`slicc-cdp-superseded-banner`,un=`slicc-cdp-bridge-rejected-banner`,dn=[`position:fixed`,`left:0`,`right:0`,`z-index:2147483647`,`padding:10px 16px`,`background:#b3261e`,`color:#fff`,`font:13px/1.4 system-ui,sans-serif`,`text-align:center`,`box-shadow:0 1px 4px rgba(0,0,0,0.3)`].join(`;`);function fn(e){if(e.getElementById(H))return;let t=e.createElement(`div`);t.id=H,t.setAttribute(`role`,`alert`),t.textContent=`Another SLICC tab or window has taken control of this browser instance. Only one tab can drive the browser per instance — close the other tabs, then reload this page to resume.`,t.style.cssText=`top:0;${dn}`,e.body.appendChild(t)}function pn(e){if(e.getElementById(un))return;let t=e.createElement(`div`);t.id=un,t.setAttribute(`role`,`alert`),t.textContent=`The bridge token for this tab was rejected by the local SLICC server. Open SLICC again from Sliccstart so the tab picks up a fresh token.`;let n=e.getElementById(H)?`top:44px;`:`top:0;`;t.style.cssText=`${n}${dn}`,e.body.appendChild(t)}var mn=e({setupSudoExtension:()=>gn,setupSudoStandalone:()=>hn});async function hn(e){let{createSudoBroker:n,installSudoTestHook:r}=await t(async()=>{let{createSudoBroker:e,installSudoTestHook:t}=await import(`./sudo-DUfFewQM.js`);return{createSudoBroker:e,installSudoTestHook:t}},__vite__mapDeps([2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,1,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41])),{createRestCapabilityBroker:i}=await t(async()=>{let{createRestCapabilityBroker:e}=await import(`./capability-6V-AYPSJ.js`).then(e=>e.t);return{createRestCapabilityBroker:e}},__vite__mapDeps([40,6,3]));r(n(i()))}async function gn(e){let{installPanelSudoResponder:n}=await t(async()=>{let{installPanelSudoResponder:e}=await import(`./sudo-DUfFewQM.js`);return{installPanelSudoResponder:e}},__vite__mapDeps([2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,1,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41]));n()}function _n(){return typeof crypto<`u`&&typeof crypto.randomUUID==`function`?crypto.randomUUID():`slicc-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`}function vn(e){let t;try{t=new URLSearchParams(e)}catch{return null}if(t.get(`slicc`)!==`leader`)return null;let n=t.get(`ext`);return n?{extensionId:n}:null}var yn=[100,200,400,800,1600];async function bn(e,t,n,r=yn,i=e=>new Promise(t=>setTimeout(t,e))){let a=r.length+1,o=null;for(let s=0;s<a;s++)try{await e.connect(t),s>0&&n.info(`CDP bridge connect succeeded after retry`,{attempt:s+1});return}catch(e){if(o=e,e instanceof rn){n.error(`CDP bridge rejected the session token; stopped reconnecting`,e.message);return}s<r.length&&await i(r[s]??0)}n.warn(`Initial CDP connect failed after retries; worker-forwarded commands will retry on demand`,o instanceof Error?o.message:String(o))}async function xn(e,n,r){let{ExtensionBridgeTransport:i}=await t(async()=>{let{ExtensionBridgeTransport:e}=await import(`./extension-bridge-transport-B-i9vQpb.js`);return{ExtensionBridgeTransport:e}},__vite__mapDeps([42,4,43])),{mapDiscoveryPayloadToLickEvent:a,mapNavigatePayloadToLickEvent:o}=await t(async()=>{let{mapDiscoveryPayloadToLickEvent:e,mapNavigatePayloadToLickEvent:t}=await import(`./lick-ws-bridge-sowukdrb.js`);return{mapDiscoveryPayloadToLickEvent:e,mapNavigatePayloadToLickEvent:t}},__vite__mapDeps([44,4,45,6,20,21,22,46])),s=null,c=[],l=!1,u=e=>{s=e;for(let t of c)e.sendForwardedLick(t);c.length=0},d=e=>{if(e){if(s){s.sendForwardedLick(e);return}c.length>=50&&(c.shift(),l||(l=!0,r.warn(`extension-bridge lick buffer overflow (cap 50); dropping oldest pending licks until the kernel client attaches`))),c.push(e)}},f=new e(new i({extensionId:n,onLick:e=>{d(o(e))},onDiscovery:e=>{d(a(e))},onOpenSettings:()=>{globalThis.dispatchEvent(new CustomEvent(`slicc:open-settings-from-panel`))}}));return await bn(f,void 0,r),{browser:f,attachLickForwardingClient:u}}async function Sn(e){let{browser:t,bridge:n,log:r,document:i,sleep:a}=e;t.setCdpConnectFailureClassifier(ln),t.setCdpBridgeRejectedHandler(()=>pn(i)),n&&r.info(`Routing CDP through local standalone bridge`,{url:n.url,role:n.role??`(unset)`});let o=n?{url:n.url,protocols:n.subprotocol}:void 0;if(n?.role===`follower`){r.info(`Skipping CDP connect for follower overlay tab`),t.primeConnectOptions(o);return}await bn(t,o,r,void 0,a),t.setCdpSupersededHandler(()=>fn(i))}async function Cn(e){let{runtimeMode:n,envBaseUrl:r,window:i,log:a,sleep:o}=e,s=n===`electron-overlay`;a.info(`setting up standalone page runtime (BrowserAPI + CDP)`,{runtimeMode:n});let{BrowserAPI:c}=await t(async()=>{let{BrowserAPI:e}=await import(`./cdp-Br2ndzi3.js`);return{BrowserAPI:e}},__vite__mapDeps([47,4,48,49,50,6,3,51,52,19,16,17,7,8,9,10,11,12,13,14,15,1,18,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,53,54,55,37,56,57,58,59,60,61,62,63,64,65,66,67,68,69,43,70,71,72]));await hn({log:a});let l,u,d,f=null,p=null,m=null,h=null,g,_=n===`cherry`?null:vn(i.location.search),v=!!_&&O(),y=n===`cherry`||v?null:it(i.location.search);y?.apiBaseUrl&&(f=y.apiBaseUrl,He(y.apiBaseUrl),p=y.token,Fe(y.token)),y?.lickWsUrl&&(m=y.lickWsUrl);let b=n===`cherry`||v||y!==null,x=await jt(),S=Ft(n,x!==null)?xt:null;if(await kt({locationHref:i.location.href,storage:i.localStorage,envBaseUrl:r,defaultWorkerBaseUrl:S,runtimeConfigFetcher:async()=>x}),n===`cherry`){let{setupCherryFollower:e}=await t(async()=>{let{setupCherryFollower:e}=await import(`./main-cherry-D0_KUuC2.js`);return{setupCherryFollower:e}},__vite__mapDeps([73,4,68,43,47,48,49,50,6,3,51,52,19,16,17,7,8,9,10,11,12,13,14,15,1,18,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,53,54,55,37,56,57,58,59,60,61,62,63,64,65,66,67,69,70,71,72,74])),n=await e();l=n.browser,u=n.joinUrl,d=n.transport}else if(_&&O()){a.info(`Routing CDP through the extension bridge (leader tab)`);let e=await xn(c,_.extensionId,a);l=e.browser,g=e.attachLickForwardingClient,h=_.extensionId,Le(_.extensionId)}else l=new c,await Sn({browser:l,bridge:y,log:a,document:i.document,sleep:o});let C=l.getUnderlyingTransport();return globalThis.__slicc_browser=l,{browser:l,realCdpTransport:C,hasLocalCdpSurface:b,cherryJoinUrl:u,cherryTransport:d,instanceId:_n(),isElectronOverlay:s,localApiBaseUrl:f,bridgeToken:p,localLickWsUrl:m,extensionDelegateId:h,attachLickForwardingClient:g}}var U=n(`storage-persist`);function wn(){try{return globalThis.navigator?.storage}catch{return}}async function Tn(e=wn()){try{return typeof e?.persist==`function`?typeof e.persisted==`function`&&await e.persisted()?`already-persisted`:await e.persist()?`granted`:`denied`:`unsupported`}catch(e){return U.warn(`storage persistence check failed`,e),`failed`}}var En=!1;function Dn(){En||(En=!0,Tn().then(e=>{switch(e){case`granted`:U.info(`OPFS marked persistent — SLICC data is now exempt from disk-pressure eviction`);break;case`already-persisted`:U.debug(`OPFS already persistent`);break;case`denied`:U.warn(`Browser declined persistent storage — SLICC data can be evicted if the disk fills up`);break;case`unsupported`:U.debug(`navigator.storage.persist() unavailable in this runtime`)}}).catch(()=>{}))}var W=n(`boot/sw-registration`);async function On(e=null,t=null){let n=(()=>{try{return new URL(window.location.href).searchParams.get(`connect`)===`1`}catch{return!1}})();if(`serviceWorker`in navigator&&n&&await jn())return`reload-pending`;if(!(`serviceWorker`in navigator)||n)return`ready`;try{if(await navigator.serviceWorker.register(`/preview-sw.js`,{scope:`/preview/`}),W.info(`Preview SW registered`),!D())try{await navigator.serviceWorker.register(`/llm-proxy-sw.js`,{scope:`/`}),W.info(`LLM-proxy SW registered`)}catch(e){W.error(`LLM-proxy SW registration failed — cross-origin LLM calls will hit CORS`,e)}if(navigator.serviceWorker.controller||await Promise.race([new Promise(e=>navigator.serviceWorker.addEventListener(`controllerchange`,()=>e(),{once:!0})),new Promise(e=>setTimeout(e,1500))]),!navigator.serviceWorker.controller&&!sessionStorage.getItem(`slicc-sw-reloaded`))return sessionStorage.setItem(`slicc-sw-reloaded`,`1`),W.info(`Reloading once to gain SW control`),location.reload(),`reload-pending`;sessionStorage.removeItem(`slicc-sw-reloaded`),e&&(kn(e),navigator.serviceWorker.addEventListener(`controllerchange`,()=>{kn(e)})),t&&(An(t),navigator.serviceWorker.addEventListener(`controllerchange`,()=>{An(t)}))}catch(e){W.error(`Preview SW registration failed — preview feature will not work`,e)}return`ready`}function kn(e){let t=navigator.serviceWorker.controller;if(!t)return;let n={type:at,apiBaseUrl:e.apiBaseUrl,token:e.token};try{t.postMessage(n)}catch(e){W.warn(`LLM-proxy SW bridge-config postMessage failed`,e)}}function An(e){let t=navigator.serviceWorker.controller;if(!t)return;let n={type:ot,extensionId:e.extensionId};try{t.postMessage(n)}catch(e){W.warn(`LLM-proxy SW extension-delegate postMessage failed`,e)}}async function jn(){try{let e=await navigator.serviceWorker.getRegistrations();if(await Promise.all(e.map(e=>e.unregister().catch(()=>!1))),navigator.serviceWorker.controller&&!sessionStorage.getItem(`slicc-connect-sw-cleared`))return sessionStorage.setItem(`slicc-connect-sw-cleared`,`1`),W.info(`connect mode: detaching from service worker (no proxy on worker origin)`),location.reload(),!0;sessionStorage.removeItem(`slicc-connect-sw-cleared`)}catch(e){W.error(`connect-mode SW cleanup failed`,e)}return!1}function Mn(e,t){if(e.state===`inactive`&&t.state===`inactive`)return{kind:`leader-offer`,label:`Enable multi-browser sync`,caption:`Connect another browser to this session.`};if(e.state===`leader`&&e.session?.joinUrl)return{kind:`leader-copy`,joinUrl:e.session.joinUrl,label:`Enable multi-browser sync`,caption:`Share this URL to connect more browsers.`};if(e.state!==`inactive`){let t=e.state===`connecting`?`Setting up multi-browser sync…`:e.state===`reconnecting`?`Reconnecting…`:`Sync service unreachable.`;return{kind:`leader-pending`,label:`Multi-browser sync`,caption:e.error??t}}return{kind:`follower`,label:`Multi-browser sync`,caption:t.error??t.lastError??Nn(t.state)??`Mirroring another browser.`}}function Nn(e){switch(e){case`connected`:return`Connected — mirroring another browser.`;case`connecting`:return`Connecting to the other browser…`;case`reconnecting`:return`Reconnecting…`;case`disconnected`:return`Disconnected from the other browser.`;default:return null}}function Pn(e){let t=e.trim();if(!t)return`Paste a sync URL to continue.`;let n=null;try{n=new URL(t)}catch{return`That doesn’t look like a URL. Paste the full https://… link from the other browser.`}return n.protocol!==`https:`&&n.protocol!==`http:`?`Sync URLs must start with https://.`:n.pathname.includes(`/join/`)?`That sync URL is malformed. Re-copy it from the other browser and try again.`:`This URL is missing the /join/… capability. Use “Enable multi-browser sync” on the other browser.`}var Fn=e({ACCOUNTS_KEY:()=>Ke,__test__:()=>ke,addAccount:()=>T,applyProviderDefaults:()=>De,clearAllSettings:()=>ye,clearApiKey:()=>fe,clearBaseUrl:()=>we,clearSelectedProvider:()=>Oe,describeInvalidJoinUrl:()=>Pn,downloadProviders:()=>zn,ensureOAuthMaskReplica:()=>me,exportProviders:()=>Se,getAccounts:()=>E,getAllAvailableModels:()=>he,getAllExtraOAuthDomains:()=>ge,getAlternativeModelProviders:()=>Te,getApiKey:()=>Ce,getApiKeyForProvider:()=>ve,getApiVersionForProvider:()=>_e,getAvailableProviders:()=>de,getBaseUrl:()=>Ae,getBaseUrlForProvider:()=>Ne,getDeploymentForProvider:()=>pe,getExtraOAuthDomains:()=>Me,getModelCatalogProviderIds:()=>ie,getOAuthAccountInfo:()=>f,getPickerHiddenModels:()=>je,getProviderConfig:()=>w,getProviderModels:()=>m,getRawApiKeyForProvider:()=>p,getSelectedModelId:()=>ee,getSelectedProvider:()=>xe,isModelHiddenFromPicker:()=>u,isUsableOAuthMaskReplica:()=>be,logoutOAuthAccount:()=>S,maskOAuthTokenWithRetry:()=>C,migrateLegacyAuthOnlySelection:()=>te,migrateRenamedPiProviders:()=>h,modelRunsOnProvider:()=>v,persistOAuthMaskViaServiceWorker:()=>x,policyVisible:()=>re,providerOffersLlmModels:()=>Pe,reloginOAuthAccount:()=>Un,removeAccount:()=>d,resolveCurrentModel:()=>oe,resolveModelById:()=>_,resolveModelByShorthand:()=>ae,resolveModelIdForScoop:()=>se,resolveModelSelectionForScoop:()=>g,saveOAuthAccount:()=>b,setApiKey:()=>Ee,setBaseUrl:()=>y,setExtraOAuthDomains:()=>le,setExtraOAuthDomainsAsync:()=>ce,setSelectedModelId:()=>ue,setSelectedProvider:()=>ne,showProviderSettings:()=>ur,testOnlyDispatchTrayJoinWithFailureFeedback:()=>Ln}),In=n(`provider-settings`);function Ln(e,t){return Rn(e,t)}function Rn(e,t){let n=`tray-join-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,r=!1,i,a=()=>{r||(r=!0,i!==void 0&&clearTimeout(i),window.removeEventListener(`slicc:tray-join-failed`,o))},o=r=>{let i=r.detail;if(i.requestId!==void 0&&i.requestId!==n)return;if(a(),!t.isConnected){In.error(`Tray-join failure arrived after dialog dismissed (UX swallowed half-state)`,{joinUrl:e,error:i.error,requestId:n});return}let o=t.dataset.dismissTimer;if(o){let e=Number(o);Number.isFinite(e)&&clearTimeout(e),delete t.dataset.dismissTimer}t.textContent=`Sync failed: ${i.error}. Reload the page and try again.`,t.style.color=`var(--slicc-cone)`};return window.addEventListener(`slicc:tray-join-failed`,o),i=setTimeout(a,1e4),window.dispatchEvent(new CustomEvent(`slicc:tray-join`,{detail:{joinUrl:e,requestId:n}})),a}function zn(){let e=JSON.stringify(Se(),null,2),t=new Blob([e],{type:`application/json`}),n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=`providers.json`,r.click(),URL.revokeObjectURL(n)}function Bn(e){return e.length<=10?`****`:e.slice(0,4)+`...`+e.slice(-4)}function G(e){let t=`http://www.w3.org/2000/svg`,n=document.createElementNS(t,`svg`);n.setAttribute(`width`,`14`),n.setAttribute(`height`,`14`),n.setAttribute(`viewBox`,`0 0 20 20`),n.setAttribute(`fill`,`none`),n.setAttribute(`stroke`,`currentColor`),n.setAttribute(`stroke-width`,`1.5`),n.setAttribute(`stroke-linecap`,`round`),n.setAttribute(`stroke-linejoin`,`round`);for(let r of e){let e=document.createElementNS(t,`path`);e.setAttribute(`d`,r),n.appendChild(e)}return n}var K={pen:[`M14.3 3.3a1.5 1.5 0 0 1 2.1 0l.3.3a1.5 1.5 0 0 1 0 2.1L7.7 14.8l-3.2.7.7-3.2z`],trash:[`M4 6h12`,`M8 6V4a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2`,`M6 6v10a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V6`],logout:[`M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4`,`M16 17l5-5-5-5`,`M21 12H9`],login:[`M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4`,`M10 17l5-5-5-5`,`M15 12H3`]},q=`background: transparent; border: 1px solid var(--s2-border-subtle); color: var(--s2-content-secondary); border-radius: var(--s2-radius-s); padding: 6px; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: color 0.15s, border-color 0.15s;`;function J(e,t){e.addEventListener(`mouseenter`,()=>{e.style.color=t,e.style.borderColor=t}),e.addEventListener(`mouseleave`,()=>{e.style.color=`var(--s2-content-secondary)`,e.style.borderColor=`var(--s2-border-subtle)`})}function Y(e){e.overlay.remove(),e.resolve((localStorage.getItem(`slicc_accounts`)??``)!==e.accountsBefore)}function Vn(e){e.options?.startInAddAccount?Y(e):X(e)}function Hn(e){let t=document.createElement(`div`);return t.style.cssText=`font-size: 11px; color: var(--s2-content-disabled); font-family: monospace; margin-top: 2px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;`,e.loggedOut?(t.textContent=e.userName?`Logged out — was ${e.userName}`:`Logged out`,t.style.color=`var(--s2-content-disabled)`):t.textContent=e.userName?e.userName:e.accessToken?`Logged in`:Bn(e.apiKey),e.baseUrl&&(t.textContent+=` • `+e.baseUrl),t}async function Un(e,n){let{createOAuthLauncher:r,createInterceptingOAuthLauncherForCurrentRuntime:i}=await t(async()=>{let{createOAuthLauncher:e,createInterceptingOAuthLauncherForCurrentRuntime:t}=await import(`./oauth-service-GpUOM3Aw.js`);return{createOAuthLauncher:e,createInterceptingOAuthLauncherForCurrentRuntime:t}},__vite__mapDeps([75,3,18,6,19,20,21,22,27,58])),a={forceReauth:!0};if(e.onOAuthLoginIntercepted){let t=await i();t&&await e.onOAuthLoginIntercepted(t,n,a)}else if(e.onOAuthLogin){let t=r();await e.onOAuthLogin(t,n,a)}}function Wn(e,t){let n=document.createElement(`button`);return n.style.cssText=q,n.setAttribute(`aria-label`,`Edit account`),n.appendChild(G(K.pen)),J(n,`var(--s2-accent)`),n.addEventListener(`click`,()=>Z(e,t)),n}function Gn(e,t,n){let r=document.createElement(`button`);return r.style.cssText=q,t.loggedOut===!0?(r.setAttribute(`aria-label`,`Log in`),r.setAttribute(`title`,`Log in`),r.appendChild(G(K.login)),J(r,`var(--s2-accent)`),r.addEventListener(`click`,()=>{Un(n,()=>X(e))})):(r.setAttribute(`aria-label`,`Log out`),r.setAttribute(`title`,`Log out`),r.appendChild(G(K.logout)),J(r,`var(--s2-warning, #f59e0b)`),r.addEventListener(`click`,()=>{(async()=>{await S(t.providerId),X(e)})()})),r}function Kn(e,t){let n=document.createElement(`button`);return n.style.cssText=q,n.setAttribute(`aria-label`,`Remove account`),n.appendChild(G(K.trash)),J(n,`var(--s2-negative)`),n.addEventListener(`click`,()=>{(async()=>{await d(t.providerId),X(e)})()}),n}function qn(e,t){let n=w(t.providerId),r=document.createElement(`div`);r.style.cssText=`display: flex; align-items: center; justify-content: space-between; padding: 10px 12px; background: var(--s2-bg-layer-2); border-radius: var(--s2-radius-default); margin-bottom: 8px; border: 1px solid var(--s2-border-subtle);`;let i=document.createElement(`div`);i.style.cssText=`flex: 1; min-width: 0;`;let a=document.createElement(`div`);a.style.cssText=`font-size: 14px; font-weight: 600; color: var(--s2-content-default);`,a.textContent=n.name,i.appendChild(a),i.appendChild(Hn(t)),r.appendChild(i);let o=document.createElement(`div`);return o.style.cssText=`display: flex; gap: 4px; margin-left: 12px; flex-shrink: 0;`,o.appendChild(Wn(e,t)),n.isOAuth&&o.appendChild(Gn(e,t,n)),o.appendChild(Kn(e,t)),r.appendChild(o),r}function Jn(e){let t=document.createDocumentFragment(),n=document.createElement(`hr`);n.style.cssText=`border: none; border-top: 1px solid var(--s2-border-subtle); margin: 16px 0;`,t.appendChild(n);let r=document.createElement(`div`);r.className=`dialog__desc`,r.style.cssText=`font-weight: 600; margin-bottom: 8px;`,r.textContent=`Tray`,t.appendChild(r);let i=qe(),a=i.state!==`inactive`,o=wt(window.localStorage);if(a||o){let e=document.createElement(`div`);e.style.cssText=`font-size: 12px; color: var(--s2-content-secondary); margin-bottom: 8px;`,e.textContent=`Follower: ${a?i.state:`configured`}`,i.error&&(e.textContent+=` — ${i.error}`,e.style.color=`var(--slicc-cone)`),t.appendChild(e)}let s=document.createElement(`button`);return s.className=`dialog__btn dialog__btn--secondary`,s.textContent=a||o?`Reconnect to other browser`:`Connect to another browser`,s.addEventListener(`click`,()=>lr(e)),t.appendChild(s),t}function X(e){let{dialog:t}=e;t.innerHTML=``;let n=document.createElement(`div`);n.className=`dialog__title`,n.textContent=`Accounts`,t.appendChild(n);let r=E();if(r.length===0){let e=document.createElement(`div`);e.className=`dialog__desc`,e.textContent=`No accounts configured.`,t.appendChild(e)}else{let n=document.createElement(`div`);n.style.cssText=`margin-bottom: 16px;`;for(let t of r)n.appendChild(qn(e,t));t.appendChild(n)}let i=document.createElement(`div`);i.style.cssText=`display: flex; gap: 8px;`;let a=document.createElement(`button`);a.className=r.length>0?`dialog__btn dialog__btn--secondary`:`dialog__btn`,a.style.flex=`1`,a.textContent=`Add Account`,a.addEventListener(`click`,()=>Z(e)),i.appendChild(a);let o=document.createElement(`button`);o.className=`dialog__btn dialog__btn--secondary`,o.style.flex=`1`,o.textContent=`Export`,o.addEventListener(`click`,()=>zn()),i.appendChild(o),t.appendChild(i),t.appendChild(Jn(e));let s=document.createElement(`hr`);s.style.cssText=`border: none; border-top: 1px solid var(--s2-border-subtle); margin: 16px 0;`,t.appendChild(s);let c=document.createElement(`button`);c.className=`dialog__btn`,c.textContent=`Get Started`,c.addEventListener(`click`,()=>Y(e)),t.appendChild(c)}function Yn(e,t){let n=document.createElement(`select`);if(n.className=`dialog__input`,n.style.marginBottom=`8px`,t){let e=w(t.providerId),r=document.createElement(`option`);return r.value=t.providerId,r.textContent=e.name,n.appendChild(r),n.disabled=!0,n.style.opacity=`0.7`,n}let r=document.createElement(`option`);r.value=``,r.textContent=`Select a provider…`,r.disabled=!0,r.selected=!0,r.hidden=!0,n.appendChild(r);let i=new Set(E().map(e=>e.providerId)),a=[...de()].sort((e,t)=>w(e).name.localeCompare(w(t).name));for(let t of a){if(i.has(t))continue;if(e?.providerFilter){if(!e.providerFilter(t))continue}else if(!Pe(t))continue;let r=document.createElement(`option`);r.value=t,r.textContent=w(t).name,n.appendChild(r)}return n}function Xn(e,t){let n=Yn(e,t),r=document.createElement(`div`);r.className=`dialog__desc`,r.style.cssText=`font-size: 12px; color: var(--s2-content-tertiary); margin-bottom: 16px; margin-top: -4px;`;let i=document.createElement(`div`);i.style.cssText=`margin-bottom: 16px; display: none;`;let a=document.createElement(`button`);a.className=`dialog__btn`,a.textContent=`Login`,a.style.cssText=`width: 100%; margin-bottom: 8px;`,i.appendChild(a);let o=document.createElement(`div`);o.className=`dialog__desc`,o.style.cssText=`font-size: 12px; color: var(--s2-content-secondary); text-align: center;`,i.appendChild(o);let s=document.createElement(`div`),c=document.createElement(`div`);c.className=`dialog__desc`,s.appendChild(c);let l=document.createElement(`input`);l.className=`dialog__input`,l.type=`password`,l.autocomplete=`off`,l.spellcheck=!1,t&&(l.value=t.apiKey),s.appendChild(l);let u=document.createElement(`div`),d=document.createElement(`div`);d.className=`dialog__desc`,d.textContent=`Base URL:`,u.appendChild(d);let f=document.createElement(`input`);f.className=`dialog__input`,f.type=`text`,f.autocomplete=`off`,f.spellcheck=!1,t?.baseUrl&&(f.value=t.baseUrl),u.appendChild(f);let p=document.createElement(`div`);p.className=`dialog__desc`,p.style.cssText=`font-size: 11px; color: var(--s2-content-secondary); margin-top: -12px; margin-bottom: 16px;`,u.appendChild(p);let m=document.createElement(`div`);m.style.display=`none`;let h=document.createElement(`div`);h.className=`dialog__desc`,h.textContent=`Deployment:`,m.appendChild(h);let g=document.createElement(`input`);g.className=`dialog__input`,g.type=`text`,g.autocomplete=`off`,g.spellcheck=!1,t?.deployment&&(g.value=t.deployment),m.appendChild(g);let _=document.createElement(`div`);_.className=`dialog__desc`,_.style.cssText=`font-size: 11px; color: var(--s2-content-secondary); margin-top: -12px; margin-bottom: 16px;`,m.appendChild(_);let v=document.createElement(`div`);v.style.display=`none`;let y=document.createElement(`div`);y.className=`dialog__desc`,y.textContent=`API Version:`,v.appendChild(y);let b=document.createElement(`input`);b.className=`dialog__input`,b.type=`text`,b.autocomplete=`off`,b.spellcheck=!1,t?.apiVersion&&(b.value=t.apiVersion),v.appendChild(b);let x=document.createElement(`div`);x.className=`dialog__desc`,x.style.cssText=`font-size: 11px; color: var(--s2-content-secondary); margin-top: -12px; margin-bottom: 16px;`,v.appendChild(x);let S=document.createElement(`div`);S.style.cssText=`color: var(--slicc-cone); font-size: 12px; margin-bottom: 8px; display: none;`;let C=document.createElement(`button`);return C.className=`dialog__btn`,C.textContent=t?`Save`:`Add`,{providerSelect:n,providerDesc:r,oauth:{section:i,loginBtn:a,status:o},apiKeySection:s,apiKeyLabel:c,apiKeyInput:l,baseUrlSection:u,baseUrlInput:f,baseUrlDesc:p,deploymentSection:m,deploymentInput:g,deploymentDesc:_,apiVersionSection:v,apiVersionInput:b,apiVersionDesc:x,errorEl:S,saveBtn:C}}function Zn(e){let t=document.createElement(`div`);t.setAttribute(`data-slicc-device-code-prompt`,``),t.style.cssText=`display:flex;flex-direction:column;gap:8px`;let n=document.createElement(`div`);n.className=`dialog__desc`,n.textContent=`Verification code`,n.style.cssText=`font-size: 11px; color: var(--s2-content-tertiary);`;let r=document.createElement(`div`);r.textContent=e,r.style.cssText=[`font: 600 22px ui-monospace, SFMono-Regular, Menlo, monospace`,`letter-spacing: 2px`,`color: var(--s2-content-primary, #e6edf3)`,`background: var(--s2-bg-secondary, #161b22)`,`border: 1px solid var(--s2-border, #30363d)`,`border-radius: 6px`,`padding: 10px 12px`,`text-align: center`,`user-select: all`,`cursor: text`].join(`;`);let i=document.createElement(`div`);i.className=`dialog__desc`,i.style.cssText=`font-size: 12px; color: var(--s2-content-secondary);`,i.textContent=`Click Copy & Continue — we will open the GitHub authorization page in a new tab. Paste this code there if it is not already filled in.`;let a=document.createElement(`div`);a.style.cssText=`display:flex;gap:8px;justify-content:flex-end;margin-top:4px`;let o=document.createElement(`button`);o.type=`button`,o.className=`dialog__btn`,o.textContent=`Cancel`;let s=document.createElement(`button`);return s.type=`button`,s.className=`dialog__btn dialog__btn--primary`,s.textContent=`Copy & Continue`,a.appendChild(o),a.appendChild(s),t.appendChild(n),t.appendChild(r),t.appendChild(i),t.appendChild(a),{prompt:t,cancelBtn:o,continueBtn:s}}function Qn(e){return t=>new Promise(n=>{let r=e.loginBtn.style.display,i=e.status.style.display;e.loginBtn.style.display=`none`,e.status.style.display=`none`;let{prompt:a,cancelBtn:o,continueBtn:s}=Zn(t.userCode),c=()=>{try{a.remove()}catch{}e.loginBtn.style.display=r,e.status.style.display=i};o.addEventListener(`click`,()=>{c(),n(`cancel`)}),s.addEventListener(`click`,()=>{(async()=>{try{await Je(t.userCode)}catch{}c(),e.status.style.display=i,e.status.textContent=`Waiting for you to authorize in the new tab…`,n(`continue`)})()}),e.section.appendChild(a)})}async function $n(e,n){let r=n.providerSelect.value;if(!r)return;let i=w(r);if(!i.onOAuthLogin&&!i.onOAuthLoginIntercepted)return;let{status:a}=n.oauth,o=E().some(e=>e.providerId===r),s=Ne(r);if(i.requiresBaseUrl&&!n.baseUrlInput.value.trim()&&!s){a.textContent=`Base URL is required.`,a.style.color=`var(--slicc-cone)`,n.baseUrlInput.focus();return}i.requiresBaseUrl&&n.baseUrlInput.value.trim()&&T(r,``,n.baseUrlInput.value.trim()),a.textContent=`Opening login window...`;try{if(i.onOAuthLoginIntercepted){let{createInterceptingOAuthLauncherForCurrentRuntime:r}=await t(async()=>{let{createInterceptingOAuthLauncherForCurrentRuntime:e}=await import(`./oauth-service-GpUOM3Aw.js`);return{createInterceptingOAuthLauncherForCurrentRuntime:e}},__vite__mapDeps([75,3,18,6,19,20,21,22,27,58])),a=await r();if(!a)throw Error(`No controlled-browser CDP transport available — open SLICC in standalone mode or the Chrome extension.`);await i.onOAuthLoginIntercepted(a,()=>Vn(e),{presentDeviceCode:Qn(n.oauth)})}else if(i.onOAuthLogin){let{createOAuthLauncher:n}=await t(async()=>{let{createOAuthLauncher:e}=await import(`./oauth-service-GpUOM3Aw.js`);return{createOAuthLauncher:e}},__vite__mapDeps([75,3,18,6,19,20,21,22,27,58])),r=n();await i.onOAuthLogin(r,()=>Vn(e))}}catch(e){if(!o)try{await d(r)}catch{}In.error(`OAuth login failed`,{providerId:r,error:e instanceof Error?e.message:String(e)}),a.textContent=`Login failed: ${e instanceof Error?e.message:String(e)}`}}function er(e,t){if(t.isOAuth){e.oauth.section.style.display=``,e.apiKeySection.style.display=`none`,e.baseUrlSection.style.display=t.requiresBaseUrl?``:`none`,t.requiresBaseUrl&&(e.baseUrlInput.placeholder=t.baseUrlPlaceholder||`https://...`,e.baseUrlDesc.textContent=t.baseUrlDescription||``),e.oauth.loginBtn.textContent=`Login with ${t.name}`,e.saveBtn.style.display=`none`;return}e.oauth.section.style.display=`none`;let n=t.requiresApiKey?`API Key`:`API Key (optional)`;e.apiKeyLabel.textContent=`${n}${t.apiKeyEnvVar?` (${t.apiKeyEnvVar})`:``}:`,e.apiKeyInput.placeholder=t.apiKeyPlaceholder||`API key`,e.apiKeySection.style.display=t.requiresApiKey||t.optionalApiKey?``:`none`,e.baseUrlInput.placeholder=t.baseUrlPlaceholder||`https://...`,e.baseUrlDesc.textContent=t.baseUrlDescription||``,e.baseUrlSection.style.display=t.requiresBaseUrl?``:`none`,e.saveBtn.style.display=``}function tr(e,t){t.requiresDeployment?(e.deploymentSection.style.display=``,e.deploymentInput.placeholder=t.deploymentPlaceholder||`deployment-name`,e.deploymentDesc.textContent=t.deploymentDescription||``):e.deploymentSection.style.display=`none`}function nr(e,t){t.requiresApiVersion?(e.apiVersionSection.style.display=``,!e.apiVersionInput.value&&t.apiVersionDefault&&(e.apiVersionInput.value=t.apiVersionDefault),e.apiVersionInput.placeholder=t.apiVersionDefault||`api-version`,e.apiVersionDesc.textContent=t.apiVersionDescription||``):e.apiVersionSection.style.display=`none`}function rr(e){let t=e.providerSelect.value;if(!t){e.providerDesc.textContent=``,e.oauth.section.style.display=`none`,e.apiKeySection.style.display=`none`,e.baseUrlSection.style.display=`none`,e.deploymentSection.style.display=`none`,e.apiVersionSection.style.display=`none`,e.saveBtn.style.display=`none`;return}let n=w(t);e.providerDesc.textContent=n.description,er(e,n),tr(e,n),nr(e,n)}function ir(e,t){let n=t.providerSelect.value;if(!n)return;let r=w(n),i=(e,n)=>{t.errorEl.textContent=e,t.errorEl.style.display=``,n.focus()};if(r.requiresApiKey&&t.apiKeyInput.value.trim().length<5){i(`API key is required (at least 5 characters).`,t.apiKeyInput);return}if(r.requiresBaseUrl&&!t.baseUrlInput.value.trim()){i(`Base URL is required for this provider.`,t.baseUrlInput);return}if(r.requiresDeployment&&!t.deploymentInput.value.trim()){i(`Deployment name is required for this provider.`,t.deploymentInput);return}T(n,t.apiKeyInput.value.trim(),t.baseUrlInput.value.trim()||void 0,t.deploymentInput.value.trim()||void 0,t.apiVersionInput.value.trim()||void 0),Vn(e)}function ar(e,t){let{dialog:n,options:r}=e,i=E().length>0;if(r?.startInAddAccount){let t=document.createElement(`button`);t.className=`dialog__btn dialog__btn--secondary`,t.style.marginTop=`8px`,t.textContent=`Cancel`,t.addEventListener(`click`,()=>Y(e)),n.appendChild(t)}else if(!t&&!i){let t=document.createElement(`button`);t.className=`dialog__btn dialog__btn--secondary`,t.style.marginTop=`8px`,t.textContent=`Connect to another browser`,t.addEventListener(`click`,()=>lr(e)),n.appendChild(t)}else if(i){let t=document.createElement(`button`);t.className=`dialog__btn dialog__btn--secondary`,t.style.marginTop=`8px`,t.textContent=`Back`,t.addEventListener(`click`,()=>X(e)),n.appendChild(t)}}function Z(e,t){let{dialog:n}=e;n.innerHTML=``;let r=document.createElement(`div`);r.className=`dialog__title`,r.textContent=t?`Edit Account`:`Add Account`,n.appendChild(r);let i=document.createElement(`div`);i.className=`dialog__desc`,i.textContent=`Provider:`,n.appendChild(i);let a=Xn(e.options,t);n.appendChild(a.providerSelect),n.appendChild(a.providerDesc),a.oauth.loginBtn.addEventListener(`click`,()=>{$n(e,a)}),t?.userName&&(a.oauth.status.textContent=`Logged in as ${t.userName}`,a.oauth.loginBtn.textContent=`Re-login`),n.appendChild(a.oauth.section),n.appendChild(a.apiKeySection),n.appendChild(a.baseUrlSection),n.appendChild(a.deploymentSection),n.appendChild(a.apiVersionSection),n.appendChild(a.errorEl),a.providerSelect.addEventListener(`change`,()=>{a.errorEl.style.display=`none`,rr(a)}),rr(a),a.saveBtn.addEventListener(`click`,()=>ir(e,a));let o=t=>{t.key===`Enter`&&ir(e,a)};a.apiKeyInput.addEventListener(`keydown`,o),a.baseUrlInput.addEventListener(`keydown`,o),a.deploymentInput.addEventListener(`keydown`,o),a.apiVersionInput.addEventListener(`keydown`,o),n.appendChild(a.saveBtn),ar(e,!!t),requestAnimationFrame(()=>{let e=a.providerSelect.value;if(!e)return;let t=w(e);t.requiresApiKey?a.apiKeyInput.focus():t.requiresBaseUrl&&a.baseUrlInput.focus()})}function or(e,t,n){Rn(t,n),n.textContent=`Connecting…`,n.style.display=``,n.style.color=`var(--s2-content-secondary)`;let r=setTimeout(()=>{e.overlay.remove(),e.resolve(!1)},800);n.dataset.dismissTimer=String(r)}function sr(e,t){let{dialog:n}=e;n.innerHTML=``;let r=document.createElement(`div`);r.className=`dialog__title`,r.textContent=`Connect this browser?`,n.appendChild(r);let i=document.createElement(`div`);i.className=`dialog__desc`,i.style.marginBottom=`12px`,i.textContent=`You’ve been invited to mirror another SLICC browser. Click below to start syncing.`,n.appendChild(i);let a=document.createElement(`div`);a.className=`dialog__desc`,a.style.cssText=`font-family: monospace; font-size: 11px; color: var(--s2-content-secondary); word-break: break-all; margin-bottom: 16px; padding: 8px; background: var(--s2-bg-secondary); border-radius: 4px;`,a.textContent=t.length>80?t.slice(0,40)+`…`+t.slice(-37):t,n.appendChild(a);let o=document.createElement(`div`);o.style.cssText=`font-size: 12px; color: var(--s2-content-secondary); margin-bottom: 8px; display: none;`,n.appendChild(o);let s=document.createElement(`button`);s.className=`dialog__btn`,s.textContent=`Connect`,s.addEventListener(`click`,()=>{let n=F(window.localStorage,t);if(!n){o.textContent=`Invalid sync URL.`,o.style.display=``,o.style.color=`var(--slicc-cone)`;return}or(e,n.joinUrl,o)}),n.appendChild(s);let c=document.createElement(`button`);c.className=`dialog__btn dialog__btn--secondary`,c.style.marginTop=`8px`,c.textContent=`Set up an account instead`,c.addEventListener(`click`,()=>Z(e)),n.appendChild(c)}function cr(){let e=document.createElement(`details`);e.style.cssText=`margin-bottom: 12px; font-size: 12px; color: var(--s2-content-secondary);`;let t=document.createElement(`summary`);t.style.cssText=`cursor: pointer; user-select: none; color: var(--s2-content-secondary);`,t.textContent=`How do I get the sync URL?`,e.appendChild(t);let n=document.createElement(`div`);n.style.cssText=`margin-top: 8px; padding: 10px 12px; background: var(--s2-bg-layer-2); border-radius: var(--s2-radius-default); border: 1px solid var(--s2-border-subtle); line-height: 1.5;`;let r=document.createElement(`ol`);r.style.cssText=`margin: 0; padding-left: 20px;`;for(let e of[`On the other SLICC, click the avatar (top right).`,`Choose “Enable multi-browser sync” — the URL is copied automatically.`,`Paste it below. Both browsers must be on the same SLICC version.`]){let t=document.createElement(`li`);t.textContent=e,r.appendChild(t)}return n.appendChild(r),e.appendChild(n),e}function lr(e){let{dialog:t}=e;t.innerHTML=``;let n=document.createElement(`div`);n.className=`dialog__title`,n.textContent=`Connect to another browser`,t.appendChild(n);let r=document.createElement(`div`);r.className=`dialog__desc`,r.style.marginBottom=`12px`,r.textContent=`Paste a multi-browser sync URL to mirror another SLICC browser.`,t.appendChild(r),t.appendChild(cr());let a=document.createElement(`div`);a.className=`dialog__desc`,a.textContent=`Sync URL:`,t.appendChild(a);let o=document.createElement(`input`);o.className=`dialog__input`,o.type=`text`,o.autocomplete=`off`,o.spellcheck=!1,o.placeholder=`${i}/join/<token>`,t.appendChild(o);let s=document.createElement(`div`);s.style.cssText=`color: var(--slicc-cone); font-size: 12px; margin-bottom: 8px; display: none;`,t.appendChild(s);let c=document.createElement(`div`);c.style.cssText=`font-size: 12px; color: var(--s2-content-secondary); margin-bottom: 8px; display: none;`;let l=document.createElement(`button`);l.className=`dialog__btn`,l.textContent=`Connect`,l.addEventListener(`click`,()=>{let t=o.value.trim();if(!t){s.textContent=`Paste a sync URL to continue.`,s.style.display=``,o.focus();return}let n=F(window.localStorage,t);if(!n){s.textContent=Pn(t),s.style.display=``,o.focus();return}or(e,n.joinUrl,c)}),t.appendChild(l),t.appendChild(c);let u=document.createElement(`button`);u.className=`dialog__btn dialog__btn--secondary`,u.style.marginTop=`8px`,u.textContent=`Back`,u.addEventListener(`click`,()=>Z(e)),t.appendChild(u),o.addEventListener(`input`,()=>{s.style.display=`none`}),o.addEventListener(`keydown`,e=>{e.key===`Enter`&&l.click()}),requestAnimationFrame(()=>o.focus())}function ur(e){return Ue(`button`),new Promise(t=>{let n=document.createElement(`div`);n.className=`dialog-overlay`;let r=document.createElement(`div`);r.className=`dialog`,r.style.cssText=`max-width: 480px; width: 90vw; padding: 32px;`;let i={overlay:n,dialog:r,options:e,accountsBefore:localStorage.getItem(`slicc_accounts`)??``,resolve:t};e?.startInAddAccount?Z(i):E().length>0?X(i):e?.autoJoinUrl?sr(i,e.autoJoinUrl):e?.preferTrayJoin?lr(i):Z(i),n.appendChild(r),document.body.appendChild(n)})}var dr=n(`tray-leader-lock`),fr=!1,Q=null,pr=null;function mr(e){let t=()=>{Q===t&&(Q=null),e()};return Q=t,t}function hr(e){pr=e}function gr(){return fr}function _r(){fr=!0;let e=pr;pr=null;try{e?.()}catch(e){dr.error(`Fatal-boot leader teardown threw`,e)}let t=Q;Q=null,t?.()}var $=n(`main`);function vr(e){try{return new URL(e).searchParams.has(`ui-fixture`)}catch{return!1}}function yr(){t(async()=>{let{setupModelCatalog:e}=await import(`./setup-model-catalog-CZW4Je4-.js`);return{setupModelCatalog:e}},__vite__mapDeps([76,7,8,9,3,10,11,12,6,13,14,4,17,15,1,18,19,20,21,22,23,24,25,26,27,28,29,16,30,31,32,33,34,35,0])).then(({setupModelCatalog:e})=>e({locationHref:window.location.href,storage:window.localStorage,envBaseUrl:null,isDev:!1})).catch(()=>{})}async function br(){Qt();let e=document.getElementById(`app`);if(!e)throw Error(`#app element not found`);let n=D(),r=Rt({locationHref:window.location.href,storage:window.localStorage,envBaseUrl:null,isDev:!1,isExtension:n});if(vr(window.location.href)){let{mountWcUiPreview:n}=await t(async()=>{let{mountWcUiPreview:e}=await import(`./wc-shell-C6n7vd_q.js`).then(e=>e.s);return{mountWcUiPreview:e}},__vite__mapDeps([51,6,3,4,52,19,49,16,17,7,8,9,10,11,12,13,14,15,1,18,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,53,54,55,37,56]));n(e);return}zt(),Ut(),Dn(),r!==`connect`&&We({isExtensionRealm:n}).catch(()=>{});let i=it(window.location.search),a=r===`cherry`?null:vn(window.location.search),o=!!a&&O();if(await On(i?{apiBaseUrl:i.apiBaseUrl,token:i.token}:null,o&&a?{extensionId:a.extensionId}:null)===`reload-pending`)return;if(!n&&(r===`follower`||r===`cherry`)){let{bootFollowerFloat:n}=await t(async()=>{let{bootFollowerFloat:e}=await import(`./wc-follower-J3wUyIaU.js`);return{bootFollowerFloat:e}},__vite__mapDeps([77,3,4,1,68,50,6,51,52,19,49,16,17,7,8,9,10,11,12,13,14,15,18,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,53,54,55,37,56,57,58,59,60,61,62,63,64,65,66,67,69,43,70,71,72,78,79,80,81,82,45,83,84,85,86,87,88,89,90,91,92]));return n(e,$,r)}await Ge(),De(),yr(),i?.apiBaseUrl&&!o&&(He(i.apiBaseUrl),Fe(i.token),await Re());let{bootstrapOAuthReplicas:s}=await t(async()=>{let{bootstrapOAuthReplicas:e}=await import(`./oauth-bootstrap-CVpyXhcC.js`);return{bootstrapOAuthReplicas:e}},__vite__mapDeps([93,3,4,16,17,7,8,9,10,11,12,6,13,14,15,1,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,46]));if(await Promise.race([s().catch(e=>{$.error(`OAuth bootstrap failed`,e)}),new Promise(e=>setTimeout(e,1e4))]),r===`connect`){globalThis.__slicc_connect_mode=!0;let{loadLegacyStyles:n}=await t(async()=>{let{loadLegacyStyles:e}=await import(`./legacy-styles-B3nS5QUo.js`);return{loadLegacyStyles:e}},__vite__mapDeps([94,3]));await n();let{mountConnectSurface:r}=await t(async()=>{let{mountConnectSurface:e}=await import(`./connect-surface-BpnrnNX9.js`);return{mountConnectSurface:e}},__vite__mapDeps([95,16,3,4,17,7,8,9,10,11,12,6,13,14,15,1,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35]));await r(e);return}if(n){let{bootExtensionFloat:n}=await t(async()=>{let{bootExtensionFloat:e}=await import(`./wc-extension-Del7KWdu.js`);return{bootExtensionFloat:e}},__vite__mapDeps([96,3,78,6,4,51,52,19,49,16,17,7,8,9,10,11,12,13,14,15,1,18,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,53,54,55,37,56,57,58,59,60,61,62,63,64,65,66,79,68,80,69,72,81,82,45,70,83,84,85,86,87,88,89,97]));return n(e,$,r===`extension-detached`)}o&&a&&dt(a.extensionId);let{bootLeaderFloat:c}=await t(async()=>{let{bootLeaderFloat:e}=await import(`./wc-live-DISxqg6I.js`).then(e=>e.n);return{bootLeaderFloat:e}},__vite__mapDeps([78,6,3,4,51,52,19,49,16,17,7,8,9,10,11,12,13,14,15,1,18,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,53,54,55,37,56,57,58,59,60,61,62,63,64,65,66,79,68,80,69,72,81,82,45,70,83,84,85,86,87,88,89]));return c(e,$,r)}function xr(e,t){let n=document.createElement(`div`);n.style.cssText=`padding:2rem;text-align:center;font-family:system-ui;`;let r=document.createElement(`h1`);r.textContent=`Failed to start`;let i=document.createElement(`p`);i.textContent=t instanceof Error?t.message:String(t);let a=document.createElement(`button`);a.type=`button`,a.textContent=`Reload`,a.addEventListener(`click`,()=>location.reload()),n.append(r,i,a),e.replaceChildren(n)}async function Sr(e,n){let r;try{({renderBootRecoveryScreen:r}=await t(()=>import(`./recovery-screen-CweL0z_8.js`),__vite__mapDeps([98,21,22])))}catch{xr(e,n);return}if(r(e,n),n instanceof Error&&n.message.includes(`did not signal ready`))try{let{triageModuleWorkerHealth:i}=await t(async()=>{let{triageModuleWorkerHealth:e}=await import(`./worker-triage-BvsMZrdR.js`);return{triageModuleWorkerHealth:e}},[]),a=await i();a===`browser-wedged`&&r(e,n,{verdict:a})}catch{}}br().catch(e=>{$.error(`Fatal error`,e),_r();let t=document.getElementById(`app`);t&&Sr(t,e)});export{ht as A,F as C,j as D,M as E,Ze as M,bt as O,At as S,P as T,St as _,ur as a,wt as b,mn as c,on as d,Yt as f,xt as g,Vt as h,Fn as i,A as j,gt as k,rn as l,$t as m,gr as n,Mn as o,R as p,hr as r,Cn as s,mr as t,an as u,Ot as v,Et as w,Tt as x,Ct as y};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./logger-DDBAeTLF.js";import{n as t,r as n}from"./transcript-export-DP-r8eDz.js";import{t as r}from"./pending-request-table-k-D7ZZsL.js";import{BrowserAPI as i}from"./cdp-
|
|
1
|
+
import{t as e}from"./logger-DDBAeTLF.js";import{n as t,r as n}from"./transcript-export-DP-r8eDz.js";import{t as r}from"./pending-request-table-k-D7ZZsL.js";import{BrowserAPI as i}from"./cdp-Br2ndzi3.js";import{t as a}from"./synthetic-cdp-transport-OUVdC4zy.js";var o=[2,1],s=new Set([`handshake.hello`,`handshake.welcome`,`handshake.version-mismatch`,`cdp.request`,`cdp.response`,`cdp.event`,`permission.request`,`permission.response`,`host.event`,`slicc.event`,`session.export.request`,`session.export.cancel`,`session.export.progress`,`session.export.response`,`session.export.error`]);function c(e,t=[2]){if(typeof e!=`object`||!e)return!1;let n=e;if(typeof n.cherry!=`number`||!t.includes(n.cherry)||typeof n.channelId!=`string`||typeof n.kind!=`string`||!s.has(n.kind))return!1;let r=n.kind;return!(r===`handshake.version-mismatch`&&typeof n.peerVersion!=`number`||(r===`session.export.request`||r===`session.export.cancel`||r===`session.export.progress`||r===`session.export.response`||r===`session.export.error`)&&(typeof n.requestId!=`string`||n.requestId===``||r===`session.export.progress`&&typeof n.phase!=`string`||r===`session.export.response`&&!(n.blob instanceof Blob)||r===`session.export.error`&&typeof n.code!=`string`))}function l(e,t){return!(!t.allowOrigins.includes(e.origin)||t.expectedSource!==null&&e.source!==t.expectedSource||!c(e.data,t.versions)||t.channelId!==null&&e.data.channelId!==t.channelId)}function u(e,t=[2]){if(typeof e!=`object`||!e)return!1;let n=e;return typeof n.cherry==`number`&&!t.includes(n.cherry)&&typeof n.channelId==`string`&&typeof n.kind==`string`}var d=e(`cherry-transport`),f=3e4;function p(e){let r=e instanceof t||typeof e==`object`&&e&&`code`in e?e.code:void 0;return typeof r==`string`&&n.has(r)?r:`transfer-corrupt`}var m=class extends a{opts;channelId=null;nextId=1;pending=new r;connectResolve=null;connectReject=null;connectTimer=null;_joinUrl=null;_features={terminal:!0,files:!0,memory:!0,browser:!0,modelPicker:!0,history:!0,nav:!0,monitor:!0};_theme=null;_layout=null;_effortLevel=null;_flags=null;negotiatedVersion=2;boundHandler=e=>this.handleMessage(e);onHostEvent=null;onExportRequest=null;pendingHostExports=new Map;constructor(e){super({targetUrl:typeof location<`u`?location.href:`about:blank`,targetOrigin:e.targetOrigin,title:`Cherry Host Page`,ids:{target:`cherry-target`,session:`cherry-session`,frame:`cherry-frame`,loader:`cherry-loader`}}),this.opts=e}get hostOrigin(){return this.opts.targetOrigin}getCurrentUrl(){return typeof location<`u`?location.href:super.getCurrentUrl()}get joinUrl(){return this._joinUrl}get features(){return this._features}get theme(){return this._theme}get layout(){return this._layout}get effortLevel(){return this._effortLevel}get flags(){return this._flags}get negotiatedProtocolVersion(){return this.negotiatedVersion}async connect(e){if(this._state!==`disconnected`)throw Error(`Cannot connect: state is ${this._state}`);this._state=`connecting`,this.negotiatedVersion=2,this.channelId=`cherry-${crypto.randomUUID()}`,typeof window<`u`&&window.addEventListener(`message`,this.boundHandler);let t=e?.timeout??f;return new Promise((e,n)=>{this.connectResolve=e,this.connectReject=n,this.connectTimer=setTimeout(()=>{this.connectTimer=null,typeof window<`u`&&window.removeEventListener(`message`,this.boundHandler),this._state=`disconnected`,this.channelId=null,this.connectResolve=null,this.connectReject=null,n(Error(`Cherry handshake timed out after ${t}ms — no handshake.welcome from the embedding page (host SDK missing, not listening, or version-skewed; check the host page's console)`))},t);for(let e of o)this.post({cherry:e,channelId:this.channelId,kind:`handshake.hello`,capabilities:this.opts.capabilities??{navigate:!0,screenshot:!0,openUrl:!0}})})}failPendingConnect(e){if(this.connectReject===null)return;this.connectTimer!==null&&(clearTimeout(this.connectTimer),this.connectTimer=null),typeof window<`u`&&window.removeEventListener(`message`,this.boundHandler),this._state=`disconnected`,this.channelId=null;let t=this.connectReject;this.connectResolve=null,this.connectReject=null,t(e)}disconnect(){this.connectTimer!==null&&(clearTimeout(this.connectTimer),this.connectTimer=null),typeof window<`u`&&window.removeEventListener(`message`,this.boundHandler),this.pending.rejectAll(`Cherry transport disconnected`);for(let[,e]of this.pendingHostExports)e.abort();this.pendingHostExports.clear(),this._state=`disconnected`,this.channelId=null}async forward(e,t,n,r=f){let i=this.nextId++,a=this.pending.issue(i,r,`Cherry CDP timed out after ${r}ms: ${e}`);return this.post({cherry:this.negotiatedVersion,channelId:this.channelId,kind:`cdp.request`,id:i,method:e,params:t}),a}testReceive(e){this.handleMessage(e)}emitSliccEventToHost(e,t){if(!this.channelId){d.warn(`Dropping slicc.event before handshake (no channelId yet)`,{name:e});return}this.post({cherry:this.negotiatedVersion,channelId:this.channelId,kind:`slicc.event`,name:e,detail:t})}post(e){this.opts.counterpart.postMessage(e,this.opts.targetOrigin)}handleMessage(e){let t=this._state===`connected`?[this.negotiatedVersion]:o;if(!l(e,{allowOrigins:this.opts.allowOrigins,expectedSource:this.opts.counterpart,channelId:this.channelId,versions:t})){this.diagnoseRejectedMessage(e,t);return}let n=e.data;if(this.negotiatedVersion<2&&n.kind.startsWith(`session.export.`)){d.warn(`Ignoring a v2-only envelope on a v1-negotiated cherry channel`,{kind:n.kind});return}switch(n.kind){case`handshake.welcome`:this.handleWelcome(n);return;case`cdp.response`:n.error?this.pending.reject(n.id,Error(`Cherry CDP error: ${n.error.message} (${n.error.code})`)):this.pending.resolve(n.id,n.result??{});return;case`cdp.event`:this.emit(n.method,{...n.params??{},sessionId:n.sessionId??this.syntheticIds.session});return;case`host.event`:this.onHostEvent?.(n.name,n.detail);return;case`session.export.request`:this.handleExportRequest(n);return;case`session.export.cancel`:{let e=this.pendingHostExports.get(n.requestId);e&&(e.abort(),this.pendingHostExports.delete(n.requestId));return}default:return}}diagnoseRejectedMessage(e,t){u(e.data,t)?(d.warn(`Cherry protocol version mismatch — update the older side`,{peerVersion:e.data.cherry,supportedVersions:[...o],origin:e.origin}),e.data.channelId===this.channelId&&this.opts.allowOrigins.includes(e.origin)&&e.source===this.opts.counterpart&&this.failPendingConnect(Error(`Cherry protocol version mismatch (peer v${e.data.cherry}, ours v2) — update the older side`))):c(e.data,o)&&d.warn(`Rejected a cherry envelope (origin/source/channel mismatch)`,{origin:e.origin,allowOrigins:this.opts.allowOrigins})}handleWelcome(e){this.connectTimer!==null&&(clearTimeout(this.connectTimer),this.connectTimer=null),this._state=`connected`,this.negotiatedVersion=e.cherry,this._joinUrl=e.joinUrl??null,this._theme=e.theme??null,this._layout=e.layout??null,this._effortLevel=e.effortLevel??null,this._flags=e.flags??null,this._features=e.features??{terminal:!0,files:!0,memory:!0,browser:!0,modelPicker:!0,history:!0,nav:!0,monitor:!0},d.info(`Cherry handshake complete`,{channelId:this.channelId,negotiatedVersion:this.negotiatedVersion}),this.connectResolve?.(),this.connectResolve=null,this.connectReject=null}handleExportRequest(e){let{requestId:t,sessionId:n}=e;if(!this.onExportRequest||!this.channelId){this.postExportError(t,`transfer-aborted`);return}let r=new AbortController;this.pendingHostExports.set(t,r);let i=this.channelId;this.onExportRequest(t,n,r.signal,e=>{this.pendingHostExports.has(t)&&this.post({cherry:this.negotiatedVersion,channelId:i,kind:`session.export.progress`,requestId:t,phase:e.phase,...e.processedBytes===void 0?{}:{processedBytes:e.processedBytes},...e.estimatedBytes===void 0?{}:{estimatedBytes:e.estimatedBytes}})}).then(e=>{this.pendingHostExports.delete(t),this.post({cherry:this.negotiatedVersion,channelId:i,kind:`session.export.response`,requestId:t,blob:e})}).catch(e=>{this.pendingHostExports.delete(t),this.postExportError(t,p(e))})}postExportError(e,t){this.channelId&&this.post({cherry:this.negotiatedVersion,channelId:this.channelId,kind:`session.export.error`,requestId:e,code:t})}},h=e(`cherry-boot`);function g(){let e=location.ancestorOrigins;if(e&&e.length>0){let t=e[0];if(t&&t!==`null`)return t}if(document.referrer)try{return new URL(document.referrer).origin}catch{}return location.origin}async function _(){let e=g(),t=[e],n=e,r=new m({counterpart:window.parent,allowOrigins:t,targetOrigin:n});await r.connect(),h.info(`Cherry transport connected`);let a=r.joinUrl;if(!a)throw Error(`cherry boot: no joinUrl from handshake`);return{transport:r,browser:new i(r),joinUrl:a}}export{_ as setupCherryFollower};
|
|
@@ -30,7 +30,7 @@ Examples:
|
|
|
30
30
|
mcp --serve /workspace/skills/jira/jira.jsh
|
|
31
31
|
mcp --serve --list
|
|
32
32
|
mcp --serve --stop
|
|
33
|
-
`}function v(e={}){return n(`mcp`,async(t,n)=>{if(t.length===0||t[0]===`--help`||t[0]===`-h`)return m(_());if(t.includes(`--serve`)){let{runMcpServeCommand:e}=await import(`./serve-command-
|
|
33
|
+
`}function v(e={}){return n(`mcp`,async(t,n)=>{if(t.length===0||t[0]===`--help`||t[0]===`-h`)return m(_());if(t.includes(`--serve`)){let{runMcpServeCommand:e}=await import(`./serve-command-DpIfibWZ.js`);try{return await e(t,n)}catch(e){return h(`mcp --serve: ${e instanceof Error?e.message:String(e)}`)}}let r=t[0],i=t.slice(1);try{switch(r){case`add`:return await y(i,e);case`list`:case`ls`:return await x(i,e);case`delete`:case`rm`:return await T(i,e);case`invoke`:return await E(i,e);case`search`:return await C(i,e);case`refresh`:return await q(i,e);case`auth`:return await ee(i,e);case`exposure`:return await te(i,e);case`import`:return await ne(i,e);default:return h(`mcp: unknown subcommand "${r}" (try \`mcp --help\`)`)}}catch(e){let t=e instanceof Error?e.message:String(e);return l.error(`mcp subcommand failed`,{sub:r,error:t}),e instanceof a||f(e)?h(`mcp ${r}: ${t}`,124):h(`mcp ${r}: ${t}`)}})}async function y(e,t){if(i(e))return m(`usage: mcp add <url> <name> [--exposure <mode>]
|
|
34
34
|
|
|
35
35
|
Probes <url> with an unauthenticated MCP \`initialize\`. If the server
|
|
36
36
|
returns 401, runs OAuth discovery → dynamic client registration → PKCE
|
|
@@ -45,16 +45,16 @@ Options:
|
|
|
45
45
|
server. Modes: codemode (default), codemode-deferred,
|
|
46
46
|
deferred, direct, hidden. codemode-deferred is an alias
|
|
47
47
|
for codemode.
|
|
48
|
-
`);let n=r(e,{value:[`--exposure`]});if(`error`in n)return g(n.error);if(n.positionals.length<2)return h(`mcp add: expected <url> <name>`);let[a,o]=n.positionals,s=n.values.get(`--exposure`);if(s&&!c.has(s))return h(`mcp add: invalid exposure mode "${s}" (valid: ${[...c].join(`, `)})`);let l=s;if(!/^https?:\/\//i.test(a))return h(`mcp add: invalid URL "${a}" (must start with http:// or https://)`);if(!d(o))return h(`mcp add: invalid name "${o}" (letters, digits, _ and - only; must start with a letter)`);let{getServer:u,listServers:f,setServer:_}=await import(`./store-tvt1tIjf.js`).then(e=>e.r);if(await u(o,t.fs))return h(`mcp add: a server named "${o}" already exists`);let v=o.replace(/[^A-Za-z0-9_]/g,`_`),y=Object.keys(await f(t.fs)).find(e=>e.replace(/[^A-Za-z0-9_]/g,`_`)===v);if(y)return h(`mcp add: server "${o}" conflicts with "${y}" after name normalization`);let{McpClient:x,McpAuthRequiredError:S}=await import(`./client-D5zdJCVT.js`),C=new x({url:a,fetchImpl:t.fetchImpl}),w;try{await C.initialize()}catch(e){if(!(e instanceof S))throw e;w=await b(a,o,e.resourceMetadataUrl,t),C=new x({url:a,fetchImpl:t.fetchImpl,getAuthHeader:()=>Y(o)}),await C.initialize()}let T=await C.toolsList(),E=await C.appsList(),D=new Date().toISOString(),O={url:a,protocolVersion:C.getNegotiatedProtocolVersion(),tools:T,apps:E,addedAt:D,lastRefreshedAt:D,...w?{auth:w}:{},...l?{exposure:l}:{}};await _(o,O,t.fs),await Q(o,t);let k=await $(o,E,t);if(w){let{registerMcpProvider:e}=await import(`./provider-
|
|
48
|
+
`);let n=r(e,{value:[`--exposure`]});if(`error`in n)return g(n.error);if(n.positionals.length<2)return h(`mcp add: expected <url> <name>`);let[a,o]=n.positionals,s=n.values.get(`--exposure`);if(s&&!c.has(s))return h(`mcp add: invalid exposure mode "${s}" (valid: ${[...c].join(`, `)})`);let l=s;if(!/^https?:\/\//i.test(a))return h(`mcp add: invalid URL "${a}" (must start with http:// or https://)`);if(!d(o))return h(`mcp add: invalid name "${o}" (letters, digits, _ and - only; must start with a letter)`);let{getServer:u,listServers:f,setServer:_}=await import(`./store-tvt1tIjf.js`).then(e=>e.r);if(await u(o,t.fs))return h(`mcp add: a server named "${o}" already exists`);let v=o.replace(/[^A-Za-z0-9_]/g,`_`),y=Object.keys(await f(t.fs)).find(e=>e.replace(/[^A-Za-z0-9_]/g,`_`)===v);if(y)return h(`mcp add: server "${o}" conflicts with "${y}" after name normalization`);let{McpClient:x,McpAuthRequiredError:S}=await import(`./client-D5zdJCVT.js`),C=new x({url:a,fetchImpl:t.fetchImpl}),w;try{await C.initialize()}catch(e){if(!(e instanceof S))throw e;w=await b(a,o,e.resourceMetadataUrl,t),C=new x({url:a,fetchImpl:t.fetchImpl,getAuthHeader:()=>Y(o)}),await C.initialize()}let T=await C.toolsList(),E=await C.appsList(),D=new Date().toISOString(),O={url:a,protocolVersion:C.getNegotiatedProtocolVersion(),tools:T,apps:E,addedAt:D,lastRefreshedAt:D,...w?{auth:w}:{},...l?{exposure:l}:{}};await _(o,O,t.fs),await Q(o,t);let k=await $(o,E,t);if(w){let{registerMcpProvider:e}=await import(`./provider-P--IxCQK.js`);e({name:o,serverUrl:a,auth:w})}return t.connectionManager&&await t.connectionManager.connect(o,O),m([`Added MCP server "${o}" → ${a}`,` tools: ${T.length}, apps: ${E.length} (${k} sprinkle${k===1?``:`s`})`,` alias: ${p}/${o}.jsh`,w?` auth: oauth (provider mcp:${o})`:` auth: none`,l?` exposure: ${l}`:` exposure: codemode (default)`].join(`
|
|
49
49
|
`)+`
|
|
50
|
-
`)}async function b(e,n,r,i){let{discoverAuth:a,dynamicRegister:s,runAuthFlow:c}=await import(`./oauth-D20BEoY6.js`),{saveOAuthAccount:u}=await import(`./account-store-
|
|
50
|
+
`)}async function b(e,n,r,i){let{discoverAuth:a,dynamicRegister:s,runAuthFlow:c}=await import(`./oauth-D20BEoY6.js`),{saveOAuthAccount:u}=await import(`./account-store-DavMHU4r.js`).then(e=>e.t),d=await re(i.oauthFetchImpl),f=i.oauthLauncher??await X(),p=await a(e,r,d);l.debug(`MCP OAuth discovery succeeded`,{name:n,serverUrl:e,discoveryPath:p.discoveryPath,issuer:p.issuer});let m=await o(t()),h=await s(p,m,d),g=p.supportedScopes&&p.supportedScopes.length>0?p.supportedScopes.join(` `):void 0,_=await c({asMetadata:p,clientId:h.clientId,scope:g,redirectUri:m,launcher:f,fetchImpl:d}),v=`mcp:${n}`;return await u({providerId:v,accessToken:_.accessToken,refreshToken:_.refreshToken,tokenExpiresAt:_.expiresAt,scopes:_.scope}),{providerId:v,authorizationServer:p.issuer,clientId:h.clientId,redirectUri:m,scope:_.scope??g,registrationClientUri:h.registrationClientUri}}async function x(e,t){if(i(e))return m(`usage: mcp list [--json]
|
|
51
51
|
|
|
52
52
|
Lists configured MCP servers with connection state, exposure mode,
|
|
53
53
|
transport type, and tool counts.
|
|
54
54
|
|
|
55
55
|
Options:
|
|
56
56
|
--json Output as JSON instead of a table.
|
|
57
|
-
`);let n=r(e,{bool:[`--json`]});if(`error`in n)return g(n.error);let a=n.bools.has(`--json`),{ensureAllMcpProvidersRegistered:o}=await import(`./provider-
|
|
57
|
+
`);let n=r(e,{bool:[`--json`]});if(`error`in n)return g(n.error);let a=n.bools.has(`--json`),{ensureAllMcpProvidersRegistered:o}=await import(`./provider-P--IxCQK.js`);await o();let{listServers:s}=await import(`./store-tvt1tIjf.js`).then(e=>e.r),c=await s(t.fs),l=Object.keys(c).sort();if(l.length===0)return m(a?`[]
|
|
58
58
|
`:"No MCP servers configured. Use `mcp add <url> <name>`.\n");if(a){let e=l.map(e=>{let n=c[e];return{name:e,url:n.url,state:t.connectionManager?.has(e)?`connected`:`disconnected`,exposure:n.exposure??`codemode`,transport:n.transport??`unknown`,auth:!!n.auth,tools:n.tools?.length??0,apps:n.apps?.length??0,addedAt:n.addedAt??null}});return m(JSON.stringify(e,null,2)+`
|
|
59
59
|
`)}let u=[[`NAME`,`URL`,`STATE`,`EXPOSURE`,`TRANSPORT`,`AUTH`,`TOOLS`,`APPS`,`ADDED`]];for(let e of l){let n=c[e];u.push([e,n.url,t.connectionManager?.has(e)?`connected`:`-`,n.exposure??`codemode`,n.transport??`-`,n.auth?`yes`:`no`,String(n.tools?.length??0),String(n.apps?.length??0),n.addedAt?n.addedAt.slice(0,10):`-`])}return m(S(u))}function S(e){let t=e[0].map((t,n)=>e.reduce((e,t)=>Math.max(e,(t[n]??``).length),0));return e.map(e=>e.map((e,n)=>e.padEnd(t[n])).join(` `).trimEnd()).join(`
|
|
60
60
|
`)+`
|
|
@@ -63,10 +63,10 @@ Options:
|
|
|
63
63
|
Case-insensitive substring search across the cached tools of every
|
|
64
64
|
registered MCP server. Matches tool name OR description and prints a
|
|
65
65
|
table of (server, tool, description, match-field) rows.
|
|
66
|
-
`);let n=r(e,{});if(`error`in n)return g(n.error);if(n.positionals.length===0)return h(`mcp search: expected <query>`);let a=n.positionals[0],o=a.toLowerCase(),{ensureAllMcpProvidersRegistered:s}=await import(`./provider-
|
|
67
|
-
`);let n=r(e,{});if(`error`in n)return g(n.error);let a=n.positionals[0];if(!a)return h(`mcp delete: expected <name>`);let{ensureMcpProviderRegistered:o,removeMcpProvider:s}=await import(`./provider-
|
|
66
|
+
`);let n=r(e,{});if(`error`in n)return g(n.error);if(n.positionals.length===0)return h(`mcp search: expected <query>`);let a=n.positionals[0],o=a.toLowerCase(),{ensureAllMcpProvidersRegistered:s}=await import(`./provider-P--IxCQK.js`);await s();let{listServers:c}=await import(`./store-tvt1tIjf.js`).then(e=>e.r),l=await c(t.fs),u=Object.keys(l).sort();if(u.length===0)return m("No MCP servers configured. Use `mcp add <url> <name>`.\n");let d=[];for(let e of u){let t=l[e].tools??[];for(let n of t){let t=n.description??``,r=n.name.toLowerCase().includes(o),i=t.toLowerCase().includes(o);if(!r&&!i)continue;let a=r&&i?`name+description`:r?`name`:`description`;d.push({server:e,tool:n.name,description:t,match:a})}}if(d.length===0)return m(`No tools matched "${a}".\n`);d.sort((e,t)=>e.server===t.server?e.tool.localeCompare(t.tool):e.server.localeCompare(t.server));let f=[[`SERVER`,`TOOL`,`DESCRIPTION`,`MATCH`]];for(let e of d)f.push([e.server,e.tool,w(e.description),e.match]);return m(S(f))}function w(e){if(!e)return``;let t=e.replace(/\s+/g,` `).trim();return t.length<=60?t:t.slice(0,59)+`…`}async function T(e,t){if(e.length===0||i(e))return e.length===0?h(`mcp delete: expected <name>`):m(`usage: mcp delete <name>
|
|
67
|
+
`);let n=r(e,{});if(`error`in n)return g(n.error);let a=n.positionals[0];if(!a)return h(`mcp delete: expected <name>`);let{ensureMcpProviderRegistered:o,removeMcpProvider:s}=await import(`./provider-P--IxCQK.js`);await o(a);let{deleteServer:c}=await import(`./store-tvt1tIjf.js`).then(e=>e.r),u=await c(a,t.fs);t.connectionManager&&await t.connectionManager.disconnect(a),await ae(a,t),await oe(a,t);let d=`mcp:${a}`,f=!1;try{let{removeAccount:e,getAccounts:t}=await import(`./account-store-DavMHU4r.js`).then(e=>e.t);t().some(e=>e.providerId===d)&&(await e(d),f=!0)}catch(e){l.warn(`mcp delete: OAuth removal failed`,{providerId:d,error:e instanceof Error?e.message:String(e)})}let p=s(a);return!u&&!f&&!p?h(`mcp delete: no server, alias, or account found for "${a}"`):m([`Removed MCP server "${a}"`,` servers.json: ${u?`removed`:`not present`}`,` alias: cleaned`,` sprinkles: cleaned`,` oauth: ${f?`removed`:`not present`}`,` provider: ${p?`unregistered`:`not registered`}`].join(`
|
|
68
68
|
`)+`
|
|
69
|
-
`)}async function E(e,t){if(e.length===0)return h(`mcp invoke: expected <name>`);if(i(e.slice(0,1)))return m(A());let n=r([e[0]],{});if(`error`in n)return g(n.error);let a=n.positionals[0];if(!a)return h(`mcp invoke: expected <name>`);let o=e.slice(1),{ensureMcpProviderRegistered:s}=await import(`./provider-
|
|
69
|
+
`)}async function E(e,t){if(e.length===0)return h(`mcp invoke: expected <name>`);if(i(e.slice(0,1)))return m(A());let n=r([e[0]],{});if(`error`in n)return g(n.error);let a=n.positionals[0];if(!a)return h(`mcp invoke: expected <name>`);let o=e.slice(1),{ensureMcpProviderRegistered:s}=await import(`./provider-P--IxCQK.js`);await s(a);let{getServer:c}=await import(`./store-tvt1tIjf.js`).then(e=>e.r),l=await c(a,t.fs);if(!l)return h(`mcp invoke: unknown server "${a}" (run \`mcp add <url> ${a}\` first)`);let u=l.tools??[];if(o.length===0||i(o.slice(0,1)))return m(j(a,l,u));let d=r([o[0]],{});if(`error`in d)return g(d.error);let f=d.positionals[0];if(!f)return h(`mcp invoke: expected <tool>`);let p=u.find(e=>e.name===f);if(!p)return h(`mcp invoke: unknown tool "${f}" on "${a}" (run \`${a}\` to list tools)`);let{timeoutMs:_,remaining:v,warnings:y}=D(o.slice(1));if(i(v))return m(N(a,p));let{jsonFlag:b,remaining:x}=O(v),S=P(x,p.inputSchema);if(!S.ok)return h(`mcp invoke: ${S.error}`);let C;if(t.connectionManager){let{connection:e}=await t.connectionManager.connect(a,l),n=_===void 0?void 0:AbortSignal.timeout(_);C=await e.callTool(f,S.value,{signal:n})}else{let{McpClient:e}=await import(`./client-D5zdJCVT.js`),n=new e({url:l.url,fetchImpl:t.fetchImpl,headers:l.headers,getAuthHeader:l.auth?()=>Y(a):void 0,..._===void 0?{}:{timeoutMs:_}});await n.initialize(),C=await n.toolsCall(f,S.value)}if(b)return m(JSON.stringify(C,null,2)+`
|
|
70
70
|
`);let w=K(C);return y.length>0&&(w.stderr=y.map(e=>`${e}\n`).join(``)+w.stderr),w}function D(e){let t=[],n=[],r,i=0;for(;i<e.length;){let a=e[i];if(a.startsWith(`--timeout=`)){let e=k(a.slice(10));e.ok?r=e.value:n.push(e.error),i+=1;continue}if(a===`--timeout`){let t=e[i+1];if(t===void 0||t.startsWith(`--`)){n.push(`mcp invoke: --timeout requires a value (got ${t===void 0?`nothing`:`"${t}"`}); using default.`),i+=1;continue}let a=k(t);a.ok?r=a.value:n.push(a.error),i+=2;continue}t.push(a),i+=1}return{timeoutMs:r,remaining:t,warnings:n}}function O(e){let t=[],n=!1;for(let r of e)r===`--json`?n=!0:t.push(r);return{jsonFlag:n,remaining:t}}function k(e){if(!/^-?\d+$/.test(e))return{ok:!1,error:`mcp invoke: invalid --timeout value "${e}" (expected positive integer seconds); using default.`};let t=Number(e);return!Number.isFinite(t)||t<1?{ok:!1,error:`mcp invoke: invalid --timeout value "${e}" (must be >= 1 second); using default.`}:{ok:!0,value:t*1e3}}function A(){return`usage: mcp invoke <name> [tool] [--timeout <seconds>] [--json] [--flag value …]
|
|
71
71
|
|
|
72
72
|
mcp invoke <name> List tools on <name>.
|
|
@@ -102,7 +102,7 @@ Arguments are coerced according to the tool's JSON Schema:
|
|
|
102
102
|
|
|
103
103
|
Re-fetches the tool catalog and \`apps/list\` for <name>. Does NOT refresh
|
|
104
104
|
OAuth tokens — for OAuth token refresh use \`mcp auth <name>\`.
|
|
105
|
-
`);let n=r(e,{});if(`error`in n)return g(n.error);let a=n.positionals[0];if(!a)return h(`mcp refresh: expected <name>`);let{ensureMcpProviderRegistered:o}=await import(`./provider-
|
|
105
|
+
`);let n=r(e,{});if(`error`in n)return g(n.error);let a=n.positionals[0];if(!a)return h(`mcp refresh: expected <name>`);let{ensureMcpProviderRegistered:o}=await import(`./provider-P--IxCQK.js`);await o(a);let{getServer:s,setServer:c}=await import(`./store-tvt1tIjf.js`).then(e=>e.r),l=await s(a,t.fs);if(!l)return h(`mcp refresh: unknown server "${a}"`);let u,d,f=l.protocolVersion;if(t.connectionManager){let e=await t.connectionManager.reconnect(a,l);u=await e.listTools(),d=await e.listApps?.()??[]}else{let{McpClient:e,McpAuthRequiredError:n}=await import(`./client-D5zdJCVT.js`),r=new e({url:l.url,fetchImpl:t.fetchImpl,headers:l.headers,getAuthHeader:l.auth?()=>Y(a):void 0});try{await r.initialize()}catch(e){if(e instanceof n)return h(`mcp refresh: server "${a}" returned 401 — token may have expired. Run \`mcp auth ${a}\` to re-authenticate.`);throw e}u=await r.toolsList(),d=await r.appsList(),f=r.getNegotiatedProtocolVersion()}await c(a,{...l,protocolVersion:f,tools:u,apps:d,lastRefreshedAt:new Date().toISOString()},t.fs);let p=await $(a,d,t);return m(`Refreshed "${a}" — tools: ${u.length}, apps: ${d.length} (${p} sprinkle${p===1?``:`s`})\n`)}async function ee(e,t){if(i(e))return m(`usage: mcp auth <name> [--silent | --interactive]
|
|
106
106
|
|
|
107
107
|
Re-authenticate an existing MCP server. By default, attempts a silent
|
|
108
108
|
token renewal using the persisted refresh_token; if that returns no
|
|
@@ -114,7 +114,7 @@ Options:
|
|
|
114
114
|
-i, --interactive Skip silent renewal and open the OAuth popup
|
|
115
115
|
directly. Use after revoking a refresh token or
|
|
116
116
|
when the AS no longer accepts the cached one.
|
|
117
|
-
`);let n=r(e,{bool:s});if(`error`in n)return g(n.error);let a=n.positionals[0];if(!a)return h(`mcp auth: expected <name>`);let o=n.bools.has(`--silent`)||n.bools.has(`-s`),c=n.bools.has(`--interactive`)||n.bools.has(`-i`);if(o&&c)return h(`mcp auth: --silent and --interactive are mutually exclusive`);let{ensureMcpProviderRegistered:u}=await import(`./provider-
|
|
117
|
+
`);let n=r(e,{bool:s});if(`error`in n)return g(n.error);let a=n.positionals[0];if(!a)return h(`mcp auth: expected <name>`);let o=n.bools.has(`--silent`)||n.bools.has(`-s`),c=n.bools.has(`--interactive`)||n.bools.has(`-i`);if(o&&c)return h(`mcp auth: --silent and --interactive are mutually exclusive`);let{ensureMcpProviderRegistered:u}=await import(`./provider-P--IxCQK.js`),d=await u(a,{fetchImpl:t.oauthFetchImpl,launcher:t.oauthLauncher}),{getServer:f}=await import(`./store-tvt1tIjf.js`).then(e=>e.r),p=await f(a,t.fs);if(!p)return h(`mcp auth: unknown server "${a}" (run \`mcp list\` to see configured servers)`);if(!p.auth)return h(`mcp auth: server "${a}" does not use OAuth`);if(!d)return h(`mcp auth: failed to register provider for "${a}"`);let _=`mcp:${a}`,{getRegisteredProviderConfig:v}=await import(`./providers-CxPkFUlz.js`).then(e=>e.r),y=v(_);if(!y)return h(`mcp auth: provider "${_}" is not registered`);if(c)return await J(a,y,t);if(!y.onSilentRenew)return o?h(`mcp auth: provider "${_}" does not support silent renewal; retry without --silent`):await J(a,y,t);let b=null;try{b=await y.onSilentRenew()}catch(e){let t=e instanceof Error?e.message:String(e);if(o)return h(`mcp auth: silent renewal for "${a}" failed (${t}); retry without --silent to run the interactive flow`);l.debug(`mcp auth: silent renewal threw, falling back to interactive`,{name:a,error:t})}return b?m(`Re-authenticated "${a}" via silent renewal (provider ${_})\n`):o?h(`mcp auth: silent renewal for "${a}" returned no token; retry without --silent to run the interactive flow`):await J(a,y,t)}async function J(e,t,n){if(!t.onOAuthLogin)return h(`mcp auth: provider "${t.id}" does not support interactive OAuth login`);let r=n.oauthLauncher??await X(),i=!1;return await t.onOAuthLogin(r,()=>{i=!0}),i?m(`Re-authenticated "${e}" via interactive login (provider ${t.id})\n`):h(`mcp auth: interactive login for "${e}" did not complete`)}async function te(e,t){if(i(e)||e.length===0)return e.length===0?h(`mcp exposure: expected <name> <mode>`):m(`usage: mcp exposure <name> <mode> [--tool <glob>]
|
|
118
118
|
|
|
119
119
|
Set the exposure mode for an MCP server or individual tools.
|
|
120
120
|
|
|
@@ -145,7 +145,7 @@ Examples:
|
|
|
145
145
|
mcp import ~/.config/cursor/mcp.json
|
|
146
146
|
`);let n=r(e,{});if(`error`in n)return g(n.error);let a=n.positionals[0];if(!a)return h(`mcp import: expected <file>`);let o=await Z(t.fs),s;try{s=await o.readFile(a,{encoding:`utf-8`})}catch{return h(`mcp import: cannot read "${a}"`)}let c;try{c=JSON.parse(s)}catch{return h(`mcp import: "${a}" is not valid JSON`)}let l=c.mcpServers??{},u=Object.keys(l);if(u.length===0)return h(`mcp import: no mcpServers found in "${a}"`);let{getServer:f,listServers:p,setServer:_}=await import(`./store-tvt1tIjf.js`).then(e=>e.r),v=[],y=0,b=0;for(let e of u){if(!d(e)){v.push(` skip: "${e}" (invalid name)`),b++;continue}let n=l[e];if(n.command){v.push(` skip: "${e}" (stdio transport — not supported in browser)`),b++;continue}let r=n.url;if(!r||!/^https?:\/\//i.test(r)){v.push(` skip: "${e}" (no valid URL)`),b++;continue}if(await f(e,t.fs)){v.push(` skip: "${e}" (already exists)`),b++;continue}let i=e.replace(/[^A-Za-z0-9_]/g,`_`),a=Object.keys(await p(t.fs)).find(e=>e.replace(/[^A-Za-z0-9_]/g,`_`)===i);if(a){v.push(` skip: "${e}" (conflicts with "${a}" after name normalization)`),b++;continue}await _(e,{url:r,addedAt:new Date().toISOString(),...n.headers?{headers:n.headers}:{}},t.fs),await Q(e,t),v.push(` added: "${e}" → ${r}`),y++}return m([`Imported from "${a}": ${y} added, ${b} skipped`,...v].join(`
|
|
147
147
|
`)+`
|
|
148
|
-
`)}async function Y(e){let t=`mcp:${e}`,{getOAuthAccountInfo:n}=await import(`./account-store-
|
|
148
|
+
`)}async function Y(e){let t=`mcp:${e}`,{getOAuthAccountInfo:n}=await import(`./account-store-DavMHU4r.js`).then(e=>e.t),r=n(t);if(!r)return null;if(r.expired){try{let{getRegisteredProviderConfig:e}=await import(`./providers-CxPkFUlz.js`).then(e=>e.r),n=await e(t)?.onSilentRenew?.();if(n)return`Bearer ${n}`}catch(e){l.debug(`silent renewal threw`,{providerId:t,error:e instanceof Error?e.message:String(e)})}return null}return`Bearer ${r.token}`}async function X(){let{createOAuthLauncher:e}=await import(`./oauth-service-MWzqRq2q.js`);return e()}async function re(e){if(e)return e;let{createProxiedFetch:t}=await import(`./proxied-fetch-F-dCBEfh.js`).then(e=>e.o),n=t();return async(e,t)=>{let r=await n(e,{method:t?.method,headers:t?.headers,body:t?.body}),i=new TextDecoder().decode(r.body);return{ok:r.status>=200&&r.status<300,status:r.status,statusText:r.statusText,text:async()=>i,json:async()=>JSON.parse(i),headers:{get:e=>r.headers[e.toLowerCase()]??null}}}}async function Z(e){if(e)return e;let{VirtualFS:t}=await import(`./fs-D_cFUSir.js`).then(e=>e.t),{GLOBAL_FS_DB_NAME:n}=await import(`./global-db-DJXlpNui.js`).then(e=>e.n);return await t.create({dbName:n})}function ie(e){return`// MCP alias for "${e}" — forwards args to \`mcp invoke ${e}\`.
|
|
149
149
|
// Auto-generated by \`mcp add ${e}\`; do not edit by hand.
|
|
150
150
|
const { promisify } = require('util');
|
|
151
151
|
const { exec } = require('child_process');
|
package/dist/ui/assets/{memory-curation-seam-CozbYrLJ.js → memory-curation-seam-BCrJp59X.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./logger-LESFN7Hj.js";import"./record-Ban9cWMI.js";import{s as t}from"./kernel-worker-
|
|
1
|
+
import{t as e}from"./logger-LESFN7Hj.js";import"./record-Ban9cWMI.js";import{s as t}from"./kernel-worker-DmM9pRNV.js";import{a as n,i as r,n as i,o as a,s as o,t as s}from"./live-session-curation-CDrfX18C.js";const c=e(`memory-dreaming`),l={kind:`dream`,nameFor:n,rivalsFor:e=>[r(e)]};function u(e,t){return`dream-${e}-${t}.md`}async function d(e){let t=e.today??new Date().toISOString().slice(0,10),n=e.cone?.folder??`cone`;return await f(e,n),a({spawn:e.spawn,vfs:e.vfs,sessionArchivePath:`/sessions/${u(t,n)}`,sessionCount:e.sessionCount,today:t,instructions:l,...e.cone?{cone:e.cone}:{},...e.signal?{signal:e.signal}:{}})}async function f(e,t){if(i())try{await s({vfs:e.vfs,cone:e.cone??{folder:t},spawn:e.spawn,...e.signal?{signal:e.signal}:{}})}catch(e){c.warn(`Live transcript curation before dream failed`,{cone:t,error:e instanceof Error?e.message:String(e)})}}function p(e){return o(e),{async curate(t){let n=globalThis.__slicc_agent;return n?a({spawn:e=>n.spawn(e),vfs:e,sessionArchivePath:t.sessionArchivePath,sessionCount:t.sessionCount,...t.cone?{cone:t.cone}:{}}):{ok:!1,reason:`agent bridge not published yet`,legacyFallbackSafe:!1}},async dream(n){let r=globalThis.__slicc_agent;if(!r)return{ok:!1,reason:`agent bridge not published yet`,legacyFallbackSafe:!1};let i=(await t(e)).length;return d({spawn:e=>r.spawn(e),vfs:e,sessionCount:i,...n.cone?{cone:n.cone}:{},...n.today?{today:n.today}:{}})}}}function m(e){globalThis.__slicc_memory=e}export{p as createMemorySeam,m as publishMemorySeam};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./record-Ban9cWMI.js";import{t,u as n}from"./descriptor-xRf4P0gd.js";import{a as r}from"./kernel-worker-
|
|
1
|
+
import{t as e}from"./record-Ban9cWMI.js";import{t,u as n}from"./descriptor-xRf4P0gd.js";import{a as r}from"./kernel-worker-DmM9pRNV.js";const i=`/sessions/.curation/health.json`;async function a(e,t){try{return(await c(e,n({parentJid:null,folder:t}).memoryPath)).length}catch(e){if(s(e))return null;throw e}}async function o(e){if(!e.readDir)return null;try{let n=await e.readDir(t);return new Set(n.filter(e=>e.type===`directory`).map(e=>e.name))}catch{return new Set}}function s(e){return e?.code===`ENOENT`||e instanceof Error&&e.message.includes(`ENOENT`)}async function c(e,t){let n=await e.readFile(t,{encoding:`utf-8`});return typeof n==`string`?n:new TextDecoder().decode(n)}async function l(e){let t;try{t=await c(e,r)}catch(e){return s(e)?{fresh:!0}:{failure:`sessions index unreadable at ${r}: ${e instanceof Error?e.message:String(e)}`}}try{let e=JSON.parse(t);return Array.isArray(e)?{entries:e}:{failure:`sessions index is not an array`}}catch{return{failure:`sessions index at ${r} is not valid JSON`}}}function u(e){return e.memoryFailed===void 0?e.memoryPending?`pending`:e.memoryCuratedAt===void 0?e.memorySkipped?`skipped`:`none`:`curated`:`failed`}function d(t){let n=new Map([[e,0]]);for(let e of t){if(u(e)!==`curated`)continue;let t=e.cone??`cone`;n.set(t,(n.get(t)??0)+1)}return n}async function f(e,t){let n=await o(e),r=[];for(let[i,o]of d(t))i!==`cone`&&n&&!n.has(i)||r.push({folder:i,curated:o,chars:await a(e,i)});return r}function p(e){return e.filter(e=>e.curated>0&&(e.chars??0)===0).map(e=>e.folder===`cone`?`${e.curated} archive(s) report successful curation but the primary memory file is missing or empty`:`${e.curated} archive(s) from cone "${e.folder}" report successful curation but its memory file is missing or empty`)}async function m(e,t=()=>new Date){let n={at:t().toISOString(),sessions:0,curation:{curated:0,failed:0,pending:0,skipped:0,none:0},primaryMemoryChars:null,cones:[],failures:[]};try{let t=await l(e);if(`failure`in t)return n.failures.push(t.failure),n;let r=`entries`in t?t.entries:[];n.sessions=r.length;for(let e of r)n.curation[u(e)]++;try{n.cones=await f(e,r)}catch(e){return n.failures.push(`memory file unreadable: ${e instanceof Error?e.message:String(e)}`),n}n.primaryMemoryChars=n.cones.find(e=>e.folder===`cone`)?.chars??null,n.curation.failed>0&&n.failures.push(`${n.curation.failed} archive(s) whose last curation attempt failed`),n.failures.push(...p(n.cones))}catch(e){n.failures.push(`health check itself failed: ${e instanceof Error?e.message:String(e)}`)}return n}async function h(e,t){let n=await m(e,t);return await e.mkdir(`/sessions/.curation`,{recursive:!0}),await e.writeFile(i,`${JSON.stringify(n,null,2)}\n`),n}function g(e,t){let{log:n}=t,r=async()=>{try{let t=await h(e);t.failures.length>0?(n.error??n.warn.bind(n))(`memory health check FAILED`,{failures:t.failures,report:i}):n.info(`memory health check ok`,{sessions:t.sessions,curation:t.curation})}catch(e){(n.error??n.warn.bind(n))(`memory health check could not persist its report`,e)}},a=setTimeout(()=>{r()},t.bootDelayMs??9e4),o=setInterval(()=>{r()},t.intervalMs??864e5);return()=>{clearTimeout(a),clearInterval(o)}}export{g as scheduleMemoryHealthChecks};
|
package/dist/ui/assets/{memory-write-execute-DIOFNKgy.js → memory-write-execute-DJFsDfaR.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e}from"./path-utils-DNJG-zQf.js";import{a as t,o as n}from"./memory-budget-CFfevxz_.js";import{n as r,t as i}from"./kernel-worker-
|
|
1
|
+
import{n as e}from"./path-utils-DNJG-zQf.js";import{a as t,o as n}from"./memory-budget-CFfevxz_.js";import{n as r,t as i}from"./kernel-worker-DmM9pRNV.js";function a(e){return Array.isArray(e)&&e.every(e=>typeof e==`object`&&!!e&&typeof e.oldText==`string`&&typeof e.newText==`string`)}function o(e,t){let n=e;for(let[e,r]of t.entries()){if(r.oldText.length===0)return{ok:!1,error:`edit ${e+1}: oldText must not be empty`};let t=n.indexOf(r.oldText);if(t===-1)return{ok:!1,error:`edit ${e+1}: oldText not found in the current file`};if(n.indexOf(r.oldText,t+1)!==-1)return{ok:!1,error:`edit ${e+1}: oldText occurs more than once; include more context to make it unique`};n=n.slice(0,t)+r.newText+n.slice(t+r.oldText.length)}return{ok:!0,content:n}}function s(e,t){return e<=t?`${e} chars, ${t-e} under the ${t}-char budget.`:`${e} chars, ${e-t} OVER the ${t}-char budget — the next write must be smaller than ${e} chars.`}function c(e,t,n){if(t<=n||t<e)return{allowed:!0};let r=t-n;return{allowed:!1,reason:`Rejected: the file would ${t===e?`stay at ${e} chars`:`grow from ${e} to ${t} chars`}, ${r} over the ${n}-char budget. Over budget, a write must shrink the file — cut a whole section rather than shaving characters, then write again.`}}function l(e,t){return`Rejected: this line records ${e} as absent or refuted, but ${e} is outside this pass's visiblePaths — every read of it answered "not visible", which means UNKNOWN, never absent. Keep the stored claim as it was, or name the unverifiable pair in your closing report instead. Line: ${t}`}async function u(e,t){try{let n=await e.readFile(t,{encoding:`utf-8`});return typeof n==`string`?n:new TextDecoder().decode(n)}catch(e){if(e?.code===`ENOENT`)return null;throw e}}function d(e,t,n){if(typeof e.content==`string`)return{ok:!0,next:e.content};if(!a(e.edits))return{ok:!1,error:"`edits` must be a list of { oldText, newText }"};if(t===null)return{ok:!1,error:`${n} does not exist yet — pass \`content\` to create it`};let r=o(t,e.edits);return r.ok?{ok:!0,next:r.content}:r}async function f(a,o,f){if(typeof f.path!=`string`||f.path.length===0)return{content:"memory_write: `path` is required",isError:!0};let p=e(f.path);if(!n(p))return{content:`memory_write: ${p} is not a memory file — use write_file or edit for ordinary files`,isError:!0};if(typeof f.content==`string`==(f.edits!==void 0))return{content:"memory_write: pass exactly one of `content` (whole file) or `edits` (exact replacements)",isError:!0};try{let e=await u(a,p),n=d(f,e,p);if(!n.ok)return{content:`memory_write: ${n.error}`,isError:!0};let m=t(await o.readSessionCount()),h=c(e?.length??0,n.next.length,m);if(!h.allowed)return{content:`memory_write: ${h.reason}`,isError:!0};let g=r(e??``,n.next,o.blindPaths?.()??[]);if(g)return{content:`memory_write: ${l(g.path,g.line)}`,isError:!0};await a.writeFile(p,n.next);let _=await i(a,p,n.next);return _?{content:_,isError:!0}:{content:`Wrote ${p}: ${s(n.next.length,m)}`}}catch(e){return{content:e instanceof Error?e.message:String(e),isError:!0}}}export{f as executeMemoryWrite};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./record-Ban9cWMI.js";import{l as e,p as t,u as n}from"./frozen-archive-writer-
|
|
1
|
+
import"./record-Ban9cWMI.js";import{l as e,p as t,u as n}from"./frozen-archive-writer-DxdIIiWU.js";async function r(r,o,s){if(s.length===0)return!1;let c=o.folder||`cone`;return n(async()=>{let n=await e(r),o=n.filter(e=>(e.cone??`cone`)===c);if(o.length===0)return!1;let l=o.reduce((e,t)=>t.frozenAt>e.frozenAt?t:e),u={...l,cost:i(l.cost,s),models:a(l.models,s)};return await t(r,n.map(e=>e===l?u:e)),!0})}function i(e,t){let n=e?.total??0,r=e?.input??0,i=e?.output??0,a=e?.cacheRead??0,o=e?.cacheWrite??0;for(let e of t)n+=e.usage.cost.total,r+=e.usage.cost.input,i+=e.usage.cost.output,a+=e.usage.cost.cacheRead,o+=e.usage.cost.cacheWrite;return{total:n,input:r,output:i,cacheRead:a,cacheWrite:o}}function a(e,t){let n=new Map;for(let t of e??[])n.set(t.model,{...t});for(let e of t){let t=n.get(e.model)??{model:e.model,cost:0,turns:0,tokens:0};t.cost+=e.usage.cost.total,t.turns+=1,t.tokens+=e.usage.totalTokens,n.set(e.model,t)}return[...n.values()].sort((e,t)=>t.cost-e.cost)}export{r as mergeFoldedCostIntoLatestFrozen};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/quick-llm-
|
|
2
|
-
import{t as e}from"./preload-helper-Czpn1I53.js";import{t}from"./logger-DDBAeTLF.js";import{a as n}from"./feature-flags-DvsApnS-.js";import{V as r,m as i}from"./account-store-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/quick-llm-BEV4p0nB.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/compat-0YnuwvMn.js","assets/models-D9KYIFyv.js","assets/diagnostics-B-5VkVir.js","assets/preload-helper-Czpn1I53.js","assets/env-api-keys-BMbk-OAv.js","assets/provider-env-CTOcDKrQ.js","assets/__vite-browser-external-5eBdwsFd.js","assets/openrouter.models-C88RzzVZ.js","assets/azure-openai-config--zABV6W_.js","assets/logger-DDBAeTLF.js","assets/utf16-clip-CGL7omVm.js","assets/account-store-OAze3utw.js","assets/core-DzRw0pz2.js","assets/feature-flags-DvsApnS-.js","assets/proxied-fetch-4VBgrEIu.js","assets/base64-ELzoYfwP.js","assets/proxy-error-BSFYY7jj.js","assets/api-endpoint-DuEQRZ4g.js","assets/runtime-env-Dlaokqg1.js","assets/secret-topology-hMRoGGjt.js","assets/float-topology-C_iRKPQK.js","assets/secrets-bridge-client-D734Xx8G.js","assets/port-bridge-client-B-gpiOVR.js","assets/panel-rpc-accessor-B4BfPLSo.js","assets/image-markers-q8JQTtid.js","assets/tool-ui-eSQ1g2I1.js","assets/providers-C4_lEdVe.js","assets/stored-accounts-ChNHYF68.js","assets/bedrock-camp-compat-B1oHsbyo.js","assets/bedrock-camp-extra-models-Df3uDddz.js","assets/claude-model-version-3MWQoaco.js","assets/renamed-providers-DDe6My59.js","assets/llm-session-id-bZQs6gBN.js","assets/icons-BJTFywJo.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{t as e}from"./preload-helper-Czpn1I53.js";import{t}from"./logger-DDBAeTLF.js";import{a as n}from"./feature-flags-DvsApnS-.js";import{V as r,m as i}from"./account-store-OAze3utw.js";import"./main-C90hD8JI.js";import{t as a}from"./llm-session-id-bZQs6gBN.js";import{F as o,G as s,I as c,L as l,R as u,W as d,z as f}from"./wc-live-DISxqg6I.js";import{findIndexedFrozenRow as p,removeCuratorByproducts as m}from"./frozen-session-delete-DRfrrQHj.js";var h=t(`new-session`),g=`ui-new-session`,_=2e4,v=5e3,y=250;async function b(e){try{let t=await e.openVfs(),n=i()??void 0;if(!n)return;let o;try{o=r()}catch{return}let s=o.provider===`adobe`?{"X-Session-Id":a(g)}:void 0;await f({vfs:t,model:o,apiKey:n,headers:s}),e.onComplete?.()}catch(e){h.warn(`Pending session catch-up failed (boot continues)`,{error:e instanceof Error?e.message:String(e)})}}function x(e){(e.schedule??S)(()=>{b(e)})}function S(e){if(typeof globalThis.requestIdleCallback==`function`){globalThis.requestIdleCallback(e,{timeout:5e3});return}setTimeout(e,0)}function C(e){if(n(`agentic-memory`)){if(!e.agenticMemorySpawn){h.info(`Agentic memory enabled but agent bridge unavailable — using legacy enrichment`);return}return e.agenticMemorySpawn}}async function w(e,t,n,r,i,a){let o=await l({sessionStore:t,vfs:e.vfs,mode:`quick`,agenticMemorySpawn:a,cone:e.cone});return o?(await O(e,o),D(e,t,n,r,i,a,o),o):null}async function T(e,t){let n;try{n=await p(e,t)}catch(e){return h.warn(`Could not confirm the frozen session still exists — treating it as still frozen`,{filename:t.filename,error:e instanceof Error?e.message:String(e)}),t}return n.kind===`absent`?null:n.kind===`present`&&n.row.filename!==t.filename?{...t,filename:n.row.filename}:t}async function E(e,t){let n;try{n=await p(e,t)}catch(e){return h.warn(`Could not confirm whether the frozen session was deleted — leftovers left in place`,{filename:t.filename,error:e instanceof Error?e.message:String(e)}),!1}if(n.kind!==`absent`)return!1;try{let r=await m(e,t,n.entries);r.length>0&&h.warn(`Curator leftovers of a deleted session not fully removed`,{filename:t.filename,errors:r})}catch(e){h.warn(`Curator leftovers sweep threw`,{filename:t.filename,error:e instanceof Error?e.message:String(e)})}return!0}async function D(t,n,r,i,a,s,l){let u=l;try{let n=await c(t.vfs,l,{model:r,apiKey:i,headers:a,skipMemory:!0,pickIcon:t=>e(async()=>{let{pickLucideIcon:e}=await import(`./quick-llm-BEV4p0nB.js`).then(e=>e.n);return{pickLucideIcon:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35])).then(({pickLucideIcon:e})=>e(t))});n&&(u={...n,archive:l.archive},t.onBackgroundEnriched?.(n))}catch(e){h.warn(`Agentic title enrichment threw (draft stays pending)`,{filename:l.filename,error:e instanceof Error?e.message:String(e)})}let d=await T(t.vfs,u);if(!d){h.info(`Frozen session deleted before curation — curator skipped`,{filename:u.filename});return}u=d;let f=await o({sessionStore:n,vfs:t.vfs,mode:`full`,model:r,apiKey:i,headers:a,agenticMemorySpawn:s,cone:t.cone},u).catch(e=>(h.warn(`Agentic memory curator threw (entry stays pending)`,{filename:u.filename,error:e instanceof Error?e.message:String(e)}),null));h.info(`Agentic memory curator finished`,{filename:u.filename,memoryPending:!f||f.memoryPending===!0}),!await E(t.vfs,u)&&(t.onBackgroundEnriched?.(f),t.onSessionSettled?.(f??u))}async function O(e,t){if(!e.captureCompleteSnapshot)return;let n=new AbortController,r,i=new Promise((e,t)=>{r=setTimeout(()=>{n.abort(),t(Object.assign(Error(`Complete snapshot timed out`),{code:`snapshot-timeout`}))},v)});try{await Promise.race([e.captureCompleteSnapshot(t,n.signal),i])}catch(n){let r=n?.code??`unknown`;h.warn(`captureCompleteSnapshot failed`,{code:r}),t.completeSnapshotUnavailable=!0;try{await u(e.vfs,t.filename)}catch{}}finally{r&&clearTimeout(r)}}function k(e){return e?.code===`ENOENT`}function A(e,t){return e===t||t.startsWith(e.endsWith(`/`)?e:`${e}/`)}async function j(e,t,n,r){for(let i of n){let n=`${t}/${i.name}`;if(!r.has(n)){if(i.type===`directory`){let t;try{t=await e.readDir(n)}catch(e){if(k(e))continue;throw e}if(await j(e,n,t,r),[...r].some(e=>e.startsWith(`${n}/`)))continue}try{await e.rm(n)}catch(e){if(!k(e))throw e}}}}async function M(e,t){let n=(await e.listMountPoints()).map(({path:e})=>e);if(n.some(e=>A(e,t)))return;let r=new Set(n.filter(e=>e.startsWith(`${t}/`))),i;try{i=await e.readDir(t)}catch(n){if(n?.code!==`ENOENT`)throw n;await e.mkdir(t,{recursive:!0});return}await j(e,t,i,r),await e.mkdir(t,{recursive:!0})}async function N(t){let n=t.enrichmentRaceMs??_,o=i()??void 0,u;try{u=r()}catch(e){h.info(`No active model — freezing without LLM enrichment`,{error:e instanceof Error?e.message:String(e)})}let f=u?.provider===`adobe`?{"X-Session-Id":a(g)}:void 0,p=new s(new d),m=o&&u?C(t):void 0;if(m)return await w(t,p,u,o,f,m);let v=await l({sessionStore:p,vfs:t.vfs,mode:`quick`,cone:t.cone});if(!v)return null;if(await O(t,v),!o||!u)return h.info(`Frozen without enrichment (no LLM credentials) — left pending`,{filename:v.filename}),t.onSessionSettled?.(v),v;let y=u,b=c(t.vfs,v,{model:y,apiKey:o,headers:f,pickIcon:t=>e(async()=>{let{pickLucideIcon:e}=await import(`./quick-llm-BEV4p0nB.js`).then(e=>e.n);return{pickLucideIcon:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35])).then(({pickLucideIcon:e})=>e(t))}).catch(e=>(h.warn(`Single-click enrichment threw (entry stays pending)`,{filename:v.filename,error:e instanceof Error?e.message:String(e)}),null)),x=await P(b,n,t.onProgress);if(x.kind===`llm`){let e=x.updated?{...x.updated,archive:v.archive}:v;return t.onSessionSettled?.(e),e}return b.then(async e=>{h.info(`Background enrichment resolved after race window`,{filename:v.filename,enriched:e?.filename??null}),t.onBackgroundEnriched?.(e);let n=await T(t.vfs,e??v);n&&t.onSessionSettled?.(n)}),v}async function P(e,t,n){let r=Date.now(),i,a;n?.(0),n&&(i=setInterval(()=>{n(Math.min(1,(Date.now()-r)/t))},y));let o=new Promise(e=>{a=setTimeout(()=>e({kind:`timer`}),t)}),s=e.then(e=>({kind:`llm`,updated:e}));try{return await Promise.race([s,o])}finally{i&&clearInterval(i),a&&clearTimeout(a),n?.(null)}}async function F(e){return L(e,void 0)}async function I(e){return L(e,`skip`)}async function L(e,t){let n=new s(new d),r=await l({sessionStore:n,vfs:e.vfs,mode:`quick`,cone:e.cone,...t?{memory:t}:{}});return r&&await O(e,r),r&&e.onSessionSettled?.(r),r}export{M as resetNewSessionTmp,I as runNewSessionArchiveOnly,N as runNewSessionFreeze,F as runNewSessionFreezeQuick,x as schedulePendingSessionCatchup};
|