sliccy 6.182.0 → 6.183.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/.vite/manifest.json +268 -260
- package/dist/ui/assets/SKILL-B4YYagrM.js +1 -0
- package/dist/ui/assets/{SKILL-BpMlcVho.js → SKILL-BbKu0tAh.js} +1 -1
- package/dist/ui/assets/{SKILL-DGelbGt_.js → SKILL-CG7Xvjv7.js} +1 -1
- package/dist/ui/assets/{account-store-BxB3138q.js → account-store-Ce44FdYj.js} +2 -2
- package/dist/ui/assets/{account-store-UA_3Tz4g.js → account-store-D0ciUU3U.js} +1 -1
- package/dist/ui/assets/{adobe-C5iQ4vVx.js → adobe-FgsPWBjV.js} +2 -2
- package/dist/ui/assets/{adobe-CGl3cGPR.js → adobe-j1r9Po8o.js} +1 -1
- package/dist/ui/assets/{agent-panels-DfmjvBS2.js → agent-panels-DcVWQZVh.js} +1 -1
- package/dist/ui/assets/{almost-bash-shell-headless-l1xuiFhc.js → almost-bash-shell-headless-CsDQjWSX.js} +268 -268
- package/dist/ui/assets/{apply-layout-Bq6bvrT2.js → apply-layout-6-QTVrMq.js} +1 -1
- package/dist/ui/assets/{apps-BX-IbYH9.js → apps-C20mWJ8w.js} +1 -1
- package/dist/ui/assets/{azure-openai-BXvWNypo.js → azure-openai-CTmHX_BT.js} +1 -1
- package/dist/ui/assets/{azure-openai-C2dDMpxW.js → azure-openai-CotI4RBJ.js} +1 -1
- package/dist/ui/assets/{backend-hostfs-DV8kfBUj.js → backend-hostfs-D46_hViH.js} +1 -1
- package/dist/ui/assets/{capability-C8I_18AN.js → capability-BgC-ru0t.js} +2 -2
- package/dist/ui/assets/{cdp-B0aSo4ch.js → cdp-BvPARz8i.js} +1 -1
- package/dist/ui/assets/{cerebras-D29ytBVb.js → cerebras-CGndqdHt.js} +1 -1
- package/dist/ui/assets/{cerebras-B2SDJ5pX.js → cerebras-DG7lHBt1.js} +1 -1
- package/dist/ui/assets/{client-Sb_wIqH2.js → client-CmfvXtLV.js} +1 -1
- package/dist/ui/assets/{composer-speech-Dt-gM11M.js → composer-speech-C2InwNBM.js} +1 -1
- package/dist/ui/assets/{connect-surface-Cb3XqWWR.js → connect-surface-EWOA61l_.js} +1 -1
- package/dist/ui/assets/{core-B3ULTK7V.js → core-Be1yHH6v.js} +1 -1
- package/dist/ui/assets/{core-CDo7qjEn.js → core-D-Fp1HL2.js} +1 -1
- package/dist/ui/assets/{directed-approval-BEel8QYA.js → directed-approval-6QIzcmF_.js} +1 -1
- package/dist/ui/assets/{discovery-preference-C7kFEKRM.js → discovery-preference-MWZVi-PZ.js} +1 -1
- package/dist/ui/assets/dist-C8ZpEU8V.js +3 -0
- package/dist/ui/assets/{emscripten-vfs-hook-bNKkM3Zb.js → emscripten-vfs-hook-B9KkLncp.js} +1 -1
- package/dist/ui/assets/{ensure-speech-assets-DnCun_bM.js → ensure-speech-assets-C3v1Nu2n.js} +1 -1
- package/dist/ui/assets/{extension-ops-CmuqbGmo.js → extension-ops-DTRUyGkx.js} +1 -1
- package/dist/ui/assets/{float-topology-BvkgNLoi.js → float-topology-B0_dG7En.js} +1 -1
- package/dist/ui/assets/{follower-navigate-watcher-B8Kk1WcF.js → follower-navigate-watcher-DVWQWTGU.js} +1 -1
- package/dist/ui/assets/{frozen-archive-writer-DWckLPIx.js → frozen-archive-writer-DMShgEqJ.js} +1 -1
- package/dist/ui/assets/{fs-Bl1dGTw7.js → fs-JF56Nord.js} +2 -2
- package/dist/ui/assets/{fs-Bvj_6WV6.js → fs-TVcPtHbB.js} +1 -1
- package/dist/ui/assets/{gelatiere-store-CslswlOn.js → gelatiere-store-BnAzlDHe.js} +1 -1
- package/dist/ui/assets/{gelatiere-unit-DOffAKPD.js → gelatiere-unit-5cS02rOR.js} +1 -1
- package/dist/ui/assets/{github-DRuWNJ0x.js → github-BJKcZ0cU.js} +2 -2
- package/dist/ui/assets/{github-DVquHzS1.js → github-DsvjkXr7.js} +1 -1
- package/dist/ui/assets/{github-auth-C5UPE82y.js → github-auth-Crm1hubQ.js} +1 -1
- package/dist/ui/assets/{github-copilot-DXbnFsoC.js → github-copilot-BWhNAowY.js} +1 -1
- package/dist/ui/assets/{github-copilot-ha5V9jKJ.js → github-copilot-ngj7NQ16.js} +1 -1
- package/dist/ui/assets/{github-install-z8nzKR56.js → github-install-DB3-4PDg.js} +1 -1
- package/dist/ui/assets/{github-zip-YeBT3Ny7.js → github-zip-CfS9P2dH.js} +1 -1
- package/dist/ui/assets/{guest-tool-gate-Dn4Cs-oT.js → guest-tool-gate-B2z1ggE_.js} +1 -1
- package/dist/ui/assets/{hear-ClByyjXy.js → hear-akPMJ6kC.js} +1 -1
- package/dist/ui/assets/{help-p6vq-7bY.js → help-CNHuyT-F.js} +1 -1
- package/dist/ui/assets/{installer-hyWN7t-8.js → installer-CzQ_lEMz.js} +1 -1
- package/dist/ui/assets/{interrupted-work-recovery-C3eyzaf0.js → interrupted-work-recovery-r9fITX8G.js} +1 -1
- package/dist/ui/assets/{js-realm-worker-C8L3DYxo.js → js-realm-worker-EkjzOn2Q.js} +2 -2
- package/dist/ui/assets/{jsh-executor-BRw7B4H0.js → jsh-executor-C849KexO.js} +2 -2
- package/dist/ui/assets/{kernel-worker-DJ8FZwqE.js → kernel-worker-B69_4v-D.js} +10 -10
- package/dist/ui/assets/{lick-ws-bridge-AHYpxmrH.js → lick-ws-bridge-BygSyyxa.js} +1 -1
- package/dist/ui/assets/{lick-ws-bridge-DjxKrqtY.js → lick-ws-bridge-DDMdP2AB.js} +1 -1
- package/dist/ui/assets/{live-session-curation-ChbHqCg_.js → live-session-curation-BfplChNV.js} +1 -1
- package/dist/ui/assets/{live-session-snapshot-CEM9afjE.js → live-session-snapshot-BQQH-IkA.js} +1 -1
- package/dist/ui/assets/{local-llm-3Pq3W9JZ.js → local-llm-BSMA7cC5.js} +1 -1
- package/dist/ui/assets/{local-llm-DSfR5Yt1.js → local-llm-CNznNtp9.js} +1 -1
- package/dist/ui/assets/{main-DtPQfxOa.js → main-BsG-jtvC.js} +3 -3
- package/dist/ui/assets/{main-cherry-GQeDS2ns.js → main-cherry-7eVbk29W.js} +1 -1
- package/dist/ui/assets/{memory-curation-seam-COOFWWtR.js → memory-curation-seam-z19QoOG6.js} +1 -1
- package/dist/ui/assets/{memory-health-DxPjxnOp.js → memory-health-CL5kYVAr.js} +1 -1
- package/dist/ui/assets/{memory-write-execute-CRxpEM2X.js → memory-write-execute-C_oehZl_.js} +1 -1
- package/dist/ui/assets/{mount-9N6h5nwh.js → mount-BvxmwqOG.js} +3 -3
- package/dist/ui/assets/{mount-Dkwa5rwA.js → mount-JNIgSYT5.js} +1 -1
- package/dist/ui/assets/{mount-bridge-client-C4Ti1B85.js → mount-bridge-client-CaHZ1pkb.js} +1 -1
- package/dist/ui/assets/{mount-bridge-client-BMkDfg_K.js → mount-bridge-client-DRVFK3mJ.js} +1 -1
- package/dist/ui/assets/{new-session-C2Unp_ay.js → new-session-qNCtGIiI.js} +2 -2
- package/dist/ui/assets/{oauth-bootstrap-3r1LKeNV.js → oauth-bootstrap-F0HvaeYA.js} +2 -2
- package/dist/ui/assets/{oauth-service-CxXBA9rC.js → oauth-service-Dn_Xz1FZ.js} +1 -1
- package/dist/ui/assets/{oauth-service-B8mWc7rY.js → oauth-service-_PUd0RqU.js} +1 -1
- package/dist/ui/assets/{onboarding-orchestrator-DagKmKCB.js → onboarding-orchestrator-OKDMP2X_.js} +1 -1
- package/dist/ui/assets/{openai-codex--tiTbtXj.js → openai-codex-6hCaJG3N.js} +1 -1
- package/dist/ui/assets/{openai-codex-CJC7uwBp.js → openai-codex-BbYHsYuO.js} +1 -1
- package/dist/ui/assets/{openrouter-aXBsdtFI.js → openrouter-BPYQjzK5.js} +1 -1
- package/dist/ui/assets/{openrouter-mBY_6dIp.js → openrouter-BstowyUr.js} +1 -1
- package/dist/ui/assets/{openrouter-free-BeCg7Ecw.js → openrouter-free-B1qsiSWg.js} +1 -1
- package/dist/ui/assets/{openrouter-free-DqFFRvst.js → openrouter-free-DMavbTS5.js} +1 -1
- package/dist/ui/assets/{openrouter-oauth-DQIC6b5R.js → openrouter-oauth-CYZRlFsL.js} +1 -1
- package/dist/ui/assets/{openrouter-oauth-C7CZ9fp_.js → openrouter-oauth-DrKARZLe.js} +1 -1
- package/dist/ui/assets/{opfs-mount-tiZR34GY.js → opfs-mount-D3x0tHeU.js} +1 -1
- package/dist/ui/assets/{page-approval-service-CYpStEUs.js → page-approval-service-DRZEjhrX.js} +1 -1
- package/dist/ui/assets/{panel-rpc-handlers-D8NOrxvf.js → panel-rpc-handlers-CiSSOSEo.js} +2 -2
- package/dist/ui/assets/{panelize-shell-C_Xs3rhf.js → panelize-shell-CILi0yPu.js} +4 -4
- package/dist/ui/assets/{pi-edit-execution-kItlGFSm.js → pi-edit-execution-CEUeI3PX.js} +1 -1
- package/dist/ui/assets/{port-bridge-client-CrZ9vnOK.js → port-bridge-client-BiWcfZSc.js} +1 -1
- package/dist/ui/assets/{port-bridge-client-BHH6FPBY.js → port-bridge-client-BvO-1Rao.js} +1 -1
- package/dist/ui/assets/{provider-BtTOwLci.js → provider-CPes-oeu.js} +2 -2
- package/dist/ui/assets/{provider-DuCd6_sr.js → provider-Dv9W3IvY.js} +1 -1
- package/dist/ui/assets/{provider-settings-PedRbxpK.js → provider-settings-CDcPLuoa.js} +1 -1
- package/dist/ui/assets/provider-store-access-B7yFT4hY.js +1 -0
- package/dist/ui/assets/provider-store-access-D2Rj0Y-3.js +1 -0
- package/dist/ui/assets/{providers-BkwBVwkB.js → providers-COWrD21n.js} +2 -2
- package/dist/ui/assets/{providers-CWFcdblf.js → providers-DLk_1jra.js} +1 -1
- package/dist/ui/assets/proxied-fetch-DiXk_XGs.js +2 -0
- package/dist/ui/assets/proxied-fetch-J19bK2dG.js +1 -0
- package/dist/ui/assets/{quick-llm-DKsocfis.js → quick-llm-ByDw79ph.js} +1 -1
- package/dist/ui/assets/{realm-inprocess-CI_Msk8I.js → realm-inprocess-BLSq-cQS.js} +1 -1
- package/dist/ui/assets/{recovery-screen-HGByYfVb.js → recovery-screen-CldB31e2.js} +1 -1
- package/dist/ui/assets/{redirect-uri-Dnc7Ae7l.js → redirect-uri-DlOE4xJ4.js} +1 -1
- package/dist/ui/assets/{remote-terminal-view-C6Ao0U4O.js → remote-terminal-view-BpHAWWeD.js} +1 -1
- package/dist/ui/assets/{rest-ops-vPHUnWou.js → rest-ops-CPEMTyP-.js} +1 -1
- package/dist/ui/assets/{rest-ops-DABw6D2a.js → rest-ops-DKsDUOxE.js} +1 -1
- package/dist/ui/assets/{restore-BsViTTTd.js → restore-CaWVAwJN.js} +1 -1
- package/dist/ui/assets/{run-DgblerTV.js → run-2oVsdzZj.js} +2 -2
- package/dist/ui/assets/{run-BLi5_vwK.js → run-BA94mtBB.js} +1 -1
- package/dist/ui/assets/{run-CKdymE5z.js → run-BVlVC7jS.js} +9 -9
- package/dist/ui/assets/{run-DEBWO_VC.js → run-CH8M889A.js} +3 -3
- package/dist/ui/assets/{run-BEHokdPX.js → run-CHKo3g64.js} +1 -1
- package/dist/ui/assets/{run-CKI507uv.js → run-CW0-cog1.js} +1 -1
- package/dist/ui/assets/{run-C0CADtt5.js → run-Dl4OQ_Yd.js} +1 -1
- package/dist/ui/assets/{secret-env-Cazzr31P.js → secret-env-iwcdxjpw.js} +1 -1
- package/dist/ui/assets/secret-topology-CZv6A9HW.js +1 -0
- package/dist/ui/assets/{secrets-bridge-client-CiA-2ZIU.js → secrets-bridge-client-B_CG-HIg.js} +1 -1
- package/dist/ui/assets/{secrets-bridge-client-kWWipUuL.js → secrets-bridge-client-CUClOhLJ.js} +1 -1
- package/dist/ui/assets/{session-command-memory-D-p81a7P.js → session-command-memory-mbpebhz_.js} +2 -2
- package/dist/ui/assets/{session-jsonl-CXY4TQ4Y.js → session-jsonl-BIxfXb7u.js} +1 -1
- package/dist/ui/assets/{session-jsonl-C-BZSOHy.js → session-jsonl-v8KN4g_6.js} +1 -1
- package/dist/ui/assets/{session-search-index-nhvgyuxV.js → session-search-index-CDR-vSNN.js} +1 -1
- package/dist/ui/assets/{setup-feature-flags-remote-CpzgUHLB.js → setup-feature-flags-remote-zauTrEL6.js} +1 -1
- package/dist/ui/assets/{setup-model-catalog-BGx3XYFY.js → setup-model-catalog-CC8KX0LB.js} +1 -1
- package/dist/ui/assets/{signed-fetch-t5uBcIk_.js → signed-fetch-D3crNsSs.js} +1 -1
- package/dist/ui/assets/{silent-renew-backoff-Q1A_jbQH.js → silent-renew-backoff-Bw_c5Dy9.js} +1 -1
- package/dist/ui/assets/slicc-version-BiZFSvt-.js +1 -0
- package/dist/ui/assets/{snapshot-Bb3mZrhI.js → snapshot-CISX8Ybx.js} +1 -1
- package/dist/ui/assets/{snapshot-features-D44t7iA7.js → snapshot-features-NmqWLNc6.js} +1 -1
- package/dist/ui/assets/soundscape-Cmr7xPXZ.js +1 -0
- package/dist/ui/assets/{speak-B-rF7cd2.js → speak-D1JF7Loc.js} +1 -1
- package/dist/ui/assets/{sprinkle-manager-BWdoEwv2.js → sprinkle-manager-DYhvCg3m.js} +1 -1
- package/dist/ui/assets/{sprinkle-renderer-B-1HSkrF.js → sprinkle-renderer-B5O28doL.js} +1 -1
- package/dist/ui/assets/{ssh-DGBxesfZ.js → ssh-DPyBpV4Z.js} +1 -1
- package/dist/ui/assets/{state-B7Ano9ql.js → state-CcrU6NJk.js} +1 -1
- package/dist/ui/assets/{store-DTMATE-h.js → store-D9HgQRdy.js} +1 -1
- package/dist/ui/assets/{store-B3uS3nQU.js → store-DYTzgtEI.js} +1 -1
- package/dist/ui/assets/{sudo-D8OGZd6t.js → sudo-BMKHhJ-G.js} +1 -1
- package/dist/ui/assets/{supervisor-Ck1Ryx2i.js → supervisor-DVWawJTM.js} +1 -1
- package/dist/ui/assets/{sync-dialog-C2TF9Y3h.js → sync-dialog-a3YQ7KdL.js} +1 -1
- package/dist/ui/assets/{transformers-env-h8uZoLwJ.js → transformers-env-BFCBqwlr.js} +1 -1
- package/dist/ui/assets/{tray-leader-BHyMCdCH.js → tray-leader-zKkaFxIk.js} +1 -1
- package/dist/ui/assets/{tray-leave-runtime-DR6t2Cuo.js → tray-leave-runtime-CNc8g3tP.js} +1 -1
- package/dist/ui/assets/{tray-runtime-config-DBapPARd.js → tray-runtime-config-DmcF9Q2r.js} +1 -1
- package/dist/ui/assets/{tray-sidecar-BdEGdpUe.js → tray-sidecar-DqV3sh8H.js} +1 -1
- package/dist/ui/assets/{turn-journal-B4vV4fDV.js → turn-journal-Z3e-huge.js} +1 -1
- package/dist/ui/assets/{upgrade-detection-BXyDgjYd.js → upgrade-detection-Bsvrq_lt.js} +1 -1
- package/dist/ui/assets/{upskill-lick-skip-8Ozx8QGg.js → upskill-lick-skip-BQvJXwS8.js} +1 -1
- package/dist/ui/assets/voice-reply-B_BXV7A4.js +1 -0
- package/dist/ui/assets/{wc-attach-BN8rykoa.js → wc-attach-CEkWqpLf.js} +2 -2
- package/dist/ui/assets/{wc-browser-z1N3wGuK.js → wc-browser-DWwB9l3P.js} +1 -1
- package/dist/ui/assets/{wc-computers-C1g9iCUj.js → wc-computers-DuGnds2T.js} +1 -1
- package/dist/ui/assets/{wc-detached-DHD--8Tf.js → wc-detached-Bc462J4O.js} +1 -1
- package/dist/ui/assets/{wc-extension-qof5b3tN.js → wc-extension-DZmTjBxS.js} +2 -2
- package/dist/ui/assets/{wc-follower-sKXDjyv-.js → wc-follower-C0olroj0.js} +3 -3
- package/dist/ui/assets/{wc-follower-oauth-Bsskcjc7.js → wc-follower-oauth-BTOd3V8J.js} +1 -1
- package/dist/ui/assets/{wc-gelatiere-D_uq7S-T.js → wc-gelatiere-3BBfbusI.js} +1 -1
- package/dist/ui/assets/wc-live-Cc8h6ZH1.js +428 -0
- package/dist/ui/assets/{wc-nav-DqIdooNV.js → wc-nav-6f53F2ez.js} +2 -2
- package/dist/ui/assets/{wc-onboarding-38WwDwrA.js → wc-onboarding-D548eykf.js} +2 -2
- package/dist/ui/assets/{wc-permissions-o70pdgUK.js → wc-permissions-B3SJSMf9.js} +2 -2
- package/dist/ui/assets/{wc-placeholder-DMKTZY8P.js → wc-placeholder-BS4TqwFw.js} +3 -3
- package/dist/ui/assets/{wc-secret-request-CmpDh1Bs.js → wc-secret-request-DoSFP6An.js} +1 -1
- package/dist/ui/assets/{wc-settings-7DxLA_ig.js → wc-settings-B7zv9hl_.js} +3 -3
- package/dist/ui/assets/{wc-shell-DFszC8_0.js → wc-shell-pTQjFXvS.js} +362 -199
- package/dist/ui/assets/{wc-shortcut-config-Co6ONiUg.js → wc-shortcut-config-87PqTsLw.js} +2 -2
- package/dist/ui/assets/{wc-sprinkles-zxKMU9ju.js → wc-sprinkles-BMoFsMix.js} +2 -2
- package/dist/ui/assets/{wc-transcript-export-BnOv-hzh.js → wc-transcript-export-CP5fUab6.js} +2 -2
- package/dist/ui/assets/{wc-tray-B2w3dtCQ.js → wc-tray-DW-miPAR.js} +4 -4
- package/dist/ui/assets/welcome-detection-F6VKt_Ix.js +1 -0
- package/dist/ui/assets/{whisper-session-BB92W1rY.js → whisper-session-C90nWMGE.js} +2 -2
- package/dist/ui/assets/{xai-grok-DsDg76ef.js → xai-grok-D0yrS3by.js} +1 -1
- package/dist/ui/assets/{xai-grok-Btqu459a.js → xai-grok-U-6wly9W.js} +1 -1
- package/dist/ui/index.html +9 -9
- package/dist/ui/packages/webapp/index.html +9 -9
- package/package.json +1 -1
- package/dist/ui/assets/SKILL-CWxUIsrD.js +0 -1
- package/dist/ui/assets/provider-store-access-BbD8NSzf.js +0 -1
- package/dist/ui/assets/provider-store-access-BvzkUnma.js +0 -1
- package/dist/ui/assets/proxied-fetch-BlIpeDaL.js +0 -2
- package/dist/ui/assets/proxied-fetch-CNe6icTW.js +0 -1
- package/dist/ui/assets/secret-topology-DpJD8DzV.js +0 -1
- package/dist/ui/assets/slicc-version-YnqCI9lq.js +0 -1
- package/dist/ui/assets/soundscape-CUzGNWGR.js +0 -1
- package/dist/ui/assets/voice-reply-ChDAb3Rf.js +0 -1
- package/dist/ui/assets/wc-live-DWEUEDdK.js +0 -428
- package/dist/ui/assets/welcome-detection-Cik05qcd.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./wc-onboarding-D548eykf.js";export{e as hasOnboardingFinalLickInHistory};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/speak-
|
|
2
|
-
import{t as e}from"./preload-helper-Czpn1I53.js";import{t}from"./logger-DDBAeTLF.js";import{a as n,n as r,o as i,r as a,t as o}from"./transformers-env-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/speak-D1JF7Loc.js","assets/preload-helper-Czpn1I53.js","assets/logger-DDBAeTLF.js","assets/runtime-env-Dlaokqg1.js","assets/speech-assets-bridge-CFYafE89.js","assets/transformers-env-BFCBqwlr.js","assets/wc-shell-pTQjFXvS.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/mime-types-D0xZwlMO.js","assets/base64-ELzoYfwP.js","assets/bridge-protocol-C52CnDIj.js","assets/account-store-Ce44FdYj.js","assets/core-Be1yHH6v.js","assets/compat-qQM4gjF_.js","assets/models-BSkXF4T6.js","assets/diagnostics-DN_idNHx.js","assets/provider-env-CTOcDKrQ.js","assets/__vite-browser-external-5eBdwsFd.js","assets/openrouter.models-B-zmcypy.js","assets/libesm-BypnjKEL.js","assets/feature-flags-BftQitIZ.js","assets/proxied-fetch-DiXk_XGs.js","assets/fetch-body-1l9I58Vk.js","assets/api-endpoint-DuEQRZ4g.js","assets/secret-topology-CZv6A9HW.js","assets/float-topology-B0_dG7En.js","assets/secrets-bridge-client-B_CG-HIg.js","assets/port-bridge-client-BiWcfZSc.js","assets/image-markers-q8JQTtid.js","assets/tool-ui-eSQ1g2I1.js","assets/providers-COWrD21n.js","assets/panel-rpc-D3EPRnmw.js","assets/bedrock-camp-compat-BeCSBUrZ.js","assets/bedrock-camp-extra-models-WTCIjj5a.js","assets/claude-model-version-DZmbk9E2.js","assets/telemetry-CKoAhRMv.js","assets/types-D8gIX-W-.js","assets/same-file-identity-DuEcSmPX.js","assets/icons-jrIi5FYk.js","assets/wc-shell-WkeczD9x.css","assets/shared-BDXQKitm.js","assets/transformers.web-BBJR2ai3.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{t as e}from"./preload-helper-Czpn1I53.js";import{t}from"./logger-DDBAeTLF.js";import{a as n,n as r,o as i,r as a,t as o}from"./transformers-env-BFCBqwlr.js";var s=t(`speech:whisper`),c=null,l=`idle`,u=null,d=new Set;function f(){return l}function p(){return u}function m(e){return e&&d.add(e),c||=(l=`loading`,g().then(e=>(l=`ready`,h(),e),e=>{throw l=`failed`,c=null,s.error(`whisper load failed`,e),e})),c}function h(){e(async()=>{let{kokoroWarmup:e}=await import(`./speak-D1JF7Loc.js`);return{kokoroWarmup:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40])).then(({kokoroWarmup:e})=>e()).catch(e=>s.warn(`kokoro warmup (chained after whisper) failed`,e))}async function g(){let{pipeline:t,env:c}=await e(async()=>{let{pipeline:e,env:t}=await import(`./transformers.web-BBJR2ai3.js`);return{pipeline:e,env:t}},__vite__mapDeps([41,7,1]));r(c),await o(n),await a();let l=i(),f=e=>{if(e?.file){if(e.status===`progress`)l.update(e.file,e.loaded??0,e.total??0);else if(e.status===`done`)l.complete(e.file);else return;u=l.snapshot();for(let e of d)e(u)}},p=async e=>await t(`automatic-speech-recognition`,n,{device:e,dtype:e===`webgpu`?`fp32`:`q8`,progress_callback:f}),m=typeof navigator<`u`&&`gpu`in navigator,h;if(m)try{h=await p(`webgpu`)}catch(e){s.warn(`whisper webgpu init failed; retrying on wasm`,e),h=await p(`wasm`)}else h=await p(`wasm`);return s.info(`whisper ready`,{model:n,device:m?`webgpu`:`wasm`}),{async transcribe(e,t){let n=performance.now(),r=await h(e,{chunk_length_s:30,task:`transcribe`,...t?.language?{language:t.language}:{}}),i=Array.isArray(r)?r.map(e=>e.text??``).join(` `):r.text??``;return s.info(`whisper transcribe`,{elapsedMs:Math.round(performance.now()-n),audioSeconds:Math.round(e.length/160)/100,numThreads:c.backends?.onnx?.wasm?.numThreads,device:m?`webgpu`:`wasm`}),i.trim()}}}var _=16e3;async function v(e){if(typeof AudioContext>`u`||typeof OfflineAudioContext>`u`)throw Error(`audio decoding requires a window/page realm (AudioContext unavailable)`);let t=new AudioContext,n;try{n=await t.decodeAudioData(e.slice(0))}finally{await t.close().catch(()=>{})}let r=Math.max(1,Math.ceil(n.duration*_)),i=new OfflineAudioContext(1,r,_),a=i.createBufferSource();return a.buffer=n,a.connect(i.destination),a.start(),(await i.startRendering()).getChannelData(0).slice(0)}var y=t(`speech:whisper-session`),b=2e3,x=500,S=5e3,C=3e4,w=(e,t,n)=>new Promise((r,i)=>{let a=setTimeout(()=>i(Error(`${n} timed out after ${t}ms`)),t);e.then(e=>{clearTimeout(a),r(e)},e=>{clearTimeout(a),i(e)})});function T(e){return e?.split(`-`)[0]?.toLowerCase()||void 0}async function E(e,t){let n;if(t.stream)n=t.stream;else{if(!navigator.mediaDevices?.getUserMedia)throw Error(`microphone capture unavailable in this realm`);n=await navigator.mediaDevices.getUserMedia({audio:t.deviceId&&t.deviceId!=="default"?{deviceId:{exact:t.deviceId}}:!0})}let r=new MediaRecorder(n),i=[],a=T(t.lang),o=!1,s=!1;r.ondataavailable=e=>{e.data.size>0&&i.push(e.data)};let c=async()=>{if(i.length===0)return``;let t=await v(await new Blob(i,{type:r.mimeType||`audio/webm`}).arrayBuffer());return e.transcribe(t,{language:a})},l=Promise.resolve(``),u=()=>{let e=l.catch(()=>``).then(()=>c());return l=e.catch(()=>``),e},d=setInterval(()=>{o||s||i.length===0||(o=!0,u().then(e=>{!s&&e&&t.onPartial?.(e)}).catch(e=>{y.warn(`partial transcription failed`,e)}).finally(()=>{o=!1}))},b),f=()=>{if(clearInterval(d),r.state!==`inactive`)try{r.stop()}catch{}for(let e of n.getTracks())e.stop()},p=()=>new Promise(e=>{if(r.state===`inactive`){e();return}r.onstop=()=>e();try{r.stop()}catch{e()}});return r.start(x),{async stop(){if(s)return``;s=!0,clearInterval(d);try{await w(p(),S,`recorder flush`);for(let e of n.getTracks())e.stop();return await w(u(),C,`transcription`)}catch(e){for(let e of n.getTracks())e.stop();let r=e instanceof Error?e.message:String(e);return t.onError?.(`transcription failed: ${r}`),``}},cancel(){s||(s=!0,f())}}}export{p as a,m as i,T as n,f as o,v as r,E as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as e,r as t}from"./account-store-
|
|
1
|
+
import{_ as e,r as t}from"./account-store-D0ciUU3U.js";import{a as n}from"./diagnostics-DN_idNHx.js";import{a as r}from"./compat-uEPf6-XW.js";import{s as i}from"./core-D-Fp1HL2.js";import{c as a,i as o,r as s,s as c}from"./legacy-api-aliases-jKEvBgOL.js";import"./provider-settings-CDcPLuoa.js";import{n as l,r as u}from"./bridge-token-required-BYgoMwr7.js";import{n as d,r as f,t as p}from"./pkce-hGf_TEnP.js";import{XaiErrorCode as m,XaiOAuthError as h}from"./xai-grok-errors-ByEMMSoz.js";function g(e){return typeof e==`object`&&!!e}function _(e){if(!g(e))return null;let t=g(e.config)?e.config:e,n=t.creditUsagePercent;if(typeof n!=`number`||!Number.isFinite(n))return null;let r=Math.min(1e3,Math.max(0,n)),i=g(t.currentPeriod)?t.currentPeriod:{},a=i.type,o=typeof a==`string`?a.replace(`USAGE_PERIOD_TYPE_`,``).toLowerCase():``,s=i.end??t.billingPeriodEnd,c=typeof s==`string`&&Number.isFinite(Date.parse(s))?s:void 0;return{percent:r,status:`ok`,window:o&&o!==`unspecified`?o:`billing`,...c?{resetsAt:c}:{}}}async function v(e,t,n={}){let r=new AbortController,i=setTimeout(()=>r.abort(),n.timeoutMs??8e3);try{let n=await t(`https://cli-chat-proxy.grok.com/v1/billing?format=credits`,{headers:{Authorization:`Bearer ${e}`},signal:r.signal}),{status:i}=n;if(i===404||i===501)return null;if(!n.ok)throw Error(`xAI Grok usage: ${i===401||i===403?`re-login required`:`failed`} (${i})`);let a=await n.text();if(a.length>65536)return null;try{return _(JSON.parse(a))}catch{return null}}finally{clearTimeout(i)}}const y=`xai-grok`,b=`https://auth.x.ai`,x=`${b}/oauth2/authorize`,S=`${b}/oauth2/token`,C=`b1a00492-073a-47ea-816f-4c329264a828`,w=`http://127.0.0.1:56121/callback`,T=`https://api.x.ai/v1`,E=`grok-4.7`,D=`${y}-openai`;function O(e){if(e.some(e=>e.id===E))return e;let t=e.find(e=>e.id===`grok-4.6`)??e.find(e=>e.api===`openai-responses`)??e[0];return t?[{...t,id:E,name:`Grok 4.7`,api:`openai-responses`,reasoning:!0,input:[`text`,`image`],cost:{input:2,output:6,cacheRead:.5,cacheWrite:0},contextWindow:5e5,maxTokens:5e5,thinkingLevelMap:{off:null,minimal:null,low:`low`,medium:`medium`,high:`high`,xhigh:`xhigh`,max:null}},...e]:e}function k(){return O(i(`xai`))}function A(e){return{id:e.id,name:e.name,api:`openai`,reasoning:e.reasoning,input:e.input,context_window:e.contextWindow,max_tokens:e.maxTokens,compat:e.compat,thinkingLevelMap:e.thinkingLevelMap,cost:e.cost}}function j(e){let t=k(),n=t.find(t=>t.id===e.id);if(!n&&(console.warn(`xAI model "${e.id}" is no longer in the pi-ai catalog; falling back to default "${E}"`),n=t.find(e=>e.id===E),!n))throw Error(`xAI default model "${E}" is not registered by pi-ai`);if(n.api!==`openai-responses`&&n.api!==`openai-completions`)throw Error(`Unsupported pi-ai API "${n.api}" for xAI model "${e.id}"`);return{...e,...n,baseUrl:T}}async function M(e,t){let n=new URLSearchParams({grant_type:`authorization_code`,code:e,redirect_uri:w,client_id:C,code_verifier:t}),r=await fetch(S,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:n});if(!r.ok)throw new h(`xAI token exchange failed: ${r.status} ${await r.text()}`,m.TOKEN_EXCHANGE_FAILED);let i=await r.json();if(!i.access_token)throw new h(`xAI token exchange did not return access_token.`,m.TOKEN_EXCHANGE_INVALID);return i}async function N(e){if(l())return null;try{let t=new URLSearchParams({grant_type:`refresh_token`,refresh_token:e,client_id:C}),n=await fetch(S,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:t});if(!n.ok){let e=await n.text();return u(n.status,e)||console.error(`[xai-grok] refresh failed:`,n.status,e),null}return await n.json()}catch(e){return console.error(`[xai-grok] refresh error:`,e instanceof Error?e.message:String(e)),null}}function P(){return t().find(e=>e.providerId===y)}async function F(){let t=P();if(!t?.accessToken)throw new h("Not signed in to xAI Grok — run /login or `oauth-token xai-grok`",m.AUTH_MISSING,!0);let n=t.tokenExpiresAt??0;if(n&&Date.now()+6e4<n)return t.accessToken;if(t.refreshToken){let n=await N(t.refreshToken);if(n?.access_token)return await e({providerId:y,accessToken:n.access_token,refreshToken:n.refresh_token??t.refreshToken,tokenExpiresAt:Date.now()+(n.expires_in??21600)*1e3,scopes:n.scope??t.scopes}),n.access_token}return t.accessToken}async function I(){if(!P()?.accessToken)throw Error(`xAI Grok budget: not signed in`);return v(await F(),fetch)}function L(e,t){return{type:`error`,reason:`error`,error:{role:`assistant`,content:[],api:D,provider:y,model:e.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:`error`,errorMessage:t instanceof Error?t.message:String(t),timestamp:Date.now()}}}function R(e,t){return t?{...e??{},"x-grok-conv-id":t}:e}function z(e){console.error(`[xai-grok] Stream error:`,e instanceof Error?e.message:String(e))}async function B(e,t,n,r){try{let i=await F(),a=r.sessionId,c=j(t),l={...r,apiKey:i,headers:R(r.headers,a)},u=c.api===`openai-responses`?o(c,n,l):s(c,n,l);for await(let t of u)e.push(t);e.end()}catch(n){z(n),e.push(L(t,n)),e.end()}}async function V(e,t,n,r){try{let i=await F(),o=r?.sessionId,s=j(t),l={...r,apiKey:i,headers:R(r?.headers,o)},u=s.api===`openai-responses`?a(s,n,l):c(s,n,l);for await(let t of u)e.push(t);e.end()}catch(n){z(n),e.push(L(t,n)),e.end()}}const H=(e,t,r={})=>{let i=n();return B(i,e,t,r).catch(z),i},U=(e,t,r)=>{let i=n();return V(i,e,t,r).catch(z),i},W={id:y,name:`xAI Grok (SuperGrok OAuth)`,description:`Grok via xAI OAuth — uses your SuperGrok subscription, no API key needed. Default model is Grok 4.7.`,requiresApiKey:!1,requiresBaseUrl:!1,isOAuth:!0,defaultModelId:E,oauthTokenDomains:[`api.x.ai`,`*.x.ai`,`auth.x.ai`,`accounts.x.ai`,`cli-chat-proxy.grok.com`],getModelIds:()=>k().map(A),getBudgetUsage:I,onOAuthLoginIntercepted:async(t,n,r)=>{let i=d(),a=await p(i),o=f(),s=f(),c=new URL(x);c.searchParams.set(`response_type`,`code`),c.searchParams.set(`client_id`,C),c.searchParams.set(`redirect_uri`,w),c.searchParams.set(`scope`,r?.scopes??`openid profile email offline_access grok-cli:access api:access`),c.searchParams.set(`code_challenge`,a),c.searchParams.set(`code_challenge_method`,`S256`),c.searchParams.set(`state`,o),c.searchParams.set(`nonce`,s),c.searchParams.set(`plan`,`generic`),c.searchParams.set(`referrer`,`slicc`);let l=await t({authorizeUrl:c.toString(),redirectUriPattern:`http://127.0.0.1:56121/*`,onCapture:`close`});if(!l)throw new h(`xAI OAuth login was cancelled or timed out`,m.CALLBACK_TIMEOUT);let u=new URL(l),g=u.searchParams.get(`code`),_=u.searchParams.get(`state`);if(!g)throw new h(`xAI OAuth redirect did not include a code`,m.CODE_MISSING);if(_!==o)throw new h(`xAI OAuth state mismatch — possible CSRF, aborting`,m.STATE_MISMATCH);let v=await M(g,i);await e({providerId:y,accessToken:v.access_token,refreshToken:v.refresh_token,tokenExpiresAt:Date.now()+(v.expires_in??21600)*1e3,baseUrl:T,scopes:v.scope}),n()},onOAuthLogout:async()=>{await e({providerId:y,accessToken:``})},onSilentRenew:async()=>{let t=P();if(!t?.refreshToken)return null;let n=await N(t.refreshToken);return n?.access_token?(await e({providerId:y,accessToken:n.access_token,refreshToken:n.refresh_token??t.refreshToken,tokenExpiresAt:Date.now()+(n.expires_in??21600)*1e3,scopes:n.scope??t.scopes}),n.access_token):null}};function G(){r({api:D,stream:H,streamSimple:U})}export{m as XaiErrorCode,h as XaiOAuthError,W as config,G as register};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e}from"./core-
|
|
1
|
+
import{a as e}from"./core-Be1yHH6v.js";import{a as t}from"./diagnostics-DN_idNHx.js";import{a as n}from"./compat-qQM4gjF_.js";import{c as r,i,r as a,s as o}from"./legacy-api-aliases-DtQJ5I7w.js";import{K as s,f as c}from"./account-store-Ce44FdYj.js";import"./main-BsG-jtvC.js";import{n as l,r as u}from"./bridge-token-required-DMk2va9k.js";import{n as d,r as f,t as p}from"./pkce-hGf_TEnP.js";import{XaiErrorCode as m,XaiOAuthError as h}from"./xai-grok-errors-bnlIBeu-.js";var g=`https://cli-chat-proxy.grok.com/v1/billing?format=credits`,_=8e3,v=65536,y=1e3;function b(e){return typeof e==`object`&&!!e}function x(e){if(!b(e))return null;let t=b(e.config)?e.config:e,n=t.creditUsagePercent;if(typeof n!=`number`||!Number.isFinite(n))return null;let r=Math.min(y,Math.max(0,n)),i=b(t.currentPeriod)?t.currentPeriod:{},a=i.type,o=typeof a==`string`?a.replace(`USAGE_PERIOD_TYPE_`,``).toLowerCase():``,s=i.end??t.billingPeriodEnd,c=typeof s==`string`&&Number.isFinite(Date.parse(s))?s:void 0;return{percent:r,status:`ok`,window:o&&o!==`unspecified`?o:`billing`,...c?{resetsAt:c}:{}}}async function S(e,t,n={}){let r=new AbortController,i=setTimeout(()=>r.abort(),n.timeoutMs??_);try{let n=await t(g,{headers:{Authorization:`Bearer ${e}`},signal:r.signal}),{status:i}=n;if(i===404||i===501)return null;if(!n.ok)throw Error(`xAI Grok usage: ${i===401||i===403?`re-login required`:`failed`} (${i})`);let a=await n.text();if(a.length>v)return null;try{return x(JSON.parse(a))}catch{return null}}finally{clearTimeout(i)}}var C=`xai-grok`,w=`https://auth.x.ai`,T=`${w}/oauth2/authorize`,E=`${w}/oauth2/token`,D=`b1a00492-073a-47ea-816f-4c329264a828`,O=`openid profile email offline_access grok-cli:access api:access`,k=`http://127.0.0.1:56121/callback`,A=`http://127.0.0.1:56121/*`,j=`https://api.x.ai/v1`,M=`grok-4.7`,N=`${C}-openai`;function P(e){if(e.some(e=>e.id===M))return e;let t=e.find(e=>e.id===`grok-4.6`)??e.find(e=>e.api===`openai-responses`)??e[0];return t?[{...t,id:M,name:`Grok 4.7`,api:`openai-responses`,reasoning:!0,input:[`text`,`image`],cost:{input:2,output:6,cacheRead:.5,cacheWrite:0},contextWindow:5e5,maxTokens:5e5,thinkingLevelMap:{off:null,minimal:null,low:`low`,medium:`medium`,high:`high`,xhigh:`xhigh`,max:null}},...e]:e}function F(){return P(e(`xai`))}function I(e){return{id:e.id,name:e.name,api:`openai`,reasoning:e.reasoning,input:e.input,context_window:e.contextWindow,max_tokens:e.maxTokens,compat:e.compat,thinkingLevelMap:e.thinkingLevelMap,cost:e.cost}}function L(e){let t=F(),n=t.find(t=>t.id===e.id);if(!n&&(console.warn(`xAI model "${e.id}" is no longer in the pi-ai catalog; falling back to default "${M}"`),n=t.find(e=>e.id===M),!n))throw Error(`xAI default model "${M}" is not registered by pi-ai`);if(n.api!==`openai-responses`&&n.api!==`openai-completions`)throw Error(`Unsupported pi-ai API "${n.api}" for xAI model "${e.id}"`);return{...e,...n,baseUrl:j}}async function R(e,t){let n=new URLSearchParams({grant_type:`authorization_code`,code:e,redirect_uri:k,client_id:D,code_verifier:t}),r=await fetch(E,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:n});if(!r.ok)throw new h(`xAI token exchange failed: ${r.status} ${await r.text()}`,m.TOKEN_EXCHANGE_FAILED);let i=await r.json();if(!i.access_token)throw new h(`xAI token exchange did not return access_token.`,m.TOKEN_EXCHANGE_INVALID);return i}async function z(e){if(l())return null;try{let t=new URLSearchParams({grant_type:`refresh_token`,refresh_token:e,client_id:D}),n=await fetch(E,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:t});if(!n.ok){let e=await n.text();return u(n.status,e)||console.error(`[xai-grok] refresh failed:`,n.status,e),null}return await n.json()}catch(e){return console.error(`[xai-grok] refresh error:`,e instanceof Error?e.message:String(e)),null}}function B(){return c().find(e=>e.providerId===C)}async function V(){let e=B();if(!e?.accessToken)throw new h("Not signed in to xAI Grok — run /login or `oauth-token xai-grok`",m.AUTH_MISSING,!0);let t=e.tokenExpiresAt??0;if(t&&Date.now()+6e4<t)return e.accessToken;if(e.refreshToken){let t=await z(e.refreshToken);if(t?.access_token)return await s({providerId:C,accessToken:t.access_token,refreshToken:t.refresh_token??e.refreshToken,tokenExpiresAt:Date.now()+(t.expires_in??21600)*1e3,scopes:t.scope??e.scopes}),t.access_token}return e.accessToken}async function H(){if(!B()?.accessToken)throw Error(`xAI Grok budget: not signed in`);return S(await V(),fetch)}function U(e,t){return{type:`error`,reason:`error`,error:{role:`assistant`,content:[],api:N,provider:C,model:e.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:`error`,errorMessage:t instanceof Error?t.message:String(t),timestamp:Date.now()}}}function W(e,t){return t?{...e??{},"x-grok-conv-id":t}:e}function G(e){console.error(`[xai-grok] Stream error:`,e instanceof Error?e.message:String(e))}async function K(e,t,n,r){try{let o=await V(),s=r.sessionId,c=L(t),l={...r,apiKey:o,headers:W(r.headers,s)},u=c.api===`openai-responses`?i(c,n,l):a(c,n,l);for await(let t of u)e.push(t);e.end()}catch(n){G(n),e.push(U(t,n)),e.end()}}async function q(e,t,n,i){try{let a=await V(),s=i?.sessionId,c=L(t),l={...i,apiKey:a,headers:W(i?.headers,s)},u=c.api===`openai-responses`?r(c,n,l):o(c,n,l);for await(let t of u)e.push(t);e.end()}catch(n){G(n),e.push(U(t,n)),e.end()}}var J=(e,n,r={})=>{let i=t();return K(i,e,n,r).catch(G),i},Y=(e,n,r)=>{let i=t();return q(i,e,n,r).catch(G),i},X={id:C,name:`xAI Grok (SuperGrok OAuth)`,description:`Grok via xAI OAuth — uses your SuperGrok subscription, no API key needed. Default model is Grok 4.7.`,requiresApiKey:!1,requiresBaseUrl:!1,isOAuth:!0,defaultModelId:M,oauthTokenDomains:[`api.x.ai`,`*.x.ai`,`auth.x.ai`,`accounts.x.ai`,`cli-chat-proxy.grok.com`],getModelIds:()=>F().map(I),getBudgetUsage:H,onOAuthLoginIntercepted:async(e,t,n)=>{let r=d(),i=await p(r),a=f(),o=f(),c=new URL(T);c.searchParams.set(`response_type`,`code`),c.searchParams.set(`client_id`,D),c.searchParams.set(`redirect_uri`,k),c.searchParams.set(`scope`,n?.scopes??O),c.searchParams.set(`code_challenge`,i),c.searchParams.set(`code_challenge_method`,`S256`),c.searchParams.set(`state`,a),c.searchParams.set(`nonce`,o),c.searchParams.set(`plan`,`generic`),c.searchParams.set(`referrer`,`slicc`);let l=await e({authorizeUrl:c.toString(),redirectUriPattern:A,onCapture:`close`});if(!l)throw new h(`xAI OAuth login was cancelled or timed out`,m.CALLBACK_TIMEOUT);let u=new URL(l),g=u.searchParams.get(`code`),_=u.searchParams.get(`state`);if(!g)throw new h(`xAI OAuth redirect did not include a code`,m.CODE_MISSING);if(_!==a)throw new h(`xAI OAuth state mismatch — possible CSRF, aborting`,m.STATE_MISMATCH);let v=await R(g,r);await s({providerId:C,accessToken:v.access_token,refreshToken:v.refresh_token,tokenExpiresAt:Date.now()+(v.expires_in??21600)*1e3,baseUrl:j,scopes:v.scope}),t()},onOAuthLogout:async()=>{await s({providerId:C,accessToken:``})},onSilentRenew:async()=>{let e=B();if(!e?.refreshToken)return null;let t=await z(e.refreshToken);return t?.access_token?(await s({providerId:C,accessToken:t.access_token,refreshToken:t.refresh_token??e.refreshToken,tokenExpiresAt:Date.now()+(t.expires_in??21600)*1e3,scopes:t.scope??e.scopes}),t.access_token):null}};function Z(){n({api:N,stream:J,streamSimple:Y})}export{m as XaiErrorCode,h as XaiOAuthError,X as config,Z as register};
|
package/dist/ui/index.html
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
6
|
<title>slicc</title>
|
|
7
7
|
<link rel="icon" type="image/png" href="/logos/sliccy-color-1scoops-32x32.png" />
|
|
8
|
-
<script type="module" crossorigin src="/assets/main-
|
|
8
|
+
<script type="module" crossorigin src="/assets/main-BsG-jtvC.js"></script>
|
|
9
9
|
<link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-Dd_uD5pT.js">
|
|
10
10
|
<link rel="modulepreload" crossorigin href="/assets/modulepreload-polyfill-P2Xu9kJm.js">
|
|
11
11
|
<link rel="modulepreload" crossorigin href="/assets/diagnostics-DN_idNHx.js">
|
|
@@ -22,21 +22,21 @@
|
|
|
22
22
|
<link rel="modulepreload" crossorigin href="/assets/fetch-body-1l9I58Vk.js">
|
|
23
23
|
<link rel="modulepreload" crossorigin href="/assets/runtime-env-Dlaokqg1.js">
|
|
24
24
|
<link rel="modulepreload" crossorigin href="/assets/api-endpoint-DuEQRZ4g.js">
|
|
25
|
-
<link rel="modulepreload" crossorigin href="/assets/proxied-fetch-
|
|
26
|
-
<link rel="modulepreload" crossorigin href="/assets/float-topology-
|
|
27
|
-
<link rel="modulepreload" crossorigin href="/assets/secret-topology-
|
|
28
|
-
<link rel="modulepreload" crossorigin href="/assets/port-bridge-client-
|
|
29
|
-
<link rel="modulepreload" crossorigin href="/assets/secrets-bridge-client-
|
|
25
|
+
<link rel="modulepreload" crossorigin href="/assets/proxied-fetch-DiXk_XGs.js">
|
|
26
|
+
<link rel="modulepreload" crossorigin href="/assets/float-topology-B0_dG7En.js">
|
|
27
|
+
<link rel="modulepreload" crossorigin href="/assets/secret-topology-CZv6A9HW.js">
|
|
28
|
+
<link rel="modulepreload" crossorigin href="/assets/port-bridge-client-BiWcfZSc.js">
|
|
29
|
+
<link rel="modulepreload" crossorigin href="/assets/secrets-bridge-client-B_CG-HIg.js">
|
|
30
30
|
<link rel="modulepreload" crossorigin href="/assets/image-markers-q8JQTtid.js">
|
|
31
31
|
<link rel="modulepreload" crossorigin href="/assets/tool-ui-eSQ1g2I1.js">
|
|
32
|
-
<link rel="modulepreload" crossorigin href="/assets/core-
|
|
32
|
+
<link rel="modulepreload" crossorigin href="/assets/core-Be1yHH6v.js">
|
|
33
33
|
<link rel="modulepreload" crossorigin href="/assets/bridge-protocol-C52CnDIj.js">
|
|
34
|
-
<link rel="modulepreload" crossorigin href="/assets/providers-
|
|
34
|
+
<link rel="modulepreload" crossorigin href="/assets/providers-COWrD21n.js">
|
|
35
35
|
<link rel="modulepreload" crossorigin href="/assets/panel-rpc-D3EPRnmw.js">
|
|
36
36
|
<link rel="modulepreload" crossorigin href="/assets/bedrock-camp-compat-BeCSBUrZ.js">
|
|
37
37
|
<link rel="modulepreload" crossorigin href="/assets/bedrock-camp-extra-models-WTCIjj5a.js">
|
|
38
38
|
<link rel="modulepreload" crossorigin href="/assets/claude-model-version-DZmbk9E2.js">
|
|
39
|
-
<link rel="modulepreload" crossorigin href="/assets/account-store-
|
|
39
|
+
<link rel="modulepreload" crossorigin href="/assets/account-store-Ce44FdYj.js">
|
|
40
40
|
<link rel="modulepreload" crossorigin href="/assets/telemetry-CKoAhRMv.js">
|
|
41
41
|
<link rel="modulepreload" crossorigin href="/assets/tray-follower-status-BAjnN7Ar.js">
|
|
42
42
|
<link rel="modulepreload" crossorigin href="/assets/clipboard-eqmn97SP.js">
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
6
|
<title>slicc</title>
|
|
7
7
|
<link rel="icon" type="image/png" href="/logos/sliccy-color-1scoops-32x32.png" />
|
|
8
|
-
<script type="module" crossorigin src="/assets/main-
|
|
8
|
+
<script type="module" crossorigin src="/assets/main-BsG-jtvC.js"></script>
|
|
9
9
|
<link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-Dd_uD5pT.js">
|
|
10
10
|
<link rel="modulepreload" crossorigin href="/assets/modulepreload-polyfill-P2Xu9kJm.js">
|
|
11
11
|
<link rel="modulepreload" crossorigin href="/assets/diagnostics-DN_idNHx.js">
|
|
@@ -22,21 +22,21 @@
|
|
|
22
22
|
<link rel="modulepreload" crossorigin href="/assets/fetch-body-1l9I58Vk.js">
|
|
23
23
|
<link rel="modulepreload" crossorigin href="/assets/runtime-env-Dlaokqg1.js">
|
|
24
24
|
<link rel="modulepreload" crossorigin href="/assets/api-endpoint-DuEQRZ4g.js">
|
|
25
|
-
<link rel="modulepreload" crossorigin href="/assets/proxied-fetch-
|
|
26
|
-
<link rel="modulepreload" crossorigin href="/assets/float-topology-
|
|
27
|
-
<link rel="modulepreload" crossorigin href="/assets/secret-topology-
|
|
28
|
-
<link rel="modulepreload" crossorigin href="/assets/port-bridge-client-
|
|
29
|
-
<link rel="modulepreload" crossorigin href="/assets/secrets-bridge-client-
|
|
25
|
+
<link rel="modulepreload" crossorigin href="/assets/proxied-fetch-DiXk_XGs.js">
|
|
26
|
+
<link rel="modulepreload" crossorigin href="/assets/float-topology-B0_dG7En.js">
|
|
27
|
+
<link rel="modulepreload" crossorigin href="/assets/secret-topology-CZv6A9HW.js">
|
|
28
|
+
<link rel="modulepreload" crossorigin href="/assets/port-bridge-client-BiWcfZSc.js">
|
|
29
|
+
<link rel="modulepreload" crossorigin href="/assets/secrets-bridge-client-B_CG-HIg.js">
|
|
30
30
|
<link rel="modulepreload" crossorigin href="/assets/image-markers-q8JQTtid.js">
|
|
31
31
|
<link rel="modulepreload" crossorigin href="/assets/tool-ui-eSQ1g2I1.js">
|
|
32
|
-
<link rel="modulepreload" crossorigin href="/assets/core-
|
|
32
|
+
<link rel="modulepreload" crossorigin href="/assets/core-Be1yHH6v.js">
|
|
33
33
|
<link rel="modulepreload" crossorigin href="/assets/bridge-protocol-C52CnDIj.js">
|
|
34
|
-
<link rel="modulepreload" crossorigin href="/assets/providers-
|
|
34
|
+
<link rel="modulepreload" crossorigin href="/assets/providers-COWrD21n.js">
|
|
35
35
|
<link rel="modulepreload" crossorigin href="/assets/panel-rpc-D3EPRnmw.js">
|
|
36
36
|
<link rel="modulepreload" crossorigin href="/assets/bedrock-camp-compat-BeCSBUrZ.js">
|
|
37
37
|
<link rel="modulepreload" crossorigin href="/assets/bedrock-camp-extra-models-WTCIjj5a.js">
|
|
38
38
|
<link rel="modulepreload" crossorigin href="/assets/claude-model-version-DZmbk9E2.js">
|
|
39
|
-
<link rel="modulepreload" crossorigin href="/assets/account-store-
|
|
39
|
+
<link rel="modulepreload" crossorigin href="/assets/account-store-Ce44FdYj.js">
|
|
40
40
|
<link rel="modulepreload" crossorigin href="/assets/telemetry-CKoAhRMv.js">
|
|
41
41
|
<link rel="modulepreload" crossorigin href="/assets/tray-follower-status-BAjnN7Ar.js">
|
|
42
42
|
<link rel="modulepreload" crossorigin href="/assets/clipboard-eqmn97SP.js">
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e='---\nname: delegation\ndescription: |\n Use this when deciding whether to do work yourself or delegate to a scoop, when\n fanning out parallel scoops, or when picking models for sub-agents. Covers\n scoop lifecycle (when to drop), parallel orchestration (`scoop_mute`,\n `scoop_unmute`, `scoop_wait`), one-shot ephemeral sub-agents via the `agent`\n shell command, and model selection. Read this BEFORE running `scoop_scoop` for\n non-trivial work.\nallowed-tools: bash\n---\n\n# Delegation\n\nScoops do the heavy lifting; the cone orchestrates and synthesizes. This skill is about choosing how to delegate, not about administering scoops.\n\n## When to delegate\n\n**Default to delegation.** Parallel scoops almost always finish faster, and the cone\'s job is synthesis.\n\nDelegate when:\n\n- Multiple independent sources (scraping 3 sites = 3 scoops).\n- Time-consuming work that doesn\'t need direct oversight.\n- Work expressible as a clear, self-contained brief.\n\nDo it yourself when:\n\n- Single quick lookup (one page, one API call).\n- Real-time adaptation needed (navigating broken URLs).\n- Overhead of spawning exceeds benefit.\n\n## Brief for authority, not for execution\n\nThe most common delegation failure is **the cone doing too much pre-work before delegating**. The cone researches the topic, makes the design decisions, picks the approach, and then hands the scoop a pre-cooked plan to type out. This is bad on three axes:\n\n- **Pollutes the scoop\'s context.** The brief is bloated with conclusions the scoop now has to re-derive an opinion on, instead of facts it can act on.\n- **Strips the scoop of autonomy.** A scoop that\'s been told what to think can\'t push back on a bad call or notice a better path mid-task. You get a typist, not a collaborator.\n- **Wastes the cone\'s tokens.** The cone\'s strength is orchestration — picking the right scoops, synthesizing their outputs. Doing the research itself burns the cone\'s context on work that\'s parallelizable.\n\n**Heuristic: if the cone reads files, runs commands, or makes decisions before delegating, that should have been part of the scoop\'s brief.** Hand the scoop the question, the constraints, and the access — let it decide.\n\n| Bad (cone over-prepares) | Good (scoop decides) |\n| ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |\n| Cone reads 5 files, picks an approach, tells scoop "implement approach X in file Y." | Scoop is told "the user wants Z; the relevant code is under `/workspace/src/`. Pick an approach and implement it." |\n| Cone scrapes 3 docs, summarizes, then asks scoop to "write a comparison based on this summary." | Scoop is told "compare libraries A, B, C for this use case. Their docs are at <urls>. Decide and write the comparison." |\n| Cone debugs a failure, isolates the bug, then asks scoop to "fix the off-by-one in line 42." | Scoop is told "this command fails with `<output>`. Find and fix the bug." (Even better: a one-shot `agent` for cheap, deterministic bug-fixes.) |\n\nTwo carve-outs where pre-work IS the cone\'s job:\n\n1. **Routing decisions.** Picking which scoop gets which slice of a fan-out is orchestration, not pre-cooking.\n2. **Synthesis after the fact.** Reading scoop outputs to combine them is the cone\'s whole point.\n\nIf a scoop comes back with a wrong call, **drop it and re-spawn with a better brief** — don\'t feed a correction. Corrections compound the autonomy problem.\n\n## Scoop lifecycle\n\nDrop scoops when done — but **NEVER drop a scoop that owns a sprinkle**.\n\nDrop when:\n\n- Task completed and results synthesized.\n- Stuck or misbehaving (drop and re-spawn with a better brief).\n\nNever drop when:\n\n- It owns an open sprinkle (must stay alive for the sprinkle\'s lifetime).\n- Running a recurring/long-running task (feed watcher, webhook handler).\n- Work is still in progress (dropping loses all context).\n\n## Three delegation primitives\n\n| Primitive | Conversation | Sprinkle ownership | Auto-cleanup | When to use |\n| ---------------------------- | ------------------------ | ------------------ | ----------------- | ----------------------------------------------------------- |\n| `scoop_scoop` + `feed_scoop` | Persistent (multi-turn) | Yes | No (`drop_scoop`) | Long-lived work; sprinkle owners; conversational follow-ups |\n| `scoop_wait` / `scoop_mute` | Persistent (multi-turn) | Yes | No | Parallel fan-out where you want one synthesis turn |\n| `agent` (shell command) | One-shot (single prompt) | No | Yes (on exit) | Cheap, predictable, composable; no cone follow-up needed |\n\n### `agent` — one-shot ephemeral sub-agents\n\n`agent` is a shell command that spawns a one-shot sub-scoop, feeds it a prompt, blocks until the agent loop completes, and prints the final message on stdout. Runs from any bash context (terminal, `feed_scoop` prompt, `.jsh` script, dip lick handler, sprinkle button handler).\n\n```\nagent <cwd> <allowed-commands> <prompt> [--model <id>] [--workspace-mode <mode>] [--read-only <paths>] [--background-after <s>]\n```\n\n- `<cwd>` — sole writable prefix (plus `/shared/`, the scoop\'s scratch folder, and `/tmp/` — the whole shared scratch tree, so a scoop can always reach its `$TMPDIR`). Relative paths resolve against the caller\'s cwd.\n- `<allowed-commands>` — comma-separated allow-list; `*` for unrestricted.\n- `<prompt>` — forwarded verbatim. The spawned scoop has no access to the caller\'s history; pack context into the prompt.\n- `--model` — defaults to the parent scoop\'s model (or the cone\'s, when invoked from the terminal). Accepts an exact id, a shorthand (`haiku`, `sonnet`, `claude-haiku-4-5`), or the `provider:model` form `models` prints (`openrouter:openai/gpt-5.6-terra-pro`). A bare id resolves against the selected provider first, then against any other configured provider that offers it; if several do, the error lists the qualified ids to pick from. The scoop runs on the provider the model resolved from. An id that cannot be resolved is a hard error (exit 1) — it never silently falls back to the parent\'s model. Models from a provider other than the selected one must additionally be allowed in `/etc/models` (see [Model access policy](#model-access-policy)); a blocked model exits 1 and the error quotes the line to add.\n- `--workspace-mode` — isolation policy. Default `shared-readonly` is today\'s sandbox (parent workspace visible, cwd + `/shared/` + scratch writable, mounts readable). `private` is an isolated sandbox: own cwd/scratch only — no parent workspace, no implicit `/shared/`, mounts are **not** auto-visible. `snapshot` and `shared-live` are not implemented and exit 1.\n- `--read-only` — pure-replace list of read-only paths. Default: the **owning cone\'s** workspace (plus `/workspace/skills/`) and the invoking shell\'s cwd. When replacing it, name your own cone\'s workspace — a literal `/workspace/` is the primary cone\'s, not yours. Under `--workspace-mode private` the default visible list is empty.\n- `--background-after <seconds>` — how long the spawned scoop\'s `bash` waits for a command before detaching it and moving on (default 600). Nobody can cancel a spawned scoop\'s turn, so a command that never returns would otherwise burn the whole run on one call; a detached command reports its exit code back to that scoop as a `Background Command` lick. `0` detaches every command immediately.\n\n**Critical property: no handoff.** Ephemeral scoops do NOT notify the cone on completion. Running `agent` from a non-cone shell does not trigger an unsolicited cone turn. The caller gets the result on stdout, nothing else. This makes `agent` the right choice for cheap, predictable interactions inside dips and sprinkles where you don\'t want the cone or owning scoop woken up.\n\n```bash\n# Parallel, collected to one file. No cone turns spawned.\nfor url in site-a site-b site-c; do\n agent "$TMPDIR" "curl,jq" "Fetch https://$url/api, return the top-level title field." >> "$TMPDIR/titles.txt" &\ndone\nwait\n\n# Focused refactor with a restricted allow-list.\nagent /workspace/src "rg,sed,node" "Rename getCwd to getCurrentWorkingDirectory across *.ts"\n\n# Cheap one-shot from a faster model.\nagent . \'*\' \'Summarize the README in one sentence.\' --model claude-haiku-4-5\n```\n\nFor dip and sprinkle interaction patterns built on `agent`, see `/workspace/skills/dips/SKILL.md` and `/workspace/skills/sprinkles/SKILL.md`.\n\n## Shaping the scoop\'s sandbox: `workspaceMode`, `visiblePaths`, `writablePaths`, `allowedCommands`\n\n`scoop_scoop` accepts a named isolation mode plus three sandbox-shaping parameters. **They are how you give a scoop authority — by widening or narrowing what it can read, write, and run.** A scoop that can\'t reach the files it needs has no autonomy; pre-cooking the brief is what you do to compensate. Get the sandbox right and the brief gets shorter.\n\nA rarely used argument — `canCreateChildren: true` — is an explicit nested-delegation grant. The new scoop may then `scoop_scoop` / `feed_scoop` / `drop_scoop` its own children. Omit it (the default) so the scoop stays a leaf. A scoop that was not itself granted this cannot pass it on.\n\n| Param | What it controls | Default | Pure replace? |\n| ------------------- | --------------------------------------- | -------------------------------------------------------------------------------------- | ------------- |\n| `workspaceMode` | Sharing policy for the parent workspace | `"shared-readonly"` (today\'s scoop). `"private"` isolates. | Yes |\n| `visiblePaths` | Read-only VFS paths the scoop can SEE | shared-readonly: `["/workspace/"]`; private: `[]` | Yes |\n| `writablePaths` | VFS paths the scoop can READ AND WRITE | shared-readonly: `["/scoops/<folder>/", "/shared/"]`; private: `["/scoops/<folder>/"]` | Yes |\n| `allowedCommands` | Shell command allow-list | unrestricted (every built-in + `.jsh`) | Yes |\n| `canCreateChildren` | Nested-delegation grant | `false` (leaf scoop) | Yes |\n\n"Pure replace" means what you set is what you get — the value isn\'t merged with the default. Pass `[]` to drop it entirely. Trailing slashes recommended on path entries (e.g. `/shared/data/`).\n\nSubtleties:\n\n- **`writablePaths` are always readable too.** A true read-nothing sandbox needs both `visiblePaths: []` AND `writablePaths: []`.\n- **Mounts remain readable in `shared-readonly`** (the default) regardless of `visiblePaths`. `private` does **not** auto-include mounts — name a mount in `visiblePaths` / `writablePaths` if the scoop needs it. That\'s how a mount cannot silently expand every child\'s authority.\n- **`allowedCommands` applies recursively** — pipelines, command substitutions, and network commands are all gated. Pass `["*"]` for explicit unrestricted.\n- **List every absolute root the scoop\'s tools write to.** Some tool families write outside the scratch dir — `playwright-cli` logs sessions and screenshots to `/.playwright/` — so include those roots in `writablePaths` (any spelling works: `/x`, `/x/`, `/x/**`), or every such write escalates to you for approval. Prefer pointing skills at `/scoops/<folder>/`, `/shared/`, or `/tmp/` over inventing new VFS roots.\n\n### How to choose\n\nAsk three questions, in order:\n\n1. **What does the scoop need to read?** Files it must consume — source tree, docs, mounted data — go in `visiblePaths`. Default `/workspace/` is fine for most "do something in the project" briefs. Add specific paths (`/shared/data/`, `/mnt/da/`) for narrower scopes.\n2. **What is it allowed to change?** Output dirs, the file it\'s editing, the sprinkle path it owns. Default writable scratch (`/scoops/<folder>/`) plus `/shared/` is fine for scoops producing artifacts. **Tighten this when the scoop should not modify production code** — e.g. a research scoop with `writablePaths: ["/scoops/<folder>/"]` only.\n3. **What commands does it need?** Default unrestricted is right when the scoop will figure out its own toolchain. Tighten only when narrowing to a known set of tools improves reliability or safety — e.g. a scraper with `["curl","jq"]`, or a refactor scoop with `["rg","sed","node"]`.\n\n### Patterns\n\n```\n# Default sandbox (shared-readonly): full project, own scratch dir, all commands.\n# Right for most "do this in the project" briefs.\nscoop_scoop({ name: "fix-bug", prompt: "..." })\n\n# Isolated sandbox. Cannot see the parent workspace or mounts.\nscoop_scoop({ name: "scratch-only", workspaceMode: "private", prompt: "..." })\n\n# Read-only research scoop. Can read everything, can\'t change anything,\n# can use whatever commands it needs to investigate.\nscoop_scoop({\n name: "auth-research",\n visiblePaths: ["/workspace/", "/shared/"],\n writablePaths: ["/scoops/auth-research/"],\n prompt: "Map the auth flow across the codebase and write findings to /scoops/auth-research/notes.md."\n})\n\n# Sprinkle-owning scoop. Needs write access to its sprinkle path.\nscoop_scoop({\n name: "giro-winners",\n writablePaths: ["/scoops/giro-winners/", "/shared/sprinkles/giro-winners/"],\n prompt: "..."\n})\n\n# Tight scraper. Only sees public docs, only runs network/json tools,\n# writes to its own scratch.\nscoop_scoop({\n name: "scraper",\n visiblePaths: [],\n writablePaths: ["/scoops/scraper/"],\n allowedCommands: ["curl", "jq", "rg"],\n prompt: "Fetch <urls>, extract the price field from each, write a CSV to /scoops/scraper/out.csv."\n})\n\n# Mount-only scoop. Sees just the DA mount, can write back to it.\n# Under shared-readonly, mounts stay readable even with visiblePaths: [].\n# Under private, name the mount in writablePaths (or visiblePaths) or it is hidden.\nscoop_scoop({\n name: "da-editor",\n writablePaths: ["/mnt/da/", "/scoops/da-editor/"],\n prompt: "Edit /mnt/da/index.html to ..."\n})\n```\n\n### Don\'t\n\n- Don\'t widen `writablePaths` "just in case." A scoop with surprise write access can clobber files outside its task — drop and re-spawn with a tighter scope is cheaper than recovering from that.\n- Don\'t narrow `allowedCommands` to "look secure" if you don\'t know which commands the scoop will need. The agent will hit a wall mid-task and either lie ("I\'ll skip that step") or spam tool errors.\n- Don\'t forget the `writablePaths`-also-readable rule. `visiblePaths: []` alone does not produce a blind sandbox.\n\n### `background_after` — bounding a scoop\'s slow commands\n\n`scoop_scoop({ background_after: <seconds> })` sets how long that scoop\'s `bash`\ntool waits for a command before detaching it and continuing the turn (default\n600). This is a resilience knob, not a sandbox one: a scoop\'s turn cannot be\ncancelled by anyone, so a command that never returns would hang the scoop (and,\nfor a blocking `agent` call, its caller) indefinitely. When a detached command\nfinishes, that scoop receives a `Background Command` lick with the exit code, a\npreview, and the path to the full output.\n\n```\n# A scoop whose commands must never stall it for more than a minute.\nscoop_scoop({ name: "flaky-net", background_after: 60, allowedCommands: ["curl", "jq"], prompt: "..." })\n```\n\nThe scoop can also override the budget per call (`bash({ command, background_after, timeout })`). Each run is a real pid: `ps` lists a detached job and `kill <pid>` stops it, so `timeout` is a kill rather than just a detach.\n\n### Filesystem work limits\n\nScoop shell commands that use the upstream limits stop at 100,000 traversal entries,\n256 levels, 32 MiB input, or 64 MiB of tracked live buffers. Split large trees or\ninputs across calls when a command reports a limit. Environment variables cannot\nraise these limits. They are not an OPFS quota and do not cover custom `tar`,\n`unzip`, JavaScript, Python, Git, or browser command implementations. Existing\n`timeout` and `background_after` controls still apply independently.\n\n## Parallel orchestration: `scoop_mute` / `scoop_unmute` / `scoop_wait`\n\nBy default, every non-ephemeral scoop completion fires a `scoop-notify` event that wakes the cone for a fresh turn. Fanning out N scoops in parallel produces N extra cone turns whose only job is to acknowledge "scoop X finished" — expensive in tokens, disruptive to orchestration.\n\nThese three cone-only tools collapse the fan-out into a single follow-up turn:\n\n- **`scoop_mute({ scoop_names })`** — suspends `scoop-notify` for the listed scoops. Completions arriving while muted are stashed (full response persisted to `/shared/scoop-notifications/*.md`); they do NOT trigger a cone turn.\n- **`scoop_unmute({ scoop_names })`** — resumes notifications AND returns every stashed completion inline as the tool\'s result. The cone reads the summaries in the current turn instead of one extra turn per scoop.\n- **`scoop_wait({ scoop_names, timeout_ms? })`** — schedules a NON-BLOCKING wait. Returns immediately so the cone can keep working; when every listed scoop completes (or the timeout fires) the orchestrator delivers a single `scoop-wait` channel lick with all captured summaries. Target scoops are implicitly muted for the wait\'s duration so individual `scoop-notify` events don\'t pre-empt the eventual lick. `timeout_ms: 0` fires on the next tick with whatever is already done. Omit `timeout_ms` to wait indefinitely. Pre-existing `scoop_mute` state survives the wait.\n\n### When to use which\n\n> Every scoop name you pass to `feed_scoop`, `drop_scoop`, `scoop_mute`, `scoop_unmute` or `scoop_wait` is resolved against what `list_scoops` shows you. Another cone\'s identically named scoop is never matched by a bare name; the call errors instead (#2360).\n>\n> If you are the LEADING cone, `list_scoops` also shows scoops you do not own, tagged `[INHERITED]` (their owning cone is gone) or `[FOREIGN: <cone>]` (another cone owns them). You can feed, wait on, mute and drop those — but only by passing `cross_cone: true` in the same call. Omitting it is an error, not a no-op, so you never touch another cone\'s work by accident. Two things to know before you do: a cross-cone `feed_scoop` sends its completion notice to the scoop\'s OWN owner, so use `scoop_wait ({ …, cross_cone: true })` if you need the result yourself; and a batch call refuses the whole batch when any listed scoop needs the flag.\n\n- **Fan-out + synthesis** (your next useful step depends on all scoops) → `scoop_wait`.\n- **Background work you\'ll check later** → `scoop_mute` now, `scoop_unmute` when you want the summaries.\n- **Single delegation, no parallelism** → don\'t mute. Default `scoop-notify` is fine.\n\n### Examples\n\n```\n# Fan-out + synthesize:\nfeed_scoop({ scoop_name: "writer-a", prompt: "Draft intro" })\nfeed_scoop({ scoop_name: "writer-b", prompt: "Draft outro" })\nscoop_wait({ scoop_names: ["writer-a", "writer-b"], timeout_ms: 600000 })\n# Returns immediately. Cone keeps working. When both finish (or 10 min), a single\n# `scoop-wait` lick wakes the cone with both summaries; the next turn synthesizes.\n\n# Background, poll non-blockingly:\nscoop_mute({ scoop_names: ["scraper"] })\nfeed_scoop({ scoop_name: "scraper", prompt: "Collect URLs from the sitemap" })\n# ... do other work ...\nscoop_unmute({ scoop_names: ["scraper"] })\n# Tool result has the stashed summary or "No stashed completions".\n```\n\n### Liveness: a quiet fan-out is not a finished fan-out\n\n"Files look stable and the scoops are still processing" does NOT mean the work\nis done or progressing. A common stall mode: one or more scoops are blocked on\na pending approval (`sudo_request`) that never reached you, and the whole\nfan-out sits idle while you wait for a `scoop-wait` lick that can\'t arrive.\n\nWhen a fan-out goes quiet — no completions, no file changes, no progress\nmessages — run `list_sudo_requests` before concluding anything. Resolve or\ndeny each pending request, then keep waiting. Only treat a fan-out as\ncomplete when every scoop has actually reported completion (via `scoop_wait`\nlick or `scoop_unmute` summaries), not because output files stopped changing.\n\nWhen you **deny** one, pass `reason` to `lick_dismiss`. The scoop sees the\nsubject of its own request and your verdict; without a reason it cannot tell a\nrefusal from a misunderstanding, so it retries the same thing or invents a\nworkaround. Say what would make it acceptable, if anything would.\n\n### Notes\n\n- Full response is always persisted to `/shared/scoop-notifications/<timestamp>-<folder>-<id>.md` (bounded to the 200 most recent). The summary string in the tool result is truncated at 20 000 characters; read the VFS path when you need the full output.\n- Unknown scoop names are reported in the result but do not abort the call.\n- Dropping or re-registering a muted scoop is safe: `unregisterScoop` releases waiters (resolving as `timedOut: true`) and clears mute/pending state.\n\n## Inspecting delegation cost\n\nRun `cost` to inspect spend for the cone and currently live scoops. The table labels each row\'s source, and `--json` returns the same live-only scope for scripts as `{"budget": <window|null>, "scoops": [ ... ]}` — read the rows from `.scoops`. The Model column (JSON `model`) is the model that unit is running now — its provider-qualified pin, the id half of `models`\' "Currently using" line (a provider-less legacy pin yields to the latest turn when they differ) — not whichever model took the most turns. JSON `models` lists each distinct model once: a bare id and a region- or version-qualified id of the same model are one entry (a suffixed variant such as `-fast` is not), and the entry for the model in use now keeps that current spelling.\n\nOn a provider billing against a rolling allowance (rather than per token), `cost` leads with that budget: percent USED of the window and when it resets. That number, not the dollar total, is what says whether long runs will finish — the allowance is shared, so it can be most of the way gone before this session has cost a cent.\n\nUse `cost --all` only when you need the historical picture: it adds dropped scoops from the current runtime and frozen sessions recorded in `/sessions/index.json`. Combine it with `--json` for structured historical output. Legacy frozen sessions that predate cost persistence are retained with unknown cost rather than reported as zero.\n\n## Model selection for scoops\n\n**Always run `models` to verify available models before specifying one.** Model availability depends on the configured provider and API key. `model` accepts an exact id, a shorthand (`haiku`, `sonnet`, `claude-haiku-4-5`), or the `provider:model` form `models` prints (`openrouter:openai/gpt-5.6-terra-pro`). A bare id resolves against the selected provider first, then against any other configured provider that offers it; matching several is an error listing the qualified ids. The scoop runs on the provider the model resolved from. An id that cannot be resolved is rejected outright — it never silently falls back to the cone\'s model. Cross-provider models also need an `/etc/models` allow entry (see [Model access policy](#model-access-policy)).\n\nUse `models --json` to compare. Intelligence, speed, and cost are independent dimensions:\n\n- **Cost-sensitive** (renames, formatting, grep-and-replace) → low-cost models.\n- **Complex** (architecture, multi-file refactors, subtle debugging) → high-intelligence.\n- **Latency-sensitive** (interactive workflows, quick lookups) → high-speed.\n- **Default** → omit the parameter; inherits the cone\'s model.\n\n```bash\n# 1. Verify available models.\nmodels\n\n# 2. Create scoops with verified IDs.\nscoop_scoop({ name: "fix-typos", model: "claude-haiku-4-5", prompt: "Fix all typos in /workspace/docs/" })\nscoop_scoop({ name: "architect", model: "claude-opus-4-6", prompt: "Design the new plugin system..." })\n```\n\n**Error handling**: scoops retry up to 3 times with exponential backoff for transient errors (rate limits, server errors). Non-retryable errors (invalid model, auth failures) fail immediately and notify the cone, bypassing any `scoop_mute` settings.\n\n## Browser tabs\n\nBrowser-tab handling rules (track your IDs, never close tabs you didn\'t open, handle "tab not found" gracefully) live in `/workspace/skills/playwright-cli/SKILL.md` under "Multi-Agent Tab Behavior". Read that skill before delegating browser work.\n\n### Browser-driving scoops: one tab per scoop\n\nAll scoops share ONE browser, but `playwright-cli` locks **per tab**: commands\non different tabs run in parallel, and commands on the same tab serialize. One\nscoop\'s slow or hung navigation stalls only its own tab. Fan-out across tabs\ngenuinely multiplies browser throughput.\n\n- **Give every browser-driving scoop its own tab; no fan-out cap is needed\n for correctness.** Browser scoops fan out like any other work, and commands\n on distinct tabs really do run side by side.\n- **Two scoops on the SAME tab still queue.** If a slice needs a shared tab,\n hand it to one scoop rather than splitting it.\n- A hung navigation stalls only its own tab, so one stuck scoop no longer\n detaches every sibling\'s commands past `background_after`.\n- When a command emits `note: browser bridge contended — ...` on stderr (total\n lock wait + queue depth, and whether the wait was on **this tab** or\n **bridge-wide**), that is back-off guidance: instruct the scoop to stagger or\n move to its own tab, never to re-run the command — it already ran; it was\n just slow to get the lock. A bridge-wide wait points at the few genuinely\n global operations (`tab-select`, `--foreground`, attaching to a tab), not at\n your tab.\n- Scoops doing CPU/VFS/network work (curl, file edits, analysis) fan out\n freely, as before.\n\n## Model access policy\n\n`/etc/models` decides which `provider:model` combinations you may spawn against. It\nis keyed by the **selected** provider:\n\n```ini\n[adobe] # while `adobe` is selected…\nopenrouter:* # …any openrouter model may be targeted\n-adobe:claude-opus-5 # …but never adobe\'s own Opus 5\n```\n\n- The selected provider\'s own models are allowed by default — you never list them.\n- Any other provider\'s model is denied until an entry allows it. This is a spend\n boundary: the user may keep separate work and personal accounts.\n- `models` and the picker hide only what a `-` entry denies, so a model you can see\n is not automatically one you may spawn against; the rejection names the exact\n line to add.\n\nDo not edit `/etc/models` to unblock yourself — the write requires a human approval\n(`Write /etc/models` in `/etc/sudoers`). Ask the user instead, quoting the line.\n';export{e as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./store-B3uS3nQU.js";import"./provider-DuCd6_sr.js";export{e as readMcpAuthEntries};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./provider-BtTOwLci.js";export{e as readMcpAuthEntries};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/panel-rpc-D3EPRnmw.js","assets/rolldown-runtime-Dd_uD5pT.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./preload-helper-Czpn1I53.js";import{r as n,t as r}from"./base64-ELzoYfwP.js";import{t as i}from"./fetch-body-1l9I58Vk.js";import{a,i as o,r as s,s as c,t as l}from"./api-endpoint-DuEQRZ4g.js";function u(e){if(!e)return!1;let t=e.toLowerCase();return t.startsWith(`text/`)||t.includes(`json`)||t.includes(`xml`)||t.includes(`javascript`)||t.includes(`ecmascript`)||t.includes(`html`)||t.includes(`css`)||t.includes(`svg`)}function d(e){if(!e)return{};let t={};for(let[n,r]of Object.entries(e)){let e=n.toLowerCase();e===`cookie`?t[`X-Proxy-Cookie`]=r:e===`origin`?t[`X-Proxy-Origin`]=r:e===`referer`?t[`X-Proxy-Referer`]=r:e.startsWith(`proxy-`)?t[`X-Proxy-${n}`]=r:t[n]=r}return t}function f(e){let t={};for(let[n,r]of Object.entries(e)){let e=n.toLowerCase();e===`x-proxy-set-cookie`?t[`set-cookie`]=r:e===`x-proxy-www-authenticate`?t[`www-authenticate`]=r:t[n]=r}return t}function p(e){if(e){if(e instanceof Headers){let t={};return e.forEach((e,n)=>{t[n]=e}),t}return e}}var m=new Map,h=new Map;function g(e,t){m.set(e,t),setTimeout(()=>m.delete(e),1e4)}function _(e,t){h.set(e,t),setTimeout(()=>h.delete(e),1e4)}function v(e){return e.headers.get(`x-proxy-error`)===`1`}async function y(e){let t=`Proxy error ${e.status}`,n;try{n=await e.text()}catch{return t}return b(n,t)}function b(e,t){let n;try{n=JSON.parse(e)}catch{return t}if(!n||typeof n!=`object`)return t;let r=n.error;if(typeof r==`string`&&r.length>0)return r;if(r&&typeof r==`object`){let e=r.message;if(typeof e==`string`&&e.length>0)return e;try{return JSON.stringify(r)}catch{return t}}return t}var x=new Map;function S(e){return x.get(e)?.bytes??null}var C=e({BINARY_CACHE_BODY_CAP:()=>D,PROXY_CONTENT_LENGTH_HEADER:()=>F,REQUEST_BODY_CAP:()=>w,collectViaExtensionDelegate:()=>Z,collectViaExtensionPort:()=>Y,createProxiedFetch:()=>Q,decodeForbiddenResponseHeaders:()=>V,encodeForbiddenRequestHeaders:()=>B,getLocalApiBaseUrl:()=>a,getResponseBodyCap:()=>E,headersToRecord:()=>P,isTextContentType:()=>u,prepareRequestBody:()=>z,readResponseBody:()=>j,resolveExactRequestBody:()=>R,responseTooLargeError:()=>O}),w=33554432,T=536870912;function E(){return T}var D=33554432;function O(e,t){let n=Math.round(T/1048576),r=t===void 0?``:` (${t} bytes)`;return Error(`proxied-fetch: response body for ${e} exceeds the ${n} MiB download limit${r}; download it in ranges (curl -r) or from a native float`)}var k=new Set([101,103,204,205,304]);function A(){return c(`/api/fetch-proxy`)}async function j(e,t,n,r){let i=e.headers.get(`content-type`)??``,a=r??I(e.headers);if(a!==void 0&&a>T)throw await e.body?.cancel().catch(()=>void 0),O(t??e.url,a);let o=await N(e,t??e.url,n,a);return M(o,i,t),o}function M(e,t,n){if(u(t)||e.byteLength>33554432)return;if(n){_(n,e);return}let r=``;for(let t=0;t<e.length;t+=32768)r+=String.fromCharCode(...e.subarray(t,t+32768));g(r,e)}async function N(e,t,n,r){if(!e.body)return new Uint8Array(await e.arrayBuffer());let i=e.body.getReader(),a=r!==void 0&&r>0?new Uint8Array(r):null,o=[],s=0;for(;;){let{done:e,value:r}=await i.read();if(e)break;let c=r;if(a?s+c.byteLength<=a.byteLength?a.set(c,s):(o.push(a.subarray(0,s),c),a=null):o.push(c),s+=c.byteLength,s>T)throw await i.cancel().catch(()=>void 0),O(t,void 0);n?.(s)}return a?s===a.byteLength?a:a.slice(0,s):U(o)}var P=p,F=`x-proxy-content-length`;function I(e){let t=t=>e instanceof Headers?e.get(t):Object.entries(e).find(([e])=>e.toLowerCase()===t)?.[1]??null,n=t(`x-proxy-content-length`)??t(`content-length`);if(n==null||!/^\d+$/.test(n))return;let r=Number(n);return Number.isSafeInteger(r)&&r>=0?r:void 0}async function L(e,t,n){if(!e)return n();try{return await n()}finally{e.end(t)}}function R(e){return typeof e!=`string`||e===``?e:S(e)??e}function z(e,t){let n=R(e);if(n==null||n===``)return;if(typeof n!=`string`)return new Blob([n]);let r=Object.entries(t??{}).find(([e])=>e.toLowerCase()===`content-type`)?.[1]??``;if(r&&!u(r)){let e=i(n);return new Blob([e])}return n}var B=d,V=f,H=r;function U(e){let t=e.reduce((e,t)=>e+t.length,0),n=new Uint8Array(t),r=0;for(let t of e)n.set(t,r),r+=t.length;return n}function W(e,t,n){let r=new Headers;for(let[t,n]of Object.entries(e.headers))r.set(t,String(n));let i=k.has(e.status)?new Uint8Array:t;return M(i,r.get(`content-type`)??``,n),{status:e.status,statusText:e.statusText,headers:V(e.headers),body:i,url:n}}async function G(e){let t=P(e?.headers),r=e?.method??`GET`,i=e?.body?z(e.body,t):void 0,a=B(t),o,s=!1;if(i!==void 0){let e=i instanceof Uint8Array?i:new Uint8Array(await new Response(i).arrayBuffer());e.byteLength>33554432?s=!0:o=n(e)}return{method:r,transportHeaders:a,bodyBase64:o,requestBodyTooLarge:s}}function K(e){return e?.signal}function q(){return new DOMException(`The operation was aborted.`,`AbortError`)}async function J(e,t,n,r){let{method:i,transportHeaders:a,bodyBase64:o,requestBodyTooLarge:s}=await G(n),c=K(n);if(c?.aborted)throw q();let l=e();return new Promise((e,n)=>{let u=null,d=!1,f=0,p,m=[],h=e=>{d=!0,m.length=0,c?.removeEventListener(`abort`,g),n(e),l.disconnect()},g=()=>h(q());c?.addEventListener(`abort`,g,{once:!0});let _=e=>{if(u={status:e.status,statusText:e.statusText,headers:e.headers},p=I(e.headers),p!==void 0&&p>T){h(O(t,p));return}r?.start(t,p)},v=e=>{if(d)return;let n=H(e.dataBase64);if(f+=n.byteLength,f>T){h(O(t,void 0));return}m.push(n),r?.chunk(t,f,p)},y=()=>{if(!d){if(d=!0,c?.removeEventListener(`abort`,g),!u){n(Error(`fetch-proxy: response-end before response-head`));return}e({head:u,body:U(m).buffer}),l.disconnect()}};l.onMessage.addListener(e=>{let t=e;t.type===`response-head`?_(t):t.type===`response-chunk`?v(t):t.type===`response-end`?y():t.type===`response-error`&&h(Error(t.error))}),l.onDisconnect.addListener(()=>{d||n(Error(u?`fetch-proxy port disconnected mid-stream`:`fetch-proxy port disconnected before response`))}),l.postMessage({type:`request`,url:t,method:i,headers:a,bodyBase64:o,requestBodyTooLarge:s})})}function Y(e,t,n){return J(()=>chrome.runtime.connect({name:`fetch-proxy.fetch`}),e,t,n)}async function X(e,t,n){let{head:r,body:i}=await L(n,e,()=>Y(e,t,n));return W(r,new Uint8Array(i),e)}async function Z(e,t,n){let r=o();if(!r)throw Error(`proxied-fetch: no extension delegate id configured`);let i=chrome.runtime.connect;return J(()=>i(r,{name:`fetch-proxy.fetch`}),e,t,n)}function Q(e={}){let n=e.progress;return s()?(e,t)=>X(e,t,n):typeof chrome<`u`&&typeof chrome?.runtime?.connect==`function`&&o()?async(e,t)=>{let{head:r,body:i}=await L(n,e,()=>Z(e,t,n));return W(r,new Uint8Array(i),e)}:typeof chrome>`u`&&o()?async(e,r)=>{let{getPanelRpcClient:i}=await t(async()=>{let{getPanelRpcClient:e}=await import(`./panel-rpc-D3EPRnmw.js`).then(e=>e.i);return{getPanelRpcClient:e}},__vite__mapDeps([0,1])),a=i();if(!a)throw Error(`proxied-fetch: panel-RPC client unavailable in worker realm`);let o=r?.method??`GET`,s=P(r?.headers)??{},c=R(r?.body);n?.start(e,void 0);let{head:l,body:u}=await L(n,e,()=>a.call(`proxied-fetch`,{url:e,method:o,headers:s,body:c},{timeoutMs:12e4,signal:K(r)}));return W(l,new Uint8Array(u),e)}:async(e,t)=>{let r=t?.method??`GET`,i=B(P(t?.headers)),a=l({...i,"X-Target-URL":e}),o={method:r,headers:a,cache:`no-store`},s=t?.signal;if(s&&(o.signal=s),t?.body&&![`GET`,`HEAD`].includes(r)){let e=z(t.body,a);e instanceof Blob&&(a[`X-Slicc-Raw-Body`]=`1`),o.body=e}return L(n,e,async()=>{let t=await fetch(A(),o);if(v(t))throw Error(await y(t));let r=I(t.headers);n?.start(e,r);let i=await j(t,e,n?t=>n.chunk(e,t,r):void 0,r),a={};t.headers.forEach((e,t)=>{a[t]=e});let s=V(a);return{status:t.status,statusText:t.statusText,headers:s,body:i,url:e}})}}export{v as a,d as c,C as i,u as l,Q as n,y as o,E as r,f as s,w as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{r as t,t as n}from"./base64-BPBW1Gzr.js";import{t as r}from"./content-type-_QKWY0B2.js";import{n as i,t as a}from"./binary-cache-bSOhqXB1.js";import{r as o}from"./fetch-body-CuwTaJC_.js";import{a as s,c,d as l,i as u,l as d,n as f,o as p,r as m,s as h,t as g,u as _}from"./api-endpoint-D8lUKmPu.js";function v(e){if(!e)return{};let t={};for(let[n,r]of Object.entries(e)){let e=n.toLowerCase();e===`cookie`?t[`X-Proxy-Cookie`]=r:e===`origin`?t[`X-Proxy-Origin`]=r:e===`referer`?t[`X-Proxy-Referer`]=r:e.startsWith(`proxy-`)?t[`X-Proxy-${n}`]=r:t[n]=r}return t}function y(e){let t={};for(let[n,r]of Object.entries(e)){let e=n.toLowerCase();e===`x-proxy-set-cookie`?t[`set-cookie`]=r:e===`x-proxy-www-authenticate`?t[`www-authenticate`]=r:t[n]=r}return t}function b(e){if(e){if(e instanceof Headers){let t={};return e.forEach((e,n)=>{t[n]=e}),t}return e}}function x(e){if(!e)return;if(e instanceof Headers){let t={};return e.forEach((e,n)=>{t[n]=e}),Object.keys(t).length===0?void 0:t}if(Array.isArray(e)){let t={};for(let[n,r]of e)t[n]=r;return Object.keys(t).length===0?void 0:t}let t={...e};return Object.keys(t).length===0?void 0:t}function S(e){return e.headers.get(`x-proxy-error`)===`1`}async function ee(e){let t=`Proxy error ${e.status}`,n;try{n=await e.text()}catch{return t}return te(n,t)}function te(e,t){let n;try{n=JSON.parse(e)}catch{return t}if(!n||typeof n!=`object`)return t;let r=n.error;if(typeof r==`string`&&r.length>0)return r;if(r&&typeof r==`object`){let e=r.message;if(typeof e==`string`&&e.length>0)return e;try{return JSON.stringify(r)}catch{return t}}return t}const C=8388608,w=new Map;let T=0;const E=new Set;function D(e){let t=w.get(e);t&&(clearTimeout(t.timer),w.delete(e),T-=t.bytes.byteLength)}function ne(e){for(let t of e)if(t>=128)return!0;return!1}function re(e){let t=new Uint8Array(e.byteLength),n=0;for(let r of e)r!==10&&r!==13&&(t[n++]=r);return t.slice(0,n)}function ie(e,t){O(e,t);let n=e.replace(/[\r\n]/g,``);n!==e&&O(n,re(t))}function ae(e,t){if(e.byteLength!==t.byteLength)return!1;for(let n=0;n<e.byteLength;n++)if(e[n]!==t[n])return!1;return!0}function O(e,t){if(t.byteLength===0||t.byteLength>C||!ne(t)||E.has(e))return;let n=w.get(e);if(n&&!ae(n.bytes,t)){D(e),E.add(e);return}D(e);for(let e of w.keys()){if(T+t.byteLength<=C)break;D(e)}w.set(e,{bytes:t,timer:setTimeout(()=>D(e),1e4)}),T+=t.byteLength}function oe(e){return w.get(e)?.bytes??null}function se(){for(let e of[...w.keys()])D(e);E.clear()}var k=e({BINARY_CACHE_BODY_CAP:()=>le,PROXY_CONTENT_LENGTH_HEADER:()=>z,REQUEST_BODY_CAP:()=>A,apiHeaders:()=>g,assertLocalBridgeAcceptsToken:()=>f,collectViaExtensionDelegate:()=>Q,collectViaExtensionPort:()=>Z,createProxiedFetch:()=>$,decodeForbiddenResponseHeaders:()=>G,encodeForbiddenRequestHeaders:()=>W,getBridgeToken:()=>m,getChromeExtensionRealm:()=>u,getExtensionDelegateId:()=>s,getLocalApiBaseUrl:()=>p,getResponseBodyCap:()=>N,headersToRecord:()=>R,isTextContentType:()=>r,prepareRequestBody:()=>U,readResponseBody:()=>F,resolveApiUrl:()=>h,resolveExactRequestBody:()=>H,responseTooLargeError:()=>P,setBridgeToken:()=>c,setChromeExtensionRealm:()=>d,setExtensionDelegateId:()=>_,setLocalApiBaseUrl:()=>l,setResponseBodyCap:()=>ce});const A=33554432,j=536870912;let M=j;function ce(e){M=e===null?j:e}function N(){return M}const le=33554432;function P(e,t){let n=Math.round(M/1048576),r=t===void 0?``:` (${t} bytes)`;return Error(`proxied-fetch: response body for ${e} exceeds the ${n} MiB download limit${r}; download it in ranges (curl -r) or from a native float`)}const ue=new Set([101,103,204,205,304]);function de(){return h(`/api/fetch-proxy`)}async function F(e,t,n,r){let i=e.headers.get(`content-type`)??``,a=r??B(e.headers);if(a!==void 0&&a>M)throw await e.body?.cancel().catch(()=>void 0),P(t??e.url,a);let o=await L(e,t??e.url,n,a);return I(o,i,t),o}function I(e,t,n){if(r(t)||e.byteLength>33554432)return;if(n){i(n,e);return}let o=``;for(let t=0;t<e.length;t+=32768)o+=String.fromCharCode(...e.subarray(t,t+32768));a(o,e)}async function L(e,t,n,r){if(!e.body)return new Uint8Array(await e.arrayBuffer());let i=e.body.getReader(),a=r!==void 0&&r>0?new Uint8Array(r):null,o=[],s=0;for(;;){let{done:e,value:r}=await i.read();if(e)break;let c=r;if(a?s+c.byteLength<=a.byteLength?a.set(c,s):(o.push(a.subarray(0,s),c),a=null):o.push(c),s+=c.byteLength,s>M)throw await i.cancel().catch(()=>void 0),P(t,void 0);n?.(s)}return a?s===a.byteLength?a:a.slice(0,s):K(o)}const R=b,z=`x-proxy-content-length`;function B(e){let t=t=>e instanceof Headers?e.get(t):Object.entries(e).find(([e])=>e.toLowerCase()===t)?.[1]??null,n=t(`x-proxy-content-length`)??t(`content-length`);if(n==null||!/^\d+$/.test(n))return;let r=Number(n);return Number.isSafeInteger(r)&&r>=0?r:void 0}async function V(e,t,n){if(!e)return n();try{return await n()}finally{e.end(t)}}function H(e){return typeof e!=`string`||e===``?e:oe(e)??e}function U(e,t){let n=H(e);if(n==null||n===``)return;if(typeof n!=`string`)return new Blob([n]);let i=Object.entries(t??{}).find(([e])=>e.toLowerCase()===`content-type`)?.[1]??``;if(i&&!r(i)){let e=o(n);return new Blob([e])}return n}const W=v,G=y,fe=n;function K(e){let t=e.reduce((e,t)=>e+t.length,0),n=new Uint8Array(t),r=0;for(let t of e)n.set(t,r),r+=t.length;return n}function q(e,t,n){let r=new Headers;for(let[t,n]of Object.entries(e.headers))r.set(t,String(n));let i=ue.has(e.status)?new Uint8Array:t;return I(i,r.get(`content-type`)??``,n),{status:e.status,statusText:e.statusText,headers:G(e.headers),body:i,url:n}}async function pe(e){let n=R(e?.headers),r=e?.method??`GET`,i=e?.body?U(e.body,n):void 0,a=W(n),o,s=!1;if(i!==void 0){let e=i instanceof Uint8Array?i:new Uint8Array(await new Response(i).arrayBuffer());e.byteLength>33554432?s=!0:o=t(e)}return{method:r,transportHeaders:a,bodyBase64:o,requestBodyTooLarge:s}}function J(e){return e?.signal}function Y(){return new DOMException(`The operation was aborted.`,`AbortError`)}async function X(e,t,n,r){let{method:i,transportHeaders:a,bodyBase64:o,requestBodyTooLarge:s}=await pe(n),c=J(n);if(c?.aborted)throw Y();let l=e();return new Promise((e,n)=>{let u=null,d=!1,f=0,p,m=[],h=e=>{d=!0,m.length=0,c?.removeEventListener(`abort`,g),n(e),l.disconnect()},g=()=>h(Y());c?.addEventListener(`abort`,g,{once:!0});let _=e=>{if(u={status:e.status,statusText:e.statusText,headers:e.headers},p=B(e.headers),p!==void 0&&p>M){h(P(t,p));return}r?.start(t,p)},v=e=>{if(d)return;let n=fe(e.dataBase64);if(f+=n.byteLength,f>M){h(P(t,void 0));return}m.push(n),r?.chunk(t,f,p)},y=()=>{if(!d){if(d=!0,c?.removeEventListener(`abort`,g),!u){n(Error(`fetch-proxy: response-end before response-head`));return}e({head:u,body:K(m).buffer}),l.disconnect()}};l.onMessage.addListener(e=>{let t=e;t.type===`response-head`?_(t):t.type===`response-chunk`?v(t):t.type===`response-end`?y():t.type===`response-error`&&h(Error(t.error))}),l.onDisconnect.addListener(()=>{d||n(Error(u?`fetch-proxy port disconnected mid-stream`:`fetch-proxy port disconnected before response`))}),l.postMessage({type:`request`,url:t,method:i,headers:a,bodyBase64:o,requestBodyTooLarge:s})})}function Z(e,t,n){return X(()=>chrome.runtime.connect({name:`fetch-proxy.fetch`}),e,t,n)}async function me(e,t,n){let{head:r,body:i}=await V(n,e,()=>Z(e,t,n));return q(r,new Uint8Array(i),e)}async function Q(e,t,n){let r=s();if(!r)throw Error(`proxied-fetch: no extension delegate id configured`);let i=chrome.runtime.connect;return X(()=>i(r,{name:`fetch-proxy.fetch`}),e,t,n)}function $(e={}){let t=e.progress;return u()?(e,n)=>me(e,n,t):typeof chrome<`u`&&typeof chrome?.runtime?.connect==`function`&&s()?async(e,n)=>{let{head:r,body:i}=await V(t,e,()=>Q(e,n,t));return q(r,new Uint8Array(i),e)}:typeof chrome>`u`&&s()?async(e,n)=>{let{getPanelRpcClient:r}=await import(`./panel-rpc-DW7W4w6_.js`).then(e=>e.a),i=r();if(!i)throw Error(`proxied-fetch: panel-RPC client unavailable in worker realm`);let a=n?.method??`GET`,o=R(n?.headers)??{},s=H(n?.body);t?.start(e,void 0);let{head:c,body:l}=await V(t,e,()=>i.call(`proxied-fetch`,{url:e,method:a,headers:o,body:s},{timeoutMs:12e4,signal:J(n)}));return q(c,new Uint8Array(l),e)}:async(e,n)=>{let r=n?.method??`GET`,i=R(n?.headers),a=W(i),o=g({...a,"X-Target-URL":e}),s={method:r,headers:o,cache:`no-store`},c=n?.signal;if(c&&(s.signal=c),n?.body&&![`GET`,`HEAD`].includes(r)){let e=U(n.body,o);e instanceof Blob&&(o[`X-Slicc-Raw-Body`]=`1`),s.body=e}return V(t,e,async()=>{let n=await fetch(de(),s);if(S(n))throw Error(await ee(n));let r=B(n.headers);t?.start(e,r);let i=await F(n,e,t?n=>t.chunk(e,n,r):void 0,r),a={};n.headers.forEach((e,t)=>{a[t]=e});let o=G(a);return{status:n.status,statusText:n.statusText,headers:o,body:i,url:e}})}}export{se as a,v as c,k as i,x as l,$ as n,ie as o,N as r,y as s,A as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./float-topology-BvkgNLoi.js";
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
function e(){return{version:`6.182.0`,releasedAt:`2026-09-23T17:03:55Z`,buildId:`6.182.0-muecrcwp`}}let t=null;function n(e){t=e}function r(){return t}export{e as n,n as r,r as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./logger-DDBAeTLF.js";import{Q as t}from"./wc-shell-DFszC8_0.js";var n=e(`speech:soundscape`),r=`soundscape-enabled`;function i(){try{return localStorage.getItem(r)!==`false`}catch{return!0}}var a=0,o=!1;function s(){a++}function c(){a>0&&a--}function l(){return a>0}function u(e){o=e}function d(){return o}var f=null;function p(){return typeof AudioContext>`u`?null:((!f||f.state===`closed`)&&(f=new AudioContext),f)}function m(e){if(!i()||!l()||d())return;let r=p();if(r)try{r.state===`suspended`&&r.resume(),t(r,e)}catch(e){n.debug(`soundscape cue failed`,e)}}export{s as beginVoiceTurn,c as endVoiceTurn,m as playCue,u as setTtsActive};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./logger-DDBAeTLF.js";import{it as t,nt as n}from"./wc-shell-DFszC8_0.js";import{hasVoiceForLang as r,speak as i,speechTextFromMarkdown as a}from"./speak-B-rF7cd2.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=n(e);if(l&&!await c(l))return;let u=a(t(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};
|