sliccy 6.29.0 → 6.30.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ui/assets/__vite-browser-external-5eBdwsFd.js +1 -0
- package/dist/ui/assets/__vite-browser-external-CjLuCwpB.js +1 -0
- package/dist/ui/assets/account-store-83ArXgcG.js +42 -0
- package/dist/ui/assets/{account-store-DSnxgLNJ.js → account-store-kT7dgbK1.js} +29 -30
- package/dist/ui/assets/{adobe-aVpBhLYj.js → adobe-DNQ-ZwRM.js} +1 -1
- package/dist/ui/assets/{adobe-B4F29JMY.js → adobe-zuiYZmoY.js} +2 -2
- package/dist/ui/assets/{agent-message-to-chat-ri8Fr4Sv.js → agent-message-to-chat-BiQK7aJN.js} +1 -1
- package/dist/ui/assets/{anthropic-messages-BqlIV27l.js → anthropic-messages-CwKCE8PD.js} +5 -5
- package/dist/ui/assets/{anthropic-messages-BbI5c8JA.js → anthropic-messages-DPd961JX.js} +5 -5
- package/dist/ui/assets/{apply-layout-CL9CFQ5a.js → apply-layout-C2kPr85z.js} +1 -1
- package/dist/ui/assets/{apps-BNY-jyyh.js → apps-9Wc94FyY.js} +1 -1
- package/dist/ui/assets/{azure-openai-CuHIvNwE.js → azure-openai-B_GFx6XQ.js} +1 -1
- package/dist/ui/assets/{azure-openai-TFQRhgO4.js → azure-openai-BgLRuXUh.js} +1 -1
- package/dist/ui/assets/{azure-openai-responses-DOqakjfa.js → azure-openai-responses-CtOKUN00.js} +1 -1
- package/dist/ui/assets/{azure-openai-responses-C1EEdmtw.js → azure-openai-responses-oRGXQA3K.js} +1 -1
- package/dist/ui/assets/backend-local-Btkv66jT.js +1 -0
- package/dist/ui/assets/{bedrock-camp-CVX95quY.js → bedrock-camp-BDCjQMZx.js} +1 -1
- package/dist/ui/assets/{bedrock-camp-CHi38ceE.js → bedrock-camp-CFmElpzZ.js} +1 -1
- package/dist/ui/assets/{bridge-launch-params-BUV5qlt9.js → bridge-launch-params-B8x2eq4a.js} +1 -1
- package/dist/ui/assets/browser-BCEjSsoK.js +507 -0
- package/dist/ui/assets/{bsh-watchdog-BTqRxbnH.js → bsh-watchdog-BWoQ4vxy.js} +1 -1
- package/dist/ui/assets/{cdp-Cq-O2ziO.js → cdp-CUhn-e9o.js} +2 -2
- package/dist/ui/assets/{cerebras-BElG8qkN.js → cerebras-ClJjxDeF.js} +1 -1
- package/dist/ui/assets/{cerebras-CD6QquBf.js → cerebras-Dfkzn36I.js} +1 -1
- package/dist/ui/assets/{chat-session-store-DQztDoVa.js → chat-session-store-pWb1-jNp.js} +1 -1
- package/dist/ui/assets/{client-CAAAFAry.js → client-6mRSLafV.js} +2 -2
- package/dist/ui/assets/{clipboard-Bd1Wp2vH.js → clipboard-CknViQHB.js} +1 -1
- package/dist/ui/assets/{clipboard-DuHpK59o.js → clipboard-eqmn97SP.js} +1 -1
- package/dist/ui/assets/cloud--vyq2RIF.js +1 -0
- package/dist/ui/assets/{compat-BhgG-Qr-.js → compat-Bn8HnC3L.js} +2 -2
- package/dist/ui/assets/completionchunk-CVTjxyMe.js +65 -0
- package/dist/ui/assets/completionchunk-CksvMkXE.js +65 -0
- package/dist/ui/assets/{composer-speech-RdAxri_8.js → composer-speech-Dra2KNlH.js} +1 -1
- package/dist/ui/assets/{connect-surface-DKvZ8P01.js → connect-surface-KToYOy7V.js} +1 -1
- package/dist/ui/assets/{context-compaction-gzCxn8vG.js → context-compaction-DDaM9TWa.js} +1 -1
- package/dist/ui/assets/{cost-command-_BMgmnMI.js → cost-command-C9faxPNJ.js} +89 -89
- package/dist/ui/assets/{db-ysOO0kLr.js → db-C7OEVMWU.js} +1 -1
- package/dist/ui/assets/{dictation-priming-DGpw1lUV.js → dictation-priming-CNllGgNq.js} +1 -1
- package/dist/ui/assets/{dip-ByAv1QK8.js → dip-rdFXauwM.js} +3 -3
- package/dist/ui/assets/{discovery-preference-iXjdZZE6.js → discovery-preference-yvSQLIqD.js} +1 -1
- package/dist/ui/assets/{dist-d2CXjMIs.js → dist-5RJPBUGc.js} +3 -3
- package/dist/ui/assets/dist-B6I69VMa.js +12 -0
- package/dist/ui/assets/{dist-DB-MlM2G.js → dist-BoNLlUTL.js} +1 -1
- package/dist/ui/assets/{dist-Cc2eS9kS.js → dist-CZvQ4trc.js} +1 -1
- package/dist/ui/assets/dist-CxSRk4im.js +12 -0
- package/dist/ui/assets/dist-DMHgMRaU.js +23 -0
- package/dist/ui/assets/dist-DZD_Ug0d.js +18 -0
- package/dist/ui/assets/dist-DdMcRgpc.js +1 -0
- package/dist/ui/assets/dist-DeB2d2N0.js +2 -0
- package/dist/ui/assets/dist-DwW10w3V.js +2 -0
- package/dist/ui/assets/{ensure-speech-assets-DNIhbHym.js → ensure-speech-assets-B1XhikvN.js} +1 -1
- package/dist/ui/assets/es-D8T2ybXa.js +53 -0
- package/dist/ui/assets/{esbuild-wasm-CUz5LFrh.js → esbuild-wasm-CpCoMVKF.js} +3 -3
- package/dist/ui/assets/{esp32-D9ZurRwV.js → esp32-CoFXh-8H.js} +1 -1
- package/dist/ui/assets/{esp32c2-F0yCL7ES.js → esp32c2-UqsEoF9x.js} +1 -1
- package/dist/ui/assets/{esp32c3-wVAODszM.js → esp32c3-mMBDP9Jj.js} +1 -1
- package/dist/ui/assets/{esp32c5-ChTI-uFN.js → esp32c5-Bab14vpV.js} +1 -1
- package/dist/ui/assets/{esp32c6-IwoGEmKl.js → esp32c6-CCFSaC3T.js} +1 -1
- package/dist/ui/assets/{esp32c61-BJScMw70.js → esp32c61-Cy6rcWHq.js} +1 -1
- package/dist/ui/assets/{esp32h2-YosZEx9u.js → esp32h2-Cru1Ipjy.js} +1 -1
- package/dist/ui/assets/{esp32p4-BSe822vW.js → esp32p4-BGRZ91N9.js} +1 -1
- package/dist/ui/assets/{esp32s2-Dhlhu16A.js → esp32s2-7_BqiXe-.js} +1 -1
- package/dist/ui/assets/{esp32s3-PqxbnxPZ.js → esp32s3-C4XCo2Gh.js} +1 -1
- package/dist/ui/assets/{esp8266-CkAPDkuz.js → esp8266-BN3fFVWu.js} +1 -1
- package/dist/ui/assets/esptool-operations-3FBbK-fD.js +13 -0
- package/dist/ui/assets/esptool-operations-CDJhOTdU.js +12 -0
- package/dist/ui/assets/export-provider-BEHTjSYw.js +1 -0
- package/dist/ui/assets/{export-spool-Crzaptz9.js → export-spool-D9AiwWeo.js} +1 -1
- package/dist/ui/assets/{extension-bridge-transport-CR4Zp6Gm.js → extension-bridge-transport-D3PItLFo.js} +1 -1
- package/dist/ui/assets/{follower-navigate-watcher-DiTsLLuL.js → follower-navigate-watcher-DZpXL_9_.js} +1 -1
- package/dist/ui/assets/{frozen-archive-format-CqpMlNNW.js → frozen-archive-format--7sONywg.js} +1 -1
- package/dist/ui/assets/fs-DFJ4DSye.js +2 -0
- package/dist/ui/assets/fs-DxtSbYUW.js +1 -0
- package/dist/ui/assets/{git-config-Lj0BT7Oc.js → git-config-DA8M5e8O.js} +1 -1
- package/dist/ui/assets/{github-BJpGp9-C.js → github-BBloGIFx.js} +1 -1
- package/dist/ui/assets/{github-DC0sZ4bk.js → github-C_GVZ6np.js} +2 -2
- package/dist/ui/assets/github-copilot-BNWLcrkC.js +2 -0
- package/dist/ui/assets/github-copilot-D32KFpVZ.js +1 -0
- package/dist/ui/assets/global-db-DJXlpNui.js +1 -0
- package/dist/ui/assets/{google-generative-ai-BjzUffX7.js → google-generative-ai-BL_SqY5W.js} +1 -1
- package/dist/ui/assets/{google-generative-ai-CUyKfom8.js → google-generative-ai-DDF2tpZq.js} +1 -1
- package/dist/ui/assets/google-shared-DPuPo5mO.js +11 -0
- package/dist/ui/assets/{google-shared-Bvf-cbUv.js → google-shared-biiFuSpC.js} +11 -11
- package/dist/ui/assets/{google-vertex-Dc8m8x5E.js → google-vertex-CobhNXpX.js} +1 -1
- package/dist/ui/assets/{google-vertex-Bf_2YfBL.js → google-vertex-VXUUgM7o.js} +1 -1
- package/dist/ui/assets/{handoff-link-Da4o0fy_.js → handoff-link-BM4ctkE8.js} +1 -1
- package/dist/ui/assets/{hear-DvsWQaq8.js → hear-D4UPc-6X.js} +1 -1
- package/dist/ui/assets/{hear-Sb2Ceuh0.js → hear-RuX7zwTc.js} +1 -1
- package/dist/ui/assets/{hid-device-registry-DboUgvzI.js → hid-device-registry-B2R-0rNt.js} +1 -1
- package/dist/ui/assets/{icons-CXqRAmcw.js → icons-DtQGhvkp.js} +1 -1
- package/dist/ui/assets/installer-gqTicFFT.js +3 -0
- package/dist/ui/assets/{intercepted-oauth-CaCw-rJ5.js → intercepted-oauth-BIKnTjZm.js} +1 -1
- package/dist/ui/assets/js-realm-worker-BxtK9KWr.js +48 -0
- package/dist/ui/assets/{json-parse-rb7sUwcH.js → json-parse-CgFfIg4Q.js} +1 -1
- package/dist/ui/assets/{json-parse-CpLf0aqK.js → json-parse-ClXMvBdK.js} +1 -1
- package/dist/ui/assets/{kernel-worker-Dt7EHlGw.js → kernel-worker-j7zGoPh1.js} +333 -333
- package/dist/ui/assets/{kokoro-D3TYeL2z.js → kokoro-Bs5vU5OU.js} +2 -2
- package/dist/ui/assets/{kokoro-CGDCwNNA.js → kokoro-CZ21zrzj.js} +2 -2
- package/dist/ui/assets/kokoro-engine-tWznaclV.js +2 -0
- package/dist/ui/assets/{layout-schema-UznNUt3s.js → layout-schema-m9_VAwOw.js} +1 -1
- package/dist/ui/assets/{legacy-api-aliases-MR6kosFL.js → legacy-api-aliases-BVP0Ho8x.js} +1 -1
- package/dist/ui/assets/{legacy-api-aliases-DrEKVikN.js → legacy-api-aliases-DAkrHYf9.js} +1 -1
- package/dist/ui/assets/lick-manager-GJgyahla.js +2 -0
- package/dist/ui/assets/{lick-manager-proxy-DCbHSHHW.js → lick-manager-proxy-Bhx3Yzp_.js} +1 -1
- package/dist/ui/assets/{lick-ws-bridge-B21s2Gwz.js → lick-ws-bridge-BBdRwJ-f.js} +1 -1
- package/dist/ui/assets/{lick-ws-bridge-CCkYp7oZ.js → lick-ws-bridge-D_e6wRPA.js} +1 -1
- package/dist/ui/assets/{local-llm-BMxjY1yj.js → local-llm-94vIZ8EZ.js} +1 -1
- package/dist/ui/assets/{local-llm-B5AVGYUF.js → local-llm-BjVTQ79x.js} +1 -1
- package/dist/ui/assets/magick-wasm-7Gy4Vlf5.js +43 -0
- package/dist/ui/assets/{main-BSRWdc5y.js → main-BnxdqsG0.js} +3 -3
- package/dist/ui/assets/{main-cherry-cNBZXAMR.js → main-cherry-B3C0ufyv.js} +1 -1
- package/dist/ui/assets/mistral-conversations-Cyp2kssI.js +7 -0
- package/dist/ui/assets/mistral-conversations-gFwkX5N9.js +8 -0
- package/dist/ui/assets/models-DgdVqaw5.js +1 -0
- package/dist/ui/assets/{modulepreload-polyfill-Dezn_h7o.js → modulepreload-polyfill-P2Xu9kJm.js} +1 -1
- package/dist/ui/assets/{mount-CtYCS7Kp.js → mount-C3IXcaX8.js} +1 -1
- package/dist/ui/assets/mount-DrM3EVg_.js +2 -0
- package/dist/ui/assets/{mount-bridge-client-CKo6gJ0u.js → mount-bridge-client-DkyfUm3y.js} +1 -1
- package/dist/ui/assets/{mount-picker-popup-Bs1o43Z5.js → mount-picker-popup-CSSC05JS.js} +1 -1
- package/dist/ui/assets/{mount-recovery-CVPqfGPu.js → mount-recovery-Clm4-rrM.js} +1 -1
- package/dist/ui/assets/{mount-table-store-CTrzlrNn.js → mount-table-store-DrF_Ifaz.js} +1 -1
- package/dist/ui/assets/{mount-table-store-CfQUN_2R.js → mount-table-store-dY2IfQ5S.js} +1 -1
- package/dist/ui/assets/{navigation-watcher-murqPsVd.js → navigation-watcher-CcKsLKw9.js} +1 -1
- package/dist/ui/assets/{new-session-BRFuxbD1.js → new-session-ijH03Ean.js} +2 -2
- package/dist/ui/assets/{oauth-bootstrap-DIOIJH9f.js → oauth-bootstrap-bjPfgAcZ.js} +2 -2
- package/dist/ui/assets/oauth-service-CZJntwco.js +1 -0
- package/dist/ui/assets/{oauth-service-D0NOHMOb.js → oauth-service-CeFviz7O.js} +1 -1
- package/dist/ui/assets/{onboarding-orchestrator-cZ36aqC6.js → onboarding-orchestrator-CfHysx6n.js} +1 -1
- package/dist/ui/assets/{openai-BxFF4GUL.js → openai-DQxsE__c.js} +2 -2
- package/dist/ui/assets/{openai-CmTnPr9N.js → openai-DehfWK3N.js} +2 -2
- package/dist/ui/assets/{openai-codex-D4ja7gqs.js → openai-codex-Cm4CJsUN.js} +1 -1
- package/dist/ui/assets/{openai-codex-CI5IjhwE.js → openai-codex-Cxt9UfIy.js} +1 -1
- package/dist/ui/assets/{openai-codex-responses-CLGX-aTS.js → openai-codex-responses-BJOy6BEd.js} +2 -2
- package/dist/ui/assets/{openai-codex-responses-BdgEOEuS.js → openai-codex-responses-BfT5s3yO.js} +1 -1
- package/dist/ui/assets/{openai-completions-BnbrI3UF.js → openai-completions-CmslRX3-.js} +2 -2
- package/dist/ui/assets/{openai-completions-DgBXkZQB.js → openai-completions-DDas47cy.js} +2 -2
- package/dist/ui/assets/{openai-responses-ltU_A4Wo.js → openai-responses-CHXkcom_.js} +1 -1
- package/dist/ui/assets/{openai-responses-BCmB_39F.js → openai-responses-DWlnQ-B0.js} +1 -1
- package/dist/ui/assets/{openai-responses-shared-BhTvPbKN.js → openai-responses-shared-DajOm-sC.js} +1 -1
- package/dist/ui/assets/{openai-responses-shared-ULQmXcCD.js → openai-responses-shared-uSSusU2w.js} +1 -1
- package/dist/ui/assets/{openrouter-pYhQBFuU.js → openrouter-D6y7V9p0.js} +1 -1
- package/dist/ui/assets/{openrouter-images-HP0r87fI.js → openrouter-images-7cFnqg4_.js} +1 -1
- package/dist/ui/assets/{openrouter-images-1178rM_U.js → openrouter-images-eEy7Fej8.js} +1 -1
- package/dist/ui/assets/{openrouter-oauth-BfOn7a34.js → openrouter-oauth-DY8uKhfy.js} +1 -1
- package/dist/ui/assets/{openrouter-oauth-Cfl_HRtC.js → openrouter-oauth-y_6J1_DN.js} +1 -1
- package/dist/ui/assets/{openrouter-5QNOix7C.js → openrouter-rQ2VoktS.js} +1 -1
- package/dist/ui/assets/{otel-BJT2f71U.js → otel-BVv11zKU.js} +1 -1
- package/dist/ui/assets/{otel-DHVJhmnv.js → otel-BZA5WuO2.js} +1 -1
- package/dist/ui/assets/{panel-rpc-DmJSNs0I.js → panel-rpc-B3MSVImO.js} +1 -1
- package/dist/ui/assets/{panel-rpc-CjFVE0nK.js → panel-rpc-BPwAqRch.js} +1 -1
- package/dist/ui/assets/{panel-rpc-handlers-CigsG2O9.js → panel-rpc-handlers-PM8PHRH-.js} +2 -2
- package/dist/ui/assets/{panelize-shell-irQskG_h.js → panelize-shell-CgDNoGLr.js} +2 -2
- package/dist/ui/assets/{path-utils-DU6QhF_k.js → path-utils-Rm3AltuN.js} +1 -1
- package/dist/ui/assets/{pdfjs-B1saeD0h.js → pdfjs-CRuE4vGw.js} +6 -6
- package/dist/ui/assets/{pi-messages-CrwvmK0e.js → pi-messages-BBQ5JcSR.js} +1 -1
- package/dist/ui/assets/{pi-messages-BcCsdrH5.js → pi-messages-t5nvJxiW.js} +1 -1
- package/dist/ui/assets/{port-bridge-client-DXYvHFiB.js → port-bridge-client-74e4m7Ur.js} +1 -1
- package/dist/ui/assets/{port-bridge-client-B64OCgRQ.js → port-bridge-client-Bg6_jjLD.js} +2 -2
- package/dist/ui/assets/process-manager-unCzdHp3.js +1 -0
- package/dist/ui/assets/{provider-CkMg-hGa.js → provider-B8Mkh-VX.js} +2 -2
- package/dist/ui/assets/provider-CA0u-FlI.js +1 -0
- package/dist/ui/assets/{provider-env-D37PhSJu.js → provider-env-CILujRmO.js} +1 -1
- package/dist/ui/assets/{provider-env-DwY8YuMk.js → provider-env-CTOcDKrQ.js} +1 -1
- package/dist/ui/assets/provider-settings-CY15hvGv.js +2 -0
- package/dist/ui/assets/{provider-settings-BgRoRncG.js → provider-settings-x1DCmyHF.js} +1 -1
- package/dist/ui/assets/{provider-store-access-BnjM-WlQ.js → provider-store-access-BWbARrZ_.js} +2 -2
- package/dist/ui/assets/provider-store-access-Bwt56dfX.js +1 -0
- package/dist/ui/assets/providers-B98ueIFT.js +2 -0
- package/dist/ui/assets/{providers-Cq_dXOsh.js → providers-C0_DGG8n.js} +1 -1
- package/dist/ui/assets/{proxied-fetch-GabK83LB.js → proxied-fetch-CSNzus3d.js} +1 -1
- package/dist/ui/assets/proxied-fetch-ULPrH97b.js +2 -0
- package/dist/ui/assets/py-realm-worker-2nn9AS1F.js +244 -0
- package/dist/ui/assets/pyodide-BlzOFu7J.js +3 -0
- package/dist/ui/assets/pyodide-X83yixXc.js +3 -0
- package/dist/ui/assets/{quick-llm-BizzQ33P.js → quick-llm-AzvUPDDm.js} +1 -1
- package/dist/ui/assets/readline-BOCWRKSR.js +26 -0
- package/dist/ui/assets/{redirect-uri-wvtO7KeZ.js → redirect-uri-BPox4xEV.js} +1 -1
- package/dist/ui/assets/{remote-cache-D59F5FOx.js → remote-cache-JAv9sQH_.js} +1 -1
- package/dist/ui/assets/{remote-cdp-transport-CCzSSZwF.js → remote-cdp-transport-CgOXLjZ8.js} +1 -1
- package/dist/ui/assets/{remote-terminal-view-SZ2_MbCZ.js → remote-terminal-view-DqYuVTcF.js} +2 -2
- package/dist/ui/assets/{remote-vfs-client-Z2qM01yP.js → remote-vfs-client-5faRBsEi.js} +1 -1
- package/dist/ui/assets/rolldown-runtime-Dd_uD5pT.js +1 -0
- package/dist/ui/assets/runtime-mode-BgSVO5sw.js +1 -0
- package/dist/ui/assets/{runtime-mode-jkSDrVfl.js → runtime-mode-OGvKsBi_.js} +1 -1
- package/dist/ui/assets/{safe-buffer-C0pSmFaz.js → safe-buffer-B2wnAhUx.js} +2 -2
- package/dist/ui/assets/{script-catalog-BYXhqRAc.js → script-catalog-e0GUPxAf.js} +1 -1
- package/dist/ui/assets/{secret-env-Cd-AGGPM.js → secret-env-IgYMwYRy.js} +1 -1
- package/dist/ui/assets/{secret-topology-CKyE_tTD.js → secret-topology-DCQNOMWj.js} +1 -1
- package/dist/ui/assets/{secrets-bridge-client-CUeSRcdV.js → secrets-bridge-client-BZMh3a0J.js} +1 -1
- package/dist/ui/assets/{serial-port-registry-DsPZvGpT.js → serial-port-registry-B3LG5UIy.js} +1 -1
- package/dist/ui/assets/{session-freezer-CJhLDR-c.js → session-freezer-z4DJm3zA.js} +3 -3
- package/dist/ui/assets/{setup-feature-flags-remote-D1fJErV0.js → setup-feature-flags-remote-qaXVkshz.js} +1 -1
- package/dist/ui/assets/{setup-sprinkle-exec-CEx4I2ll.js → setup-sprinkle-exec-BX_Qq-Su.js} +2 -2
- package/dist/ui/assets/setup-standalone-prelude-DGfC07wR.js +2 -0
- package/dist/ui/assets/setup-sudo-DfUZKZqy.js +2 -0
- package/dist/ui/assets/{sha256-DmK25X5D.js → sha256-CHfIPo1C.js} +1 -1
- package/dist/ui/assets/shared-D4Q0n73P.js +4 -0
- package/dist/ui/assets/shared-Y4VMjBcs.js +1 -0
- package/dist/ui/assets/{silent-renew-backoff-Chq7fPuc.js → silent-renew-backoff-BrAZcbzt.js} +1 -1
- package/dist/ui/assets/{silent-renew-backoff-HDNNYx7x.js → silent-renew-backoff-tbYCpSw6.js} +1 -1
- package/dist/ui/assets/{skills-9LWceM3i.js → skills-DMzV8gyG.js} +1 -1
- package/dist/ui/assets/slicc-editor-BftG41yg.js +12 -0
- package/dist/ui/assets/speak-DFbF2xgr.js +3 -0
- package/dist/ui/assets/speak-DnN2sfVI.js +1 -0
- package/dist/ui/assets/{sprinkle-bridge-DziYRsuS.js → sprinkle-bridge-RIIOK3yH.js} +1 -1
- package/dist/ui/assets/sprinkle-manager-7WNxOLFK.js +1 -0
- package/dist/ui/assets/sprinkle-op-handler-Bkvm_zYI.js +1 -0
- package/dist/ui/assets/{sprinkle-renderer-DZ_7mdV4.js → sprinkle-renderer-CMk2ghMi.js} +2 -2
- package/dist/ui/assets/sql-wasm-BJoHkdU1.js +2 -0
- package/dist/ui/assets/{src-BStYtmHq.js → src-CAWTvdAa.js} +1 -1
- package/dist/ui/assets/{src-BcePBv4G.js → src-CcFD5QfS.js} +1 -1
- package/dist/ui/assets/{src-C6xNlS_2.js → src-scK1LFrC.js} +88 -88
- package/dist/ui/assets/{store-vg7fWz1Q.js → store-CmbiPzTQ.js} +1 -1
- package/dist/ui/assets/{sudo-D2Na1qHN.js → sudo-i4DiWMNU.js} +3 -3
- package/dist/ui/assets/{sync-dialog-Ie_5SqoO.js → sync-dialog-BXI-Z0QC.js} +1 -1
- package/dist/ui/assets/{terminal-session-client-BZLoutc3.js → terminal-session-client-ADzaWGFd.js} +1 -1
- package/dist/ui/assets/{theme-BOdTMzQ7.js → theme-CXRqxpw6.js} +1 -1
- package/dist/ui/assets/{theme-engine-BMhxbTGC.js → theme-engine-By4GU_Wc.js} +1 -1
- package/dist/ui/assets/{timestamp-preference-DgrTvVNx.js → timestamp-preference-sKwBl5I8.js} +1 -1
- package/dist/ui/assets/{tool-result-images-DwRGZUe_.js → tool-result-images-D8kQ0hH0.js} +1 -1
- package/dist/ui/assets/tool-result-images-Dw3zBAjg.js +1 -0
- package/dist/ui/assets/transcript-limits-Ne0pE4Ui.js +1 -0
- package/dist/ui/assets/{transformers-env-jJU-CdDZ.js → transformers-env-CB72W87T.js} +1 -1
- package/dist/ui/assets/{transformers-env-3dg4iXrc.js → transformers-env-CflaNVb-.js} +1 -1
- package/dist/ui/assets/transformers.web-Cg_-cFJu.js +39 -0
- package/dist/ui/assets/transformers.web-DD4-hssb.js +45 -0
- package/dist/ui/assets/{tray-leader-Btq_ccHy.js → tray-leader-BIbpF_6U.js} +1 -1
- package/dist/ui/assets/{tray-leave-runtime-DyiGVnUI.js → tray-leave-runtime-Bk54j6on.js} +1 -1
- package/dist/ui/assets/{tray-runtime-config-BxjVzwAJ.js → tray-runtime-config-C82czC62.js} +1 -1
- package/dist/ui/assets/{tray-runtime-config-kGqQt9_W.js → tray-runtime-config-qqz7WGyF.js} +1 -1
- package/dist/ui/assets/tray-sync-protocol-BZ5yhJH9.js +1 -0
- package/dist/ui/assets/tray-sync-protocol-BoMM1sx5.js +1 -0
- package/dist/ui/assets/{upgrade-detection-NB58Ti1o.js → upgrade-detection-BWJcWnqA.js} +1 -1
- package/dist/ui/assets/{usb-device-registry-BOGfZXgp.js → usb-device-registry-CRsCisej.js} +1 -1
- package/dist/ui/assets/{usb-operations-BQbhk96u.js → usb-operations-Cgk-otz-.js} +1 -1
- package/dist/ui/assets/{voice-reply-vgvKOdr1.js → voice-reply-AKp1x2Pa.js} +1 -1
- package/dist/ui/assets/{wc-attach-Cqm1S-Dt.js → wc-attach-GJkf0zy_.js} +3 -3
- package/dist/ui/assets/{wc-extension-AsJb1Fvl.js → wc-extension-8-BmnJQe.js} +2 -2
- package/dist/ui/assets/{wc-float-label-hGSM71eZ.js → wc-float-label-tSpScI6q.js} +1 -1
- package/dist/ui/assets/wc-follower-BiiKhzHS.js +17 -0
- package/dist/ui/assets/{wc-follower-model-surface-DJRncbD2.js → wc-follower-model-surface-B3z6dlpJ.js} +1 -1
- package/dist/ui/assets/wc-live-CaE_NPFb.js +8 -0
- package/dist/ui/assets/{wc-nav-DqrCih7F.js → wc-nav-CF8SpfT6.js} +2 -2
- package/dist/ui/assets/{wc-onboarding-CsA3_2-I.js → wc-onboarding-SQURNptm.js} +2 -2
- package/dist/ui/assets/{wc-permissions-DQ4ENBhU.js → wc-permissions-8LUp20Jr.js} +3 -3
- package/dist/ui/assets/{wc-permissions-providers-DMTDytlu.js → wc-permissions-providers-DpoCXfAQ.js} +2 -2
- package/dist/ui/assets/{wc-permissions-registry-Blyunq37.js → wc-permissions-registry-DHel9S61.js} +1 -1
- package/dist/ui/assets/wc-permissions-registry-Dcdmzs0U.js +1 -0
- package/dist/ui/assets/{wc-placeholder-CyqpFwlr.js → wc-placeholder-C1J1HGBa.js} +3 -3
- package/dist/ui/assets/{wc-settings-DQlViRqJ.js → wc-settings-DLReg83a.js} +3 -3
- package/dist/ui/assets/{wc-shell-DYAavWIZ.js → wc-shell-Djy773Zo.js} +7 -7
- package/dist/ui/assets/{wc-sprinkles-3JtSDzFR.js → wc-sprinkles-CcifX3Sy.js} +2 -2
- package/dist/ui/assets/{wc-transcript-export-C4O9AKQ6.js → wc-transcript-export-Bx9ecGAa.js} +2 -2
- package/dist/ui/assets/wc-tray-DgeXvaCs.js +2 -0
- package/dist/ui/assets/wc-tray-scoops-CwSRVd7s.js +5 -0
- package/dist/ui/assets/{welcome-detection-CQY88hjL.js → welcome-detection-sLx_L_gP.js} +1 -1
- package/dist/ui/assets/{whisper-engine-COt17pKd.js → whisper-engine-bquhJqdU.js} +1 -1
- package/dist/ui/assets/{whisper-session-D-oegf5G.js → whisper-session-DoSxCWUe.js} +2 -2
- package/dist/ui/assets/{writable-vfs-client-Cb6FWsgc.js → writable-vfs-client-Dqrpx9iK.js} +1 -1
- package/dist/ui/assets/{ws-subscribers-Dzuxa2F7.js → ws-subscribers-ZoJOTa93.js} +1 -1
- package/dist/ui/assets/{xai-grok-CnlmvtxV.js → xai-grok-B3LQ35Ig.js} +1 -1
- package/dist/ui/assets/{xai-grok-CQ2y4q0K.js → xai-grok-CsonM4jH.js} +1 -1
- package/dist/ui/assets/xterm-BSL5rRqA.js +18 -0
- package/dist/ui/assets/xterm-Diiics17.js +30 -0
- package/dist/ui/index.html +25 -25
- package/dist/ui/packages/webapp/cloud/index.html +2 -2
- package/dist/ui/packages/webapp/index.html +25 -25
- package/package.json +4 -4
- package/dist/ui/assets/__vite-browser-external-Db26C5vr.js +0 -1
- package/dist/ui/assets/__vite-browser-external-SwrSgYTf.js +0 -1
- package/dist/ui/assets/account-store-3ZeQvsHg.js +0 -43
- package/dist/ui/assets/backend-local-smcj-_Ox.js +0 -1
- package/dist/ui/assets/browser-COVn7LPD.js +0 -569
- package/dist/ui/assets/cloud-DhBwfVPK.js +0 -1
- package/dist/ui/assets/completionchunk-CP7I4h3f.js +0 -65
- package/dist/ui/assets/completionchunk-JDMithrI.js +0 -65
- package/dist/ui/assets/dist-0FRaZO2z.js +0 -12
- package/dist/ui/assets/dist-BlzIXVXL.js +0 -2
- package/dist/ui/assets/dist-Bq5i9FMJ.js +0 -12
- package/dist/ui/assets/dist-CJ6ilPeJ.js +0 -18
- package/dist/ui/assets/dist-DIYpvNeF.js +0 -2
- package/dist/ui/assets/dist-DuLHpm2f.js +0 -1
- package/dist/ui/assets/dist-DvjiIrEx.js +0 -23
- package/dist/ui/assets/es-CP2z28j0.js +0 -53
- package/dist/ui/assets/esptool-operations-C0DUkD34.js +0 -13
- package/dist/ui/assets/esptool-operations-iCYPdIRA.js +0 -12
- package/dist/ui/assets/export-provider-CBnhvTR9.js +0 -1
- package/dist/ui/assets/fs-B_EoFRY0.js +0 -2
- package/dist/ui/assets/fs-DAUqRBvb.js +0 -1
- package/dist/ui/assets/github-copilot-CUWzfkgl.js +0 -2
- package/dist/ui/assets/github-copilot-Dz-Ywiz6.js +0 -1
- package/dist/ui/assets/global-db-DvmmimLY.js +0 -1
- package/dist/ui/assets/google-shared-Dh_qL7z7.js +0 -11
- package/dist/ui/assets/installer-DuGbDCC9.js +0 -3
- package/dist/ui/assets/js-realm-worker-dP0mvoSB.js +0 -48
- package/dist/ui/assets/kokoro-engine-DKoaJW2G.js +0 -2
- package/dist/ui/assets/lick-manager-Ce_d4NxJ.js +0 -2
- package/dist/ui/assets/magick-wasm-f6c6OoOu.js +0 -43
- package/dist/ui/assets/mistral-conversations-CkIx9cg4.js +0 -8
- package/dist/ui/assets/mistral-conversations-Ct4-30zw.js +0 -7
- package/dist/ui/assets/models-DmWu8BeM.js +0 -1
- package/dist/ui/assets/mount-DdEqx8Ye.js +0 -2
- package/dist/ui/assets/oauth-service-bKcyWLK0.js +0 -1
- package/dist/ui/assets/process-manager-B5dz0PkO.js +0 -1
- package/dist/ui/assets/provider-settings-CMPKOsv9.js +0 -2
- package/dist/ui/assets/provider-store-access-BIeLrSCN.js +0 -1
- package/dist/ui/assets/provider-w_-ysFRD.js +0 -1
- package/dist/ui/assets/providers-U-BMssjK.js +0 -2
- package/dist/ui/assets/proxied-fetch-A48etSCh.js +0 -2
- package/dist/ui/assets/py-realm-worker-XDviaRpn.js +0 -244
- package/dist/ui/assets/pyodide-CcJEvbeU.js +0 -3
- package/dist/ui/assets/pyodide-DvIxh2Rb.js +0 -3
- package/dist/ui/assets/readline-0OE_8qoR.js +0 -26
- package/dist/ui/assets/rolldown-runtime-aKtaBQYM.js +0 -1
- package/dist/ui/assets/runtime-mode-B91km6KC.js +0 -1
- package/dist/ui/assets/setup-standalone-prelude-bzPDtbad.js +0 -2
- package/dist/ui/assets/setup-sudo-RE__qVVO.js +0 -2
- package/dist/ui/assets/shared-BYVJAPbn.js +0 -1
- package/dist/ui/assets/shared-SS_FwfdN.js +0 -4
- package/dist/ui/assets/slicc-editor-BoIEeofq.js +0 -12
- package/dist/ui/assets/speak-CIzzz0pF.js +0 -3
- package/dist/ui/assets/speak-CrTN7B3e.js +0 -1
- package/dist/ui/assets/sprinkle-manager-DbCWJGba.js +0 -1
- package/dist/ui/assets/sprinkle-op-handler-Dta4p7Tc.js +0 -1
- package/dist/ui/assets/sql-wasm-JpZkOS2Q.js +0 -2
- package/dist/ui/assets/tool-result-images-DlFhKgpw.js +0 -1
- package/dist/ui/assets/transcript-limits-B8212Rg9.js +0 -1
- package/dist/ui/assets/transformers.web-CrioJkWG.js +0 -45
- package/dist/ui/assets/transformers.web-D6viRW2X.js +0 -39
- package/dist/ui/assets/tray-sync-protocol-DtsNjc_8.js +0 -1
- package/dist/ui/assets/tray-sync-protocol-bvejwfjH.js +0 -1
- package/dist/ui/assets/wc-follower-_xrDG9l_.js +0 -17
- package/dist/ui/assets/wc-live-xoWVIMuu.js +0 -8
- package/dist/ui/assets/wc-permissions-registry-C7PhTX3c.js +0 -1
- package/dist/ui/assets/wc-tray-4dIiwvc9.js +0 -2
- package/dist/ui/assets/wc-tray-scoops-Ci8IRu3W.js +0 -5
- package/dist/ui/assets/xterm-DX7Hb5S-.js +0 -47
- package/dist/ui/assets/xterm-U4TA8lIC.js +0 -35
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e}from"./rolldown-runtime-aKtaBQYM.js";import{t}from"./logger-DDBAeTLF.js";import{d as n,o as r,t as i,u as a}from"./proxied-fetch-A48etSCh.js";import{n as o}from"./runtime-env-DH4NDw4t.js";import{o as s}from"./tray-runtime-config-BxjVzwAJ.js";import{n as c,r as l}from"./db-ysOO0kLr.js";var u=e({IndexedDbLeaderTraySessionStore:()=>T,LEADER_STATUS_STORAGE_KEY:()=>LEADER_STATUS_STORAGE_KEY,LeaderTrayManager:()=>D,TrayProxyFetchError:()=>k,createTrayFetch:()=>M,getLeaderTrayRuntimeStatus:()=>x,parseLeaderTraySession:()=>E,setLeaderTrayRuntimeStatus:()=>w,subscribeToLeaderTrayRuntimeStatus:()=>C}),d=t(`tray-leader`),f=`leader-tray-session`,p=3e4,m=1e4,h=1e3,g=3e4,_=2,v=20,y=1e4,b={state:`inactive`,session:null,error:null};function x(){return{...b,session:b.session?{...b.session}:null}}var S=new Set;function C(e){return S.add(e),()=>{S.delete(e)}}function w(e){if(b={...e,session:e.session?{...e.session}:null},S.size!==0)for(let e of[...S])try{e(x())}catch{}}var T=class{key;constructor(e=f){this.key=e}async load(){return E(await c(this.key))}async save(e){await l(this.key,JSON.stringify(e))}async clear(){await l(this.key,``)}};function E(e){if(!e)return null;try{let t=JSON.parse(e);return typeof t.workerBaseUrl!=`string`||typeof t.trayId!=`string`||typeof t.createdAt!=`string`||typeof t.controllerId!=`string`||typeof t.controllerUrl!=`string`||typeof t.joinUrl!=`string`||typeof t.webhookUrl!=`string`||typeof t.runtime!=`string`?null:{workerBaseUrl:t.workerBaseUrl,trayId:t.trayId,createdAt:t.createdAt,controllerId:t.controllerId,controllerUrl:t.controllerUrl,joinUrl:t.joinUrl,webhookUrl:t.webhookUrl,leaderKey:typeof t.leaderKey==`string`?t.leaderKey:void 0,leaderWebSocketUrl:typeof t.leaderWebSocketUrl==`string`?t.leaderWebSocketUrl:null,runtime:t.runtime}}catch{return null}}var D=class{options;store;fetchImpl;webSocketFactory;pingIntervalMs;connectTimeoutMs;reconnectEnabled;reconnectBaseDelayMs;reconnectMaxDelayMs;reconnectBackoffMultiplier;reconnectMaxAttempts;reconnectSleep;socket=null;pingTimer=null;currentSession=null;stopped=!1;reconnecting=!1;reconnectGeneration=0;constructor(e){this.options=e,this.store=e.store??new T,this.fetchImpl=e.fetchImpl??M(),this.webSocketFactory=e.webSocketFactory??(e=>new WebSocket(e)),this.pingIntervalMs=e.pingIntervalMs??p,this.connectTimeoutMs=e.connectTimeoutMs??m;let t=e.reconnect;this.reconnectEnabled=t!==!1;let n=t===!1||!t?{}:t;this.reconnectBaseDelayMs=n.baseDelayMs??h,this.reconnectMaxDelayMs=n.maxDelayMs??g,this.reconnectBackoffMultiplier=n.backoffMultiplier??_,this.reconnectMaxAttempts=n.maxAttempts??v,this.reconnectSleep=n.sleep??(e=>new Promise(t=>setTimeout(t,e)))}async start(){if(this.stopped=!1,this.currentSession&&this.socket)return w({state:`leader`,session:this.currentSession,error:null}),this.currentSession;w({state:`connecting`,session:null,error:null}),this.currentSession=null;try{let e=await this.connectOnce();d.info(`Leader joined tray`,{trayId:e.trayId,controllerId:e.controllerId,runtime:e.runtime});try{this.options.onLeaderReady?.(e)}catch(e){d.warn(`onLeaderReady callback threw`,{error:e instanceof Error?e.message:String(e)})}return e}catch(e){throw w({state:`error`,session:this.currentSession,error:e instanceof Error?e.message:String(e)}),e}}stop(){this.stopped=!0,this.reconnecting=!1,this.reconnectGeneration++,this.tearDownSocket(),this.currentSession=null,w({state:`inactive`,session:null,error:null})}tearDownSocket(){this.pingTimer&&=(clearInterval(this.pingTimer),null);let e=this.socket;if(this.socket=null,e)try{e.close()}catch{}}async connectOnce(){let e=await this.store.load(),t=e?.workerBaseUrl===this.options.workerBaseUrl?e:null,n=await this.attachWithRecovery(t);this.currentSession=n;let r=await this.openLeaderSocket(n.leaderWebSocketUrl);return this.socket=r,this.startPingLoop(r),w({state:`leader`,session:n,error:null}),n}async handleUnexpectedDisconnect(e){if(this.stopped)return;if(!this.reconnectEnabled){d.warn(`Leader WebSocket dropped and auto-reconnect is disabled`,{reason:e}),this.tearDownSocket(),this.currentSession=null,w({state:`error`,session:null,error:`Leader WebSocket dropped: ${e}`});return}if(this.reconnecting)return;this.reconnecting=!0;let t=++this.reconnectGeneration;d.warn(`Leader WebSocket dropped — starting reconnect loop`,{reason:e}),this.tearDownSocket();let n=0,r=this.reconnectBaseDelayMs,i=e;for(;!this.stopped&&t===this.reconnectGeneration&&n<this.reconnectMaxAttempts&&(n++,w({state:`reconnecting`,session:this.currentSession,error:null,reconnectAttempts:n}),this.options.onReconnecting?.(n,i),d.info(`Leader reconnect attempt`,{attempt:n,delay:r}),await this.reconnectSleep(r),!(this.stopped||t!==this.reconnectGeneration));){try{let e=await this.connectOnce();if(this.stopped||t!==this.reconnectGeneration){this.tearDownSocket();break}this.reconnecting=!1,d.info(`Leader reconnect successful`,{attempt:n,trayId:e.trayId}),this.options.onReconnected?.(e);try{this.options.onLeaderReady?.(e)}catch(e){d.warn(`onLeaderReady callback threw`,{error:e instanceof Error?e.message:String(e)})}return}catch(e){i=e instanceof Error?e.message:String(e),d.warn(`Leader reconnect attempt failed`,{attempt:n,error:i}),this.tearDownSocket()}r=Math.min(r*this.reconnectBackoffMultiplier,this.reconnectMaxDelayMs)}!this.stopped&&t===this.reconnectGeneration&&(this.reconnecting=!1,this.currentSession=null,w({state:`error`,session:null,error:`Leader reconnect failed after ${n} attempts: ${i}`,reconnectAttempts:n}),d.warn(`Leader reconnect gave up`,{attempts:n,lastError:i}),this.options.onReconnectGaveUp?.(i,n))}async clearSession(){await this.store.clear()}sendControlMessage(e){if(!this.socket)throw Error(`Tray leader WebSocket is not connected`);this.socket.send(JSON.stringify(e))}async attachWithRecovery(e){try{return await this.claimLeaderSession(e)}catch(t){if(!e||!A(t))throw t;d.warn(`Stored tray session is stale, creating a fresh tray`,{trayId:e.trayId,error:t instanceof Error?t.message:String(t)}),await this.store.clear();let n=await this.claimLeaderSession(null);return this.notifyTraySuperseded(e,n.joinUrl),n}}async notifyTraySuperseded(e,t){try{let n=new URL(e.controllerUrl).pathname.split(`/`).pop();if(!n)return;let r=s(e.workerBaseUrl,`api/tray/${e.trayId}/supersede`);await this.fetchImpl(r,{method:`POST`,headers:{"content-type":`application/json`,authorization:`Bearer ${n}`},body:JSON.stringify({joinUrl:t}),signal:AbortSignal.timeout(y)})}catch(t){d.warn(`Failed to notify old tray of supersession (best-effort)`,{oldTrayId:e.trayId,error:t instanceof Error?t.message:String(t)})}}async claimLeaderSession(e){let t=e??await this.createTraySession(),n=await this.fetchJson(t.controllerUrl,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({controllerId:t.controllerId,leaderKey:t.leaderKey,runtime:this.options.runtime})});if(n.role!==`leader`||!n.leaderKey||!n.websocket?.url)throw Error(`Tray attach did not return leader access for controller ${n.controllerId}`);let r={...t,trayId:n.trayId,controllerId:n.controllerId,leaderKey:n.leaderKey,leaderWebSocketUrl:n.websocket.url,runtime:this.options.runtime};return await this.store.save(r),r}async createTraySession(){let e=this.options.kind?JSON.stringify({kind:this.options.kind}):void 0,t=await this.fetchJson(s(this.options.workerBaseUrl,`tray`),{method:`POST`,...e?{headers:{"content-type":`application/json`}}:{},...e?{body:e}:{}});return{workerBaseUrl:this.options.workerBaseUrl,trayId:t.trayId,createdAt:t.createdAt,controllerId:crypto.randomUUID(),controllerUrl:t.capabilities.controller.url,joinUrl:t.capabilities.join.url,webhookUrl:t.capabilities.webhook.url,runtime:this.options.runtime}}async openLeaderSocket(e){return await new Promise((t,n)=>{let r=this.webSocketFactory(e),i=!1,a=setTimeout(()=>{o(`Tray leader WebSocket timed out after ${this.connectTimeoutMs}ms waiting for leader.connected`);try{r.close(1e3,`leader.connected timeout`)}catch{}},this.connectTimeoutMs),o=e=>{i||(i=!0,clearTimeout(a),n(Error(e)))};r.addEventListener(`message`,e=>{let n=j(e.data);if(n){if(n.type===`leader.connected`){i||(i=!0,clearTimeout(a),t(r));return}if(n.type===`pong`){d.debug(`Tray leader heartbeat acknowledged`,{trayId:this.currentSession?.trayId});return}this.options.onControlMessage?.(n)}}),r.addEventListener(`close`,()=>o(`Tray leader WebSocket closed before leader.connected`)),r.addEventListener(`error`,()=>o(`Tray leader WebSocket failed before leader.connected`))})}startPingLoop(e){this.pingTimer&&clearInterval(this.pingTimer);let t=t=>{this.stopped||this.socket!==e||this.handleUnexpectedDisconnect(t).catch(e=>{d.warn(`Leader reconnect loop crashed`,{error:e instanceof Error?e.message:String(e)})})},n=()=>{try{e.send(JSON.stringify({type:`ping`}))}catch(e){t(`Leader ping send failed: ${e instanceof Error?e.message:String(e)}`)}};n(),this.pingTimer=setInterval(n,this.pingIntervalMs),e.addEventListener(`close`,()=>t(`Leader WebSocket closed`)),e.addEventListener(`error`,()=>t(`Leader WebSocket errored`))}async fetchJson(e,t){let n=await this.fetchImpl(e,t);if(!n.ok)throw await O.fromResponse(n);return await n.json()}},O=class e extends Error{status;code;constructor(e,t,n){super(n),this.status=e,this.code=t,this.name=`LeaderTrayHttpError`}static async fromResponse(t){try{let n=await t.json();return new e(t.status,n.code??null,n.error??`Tray request failed (${t.status})`)}catch{return new e(t.status,null,`Tray request failed (${t.status})`)}}},k=class extends Error{constructor(e){super(e),this.name=`TrayProxyFetchError`}};function A(e){return e instanceof k?!0:e instanceof O?e.status===403||e.status===404||e.status===410||e.status>=500:!1}function j(e){if(typeof e!=`string`)return null;try{return JSON.parse(e)}catch{return null}}function M(e=fetch){return o()?(t,n)=>e(t,n):async(t,o={})=>{let s=typeof t==`string`?t:t.toString();try{if(new URL(s).origin===window.location.origin)return e(s,{...o,cache:`no-store`})}catch{}let c=new Headers(o.headers);c.set(`X-Target-URL`,s);for(let[e,t]of Object.entries(i()))c.set(e,t);let l=await e(r(`/api/fetch-proxy`),{...o,headers:c,cache:`no-store`});if(a(l))throw new k(await n(l));return l}}export{u as a,C as i,x as n,w as r,D as t};
|
|
1
|
+
import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./logger-DDBAeTLF.js";import{d as n,o as r,t as i,u as a}from"./proxied-fetch-ULPrH97b.js";import{n as o}from"./runtime-env-DH4NDw4t.js";import{o as s}from"./tray-runtime-config-C82czC62.js";import{n as c,r as l}from"./db-C7OEVMWU.js";var u=e({IndexedDbLeaderTraySessionStore:()=>T,LEADER_STATUS_STORAGE_KEY:()=>LEADER_STATUS_STORAGE_KEY,LeaderTrayManager:()=>D,TrayProxyFetchError:()=>k,createTrayFetch:()=>M,getLeaderTrayRuntimeStatus:()=>x,parseLeaderTraySession:()=>E,setLeaderTrayRuntimeStatus:()=>w,subscribeToLeaderTrayRuntimeStatus:()=>C}),d=t(`tray-leader`),f=`leader-tray-session`,p=3e4,m=1e4,h=1e3,g=3e4,_=2,v=20,y=1e4,b={state:`inactive`,session:null,error:null};function x(){return{...b,session:b.session?{...b.session}:null}}var S=new Set;function C(e){return S.add(e),()=>{S.delete(e)}}function w(e){if(b={...e,session:e.session?{...e.session}:null},S.size!==0)for(let e of[...S])try{e(x())}catch{}}var T=class{key;constructor(e=f){this.key=e}async load(){return E(await c(this.key))}async save(e){await l(this.key,JSON.stringify(e))}async clear(){await l(this.key,``)}};function E(e){if(!e)return null;try{let t=JSON.parse(e);return typeof t.workerBaseUrl!=`string`||typeof t.trayId!=`string`||typeof t.createdAt!=`string`||typeof t.controllerId!=`string`||typeof t.controllerUrl!=`string`||typeof t.joinUrl!=`string`||typeof t.webhookUrl!=`string`||typeof t.runtime!=`string`?null:{workerBaseUrl:t.workerBaseUrl,trayId:t.trayId,createdAt:t.createdAt,controllerId:t.controllerId,controllerUrl:t.controllerUrl,joinUrl:t.joinUrl,webhookUrl:t.webhookUrl,leaderKey:typeof t.leaderKey==`string`?t.leaderKey:void 0,leaderWebSocketUrl:typeof t.leaderWebSocketUrl==`string`?t.leaderWebSocketUrl:null,runtime:t.runtime}}catch{return null}}var D=class{options;store;fetchImpl;webSocketFactory;pingIntervalMs;connectTimeoutMs;reconnectEnabled;reconnectBaseDelayMs;reconnectMaxDelayMs;reconnectBackoffMultiplier;reconnectMaxAttempts;reconnectSleep;socket=null;pingTimer=null;currentSession=null;stopped=!1;reconnecting=!1;reconnectGeneration=0;constructor(e){this.options=e,this.store=e.store??new T,this.fetchImpl=e.fetchImpl??M(),this.webSocketFactory=e.webSocketFactory??(e=>new WebSocket(e)),this.pingIntervalMs=e.pingIntervalMs??p,this.connectTimeoutMs=e.connectTimeoutMs??m;let t=e.reconnect;this.reconnectEnabled=t!==!1;let n=t===!1||!t?{}:t;this.reconnectBaseDelayMs=n.baseDelayMs??h,this.reconnectMaxDelayMs=n.maxDelayMs??g,this.reconnectBackoffMultiplier=n.backoffMultiplier??_,this.reconnectMaxAttempts=n.maxAttempts??v,this.reconnectSleep=n.sleep??(e=>new Promise(t=>setTimeout(t,e)))}async start(){if(this.stopped=!1,this.currentSession&&this.socket)return w({state:`leader`,session:this.currentSession,error:null}),this.currentSession;w({state:`connecting`,session:null,error:null}),this.currentSession=null;try{let e=await this.connectOnce();d.info(`Leader joined tray`,{trayId:e.trayId,controllerId:e.controllerId,runtime:e.runtime});try{this.options.onLeaderReady?.(e)}catch(e){d.warn(`onLeaderReady callback threw`,{error:e instanceof Error?e.message:String(e)})}return e}catch(e){throw w({state:`error`,session:this.currentSession,error:e instanceof Error?e.message:String(e)}),e}}stop(){this.stopped=!0,this.reconnecting=!1,this.reconnectGeneration++,this.tearDownSocket(),this.currentSession=null,w({state:`inactive`,session:null,error:null})}tearDownSocket(){this.pingTimer&&=(clearInterval(this.pingTimer),null);let e=this.socket;if(this.socket=null,e)try{e.close()}catch{}}async connectOnce(){let e=await this.store.load(),t=e?.workerBaseUrl===this.options.workerBaseUrl?e:null,n=await this.attachWithRecovery(t);this.currentSession=n;let r=await this.openLeaderSocket(n.leaderWebSocketUrl);return this.socket=r,this.startPingLoop(r),w({state:`leader`,session:n,error:null}),n}async handleUnexpectedDisconnect(e){if(this.stopped)return;if(!this.reconnectEnabled){d.warn(`Leader WebSocket dropped and auto-reconnect is disabled`,{reason:e}),this.tearDownSocket(),this.currentSession=null,w({state:`error`,session:null,error:`Leader WebSocket dropped: ${e}`});return}if(this.reconnecting)return;this.reconnecting=!0;let t=++this.reconnectGeneration;d.warn(`Leader WebSocket dropped — starting reconnect loop`,{reason:e}),this.tearDownSocket();let n=0,r=this.reconnectBaseDelayMs,i=e;for(;!this.stopped&&t===this.reconnectGeneration&&n<this.reconnectMaxAttempts&&(n++,w({state:`reconnecting`,session:this.currentSession,error:null,reconnectAttempts:n}),this.options.onReconnecting?.(n,i),d.info(`Leader reconnect attempt`,{attempt:n,delay:r}),await this.reconnectSleep(r),!(this.stopped||t!==this.reconnectGeneration));){try{let e=await this.connectOnce();if(this.stopped||t!==this.reconnectGeneration){this.tearDownSocket();break}this.reconnecting=!1,d.info(`Leader reconnect successful`,{attempt:n,trayId:e.trayId}),this.options.onReconnected?.(e);try{this.options.onLeaderReady?.(e)}catch(e){d.warn(`onLeaderReady callback threw`,{error:e instanceof Error?e.message:String(e)})}return}catch(e){i=e instanceof Error?e.message:String(e),d.warn(`Leader reconnect attempt failed`,{attempt:n,error:i}),this.tearDownSocket()}r=Math.min(r*this.reconnectBackoffMultiplier,this.reconnectMaxDelayMs)}!this.stopped&&t===this.reconnectGeneration&&(this.reconnecting=!1,this.currentSession=null,w({state:`error`,session:null,error:`Leader reconnect failed after ${n} attempts: ${i}`,reconnectAttempts:n}),d.warn(`Leader reconnect gave up`,{attempts:n,lastError:i}),this.options.onReconnectGaveUp?.(i,n))}async clearSession(){await this.store.clear()}sendControlMessage(e){if(!this.socket)throw Error(`Tray leader WebSocket is not connected`);this.socket.send(JSON.stringify(e))}async attachWithRecovery(e){try{return await this.claimLeaderSession(e)}catch(t){if(!e||!A(t))throw t;d.warn(`Stored tray session is stale, creating a fresh tray`,{trayId:e.trayId,error:t instanceof Error?t.message:String(t)}),await this.store.clear();let n=await this.claimLeaderSession(null);return this.notifyTraySuperseded(e,n.joinUrl),n}}async notifyTraySuperseded(e,t){try{let n=new URL(e.controllerUrl).pathname.split(`/`).pop();if(!n)return;let r=s(e.workerBaseUrl,`api/tray/${e.trayId}/supersede`);await this.fetchImpl(r,{method:`POST`,headers:{"content-type":`application/json`,authorization:`Bearer ${n}`},body:JSON.stringify({joinUrl:t}),signal:AbortSignal.timeout(y)})}catch(t){d.warn(`Failed to notify old tray of supersession (best-effort)`,{oldTrayId:e.trayId,error:t instanceof Error?t.message:String(t)})}}async claimLeaderSession(e){let t=e??await this.createTraySession(),n=await this.fetchJson(t.controllerUrl,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({controllerId:t.controllerId,leaderKey:t.leaderKey,runtime:this.options.runtime})});if(n.role!==`leader`||!n.leaderKey||!n.websocket?.url)throw Error(`Tray attach did not return leader access for controller ${n.controllerId}`);let r={...t,trayId:n.trayId,controllerId:n.controllerId,leaderKey:n.leaderKey,leaderWebSocketUrl:n.websocket.url,runtime:this.options.runtime};return await this.store.save(r),r}async createTraySession(){let e=this.options.kind?JSON.stringify({kind:this.options.kind}):void 0,t=await this.fetchJson(s(this.options.workerBaseUrl,`tray`),{method:`POST`,...e?{headers:{"content-type":`application/json`}}:{},...e?{body:e}:{}});return{workerBaseUrl:this.options.workerBaseUrl,trayId:t.trayId,createdAt:t.createdAt,controllerId:crypto.randomUUID(),controllerUrl:t.capabilities.controller.url,joinUrl:t.capabilities.join.url,webhookUrl:t.capabilities.webhook.url,runtime:this.options.runtime}}async openLeaderSocket(e){return await new Promise((t,n)=>{let r=this.webSocketFactory(e),i=!1,a=setTimeout(()=>{o(`Tray leader WebSocket timed out after ${this.connectTimeoutMs}ms waiting for leader.connected`);try{r.close(1e3,`leader.connected timeout`)}catch{}},this.connectTimeoutMs),o=e=>{i||(i=!0,clearTimeout(a),n(Error(e)))};r.addEventListener(`message`,e=>{let n=j(e.data);if(n){if(n.type===`leader.connected`){i||(i=!0,clearTimeout(a),t(r));return}if(n.type===`pong`){d.debug(`Tray leader heartbeat acknowledged`,{trayId:this.currentSession?.trayId});return}this.options.onControlMessage?.(n)}}),r.addEventListener(`close`,()=>o(`Tray leader WebSocket closed before leader.connected`)),r.addEventListener(`error`,()=>o(`Tray leader WebSocket failed before leader.connected`))})}startPingLoop(e){this.pingTimer&&clearInterval(this.pingTimer);let t=t=>{this.stopped||this.socket!==e||this.handleUnexpectedDisconnect(t).catch(e=>{d.warn(`Leader reconnect loop crashed`,{error:e instanceof Error?e.message:String(e)})})},n=()=>{try{e.send(JSON.stringify({type:`ping`}))}catch(e){t(`Leader ping send failed: ${e instanceof Error?e.message:String(e)}`)}};n(),this.pingTimer=setInterval(n,this.pingIntervalMs),e.addEventListener(`close`,()=>t(`Leader WebSocket closed`)),e.addEventListener(`error`,()=>t(`Leader WebSocket errored`))}async fetchJson(e,t){let n=await this.fetchImpl(e,t);if(!n.ok)throw await O.fromResponse(n);return await n.json()}},O=class e extends Error{status;code;constructor(e,t,n){super(n),this.status=e,this.code=t,this.name=`LeaderTrayHttpError`}static async fromResponse(t){try{let n=await t.json();return new e(t.status,n.code??null,n.error??`Tray request failed (${t.status})`)}catch{return new e(t.status,null,`Tray request failed (${t.status})`)}}},k=class extends Error{constructor(e){super(e),this.name=`TrayProxyFetchError`}};function A(e){return e instanceof k?!0:e instanceof O?e.status===403||e.status===404||e.status===410||e.status>=500:!1}function j(e){if(typeof e!=`string`)return null;try{return JSON.parse(e)}catch{return null}}function M(e=fetch){return o()?(t,n)=>e(t,n):async(t,o={})=>{let s=typeof t==`string`?t:t.toString();try{if(new URL(s).origin===window.location.origin)return e(s,{...o,cache:`no-store`})}catch{}let c=new Headers(o.headers);c.set(`X-Target-URL`,s);for(let[e,t]of Object.entries(i()))c.set(e,t);let l=await e(r(`/api/fetch-proxy`),{...o,headers:c,cache:`no-store`});if(a(l))throw new k(await n(l));return l}}export{u as a,C as i,x as n,w as r,D as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{i as e,r as t}from"./tray-runtime-config-
|
|
1
|
+
import{i as e,r as t}from"./tray-runtime-config-C82czC62.js";async function n(n,a){let o=a.getLeader()?`leader`:a.getFollower()?`follower`:`inactive`,s=a.getLeader();a.setLeader(null);let c=a.getFollower();a.setFollower(null),a.clearLeaderHooks();let{requestId:l}=n;try{s?.stop()}catch(e){a.log.error(`Leader stop threw during tray-leave — resources may have leaked`,{requestId:l,error:e instanceof Error?e.message:String(e)})}try{c?.stop()}catch(e){a.log.error(`Follower stop threw during tray-leave — resources may have leaked`,{requestId:l,error:e instanceof Error?e.message:String(e)})}if(i(()=>a.storage.removeItem(t),a.log,`join-clear`,l),n.workerBaseUrl===null)return i(()=>a.storage.removeItem(e),a.log,`worker-clear`,l),o===`inactive`?{kind:`noop`}:{kind:`left`,previousMode:o};let u=n.workerBaseUrl,d;try{d=a.startLeader(u)}catch(t){throw a.log.error(`startLeader failed during tray-leave — runtime is now dormant`,{workerBaseUrl:u,requestId:l,error:t instanceof Error?t.message:String(t)}),i(()=>a.storage.removeItem(e),a.log,`worker-clear-on-failure`,l),t}a.setLeader(d),a.wireLeaderHooks(d);try{await d.ready}catch(e){throw r(d,a,e,u,l),e}return a.getLeader()===d?(i(()=>a.storage.setItem(e,u),a.log,`worker-set`,l),{kind:`switched`,previousMode:o,workerBaseUrl:u}):(a.log.error(`Leader superseded during connect — skipping storage write`,{workerBaseUrl:u,requestId:l}),{kind:`switched`,previousMode:o,workerBaseUrl:u})}function r(t,n,r,a,o){let s=n.getLeader()===t;try{t.stop()}catch(e){n.log.error(`Leader stop threw during async-failure rollback — resources may have leaked`,{requestId:o,error:e instanceof Error?e.message:String(e)})}s&&(n.setLeader(null),n.clearLeaderHooks(),i(()=>n.storage.removeItem(e),n.log,`worker-clear-on-async-failure`,o)),n.log.error(`Leader ready failed during tray-leave — runtime is now dormant`,{workerBaseUrl:a,requestId:o,error:r instanceof Error?r.message:String(r)})}function i(e,t,n,r){try{e()}catch(e){t.error(`tray-leave storage write failed`,{kind:n,requestId:r,error:e instanceof Error?e.message:String(e)})}}export{n as performTrayLeave};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{l as e,u as t}from"./src-
|
|
1
|
+
import{l as e,u as t}from"./src-CAWTvdAa.js";import{o as n,t as r}from"./proxied-fetch-ULPrH97b.js";import"./messages-BD4p8GuF.js";var i=`tray`,a=`trayWorkerUrl`,o=`lead`;function s(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 c(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 c=s(t.toString());return c?{workerBaseUrl:c,trayId:i,joinUrl:n}:null}catch{return null}}function l(e,t){let n=new URL(e);return n.searchParams.delete(a),n.searchParams.delete(o),n.searchParams.set(i,t),n.toString()}var u=`slicc.trayWorkerBaseUrl`,d=`slicc.trayJoinUrl`,f=e,p=t;function m(e,t){let n=s(e);if(!n)throw Error(`Invalid tray worker base URL: ${e}`);let r=t.replace(/^\/+/,``);return new URL(r,`${n}/`).toString()}function h(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 c(t.toString());let i=s(t.toString());return i?{workerBaseUrl:i,trayId:r,joinUrl:null}:null}catch{return null}}function g(e){let t=h(e);return t?.joinUrl?t:null}function _(e,t){let n=g(t);return n?(e.setItem(d,n.joinUrl),e.setItem(u,n.workerBaseUrl),n):null}function v(e){return!!g(e?.getItem(`slicc.trayJoinUrl`)??null)}function y(e,t){let n=!1;try{let t=new URL(e),r=t.searchParams.get(i);if(r!==null){n=!0;let e=h(r);if(e?.joinUrl)return e.joinUrl}t.searchParams.get(`slicc`)===`leader`&&(n=!0)}catch{}let r=h(e);return r?.joinUrl?r.joinUrl:(r?.trayId&&(n=!0),n?null:g(t?.getItem(`slicc.trayJoinUrl`)??null)?.joinUrl??null)}function b(e){try{let t=new URL(e);t.searchParams.delete(i);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 x(e,t){let n=s(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 S(e,t,n){return l(e,x(t,n))}async function C(e){let t=E(e.locationHref);if(t)return e.storage&&(t.joinUrl&&e.storage.setItem(d,t.joinUrl),e.storage.setItem(u,t.workerBaseUrl)),t;let n=g(e.storage?.getItem(`slicc.trayJoinUrl`)??null);if(n)return e.storage&&e.storage.setItem(u,n.workerBaseUrl),n;let r=e.runtimeConfigFetcher?await D(e.runtimeConfigFetcher):null;if(r?.joinConfig)return e.storage&&(e.storage.setItem(d,r.joinConfig.joinUrl),e.storage.setItem(u,r.joinConfig.workerBaseUrl)),r.joinConfig;let i=r?.workerBaseUrl??null,a=s(e.storage?.getItem(`slicc.trayWorkerBaseUrl`)??null),o=s(e.envBaseUrl??null),c=s(e.defaultWorkerBaseUrl??null),l=i??a??o??c;return l?(e.storage&&e.storage.setItem(u,l),{workerBaseUrl:l,trayId:null,joinUrl:null}):null}async function w(e){return(await C(e))?.workerBaseUrl??null}async function T(e=fetch){try{let t=await e(n(`/api/runtime-config`),{cache:`no-store`,headers:r()});return t.ok?await t.json():null}catch{return null}}function E(e){try{let t=new URL(e),n=h(t.searchParams.get(i));if(n)return n;let r=h(t.searchParams.get(o));if(r)return r;let l=s(t.searchParams.get(a));return l?{workerBaseUrl:l,trayId:null,joinUrl:null}:c(e)||null}catch{return null}}async function D(e){let t=await e();if(!t)return null;let n=g(t.trayJoinUrl??null);return{workerBaseUrl:s(t.trayWorkerBaseUrl??null),joinConfig:n}}export{S as a,v as c,C as d,w as f,s as h,u as i,g as l,b as m,p as n,m as o,_ as p,d as r,T as s,f as t,y as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{s as e}from"./src-
|
|
1
|
+
import{s as e}from"./src-CcFD5QfS.js";import"./proxied-fetch-CSNzus3d.js";function t(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 n(e){if(!e)return null;try{let n=new URL(e.trim());n.search=``,n.hash=``;let r=n.toString(),i=n.pathname.split(`/`).filter(Boolean);if(i.length<2||i.at(-2)!==`join`)return null;let[a,o,...s]=decodeURIComponent(i.at(-1)).split(`.`);if(!a||!o||s.length>0)return null;i.splice(-2,2),n.pathname=i.length>0?`/${i.join(`/`)}`:`/`;let c=t(n.toString());return c?{workerBaseUrl:c,trayId:a,joinUrl:r}:null}catch{return null}}const r=`slicc.trayWorkerBaseUrl`,i=`slicc.trayJoinUrl`,a=e;function o(e){if(!e)return null;try{let r=new URL(e.trim());r.search=``,r.hash=``;let i=r.pathname.split(`/`).filter(Boolean),a=null;if(i.length>=2&&i.at(-2)===`tray`)a=decodeURIComponent(i.at(-1)),i.splice(-2,2),r.pathname=i.length>0?`/${i.join(`/`)}`:`/`;else if(i.length>=2&&i.at(-2)===`join`)return n(r.toString());let o=t(r.toString());return o?{workerBaseUrl:o,trayId:a,joinUrl:null}:null}catch{return null}}function s(e){let t=o(e);return t?.joinUrl?t:null}export{t as a,s as i,i as n,r,a as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e=`slicc-cherry`,t=`__chunk`,n=65536,r=8388608,i=8388608,a=8192,o=33554432;function s(e){if(typeof e!=`object`||!e)return!1;let t=e;return t.type===`__chunk`&&typeof t.chunkId==`string`&&typeof t.chunkIndex==`number`&&typeof t.totalChunks==`number`&&typeof t.chunkData==`string`&&Number.isInteger(t.chunkIndex)&&Number.isInteger(t.totalChunks)&&t.totalChunks>0&&t.totalChunks<=8192&&t.chunkIndex>=0&&t.chunkIndex<t.totalChunks}function c(e){return typeof e==`object`&&!!e&&e.type===`cherry.host_event`}function l(e){return e}var u=65536,d=32768;function f(e,t,n,r){if(r||!n)return e.send({type:`cdp.response`,requestId:t,result:n,error:r});let i=JSON.stringify(n);if(i.length<=65536)return e.send({type:`cdp.response`,requestId:t,result:n});let a=Math.ceil(i.length/d),o=!0;for(let n=0;n<a;n++){let r=i.slice(n*d,(n+1)*d);if(!e.send({type:`cdp.response`,requestId:t,chunkData:r,chunkIndex:n,totalChunks:a})){o=!1,e.send({type:`cdp.response`,requestId:t,error:`Failed to send CDP response chunk ${n}/${a} (response was ${i.length} bytes)`});break}}return o}function p(e,t){if(t.chunkIndex===void 0||t.totalChunks===void 0)return{result:t.result,error:t.error};if(t.error)return e.delete(t.requestId),{error:t.error};let n=t.requestId,r=e.get(n);if(r||(r={chunks:Array(t.totalChunks),received:0,totalChunks:t.totalChunks},e.set(n,r)),r.chunks[t.chunkIndex]||(r.chunks[t.chunkIndex]=t.chunkData,r.received++),r.received>=r.totalChunks){e.delete(n);try{return{result:JSON.parse(r.chunks.join(``))}}catch(e){return{error:`Failed to reassemble CDP response: ${e instanceof Error?e.message:String(e)}`}}}return null}export{a,i as c,p as d,f,n as i,c as l,e as n,r as o,l as p,t as r,o as s,u as t,s as u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./logger-DDBAeTLF.js";import"./src-CAWTvdAa.js";import{a as n,c as r,i,n as a,o,r as s,u as c}from"./tray-sync-protocol-BZ5yhJH9.js";var l=e({CHERRY_RUNTIME_TAG:()=>a,TRAY_CHUNK_FRAME_TYPE:()=>s,TRAY_DEFAULT_MAX_MESSAGE_BYTES:()=>i,TRAY_MAX_MESSAGE_BYTES:()=>o,TRAY_SYNC_PROTOCOL_VERSION:()=>5,TraySyncChannel:()=>C,createFollowerSyncChannel:()=>T,createLeaderSyncChannel:()=>w,frameChunks:()=>x,reassembleSnapshot:()=>p,sendSnapshot:()=>f}),u=t(`tray-sync`),d=32768;function f(e,t,n){let r=JSON.stringify({messages:t,scoopJid:n});if(r.length<=65536)return e.send({type:`snapshot`,messages:t,scoopJid:n});let i=Math.ceil(r.length/d),a=!0;for(let t=0;t<i;t++){let o=r.slice(t*d,(t+1)*d);if(!e.send({type:`snapshot_chunk`,chunkData:o,chunkIndex:t,totalChunks:i,scoopJid:n})){a=!1,u.error(`Failed to send snapshot chunk`,{chunkIndex:t,totalChunks:i,totalSize:r.length});break}}return u.debug(`Snapshot sent in chunks`,{totalChunks:i,totalSize:r.length}),a}function p(e,t){if(e||={chunks:Array(t.totalChunks),received:0,totalChunks:t.totalChunks},e.chunks[t.chunkIndex]||(e.chunks[t.chunkIndex]=t.chunkData,e.received++),e.received>=e.totalChunks)try{return{result:JSON.parse(e.chunks.join(``)),buffer:null}}catch(e){return u.error(`Failed to reassemble snapshot`,{error:e instanceof Error?e.message:String(e)}),{result:{messages:[],scoopJid:t.scoopJid},buffer:null}}return{result:null,buffer:e}}var m=new TextEncoder;function h(e){return m.encode(e).length}var g=4,_=512,v=32768,y=0;function b(){return y+=1,`c${y.toString(36)}-${Math.random().toString(36).slice(2,8)}`}function x(e,t,n=b()){let r=Math.max(1,t-_),i=Math.max(1,Math.min(v,Math.floor(r/g))),a=[];for(let t=0;t<e.length;){let n=Math.min(t+i,e.length);n<e.length&&S(e.charCodeAt(n-1))&&--n,n<=t&&(n=t+i),a.push(e.slice(t,n)),t=n}return a.length===0&&a.push(``),a.map((e,t)=>({type:s,chunkId:n,chunkIndex:t,totalChunks:a.length,chunkData:e}))}function S(e){return e>=55296&&e<=56319}var C=class{channel;listeners=[];closed=!1;reassembly=new Map;reassemblyBytes=0;constructor(e){this.channel=e,this.channel.addEventListener(`message`,e=>{if(!this.closed)try{let t=JSON.parse(e.data);if(t?.type===`__chunk`){c(t)?this.acceptChunkFrame(t):u.warn(`Dropping malformed tray sync chunk frame`);return}this.emit(t)}catch(e){u.warn(`Failed to parse tray sync message`,{error:e instanceof Error?e.message:String(e)})}})}emit(e){for(let t of this.listeners)t(e)}acceptChunkFrame(e){let t=this.reassembly.get(e.chunkId);if(t&&t.totalChunks!==e.totalChunks){u.error(`Dropping a tray sync chunk frame with inconsistent totalChunks`,{chunkId:e.chunkId,expected:t.totalChunks,received:e.totalChunks});return}if(t||(t={chunks:Array(e.totalChunks),received:0,totalChunks:e.totalChunks,bytes:0,startedAt:Date.now()},this.reassembly.set(e.chunkId,t),this.evictOverflowingReassemblies()),t.chunks[e.chunkIndex]!==void 0)return;t.chunks[e.chunkIndex]=e.chunkData,t.received++;let n=h(e.chunkData);if(t.bytes+=n,this.reassemblyBytes+=n,t.bytes>8388608){u.error(`Dropping an oversize chunked tray sync message`,{chunkId:e.chunkId,bytes:t.bytes,limit:o}),this.dropReassembly(e.chunkId);return}if(t.received<t.totalChunks){this.evictOverflowingReassemblies();return}this.dropReassembly(e.chunkId);try{this.emit(JSON.parse(t.chunks.join(``)))}catch(n){u.error(`Failed to reassemble chunked tray sync message`,{chunkId:e.chunkId,totalChunks:t.totalChunks,bytes:t.bytes,error:n instanceof Error?n.message:String(n)})}}dropReassembly(e){let t=this.reassembly.get(e);t&&(this.reassemblyBytes-=t.bytes,this.reassembly.delete(e))}evictOverflowingReassemblies(){for(;this.reassembly.size>8||this.reassemblyBytes>33554432;){let e=this.reassembly.keys().next();if(e.done)return;let t=this.reassembly.get(e.value);u.error(`Evicted an incomplete tray sync reassembly`,{chunkId:e.value,received:t?.received,totalChunks:t?.totalChunks,ageMs:t?Date.now()-t.startedAt:void 0}),this.dropReassembly(e.value)}}get maxMessageBytes(){let e=this.channel.getMaxMessageSize?.();return typeof e==`number`&&e>0?e:i}send(e){if(this.closed)return!1;let t=e.type,n;try{n=JSON.stringify(e)}catch(e){return u.error(`Failed to serialize tray sync message`,{type:t,error:e instanceof Error?e.message:String(e)}),!1}let r=h(n);return r<=this.maxMessageBytes?this.writeRaw(n,t):this.sendChunked(n,r,t)}writeRaw(e,t){try{return this.channel.send(e),!0}catch(n){return u.error(`Failed to send tray sync message`,{type:t,bytes:h(e),error:n instanceof Error?n.message:String(n)}),!1}}sendChunked(e,t,i){if(t>8388608)return u.error(`Refusing to send an oversize tray sync message`,{type:i,bytes:t,limit:o}),!1;let a=this.channel.bufferedAmount;if(typeof a==`number`&&a>=8388608)return u.error(`Refusing to send a chunked tray sync message — channel is congested`,{type:i,bytes:t,bufferedAmount:a,highWater:r}),!1;let s=x(e,this.maxMessageBytes);if(s.length>8192)return u.error(`Refusing to send a message needing too many frames`,{type:i,bytes:t,frames:s.length,limit:n}),!1;for(let e of s)if(!this.writeRaw(JSON.stringify(e),`__chunk`))return u.error(`Chunked tray sync send failed part-way`,{type:i,bytes:t,chunkIndex:e.chunkIndex,totalChunks:e.totalChunks}),!1;return u.debug(`Sent a chunked tray sync message`,{type:i,bytes:t,totalChunks:s.length}),!0}onMessage(e){return this.listeners.push(e),()=>{let t=this.listeners.indexOf(e);t>=0&&this.listeners.splice(t,1)}}close(){this.closed=!0,this.listeners.length=0,this.reassembly.clear(),this.reassemblyBytes=0,this.channel.close()}get isOpen(){return!this.closed&&this.channel.readyState===`open`}get bufferedAmount(){return this.channel.bufferedAmount}};function w(e){return new C(e)}function T(e){return new C(e)}export{l as a,f as i,w as n,p as r,T as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{D as e,g as t}from"./db-BTiVtoD4.js";const n=`slicc:last-seen-version`;function r(){return{version:`6.
|
|
1
|
+
import{D as e,g as t}from"./db-BTiVtoD4.js";const n=`slicc:last-seen-version`;function r(){return{version:`6.30.0`,releasedAt:`2026-08-07T07:40:23Z`}}async function i(){let e=await t(n);return e&&e.length>0?e:null}async function a(t){await e(n,t)}async function o(){let e=r(),t=await i();return t===null?(await a(e.version),{bundled:e,lastSeen:null,isUpgrade:!1}):t===e.version?{bundled:e,lastSeen:t,isUpgrade:!1}:{bundled:e,lastSeen:t,isUpgrade:!0}}async function s(e){await a(e)}export{o as detectUpgrade,s as recordVersionSeen};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e}from"./rolldown-runtime-
|
|
1
|
+
import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";var t=e({DeviceHandleRegistry:()=>i,MAX_USB_TRANSFER_BYTES:()=>s,deviceToInfo:()=>c,getNavigatorUsb:()=>n,getSharedUsbRegistry:()=>o});function n(){return globalThis.navigator?.usb??null}function r(e,t){return e===t||e.vendorId===t.vendorId&&e.productId===t.productId&&(e.serialNumber??``)===(t.serialNumber??``)&&!!e.serialNumber}var i=class{byHandle=new Map;counter=0;register(e){for(let[t,n]of this.byHandle)if(r(n,e))return this.byHandle.set(t,e),t;let t=`usb${++this.counter}`;return this.byHandle.set(t,e),t}get(e){return this.byHandle.get(e)}remove(e){return this.byHandle.delete(e)}list(){return[...this.byHandle].map(([e,t])=>({handle:e,device:t}))}},a=null;function o(){return a||=new i,a}var s=4194304;function c(e,t){return{handle:e,vendorId:t.vendorId,productId:t.productId,...t.productName?{productName:t.productName}:{},...t.manufacturerName?{manufacturerName:t.manufacturerName}:{},...t.serialNumber?{serialNumber:t.serialNumber}:{},opened:t.opened}}export{t as a,o as i,c as n,n as r,s as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{i as e,t}from"./hid-device-registry-
|
|
1
|
+
import{i as e,t}from"./hid-device-registry-B2R-0rNt.js";import{n,r}from"./serial-port-registry-B3LG5UIy.js";import{n as i,t as a}from"./usb-device-registry-CRsCisej.js";function o(e,t){let n=e.get(t);if(!n)throw Error(`unknown serial handle '${t}'`);return n}function s(e,t){let n=new Uint8Array(e.length+t.length);return n.set(e),n.set(t,e.length),n}function c(e,t,n){if(t.length===0)return-1;outer:for(let r=Math.max(0,n);r+t.length<=e.length;r++){for(let n=0;n<t.length;n++)if(e[r+n]!==t[n])continue outer;return r}return-1}async function l(e,t){return(await t.getPorts()).map(t=>{let n=e.register(t);return r(n,e.get(n))})}async function u(e,t,n){let i=await t.requestPort(n.length?{filters:n}:{}),a=e.register(i);return r(a,e.get(a))}function d(e,t){return r(t,o(e,t))}async function f(e,t,n){let r=o(e,t);await r.port.open(n),r.opened=!0}async function p(e,t){let n=o(e,t);if(n.reader){try{await n.reader.cancel()}catch{}try{n.reader.releaseLock()}catch{}n.reader=void 0}if(n.pendingRead=void 0,n.leftover=void 0,n.writer){try{n.writer.releaseLock()}catch{}n.writer=void 0}await n.port.close(),n.opened=!1}function m(e){if(!e.reader){if(!e.port.readable)throw Error(`serial port is not readable (is it open?)`);e.reader=e.port.readable.getReader()}return e.reader}function h(e){if(!e.writer){if(!e.port.writable)throw Error(`serial port is not writable (is it open?)`);e.writer=e.port.writable.getWriter()}return e.writer}async function g(e,t,r){let i=o(e,t),a=Math.min(r.maxBytes??4194304,n),l=r.until?.length?r.until:void 0,u=r.timeoutMs??1e3,d=Date.now()+Math.max(0,u),f=i.leftover??new Uint8Array;i.leftover=void 0;let p=0,h=()=>{if(l){let e=c(f,l,Math.max(0,p-(l.length-1)));if(e>=0){let t=e+l.length;return i.leftover=f.slice(t),f.slice(0,t)}}return f.length>=a?(i.leftover=f.slice(a),f.slice(0,a)):null},g=h();if(g)return g;let _=m(i);for(;Date.now()<d;){let e=d-Date.now(),t=i.pendingRead??_.read();i.pendingRead=t;let n,r=new Promise(t=>{n=setTimeout(()=>t(`__timeout`),e)}),a;try{a=await Promise.race([t,r])}finally{n&&clearTimeout(n)}if(a===`__timeout`)break;if(i.pendingRead=void 0,a.done){i.reader=void 0;break}if(a.value?.length){p=f.length,f=s(f,a.value);let e=h();if(e)return e}}return f}async function _(e,t,r){if(r.length>4194304)throw Error(`serial write payload exceeds the ${n}-byte (4 MiB) v1 limit`);return await h(o(e,t)).write(r),r.length}async function v(e,t){return o(e,t).port.getSignals()}async function y(e,t,n){await o(e,t).port.setSignals(n)}function b(e,t){let n=e.get(t);if(!n)throw Error(`unknown hid handle '${t}'`);return n}async function x(e){e.opened||await e.open()}function S(e,n){if(e>4194304)throw Error(`${n} exceeds the ${t}-byte (4 MiB) v1 limit`)}function C(e){let t=new ArrayBuffer(e.byteLength);return new Uint8Array(t).set(new Uint8Array(e.buffer,e.byteOffset,e.byteLength)),t}async function w(t,n){return(await n.getDevices()).map(n=>e(t.register(n),n))}async function T(t,n,r){let i=await n.requestDevice({filters:r});if(i.length===0)throw Error(`No device selected.`);return i.map(n=>e(t.register(n),n))}function E(t,n){return e(n,b(t,n))}async function D(e,t){await b(e,t).open()}async function O(e,t){await b(e,t).close()}async function k(e,t,n,r){S(r.byteLength,`send report payload`);let i=b(e,t);await x(i),await i.sendReport(n,r)}async function A(e,t,n,r){S(r.byteLength,`send feature report payload`);let i=b(e,t);await x(i),await i.sendFeatureReport(n,r)}async function j(e,t,n){let r=b(e,t);return await x(r),{reportId:n,bytes:C(await r.receiveFeatureReport(n))}}async function M(e,t,n){let r=b(e,t);await x(r);let i=e=>{n({reportId:e.reportId,bytes:C(e.data)})};return r.addEventListener(`inputreport`,i),()=>r.removeEventListener(`inputreport`,i)}function N(e,t){let n=e.get(t);if(!n)throw Error(`unknown usb handle '${t}'`);return n}function P(e,t){if(e>4194304)throw Error(`${t} exceeds the ${a}-byte (4 MiB) v1 limit`)}function F(e){return e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)}async function I(e,t){return(await t.getDevices()).map(t=>i(e.register(t),t))}async function L(e,t,n){let r=await t.requestDevice({filters:n});return i(e.register(r),r)}function R(e,t){return i(t,N(e,t))}async function z(e,t){await N(e,t).open()}async function B(e,t){await N(e,t).close()}async function V(e,t,n){await N(e,t).selectConfiguration(n)}async function H(e,t,n){await N(e,t).claimInterface(n)}async function U(e,t,n){await N(e,t).releaseInterface(n)}async function W(e,t,n,r){P(r,`control-in length`);let i=await N(e,t).controlTransferIn(n,r);return{status:i.status??`ok`,bytes:i.data?F(i.data):new ArrayBuffer(0)}}async function G(e,t,n,r){P(r.byteLength,`control-out payload`);let i=await N(e,t).controlTransferOut(n,r);return{status:i.status??`ok`,bytesWritten:i.bytesWritten}}async function K(e,t,n,r){P(r,`transfer-in length`);let i=await N(e,t).transferIn(n,r);return{status:i.status??`ok`,bytes:i.data?F(i.data):new ArrayBuffer(0)}}async function q(e,t,n,r){P(r.byteLength,`transfer-out payload`);let i=await N(e,t).transferOut(n,r);return{status:i.status??`ok`,bytesWritten:i.bytesWritten}}async function J(e,t){await N(e,t).reset()}export{y as A,p as C,f as D,l as E,g as O,M as S,v as T,D as _,R as a,A as b,U as c,V as d,K as f,w as g,E as h,G as i,_ as j,u as k,L as l,O as m,B as n,I as o,q as p,W as r,z as s,H as t,J as u,j as v,d as w,k as x,T as y};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./logger-DDBAeTLF.js";import{i as t,o as n}from"./dictation-priming-
|
|
1
|
+
import{t as e}from"./logger-DDBAeTLF.js";import{i as t,o as n}from"./dictation-priming-CNllGgNq.js";import{hasVoiceForLang as r,speak as i,speechTextFromMarkdown as a}from"./speak-DFbF2xgr.js";var o=e(`speech:voice-reply`),s=0;function c(){s++}function l(){return s<=0?!1:(s--,!0)}async function u(e,s=i,c=r){let l=t(e);if(l&&!await c(l))return;let u=a(n(e));if(u)try{await s(l?{text:u,lang:l}:{text:u})}catch(e){o.warn(`spoken reply failed`,e)}}export{l as consumeVoiceSubmission,c as markVoiceSubmission,u as speakReplyMarkdown};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/src-
|
|
2
|
-
import{t as e}from"./preload-helper-Czpn1I53.js";import{n as t,t as n}from"./base64-DpPqYZJF.js";import"./src-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/src-scK1LFrC.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/preload-helper-Czpn1I53.js","assets/icons-DtQGhvkp.js","assets/speech-C5U8h4In.js","assets/soundscape-cues-5_sT5Un6.js","assets/panel-registry-CJdOibpf.js","assets/layout-schema-m9_VAwOw.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{t as e}from"./preload-helper-Czpn1I53.js";import{n as t,t as n}from"./base64-DpPqYZJF.js";import"./src-CAWTvdAa.js";import{t as r}from"./wc-permissions-registry-DHel9S61.js";var i=8,a=2e3,o=[`/workspace`,`/shared`,`/tmp`],s=8,c=new Set([`node_modules`,`.git`]),l=1e4,u=/\.(png|jpe?g|gif|webp|svg|avif)$/i,d=4194304,f=262144;function p(){return`att-${Date.now()}-${Math.random().toString(36).slice(2,8)}`}function m(e){return{png:`image/png`,jpg:`image/jpeg`,jpeg:`image/jpeg`,gif:`image/gif`,webp:`image/webp`,svg:`image/svg+xml`,avif:`image/avif`,md:`text/markdown`,json:`application/json`}[e.toLowerCase().split(`.`).pop()??``]??`text/plain`}function h(e,n){let r={id:p(),name:e,size:n.length};if(u.test(e))return n.length>d?{...r,mimeType:m(e),kind:`image`,error:`image too large to inline`}:{...r,mimeType:m(e),kind:`image`,data:t(n)};let i={...r,mimeType:m(e),kind:`file`};return n.length>f?{...i,error:`file too large to inline`}:i}async function g(e){let t=new Uint8Array(await e.arrayBuffer()),n=h(e.name,t);return e.type?{...n,mimeType:e.type}:n}function _(e,t){let n=t.match(/^data:(image\/[^;]+);base64,(.+)$/);return n?{id:p(),name:e,mimeType:n[1],size:Math.floor(n[2].length*3/4),kind:`image`,data:n[2]}:null}var v=`/tmp/upload`,y=1568;async function b(e,t,n){await e.mkdir(v,{recursive:!0}).catch(()=>void 0);let r=`${v}/${Date.now()}-${t.replace(/[^A-Za-z0-9._-]+/g,`_`)}`;return await e.writeFile(r,n),r}async function x(e,t=y){let n=new Image;n.src=e;try{await n.decode()}catch{return e}let r=Math.min(1,t/Math.max(n.naturalWidth,n.naturalHeight,1));if(r>=1)return e;let i=document.createElement(`canvas`);return i.width=Math.round(n.naturalWidth*r),i.height=Math.round(n.naturalHeight*r),i.getContext(`2d`)?.drawImage(n,0,0,i.width,i.height),i.toDataURL(`image/jpeg`,.85)}async function S(e,t,r){let i=_(e,t);if(!i)return null;let a;return r&&i.data&&(a=await b(r,e,n(i.data)).catch(()=>void 0)),{..._(e,await x(t).catch(()=>t))??i,name:e,path:a}}async function C(e,t,n){if(!n)return null;let r=new Uint8Array(await t.arrayBuffer()),i=await b(n,e,r).catch(()=>void 0);return i?{id:p(),name:e,mimeType:t.type||`video/webm`,size:r.length,kind:`file`,path:i}:null}async function w(e){let t=[],n=o.map(e=>({dir:e,depth:0}));for(;n.length>0&&t.length<a;){let{dir:r,depth:i}=n.shift(),o;try{o=await e.readDir(r)}catch{continue}for(let e of o){let o=`${r}/${e.name}`;if(e.type===`directory`)i<s&&!c.has(e.name)&&n.push({dir:o,depth:i+1});else if(t.push(o),t.length>=a)break}}return t}function T(e){let t=null;return async n=>{let r=await e.openReader();(!t||Date.now()-t.at>l)&&(t={at:Date.now(),paths:await w(r)});let a=e=>n===``||e.toLowerCase().includes(n),o=t.paths.filter(e=>a(e)).slice(0,i).map(e=>({id:e,label:e.split(`/`).pop()??e,sub:e.slice(0,e.lastIndexOf(`/`))})),s=[];try{s=(await r.readDir(`/workspace/skills`)).filter(e=>e.type===`directory`&&a(e.name)).slice(0,i).map(e=>({id:e.name,label:e.name}))}catch{}let c=(await e.listConversations().catch(()=>[])).filter(e=>a(e.label)).slice(0,i);return[{kind:`file`,label:`Files`,icon:`file`,entries:o},{kind:`skill`,label:`Skills`,icon:`sparkles`,entries:s},{kind:`conversation`,label:`Conversations`,icon:`message-square`,entries:c}]}}var E=`slicc-wc-attach-style`,D=`
|
|
3
3
|
.wcatt{display:flex;flex-wrap:wrap;gap:6px;padding:8px 10px 0;font-family:var(--ui);}
|
|
4
4
|
.wcatt:empty{display:none;}
|
|
5
5
|
.wcatt__chip{display:inline-flex;align-items:center;gap:6px;font-size:11px;color:var(--ink);
|
|
@@ -10,4 +10,4 @@ import{t as e}from"./preload-helper-Czpn1I53.js";import{n as t,t as n}from"./bas
|
|
|
10
10
|
.wcatt__x{appearance:none;background:none;border:none;cursor:pointer;color:var(--txt-3);
|
|
11
11
|
font:inherit;padding:0;line-height:1;}
|
|
12
12
|
.wcatt__x:hover{color:var(--ink);}
|
|
13
|
-
`,O=class{#e;#t=[];constructor(e){if(!document.getElementById(E)){let e=document.createElement(`style`);e.id=E,e.textContent=D,document.head.appendChild(e)}this.#e=document.createElement(`div`),this.#e.className=`wcatt`,e.prepend(this.#e)}get items(){return this.#t}add(e){this.#t.push(e),this.#n()}take(){let e=this.#t;return this.#t=[],this.#n(),e}#n(){this.#e.replaceChildren(...this.#t.map(e=>this.#r(e)))}#r(t){let n=document.createElement(`span`);if(n.className=`wcatt__chip`,t.kind===`image`&&t.data){let r=document.createElement(`img`);r.className=`wcatt__thumb`,r.src=`data:${t.mimeType};base64,${t.data}`,r.alt=t.name,r.addEventListener(`click`,()=>{e(async()=>{let{SliccImagePreview:e}=await import(`./src-
|
|
13
|
+
`,O=class{#e;#t=[];constructor(e){if(!document.getElementById(E)){let e=document.createElement(`style`);e.id=E,e.textContent=D,document.head.appendChild(e)}this.#e=document.createElement(`div`),this.#e.className=`wcatt`,e.prepend(this.#e)}get items(){return this.#t}add(e){this.#t.push(e),this.#n()}take(){let e=this.#t;return this.#t=[],this.#n(),e}#n(){this.#e.replaceChildren(...this.#t.map(e=>this.#r(e)))}#r(t){let n=document.createElement(`span`);if(n.className=`wcatt__chip`,t.kind===`image`&&t.data){let r=document.createElement(`img`);r.className=`wcatt__thumb`,r.src=`data:${t.mimeType};base64,${t.data}`,r.alt=t.name,r.addEventListener(`click`,()=>{e(async()=>{let{SliccImagePreview:e}=await import(`./src-scK1LFrC.js`).then(e=>e.t);return{SliccImagePreview:e}},__vite__mapDeps([0,1,2,3,4,5,6,7])).then(({SliccImagePreview:e})=>e.show(r.src,r))}),n.append(r)}let r=document.createElement(`span`);r.className=`wcatt__name`,r.textContent=t.name;let i=document.createElement(`button`);return i.type=`button`,i.className=`wcatt__x`,i.setAttribute(`aria-label`,`Remove ${t.name}`),i.textContent=`×`,i.addEventListener(`click`,()=>{this.#t=this.#t.filter(e=>e.id!==t.id),this.#n()}),n.append(r,i),n}};async function k(e){let t=document.createElement(`video`);t.srcObject=e,t.muted=!0;try{await t.play(),await new Promise(e=>requestAnimationFrame(()=>e(null)));let e=document.createElement(`canvas`);return e.width=t.videoWidth,e.height=t.videoHeight,e.width===0||e.height===0?null:(e.getContext(`2d`)?.drawImage(t,0,0),e.toDataURL(`image/png`))}finally{for(let t of e.getTracks())t.stop();t.srcObject=null}}async function A(){let e=r();if(e){let t=await e.request(`screenshare`,{constraints:{video:!0}});if(!t)return null;let n=t.stream;return k(n)}return k(await navigator.mediaDevices.getDisplayMedia({video:!0}))}async function j(e,t){let n=r();if(!n)return null;let i=await n.prompt({kinds:e,description:t});for(let e of i.grants)if(e.kind===`camera`||e.kind===`microphone`||e.kind===`screenshare`)for(let t of e.stream.getTracks())t.stop();return i.status===`granted`}var M=`slicc_camera_device`,N=`slicc_microphone_device`,P=[`position:absolute`,`left:50%`,`right:auto`,`transform:translateX(-50%)`,`bottom:56px`,`width:calc(100% - 32px)`,`max-width:680px`,`z-index:3`].join(`;`);async function F(e,t){if(await j([`camera`,`microphone`],`Slicc is requesting access to your camera and microphone to capture a photo or video for this conversation.`)===!1)return null;let n=document.createElement(`slicc-composer-capture`),r=localStorage.getItem(M);r&&n.setAttribute(`preferred-device`,r);let i=localStorage.getItem(N);i&&n.setAttribute(`preferred-audio-device`,i),n.style.cssText=P,n.hidden=!0,n.addEventListener(`slicc-capture-device-change`,e=>{let t=e.detail;if(!t?.deviceId)return;let n=t.kind===`microphone`?N:M;localStorage.setItem(n,t.deviceId)}),e.append(n);try{return await n.open(t)}finally{n.remove()}}async function I(e,t,n){if(!e.dataUrl)return;let r=`photo-${Date.now()}.png`,i=await t.openWriter?.().catch(()=>null)??null,a=await S(r,e.dataUrl,i);a&&n.add(a)}async function L(e,t,n){if(!e.blob)return;let r=/webm/i.test(e.mimeType)?`webm`:`bin`,i=`video-${Date.now()}.${r}`,a=await t.openWriter?.().catch(()=>null)??null,o=await C(i,e.blob,a);o&&n.add(o)}async function R(e,t,n){if(e.mode===`photo`){if(!t.composer){let e=await z();if(!e)return;let r=await S(`photo-${Date.now()}.png`,e,await t.openWriter?.().catch(()=>null)??null);r&&n.add(r);return}let e=await F(t.composer,`photo`);if(!e)return;e.kind===`image`?await I(e,t,n):e.kind===`video`&&await L(e,t,n);return}let r=await A();if(!r)return;let i=await S(`screenshot-${Date.now()}.png`,r,await t.openWriter?.().catch(()=>null)??null);i&&n.add(i)}async function z(){if(await j([`camera`],`Slicc is requesting access to your camera to capture a photo for this conversation.`)===!1)return null;let e=document.createElement(`slicc-camera-dialog`),t=localStorage.getItem(M);t&&e.setAttribute(`preferred-device`,t),e.addEventListener(`slicc-camera-device-change`,e=>{let t=e.detail?.deviceId;t&&localStorage.setItem(M,t)}),document.body.append(e);try{return await e.open()}finally{e.remove()}}async function B(e,t,n){let r=await n.openWriter?.().catch(()=>null)??null,i=r?await b(r,e.name,t).catch(()=>void 0):void 0;return i?{...e,error:void 0,path:i}:e.kind===`image`?e:{...e,error:`could not be saved to the virtual filesystem`}}async function V(e,t,n){let r=e.split(`/`).pop()??e;if(u.test(r)){let i=await(await t()).readFile(e),a=h(r,typeof i==`string`?new TextEncoder().encode(i):i);n.add({...a,error:void 0,path:e});return}let i=0;try{i=(await(await t()).stat(e)).size}catch{}n.add({id:p(),name:r,mimeType:m(r),size:i,kind:`file`,path:e})}function H(e,t){let n=t.value??t.getAttribute(`value`)??``,r=n&&!n.endsWith(` `)?` `:``;t.setAttribute(`value`,`${n}${r}Use the "${e}" skill: `)}function U(e){return e?.name===`NotAllowedError`}async function W(e,t,n){if(e.kind===`upload`&&e.file instanceof File){let r=new Uint8Array(await e.file.arrayBuffer());n.add(await B(await g(e.file),r,t))}else e.kind===`capture`?await R(e,t,n):e.kind===`file`&&typeof e.id==`string`&&t.openReader?await V(e.id,t.openReader,n):e.kind===`skill`&&typeof e.label==`string`?H(e.label,t.inputCard):e.kind===`conversation`&&typeof e.id==`string`&&t.freezer.dispatchEvent(new CustomEvent(`freezer-card-select`,{bubbles:!0,composed:!0,detail:{slug:e.id}}))}function G(e){let{inputCard:t,log:n}=e,r=new O(t),i=t.querySelector(`slicc-add-menu`);return i&&(e.openReader?i.provider=T({openReader:e.openReader,listConversations:e.listConversations??(async()=>[])}):i.results=[],i.setAttribute(`global-drop`,``),e.noCamera&&i.setAttribute(`no-camera`,``)),t.addEventListener(`slicc-add`,t=>{let i=t.detail;i&&W(i,e,r).catch(e=>{U(e)||n.error(`WC add-menu action failed`,e)})}),t.addEventListener(`paste`,t=>{let i=t.clipboardData?.items;if(i)for(let a of Array.from(i)){if(!a.type.startsWith(`image/`))continue;let i=a.getAsFile();if(!i)continue;t.preventDefault();let o=(i.type.split(`/`)[1]||`png`).replace(/[^a-z0-9]/gi,``)||`png`,s=i.name?i:new File([i],`pasted-image.${o}`,{type:i.type});W({kind:`upload`,name:s.name,size:s.size,file:s},e,r).catch(e=>n.error(`Paste image failed`,e))}}),r}export{G as wireWcAttach};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/setup-sudo-
|
|
2
|
-
import{t as e}from"./preload-helper-Czpn1I53.js";import{n as t,o as n,r,t as i}from"./wc-live-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/setup-sudo-DfUZKZqy.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/preload-helper-Czpn1I53.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{t as e}from"./preload-helper-Czpn1I53.js";import{n as t,o as n,r,t as i}from"./wc-live-CaE_NPFb.js";import{wireWcDetached as a}from"./wc-detached-B3WCbbZT.js";async function o(o,s,c=!1){let l=r(o,`extension · wc`),u=new n(t(l.wiring));i(l,u,s),a({client:u,isDetachedSelf:c});let{setupSudoExtension:d}=await e(async()=>{let{setupSudoExtension:e}=await import(`./setup-sudo-DfUZKZqy.js`).then(e=>e.n);return{setupSudoExtension:e}},__vite__mapDeps([0,1,2]));await d({log:s}),u.requestState(),s.info(`WC extension shell connected to offscreen engine`)}export{o as mountWcUiExtension};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e,t}from"./proxied-fetch-
|
|
1
|
+
import{o as e,t}from"./proxied-fetch-ULPrH97b.js";var n={"slicc-server":`sliccstart`,"slicc-node-server":`npx`},r=`standalone · live`;async function i(i){let a=i?.fetchFn??fetch,o=i?.timeoutMs??1500;try{let i=new AbortController,s=setTimeout(()=>i.abort(),o),c=await a(e(`/api/status`),{cache:`no-store`,signal:i.signal,headers:t()}).finally(()=>clearTimeout(s));if(!c.ok)return r;let l=await c.json(),u=l.service?n[l.service]:void 0;return u?`${u} · live`:r}catch{return r}}export{r as DEFAULT_STANDALONE_LABEL,i as resolveStandaloneFloatLabel};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/layout-schema-m9_VAwOw.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/panelize-shell-CgDNoGLr.js","assets/logger-DDBAeTLF.js","assets/virtual-device-paths-9EXC9iPp.js","assets/icons-DtQGhvkp.js","assets/src-scK1LFrC.js","assets/preload-helper-Czpn1I53.js","assets/speech-C5U8h4In.js","assets/soundscape-cues-5_sT5Un6.js","assets/panel-registry-CJdOibpf.js","assets/layout-apply-registry-Cw730jao.js","assets/trusted-layer-ghPA1ENf.js","assets/wc-live-CaE_NPFb.js","assets/account-store-83ArXgcG.js","assets/compat-Bn8HnC3L.js","assets/models-DgdVqaw5.js","assets/diagnostics-DN_idNHx.js","assets/provider-env-CTOcDKrQ.js","assets/__vite-browser-external-5eBdwsFd.js","assets/openrouter.models-C8HitxAG.js","assets/context-compaction-DDaM9TWa.js","assets/src-CAWTvdAa.js","assets/proxied-fetch-ULPrH97b.js","assets/base64-DpPqYZJF.js","assets/runtime-env-DH4NDw4t.js","assets/fetch-body-D2PwksUW.js","assets/secret-topology-DCQNOMWj.js","assets/secrets-bridge-client-BZMh3a0J.js","assets/port-bridge-client-Bg6_jjLD.js","assets/tool-ui-DfXu6quJ.js","assets/tool-result-images-D8kQ0hH0.js","assets/providers-B98ueIFT.js","assets/panel-rpc-B3MSVImO.js","assets/bedrock-camp-BDCjQMZx.js","assets/transform-messages-DgR3h-Ck.js","assets/feature-flags-Cf-Bv5AK.js","assets/tray-runtime-config-C82czC62.js","assets/messages-BD4p8GuF.js","assets/setup-standalone-prelude-DGfC07wR.js","assets/bridge-launch-params-B8x2eq4a.js","assets/electron-overlay-route-CjT6k9Df.js","assets/runtime-mode-BgSVO5sw.js","assets/setup-sudo-DfUZKZqy.js","assets/tray-follower-status-5SqDRLX8.js","assets/telemetry-DqIqVG5n.js","assets/sha256-CHfIPo1C.js","assets/chat-session-store-pWb1-jNp.js","assets/tray-leader-BIbpF_6U.js","assets/db-C7OEVMWU.js","assets/shared-Y4VMjBcs.js","assets/mime-types-ugOWOUZ9.js","assets/dictation-priming-CNllGgNq.js","assets/export-provider-BEHTjSYw.js","assets/dip-rdFXauwM.js","assets/wc-permissions-registry-DHel9S61.js","assets/hid-device-registry-B2R-0rNt.js","assets/serial-port-registry-B3LG5UIy.js","assets/usb-operations-Cgk-otz-.js","assets/usb-device-registry-CRsCisej.js","assets/sprinkle-renderer-CMk2ghMi.js","assets/theme-CXRqxpw6.js","assets/theme-engine-By4GU_Wc.js","assets/sprinkle-bridge-RIIOK3yH.js","assets/session-freezer-z4DJm3zA.js","assets/attachments-CByeG2Ru.js","assets/types-idfTVsM8.js","assets/wc-follower-model-surface-B3z6dlpJ.js","assets/browser-BCEjSsoK.js","assets/wc-shell-Djy773Zo.js","assets/timestamp-preference-sKwBl5I8.js","assets/wc-scoop-color-CByZNEJo.js","assets/wc-shell-WkeczD9x.css","assets/legacy-styles-DcRu2WCJ.js","assets/wc-transcript-export-Bx9ecGAa.js","assets/export-spool-D9AiwWeo.js","assets/follower-navigate-watcher-DZpXL_9_.js","assets/navigation-watcher-CcKsLKw9.js","assets/handoff-link-BM4ctkE8.js","assets/discovery-preference-yvSQLIqD.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{t as e}from"./preload-helper-Czpn1I53.js";import{t}from"./logger-DDBAeTLF.js";import{r as n}from"./src-CAWTvdAa.js";import{n as r}from"./tray-sync-protocol-BZ5yhJH9.js";import{a as i,r as a}from"./wc-live-CaE_NPFb.js";import{r as o,t as s}from"./feature-flags-Cf-Bv5AK.js";import{i as c,m as l,p as u,r as d,u as ee}from"./tray-runtime-config-C82czC62.js";import{n as te}from"./setup-standalone-prelude-DGfC07wR.js";import{n as ne,o as re,t as f}from"./tray-follower-status-5SqDRLX8.js";import{n as p}from"./theme-engine-By4GU_Wc.js";import{i as m,r as ie}from"./dip-rdFXauwM.js";import{WcSprinkleZone as ae}from"./wc-sprinkles-CcifX3Sy.js";import{wireWcAttach as oe}from"./wc-attach-GJkf0zy_.js";import{t as se}from"./wc-follower-model-surface-B3z6dlpJ.js";import{a as ce,i as le}from"./wc-shell-Djy773Zo.js";import{c as ue,i as de,r as fe,t as h}from"./wc-tray-scoops-CwSRVd7s.js";var g=t(`follower-switch-out`);function _(e,t){t.stopFollower();try{t.storage.removeItem(d),e.workerBaseUrl===null?t.storage.removeItem(c):t.storage.setItem(c,e.workerBaseUrl)}catch(e){g.error(`follower switch-out: storage write failed — state may revert on reload`,{error:e instanceof Error?e.message:String(e)})}try{let e=t.getHref(),n=l(e);n!==e&&t.replaceHref(n)}catch(e){g.error(`follower switch-out: URL normalize failed — may re-enter follower on reload`,{error:e instanceof Error?e.message:String(e)})}t.reload()}var v=new Set([`oauth-attempt`,`connect-attempt`,`device-code-decision`]);function y(e){return v.has(e)}var b=`slicc-signin-redirect-style`,x=`wc-signin-redirect`,S=`
|
|
3
|
+
.${x}{display:flex;gap:10px;align-items:flex-start;margin:10px 12px;padding:12px 14px;
|
|
4
|
+
border:1px solid var(--line);border-radius:12px;background:var(--ghost);color:var(--ink);
|
|
5
|
+
font-family:var(--ui);font-size:13px;line-height:1.4;}
|
|
6
|
+
.${x}__body{flex:1;min-width:0;}
|
|
7
|
+
.${x}__title{font-weight:600;margin-bottom:2px;}
|
|
8
|
+
.${x}__sub{color:var(--txt-2);}
|
|
9
|
+
.${x}__open{appearance:none;border:1px solid var(--line);border-radius:8px;cursor:pointer;
|
|
10
|
+
background:var(--canvas);color:var(--ink);font:inherit;font-weight:600;padding:6px 12px;white-space:nowrap;}
|
|
11
|
+
.${x}__open:hover{background:var(--ghost);}
|
|
12
|
+
.${x}__x{appearance:none;background:none;border:none;cursor:pointer;color:var(--txt-3);
|
|
13
|
+
font:inherit;font-size:16px;line-height:1;padding:0 2px;}
|
|
14
|
+
.${x}__x:hover{color:var(--ink);}
|
|
15
|
+
`;function C(e){if(e.getElementById(b))return;let t=e.createElement(`style`);t.id=b,t.textContent=S,e.head.appendChild(t)}function w(e,t){C(e);let n=e.createElement(`div`);n.className=x,n.setAttribute(`role`,`status`);let r=e.createElement(`div`);r.className=`${x}__body`;let i=e.createElement(`div`);i.className=`${x}__title`,i.textContent=t.title;let a=e.createElement(`div`);a.className=`${x}__sub`,a.textContent=t.sub,r.append(i,a);let o=e.createElement(`button`);if(o.type=`button`,o.className=`${x}__open`,o.textContent=t.buttonLabel,o.addEventListener(`click`,()=>t.onOpenTab()),n.append(r,o),t.dismissible){let t=e.createElement(`button`);t.type=`button`,t.className=`${x}__x`,t.setAttribute(`aria-label`,`Dismiss`),t.textContent=`×`,t.addEventListener(`click`,()=>n.remove()),n.append(t)}return n}function T(e,t){let n=e.ownerDocument;t.onOpenTab();let r=e.querySelector(`.${x}`);if(r)return r.scrollIntoView?.({block:`nearest`}),r;let i=w(n,{title:`Sign in from the SLICC tab`,sub:`The side panel can't complete a provider login — we've switched you to the main SLICC tab. Finish signing in there (Settings › Providers), then come back.`,buttonLabel:`Open SLICC tab`,onOpenTab:t.onOpenTab,dismissible:!0});return e.append(i),i.scrollIntoView?.({block:`nearest`}),i}function E(e,t){return w(e,{title:`Set up SLICC in the main tab`,sub:`SLICC needs a model connected before it can help. Open the main SLICC tab to finish setup and sign in, then come back to the side panel.`,buttonLabel:`Open SLICC tab`,onOpenTab:t.onOpenTab,dismissible:!1})}var D=t(`wc-follower`),O=`/shared/sprinkles/welcome/`,k={sendMessage:()=>{},onEvent:()=>()=>{},stop:()=>{}};function A(e){return e===void 0||e===`active`?{kind:`active`}:e.trim()===``?null:{kind:`frozen`,sessionId:e}}function j(e,t){for(;e.firstChild;)e.removeChild(e.firstChild);let n=document.createElement(`div`);n.style.cssText=`padding:2rem;text-align:center;font-family:system-ui;`;let r=document.createElement(`h1`);r.style.color=`var(--s2-negative, #e34850)`,r.textContent=`Could not start follower`;let i=document.createElement(`p`);i.style.color=`var(--s2-content-tertiary, #717171)`,i.textContent=t,n.append(r,i),e.appendChild(n)}function M(e,t,n,r,i){let a=e=>{let t=document.createElement(`div`);return t.className=`wcui-placeholder`,t.textContent=e,t};i.files?(e.style.display=`none`,e.parentElement?.append(a(`Files live on the leader. A follower mirrors the leader's chat, sprinkles, and browser tabs - not its filesystem.`))):e.closest(`slicc-surface`)?.remove(),i.terminal?t.append(a(`The shell runs on the leader. A follower has no local terminal - drive the session through chat.`)):t.closest(`slicc-surface`)?.remove(),i.memory?n.append(a(`Memory lives on the leader. A follower has no local memory store.`)):n.closest(`slicc-surface`)?.remove(),i.monitor?(r.style.display=`none`,r.parentElement?.append(a(`Monitor reads the leader's kernel state. A follower has no local kernel.`))):r.closest(`slicc-surface`)?.remove()}var N={terminal:!0,files:!0,memory:!0,browser:!0,modelPicker:!0,history:!0,nav:!0,newSprinkle:!0,monitor:!0,showTimestamps:!0};function P(e){let t=[];for(let[n,r]of[[`terminal`,`term`],[`files`,`files`],[`memory`,`memory`],[`browser`,`browser`],[`monitor`,`monitor`],[`newSprinkle`,`new`]])e[n]||t.push(`slicc-dock-item[data-t="${r}"]`);if(e.modelPicker||t.push(`slicc-composer-meta`),e.history||t.push(`slicc-freezer`),e.nav||t.push(`slicc-nav`),!e.terminal&&!e.files&&!e.memory&&!e.browser&&!e.monitor&&t.push(`slicc-dock .div`,`slicc-dock .grow`),t.length||!e.history){let n=document.createElement(`style`),r=t.length?`${t.join(`,
|
|
16
|
+
`)}{display:none!important;}`:``;e.history||(r+=`
|
|
17
|
+
.wcui-appcol{padding-left:0!important;}`),n.textContent=r,document.head.append(n)}}function F(e,t){return e&&!t}async function I(t,n,r){let[{parseLayoutDocument:i},{panelizeShell:a}]=await Promise.all([e(()=>import(`./layout-schema-m9_VAwOw.js`).then(e=>e.s),__vite__mapDeps([0,1])),e(()=>import(`./panelize-shell-CgDNoGLr.js`),__vite__mapDeps([2,3,4,5,1,6,7,8,9,10,0,11,12]))]),o=i(n);if(`error`in o){r.warn(`follower: host-pushed layout failed validation — keeping the default`,{error:o.error});return}a(t.refs,o),r.info(`follower: applied host-pushed layout document`,{id:o.id,locked:o.locked===!0})}async function L(t,c,l){let d=l===`cherry`,g=d&&new URLSearchParams(window.location.search).get(`ui-only`)===`1`,v=window.location.ancestorOrigins?.[0],b=d&&(v?.startsWith(`chrome-extension://`)??!1),x;try{x=await te({runtimeMode:l,envBaseUrl:null,window,log:c})}catch(e){let n=e instanceof Error?e.message:String(e);D.error(`follower prelude failed`,{runtimeMode:l,error:n}),j(t,n);return}let S=d?x.cherryJoinUrl:ee(window.location.href,window.localStorage);if(!S){D.error(`follower mount with no join URL - falling back to live boot`);let{mountWcUiLive:n}=await e(async()=>{let{mountWcUiLive:e}=await import(`./wc-live-CaE_NPFb.js`).then(e=>e.i);return{mountWcUiLive:e}},__vite__mapDeps([13,1,14,7,15,16,17,18,19,20,21,3,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,5,6,8,9,10,0,67,68,69,70,12,71,72]));return n(t,c,`standalone`)}let C=a(t,d?`cherry · follower`:`follower`);if(d&&x.cherryTransport?.theme&&p(x.cherryTransport.theme),d&&x.cherryTransport?.flags)try{let e=JSON.parse(x.cherryTransport.flags);e&&typeof e==`object`&&!Array.isArray(e)&&s(e)}catch(e){D.warn(`follower: host-pushed flags were not valid JSON — ignoring`,e)}let w=o(`panel-layouts`);if(C.refs.dockTree.tilesMovable=w,d&&x.cherryTransport?.layout)try{let e=JSON.parse(x.cherryTransport.layout);e&&typeof e==`object`&&`base`in e?w?await I(C,e,D):D.warn(`follower: ignoring host-pushed layout — the panel-layouts flag is off`):C.refs.dockTree.setTree(e)}catch(e){D.warn(`follower: host-pushed layout was not valid JSON — keeping the default`,e)}let L=d&&x.cherryTransport?.effortLevel;L?localStorage.setItem(`slicc_locked_effort_level`,L):localStorage.removeItem(`slicc_locked_effort_level`);let R=d&&x.cherryTransport?{...N,...x.cherryTransport.features}:N,z=C.refs.composerMeta;M(C.refs.fileTree,C.refs.termSurface,C.refs.memoryHost,C.refs.monitor,R),P(R),e(async()=>{let{applyTimestampVisibility:e,initTimestampPreference:t}=await import(`./timestamp-preference-sKwBl5I8.js`).then(e=>e.a);return{applyTimestampVisibility:e,initTimestampPreference:t}},__vite__mapDeps([70,1])).then(({applyTimestampVisibility:e,initTimestampPreference:t})=>{R.showTimestamps?t():e(!1)}),e(async()=>{let{loadDipStyles:e,loadSprinkleStyles:t}=await import(`./legacy-styles-DcRu2WCJ.js`);return{loadDipStyles:e,loadSprinkleStyles:t}},__vite__mapDeps([73,7])).then(({loadDipStyles:e,loadSprinkleStyles:t})=>Promise.all([e(),t()])).catch(()=>void 0);let B=new Map,V=()=>x.cherryTransport?.emitSliccEventToHost(`slicc.open-leader-tab`),H=()=>{b&&T(C.refs.thread,{onOpenTab:V})},pe=e=>{let t=e.querySelectorAll(`img[src^="${O}"]`);return t.length!==0&&(t.forEach((t,n)=>{n===0?t.replaceWith(E(e.ownerDocument,{onOpenTab:V})):t.remove()}),!0)},me=(e,t)=>{Y.currentSync?.sendSprinkleLick(`inline`,{action:e,data:t}),y(e)&&H()},U=new i({thread:C.refs.thread,agent:k,onQueuedChange:e=>{C.refs.queuedStack.setMessages(e)},onMessageRendered:(e,t)=>{let n=t[0];n&&(b&&pe(n),B.set(e.id,m(n,me)))},onMessageDisposed:e=>{let t=B.get(e);t&&(ie(t),B.delete(e))},readOnlyToolUi:!0});if(C.setController(U),b)for(let e of[`slicc-error-open-settings`,`slicc-error-login`,`slicc-error-change-model`])C.refs.thread.addEventListener(e,()=>H());let W=`Connecting to leader…`,G=`Ask the leader, or describe a change…`,K=(e,t)=>{C.refs.inputCard.setAttribute(`placeholder`,t),e?C.refs.inputCard.removeAttribute(`disabled`):C.refs.inputCard.setAttribute(`disabled`,``)};K(!1,W),fe(C.refs.floatbar),re(e=>{try{window.localStorage.setItem(f,JSON.stringify(e))}catch{}});try{window.localStorage.setItem(f,JSON.stringify(ne()))}catch{}g||C.refs.composer.setAttribute(`ptt`,``);let he=oe({inputCard:C.refs.inputCard,freezer:C.refs.freezer,composer:C.refs.composer,noCamera:g,log:D});C.refs.inputCard.addEventListener(`submit`,e=>{let t=ce(e)??``,n=he.take();(t.trim()||n.length)&&(U.sendUserMessage(t,n,{steer:le(e)}),C.refs.inputCard.clear?.())});let q=new ae(C.refs).callbacks(),J=null;C.refs.switcher.connection=`disconnected`;let Y,X=se({composerMeta:z,getSync:()=>Y.currentSync,getSelectedScoopJid:()=>J,modelPickerEnabled:R.modelPicker,getLockedEffortLevel:()=>localStorage.getItem(`slicc_locked_effort_level`)});Y=de({joinUrl:S,runtime:d?r:`slicc-standalone`,advertisesCdpTargets:F(x.hasLocalCdpSurface,g),browserAPI:x.browser,onSnapshot:(e,t)=>{J=t,U.loadMessages(e),U.setProcessing(e.some(e=>e.isStreaming))},onUserMessage:(e,t,n,r)=>U.addUserMessage(e,r),onStatus:(e,t)=>{ue(t,J)&&U.setProcessing(e===`processing`)},setChatAgent:e=>U.setAgent(e),onTranscriptExportApprovalRequest:async t=>{let{openTranscriptExportApproval:n}=await e(async()=>{let{openTranscriptExportApproval:e}=await import(`./wc-transcript-export-Bx9ecGAa.js`);return{openTranscriptExportApproval:e}},__vite__mapDeps([74,7,75,22,46,1])),r=d?x.cherryTransport?.hostOrigin:void 0;return n({delegated:!0,selector:t.selector,signal:t.signal,...r?{hostOrigin:r}:{},...t.estimatedBytes==null?{}:{estimatedBytes:t.estimatedBytes}})},onConnectionChange:e=>{C.refs.switcher.connection=e?`connected`:`disconnected`,K(e,e?G:W),e||X.reset(),d&&x.cherryTransport?.emitSliccEventToHost(e?`slicc.follower.ready`:`slicc.follower.disconnected`)},getSelectedScoopJid:()=>J,onLeaderStalled:e=>{K(!e,e?`The leader is busy — hang on…`:G)},onGaveUp:e=>{D.error(`follower gave up reaching the leader`,{error:e}),C.refs.switcher.connection=`disconnected`,K(!1,`Couldn't reach the leader. Reload to retry.`),X.reset(),d&&x.cherryTransport?.emitSliccEventToHost(`slicc.follower.disconnected`)},...d?{}:{onJoinUrlChanged:e=>{D.info(`follower joinUrl superseded, persisting replacement`,{newJoinUrl:e}),u(window.localStorage,e)}},addSprinkle:q.addSprinkle,removeSprinkle:q.removeSprinkle,onOpen:e=>{/^https?:\/\//.test(e)?window.open(e,`_blank`,`noopener`):D.warn(`follower sprinkle open() of a local path is unavailable`,{path:e})},onScoopsList:(e,t)=>{(!J||!e.some(e=>e.jid===J))&&(J=t),C.refs.switcher.scoops=h(e),C.refs.switcher.setAttribute(`active`,J??t)},onModelsList:X.onModelsList,onModelState:X.onModelState,...d?{onCherrySliccEvent:(e,t)=>x.cherryTransport?.emitSliccEventToHost(e,t)}:{}});for(let e of[`save`,`skip`,`erase`])C.refs.freezer.addEventListener(`new-chat-${e}`,()=>{Y.currentSync?.requestNewSession(e)});C.refs.switcher.addEventListener(`slicc-scoop-select`,e=>{let t=e.detail?.key;t&&(J=t,C.refs.switcher.setAttribute(`active`,t),Y.currentSync?.selectScoop(t))}),d&&x.cherryTransport&&(x.cherryTransport.onHostEvent=(e,t)=>Y.currentSync?.sendCherryHostEvent(e,t),x.cherryTransport.onExportRequest=(e,t,r,i)=>{let a=Y.currentSync;if(!a)return Promise.reject(new n(`transfer-aborted`));let o=A(t);return o?a.requestTranscriptExport(o,r,i):Promise.reject(new n(`session-not-found`))});let Z=null;if(!d){let{startFollowerNavigateWatcher:t}=await e(async()=>{let{startFollowerNavigateWatcher:e}=await import(`./follower-navigate-watcher-DZpXL_9_.js`);return{startFollowerNavigateWatcher:e}},__vite__mapDeps([76,3,23,1,7,24,22,25,26,77,78,79]));Z=t(x.realCdpTransport,()=>Y.currentSync)}let Q=!1,$=()=>{C.refs.avatarMenu.items=[{kind:`separator`},{id:`export-transcript`,label:Q?`Exporting…`:`Export transcript`,icon:`download`,disabled:Q||void 0},{id:`tray-stop`,label:`Disconnect from leader`,icon:`unplug`,danger:!0}]};$(),C.refs.avatarMenu.addEventListener(`slicc-avatar-action`,t=>{let n=t.detail?.id;if(n===`tray-stop`){window.dispatchEvent(new CustomEvent(`slicc:tray-leave`,{detail:{workerBaseUrl:null}}));return}if(n===`export-transcript`&&!Q){Q=!0,$();let t=Y.currentSync;if(!t){Q=!1,$();return}let n=new AbortController;t.requestTranscriptExport({kind:`active`},n.signal).then(async t=>{let{downloadTranscriptBlob:n}=await e(async()=>{let{downloadTranscriptBlob:e}=await import(`./wc-transcript-export-Bx9ecGAa.js`);return{downloadTranscriptBlob:e}},__vite__mapDeps([74,7,75,22,46,1]));await n(t,`slicc-transcript-${new Date().toISOString().slice(0,10)}.zip`)}).catch(e=>{D.error(`follower transcript export failed`,{error:String(e)})}).finally(()=>{Q=!1,$()})}}),window.addEventListener(`slicc:tray-leave`,e=>{_({workerBaseUrl:(e.detail??{}).workerBaseUrl??null},{storage:window.localStorage,stopFollower:()=>{Z?.(),Y.stop()},getHref:()=>window.location.href,replaceHref:e=>window.history.replaceState(null,``,e),reload:()=>window.location.reload()})}),D.info(`follower mounted`,{runtimeMode:l,isCherry:d})}export{L as mountWcUiFollower};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./logger-DDBAeTLF.js";import"./tray-runtime-config-
|
|
1
|
+
import{t as e}from"./logger-DDBAeTLF.js";import"./tray-runtime-config-C82czC62.js";import"./browser-BCEjSsoK.js";import"./tray-leader-BIbpF_6U.js";e(`scoops.tray-leave`),e(`scoops.tray-join`);var t=null;function n(e){t=e}function r(){return t?.()??[]}function i(e){}var a=`slicc.leaderTrayFollowers`;function o(e,t=globalThis.localStorage){try{t?.setItem(a,JSON.stringify(e))}catch{}}var s=`slicc:leader-local-model-state-changed`;function c(e=window){e.dispatchEvent(new Event(s))}var l=`slicc:leader-run-new-session`,u=`slicc:leader-broadcast-snapshot`,d={off:`off`,low:`low`,medium:`medium`,high:`high`,xhigh:`xhigh`,max:`xhigh`},f={off:`off`,minimal:`low`,low:`low`,medium:`medium`,high:`high`,xhigh:`xhigh`};function p(e){return e?d[e]:void 0}function m(e){return e===`max`?`max`:void 0}function h(e,t){return t===`max`?`max`:(e&&f[e])??`off`}function g(e){let t=[],n=null,r=e.modelPickerEnabled!==!1,i=()=>{let i=n?t.find(e=>e.modelId===n?.activeModelId):void 0;if(!r||!n||!i){e.composerMeta.style.display=`none`;return}e.composerMeta.model=i.modelName,e.composerMeta.setAttribute(`thinking`,h(n.thinkingLevel,n.effortOverride)),e.composerMeta.toggleAttribute(`no-thinking`,!i.reasoning),e.composerMeta.style.removeProperty(`display`)},a=t=>{e.interceptLocalHandlers&&t.stopImmediatePropagation()};e.composerMeta.addEventListener(`model-change`,t=>{let n=e.getSync();if(!n)return;a(t);let r=t.detail?.id;r&&n.selectModel(r),i()},{capture:e.interceptLocalHandlers}),e.composerMeta.addEventListener(`thinking-change`,t=>{let r=e.getSync();if(!r)return;if(a(t),e.getLockedEffortLevel?.()){i();return}let o=t.detail?.thinking,s=p(o),c=e.getSelectedScoopJid()??n?.scoopJid;c&&s&&s!==`max`&&r.setThinkingLevel(c,s,m(o)),i()},{capture:e.interceptLocalHandlers});let o=()=>{t=[],n=null,e.composerMeta.models=[],e.composerMeta.style.display=`none`};return o(),{onModelsList(n){t=n,e.composerMeta.models=n.map(e=>({id:e.modelId,name:e.modelName,provider:e.providerName})),i()},onModelState(e){n=e,i()},reset:o}}export{u as a,c,i as d,o as f,p as i,r as l,m as n,l as o,h as r,s,g as t,n as u};
|