sliccy 6.178.2 → 6.179.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 +191 -182
- package/dist/ui/assets/SKILL-B26KJxxL.js +1 -0
- package/dist/ui/assets/__vite-browser-external-CVereMU8.js +1 -0
- package/dist/ui/assets/account-store-Bbb4tBjB.js +2 -0
- package/dist/ui/assets/account-store-DORXRt2J.js +1 -0
- package/dist/ui/assets/{adobe-BHZ-TF7E.js → adobe-CcJb_1io.js} +1 -1
- package/dist/ui/assets/{adobe-Cqd5wrqM.js → adobe-Dxc6H5uX.js} +1 -1
- package/dist/ui/assets/{agent-panels-DXCdmUkc.js → agent-panels-DukhfWpj.js} +1 -1
- package/dist/ui/assets/{almost-bash-shell-headless-B29ulBpN.js → almost-bash-shell-headless-2tBN0e_f.js} +231 -231
- package/dist/ui/assets/{apply-layout-BiYaZGTe.js → apply-layout-CnYIzvao.js} +1 -1
- package/dist/ui/assets/{apps-BYK0eeEc.js → apps-6FOwbeg0.js} +1 -1
- package/dist/ui/assets/{azure-openai-DwxTKwka.js → azure-openai-Bcul1Ufv.js} +1 -1
- package/dist/ui/assets/{azure-openai-BgA0OxNa.js → azure-openai-NsEky3Bh.js} +1 -1
- package/dist/ui/assets/{backend-hostfs-CeXHlroV.js → backend-hostfs-BJv18aU0.js} +1 -1
- package/dist/ui/assets/bedrock-camp-BQ02i7Bk.js +1 -0
- package/dist/ui/assets/bedrock-camp-CMYc0nQP.js +1 -0
- package/dist/ui/assets/bedrock-camp-extra-models-B0WH9IRx.js +1 -0
- package/dist/ui/assets/bedrock-camp-extra-models-WTCIjj5a.js +1 -0
- package/dist/ui/assets/{bunny-probe-Dk-taSwq.js → bunny-probe-DwyMiB71.js} +1 -1
- package/dist/ui/assets/{bunny-run-CmnXF3U5.js → bunny-run-COGwXgvg.js} +1 -1
- package/dist/ui/assets/{cdp-wm8vfA8s.js → cdp-Ck5NGIgv.js} +4 -4
- package/dist/ui/assets/{cerebras-wuHzITPY.js → cerebras-B2ofXAjg.js} +1 -1
- package/dist/ui/assets/{cerebras-BPlfZv3L.js → cerebras-DzROLFaR.js} +1 -1
- package/dist/ui/assets/{composer-speech-DI9SI2lY.js → composer-speech-ArgvCsJw.js} +1 -1
- package/dist/ui/assets/{connect-surface-zTa8OfFh.js → connect-surface-DVI8l1Gj.js} +1 -1
- package/dist/ui/assets/{directed-approval-DmDgVpiX.js → directed-approval-D5B0YPqE.js} +1 -1
- package/dist/ui/assets/{ensure-speech-assets-42E6KJDv.js → ensure-speech-assets-Bt69TLMK.js} +1 -1
- package/dist/ui/assets/{fast-path-DiV4YcEb.js → fast-path-CG_eXz0M.js} +1 -1
- package/dist/ui/assets/{frozen-archive-writer-C97kBlYw.js → frozen-archive-writer-DRM5RlgX.js} +1 -1
- package/dist/ui/assets/{fs-DmgjBIs9.js → fs-Bdm5h1uM.js} +1 -1
- package/dist/ui/assets/{fs-BKmepe3Q.js → fs-Ce8P6WrG.js} +2 -2
- package/dist/ui/assets/{gelatiere-store-D1l9WE1j.js → gelatiere-store-BZg-43KO.js} +1 -1
- package/dist/ui/assets/{gelatiere-unit-jlm5b-JJ.js → gelatiere-unit-BX9sZFKS.js} +1 -1
- package/dist/ui/assets/{github-C8jjATg2.js → github-8zos8s_U.js} +2 -2
- package/dist/ui/assets/{github-BB3M-XW1.js → github-CCjvDIfP.js} +1 -1
- package/dist/ui/assets/{github-auth-CkC7qTEg.js → github-auth-A-2czSUQ.js} +1 -1
- package/dist/ui/assets/{github-copilot-DuwasHAz.js → github-copilot-BptMXI0N.js} +1 -1
- package/dist/ui/assets/{github-copilot-D7QRCTDD.js → github-copilot-CKr_YmDA.js} +1 -1
- package/dist/ui/assets/{github-install-DT3Wys59.js → github-install-fthN4iEm.js} +1 -1
- package/dist/ui/assets/{github-zip-CX3GXBmW.js → github-zip-DwYtMYDx.js} +1 -1
- package/dist/ui/assets/{hear-pJ--prvx.js → hear-4csSE4tf.js} +1 -1
- package/dist/ui/assets/{help-gOzjZhgS.js → help-CW93-CFs.js} +1 -1
- package/dist/ui/assets/{installer-DeqzzcvC.js → installer-DMXLmwMy.js} +1 -1
- package/dist/ui/assets/{js-realm-worker-QT2JnICz.js → js-realm-worker-C2CFKG9d.js} +9 -9
- package/dist/ui/assets/{jsh-executor-BBZWMBxV.js → jsh-executor-sKhz-2wo.js} +3 -3
- package/dist/ui/assets/{kernel-worker-B23YxkDH.js → kernel-worker-DPGsdtHG.js} +11 -11
- package/dist/ui/assets/{lick-ws-bridge-CpcUjLS6.js → lick-ws-bridge-QLNp37XL.js} +1 -1
- package/dist/ui/assets/{lick-ws-bridge-DsoQWD5s.js → lick-ws-bridge-sNe1yusQ.js} +1 -1
- package/dist/ui/assets/{live-session-curation-BWfx-Nu1.js → live-session-curation-BeMkfXGh.js} +1 -1
- package/dist/ui/assets/{live-session-snapshot-BSNfthJ2.js → live-session-snapshot-Bm0Bb5YU.js} +1 -1
- package/dist/ui/assets/{local-llm-vzP-uq7M.js → local-llm-BP0eQCgl.js} +1 -1
- package/dist/ui/assets/{local-llm-DGFPI_4T.js → local-llm-DY70xAff.js} +1 -1
- package/dist/ui/assets/main-B0cbvPwD.js +22 -0
- package/dist/ui/assets/{main-cherry-Bbjw_90k.js → main-cherry-Cs8W2ySf.js} +1 -1
- package/dist/ui/assets/{memory-curation-seam-BufuSUCj.js → memory-curation-seam-BHFcRLuu.js} +1 -1
- package/dist/ui/assets/{memory-health-DdSqq7yP.js → memory-health-JgHshbO8.js} +1 -1
- package/dist/ui/assets/memory-v2-flag-DZrdHcA-.js +1 -0
- package/dist/ui/assets/{memory-write-execute-BygymnF0.js → memory-write-execute-Bw7kTO2u.js} +1 -1
- package/dist/ui/assets/{mount-DlogHA7u.js → mount-B70Cfm-W.js} +3 -3
- package/dist/ui/assets/{mount-_sTSuvKx.js → mount-CT7VaoKY.js} +1 -1
- package/dist/ui/assets/new-session-Crr2-msq.js +2 -0
- package/dist/ui/assets/oauth-bootstrap-CZzvOYOg.js +2 -0
- package/dist/ui/assets/{onboarding-orchestrator-CbnB67nZ.js → onboarding-orchestrator-CXxroXfS.js} +1 -1
- package/dist/ui/assets/{openai-codex-SI0nWQNS.js → openai-codex-Bv9btlww.js} +1 -1
- package/dist/ui/assets/{openai-codex-BtwVt-12.js → openai-codex-DCsbLgXd.js} +1 -1
- package/dist/ui/assets/{openrouter-BFlMjaCH.js → openrouter-CnnttWgn.js} +1 -1
- package/dist/ui/assets/{openrouter-BruOnSfT.js → openrouter-Crgs_QCq.js} +1 -1
- package/dist/ui/assets/{openrouter-free-B2pceWVg.js → openrouter-free-CgIoPuxn.js} +1 -1
- package/dist/ui/assets/{openrouter-free-DPQDCfqQ.js → openrouter-free-DRkmaxB3.js} +1 -1
- package/dist/ui/assets/{openrouter-oauth-BLskezr8.js → openrouter-oauth-CxTickkD.js} +1 -1
- package/dist/ui/assets/{openrouter-oauth-C4kwBIwS.js → openrouter-oauth-pI7Aub_Z.js} +1 -1
- package/dist/ui/assets/{opfs-mount-8s9WP18b.js → opfs-mount-mco_YXZ2.js} +1 -1
- package/dist/ui/assets/panel-rpc-handlers-DlWD1u2Q.js +2 -0
- package/dist/ui/assets/{panelize-shell-Dg_58ImI.js → panelize-shell-C6AGU1O_.js} +1 -1
- package/dist/ui/assets/{pi-edit-execution-C9GYKunH.js → pi-edit-execution-yVaqL9lZ.js} +1 -1
- package/dist/ui/assets/{provider-DEcfbBkM.js → provider-BLg5uchT.js} +1 -1
- package/dist/ui/assets/{provider-B_fhkXn7.js → provider-DGvW9aTF.js} +2 -2
- package/dist/ui/assets/{provider-settings-BLtjMrT0.js → provider-settings-CeFsisH4.js} +1 -1
- package/dist/ui/assets/provider-store-access-BaHh7m4I.js +1 -0
- package/dist/ui/assets/provider-store-access-CnoMGfWY.js +1 -0
- package/dist/ui/assets/providers-2pihfuXe.js +2 -0
- package/dist/ui/assets/providers-BNhTu4Az.js +1 -0
- package/dist/ui/assets/py-live-vfs-DaPSes0l.js +168 -0
- package/dist/ui/assets/py-live-vfs-Dx9cFlfE.js +168 -0
- package/dist/ui/assets/{py-realm-worker-A1ICPvEl.js → py-realm-worker-CYwLJW9I.js} +3 -3
- package/dist/ui/assets/{pyodide-DGH4V3SQ.js → pyodide-DKNrUBio.js} +2 -2
- package/dist/ui/assets/{quick-llm-B8uh7EVu.js → quick-llm-DcsNLbYv.js} +1 -1
- package/dist/ui/assets/realm-inprocess-BgV7BI1t.js +30 -0
- package/dist/ui/assets/{recovery-screen-M8szzZB2.js → recovery-screen-xvnzvjnh.js} +1 -1
- package/dist/ui/assets/{remote-terminal-view-6ygd42Fb.js → remote-terminal-view-C_QEoDZe.js} +1 -1
- package/dist/ui/assets/require-guards-Du29-pl4.js +252 -0
- package/dist/ui/assets/{restore-Qq5h6a38.js → restore-90cAJcB-.js} +1 -1
- package/dist/ui/assets/{run-C0wVagJ5.js → run-BjdOwTMK.js} +2 -2
- package/dist/ui/assets/{run-DK8nktud.js → run-BoSrXXY1.js} +2 -2
- package/dist/ui/assets/{run-CPDsfLJJ.js → run-Bx5g1SW-.js} +2 -2
- package/dist/ui/assets/{run-C3rYy-Lu.js → run-C-9fbuPf.js} +1 -1
- package/dist/ui/assets/{run-dNFrBZDI.js → run-CTYkZrli.js} +1 -1
- package/dist/ui/assets/{run-DUzzkV29.js → run-DMneLV98.js} +3 -3
- package/dist/ui/assets/{run--H9dud5r.js → run-Di77_0CW.js} +2 -2
- package/dist/ui/assets/{run-Bk0pGJJa.js → run-R7EnlHqn.js} +1 -1
- package/dist/ui/assets/{run-_QNErIec.js → run-u5sZdtZc.js} +2 -2
- package/dist/ui/assets/{session-command-memory-CAl1-crq.js → session-command-memory-BIW04ime.js} +2 -2
- package/dist/ui/assets/{session-jsonl-B-4fihPX.js → session-jsonl-BT6N86_D.js} +1 -1
- package/dist/ui/assets/{session-jsonl-lB9-7rZS.js → session-jsonl-DRpBHMbZ.js} +1 -1
- package/dist/ui/assets/{session-search-index-Bn4FhmPW.js → session-search-index-CRSNfFPt.js} +1 -1
- package/dist/ui/assets/{setup-feature-flags-remote-opNg3JWs.js → setup-feature-flags-remote-DLPlEBtl.js} +1 -1
- package/dist/ui/assets/{signed-fetch-YC2zrriw.js → signed-fetch-Cv-pIQgJ.js} +1 -1
- package/dist/ui/assets/{silent-renew-backoff-Bak0vwwf.js → silent-renew-backoff-BL0l9czs.js} +1 -1
- package/dist/ui/assets/slicc-version-wzJMaTOt.js +1 -0
- package/dist/ui/assets/{snapshot-features-BqGUjBWl.js → snapshot-features-DN8885R6.js} +1 -1
- package/dist/ui/assets/{snapshot-6br_5p-f.js → snapshot-h1IyuVIH.js} +1 -1
- package/dist/ui/assets/{soundscape-DRViCPly.js → soundscape-qJ4gJF6y.js} +1 -1
- package/dist/ui/assets/{speak-DRv_vLqY.js → speak-CUSuBAiN.js} +1 -1
- package/dist/ui/assets/{sprinkle-manager-DeJrE3Hq.js → sprinkle-manager-CK0KfQ0E.js} +1 -1
- package/dist/ui/assets/{sprinkle-renderer-DYUy10CO.js → sprinkle-renderer-C0-nYSNx.js} +1 -1
- package/dist/ui/assets/{src-CmTUvI8R.js → src-BfoZU01X.js} +74 -74
- package/dist/ui/assets/{ssh-D1zj1EXl.js → ssh-D9CT02gL.js} +1 -1
- package/dist/ui/assets/{state-BpyjzTIG.js → state-DCSstoTF.js} +1 -1
- package/dist/ui/assets/{store-DQkIRnav.js → store-COcJ0rh9.js} +1 -1
- package/dist/ui/assets/{store-DwUewAuZ.js → store-DrLyzt3v.js} +1 -1
- package/dist/ui/assets/{sudo-DIegVBwT.js → sudo-BLsv33L7.js} +1 -1
- package/dist/ui/assets/{supervisor-gHbk5m7z.js → supervisor-DC1z_etC.js} +1 -1
- package/dist/ui/assets/{sync-dialog-CH4PBcVu.js → sync-dialog-B9Na5xYc.js} +1 -1
- package/dist/ui/assets/sync-exec-xhr-bridge-BjD_IfJF.js +1 -0
- package/dist/ui/assets/sync-sab-wire-CkrsRVrw.js +1 -0
- package/dist/ui/assets/tab-8LaHojfd.js +1 -0
- package/dist/ui/assets/{transformers-env-9M9En1_O.js → transformers-env-DbQSH9Ln.js} +1 -1
- package/dist/ui/assets/{tray-leader-Bd293BI8.js → tray-leader-DyfRH9_x.js} +1 -1
- package/dist/ui/assets/{tray-leave-runtime-wLd1uBMu.js → tray-leave-runtime-BRVkq1j8.js} +1 -1
- package/dist/ui/assets/{tray-sidecar-C35X7Jht.js → tray-sidecar-BdSKCDRU.js} +1 -1
- package/dist/ui/assets/{upgrade-detection-Tp8fDJAG.js → upgrade-detection-DOttGbYy.js} +1 -1
- package/dist/ui/assets/{upskill-lick-skip-Cr0VVPGj.js → upskill-lick-skip-4EAgxZBZ.js} +1 -1
- package/dist/ui/assets/{voice-reply-wJfABSIn.js → voice-reply-BMbj-krb.js} +1 -1
- package/dist/ui/assets/wc-attach-BYh78RZQ.js +13 -0
- package/dist/ui/assets/{wc-browser-BJemxWhg.js → wc-browser-D_SlpGFj.js} +1 -1
- package/dist/ui/assets/{wc-computers-Cr14YnOg.js → wc-computers-DguwFFgg.js} +1 -1
- package/dist/ui/assets/{wc-detached-DQ_ZTSZ-.js → wc-detached-BwCNIFnT.js} +1 -1
- package/dist/ui/assets/{wc-extension-C8pgLDqO.js → wc-extension-B3EwzUfS.js} +2 -2
- package/dist/ui/assets/wc-follower-CmPddVGO.js +17 -0
- package/dist/ui/assets/{wc-follower-oauth-BU-XAftl.js → wc-follower-oauth-D9PaxsNc.js} +1 -1
- package/dist/ui/assets/{wc-gelatiere-BiyouLW3.js → wc-gelatiere-BIfd8LAx.js} +1 -1
- package/dist/ui/assets/{wc-live-CaopRwn0.js → wc-live-Dq-_FAPU.js} +6 -6
- package/dist/ui/assets/wc-nav-hfv762PR.js +2 -0
- package/dist/ui/assets/{wc-onboarding-FjrDOv_u.js → wc-onboarding-BAO8Xa0p.js} +2 -2
- package/dist/ui/assets/{wc-permissions-C63-jLbY.js → wc-permissions-BWZQsa4a.js} +2 -2
- package/dist/ui/assets/{wc-placeholder-Bdbmjijc.js → wc-placeholder-BJLM84yS.js} +3 -3
- package/dist/ui/assets/{wc-secret-request-C9iCWgBV.js → wc-secret-request-DMdnDVOi.js} +1 -1
- package/dist/ui/assets/{wc-settings-1ZJgN4Wk.js → wc-settings-Cwj7tYnH.js} +3 -3
- package/dist/ui/assets/{wc-shell-CrMn8BW0.js → wc-shell-Cn2tEDM7.js} +4 -4
- package/dist/ui/assets/{wc-shortcut-config-JXEU24sg.js → wc-shortcut-config-C5cwDbE-.js} +1 -1
- package/dist/ui/assets/{wc-sprinkles-CBaPR_V8.js → wc-sprinkles-Bme5XF35.js} +2 -2
- package/dist/ui/assets/{wc-transcript-export-eyG-SwVe.js → wc-transcript-export-D5m4sap2.js} +2 -2
- package/dist/ui/assets/{wc-tray-dSLNIDh9.js → wc-tray-kqJoJtNf.js} +4 -4
- package/dist/ui/assets/welcome-detection-CQJa6RP3.js +1 -0
- package/dist/ui/assets/whisper-session-DhEBOCZj.js +2 -0
- package/dist/ui/assets/{xai-grok-C2oyJ5tt.js → xai-grok-DVO4KVhh.js} +1 -1
- package/dist/ui/assets/{xai-grok-G4GFCgrM.js → xai-grok-UADpK8FU.js} +1 -1
- package/dist/ui/index.html +4 -3
- package/dist/ui/llm-proxy-sw.js +1 -1
- package/dist/ui/packages/webapp/index.html +4 -3
- package/package.json +1 -1
- package/dist/ui/assets/SKILL-CJrjPuRt.js +0 -1
- package/dist/ui/assets/__vite-browser-external-C7Grxh8D.js +0 -1
- package/dist/ui/assets/account-store-LwLxI7v1.js +0 -1
- package/dist/ui/assets/account-store-SI8RQbm0.js +0 -2
- package/dist/ui/assets/bedrock-camp-D-jmLdEX.js +0 -1
- package/dist/ui/assets/bedrock-camp-DmVFQWfL.js +0 -1
- package/dist/ui/assets/main-DFTTAllP.js +0 -22
- package/dist/ui/assets/memory-v2-flag-uChv9nwr.js +0 -1
- package/dist/ui/assets/new-session-C914zfKa.js +0 -2
- package/dist/ui/assets/oauth-bootstrap-B7cPXMSk.js +0 -2
- package/dist/ui/assets/panel-rpc-handlers-BuMdGle_.js +0 -2
- package/dist/ui/assets/provider-store-access-C0w1Xcs2.js +0 -1
- package/dist/ui/assets/provider-store-access-YjQKD2es.js +0 -1
- package/dist/ui/assets/providers-B0rCH1pp.js +0 -1
- package/dist/ui/assets/providers-B9p2VR5L.js +0 -2
- package/dist/ui/assets/realm-inprocess-qhbZWW6z.js +0 -30
- package/dist/ui/assets/slicc-version-D1Js64gw.js +0 -1
- package/dist/ui/assets/sync-sab-wire-CN1_ni9J.js +0 -252
- package/dist/ui/assets/tab-0xwFvGm5.js +0 -1
- package/dist/ui/assets/wc-attach-CtVWDKPk.js +0 -13
- package/dist/ui/assets/wc-follower-nosCeVKN.js +0 -17
- package/dist/ui/assets/wc-nav-Wn2qDNiX.js +0 -2
- package/dist/ui/assets/welcome-detection-DuFRP38Z.js +0 -1
- package/dist/ui/assets/whisper-session-DrDhzSqp.js +0 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./wc-onboarding-BAO8Xa0p.js";export{e as hasOnboardingFinalLickInHistory};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/speak-CUSuBAiN.js","assets/preload-helper-Czpn1I53.js","assets/logger-DDBAeTLF.js","assets/runtime-env-Dlaokqg1.js","assets/speech-assets-bridge-CFYafE89.js","assets/transformers-env-DbQSH9Ln.js","assets/wc-shell-Cn2tEDM7.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/mime-types-D0xZwlMO.js","assets/base64-ELzoYfwP.js","assets/bridge-protocol-C52CnDIj.js","assets/account-store-Bbb4tBjB.js","assets/core-zz8rWM4c.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/proxied-fetch-W1rZTqEQ.js","assets/fetch-body-1l9I58Vk.js","assets/api-endpoint-DuEQRZ4g.js","assets/secret-topology-fyLSbV8r.js","assets/float-topology-U8FF9pgZ.js","assets/secrets-bridge-client-9RRVsrGm.js","assets/port-bridge-client-BYQawsDH.js","assets/image-markers-q8JQTtid.js","assets/tool-ui-eSQ1g2I1.js","assets/providers-2pihfuXe.js","assets/panel-rpc-B3MSVImO.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-mBEktoxE.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-DbQSH9Ln.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-CUSuBAiN.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])).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([40,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-DORXRt2J.js";import{a as n}from"./diagnostics-DN_idNHx.js";import{a as r,r as i}from"./compat-uEPf6-XW.js";import{c as a,i as o,r as s,s as c}from"./legacy-api-aliases-jKEvBgOL.js";import"./provider-settings-CeFsisH4.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"./diagnostics-DN_idNHx.js";import{a as t,r as n}from"./compat-qQM4gjF_.js";import{c as r,i,r as a,s as o}from"./legacy-api-aliases-DtQJ5I7w.js";import{G as s,f as c}from"./account-store-
|
|
1
|
+
import{a as e}from"./diagnostics-DN_idNHx.js";import{a as t,r as n}from"./compat-qQM4gjF_.js";import{c as r,i,r as a,s as o}from"./legacy-api-aliases-DtQJ5I7w.js";import{G as s,f as c}from"./account-store-Bbb4tBjB.js";import"./main-B0cbvPwD.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(n(`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=(t,n,r={})=>{let i=e();return K(i,t,n,r).catch(G),i},Y=(t,n,r)=>{let i=e();return q(i,t,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(){t({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-B0cbvPwD.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">
|
|
@@ -30,11 +30,12 @@
|
|
|
30
30
|
<link rel="modulepreload" crossorigin href="/assets/tool-ui-eSQ1g2I1.js">
|
|
31
31
|
<link rel="modulepreload" crossorigin href="/assets/core-zz8rWM4c.js">
|
|
32
32
|
<link rel="modulepreload" crossorigin href="/assets/bridge-protocol-C52CnDIj.js">
|
|
33
|
-
<link rel="modulepreload" crossorigin href="/assets/providers-
|
|
33
|
+
<link rel="modulepreload" crossorigin href="/assets/providers-2pihfuXe.js">
|
|
34
34
|
<link rel="modulepreload" crossorigin href="/assets/panel-rpc-B3MSVImO.js">
|
|
35
35
|
<link rel="modulepreload" crossorigin href="/assets/bedrock-camp-compat-BeCSBUrZ.js">
|
|
36
|
+
<link rel="modulepreload" crossorigin href="/assets/bedrock-camp-extra-models-WTCIjj5a.js">
|
|
36
37
|
<link rel="modulepreload" crossorigin href="/assets/claude-model-version-DZmbk9E2.js">
|
|
37
|
-
<link rel="modulepreload" crossorigin href="/assets/account-store-
|
|
38
|
+
<link rel="modulepreload" crossorigin href="/assets/account-store-Bbb4tBjB.js">
|
|
38
39
|
<link rel="modulepreload" crossorigin href="/assets/telemetry-CKoAhRMv.js">
|
|
39
40
|
<link rel="modulepreload" crossorigin href="/assets/tray-follower-status-BAjnN7Ar.js">
|
|
40
41
|
<link rel="modulepreload" crossorigin href="/assets/clipboard-eqmn97SP.js">
|
package/dist/ui/llm-proxy-sw.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";(()=>{var P="slicc.bridge.v1.",B="bridgeToken",Y="bridge",H="X-Bridge-Token";var G="role";function j(e){if(!e)return!1;let t=e.startsWith("[")&&e.endsWith("]")?e.slice(1,-1):e;return!!(t==="localhost"||t==="::1"||/^127(\.\d{1,3}){3}$/.test(t))}function h(e){if(!e)return{};let t={};for(let[n,r]of Object.entries(e)){let s=n.toLowerCase();s==="cookie"?t["X-Proxy-Cookie"]=r:s==="origin"?t["X-Proxy-Origin"]=r:s==="referer"?t["X-Proxy-Referer"]=r:s.startsWith("proxy-")?t[`X-Proxy-${n}`]=r:t[n]=r}return t}var Ce="X-Proxy-Www-Authenticate";function b(e){let t={};for(let[n,r]of Object.entries(e)){let s=n.toLowerCase();s==="x-proxy-set-cookie"?t["set-cookie"]=r:s===Ce.toLowerCase()?t["www-authenticate"]=r:t[n]=r}return t}var Ne="slicc-sync-fs-";function W(e){return Ne+e}var X="sync-fs-nonce",q="sync-fs-need-nonce",x="/__slicc/fs-sync/";var w="/__slicc/exec-sync",v="x-slicc-fs-token",S="x-slicc-fs-errno",g="x-slicc-fs",C="x-slicc-fs-no-responder",$="sync-fs-req",z="sync-fs-ack",Q="sync-fs-res",V=25e3,K=2e3,J=12e4,U=6e5,Z=2e3;var ke=new Set([101,103,204,205,304]);function Ae(e){let t=atob(e),n=new Uint8Array(t.length);for(let r=0;r<t.length;r++)n[r]=t.charCodeAt(r);return n}function ee(e){let t,n,r=new Promise((o,c)=>{t=o,n=c}),s=null,i=new ReadableStream({start(o){s=o}}),a=!1,p=!1,y=()=>{try{s?.close()}catch{}},E=o=>{try{s?.error(o)}catch{}},d=o=>{if(a)return;a=!0;let c=new Headers;for(let[R,_]of Object.entries(b(o.headers)))c.set(R,_);let m=ke.has(o.status)?null:i;t(new Response(m,{status:o.status,statusText:o.statusText,headers:c}))},u=o=>{p=!0;let c=new Error(o.error);a?E(c):n(c),e.close?.()};return e.onmessage=o=>{let c=o.data;!c||typeof c.type!="string"||p||(c.type==="response-head"?d(c):c.type==="response-chunk"?s?.enqueue(Ae(c.dataBase64)):c.type==="response-end"?(p=!0,y(),e.close?.()):c.type==="response-error"&&u(c))},e.start?.(),{responsePromise:r}}var Te=new Set([101,103,204,205,304]);function M(e){let t=Te.has(e.status)?null:e.body;return new Response(t,{status:e.status,statusText:e.statusText,headers:e.headers})}var te="slicc",ne="leader";function be(e){try{let t=new URL(e);return`${t.protocol==="wss:"?"https:":"http:"}//${t.host}`}catch{return null}}function ve(e){try{let t=new URL(e);return`${t.protocol}//${t.host}/licks-ws`}catch{return null}}function re(e){let t;try{t=new URLSearchParams(e)}catch{return null}let n=t.get(Y),r=t.get(B);if(!n||!r||!/^wss?:\/\//.test(n))return null;let s;try{s=new URL(n).hostname}catch{return null}if(!j(s))return null;let i=t.get(G),a=i==="leader"||i==="follower"?i:null;return{url:n,subprotocol:`${P}${r}`,token:r,apiBaseUrl:be(n),lickWsUrl:ve(n),role:a}}var Ue="slicc:bridge-config";function se(e,t){if(e?.apiBaseUrl&&e.token)return{apiBaseUrl:e.apiBaseUrl.replace(/\/+$/,""),token:e.token};if(!t)return null;let n;try{n=new URL(t)}catch{return null}let r=re(n.search);return r?.apiBaseUrl?{apiBaseUrl:r.apiBaseUrl.replace(/\/+$/,""),token:r.token}:null}function oe(e,t){if(e?.apiBaseUrl&&e.token)return se(e,null);for(let n of t){let r=se(null,n);if(r)return r}return null}function ie(e,t){return t?`${t.apiBaseUrl}${e}`:e}function ae(e,t){let n,r;try{n=new URL(t),r=new URL(e)}catch{return!1}return r.origin===n.origin&&r.pathname.startsWith("/api/")}function ce(e){return!e||typeof e!="object"?!1:e.type===Ue}var N=class{byClient=new Map;set(t,n){if(t){if(!n.apiBaseUrl||!n.token){this.byClient.delete(t);return}this.byClient.set(t,{apiBaseUrl:n.apiBaseUrl.replace(/\/+$/,""),token:n.token})}}get(t){return t?this.byClient.get(t)??null:null}delete(t){this.byClient.delete(t)}size(){return this.byClient.size}},Me="slicc:extension-delegate-config",le="slicc:ext-fetch";function ue(e){return!e||typeof e!="object"?!1:e.type===Me}function O(e){if(!e)return null;let t;try{t=new URL(e)}catch{return null}if(t.searchParams.get(te)!==ne)return null;let n=t.searchParams.get("ext");return n?{extensionId:n}:null}function de(e,t){if(e?.extensionId)return{extensionId:e.extensionId};for(let n of t){let r=O(n);if(r)return r}return null}var F=class{byClient=new Map;set(t,n){if(t){if(!n.extensionId){this.byClient.delete(t);return}this.byClient.set(t,{extensionId:n.extensionId})}}get(t){return t?this.byClient.get(t)??null:null}delete(t){this.byClient.delete(t)}size(){return this.byClient.size}},Oe=new Set(["image","font","style","video","audio","track","iframe","object","embed"]);function fe(e){return Oe.has(e)}function D(e){let t=e;return t?.type==="window"&&t.frameType==="top-level"}function k(e){return D(e)}function A(e){return e.filter(k)}function pe(){let e=[];return{notify(){let t=e;e=[];for(let n of t)n()},wait(t){return new Promise(n=>{let r=!1,s=()=>{r||(r=!0,clearTimeout(i),e=e.filter(a=>a!==s),n())},i=setTimeout(s,t);e.push(s)})}}}var I="exec";function ye(e){if(e===void 0)return;if(e===null||typeof e!="object"||Array.isArray(e))return{errno:"EINVAL",message:"sync-exec: env must be an object"};let t={};for(let[n,r]of Object.entries(e))if(r!==void 0){if(typeof r!="string")return{errno:"EINVAL",message:`sync-exec: env[${n}] must be a string`};t[n]=r}return{ok:!0,env:t}}function ge(e,t){return typeof e!="number"||!Number.isFinite(e)||e<=0?Math.min(t,U):Math.min(e,U)}var Ie=V,Le=200,Pe=1e4,Be=new Set(["stat","lstat","readdir","exists"]),Ye=new Set(["mkdir","rm"]);function He(e){return Ge(e)?ge(e.timeoutMs,J)+Z:Ie}function Ge(e){return e.channel===I}function je(e){switch(e){case"ENOENT":return 404;case"EACCES":return 403;case"EISDIR":case"ENOTDIR":case"EINVAL":return 400;case"EIO":return 503;default:return 500}}async function We(e){if(e.method!=="POST")return null;let t;try{let a=await e.arrayBuffer();t=JSON.parse(new TextDecoder().decode(new Uint8Array(a)))}catch{return null}if(!t||typeof t!="object")return null;let n=t,r=n.command;if(!(typeof r=="string"||Array.isArray(r)&&r.every(a=>typeof a=="string"))||n.cwd!==void 0&&typeof n.cwd!="string")return null;let i=n.env===void 0?void 0:ye(n.env);return i!==void 0&&"errno"in i?null:{token:e.headers.get(v)??"",channel:I,command:r,...Array.isArray(n.args)&&n.args.every(a=>typeof a=="string")?{args:n.args}:{},...typeof n.stdin=="string"?{stdin:n.stdin}:{},...typeof n.timeoutMs=="number"?{timeoutMs:n.timeoutMs}:{},...typeof n.cwd=="string"?{cwd:n.cwd}:{},...i!==void 0?{env:i.env}:{}}}async function Ee(e){let t=new URL(e.url);if(t.pathname===w)return We(e);if(!t.pathname.startsWith(x))return null;let n=t.pathname.slice(x.length-1),r;try{r=n.split("/").map(decodeURIComponent).join("/")}catch{return null}let s=e.headers.get(v)??"",i=t.searchParams.get("op");if(e.method==="POST"){if(i&&Ye.has(i))return{token:s,op:i,path:r};let a=await e.arrayBuffer();return{token:s,op:"write",path:r,body:new Uint8Array(a)}}return i&&Be.has(i)?{token:s,op:i,path:r}:{token:s,op:"read",path:r}}function Xe(e){if(!e.ok){let n=e.errno??"EIO";return new Response(e.message??n,{status:je(n),headers:{[S]:n,[g]:"1"}})}if(e.kind==="json")return new Response(JSON.stringify(e.json??null),{status:200,headers:{"content-type":"application/json",[g]:"1"}});let t=e.kind==="bytes"?new Uint8Array(e.bytes):new Uint8Array(0);return new Response(t,{status:200,headers:{"content-type":"application/octet-stream",[g]:"1"}})}function me(e,t,n={}){let r=n.timeoutMs??He(t),s=n.retryIntervalMs??Le,i=Math.min(n.noResponderMs??Pe,r),a=crypto.randomUUID();return new Promise(p=>{let y=!1,E=!1,d,u,o,c=()=>{for(let l of e)l.removeEventListener("message",R);d&&clearInterval(d),u&&clearTimeout(u),o&&clearTimeout(o)},m=l=>{E||(E=!0,c(),p(l))},R=l=>{let f=l.data;if(!(!f||f.id!==a)){if(f.type===z){y=!0,d&&clearInterval(d),o&&clearTimeout(o);return}f.type===Q&&m(Xe(f))}};for(let l of e)l.addEventListener("message",R);let _=()=>{for(let l of e)l.postMessage({type:$,id:a,...t})};_(),d=setInterval(()=>{y||_()},s),o=setTimeout(()=>{y||m(new Response("sync-fs bridge: no responder",{status:503,headers:{[S]:"EIO",[g]:"1",[C]:"1"}}))},i),u=setTimeout(()=>{m(new Response("sync-fs bridge timeout",{status:503,headers:{[S]:"EIO",[g]:"1"}}))},r)})}var qe="/api/fetch-proxy",T="x-bypass-llm-proxy",xe=new N,he=new F,$e=32*1024*1024;self.importScripts("/preview-sw.js");self.addEventListener("install",e=>{e.waitUntil(self.skipWaiting())});self.addEventListener("activate",e=>{e.waitUntil(self.clients.claim())});self.addEventListener("message",e=>{let t=e.source;if(!t||!("id"in t)||typeof t.id!="string")return;if(ce(e.data)&&k(t)){xe.set(t.id,{apiBaseUrl:e.data.apiBaseUrl,token:e.data.token});return}if(ue(e.data)&&k(t)){he.set(t.id,{extensionId:e.data.extensionId});return}let n=e.data;if(n?.type===X&&typeof n.nonce=="string"){D(t)&&ze(n.nonce);return}});self.addEventListener("fetch",e=>{let t=e.request;if(t.headers.get(T)==="1"||fe(t.destination))return;let n;try{n=new URL(t.url)}catch{return}n.origin!==self.location.origin&&(n.protocol!=="http:"&&n.protocol!=="https:"||e.respondWith(Qe(t,e.clientId||null)))});var L=new Map,we=pe();function Se(){return[...L.values()]}function ze(e){L.has(e)||(L.set(e,new BroadcastChannel(W(e))),we.notify())}async function Re(){let e=await self.clients.matchAll({type:"window"}),t={type:q};for(let n of e)n.postMessage(t)}self.addEventListener("fetch",e=>{let t=new URL(e.request.url);t.origin===self.location.origin&&(!t.pathname.startsWith(x)&&t.pathname!==w||e.respondWith((async()=>{let n=await Ee(e.request);if(!n)return new Response("sync bridge: malformed request",{status:400,headers:{[S]:"EINVAL",[g]:"1"}});let r=Se();if(r.length===0&&(Re(),await we.wait(K),r=Se(),r.length===0))return new Response("sync-fs bridge not ready",{status:503,headers:{[S]:"EIO",[g]:"1"}});let s=await me(r,n);return s.headers.get(C)==="1"&&Re(),s})()))});async function Qe(e,t){let n=e.url,r={};e.headers.forEach((l,f)=>{f.toLowerCase()!==T&&(r[f]=l)});let s=h(r),i=new Headers;for(let[l,f]of Object.entries(s))i.set(l,f);i.set("X-Target-URL",n);let a=xe.get(t),p=he.get(t),y=await Ve(t),E=a||p?[]:await Ke(),d=[y,...E],u=de(p,d);if(u){let l=await Je();if(l)return et(e,u,l,n)}let o=oe(a,d);if(o&&ae(e.url,o.apiBaseUrl)){let l=new Headers(e.headers);l.set(T,"1");let f={method:e.method,headers:l,cache:"no-store",credentials:e.credentials,redirect:"manual",signal:e.signal,body:await _e(e)};return M(await fetch(e.url,f))}o&&i.set(H,o.token);let c=ie(qe,o),m=await _e(e),R={method:e.method,headers:i,cache:"no-store",credentials:"omit",redirect:"manual",signal:e.signal,body:m},_=await fetch(c,R);return M(_)}async function _e(e){if(e.method==="GET"||e.method==="HEAD")return;let t=await e.arrayBuffer();return t.byteLength>0?t:void 0}async function Ve(e){if(!e)return null;try{let t=await self.clients.get(e);return A(t?[t]:[])[0]?.url??null}catch{return null}}async function Ke(){try{let e=await self.clients.matchAll({type:"window",includeUncontrolled:!0});return A(e).map(t=>t.url).filter(t=>!!t)}catch{return[]}}async function Je(){try{let e=A(await self.clients.matchAll({type:"window",includeUncontrolled:!0}));return e.length===0?null:e.find(n=>O(n.url)!==null)??e[0]}catch{return null}}function Ze(e){let t="";for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return btoa(t)}async function et(e,t,n,r){let s={};e.headers.forEach((u,o)=>{o.toLowerCase()!==T&&(s[o]=u)});let i=h(s),a,p=!1;if(e.method!=="GET"&&e.method!=="HEAD"){let u=await e.arrayBuffer();u.byteLength>$e?p=!0:u.byteLength>0&&(a=Ze(new Uint8Array(u)))}let y=new MessageChannel,{responsePromise:E}=ee(y.port1),d={type:le,requestId:tt(),extensionId:t.extensionId,request:{url:r,method:e.method,headers:i,bodyBase64:a,requestBodyTooLarge:p}};return n.postMessage(d,[y.port2]),E}function tt(){let e=globalThis.crypto;return e&&typeof e.randomUUID=="function"?e.randomUUID():`${Date.now()}-${Math.random().toString(36).slice(2)}`}})();
|
|
1
|
+
"use strict";(()=>{var P="slicc.bridge.v1.",B="bridgeToken",Y="bridge",H="X-Bridge-Token";var G="role";function j(e){if(!e)return!1;let t=e.startsWith("[")&&e.endsWith("]")?e.slice(1,-1):e;return!!(t==="localhost"||t==="::1"||/^127(\.\d{1,3}){3}$/.test(t))}function h(e){if(!e)return{};let t={};for(let[n,r]of Object.entries(e)){let s=n.toLowerCase();s==="cookie"?t["X-Proxy-Cookie"]=r:s==="origin"?t["X-Proxy-Origin"]=r:s==="referer"?t["X-Proxy-Referer"]=r:s.startsWith("proxy-")?t[`X-Proxy-${n}`]=r:t[n]=r}return t}var ke="X-Proxy-Www-Authenticate";function T(e){let t={};for(let[n,r]of Object.entries(e)){let s=n.toLowerCase();s==="x-proxy-set-cookie"?t["set-cookie"]=r:s===ke.toLowerCase()?t["www-authenticate"]=r:t[n]=r}return t}var Ce="slicc-sync-fs-";function X(e){return Ce+e}var W="sync-fs-nonce",$="sync-fs-need-nonce",x="/__slicc/fs-sync/";var w="/__slicc/exec-sync",M="x-slicc-fs-token",S="x-slicc-fs-errno",g="x-slicc-fs",k="x-slicc-fs-no-responder",q="sync-fs-req",z="sync-fs-ack",V="sync-fs-res",Q=25e3,K=2e3,J=12e4,U=6e5,Z=2e3;var Fe=new Set([101,103,204,205,304]);function be(e){let t=atob(e),n=new Uint8Array(t.length);for(let r=0;r<t.length;r++)n[r]=t.charCodeAt(r);return n}function ee(e){let t,n,r=new Promise((i,c)=>{t=i,n=c}),s=null,o=new ReadableStream({start(i){s=i}}),a=!1,l=!1,p=()=>{try{s?.close()}catch{}},m=i=>{try{s?.error(i)}catch{}},f=i=>{if(a)return;a=!0;let c=new Headers;for(let[R,_]of Object.entries(T(i.headers)))c.set(R,_);let E=Fe.has(i.status)?null:o;t(new Response(E,{status:i.status,statusText:i.statusText,headers:c}))},d=i=>{l=!0;let c=new Error(i.error);a?m(c):n(c),e.close?.()};return e.onmessage=i=>{let c=i.data;!c||typeof c.type!="string"||l||(c.type==="response-head"?f(c):c.type==="response-chunk"?s?.enqueue(be(c.dataBase64)):c.type==="response-end"?(l=!0,p(),e.close?.()):c.type==="response-error"&&d(c))},e.start?.(),{responsePromise:r}}var Ae=new Set([101,103,204,205,304]);function v(e){let t=Ae.has(e.status)?null:e.body;return new Response(t,{status:e.status,statusText:e.statusText,headers:e.headers})}var te="slicc",ne="leader";function Te(e){try{let t=new URL(e);return`${t.protocol==="wss:"?"https:":"http:"}//${t.host}`}catch{return null}}function Me(e){try{let t=new URL(e);return`${t.protocol}//${t.host}/licks-ws`}catch{return null}}function re(e){let t;try{t=new URLSearchParams(e)}catch{return null}let n=t.get(Y),r=t.get(B);if(!n||!r||!/^wss?:\/\//.test(n))return null;let s;try{s=new URL(n).hostname}catch{return null}if(!j(s))return null;let o=t.get(G),a=o==="leader"||o==="follower"?o:null;return{url:n,subprotocol:`${P}${r}`,token:r,apiBaseUrl:Te(n),lickWsUrl:Me(n),role:a}}var Ue="slicc:bridge-config";function se(e,t){if(e?.apiBaseUrl&&e.token)return{apiBaseUrl:e.apiBaseUrl.replace(/\/+$/,""),token:e.token};if(!t)return null;let n;try{n=new URL(t)}catch{return null}let r=re(n.search);return r?.apiBaseUrl?{apiBaseUrl:r.apiBaseUrl.replace(/\/+$/,""),token:r.token}:null}function oe(e,t){if(e?.apiBaseUrl&&e.token)return se(e,null);for(let n of t){let r=se(null,n);if(r)return r}return null}function ie(e,t){return t?`${t.apiBaseUrl}${e}`:e}function ae(e,t){let n,r;try{n=new URL(t),r=new URL(e)}catch{return!1}return r.origin===n.origin&&r.pathname.startsWith("/api/")}function ce(e){return!e||typeof e!="object"?!1:e.type===Ue}var C=class{byClient=new Map;set(t,n){if(t){if(!n.apiBaseUrl||!n.token){this.byClient.delete(t);return}this.byClient.set(t,{apiBaseUrl:n.apiBaseUrl.replace(/\/+$/,""),token:n.token})}}get(t){return t?this.byClient.get(t)??null:null}delete(t){this.byClient.delete(t)}size(){return this.byClient.size}},ve="slicc:extension-delegate-config",ue="slicc:ext-fetch";function le(e){return!e||typeof e!="object"?!1:e.type===ve}function O(e){if(!e)return null;let t;try{t=new URL(e)}catch{return null}if(t.searchParams.get(te)!==ne)return null;let n=t.searchParams.get("ext");return n?{extensionId:n}:null}function de(e,t){if(e?.extensionId)return{extensionId:e.extensionId};for(let n of t){let r=O(n);if(r)return r}return null}var N=class{byClient=new Map;set(t,n){if(t){if(!n.extensionId){this.byClient.delete(t);return}this.byClient.set(t,{extensionId:n.extensionId})}}get(t){return t?this.byClient.get(t)??null:null}delete(t){this.byClient.delete(t)}size(){return this.byClient.size}},Oe=new Set(["image","font","style","video","audio","track","iframe","object","embed"]);function fe(e){return Oe.has(e)}function D(e){let t=e;return t?.type==="window"&&t.frameType==="top-level"}function F(e){return D(e)}function b(e){return e.filter(F)}function ye(){let e=[];return{notify(){let t=e;e=[];for(let n of t)n()},wait(t){return new Promise(n=>{let r=!1,s=()=>{r||(r=!0,clearTimeout(o),e=e.filter(a=>a!==s),n())},o=setTimeout(s,t);e.push(s)})}}}var I="exec";function pe(e){if(e===void 0)return;if(e===null||typeof e!="object"||Array.isArray(e))return{errno:"EINVAL",message:"sync-exec: env must be an object"};let t={};for(let[n,r]of Object.entries(e))if(r!==void 0){if(typeof r!="string")return{errno:"EINVAL",message:`sync-exec: env[${n}] must be a string`};t[n]=r}return{ok:!0,env:t}}function ge(e,t){return typeof e!="number"||!Number.isFinite(e)||e<=0?Math.min(t,U):Math.min(e,U)}var Ie=Q,Le=200,Pe=1e4,Be=new Set(["stat","lstat","readdir","exists","readlink"]),Ye=new Set(["mkdir","rm"]),He=new Set(["rename","unlink","rmdir","symlink","chmod","utimes"]);function Ge(e){let t;try{t=e.byteLength?JSON.parse(new TextDecoder().decode(e)):null}catch{return{}}if(!t||typeof t!="object")return{};let n=l=>typeof l=="number"&&Number.isFinite(l)?l:void 0,r=typeof t.arg2=="string"?t.arg2:void 0,s=n(t.mode),o=n(t.atimeMs),a=n(t.mtimeMs);return{...r!==void 0?{arg2:r}:{},...s!==void 0?{mode:s}:{},...o!==void 0?{atimeMs:o}:{},...a!==void 0?{mtimeMs:a}:{}}}function je(e){return Xe(e)?ge(e.timeoutMs,J)+Z:Ie}function Xe(e){return e.channel===I}function We(e){switch(e){case"ENOENT":return 404;case"EACCES":return 403;case"EISDIR":case"ENOTDIR":case"EINVAL":return 400;case"EIO":return 503;default:return 500}}async function $e(e){if(e.method!=="POST")return null;let t;try{let a=await e.arrayBuffer();t=JSON.parse(new TextDecoder().decode(new Uint8Array(a)))}catch{return null}if(!t||typeof t!="object")return null;let n=t,r=n.command;if(!(typeof r=="string"||Array.isArray(r)&&r.every(a=>typeof a=="string"))||n.cwd!==void 0&&typeof n.cwd!="string")return null;let o=n.env===void 0?void 0:pe(n.env);return o!==void 0&&"errno"in o?null:{token:e.headers.get(M)??"",channel:I,command:r,...Array.isArray(n.args)&&n.args.every(a=>typeof a=="string")?{args:n.args}:{},...typeof n.stdin=="string"?{stdin:n.stdin}:{},...typeof n.timeoutMs=="number"?{timeoutMs:n.timeoutMs}:{},...typeof n.cwd=="string"?{cwd:n.cwd}:{},...o!==void 0?{env:o.env}:{}}}async function me(e){let t=new URL(e.url);if(t.pathname===w)return $e(e);if(!t.pathname.startsWith(x))return null;let n=t.pathname.slice(x.length-1),r;try{r=n.split("/").map(decodeURIComponent).join("/")}catch{return null}let s=e.headers.get(M)??"",o=t.searchParams.get("op");if(e.method==="POST"){if(o&&Ye.has(o))return{token:s,op:o,path:r};let a=await e.arrayBuffer();return o&&He.has(o)?{token:s,op:o,path:r,...Ge(a)}:{token:s,op:"write",path:r,body:new Uint8Array(a)}}return o&&Be.has(o)?{token:s,op:o,path:r}:{token:s,op:"read",path:r}}function qe(e){if(!e.ok){let n=e.errno??"EIO";return new Response(e.message??n,{status:We(n),headers:{[S]:n,[g]:"1"}})}if(e.kind==="json")return new Response(JSON.stringify(e.json??null),{status:200,headers:{"content-type":"application/json",[g]:"1"}});let t=e.kind==="bytes"?new Uint8Array(e.bytes):new Uint8Array(0);return new Response(t,{status:200,headers:{"content-type":"application/octet-stream",[g]:"1"}})}function Ee(e,t,n={}){let r=n.timeoutMs??je(t),s=n.retryIntervalMs??Le,o=Math.min(n.noResponderMs??Pe,r),a=crypto.randomUUID();return new Promise(l=>{let p=!1,m=!1,f,d,i,c=()=>{for(let u of e)u.removeEventListener("message",R);f&&clearInterval(f),d&&clearTimeout(d),i&&clearTimeout(i)},E=u=>{m||(m=!0,c(),l(u))},R=u=>{let y=u.data;if(!(!y||y.id!==a)){if(y.type===z){p=!0,f&&clearInterval(f),i&&clearTimeout(i);return}y.type===V&&E(qe(y))}};for(let u of e)u.addEventListener("message",R);let _=()=>{for(let u of e)u.postMessage({type:q,id:a,...t})};_(),f=setInterval(()=>{p||_()},s),i=setTimeout(()=>{p||E(new Response("sync-fs bridge: no responder",{status:503,headers:{[S]:"EIO",[g]:"1",[k]:"1"}}))},o),d=setTimeout(()=>{E(new Response("sync-fs bridge timeout",{status:503,headers:{[S]:"EIO",[g]:"1"}}))},r)})}var ze="/api/fetch-proxy",A="x-bypass-llm-proxy",xe=new C,he=new N,Ve=32*1024*1024;self.importScripts("/preview-sw.js");self.addEventListener("install",e=>{e.waitUntil(self.skipWaiting())});self.addEventListener("activate",e=>{e.waitUntil(self.clients.claim())});self.addEventListener("message",e=>{let t=e.source;if(!t||!("id"in t)||typeof t.id!="string")return;if(ce(e.data)&&F(t)){xe.set(t.id,{apiBaseUrl:e.data.apiBaseUrl,token:e.data.token});return}if(le(e.data)&&F(t)){he.set(t.id,{extensionId:e.data.extensionId});return}let n=e.data;if(n?.type===W&&typeof n.nonce=="string"){D(t)&&Qe(n.nonce);return}});self.addEventListener("fetch",e=>{let t=e.request;if(t.headers.get(A)==="1"||fe(t.destination))return;let n;try{n=new URL(t.url)}catch{return}n.origin!==self.location.origin&&(n.protocol!=="http:"&&n.protocol!=="https:"||e.respondWith(Ke(t,e.clientId||null)))});var L=new Map,we=ye();function Se(){return[...L.values()]}function Qe(e){L.has(e)||(L.set(e,new BroadcastChannel(X(e))),we.notify())}async function Re(){let e=await self.clients.matchAll({type:"window"}),t={type:$};for(let n of e)n.postMessage(t)}self.addEventListener("fetch",e=>{let t=new URL(e.request.url);t.origin===self.location.origin&&(!t.pathname.startsWith(x)&&t.pathname!==w||e.respondWith((async()=>{let n=await me(e.request);if(!n)return new Response("sync bridge: malformed request",{status:400,headers:{[S]:"EINVAL",[g]:"1"}});let r=Se();if(r.length===0&&(Re(),await we.wait(K),r=Se(),r.length===0))return new Response("sync-fs bridge not ready",{status:503,headers:{[S]:"EIO",[g]:"1"}});let s=await Ee(r,n);return s.headers.get(k)==="1"&&Re(),s})()))});async function Ke(e,t){let n=e.url,r={};e.headers.forEach((u,y)=>{y.toLowerCase()!==A&&(r[y]=u)});let s=h(r),o=new Headers;for(let[u,y]of Object.entries(s))o.set(u,y);o.set("X-Target-URL",n);let a=xe.get(t),l=he.get(t),p=await Je(t),m=a||l?[]:await Ze(),f=[p,...m],d=de(l,f);if(d){let u=await et();if(u)return nt(e,d,u,n)}let i=oe(a,f);if(i&&ae(e.url,i.apiBaseUrl)){let u=new Headers(e.headers);u.set(A,"1");let y={method:e.method,headers:u,cache:"no-store",credentials:e.credentials,redirect:"manual",signal:e.signal,body:await _e(e)};return v(await fetch(e.url,y))}i&&o.set(H,i.token);let c=ie(ze,i),E=await _e(e),R={method:e.method,headers:o,cache:"no-store",credentials:"omit",redirect:"manual",signal:e.signal,body:E},_=await fetch(c,R);return v(_)}async function _e(e){if(e.method==="GET"||e.method==="HEAD")return;let t=await e.arrayBuffer();return t.byteLength>0?t:void 0}async function Je(e){if(!e)return null;try{let t=await self.clients.get(e);return b(t?[t]:[])[0]?.url??null}catch{return null}}async function Ze(){try{let e=await self.clients.matchAll({type:"window",includeUncontrolled:!0});return b(e).map(t=>t.url).filter(t=>!!t)}catch{return[]}}async function et(){try{let e=b(await self.clients.matchAll({type:"window",includeUncontrolled:!0}));return e.length===0?null:e.find(n=>O(n.url)!==null)??e[0]}catch{return null}}function tt(e){let t="";for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return btoa(t)}async function nt(e,t,n,r){let s={};e.headers.forEach((d,i)=>{i.toLowerCase()!==A&&(s[i]=d)});let o=h(s),a,l=!1;if(e.method!=="GET"&&e.method!=="HEAD"){let d=await e.arrayBuffer();d.byteLength>Ve?l=!0:d.byteLength>0&&(a=tt(new Uint8Array(d)))}let p=new MessageChannel,{responsePromise:m}=ee(p.port1),f={type:ue,requestId:rt(),extensionId:t.extensionId,request:{url:r,method:e.method,headers:o,bodyBase64:a,requestBodyTooLarge:l}};return n.postMessage(f,[p.port2]),m}function rt(){let e=globalThis.crypto;return e&&typeof e.randomUUID=="function"?e.randomUUID():`${Date.now()}-${Math.random().toString(36).slice(2)}`}})();
|
|
@@ -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-B0cbvPwD.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">
|
|
@@ -30,11 +30,12 @@
|
|
|
30
30
|
<link rel="modulepreload" crossorigin href="/assets/tool-ui-eSQ1g2I1.js">
|
|
31
31
|
<link rel="modulepreload" crossorigin href="/assets/core-zz8rWM4c.js">
|
|
32
32
|
<link rel="modulepreload" crossorigin href="/assets/bridge-protocol-C52CnDIj.js">
|
|
33
|
-
<link rel="modulepreload" crossorigin href="/assets/providers-
|
|
33
|
+
<link rel="modulepreload" crossorigin href="/assets/providers-2pihfuXe.js">
|
|
34
34
|
<link rel="modulepreload" crossorigin href="/assets/panel-rpc-B3MSVImO.js">
|
|
35
35
|
<link rel="modulepreload" crossorigin href="/assets/bedrock-camp-compat-BeCSBUrZ.js">
|
|
36
|
+
<link rel="modulepreload" crossorigin href="/assets/bedrock-camp-extra-models-WTCIjj5a.js">
|
|
36
37
|
<link rel="modulepreload" crossorigin href="/assets/claude-model-version-DZmbk9E2.js">
|
|
37
|
-
<link rel="modulepreload" crossorigin href="/assets/account-store-
|
|
38
|
+
<link rel="modulepreload" crossorigin href="/assets/account-store-Bbb4tBjB.js">
|
|
38
39
|
<link rel="modulepreload" crossorigin href="/assets/telemetry-CKoAhRMv.js">
|
|
39
40
|
<link rel="modulepreload" crossorigin href="/assets/tray-follower-status-BAjnN7Ar.js">
|
|
40
41
|
<link rel="modulepreload" crossorigin href="/assets/clipboard-eqmn97SP.js">
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e="---\nname: computer\ndescription: |\n Use this when looking at and poking a screen with SLICC's `computer`\n shell command (xdotool grammar). Covers v86 guests (`v86:<name>`),\n browser tabs (`tab:<id>`), display share (`screen:<handle>`), follower\n desktops (`ssh:<runtimeId>`), HTTP remotes (`url:<host>`), jsh-hosted\n backends, screenshot-space coordinates, frozen JPEG frames, and chaining\n click/type/key.\nallowed-tools: bash\n---\n\n# computer — look at and poke a screen\n\n`computer` is the look-then-act loop for every registered screen. Prefer it over `v86 type|key|mouse|screenshot|text` once a guest is running. `v86 start` still boots the VM and registers `v86:<name>`.\n\n## Target\n\n```bash\ncomputer ls # ids, kinds, names, titles\ncomputer use v86:arch # default for later verbs\ncomputer info # descriptor for the current target\n```\n\nResolution order: `-c` / `--computer`, else `$COMPUTER`, else last `computer use`, else the only registered computer.\n\n`-c` takes an id, the `-n` name the computer was added under, or its current title — in that order. Prefer the **id** or the **name**: `ls` shows them in separate columns because `TITLE` is whatever the surface calls itself right now (a tab republishes `document.title` on every capture), while `NAME` is fixed for the life of the registration.\n\n## Look then act\n\nEvery poke writes a frozen JPEG and prints `target: <id>` then `screen: <path>`. The extension of that path follows the bytes, so it is `.jpg` in practice and `.png` only if a backend hands back PNG the runtime could not transcode — read the extension, do not assume it. The `target:` line is the resolved computer (`-c`, `$COMPUTER`, last `use`, or the only registered one) so a later `computer screenshot` without `-c` still binds the bash-row UI. That poke frame is a transcript side effect only — it does **not** redefine the coordinate space, so never read new coordinates off it (it can come back narrower and your clicks would map to the wrong place). Run a fresh `computer screenshot` before choosing coordinates for the next click. If the frozen frame cannot be captured, the poke still exits 0 (it already happened); do not retry the same click.\n\n```bash\ncomputer screenshot # JPEG; prints WxH → wxh (scale s)\ncomputer screenshot --size high out.jpg\ncomputer text # text-mode dump when the backend supports it\n```\n\n`--size` is `low` (256), `medium` (768, default), `high` (1536), or a max width. Coordinates on later verbs are in that last `computer screenshot` (the last model-facing shot) unless `--native` — a poke's frozen frame does not update that space. `--native` is the pixel space `computer info --json` advertises (`size` / lastShot). Tab computers screenshot in device pixels; clicks are converted to CSS pixels with the tab's `devicePixelRatio` before they hit the page. A human can also click, scroll, and type in the live lightbox when the computer allows input; Escape releases. Frozen stills in the transcript never forward.\n\n## Poke (xdotool; chainable)\n\n```bash\ncomputer mousemove 120 80\ncomputer click 1 --at 120,80 # 1 left, 2 middle, 3 right\ncomputer click 120 80 # two numbers → coords, button 1\ncomputer drag 10 10 200 80\ncomputer scroll 0 -3 --at 120,80\ncomputer key ctrl+alt+Delete Return\ncomputer type hello world\ncomputer wait 400\ncomputer click 1 type hello # chain: click, then type\n```\n\nAnthropic aliases work the same: `left_click`, `right_click`, `mouse_move`, `left_click_drag`, `screenshot`, …\n\n## v86 guest\n\n```bash\nv86 start -n arch -state \"$TMPDIR/arch_state.bin.zst\" -fs9p https://i.copy.sh/arch/ -net virtio -m 512\ncomputer use v86:arch\ncomputer screenshot\ncomputer type \"uname -a\\n\"\ncomputer key Return\ncomputer record -V 5 guest.webm\n```\n\n`computer rm` unregisters `v86:<name>` and does **not** power the guest off. `v86 stop` / `kill <pid>` still does. `v86 serve` is retired — use `computer watch -c v86:<name>`.\n\n## Browser tab\n\n```bash\nplaywright-cli tab-list # pick a targetId that is not the SLICC app\ncomputer add tab <targetId> -n docs\ncomputer screenshot -c tab:<targetId>\ncomputer click 1 --at 100,80 type hello\n```\n\n`computer add tab` refuses SLICC app tabs (`sliccy.ai` leader, `?slicc=`, extension pages). Pass a URL or a CDP target id. Look at the screenshot and click what you see — screenshot-space `--at` lands on the visual target even when `devicePixelRatio` is not 1.\n\n## Display share (`screen`)\n\n```bash\ncomputer add screen -n desk # panel terminal or cone approval card\ncomputer screenshot -c screen:screen1\ncomputer record -V 10 clip.webm # timed clip from the live session\ncomputer rm screen:screen1 # stops the getDisplayMedia tracks\n```\n\n`computer add screen` needs a real user gesture (`getDisplayMedia`). Type it in the panel terminal, or run it from a cone tool call so an approval card can open the picker. `computer ls` marks a live share with `[display slot]`. Input (keyboard/mouse) is not supported. Screen share cannot come back after `jshd --enable` restore — there is no gesture at boot.\n\n`computer record` writes a clip to a VFS path (default `clip.webm`, max 60s). `screen` uses the live session recorder; v86/tab/url/jsh/ssh poll JPEG stills and pipe them through in-repo ffmpeg wasm (`-f image2pipe`). Default `--fps` is 2.\n\n## Follower desktop (`ssh`)\n\n```bash\nhost # every follower, tagged [ssh] [computer] [playwright]\nssh --list # exec-capable tray followers only\ncomputer add ssh follower-abc -n desk # view-only\ncomputer screenshot\ncomputer add ssh follower-abc --allow-input\ncomputer click 1 --at 100,80 type hello\ncomputer add ssh mac-follower --sim UDID-1 --allow-input # iOS Simulator\n```\n\nProbes at add: native ScreenCaptureKit/CGEvent when the follower advertises `capabilities.computer` (Swift launcher `sliccstart-computer`); else `screencapture` + `cliclick` (macOS), `grim`/`scrot`/`import` + `xdotool`/`ydotool` (Linux), `xcrun simctl io <udid> screenshot` + `idb ui` (`--sim`).\n\nA Mac started with `slicc <join-url> follow --computer` shows as **one** entry in `host`, tagged `[ssh] [computer]` — the CLI and the headless Sliccstart it spawned are folded by a shared `hello.pairId`. Point `computer add ssh` at that one id and it picks ScreenCaptureKit automatically. **`host` is the roster to read**: an entry tagged `[computer]` can be looked at, whether it holds the screen itself or through its paired launcher. `ssh --list` shows the exec half only, because that is the list of targets that accept commands — a capture-only `sliccstart-computer` is addressable from `host`, never from `ssh`. Without `--computer` the same Mac appears twice (a `follower-…` tagged `[ssh]` and a `sliccstart-computer` tagged `[computer]`); either works, but only the native one captures under SLICC's own screen-recording permission. Frames come back base64 in ≤3 MiB chunks over tray-exec (or `computer.native.frame` when native). `--allow-input` is a sudo hop (`kind: command`) so a phone can answer with Face ID; `computer ls` shows `[input]` or `[view-only]`. The iOS follower itself is never a driven computer (a real iPhone is out of scope).\n\n## HTTP remote (`url`)\n\n```bash\ncomputer add url http://127.0.0.1:5710 -n demo\ncomputer screenshot\ncomputer text\ncomputer type hello\n```\n\nThe remote must answer `GET /computer` with a `ComputerDescriptor`. Screenshots are `GET /computer/screenshot`; optional `GET /computer/text` (404 means none); input is `POST /computer/input`. A trailing `/computer` on the base is stripped. Live frames use `WS /computer/frames` only when the descriptor advertises `frames: \"push\"`; a failed or closed socket falls back to screenshot polling. Otherwise `computer watch` polls. The in-tree reference is node-server `--computer-demo` (same port as the `/cdp` bridge).\n\n## jsh-hosted backend\n\nA durable `.jsh` can register a computer with `require('sliccy:computer').register(...)`. `register()` subscribes to host `computer-call` events, which keeps `jshd` alive. Optional `handlers.subscribe(fps, onFrame, maxWidth)` is the `computer watch` push path. Example: `/workspace/skills/jshd/examples/fake-computer.jsh`.\n";export{e as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./py-realm-worker-A1ICPvEl.js";var t=e(((e,t)=>{t.exports={}}));export default t();
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./logger-LESFN7Hj.js";import"./proxied-fetch-CZTz7e5K.js";import{n,r}from"./panel-rpc-DVS1uJpt.js";import{n as i,o as a,t as o}from"./providers-B0rCH1pp.js";import{s,t as c}from"./api-endpoint-D8lUKmPu.js";import{i as l,n as ee,r as u}from"./compat-uEPf6-XW.js";import{a as d}from"./core-LSLY4su2.js";import{t as f}from"./secrets-bridge-client-C0Lc0mUg.js";import{i as te,r as ne,t as re}from"./bedrock-camp-compat-99DjWBHV.js";import{s as ie}from"./claude-model-version-ceOteQ2f.js";const ae=`slicc_oauth_extra_domains`;function p(e){try{let t=e.getItem(ae);if(!t)return{};let n=JSON.parse(t);if(typeof n!=`object`||!n||Array.isArray(n))return{};let r={};for(let[e,t]of Object.entries(n)){if(typeof e!=`string`||!Array.isArray(t))continue;let n=t.filter(e=>typeof e==`string`&&e.length>0);n.length>0&&(r[e]=n)}return r}catch{return{}}}function oe(e,t){try{e.setItem(ae,JSON.stringify(t))}catch(e){throw Error(`Failed to persist OAuth extras (localStorage quota exceeded?): ${e instanceof Error?e.message:String(e)}`)}}function se(e,t){let n={input:0,output:0,cacheRead:0,cacheWrite:0},r=ie(e);if(!r)return n;let i;for(let e of t.values()){let t=ie(e.id);!t||t.family!==r.family||(!i||t.major>i.major||t.major===i.major&&t.minor>i.minor)&&(i={major:t.major,minor:t.minor,cost:e.cost})}return i?.cost??n}const ce=t(`model-policy`),m=`/etc/models`;function h(){return{sections:{}}}function le(e){let t=e.indexOf(`#`);return(t===-1?e:e.slice(0,t)).trim()}function ue(e){let t=h();if(typeof e!=`string`)return t;let n=null;for(let r of e.split(/\r?\n/)){let e=le(r);if(!e)continue;let i=/^\[([^\]]+)\]$/.exec(e);if(i){n=i[1].trim(),t.sections[n]??=[];continue}if(n===null){ce.warn(`model policy entry before any [provider] section — ignored`,{entry:e});continue}let a=e.startsWith(`-`),o=a?e.slice(1).trim():e,s=o.indexOf(`:`);if(s<=0||s===o.length-1){ce.warn(`model policy entry is not provider:model — ignored`,{entry:e});continue}t.sections[n].push({providerId:o.slice(0,s).trim(),modelId:o.slice(s+1).trim(),deny:a})}return t}function g(e,t,n){return e.providerId===t?e.modelId===`*`||e.modelId===n:!1}function de(e,t){return e.sections[t]??[]}function fe(e,t,n,r){return de(e,t).some(e=>e.deny&&g(e,n,r))}function pe(e,t,n,r){let i=de(e,t);return i.some(e=>e.deny&&g(e,n,r))?!1:n===t||i.some(e=>!e.deny&&g(e,n,r))}let me=h();function he(e){me=e}function _(){return me}function ge(e,t,n){return`add \`${t}:${n}\` (or \`${t}:*\`) under \`[${e}]\` in ${m}`}var _e=e({ACCOUNTS_KEY:()=>b,__test__:()=>Ce,addAccount:()=>P,applyProviderDefaults:()=>Ee,clearAllSettings:()=>lt,clearApiKey:()=>it,clearBaseUrl:()=>st,clearSelectedProvider:()=>tt,ensureOAuthMaskReplica:()=>qe,exportProviders:()=>ct,getAccounts:()=>M,getAllAvailableModels:()=>Ae,getAllExtraOAuthDomains:()=>Fe,getAlternativeModelProviders:()=>je,getApiKey:()=>nt,getApiKeyForProvider:()=>B,getApiVersionForProvider:()=>Ze,getAvailableProviders:()=>w,getBaseUrl:()=>at,getBaseUrlForProvider:()=>V,getDeploymentForProvider:()=>Xe,getExtraOAuthDomains:()=>Me,getOAuthAccountInfo:()=>k,getProviderConfig:()=>E,getProviderModels:()=>O,getRawApiKeyForProvider:()=>z,getSelectedModelId:()=>H,getSelectedProvider:()=>U,isModelHiddenFromPicker:()=>j,isUsableOAuthMaskReplica:()=>L,logoutOAuthAccount:()=>Re,maskOAuthTokenWithRetry:()=>ze,migrateLegacyAuthOnlySelection:()=>xe,modelRunsOnProvider:()=>mt,persistOAuthMaskViaServiceWorker:()=>R,policyVisible:()=>ke,providerOffersLlmModels:()=>T,removeAccount:()=>F,resolveCurrentModel:()=>q,resolveModelById:()=>K,resolveModelByShorthand:()=>ht,resolveModelIdForScoop:()=>St,resolveModelSelectionForScoop:()=>Z,saveOAuthAccount:()=>Ye,setApiKey:()=>rt,setBaseUrl:()=>ot,setExtraOAuthDomains:()=>Ne,setExtraOAuthDomainsAsync:()=>Pe,setSelectedModelId:()=>Qe,setSelectedProvider:()=>et});const v=ee,y=u,b=`slicc_accounts`,x=`selected-model`,ve=[`slicc_provider`,`slicc_api_key`,`slicc_base_url`,`anthropic_api_key`,`api_provider`,`azure_resource`,`bedrock_region`],ye=new Set([`github`]);function S(e){let t;try{t=l()}catch{return!1}return t.includes(e)&&!a(e)}let C=!1;function be(){if(!C){C=!0;for(let e of ve)try{localStorage.removeItem(e)}catch{}xe()}}function xe(){try{let e=localStorage.getItem(x);if(e){let t=e.indexOf(`:`);if(t>0){let n=e.slice(0,t);(ye.has(n)||S(n))&&localStorage.removeItem(x)}}}catch{}try{let e=localStorage.getItem(b);if(!e)return;let t=JSON.parse(e);if(!Array.isArray(t))return;let n=t.filter(e=>!(typeof e==`object`&&e&&typeof e.providerId==`string`&&S(e.providerId)));n.length!==t.length&&localStorage.setItem(b,JSON.stringify(n))}catch{}}function Se(){C=!1}const Ce={_resetLegacyCleanup:Se};function w(){let e=l().filter(a),t=i();return[...new Set([...e,...t])].filter(e=>!o(e)?.hidden)}function T(e){try{if(O(e).length>0)return!0}catch{}try{if(u(e).length>0)return!0}catch{}let t=o(e);return!!(t?.modelOverrides&&Object.keys(t.modelOverrides).length>0)}function we(e,t){try{if(O(e).some(e=>e.id===t))return!0}catch{}try{if(u(e).some(e=>e.id===t))return!0}catch{}let n=o(e);return!!(n?.modelOverrides&&Object.hasOwn(n.modelOverrides,t))}function E(e){return o(e)||{id:e,name:e.split(`-`).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `),description:`${e} provider`,requiresApiKey:!0,requiresBaseUrl:!1}}function D(e,t){t.context_window!==void 0&&(e.contextWindow=t.context_window),t.max_tokens!==void 0&&(e.maxTokens=t.max_tokens),t.reasoning!==void 0&&(e.reasoning=t.reasoning),t.input!==void 0&&(e.input=t.input),t.cost!==void 0&&(e.cost=t.cost,e.inputCost=t.cost.input,e.outputCost=t.cost.output,e.cacheReadCost=t.cost.cacheRead,e.cacheWriteCost=t.cost.cacheWrite),t.compat!==void 0&&(e.compat={...e.compat??{},...t.compat}),t.thinkingLevelMap!==void 0&&(e.thinkingLevelMap={...e.thinkingLevelMap??{},...t.thinkingLevelMap})}function O(e){try{if(e===`bedrock-camp`){let e=re(V(`bedrock-camp`));return y(`amazon-bedrock`).filter(t=>te(t,e)).map(e=>({...e,api:`bedrock-camp-converse`,provider:`bedrock-camp`,reasoning:e.reasoning===!0&&ne(e)}))}let t=E(e);if(t.getModelIds){let n;try{n=t.getModelIds()}catch(t){return A.error(`Provider getModelIds callback failed`,{providerId:e,error:t instanceof Error?t.message:String(t)}),[]}let r=new Map;for(let e of l())try{for(let t of y(e))r.set(t.id,t)}catch{}return n.map(n=>{let i=n.api===`openai`?`openai`:`anthropic`,a=`${e}-${i}`,o=r.get(n.id),s;if(o)s={...o,api:a,provider:e};else if(s=W(e,n.id,``,a),n.name&&(s.name=n.name),i===`anthropic`){let e=se(n.id,r);s.cost=e,s.inputCost=e.input,s.outputCost=e.output,s.cacheReadCost=e.cacheRead,s.cacheWriteCost=e.cacheWrite}let c=t.modelOverrides?.[n.id];return c&&D(s,c),D(s,n),s})}if(t.isOAuth){let n=y(`anthropic`),r=`${e}-anthropic`;return n.map(n=>{let i={...n,api:r,provider:e},a=t.modelOverrides?.[n.id];return a&&D(i,a),i})}return y(e===`azure-ai-foundry`?`anthropic`:e)}catch(t){return A.error(`Failed to load models`,{providerId:e,error:t instanceof Error?t.message:String(t)}),[]}}function k(e){let t=M().find(t=>t.providerId===e);if(!t?.accessToken)return null;let n=!!t.tokenExpiresAt&&Date.now()>t.tokenExpiresAt-6e4;return{token:t.accessToken,maskedValue:t.maskedValue,expiresAt:t.tokenExpiresAt,userName:t.userName,userAvatar:t.userAvatar,scopes:t.scopes,expired:n}}const Te=Object.assign({})[`/packages/webapp/providers.json`]??[],A=t(`provider-settings`);function Ee(e=Te){if(e.length===0||M().length>0)return;let t=new Set(w());for(let n of e)if(!(!n.providerId||!n.apiKey)){if(!t.has(n.providerId)){A.warn(`Unknown provider "${n.providerId}" in providers.json — skipping`);continue}P(n.providerId,n.apiKey,n.baseUrl)}let n=e.find(e=>e.providerId&&e.apiKey&&t.has(e.providerId));n?.model&&!localStorage.getItem(x)&&localStorage.setItem(x,`${n.providerId}:${n.model}`)}const De=[/haiku/i];function j(e){return De.some(t=>t.test(e))}function Oe(e){return e.filter(e=>!j(e.id))}function ke(e,t){let n=Q();if(n===null)return e;let r=_();return e.filter(e=>!fe(r,n,t,e.id))}function Ae(){let e=M();if(e.length===0)return[];let t=new Map;for(let n of e){if(t.has(n.providerId))continue;let e=E(n.providerId);if(e.hidden||S(n.providerId))continue;let r=ke(Oe(O(n.providerId)),n.providerId);if(r.length===0)continue;let i={providerId:n.providerId,providerName:e.name,models:r};t.set(n.providerId,i)}return[...t.values()]}function je(e){return Ae().map(e=>e.providerId).filter(t=>t!==e)}function M(){be();let e=localStorage.getItem(b);if(!e)return[];try{let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>typeof e==`object`&&!!e&&typeof e.providerId==`string`&&typeof e.apiKey==`string`):[]}catch{return[]}}function Me(e){return p(localStorage)[e]??[]}function Ne(e,t){let n=p(localStorage),r=t.map(e=>e.trim()).filter(e=>e.length>0);r.length===0?delete n[e]:n[e]=r,oe(localStorage,n)}async function Pe(e,t){if(r()){Ne(e,t);return}let i=n();if(!i)throw Error(`setExtraOAuthDomainsAsync: no DOM and no panel-rpc client — cannot persist to page localStorage`);let{storeAfter:a}=await i.call(`oauth-extras-set`,{providerId:e,domains:t});try{oe(localStorage,a)}catch(t){A.warn(`worker-shim mirror failed after successful page write — reload to refresh`,{providerId:e,error:t instanceof Error?t.message:String(t)})}}function Fe(){return p(localStorage)}function Ie(e){localStorage.setItem(b,JSON.stringify(e))}async function N(e){if(r()){Ie(e);return}let t=n();if(!t)throw Error(`saveAccountsAsync: no DOM and no panel-rpc client — cannot persist to page localStorage`);let i=JSON.stringify(e),{storedJson:a}=await t.call(`save-oauth-accounts`,{accountsJson:i});try{localStorage.setItem(b,a)}catch(e){A.warn(`worker-shim mirror failed after successful page write — reload to refresh`,{error:e instanceof Error?e.message:String(e)})}}function P(e,t,n,r,i){let a=M().filter(t=>t.providerId!==e),o={providerId:e,apiKey:t};n&&(o.baseUrl=n),r&&(o.deployment=r),i&&(o.apiVersion=i),a.push(o),Ie(a)}async function Le(e){let t=d();try{if(t===`extension-direct`){let t=await new Promise(t=>{chrome.runtime.sendMessage({type:`secrets.delete`,name:`oauth.${e}.token`},n=>{chrome.runtime.lastError&&A.error(`SW secrets.delete transport failed`,{providerId:e,error:chrome.runtime.lastError.message}),t(n??{})})});t.error&&A.error(`SW secrets.delete returned error`,{providerId:e,error:t.error})}else if(t===`extension-delegate`){let t=await f(`secrets.delete`,{name:`oauth.${e}.token`});t?.error&&A.error(`Bridge secrets.delete returned error`,{providerId:e,error:t.error})}else if(t!==`connect`){let t=await fetch(s(`/api/secrets/oauth/${e}`),{method:`DELETE`,headers:c()});!t.ok&&t.status!==404&&A.warn(`OAuth replica DELETE non-ok`,{providerId:e,status:t.status})}}catch(n){A.error(`OAuth replica removal failed`,{providerId:e,topology:t,error:n instanceof Error?n.message:String(n)})}}async function F(e){let t=M().find(t=>t.providerId===e),n=E(e);t&&n?.isOAuth&&await Re(e),await Le(e),await N(M().filter(t=>t.providerId!==e));let r=localStorage.getItem(x)??``,i=r.indexOf(`:`);i>0&&r.slice(0,i)===e&&localStorage.removeItem(x)}async function Re(e){let t=M().find(t=>t.providerId===e);if(!t)return;let n=E(e);if(n?.isOAuth){if(n.onOAuthLogout)try{await n.onOAuthLogout()}catch(t){A.warn(`onOAuthLogout failed`,{providerId:e,error:t instanceof Error?t.message:String(t)})}if(n.getOAuthLogoutUrl){let r=n.getOAuthLogoutUrl(t);if(r){let{openIdpLogoutUrl:t}=await import(`./oauth-service-Gh6Z-BhZ.js`);await t(r).catch(t=>{A.warn(`IdP logout popup failed`,{providerId:e,error:t instanceof Error?t.message:String(t)})})}}await N(M().map(t=>t.providerId===e?{providerId:t.providerId,apiKey:``,baseUrl:t.baseUrl,userName:t.userName,userAvatar:t.userAvatar,loggedOut:!0}:t)),await Le(e)}}async function ze(e,t={}){let n=Math.max(1,t.attempts??3),r=t.delayMs??150,i=t.sleep??(e=>new Promise(t=>setTimeout(t,e))),a;for(let t=0;t<n;t++){let o=await e();if(o.maskedValue)return{maskedValue:o.maskedValue};o.error&&(a=o.error),t<n-1&&await i(r)}return{lastError:a}}const Be=`access token rotated during mask write`;function I(e,t,n,r){let i=r.find(t=>t.providerId===e);return i?.accessToken?i.accessToken===t?(i.maskedValue=n,{maskedValue:n}):(A.warn(`OAuth mask write raced with token rotation; discarding replica`,{providerId:e}),{error:Be}):{error:`account gone after mask write`}}function L(e,t){return!!e&&e!==t}async function R(e,t,n){let r={providerId:e.providerId,accessToken:e.accessToken,domains:e.domains.join(`,`)},{maskedValue:i,lastError:a}=await ze(()=>t.sendMaskRequest(r),n);if(!L(i,e.accessToken)){let t=i?`mask replica equals the access token`:a??`no error reported (cold SW or empty reply)`;return A.error(`OAuth mask give-up: no masked value after retries`,{providerId:e.providerId,reason:t}),{error:t}}let o=t.getAccounts(),s=I(e.providerId,e.accessToken,i,o);return s.maskedValue&&await t.saveAccounts(o),s}function Ve(e){let t=E(e).oauthTokenDomains??[],n=Me(e),r=new Set,i=[];for(let e of[...t,...n]){let t=e.toLowerCase();r.has(t)||(r.add(t),i.push(e))}return i}function He(e){return new Promise(t=>{chrome.runtime.sendMessage({type:`secrets.mask-oauth-token`,...e},n=>{chrome.runtime.lastError&&A.error(`SW mask-oauth-token transport failed`,{providerId:e.providerId,error:chrome.runtime.lastError.message});let r=typeof n==`object`&&n?n:void 0;r?.error&&A.warn(`SW mask-oauth-token returned error`,{providerId:e.providerId,error:r.error}),t(r??{})})})}function Ue(e){return f(`secrets.mask-oauth-token`,e).then(t=>(t?.error&&A.warn(`Bridge mask-oauth-token returned error`,{providerId:e.providerId,error:t.error}),t??{})).catch(t=>(A.error(`Bridge mask-oauth-token transport failed`,{providerId:e.providerId,error:t instanceof Error?t.message:String(t)}),{}))}async function We(e,t,n){let r=s(`/api/secrets/oauth-update`),i=await fetch(r,{method:`POST`,headers:c({"Content-Type":`application/json`}),body:JSON.stringify({providerId:e,accessToken:t,domains:n})});if(!i.ok)return A.warn(`OAuth replica POST non-ok`,{providerId:e,status:i.status,url:r}),{error:`OAuth replica POST HTTP ${i.status}`};let a=await i.json();if(typeof a.maskedValue!=`string`)return A.warn(`OAuth replica POST ok but missing maskedValue`,{providerId:e,url:r}),{error:`OAuth replica POST ok but missing maskedValue`};if(!L(a.maskedValue,t))return A.error(`OAuth mask replica equals the access token; refusing to persist`,{providerId:e}),{error:`mask replica equals the access token`};let o=M(),l=I(e,t,a.maskedValue,o);return l.maskedValue&&await N(o),l}async function Ge(e,t){let n=await Ke(e,t);if(n.error!==Be)return n;let r=M().find(t=>t.providerId===e)?.accessToken;return!r||r===t?n:Ke(e,r)}async function Ke(e,t){let n=Ve(e);if(n.length===0)return{error:`no oauth token domains configured`};let r=d();try{return r===`extension-direct`?R({providerId:e,accessToken:t,domains:n},{sendMaskRequest:He,getAccounts:M,saveAccounts:N}):r===`extension-delegate`?R({providerId:e,accessToken:t,domains:n},{sendMaskRequest:Ue,getAccounts:M,saveAccounts:N}):r===`connect`?{error:`no replica store in connect mode`}:await We(e,t,n)}catch(t){let n=t instanceof Error?t.message:String(t);return A.error(`OAuth replica sync failed`,{providerId:e,topology:r,error:n}),{error:n}}}async function qe(e){let t=M().find(t=>t.providerId===e);return t?.accessToken?L(t.maskedValue,t.accessToken)?{maskedValue:t.maskedValue}:Ge(e,t.accessToken):{error:`no access token held`}}function Je(e,t){if(e.accessToken)return`scopes`in e?e.scopes:t?.scopes}async function Ye(e){let t=M().find(t=>t.providerId===e.providerId),n=M().filter(t=>t.providerId!==e.providerId);n.push({providerId:e.providerId,apiKey:``,accessToken:e.accessToken,refreshToken:e.refreshToken,tokenExpiresAt:e.tokenExpiresAt,userName:e.userName,userAvatar:e.userAvatar,baseUrl:e.baseUrl??t?.baseUrl,scopes:Je(e,t)}),await N(n),await Ge(e.providerId,e.accessToken)}function z(e){let t=M().find(t=>t.providerId===e);return t&&(t.accessToken||t.apiKey)||null}function B(e){let t=M().find(t=>t.providerId===e);return t?t.accessToken||t.apiKey||(E(e).optionalApiKey?`local`:null):null}function V(e){return M().find(t=>t.providerId===e)?.baseUrl??null}function Xe(e){return M().find(t=>t.providerId===e)?.deployment??null}function Ze(e){return M().find(t=>t.providerId===e)?.apiVersion??null}function H(){let e=localStorage.getItem(x)||``,t=e.indexOf(`:`);return t>=0?e.slice(t+1):e}function Qe(e){let t=e.indexOf(`:`);if(t>0){let n=e.slice(0,t),r=new Set([...i(),...w()]),a=n.includes(`.`);if(r.has(n)||!a){localStorage.setItem(x,e);return}}let n=U();localStorage.setItem(x,`${n}:${e}`)}function $e(){return localStorage.getItem(x)||``}function U(){let e=$e(),t=e.indexOf(`:`);if(t>0)return e.slice(0,t);let n=M(),r=H();if(r){let e=n.find(e=>T(e.providerId)&&we(e.providerId,r));if(e)return e.providerId}let i=n.find(e=>T(e.providerId));return i?i.providerId:n.length>0?n[0].providerId:`anthropic`}function et(e){let t=H();localStorage.setItem(x,`${e}:${t}`)}function tt(){let e=H();localStorage.setItem(x,e)}function nt(){return B(U())}function rt(e){let t=U();P(t,e,V(t)??void 0)}async function it(){await F(U())}function at(){return V(U())}function ot(e){let t=U(),n=z(t);n&&P(t,n,e||void 0)}function st(){let e=U(),t=z(e);t&&P(e,t)}function ct(){let e=M(),t=U(),n=H();return e.map(e=>{let r={providerId:e.providerId,apiKey:e.apiKey};return e.baseUrl&&(r.baseUrl=e.baseUrl),e.providerId===t&&n&&(r.model=n),r})}async function lt(){let e=M();await Promise.allSettled(e.map(e=>F(e.providerId))),localStorage.removeItem(b),localStorage.removeItem(x);for(let e of ve)localStorage.removeItem(e)}function ut(e){return/^(?:gpt[-.]?|o[0-9]|chatgpt)/i.test(e)?`openai`:`anthropic`}function W(e,t,n,r){return{id:t,name:t,provider:e,api:r??`${e}-${ut(t)}`,baseUrl:n??``,contextWindow:2e5,maxTokens:16384,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},reasoning:!0}}function G(e,t){return t.isOAuth||e===`azure-ai-foundry`?`anthropic`:e===`bedrock-camp`?`amazon-bedrock`:e}function dt(e,t,n){let r=O(e).find(e=>e.id===t);return r?n?{...r,baseUrl:n}:r:null}function ft(e,t,n,r){return n.isOAuth?O(t).find(e=>e.id===r)||{...e,api:`${t}-anthropic`,provider:t}:t===`bedrock-camp`?{...e,api:`bedrock-camp-converse`,provider:`bedrock-camp`}:e}function pt(e,t,n,r,i){if(t.isOAuth)return dt(e,n,r)??W(e,n,r);if(i)throw Error(`Model ${n} is not available from provider ${e}`);return q()}function K(e,t){if(!e)return q();let n=t??U(),r=V(n),i=E(n);if(t!==void 0){let t=dt(n,e,r);if(t)return t}try{let t=G(n,i),a=v(t,e);if(!a?.id)throw Error(`Model ${e} not found`);let o=ft(a,n,i,e);return r?{...o,baseUrl:r}:o}catch(a){return A.debug(`resolveModelById: pi-ai lookup miss, using provider fallback`,{providerId:n,modelId:e,error:a instanceof Error?a.message:String(a)}),pt(n,i,e,r,t!==void 0)}}function mt(e,t){return e.provider===t||e.provider===G(t,E(t))}function q(){let e=U(),t=H(),n=V(e),r=O(e),i=E(e),a=i.defaultModelId?r.find(e=>e.id.toLowerCase().includes(i.defaultModelId.toLowerCase()))?.id:void 0,o=t||a||r[0]?.id||`claude-sonnet-4-6`;try{let t=G(e,i),a=v(t,o);if(!a?.id)throw Error(`Model ${o} not found in ${t} registry`);let s=a;return i.isOAuth?s=r.find(e=>e.id===o)||{...s,api:`${e}-anthropic`,provider:e}:e===`bedrock-camp`&&(s={...s,api:`bedrock-camp-converse`,provider:`bedrock-camp`}),n&&(s={...s,baseUrl:n}),s}catch(t){A.debug(`resolveCurrentModel: pi-ai lookup miss, using provider fallback`,{providerId:e,effectiveModelId:o,error:t instanceof Error?t.message:String(t)});let a=r.find(e=>e.id===o);return a?n?{...a,baseUrl:n}:a:i.isOAuth?W(e,o,n):v(`anthropic`,`claude-sonnet-4-0`)}}function ht(e){let t=e.toLowerCase();if(!t)return null;let n=null;try{n=U()}catch{}if(n!==null){let e=J(t,[n]);if(e!==null)return e}return J(t,M().map(e=>e.providerId))}function J(e,t){let n=null,r=-1;for(let i of t)for(let t of O(i)){let i=t.id.toLowerCase(),a=(t.name??``).toLowerCase();if(!i.includes(e)&&!a.includes(e))continue;let o=t.contextWindow??0;(o>r||o===r&&Ct(t.id,n??``)>0)&&(r=o,n=t.id)}return n}function Y(){let e=[];try{for(let t of M())e.includes(t.providerId)||e.push(t.providerId)}catch{}try{let t=U();e.includes(t)||e.push(t)}catch{}return e}function gt(e){let t=e.indexOf(`:`);if(t<=0||t===e.length-1)return null;let n=e.slice(0,t),r=e.slice(t+1),i=Y().includes(n);if(i)return{providerId:n,modelId:r,configured:i};let a=!1;try{a=w().includes(n)}catch{}return a?{providerId:n,modelId:r,configured:!1}:null}function X(e,t,n=!0){let r=[e],i=n?J(e.toLowerCase(),[t]):null;i!==null&&i!==e&&r.push(i);let a=[];try{a=O(t)}catch{}for(let n of r)if(!(a.length>0&&!a.some(e=>e.id===n)))try{if(K(n,t).id===n)return{modelId:n,providerId:t}}catch(r){A.debug(`selectModelFromProvider: candidate did not resolve`,{input:e,candidate:n,providerId:t,error:r instanceof Error?r.message:String(r)})}return null}function _t(e){return e.map(e=>`${e.providerId}:${e.modelId}`).join(`, `)}function Z(e){if(!e)return{ok:!1,error:`unknown model: (empty)`};let t=gt(e);if(t)return bt(e,t);let n=null;try{n=U()}catch{}if(n!==null){let t=X(e,n);if(t)return $(t)}return xt(e,n)}function Q(){try{return U()}catch{return null}}function vt(e){let t=Q();return t===null||pe(_(),t,e.providerId,e.modelId)}function yt(e){let t=Q()??`<none>`;return{ok:!1,error:`model not allowed: ${`${e.providerId}:${e.modelId}`} is blocked by ${m} while "${t}" is selected — ${ge(t,e.providerId,e.modelId)}`}}function $(e){return vt(e)?{ok:!0,selection:e}:yt(e)}function bt(e,t){if(!t.configured){let n=Y();return{ok:!1,error:`unknown model: ${e} (provider "${t.providerId}" is not configured${n.length>0?`; configured: ${n.join(`, `)}`:``})`}}let n=X(t.modelId,t.providerId);return n?$(n):{ok:!1,error:`unknown model: ${e} (provider "${t.providerId}" does not offer "${t.modelId}")`}}function xt(e,t){let n=Y().filter(e=>e!==t);for(let t of[`exact`,`shorthand`]){let r=[];for(let i of n){let n=t===`exact`?e:J(e.toLowerCase(),[i]);if(n===null)continue;let a=X(n,i,!1);a&&r.push(a)}let i=r.filter(vt);if(i.length===0&&r.length>0)return yt(r[0]);if(i.length===1)return{ok:!0,selection:i[0]};if(i.length>1)return{ok:!1,error:`ambiguous model: ${e} matches ${_t(i)} — qualify it as provider:model`}}return{ok:!1,error:`unknown model: ${e}`}}function St(e){let t=Z(e);return t.ok?t.selection.modelId:null}function Ct(e,t){let n=e.match(/\d+/g)?.map(Number)??[],r=t.match(/\d+/g)?.map(Number)??[],i=Math.max(n.length,r.length);for(let e=0;e<i;e++){let t=(n[e]??0)-(r[e]??0);if(t!==0)return t}return 0}export{se as S,Ye as _,B as a,ue as b,Xe as c,H as d,U as f,Z as g,K as h,nt as i,k as l,q as m,qe as n,Ze as o,mt as p,M as r,V as s,_e as t,O as u,m as v,he as x,h as y};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/oauth-service-C2D9b8uV.js","assets/preload-helper-Czpn1I53.js","assets/proxied-fetch-W1rZTqEQ.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/base64-ELzoYfwP.js","assets/fetch-body-1l9I58Vk.js","assets/api-endpoint-DuEQRZ4g.js","assets/runtime-env-Dlaokqg1.js","assets/panel-rpc-B3MSVImO.js","assets/permissions-surface-registry-CilCRwhh.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import"./core-zz8rWM4c.js";import{t}from"./preload-helper-Czpn1I53.js";import{i as n,n as r,r as i}from"./compat-qQM4gjF_.js";import{t as a}from"./logger-DDBAeTLF.js";import"./proxied-fetch-W1rZTqEQ.js";import{s as o,t as s}from"./api-endpoint-DuEQRZ4g.js";import{n as c}from"./float-topology-U8FF9pgZ.js";import"./secret-topology-fyLSbV8r.js";import{n as l}from"./secrets-bridge-client-9RRVsrGm.js";import{n as ee,o as te,t as u}from"./providers-B9p2VR5L.js";import{n as ne,t as re}from"./panel-rpc-B3MSVImO.js";import{i as ie,r as ae,t as oe}from"./bedrock-camp-compat-BeCSBUrZ.js";import{o as se}from"./claude-model-version-DZmbk9E2.js";var ce=`slicc_oauth_extra_domains`;function d(e){try{let t=e.getItem(ce);if(!t)return{};let n=JSON.parse(t);if(typeof n!=`object`||!n||Array.isArray(n))return{};let r={};for(let[e,t]of Object.entries(n)){if(typeof e!=`string`||!Array.isArray(t))continue;let n=t.filter(e=>typeof e==`string`&&e.length>0);n.length>0&&(r[e]=n)}return r}catch{return{}}}function le(e,t){try{e.setItem(ce,JSON.stringify(t))}catch(e){throw Error(`Failed to persist OAuth extras (localStorage quota exceeded?): ${e instanceof Error?e.message:String(e)}`)}}function ue(e,t){let n={input:0,output:0,cacheRead:0,cacheWrite:0},r=se(e);if(!r)return n;let i;for(let e of t.values()){let t=se(e.id);!t||t.family!==r.family||(!i||t.major>i.major||t.major===i.major&&t.minor>i.minor)&&(i={major:t.major,minor:t.minor,cost:e.cost})}return i?.cost??n}a(`model-policy`);var de=`/etc/models`;function fe(){return{sections:{}}}function f(e,t,n){return e.providerId===t?e.modelId===`*`||e.modelId===n:!1}function pe(e,t){return e.sections[t]??[]}function me(e,t,n,r){return pe(e,t).some(e=>e.deny&&f(e,n,r))}function he(e,t,n,r){let i=pe(e,t);return i.some(e=>e.deny&&f(e,n,r))?!1:n===t||i.some(e=>!e.deny&&f(e,n,r))}var ge=fe();function _e(){return ge}function ve(e,t,n){return`add \`${t}:${n}\` (or \`${t}:*\`) under \`[${e}]\` in ${de}`}var ye=e({ACCOUNTS_KEY:()=>h,__test__:()=>we,addAccount:()=>P,applyProviderDefaults:()=>Oe,clearAllSettings:()=>ot,clearApiKey:()=>tt,clearBaseUrl:()=>it,clearSelectedProvider:()=>Qe,ensureOAuthMaskReplica:()=>Ue,exportProviders:()=>at,getAccounts:()=>k,getAllAvailableModels:()=>O,getAllExtraOAuthDomains:()=>Me,getAlternativeModelProviders:()=>je,getApiKey:()=>$e,getApiKeyForProvider:()=>V,getApiVersionForProvider:()=>Je,getAvailableProviders:()=>b,getBaseUrl:()=>nt,getBaseUrlForProvider:()=>H,getDeploymentForProvider:()=>qe,getExtraOAuthDomains:()=>A,getOAuthAccountInfo:()=>Ee,getProviderConfig:()=>S,getProviderModels:()=>w,getRawApiKeyForProvider:()=>B,getSelectedModelId:()=>U,getSelectedProvider:()=>W,isModelHiddenFromPicker:()=>E,isUsableOAuthMaskReplica:()=>R,logoutOAuthAccount:()=>I,maskOAuthTokenWithRetry:()=>L,migrateLegacyAuthOnlySelection:()=>y,modelRunsOnProvider:()=>dt,persistOAuthMaskViaServiceWorker:()=>z,policyVisible:()=>D,providerOffersLlmModels:()=>x,removeAccount:()=>F,resolveCurrentModel:()=>J,resolveModelById:()=>q,resolveModelByShorthand:()=>ft,resolveModelIdForScoop:()=>bt,resolveModelSelectionForScoop:()=>Q,saveOAuthAccount:()=>Ge,setApiKey:()=>et,setBaseUrl:()=>rt,setExtraOAuthDomains:()=>j,setExtraOAuthDomainsAsync:()=>M,setSelectedModelId:()=>Ye,setSelectedProvider:()=>Ze}),p=r,m=i,h=`slicc_accounts`,g=`selected-model`,be=[`slicc_provider`,`slicc_api_key`,`slicc_base_url`,`anthropic_api_key`,`api_provider`,`azure_resource`,`bedrock_region`],xe=new Set([`github`]);function _(e){let t;try{t=n()}catch{return!1}return t.includes(e)&&!te(e)}var v=!1;function Se(){if(!v){v=!0;for(let e of be)try{localStorage.removeItem(e)}catch{}y()}}function y(){try{let e=localStorage.getItem(g);if(e){let t=e.indexOf(`:`);if(t>0){let n=e.slice(0,t);(xe.has(n)||_(n))&&localStorage.removeItem(g)}}}catch{}try{let e=localStorage.getItem(h);if(!e)return;let t=JSON.parse(e);if(!Array.isArray(t))return;let n=t.filter(e=>!(typeof e==`object`&&e&&typeof e.providerId==`string`&&_(e.providerId)));n.length!==t.length&&localStorage.setItem(h,JSON.stringify(n))}catch{}}function Ce(){v=!1}var we={_resetLegacyCleanup:Ce};function b(){let e=n().filter(te),t=ee();return[...new Set([...e,...t])].filter(e=>!u(e)?.hidden)}function x(e){try{if(w(e).length>0)return!0}catch{}try{if(i(e).length>0)return!0}catch{}let t=u(e);return!!(t?.modelOverrides&&Object.keys(t.modelOverrides).length>0)}function Te(e,t){try{if(w(e).some(e=>e.id===t))return!0}catch{}try{if(i(e).some(e=>e.id===t))return!0}catch{}let n=u(e);return!!(n?.modelOverrides&&Object.hasOwn(n.modelOverrides,t))}function S(e){return u(e)||{id:e,name:e.split(`-`).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `),description:`${e} provider`,requiresApiKey:!0,requiresBaseUrl:!1}}function C(e,t){t.context_window!==void 0&&(e.contextWindow=t.context_window),t.max_tokens!==void 0&&(e.maxTokens=t.max_tokens),t.reasoning!==void 0&&(e.reasoning=t.reasoning),t.input!==void 0&&(e.input=t.input),t.cost!==void 0&&(e.cost=t.cost,e.inputCost=t.cost.input,e.outputCost=t.cost.output,e.cacheReadCost=t.cost.cacheRead,e.cacheWriteCost=t.cost.cacheWrite),t.compat!==void 0&&(e.compat={...e.compat??{},...t.compat}),t.thinkingLevelMap!==void 0&&(e.thinkingLevelMap={...e.thinkingLevelMap??{},...t.thinkingLevelMap})}function w(e){try{if(e===`bedrock-camp`){let e=oe(H(`bedrock-camp`));return m(`amazon-bedrock`).filter(t=>ie(t,e)).map(e=>({...e,api:`bedrock-camp-converse`,provider:`bedrock-camp`,reasoning:e.reasoning===!0&&ae(e)}))}let t=S(e);if(t.getModelIds){let r;try{r=t.getModelIds()}catch(t){return T.error(`Provider getModelIds callback failed`,{providerId:e,error:t instanceof Error?t.message:String(t)}),[]}let i=new Map;for(let e of n())try{for(let t of m(e))i.set(t.id,t)}catch{}return r.map(n=>{let r=n.api===`openai`?`openai`:`anthropic`,a=`${e}-${r}`,o=i.get(n.id),s;if(o)s={...o,api:a,provider:e};else if(s=G(e,n.id,``,a),n.name&&(s.name=n.name),r===`anthropic`){let e=ue(n.id,i);s.cost=e,s.inputCost=e.input,s.outputCost=e.output,s.cacheReadCost=e.cacheRead,s.cacheWriteCost=e.cacheWrite}let c=t.modelOverrides?.[n.id];return c&&C(s,c),C(s,n),s})}if(t.isOAuth){let n=m(`anthropic`),r=`${e}-anthropic`;return n.map(n=>{let i={...n,api:r,provider:e},a=t.modelOverrides?.[n.id];return a&&C(i,a),i})}return m(e===`azure-ai-foundry`?`anthropic`:e)}catch(t){return T.error(`Failed to load models`,{providerId:e,error:t instanceof Error?t.message:String(t)}),[]}}function Ee(e){let t=k().find(t=>t.providerId===e);if(!t?.accessToken)return null;let n=!!t.tokenExpiresAt&&Date.now()>t.tokenExpiresAt-6e4;return{token:t.accessToken,maskedValue:t.maskedValue,expiresAt:t.tokenExpiresAt,userName:t.userName,userAvatar:t.userAvatar,scopes:t.scopes,expired:n}}var De=Object.assign({})[`/packages/webapp/providers.json`]??[],T=a(`provider-settings`);function Oe(e=De){if(e.length===0||k().length>0)return;let t=new Set(b());for(let n of e)if(!(!n.providerId||!n.apiKey)){if(!t.has(n.providerId)){T.warn(`Unknown provider "${n.providerId}" in providers.json — skipping`);continue}P(n.providerId,n.apiKey,n.baseUrl)}let n=e.find(e=>e.providerId&&e.apiKey&&t.has(e.providerId));n?.model&&!localStorage.getItem(g)&&localStorage.setItem(g,`${n.providerId}:${n.model}`)}var ke=[/haiku/i];function E(e){return ke.some(t=>t.test(e))}function Ae(e){return e.filter(e=>!E(e.id))}function D(e,t){let n=$();if(n===null)return e;let r=_e();return e.filter(e=>!me(r,n,t,e.id))}function O(){let e=k();if(e.length===0)return[];let t=new Map;for(let n of e){if(t.has(n.providerId))continue;let e=S(n.providerId);if(e.hidden||_(n.providerId))continue;let r=D(Ae(w(n.providerId)),n.providerId);if(r.length===0)continue;let i={providerId:n.providerId,providerName:e.name,models:r};t.set(n.providerId,i)}return[...t.values()]}function je(e){return O().map(e=>e.providerId).filter(t=>t!==e)}function k(){Se();let e=localStorage.getItem(h);if(!e)return[];try{let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>typeof e==`object`&&!!e&&typeof e.providerId==`string`&&typeof e.apiKey==`string`):[]}catch{return[]}}function A(e){return d(localStorage)[e]??[]}function j(e,t){let n=d(localStorage),r=t.map(e=>e.trim()).filter(e=>e.length>0);r.length===0?delete n[e]:n[e]=r,le(localStorage,n)}async function M(e,t){if(ne()){j(e,t);return}let n=re();if(!n)throw Error(`setExtraOAuthDomainsAsync: no DOM and no panel-rpc client — cannot persist to page localStorage`);let{storeAfter:r}=await n.call(`oauth-extras-set`,{providerId:e,domains:t});try{le(localStorage,r)}catch(t){T.warn(`worker-shim mirror failed after successful page write — reload to refresh`,{providerId:e,error:t instanceof Error?t.message:String(t)})}}function Me(){return d(localStorage)}function Ne(e){localStorage.setItem(h,JSON.stringify(e))}async function N(e){if(ne()){Ne(e);return}let t=re();if(!t)throw Error(`saveAccountsAsync: no DOM and no panel-rpc client — cannot persist to page localStorage`);let n=JSON.stringify(e),{storedJson:r}=await t.call(`save-oauth-accounts`,{accountsJson:n});try{localStorage.setItem(h,r)}catch(e){T.warn(`worker-shim mirror failed after successful page write — reload to refresh`,{error:e instanceof Error?e.message:String(e)})}}function P(e,t,n,r,i){let a=k().filter(t=>t.providerId!==e),o={providerId:e,apiKey:t};n&&(o.baseUrl=n),r&&(o.deployment=r),i&&(o.apiVersion=i),a.push(o),Ne(a)}async function Pe(e){let t=c();try{if(t===`extension-direct`){let t=await new Promise(t=>{chrome.runtime.sendMessage({type:`secrets.delete`,name:`oauth.${e}.token`},n=>{chrome.runtime.lastError&&T.error(`SW secrets.delete transport failed`,{providerId:e,error:chrome.runtime.lastError.message}),t(n??{})})});t.error&&T.error(`SW secrets.delete returned error`,{providerId:e,error:t.error})}else if(t===`extension-delegate`){let t=await l(`secrets.delete`,{name:`oauth.${e}.token`});t?.error&&T.error(`Bridge secrets.delete returned error`,{providerId:e,error:t.error})}else if(t!==`connect`){let t=await fetch(o(`/api/secrets/oauth/${e}`),{method:`DELETE`,headers:s()});!t.ok&&t.status!==404&&T.warn(`OAuth replica DELETE non-ok`,{providerId:e,status:t.status})}}catch(n){T.error(`OAuth replica removal failed`,{providerId:e,topology:t,error:n instanceof Error?n.message:String(n)})}}async function F(e){let t=k().find(t=>t.providerId===e),n=S(e);t&&n?.isOAuth&&await I(e),await Pe(e),await N(k().filter(t=>t.providerId!==e));let r=localStorage.getItem(g)??``,i=r.indexOf(`:`);i>0&&r.slice(0,i)===e&&localStorage.removeItem(g)}async function I(e){let n=k().find(t=>t.providerId===e);if(!n)return;let r=S(e);if(r?.isOAuth){if(r.onOAuthLogout)try{await r.onOAuthLogout()}catch(t){T.warn(`onOAuthLogout failed`,{providerId:e,error:t instanceof Error?t.message:String(t)})}if(r.getOAuthLogoutUrl){let i=r.getOAuthLogoutUrl(n);if(i){let{openIdpLogoutUrl:n}=await t(async()=>{let{openIdpLogoutUrl:e}=await import(`./oauth-service-C2D9b8uV.js`);return{openIdpLogoutUrl:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9]));await n(i).catch(t=>{T.warn(`IdP logout popup failed`,{providerId:e,error:t instanceof Error?t.message:String(t)})})}}await N(k().map(t=>t.providerId===e?{providerId:t.providerId,apiKey:``,baseUrl:t.baseUrl,userName:t.userName,userAvatar:t.userAvatar,loggedOut:!0}:t)),await Pe(e)}}async function L(e,t={}){let n=Math.max(1,t.attempts??3),r=t.delayMs??150,i=t.sleep??(e=>new Promise(t=>setTimeout(t,e))),a;for(let t=0;t<n;t++){let o=await e();if(o.maskedValue)return{maskedValue:o.maskedValue};o.error&&(a=o.error),t<n-1&&await i(r)}return{lastError:a}}var Fe=`access token rotated during mask write`;function Ie(e,t,n,r){let i=r.find(t=>t.providerId===e);return i?.accessToken?i.accessToken===t?(i.maskedValue=n,{maskedValue:n}):(T.warn(`OAuth mask write raced with token rotation; discarding replica`,{providerId:e}),{error:Fe}):{error:`account gone after mask write`}}function R(e,t){return!!e&&e!==t}async function z(e,t,n){let r={providerId:e.providerId,accessToken:e.accessToken,domains:e.domains.join(`,`)},{maskedValue:i,lastError:a}=await L(()=>t.sendMaskRequest(r),n);if(!R(i,e.accessToken)){let t=i?`mask replica equals the access token`:a??`no error reported (cold SW or empty reply)`;return T.error(`OAuth mask give-up: no masked value after retries`,{providerId:e.providerId,reason:t}),{error:t}}let o=t.getAccounts(),s=Ie(e.providerId,e.accessToken,i,o);return s.maskedValue&&await t.saveAccounts(o),s}function Le(e){let t=S(e).oauthTokenDomains??[],n=A(e),r=new Set,i=[];for(let e of[...t,...n]){let t=e.toLowerCase();r.has(t)||(r.add(t),i.push(e))}return i}function Re(e){return new Promise(t=>{chrome.runtime.sendMessage({type:`secrets.mask-oauth-token`,...e},n=>{chrome.runtime.lastError&&T.error(`SW mask-oauth-token transport failed`,{providerId:e.providerId,error:chrome.runtime.lastError.message});let r=typeof n==`object`&&n?n:void 0;r?.error&&T.warn(`SW mask-oauth-token returned error`,{providerId:e.providerId,error:r.error}),t(r??{})})})}function ze(e){return l(`secrets.mask-oauth-token`,e).then(t=>(t?.error&&T.warn(`Bridge mask-oauth-token returned error`,{providerId:e.providerId,error:t.error}),t??{})).catch(t=>(T.error(`Bridge mask-oauth-token transport failed`,{providerId:e.providerId,error:t instanceof Error?t.message:String(t)}),{}))}async function Be(e,t,n){let r=o(`/api/secrets/oauth-update`),i=await fetch(r,{method:`POST`,headers:s({"Content-Type":`application/json`}),body:JSON.stringify({providerId:e,accessToken:t,domains:n})});if(!i.ok)return T.warn(`OAuth replica POST non-ok`,{providerId:e,status:i.status,url:r}),{error:`OAuth replica POST HTTP ${i.status}`};let a=await i.json();if(typeof a.maskedValue!=`string`)return T.warn(`OAuth replica POST ok but missing maskedValue`,{providerId:e,url:r}),{error:`OAuth replica POST ok but missing maskedValue`};if(!R(a.maskedValue,t))return T.error(`OAuth mask replica equals the access token; refusing to persist`,{providerId:e}),{error:`mask replica equals the access token`};let c=k(),l=Ie(e,t,a.maskedValue,c);return l.maskedValue&&await N(c),l}async function Ve(e,t){let n=await He(e,t);if(n.error!==Fe)return n;let r=k().find(t=>t.providerId===e)?.accessToken;return!r||r===t?n:He(e,r)}async function He(e,t){let n=Le(e);if(n.length===0)return{error:`no oauth token domains configured`};let r=c();try{return r===`extension-direct`?z({providerId:e,accessToken:t,domains:n},{sendMaskRequest:Re,getAccounts:k,saveAccounts:N}):r===`extension-delegate`?z({providerId:e,accessToken:t,domains:n},{sendMaskRequest:ze,getAccounts:k,saveAccounts:N}):r===`connect`?{error:`no replica store in connect mode`}:await Be(e,t,n)}catch(t){let n=t instanceof Error?t.message:String(t);return T.error(`OAuth replica sync failed`,{providerId:e,topology:r,error:n}),{error:n}}}async function Ue(e){let t=k().find(t=>t.providerId===e);return t?.accessToken?R(t.maskedValue,t.accessToken)?{maskedValue:t.maskedValue}:Ve(e,t.accessToken):{error:`no access token held`}}function We(e,t){if(e.accessToken)return`scopes`in e?e.scopes:t?.scopes}async function Ge(e){let t=k().find(t=>t.providerId===e.providerId),n=k().filter(t=>t.providerId!==e.providerId);n.push({providerId:e.providerId,apiKey:``,accessToken:e.accessToken,refreshToken:e.refreshToken,tokenExpiresAt:e.tokenExpiresAt,userName:e.userName,userAvatar:e.userAvatar,baseUrl:e.baseUrl??t?.baseUrl,scopes:We(e,t)}),await N(n),await Ve(e.providerId,e.accessToken)}var Ke=`local`;function B(e){let t=k().find(t=>t.providerId===e);return t&&(t.accessToken||t.apiKey)||null}function V(e){let t=k().find(t=>t.providerId===e);return t?t.accessToken||t.apiKey||(S(e).optionalApiKey?Ke:null):null}function H(e){return k().find(t=>t.providerId===e)?.baseUrl??null}function qe(e){return k().find(t=>t.providerId===e)?.deployment??null}function Je(e){return k().find(t=>t.providerId===e)?.apiVersion??null}function U(){let e=localStorage.getItem(g)||``,t=e.indexOf(`:`);return t>=0?e.slice(t+1):e}function Ye(e){let t=e.indexOf(`:`);if(t>0){let n=e.slice(0,t),r=new Set([...ee(),...b()]),i=n.includes(`.`);if(r.has(n)||!i){localStorage.setItem(g,e);return}}let n=W();localStorage.setItem(g,`${n}:${e}`)}function Xe(){return localStorage.getItem(g)||``}function W(){let e=Xe(),t=e.indexOf(`:`);if(t>0)return e.slice(0,t);let n=k(),r=U();if(r){let e=n.find(e=>x(e.providerId)&&Te(e.providerId,r));if(e)return e.providerId}let i=n.find(e=>x(e.providerId));return i?i.providerId:n.length>0?n[0].providerId:`anthropic`}function Ze(e){let t=U();localStorage.setItem(g,`${e}:${t}`)}function Qe(){let e=U();localStorage.setItem(g,e)}function $e(){return V(W())}function et(e){let t=W();P(t,e,H(t)??void 0)}async function tt(){await F(W())}function nt(){return H(W())}function rt(e){let t=W(),n=B(t);n&&P(t,n,e||void 0)}function it(){let e=W(),t=B(e);t&&P(e,t)}function at(){let e=k(),t=W(),n=U();return e.map(e=>{let r={providerId:e.providerId,apiKey:e.apiKey};return e.baseUrl&&(r.baseUrl=e.baseUrl),e.providerId===t&&n&&(r.model=n),r})}async function ot(){let e=k();await Promise.allSettled(e.map(e=>F(e.providerId))),localStorage.removeItem(h),localStorage.removeItem(g);for(let e of be)localStorage.removeItem(e)}function st(e){return/^(?:gpt[-.]?|o[0-9]|chatgpt)/i.test(e)?`openai`:`anthropic`}function G(e,t,n,r){return{id:t,name:t,provider:e,api:r??`${e}-${st(t)}`,baseUrl:n??``,contextWindow:2e5,maxTokens:16384,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},reasoning:!0}}function K(e,t){return t.isOAuth||e===`azure-ai-foundry`?`anthropic`:e===`bedrock-camp`?`amazon-bedrock`:e}function ct(e,t,n){let r=w(e).find(e=>e.id===t);return r?n?{...r,baseUrl:n}:r:null}function lt(e,t,n,r){return n.isOAuth?w(t).find(e=>e.id===r)||{...e,api:`${t}-anthropic`,provider:t}:t===`bedrock-camp`?{...e,api:`bedrock-camp-converse`,provider:`bedrock-camp`}:e}function ut(e,t,n,r,i){if(t.isOAuth)return ct(e,n,r)??G(e,n,r);if(i)throw Error(`Model ${n} is not available from provider ${e}`);return J()}function q(e,t){if(!e)return J();let n=t??W(),r=H(n),i=S(n);if(t!==void 0){let t=ct(n,e,r);if(t)return t}try{let t=p(K(n,i),e);if(!t?.id)throw Error(`Model ${e} not found`);let a=lt(t,n,i,e);return r?{...a,baseUrl:r}:a}catch(a){return T.debug(`resolveModelById: pi-ai lookup miss, using provider fallback`,{providerId:n,modelId:e,error:a instanceof Error?a.message:String(a)}),ut(n,i,e,r,t!==void 0)}}function dt(e,t){return e.provider===t||e.provider===K(t,S(t))}function J(){let e=W(),t=U(),n=H(e),r=w(e),i=S(e),a=i.defaultModelId?r.find(e=>e.id.toLowerCase().includes(i.defaultModelId.toLowerCase()))?.id:void 0,o=t||a||r[0]?.id||`claude-sonnet-4-6`;try{let t=K(e,i),a=p(t,o);if(!a?.id)throw Error(`Model ${o} not found in ${t} registry`);let s=a;return i.isOAuth?s=r.find(e=>e.id===o)||{...s,api:`${e}-anthropic`,provider:e}:e===`bedrock-camp`&&(s={...s,api:`bedrock-camp-converse`,provider:`bedrock-camp`}),n&&(s={...s,baseUrl:n}),s}catch(t){T.debug(`resolveCurrentModel: pi-ai lookup miss, using provider fallback`,{providerId:e,effectiveModelId:o,error:t instanceof Error?t.message:String(t)});let a=r.find(e=>e.id===o);return a?n?{...a,baseUrl:n}:a:i.isOAuth?G(e,o,n):p(`anthropic`,`claude-sonnet-4-0`)}}function ft(e){let t=e.toLowerCase();if(!t)return null;let n=null;try{n=W()}catch{}if(n!==null){let e=Y(t,[n]);if(e!==null)return e}return Y(t,k().map(e=>e.providerId))}function Y(e,t){let n=null,r=-1;for(let i of t)for(let t of w(i)){let i=t.id.toLowerCase(),a=(t.name??``).toLowerCase();if(!i.includes(e)&&!a.includes(e))continue;let o=t.contextWindow??0;(o>r||o===r&&xt(t.id,n??``)>0)&&(r=o,n=t.id)}return n}function X(){let e=[];try{for(let t of k())e.includes(t.providerId)||e.push(t.providerId)}catch{}try{let t=W();e.includes(t)||e.push(t)}catch{}return e}function pt(e){let t=e.indexOf(`:`);if(t<=0||t===e.length-1)return null;let n=e.slice(0,t),r=e.slice(t+1),i=X().includes(n);if(i)return{providerId:n,modelId:r,configured:i};let a=!1;try{a=b().includes(n)}catch{}return a?{providerId:n,modelId:r,configured:!1}:null}function Z(e,t,n=!0){let r=[e],i=n?Y(e.toLowerCase(),[t]):null;i!==null&&i!==e&&r.push(i);let a=[];try{a=w(t)}catch{}for(let n of r)if(!(a.length>0&&!a.some(e=>e.id===n)))try{if(q(n,t).id===n)return{modelId:n,providerId:t}}catch(r){T.debug(`selectModelFromProvider: candidate did not resolve`,{input:e,candidate:n,providerId:t,error:r instanceof Error?r.message:String(r)})}return null}function mt(e){return e.map(e=>`${e.providerId}:${e.modelId}`).join(`, `)}function Q(e){if(!e)return{ok:!1,error:`unknown model: (empty)`};let t=pt(e);if(t)return vt(e,t);let n=null;try{n=W()}catch{}if(n!==null){let t=Z(e,n);if(t)return _t(t)}return yt(e,n)}function $(){try{return W()}catch{return null}}function ht(e){let t=$();return t===null||he(_e(),t,e.providerId,e.modelId)}function gt(e){let t=$()??`<none>`;return{ok:!1,error:`model not allowed: ${`${e.providerId}:${e.modelId}`} is blocked by ${de} while "${t}" is selected — ${ve(t,e.providerId,e.modelId)}`}}function _t(e){return ht(e)?{ok:!0,selection:e}:gt(e)}function vt(e,t){if(!t.configured){let n=X();return{ok:!1,error:`unknown model: ${e} (provider "${t.providerId}" is not configured${n.length>0?`; configured: ${n.join(`, `)}`:``})`}}let n=Z(t.modelId,t.providerId);return n?_t(n):{ok:!1,error:`unknown model: ${e} (provider "${t.providerId}" does not offer "${t.modelId}")`}}function yt(e,t){let n=X().filter(e=>e!==t);for(let t of[`exact`,`shorthand`]){let r=[];for(let i of n){let n=t===`exact`?e:Y(e.toLowerCase(),[i]);if(n===null)continue;let a=Z(n,i,!1);a&&r.push(a)}let i=r.filter(ht);if(i.length===0&&r.length>0)return gt(r[0]);if(i.length===1)return{ok:!0,selection:i[0]};if(i.length>1)return{ok:!1,error:`ambiguous model: ${e} matches ${mt(i)} — qualify it as provider:model`}}return{ok:!1,error:`unknown model: ${e}`}}function bt(e){let t=Q(e);return t.ok?t.selection.modelId:null}function xt(e,t){let n=e.match(/\d+/g)?.map(Number)??[],r=t.match(/\d+/g)?.map(Number)??[],i=Math.max(n.length,r.length);for(let e=0;e<i;e++){let t=(n[e]??0)-(r[e]??0);if(t!==0)return t}return 0}export{E as A,J as B,A as C,B as D,w as E,dt as F,Ge as G,ft as H,z as I,j as J,et as K,D as L,I as M,L as N,U as O,y as P,ue as Q,x as R,qe as S,S as T,bt as U,q as V,Q as W,Ye as X,M as Y,Ze as Z,V as _,Oe as a,nt as b,it as c,at as d,k as f,$e as g,je as h,P as i,R as j,W as k,Qe as l,Me as m,we as n,ot as o,O as p,rt as q,ye as r,tt as s,h as t,Ue as u,Je as v,Ee as w,H as x,b as y,F as z};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as e}from"./diagnostics-DN_idNHx.js";import{t}from"./models-BSkXF4T6.js";import{a as n}from"./compat-qQM4gjF_.js";import{a as r,i,n as a,r as o}from"./claude-model-version-DZmbk9E2.js";import{a as s,n as ee,r as c,t as l}from"./transform-messages-BsQjTIEJ.js";import{t as u}from"./temperature-support-Dd00cuZX.js";var d={id:`bedrock-camp`,name:`AWS Bedrock`,description:`Claude on AWS Bedrock via CAMP Bearer token`,requiresApiKey:!0,apiKeyPlaceholder:`ABSK...`,apiKeyEnvVar:`BEDROCK_CAMP_API_KEY`,requiresBaseUrl:!0,baseUrlPlaceholder:`https://bedrock-runtime.us-west-2.amazonaws.com`,baseUrlDescription:`Bedrock runtime endpoint from CAMP portal`,defaultModelId:`claude-opus-5`},f=/^(us|eu|global|apac|au|jp)\./,p=/\.anthropic\.claude-(opus|sonnet|haiku|fable)-(?:[4-9]|\d\d)/,m=/\.openai\.gpt-5\.6-(?:sol|terra|luna)$/,te=/bedrock-runtime(?:-fips)?\.([a-z0-9-]+)\.amazonaws\.com(?:\.cn)?$/i;function h(e){if(!e)return null;try{let{hostname:t}=new URL(e);return t.toLowerCase().match(te)?.[1]??null}catch{return null}}var ne=new Set([`ap-northeast-1`,`ap-northeast-3`]),g=new Set([`ap-southeast-2`,`ap-southeast-4`]);function _(e,t){return e===`global`?!0:e===`us`?t.startsWith(`us-`):e===`eu`?t.startsWith(`eu-`):e===`apac`?t.startsWith(`ap-`):e===`jp`?ne.has(t):e===`au`&&g.has(t)}function v(e,t){if(!f.test(e.id)||!p.test(e.id)&&!m.test(e.id))return!1;if(!t)return!0;let n=e.id.split(`.`,1)[0];return _(n,t)}function y(e,t){return u(e,t)}function b(e){return{onPayload:e.onPayload,onResponse:e.onResponse,toolChoice:e.toolChoice,thinkingDisplay:e.thinkingDisplay,interleavedThinking:e.interleavedThinking,requestMetadata:e.requestMetadata}}function x(e,t){return(t?[e,t]:[e]).flatMap(e=>{let t=e.toLowerCase();return[t,t.replace(/[\s_.:]+/g,`-`)]})}function S(e){let t=e.replace(/[^a-zA-Z0-9_-]/g,`_`);return t.length>64?t.slice(0,64):t}function C(e){return e?e.replace(/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/g,`�`):``}function w(e){let t=e;if(t.type===`text`)return{text:C(t.text)};if(t.type===`image`)return{image:P(t.mimeType??``,t.data??``)};throw Error(`Unknown user content type: ${t.type??`unknown`}`)}function T(e){return{role:`user`,content:typeof e.content==`string`?[{text:C(e.content)}]:e.content.map(w)}}function E(e,t){let n=e.thinking??``;return n.trim().length===0?null:I(t)?!e.thinkingSignature||e.thinkingSignature.trim().length===0?{text:C(n)}:{reasoningContent:{reasoningText:{text:C(n),signature:e.thinkingSignature}}}:{reasoningContent:{reasoningText:{text:C(n)}}}}function D(e,t){let n=e;switch(n.type){case`text`:return(n.text??``).trim().length===0?null:{text:C(n.text??``)};case`toolCall`:return{toolUse:{toolUseId:n.id??``,name:n.name??``,input:n.arguments??{}}};case`thinking`:return E(n,t);default:return null}}function O(e,t){if(e.content.length===0)return null;let n=[];for(let r of e.content){let e=D(r,t);e!==null&&n.push(e)}return n.length===0?null:{role:`assistant`,content:n}}function k(e){let t=e;return t.type===`image`?{image:P(t.mimeType??``,t.data??``)}:{text:C(t.text??(typeof t.json==`string`?t.json:JSON.stringify(t.json??t)))}}function A(e){return{toolResult:{toolUseId:e.toolCallId??``,content:e.content.map(k),status:e.isError?`error`:`success`}}}function j(e,t){let n=[A(e[t])],r=t+1;for(;r<e.length&&e[r].role===`toolResult`;)n.push(A(e[r])),r++;return{message:{role:`user`,content:n},nextIndex:r-1}}function M(e,t,n){if(n===`none`||!W(t)||e.length===0)return;let r=e[e.length-1];r.role===`user`&&Array.isArray(r.content)&&r.content.push(G(n))}function N(e,t,n){let r=[],i=l(e.messages,t,S);for(let e=0;e<i.length;e++){let n=i[e];if(n.role===`user`)r.push(T(n));else if(n.role===`assistant`){let e=O(n,t);e!==null&&r.push(e)}else if(n.role===`toolResult`){let{message:t,nextIndex:n}=j(i,e);r.push(t),e=n}}return M(r,t,n),r}function P(e,t){return{source:{bytes:t},format:F(e)}}function F(e){switch(e){case`image/jpeg`:case`image/jpg`:return`jpeg`;case`image/png`:return`png`;case`image/gif`:return`gif`;case`image/webp`:return`webp`;default:throw Error(`Unsupported image MIME type: ${e}`)}}function I(e){return U(e)}function L(e,t){return a(e,t)}function R(e,t){return i(e,t)}function z(e,t){return o(e,t)}function re(e,t){if(!e?.length||t===`none`)return;let n=e.map(e=>({toolSpec:{name:e.name,description:e.description,inputSchema:{json:e.parameters}}})),r;switch(t){case`auto`:r={auto:{}};break;case`any`:r={any:{}};break;default:t&&typeof t==`object`&&t.type===`tool`&&(r={tool:{name:t.name}})}return{tools:n,toolChoice:r}}function B(e,t,n){if(e===`xhigh`&&R(t,n))return`xhigh`;switch(e){case`minimal`:case`low`:return`low`;case`medium`:return`medium`;case`high`:return`high`;case`xhigh`:return z(t,n)?`max`:`high`;default:return`high`}}function V(e){if(h(e.baseUrl)?.toLowerCase().startsWith(`us-gov-`))return!0;let t=e.id.toLowerCase();return t.startsWith(`us-gov.`)||t.startsWith(`arn:aws-us-gov:`)}function H(e,t){if(!t.reasoning||!e.reasoning||!U(e))return;let n=V(e)?void 0:t.thinkingDisplay??`summarized`;if(L(e.id,e.name))return{thinking:{type:`adaptive`,...n===void 0?{}:{display:n}},output_config:{effort:B(t.reasoning,e.id,e.name)}};let r={minimal:1024,low:2048,medium:8192,high:16384,xhigh:16384},i=t.reasoning===`xhigh`?`high`:t.reasoning,a={thinking:{type:`enabled`,budget_tokens:t.thinkingBudgets?.[i]??r[t.reasoning],...n===void 0?{}:{display:n}}};return(t.interleavedThinking??!0)&&(a.anthropic_beta=[`interleaved-thinking-2025-05-14`]),a}function U(e){let t=e.id.toLowerCase(),n=e.name?.toLowerCase()??``;return t.includes(`anthropic.claude`)||t.includes(`anthropic/claude`)||n.includes(`anthropic.claude`)||n.includes(`anthropic/claude`)||n.includes(`claude`)}function W(e){return x(e.id,e.name).some(e=>e.includes(`claude`))?r(e.id,e.name):!1}function G(e){return{cachePoint:{type:`default`,...e===`long`?{ttl:`1h`}:{}}}}function K(e,t,n){if(!e)return;let r=[{text:C(e)}];return n!==`none`&&W(t)&&r.push(G(n)),r}function q(e){switch(e){case`end_turn`:case`stop_sequence`:return`stop`;case`max_tokens`:case`model_context_window_exceeded`:return`length`;case`tool_use`:return`toolUse`;default:return`error`}}function J(e,t){let n=`Bedrock CAMP API error (${e})`;return e===429?n=`Throttling error: ${n}`:e===503?n=`Service unavailable: ${n}`:e===502||e===504||e>=500?n=`Internal server error: ${n}`:e===400&&(n=`Validation error: ${n}`),`${n}: ${t}`}function Y(e,n,r,i){let a=e;i.push({type:`start`,partial:r});let o=a.output?.message;if(o?.content)for(let e=0;e<o.content.length;e++){let t=o.content[e];if(t.text!==void 0){let e={type:`text`,text:t.text};r.content.push(e);let n=r.content.length-1;i.push({type:`text_start`,contentIndex:n,partial:r}),i.push({type:`text_delta`,contentIndex:n,delta:t.text,partial:r}),i.push({type:`text_end`,contentIndex:n,content:t.text,partial:r})}else if(t.toolUse){let e={type:`toolCall`,id:t.toolUse.toolUseId||``,name:t.toolUse.name||``,arguments:t.toolUse.input||{}};r.content.push(e);let n=r.content.length-1;i.push({type:`toolcall_start`,contentIndex:n,partial:r}),i.push({type:`toolcall_end`,contentIndex:n,toolCall:e,partial:r})}else if(t.reasoningContent?.reasoningText){let e={type:`thinking`,thinking:t.reasoningContent.reasoningText.text||``,thinkingSignature:t.reasoningContent.reasoningText.signature||``};r.content.push(e);let n=r.content.length-1;i.push({type:`thinking_start`,contentIndex:n,partial:r}),i.push({type:`thinking_delta`,contentIndex:n,delta:e.thinking,partial:r}),i.push({type:`thinking_end`,contentIndex:n,content:e.thinking,partial:r})}}a.usage&&(r.usage.input=a.usage.inputTokens||0,r.usage.output=a.usage.outputTokens||0,r.usage.cacheRead=a.usage.cacheReadInputTokens||0,r.usage.cacheWrite=a.usage.cacheWriteInputTokens||0,r.usage.totalTokens=a.usage.totalTokens||r.usage.input+r.usage.output,t(n,r.usage)),r.stopReason=q(a.stopReason||`end_turn`)}function X(e){return e??`short`}function ie(e){let t={};return e.headers.forEach((e,n)=>{t[n.toLowerCase()]=e}),t}function ae(e){return{role:`assistant`,content:[],api:`bedrock-camp-converse`,provider:e.provider,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:`stop`,timestamp:Date.now()}}function oe(e,t){let n={};return t.maxTokens!==void 0&&(n.maxTokens=t.maxTokens),t.temperature!==void 0&&y(e.id,e.name)&&(n.temperature=t.temperature),n}function se(e,t,n,r){let i=K(t.systemPrompt,e,r),a=re(t.tools,n.toolChoice),o=H(e,n);return{modelId:e.id,messages:N(t,e,r),inferenceConfig:oe(e,n),...i===void 0?{}:{system:i},...a===void 0?{}:{toolConfig:a},...o===void 0?{}:{additionalModelRequestFields:o},...n.requestMetadata===void 0?{}:{requestMetadata:n.requestMetadata}}}async function ce(e,t,n){if(!n.onPayload)return e;let r=await n.onPayload(e,t);if(r===void 0)return e;if(!Z(r))throw Error(`Bedrock CAMP onPayload hook must return a converse request body`);return r}function Z(e){return typeof e!=`object`||!e?!1:`modelId`in e&&typeof e.modelId==`string`&&`messages`in e&&Array.isArray(e.messages)}async function le(e,t,n,r,i){let a={"Content-Type":`application/json`,Authorization:`Bearer ${t}`,...i.headers??{}},o=await fetch(e,{method:`POST`,headers:a,body:JSON.stringify(n),signal:i.signal});if(i.onResponse&&await i.onResponse({status:o.status,headers:ie(o)},r),!o.ok){let e=await o.text();throw Error(J(o.status,e))}return o}function ue(e,t,n,r){for(let e of t.content){let t=e;delete t.index,delete t.partialJson}t.stopReason=n.signal?.aborted?`aborted`:`error`,t.errorMessage=e instanceof Error?e.message:JSON.stringify(e),r.push({type:`error`,reason:t.stopReason,error:t}),r.end()}async function de(e,t,n,r,i){let a=n.apiKey;if(!a)throw Error(`API key is required for Bedrock CAMP`);let o=e.baseUrl;if(!o)throw Error(`Base URL is required for Bedrock CAMP`);let s=se(e,t,n,X(n.cacheRetention));if(s=await ce(s,e,n),Y(await(await le(`${o.replace(/\/$/,``)}/model/${e.id}/converse`,a,s,e,n)).json(),e,r,i),r.stopReason===`pending`)throw Error(`Bedrock CAMP response ended without a stop reason`);if(r.stopReason===`error`||r.stopReason===`aborted`)throw Error(`An unknown error occurred`);i.push({type:`done`,reason:r.stopReason,message:r}),i.end()}var Q=(t,n,r={})=>{let i=e(),a=ae(t);return fe(t,n,r,a,i).catch(e=>{ue(e,a,r,i)}),i};async function fe(e,t,n,r,i){await de(e,t,n,r,i)}var $=(e,t,n)=>{let r=c(e,t,n),i=n?b(n):{};if(!n?.reasoning)return Q(e,t,{...r,...i,reasoning:void 0});if(U(e)){if(L(e.id,e.name))return Q(e,t,{...r,...i,reasoning:n.reasoning,thinkingBudgets:n.thinkingBudgets});let a=ee(r.maxTokens||0,e.maxTokens,n.reasoning,n.thinkingBudgets);return Q(e,t,{...r,...i,maxTokens:a.maxTokens,reasoning:n.reasoning,thinkingBudgets:{...n.thinkingBudgets||{},[s(n.reasoning)]:a.budgetTokens}})}return Q(e,t,{...r,...i,reasoning:n.reasoning,thinkingBudgets:n.thinkingBudgets})};function pe(){n({api:`bedrock-camp-converse`,stream:Q,streamSimple:$})}export{h as bedrockCampRegionFromBaseUrl,d as config,v as isBedrockCampCompatible,pe as register,Q as streamBedrockCamp,$ as streamSimpleBedrockCamp};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as e}from"./diagnostics-DN_idNHx.js";import{t}from"./models-4WTk3EBD.js";import{a as n}from"./compat-uEPf6-XW.js";import{a as r,i,o as a,r as o}from"./claude-model-version-ceOteQ2f.js";import{a as s,n as ee,r as c,t as l}from"./transform-messages-Jn8bw4-u.js";import{t as u}from"./temperature-support-PjwXIa-F.js";const d={id:`bedrock-camp`,name:`AWS Bedrock`,description:`Claude on AWS Bedrock via CAMP Bearer token`,requiresApiKey:!0,apiKeyPlaceholder:`ABSK...`,apiKeyEnvVar:`BEDROCK_CAMP_API_KEY`,requiresBaseUrl:!0,baseUrlPlaceholder:`https://bedrock-runtime.us-west-2.amazonaws.com`,baseUrlDescription:`Bedrock runtime endpoint from CAMP portal`,defaultModelId:`claude-opus-5`},f=/^(us|eu|global|apac|au|jp)\./,p=/\.anthropic\.claude-(opus|sonnet|haiku|fable)-(?:[4-9]|\d\d)/,m=/\.openai\.gpt-5\.6-(?:sol|terra|luna)$/,te=/bedrock-runtime(?:-fips)?\.([a-z0-9-]+)\.amazonaws\.com(?:\.cn)?$/i;function h(e){if(!e)return null;try{let{hostname:t}=new URL(e);return t.toLowerCase().match(te)?.[1]??null}catch{return null}}const ne=new Set([`ap-northeast-1`,`ap-northeast-3`]),g=new Set([`ap-southeast-2`,`ap-southeast-4`]);function _(e,t){return e===`global`?!0:e===`us`?t.startsWith(`us-`):e===`eu`?t.startsWith(`eu-`):e===`apac`?t.startsWith(`ap-`):e===`jp`?ne.has(t):e===`au`&&g.has(t)}function v(e,t){if(!f.test(e.id)||!p.test(e.id)&&!m.test(e.id))return!1;if(!t)return!0;let n=e.id.split(`.`,1)[0];return _(n,t)}function y(e,t){return u(e,t)}function b(e){return{onPayload:e.onPayload,onResponse:e.onResponse,toolChoice:e.toolChoice,thinkingDisplay:e.thinkingDisplay,interleavedThinking:e.interleavedThinking,requestMetadata:e.requestMetadata}}function x(e,t){return(t?[e,t]:[e]).flatMap(e=>{let t=e.toLowerCase();return[t,t.replace(/[\s_.:]+/g,`-`)]})}function S(e){let t=e.replace(/[^a-zA-Z0-9_-]/g,`_`);return t.length>64?t.slice(0,64):t}function C(e){return e?e.replace(/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/g,`�`):``}function w(e){let t=e;if(t.type===`text`)return{text:C(t.text)};if(t.type===`image`)return{image:P(t.mimeType??``,t.data??``)};throw Error(`Unknown user content type: ${t.type??`unknown`}`)}function T(e){return{role:`user`,content:typeof e.content==`string`?[{text:C(e.content)}]:e.content.map(w)}}function E(e,t){let n=e.thinking??``;return n.trim().length===0?null:I(t)?!e.thinkingSignature||e.thinkingSignature.trim().length===0?{text:C(n)}:{reasoningContent:{reasoningText:{text:C(n),signature:e.thinkingSignature}}}:{reasoningContent:{reasoningText:{text:C(n)}}}}function D(e,t){let n=e;switch(n.type){case`text`:return(n.text??``).trim().length===0?null:{text:C(n.text??``)};case`toolCall`:return{toolUse:{toolUseId:n.id??``,name:n.name??``,input:n.arguments??{}}};case`thinking`:return E(n,t);default:return null}}function O(e,t){if(e.content.length===0)return null;let n=[];for(let r of e.content){let e=D(r,t);e!==null&&n.push(e)}return n.length===0?null:{role:`assistant`,content:n}}function k(e){let t=e;return t.type===`image`?{image:P(t.mimeType??``,t.data??``)}:{text:C(t.text??(typeof t.json==`string`?t.json:JSON.stringify(t.json??t)))}}function A(e){return{toolResult:{toolUseId:e.toolCallId??``,content:e.content.map(k),status:e.isError?`error`:`success`}}}function j(e,t){let n=[A(e[t])],r=t+1;for(;r<e.length&&e[r].role===`toolResult`;)n.push(A(e[r])),r++;return{message:{role:`user`,content:n},nextIndex:r-1}}function M(e,t,n){if(n===`none`||!W(t)||e.length===0)return;let r=e[e.length-1];r.role===`user`&&Array.isArray(r.content)&&r.content.push(G(n))}function N(e,t,n){let r=[],i=l(e.messages,t,S);for(let e=0;e<i.length;e++){let n=i[e];if(n.role===`user`)r.push(T(n));else if(n.role===`assistant`){let e=O(n,t);e!==null&&r.push(e)}else if(n.role===`toolResult`){let{message:t,nextIndex:n}=j(i,e);r.push(t),e=n}}return M(r,t,n),r}function P(e,t){return{source:{bytes:t},format:F(e)}}function F(e){switch(e){case`image/jpeg`:case`image/jpg`:return`jpeg`;case`image/png`:return`png`;case`image/gif`:return`gif`;case`image/webp`:return`webp`;default:throw Error(`Unsupported image MIME type: ${e}`)}}function I(e){return U(e)}function L(e,t){return o(e,t)}function R(e,t){return r(e,t)}function z(e,t){return i(e,t)}function re(e,t){if(!e?.length||t===`none`)return;let n=e.map(e=>({toolSpec:{name:e.name,description:e.description,inputSchema:{json:e.parameters}}})),r;switch(t){case`auto`:r={auto:{}};break;case`any`:r={any:{}};break;default:t&&typeof t==`object`&&t.type===`tool`&&(r={tool:{name:t.name}})}return{tools:n,toolChoice:r}}function B(e,t,n){if(e===`xhigh`&&R(t,n))return`xhigh`;switch(e){case`minimal`:case`low`:return`low`;case`medium`:return`medium`;case`high`:return`high`;case`xhigh`:return z(t,n)?`max`:`high`;default:return`high`}}function V(e){if(h(e.baseUrl)?.toLowerCase().startsWith(`us-gov-`))return!0;let t=e.id.toLowerCase();return t.startsWith(`us-gov.`)||t.startsWith(`arn:aws-us-gov:`)}function H(e,t){if(!t.reasoning||!e.reasoning||!U(e))return;let n=V(e)?void 0:t.thinkingDisplay??`summarized`;if(L(e.id,e.name))return{thinking:{type:`adaptive`,...n===void 0?{}:{display:n}},output_config:{effort:B(t.reasoning,e.id,e.name)}};let r={minimal:1024,low:2048,medium:8192,high:16384,xhigh:16384},i=t.reasoning===`xhigh`?`high`:t.reasoning,a={thinking:{type:`enabled`,budget_tokens:t.thinkingBudgets?.[i]??r[t.reasoning],...n===void 0?{}:{display:n}}};return(t.interleavedThinking??!0)&&(a.anthropic_beta=[`interleaved-thinking-2025-05-14`]),a}function U(e){let t=e.id.toLowerCase(),n=e.name?.toLowerCase()??``;return t.includes(`anthropic.claude`)||t.includes(`anthropic/claude`)||n.includes(`anthropic.claude`)||n.includes(`anthropic/claude`)||n.includes(`claude`)}function W(e){return x(e.id,e.name).some(e=>e.includes(`claude`))?a(e.id,e.name):!1}function G(e){return{cachePoint:{type:`default`,...e===`long`?{ttl:`1h`}:{}}}}function K(e,t,n){if(!e)return;let r=[{text:C(e)}];return n!==`none`&&W(t)&&r.push(G(n)),r}function q(e){switch(e){case`end_turn`:case`stop_sequence`:return`stop`;case`max_tokens`:case`model_context_window_exceeded`:return`length`;case`tool_use`:return`toolUse`;default:return`error`}}function J(e,t){let n=`Bedrock CAMP API error (${e})`;return e===429?n=`Throttling error: ${n}`:e===503?n=`Service unavailable: ${n}`:e===502||e===504||e>=500?n=`Internal server error: ${n}`:e===400&&(n=`Validation error: ${n}`),`${n}: ${t}`}function Y(e,n,r,i){let a=e;i.push({type:`start`,partial:r});let o=a.output?.message;if(o?.content)for(let e=0;e<o.content.length;e++){let t=o.content[e];if(t.text!==void 0){let e={type:`text`,text:t.text};r.content.push(e);let n=r.content.length-1;i.push({type:`text_start`,contentIndex:n,partial:r}),i.push({type:`text_delta`,contentIndex:n,delta:t.text,partial:r}),i.push({type:`text_end`,contentIndex:n,content:t.text,partial:r})}else if(t.toolUse){let e={type:`toolCall`,id:t.toolUse.toolUseId||``,name:t.toolUse.name||``,arguments:t.toolUse.input||{}};r.content.push(e);let n=r.content.length-1;i.push({type:`toolcall_start`,contentIndex:n,partial:r}),i.push({type:`toolcall_end`,contentIndex:n,toolCall:e,partial:r})}else if(t.reasoningContent?.reasoningText){let e={type:`thinking`,thinking:t.reasoningContent.reasoningText.text||``,thinkingSignature:t.reasoningContent.reasoningText.signature||``};r.content.push(e);let n=r.content.length-1;i.push({type:`thinking_start`,contentIndex:n,partial:r}),i.push({type:`thinking_delta`,contentIndex:n,delta:e.thinking,partial:r}),i.push({type:`thinking_end`,contentIndex:n,content:e.thinking,partial:r})}}a.usage&&(r.usage.input=a.usage.inputTokens||0,r.usage.output=a.usage.outputTokens||0,r.usage.cacheRead=a.usage.cacheReadInputTokens||0,r.usage.cacheWrite=a.usage.cacheWriteInputTokens||0,r.usage.totalTokens=a.usage.totalTokens||r.usage.input+r.usage.output,t(n,r.usage)),r.stopReason=q(a.stopReason||`end_turn`)}function X(e){return e??`short`}function ie(e){let t={};return e.headers.forEach((e,n)=>{t[n.toLowerCase()]=e}),t}function ae(e){return{role:`assistant`,content:[],api:`bedrock-camp-converse`,provider:e.provider,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:`stop`,timestamp:Date.now()}}function oe(e,t){let n={};return t.maxTokens!==void 0&&(n.maxTokens=t.maxTokens),t.temperature!==void 0&&y(e.id,e.name)&&(n.temperature=t.temperature),n}function se(e,t,n,r){let i=K(t.systemPrompt,e,r),a=re(t.tools,n.toolChoice),o=H(e,n);return{modelId:e.id,messages:N(t,e,r),inferenceConfig:oe(e,n),...i===void 0?{}:{system:i},...a===void 0?{}:{toolConfig:a},...o===void 0?{}:{additionalModelRequestFields:o},...n.requestMetadata===void 0?{}:{requestMetadata:n.requestMetadata}}}async function ce(e,t,n){if(!n.onPayload)return e;let r=await n.onPayload(e,t);if(r===void 0)return e;if(!Z(r))throw Error(`Bedrock CAMP onPayload hook must return a converse request body`);return r}function Z(e){return typeof e!=`object`||!e?!1:`modelId`in e&&typeof e.modelId==`string`&&`messages`in e&&Array.isArray(e.messages)}async function le(e,t,n,r,i){let a={"Content-Type":`application/json`,Authorization:`Bearer ${t}`,...i.headers??{}},o=await fetch(e,{method:`POST`,headers:a,body:JSON.stringify(n),signal:i.signal});if(i.onResponse&&await i.onResponse({status:o.status,headers:ie(o)},r),!o.ok){let e=await o.text();throw Error(J(o.status,e))}return o}function ue(e,t,n,r){for(let e of t.content){let t=e;delete t.index,delete t.partialJson}t.stopReason=n.signal?.aborted?`aborted`:`error`,t.errorMessage=e instanceof Error?e.message:JSON.stringify(e),r.push({type:`error`,reason:t.stopReason,error:t}),r.end()}async function de(e,t,n,r,i){let a=n.apiKey;if(!a)throw Error(`API key is required for Bedrock CAMP`);let o=e.baseUrl;if(!o)throw Error(`Base URL is required for Bedrock CAMP`);let s=se(e,t,n,X(n.cacheRetention));if(s=await ce(s,e,n),Y(await(await le(`${o.replace(/\/$/,``)}/model/${e.id}/converse`,a,s,e,n)).json(),e,r,i),r.stopReason===`pending`)throw Error(`Bedrock CAMP response ended without a stop reason`);if(r.stopReason===`error`||r.stopReason===`aborted`)throw Error(`An unknown error occurred`);i.push({type:`done`,reason:r.stopReason,message:r}),i.end()}const Q=(t,n,r={})=>{let i=e(),a=ae(t);return fe(t,n,r,a,i).catch(e=>{ue(e,a,r,i)}),i};async function fe(e,t,n,r,i){await de(e,t,n,r,i)}const $=(e,t,n)=>{let r=c(e,t,n),i=n?b(n):{};if(!n?.reasoning)return Q(e,t,{...r,...i,reasoning:void 0});if(U(e)){if(L(e.id,e.name))return Q(e,t,{...r,...i,reasoning:n.reasoning,thinkingBudgets:n.thinkingBudgets});let a=ee(r.maxTokens||0,e.maxTokens,n.reasoning,n.thinkingBudgets);return Q(e,t,{...r,...i,maxTokens:a.maxTokens,reasoning:n.reasoning,thinkingBudgets:{...n.thinkingBudgets||{},[s(n.reasoning)]:a.budgetTokens}})}return Q(e,t,{...r,...i,reasoning:n.reasoning,thinkingBudgets:n.thinkingBudgets})};function pe(){n({api:`bedrock-camp-converse`,stream:Q,streamSimple:$})}export{h as bedrockCampRegionFromBaseUrl,d as config,v as isBedrockCampCompatible,pe as register,Q as streamBedrockCamp,$ as streamSimpleBedrockCamp};
|