sliccy 3.5.5 → 3.7.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/README.md +1 -2
- package/dist/node-server/_cloud_core/src/errors.d.ts +14 -0
- package/dist/node-server/_cloud_core/src/errors.d.ts.map +1 -0
- package/dist/node-server/_cloud_core/src/errors.js +13 -0
- package/dist/node-server/_cloud_core/src/index.d.ts +19 -0
- package/dist/node-server/_cloud_core/src/index.d.ts.map +1 -0
- package/dist/node-server/_cloud_core/src/index.js +14 -0
- package/dist/node-server/_cloud_core/src/operations/kill.d.ts +18 -0
- package/dist/node-server/_cloud_core/src/operations/kill.d.ts.map +1 -0
- package/dist/node-server/_cloud_core/src/operations/kill.js +32 -0
- package/dist/node-server/_cloud_core/src/operations/list.d.ts +25 -0
- package/dist/node-server/_cloud_core/src/operations/list.d.ts.map +1 -0
- package/dist/node-server/_cloud_core/src/operations/list.js +145 -0
- package/dist/node-server/_cloud_core/src/operations/pause.d.ts +15 -0
- package/dist/node-server/_cloud_core/src/operations/pause.d.ts.map +1 -0
- package/dist/node-server/_cloud_core/src/operations/pause.js +27 -0
- package/dist/node-server/_cloud_core/src/operations/resume.d.ts +22 -0
- package/dist/node-server/_cloud_core/src/operations/resume.d.ts.map +1 -0
- package/dist/node-server/_cloud_core/src/operations/resume.js +86 -0
- package/dist/node-server/_cloud_core/src/operations/start.d.ts +67 -0
- package/dist/node-server/_cloud_core/src/operations/start.d.ts.map +1 -0
- package/dist/node-server/_cloud_core/src/operations/start.js +228 -0
- package/dist/node-server/_cloud_core/src/polling.d.ts +18 -0
- package/dist/node-server/_cloud_core/src/polling.d.ts.map +1 -0
- package/dist/node-server/_cloud_core/src/polling.js +79 -0
- package/dist/node-server/_cloud_core/src/registry.d.ts +27 -0
- package/dist/node-server/_cloud_core/src/registry.d.ts.map +1 -0
- package/dist/node-server/_cloud_core/src/registry.js +1 -0
- package/dist/node-server/_cloud_core/src/secrets-filter.d.ts +2 -0
- package/dist/node-server/_cloud_core/src/secrets-filter.d.ts.map +1 -0
- package/dist/node-server/_cloud_core/src/secrets-filter.js +17 -0
- package/dist/node-server/_cloud_core/src/substrate-factory.d.ts +3 -0
- package/dist/node-server/_cloud_core/src/substrate-factory.d.ts.map +1 -0
- package/dist/node-server/_cloud_core/src/substrate-factory.js +6 -0
- package/dist/node-server/_cloud_core/src/substrate.d.ts +53 -0
- package/dist/node-server/_cloud_core/src/substrate.d.ts.map +1 -0
- package/dist/node-server/_cloud_core/src/substrate.js +1 -0
- package/dist/node-server/_cloud_core/src/substrates/e2b.d.ts +3 -0
- package/dist/node-server/_cloud_core/src/substrates/e2b.d.ts.map +1 -0
- package/dist/node-server/_cloud_core/src/substrates/e2b.js +98 -0
- package/dist/node-server/_cloud_core/src/types.d.ts +94 -0
- package/dist/node-server/_cloud_core/src/types.d.ts.map +1 -0
- package/dist/node-server/_cloud_core/src/types.js +3 -0
- package/dist/node-server/_cloud_core/tests/fixtures/fake-substrate.d.ts +39 -0
- package/dist/node-server/_cloud_core/tests/fixtures/fake-substrate.d.ts.map +1 -0
- package/dist/node-server/_cloud_core/tests/fixtures/fake-substrate.js +75 -0
- package/dist/node-server/_cloud_core/tests/fixtures/index.d.ts +4 -0
- package/dist/node-server/_cloud_core/tests/fixtures/index.d.ts.map +1 -0
- package/dist/node-server/_cloud_core/tests/fixtures/index.js +2 -0
- package/dist/node-server/_cloud_core/tests/fixtures/mem-registry.d.ts +10 -0
- package/dist/node-server/_cloud_core/tests/fixtures/mem-registry.d.ts.map +1 -0
- package/dist/node-server/_cloud_core/tests/fixtures/mem-registry.js +25 -0
- package/dist/node-server/_cloud_core/tests/kill.test.d.ts +2 -0
- package/dist/node-server/_cloud_core/tests/kill.test.d.ts.map +1 -0
- package/dist/node-server/_cloud_core/tests/kill.test.js +164 -0
- package/dist/node-server/_cloud_core/tests/list.test.d.ts +2 -0
- package/dist/node-server/_cloud_core/tests/list.test.d.ts.map +1 -0
- package/dist/node-server/_cloud_core/tests/list.test.js +300 -0
- package/dist/node-server/_cloud_core/tests/pause.test.d.ts +2 -0
- package/dist/node-server/_cloud_core/tests/pause.test.d.ts.map +1 -0
- package/dist/node-server/_cloud_core/tests/pause.test.js +167 -0
- package/dist/node-server/_cloud_core/tests/resume.test.d.ts +2 -0
- package/dist/node-server/_cloud_core/tests/resume.test.d.ts.map +1 -0
- package/dist/node-server/_cloud_core/tests/resume.test.js +203 -0
- package/dist/node-server/_cloud_core/tests/secrets-filter.test.d.ts +2 -0
- package/dist/node-server/_cloud_core/tests/secrets-filter.test.d.ts.map +1 -0
- package/dist/node-server/_cloud_core/tests/secrets-filter.test.js +30 -0
- package/dist/node-server/_cloud_core/tests/start.test.d.ts +2 -0
- package/dist/node-server/_cloud_core/tests/start.test.d.ts.map +1 -0
- package/dist/node-server/_cloud_core/tests/start.test.js +513 -0
- package/dist/node-server/chrome-launch.d.ts +1 -0
- package/dist/node-server/chrome-launch.js +3 -0
- package/dist/node-server/cloud/dispatch.d.ts +34 -0
- package/dist/node-server/cloud/dispatch.js +79 -0
- package/dist/node-server/cloud/kill.d.ts +12 -0
- package/dist/node-server/cloud/kill.js +11 -0
- package/dist/node-server/cloud/list.d.ts +6 -0
- package/dist/node-server/cloud/list.js +6 -0
- package/dist/node-server/cloud/pause.d.ts +7 -0
- package/dist/node-server/cloud/pause.js +6 -0
- package/dist/node-server/cloud/registry-file.d.ts +13 -0
- package/dist/node-server/cloud/registry-file.js +85 -0
- package/dist/node-server/cloud/resume.d.ts +11 -0
- package/dist/node-server/cloud/resume.js +17 -0
- package/dist/node-server/cloud/start.d.ts +16 -0
- package/dist/node-server/cloud/start.js +49 -0
- package/dist/node-server/cloud-status.d.ts +11 -0
- package/dist/node-server/cloud-status.js +49 -0
- package/dist/node-server/hosted-bootstrap.d.ts +21 -0
- package/dist/node-server/hosted-bootstrap.js +14 -0
- package/dist/node-server/index.js +157 -3
- package/dist/node-server/leader-restart.d.ts +29 -0
- package/dist/node-server/leader-restart.js +146 -0
- package/dist/node-server/runtime-flags.d.ts +1 -0
- package/dist/node-server/runtime-flags.js +6 -0
- package/dist/ui/assets/{adobe-DSSPywlx.js → adobe-Bb9Koo41.js} +1 -1
- package/dist/ui/assets/adobe-C83SQyit.js +2 -0
- package/dist/ui/assets/agent-bridge-CqFAtXhQ.js +1 -0
- package/dist/ui/assets/{agent-message-to-chat-CsyFcZ2w.js → agent-message-to-chat-B5maV2R5.js} +1 -1
- package/dist/ui/assets/{anthropic-DdObQ2i-.js → anthropic-B_W-Zf1F.js} +1 -1
- package/dist/ui/assets/{anthropic-04L_IqQ4.js → anthropic-DFqMAkaW.js} +1 -1
- package/dist/ui/assets/{apps-BBc8G_er.js → apps-CQcu3SPP.js} +1 -1
- package/dist/ui/assets/{azure-openai-maMzaMwe.js → azure-openai-N2PiMhaz.js} +1 -1
- package/dist/ui/assets/azure-openai-miFUu6Hv.js +1 -0
- package/dist/ui/assets/azure-openai-responses-DOyJjHhU.js +1 -0
- package/dist/ui/assets/{azure-openai-responses-Cd0P_ssa.js → azure-openai-responses-k5E1atrw.js} +1 -1
- package/dist/ui/assets/{bsh-watchdog-C8BJAFc3.js → bsh-watchdog-CqkW32Q7.js} +1 -1
- package/dist/ui/assets/{cdp-DMk0S7sC.js → cdp-DRnArGXe.js} +3 -3
- package/dist/ui/assets/cloud-CCHD45tb.js +1 -0
- package/dist/ui/assets/cloud-DyAca2cv.css +1 -0
- package/dist/ui/assets/cost-command-Qd6vdo4-.js +1 -0
- package/dist/ui/assets/{dist-cK1g1pHF.js → dist-ChvbMSOY.js} +1 -1
- package/dist/ui/assets/{dist-BTGs16AV.js → dist-CltZJzbd.js} +1 -1
- package/dist/ui/assets/{dist-BcBxL8nL.js → dist-cZSF0917.js} +1 -1
- package/dist/ui/assets/{dist-Bgcuvc8h.js → dist-ljtB3O-J.js} +1 -1
- package/dist/ui/assets/{es-Bjf1BIVF.js → es-HXRnKgrk.js} +1 -1
- package/dist/ui/assets/follower-sprinkle-bridge-_PGckvHb.js +1 -0
- package/dist/ui/assets/{github-q1jHC2aO.js → github-BENqO11g.js} +1 -1
- package/dist/ui/assets/github-C-Z3n5Xc.js +2 -0
- package/dist/ui/assets/google-7RDpSFjr.js +1 -0
- package/dist/ui/assets/{google-okAFtSPB.js → google-BaN03Ews.js} +1 -1
- package/dist/ui/assets/{google-shared-O-0R1H53.js → google-shared-B50LC94Y.js} +1 -1
- package/dist/ui/assets/google-shared-DQIr6_u6.js +11 -0
- package/dist/ui/assets/{google-vertex-BkZigHmB.js → google-vertex-DmQqHOd3.js} +1 -1
- package/dist/ui/assets/google-vertex-fe0XTrlp.js +1 -0
- package/dist/ui/assets/{intercepted-oauth-BbYCzrsi.js → intercepted-oauth-DZunMpOb.js} +1 -1
- package/dist/ui/assets/{kernel-worker-7oVJDvYj.js → kernel-worker-C5VWVo3p.js} +915 -915
- package/dist/ui/assets/{lick-ws-bridge-Cre3RRwL.js → lick-ws-bridge-BlpI5Vfh.js} +1 -1
- package/dist/ui/assets/{local-llm-DAe8mBkI.js → local-llm-B9x9dHMp.js} +1 -1
- package/dist/ui/assets/magick-wasm-DTuiyppo.js +1 -0
- package/dist/ui/assets/{index-BdDYVKjf.js → main-CGBwb-Z7.js} +85 -84
- package/dist/ui/assets/{mistral-BgP2Mhzf.js → mistral-Bm98WJNR.js} +1 -1
- package/dist/ui/assets/{mistral-DVuMIs98.js → mistral-DNRus666.js} +1 -1
- package/dist/ui/assets/modulepreload-polyfill-wMinxHhO.js +1 -0
- package/dist/ui/assets/nuke-command-CC3imLyj.js +1 -0
- package/dist/ui/assets/{oauth-D12YL9GU.js → oauth-DBX2TVKl.js} +1 -1
- package/dist/ui/assets/oauth-bootstrap-DOOX1I7K.js +2 -0
- package/dist/ui/assets/oauth-service-Bv4EZbHs.js +1 -0
- package/dist/ui/assets/{oauth-service-Copu_4SG.js → oauth-service-v9k7zmDr.js} +1 -1
- package/dist/ui/assets/offscreen-client-C8dacNXH.js +1 -0
- package/dist/ui/assets/onboarding-orchestrator-C_kYnC4g.js +1 -0
- package/dist/ui/assets/{openai-codex-responses-BAPqEmsF.js → openai-codex-responses-DQIglX1K.js} +1 -1
- package/dist/ui/assets/{openai-codex-responses-B7pudFjp.js → openai-codex-responses-DW1a9bCj.js} +1 -1
- package/dist/ui/assets/openai-completions-ChQDZA6E.js +5 -0
- package/dist/ui/assets/{openai-responses-CtIsFZKY.js → openai-responses-CY2Kt17O.js} +1 -1
- package/dist/ui/assets/openai-responses-Pm8J-HuA.js +1 -0
- package/dist/ui/assets/{openai-responses-shared-CqmlDcXz.js → openai-responses-shared-CVjR8F2I.js} +1 -1
- package/dist/ui/assets/{openai-responses-shared-DxBvmwvL.js → openai-responses-shared-DsbHT7ZR.js} +1 -1
- package/dist/ui/assets/{openrouter-CdadiGtx.js → openrouter-C17Qgp_a.js} +1 -1
- package/dist/ui/assets/openrouter-YvEDVJjZ.js +1 -0
- package/dist/ui/assets/panel-rpc-handlers-D3TvKTBJ.js +1 -0
- package/dist/ui/assets/{provider-DcrxGcMH.js → provider-CVQ1-hiX.js} +2 -2
- package/dist/ui/assets/{provider-DXK8JUs0.js → provider-DQdgU2cB.js} +1 -1
- package/dist/ui/assets/provider-store-access-HJH7Oiu7.js +1 -0
- package/dist/ui/assets/provider-store-access-R_T_zm3J.js +1 -0
- package/dist/ui/assets/proxied-fetch-BD4Aw_98.js +1 -0
- package/dist/ui/assets/{pyodide-DlSYVqmj.js → pyodide-DjwZMHCM.js} +2 -2
- package/dist/ui/assets/{remote-terminal-view-PnTEWD7p.js → remote-terminal-view-BY0dldZw.js} +1 -1
- package/dist/ui/assets/secret-env-CRC281WY.js +1 -0
- package/dist/ui/assets/slicc-editor-DWlyJ8F2.js +12 -0
- package/dist/ui/assets/{spawn-CfeAB8A4.js → spawn-7IvlkEig.js} +1 -1
- package/dist/ui/assets/{sql-wasm-BVmSEJv3.js → sql-wasm-CwnEMigK.js} +1 -1
- package/dist/ui/assets/{store-D-IKH6-w.js → store-j2Druu0N.js} +1 -1
- package/dist/ui/assets/tray-leave-runtime-Bn8j6E27.js +1 -0
- package/dist/ui/assets/{upgrade-detection-CpKdzfSv.js → upgrade-detection-3mhOWPt2.js} +1 -1
- package/dist/ui/assets/{xai-grok-DwtbUE6F.js → xai-grok-Che7ONVU.js} +1 -1
- package/dist/ui/assets/xai-grok-Doi4Og_5.js +1 -0
- package/dist/ui/assets/{xai-grok-sanitize-DtMFuPGU.js → xai-grok-sanitize-C7TgWvwD.js} +1 -1
- package/dist/ui/electron-overlay-entry.js +9 -9
- package/dist/ui/index.html +3 -2
- package/dist/ui/llm-proxy-sw.js +1 -1
- package/dist/ui/packages/webapp/cloud/index.html +38 -0
- package/dist/ui/packages/webapp/index.html +3 -2
- package/package.json +9 -7
- package/dist/ui/assets/adobe-DCsfRQn2.js +0 -2
- package/dist/ui/assets/agent-bridge-DaJ_nmW3.js +0 -1
- package/dist/ui/assets/azure-openai-DzGirHIb.js +0 -1
- package/dist/ui/assets/azure-openai-responses-CjukGNgz.js +0 -1
- package/dist/ui/assets/cost-command-BtJx6Gwp.js +0 -1
- package/dist/ui/assets/follower-sprinkle-bridge-BFLnAii4.js +0 -1
- package/dist/ui/assets/github-CcyS4zY-.js +0 -2
- package/dist/ui/assets/google-Cgd9E3cB.js +0 -1
- package/dist/ui/assets/google-shared-Dz7dBXHI.js +0 -11
- package/dist/ui/assets/google-vertex-BSk7Kd0k.js +0 -1
- package/dist/ui/assets/magick-wasm-C1izt9i7.js +0 -1
- package/dist/ui/assets/nuke-command-BbxGOoiP.js +0 -1
- package/dist/ui/assets/oauth-bootstrap-BtJmY6M6.js +0 -2
- package/dist/ui/assets/oauth-service-DJF7cZo7.js +0 -1
- package/dist/ui/assets/offscreen-client-Cz7pdJA-.js +0 -1
- package/dist/ui/assets/onboarding-orchestrator-BKXIEudN.js +0 -1
- package/dist/ui/assets/openai-completions-iJ14N4Sw.js +0 -5
- package/dist/ui/assets/openai-responses-C4kJ_gQ1.js +0 -1
- package/dist/ui/assets/openrouter-CPoeAmgd.js +0 -1
- package/dist/ui/assets/panel-rpc-handlers-DbHRM59x.js +0 -1
- package/dist/ui/assets/provider-store-access-BjvfvyfX.js +0 -1
- package/dist/ui/assets/provider-store-access-auxlQIvP.js +0 -1
- package/dist/ui/assets/proxied-fetch-Zr3psZ6-.js +0 -1
- package/dist/ui/assets/secret-env-YSczATtn.js +0 -1
- package/dist/ui/assets/slicc-editor-BwZ-JdjT.js +0 -12
- package/dist/ui/assets/tray-leave-runtime-D9Wr8bCF.js +0 -1
- package/dist/ui/assets/xai-grok-CGPoHWCQ.js +0 -1
- /package/dist/ui/assets/{active-transport-Cu6hvJXz.js → active-transport-DHcaBd4j.js} +0 -0
- /package/dist/ui/assets/{addon-fit-D2MIn2bh.js → addon-fit-CUt9lrQO.js} +0 -0
- /package/dist/ui/assets/{azure-ai-foundry-DVqxYCDH.js → azure-ai-foundry-B4QrVklT.js} +0 -0
- /package/dist/ui/assets/{chat-fixture-C0wxG6yH.js → chat-fixture-ChGRNFda.js} +0 -0
- /package/dist/ui/assets/{dist-BNe7ZIzA.js → dist-CZcDRTma.js} +0 -0
- /package/dist/ui/assets/{dist-4mA3RMrN.js → dist-D0kTaNET.js} +0 -0
- /package/dist/ui/assets/{git-config-47_ySgKl.js → git-config-DcQbkikl.js} +0 -0
- /package/dist/ui/assets/{github-copilot-headers-CTUP_cqn.js → github-copilot-headers-C5CocKfn.js} +0 -0
- /package/dist/ui/assets/{global-db-CMspJ2t8.js → global-db-DL3jdM9H.js} +0 -0
- /package/dist/ui/assets/{hash-B9Dtr1VK.js → hash-iitWbNjK.js} +0 -0
- /package/dist/ui/assets/{headers-AeYLn7L4.js → headers-qDMOQQGF.js} +0 -0
- /package/dist/ui/assets/{index-CvlDeETm.css → main-CvlDeETm.css} +0 -0
- /package/dist/ui/assets/{openai-Bf1npfRy.js → openai-BR_xAflc.js} +0 -0
- /package/dist/ui/assets/{page-storage-sync-3GLxly8J.js → page-storage-sync-sv2ogNKh.js} +0 -0
- /package/dist/ui/assets/{rum-CY2gBT8x.js → rum-z5wz4Dnj.js} +0 -0
- /package/dist/ui/assets/{sanitize-unicode-h0KEBmEw.js → sanitize-unicode-B1z_Y4Dq.js} +0 -0
- /package/dist/ui/assets/{sprinkle-bridge-channel-DAHSl7rf.js → sprinkle-bridge-channel-ChD0T07C.js} +0 -0
- /package/dist/ui/assets/{src-BQRb5emh.js → src-DRmQ1wr-.js} +0 -0
- /package/dist/ui/assets/{xai-grok-errors-DQQRqci0.js → xai-grok-errors-BdY43UIn.js} +0 -0
- /package/dist/ui/assets/{xai-grok-models-D7n8nh39.js → xai-grok-models-C9MIa-Aj.js} +0 -0
- /package/dist/ui/assets/{xterm-4j9yS4Tj.js → xterm-VndicwFp.js} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{B as e,F as t,K as n,R as r,h as i,l as a}from"./main-CGBwb-Z7.js";import{XaiErrorCode as o,XaiOAuthError as s}from"./xai-grok-errors-BdY43UIn.js";import{resolveModels as c,toModelMetadata as l}from"./xai-grok-models-C9MIa-Aj.js";import{sanitizePayload as u}from"./xai-grok-sanitize-C7TgWvwD.js";var d=`xai-grok`,f=`https://auth.x.ai`,p=`${f}/oauth2/authorize`,m=`${f}/oauth2/token`,h=`b1a00492-073a-47ea-816f-4c329264a828`,g=`openid profile email offline_access grok-cli:access api:access`,_=`http://127.0.0.1:56121/callback`,v=`http://127.0.0.1:56121/*`,y=`https://api.x.ai/v1`,b=`openai-responses`,x=`${d}-openai`;function S(){return typeof process>`u`?null:{}?.PI_XAI_OAUTH_MODELS??null}var C=c(S());function w(e){let t=``;for(let n of e)t+=String.fromCharCode(n);return btoa(t).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/,``)}function T(e){let t=new Uint8Array(e);return crypto.getRandomValues(t),t}function E(){return w(T(32))}async function D(e){let t=new TextEncoder().encode(e);return w(new Uint8Array(await crypto.subtle.digest(`SHA-256`,t)))}function O(){return w(T(16))}async function k(e,t){let n=new URLSearchParams({grant_type:`authorization_code`,code:e,redirect_uri:_,client_id:h,code_verifier:t}),r=await fetch(m,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:n});if(!r.ok)throw new s(`xAI token exchange failed: ${r.status} ${await r.text()}`,o.TOKEN_EXCHANGE_FAILED);let i=await r.json();if(!i.access_token)throw new s(`xAI token exchange did not return access_token.`,o.TOKEN_EXCHANGE_INVALID);return i}async function A(e){try{let t=new URLSearchParams({grant_type:`refresh_token`,refresh_token:e,client_id:h}),n=await fetch(m,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:t});return n.ok?await n.json():(console.error(`[xai-grok] refresh failed:`,n.status,await n.text()),null)}catch(e){return console.error(`[xai-grok] refresh error:`,e instanceof Error?e.message:String(e)),null}}function j(){return a().find(e=>e.providerId===d)}async function M(){let e=j();if(!e?.accessToken)throw new s("Not signed in to xAI Grok — run /login or `oauth-token xai-grok`",o.AUTH_MISSING,!0);let t=e.tokenExpiresAt??0;if(t&&Date.now()+6e4<t)return e.accessToken;if(e.refreshToken){let t=await A(e.refreshToken);if(t?.access_token)return await i({providerId:d,accessToken:t.access_token,refreshToken:t.refresh_token??e.refreshToken,tokenExpiresAt:Date.now()+(t.expires_in??21600)*1e3}),t.access_token}return e.accessToken}function N(e,t){return{type:`error`,reason:`error`,error:{role:`assistant`,content:[],api:x,provider:d,model:e.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:`error`,errorMessage:t instanceof Error?t.message:String(t),timestamp:Date.now()}}}function P(e,t){return n=>!n||typeof n!=`object`?n:u(n,e,t)}function F(e,t){return t?{...e??{},"x-grok-conv-id":t}:e}var I=(n,r,i={})=>{let a=e();return(async()=>{try{let e=await M(),o=i.sessionId,s=t({...n,baseUrl:y,api:b},r,{...i,apiKey:e,headers:F(i.headers,o),onPayload:P(n.id,o)});for await(let e of s)a.push(e);a.end()}catch(e){console.error(`[xai-grok] Stream error:`,e instanceof Error?e.message:String(e)),a.push(N(n,e)),a.end()}})(),a},L=(t,n,i)=>{let a=e();return(async()=>{try{let e=await M(),o=i?.sessionId,s=r({...t,baseUrl:y,api:b},n,{...i,apiKey:e,headers:F(i?.headers,o),onPayload:P(t.id,o)});for await(let e of s)a.push(e);a.end()}catch(e){console.error(`[xai-grok] Stream error:`,e instanceof Error?e.message:String(e)),a.push(N(t,e)),a.end()}})(),a},R={id:d,name:`xAI Grok (SuperGrok OAuth)`,description:`Grok via xAI OAuth — uses your SuperGrok subscription, no API key needed. Default model is Grok Heavy.`,requiresApiKey:!1,requiresBaseUrl:!1,isOAuth:!0,defaultModelId:`grok-4.20-multi-agent-0309`,oauthTokenDomains:[`api.x.ai`,`*.x.ai`,`auth.x.ai`,`accounts.x.ai`],getModelIds:()=>C.map(e=>{let t=l(e);return e.thinkingLevelMap?{...t,thinkingLevelMap:e.thinkingLevelMap}:t}),onOAuthLoginIntercepted:async(e,t,n)=>{let r=E(),a=await D(r),c=O(),l=O(),u=new URL(p);u.searchParams.set(`response_type`,`code`),u.searchParams.set(`client_id`,h),u.searchParams.set(`redirect_uri`,_),u.searchParams.set(`scope`,n?.scopes??g),u.searchParams.set(`code_challenge`,a),u.searchParams.set(`code_challenge_method`,`S256`),u.searchParams.set(`state`,c),u.searchParams.set(`nonce`,l),u.searchParams.set(`plan`,`generic`),u.searchParams.set(`referrer`,`slicc`);let f=await e({authorizeUrl:u.toString(),redirectUriPattern:v,onCapture:`close`});if(!f)throw new s(`xAI OAuth login was cancelled or timed out`,o.CALLBACK_TIMEOUT);let m=new URL(f),b=m.searchParams.get(`code`),x=m.searchParams.get(`state`);if(!b)throw new s(`xAI OAuth redirect did not include a code`,o.CODE_MISSING);if(x!==c)throw new s(`xAI OAuth state mismatch — possible CSRF, aborting`,o.STATE_MISMATCH);let S=await k(b,r);await i({providerId:d,accessToken:S.access_token,refreshToken:S.refresh_token,tokenExpiresAt:Date.now()+(S.expires_in??21600)*1e3,baseUrl:y}),t()},onOAuthLogout:async()=>{await i({providerId:d,accessToken:``})},onSilentRenew:async()=>{let e=j();if(!e?.refreshToken)return null;let t=await A(e.refreshToken);return t?.access_token?(await i({providerId:d,accessToken:t.access_token,refreshToken:t.refresh_token??e.refreshToken,tokenExpiresAt:Date.now()+(t.expires_in??21600)*1e3}),t.access_token):null}};function z(){n({api:x,stream:I,streamSimple:L})}export{o as XaiErrorCode,s as XaiOAuthError,R as config,z as register};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{supportsReasoningEffort as e}from"./xai-grok-models-
|
|
1
|
+
import{supportsReasoningEffort as e}from"./xai-grok-models-C9MIa-Aj.js";function t(e){return typeof e==`string`?e:Array.isArray(e)?e.map(e=>{if(typeof e==`string`)return e;if(!e||typeof e!=`object`)return``;let t=e,n=typeof t.type==`string`?t.type:``;return[`text`,`input_text`,`output_text`].includes(n)&&typeof t.text==`string`?t.text:``}).filter(Boolean).join(`
|
|
2
2
|
`):``}function n(e){let t=e.trim();return t.length>=2&&(t.startsWith(`"`)&&t.endsWith(`"`)||t.startsWith(`'`)&&t.endsWith(`'`))?t.slice(1,-1):t}function r(e){if(typeof e!=`string`||!e.trim())return;let t=n(e);if(/^https?:\/\//i.test(t)||/^data:image\//i.test(t))return t;console.warn(`[xai-grok] Dropping non-http/data image reference (slicc cannot resolve local paths in the browser):`,t)}function i(e){return!!e&&typeof e==`object`&&e.type===`input_image`}function a(e){if(Array.isArray(e))return e.map(a).filter(e=>e!==null);if(!e||typeof e!=`object`)return e;let t={...e};if(t.type===`image`&&typeof t.data==`string`&&typeof t.mimeType==`string`)return{type:`input_image`,image_url:`data:${t.mimeType};base64,${t.data}`,detail:typeof t.detail==`string`&&t.detail?t.detail:`auto`};if(t.type===`image_url`){let e=typeof t.image_url==`object`&&t.image_url?t.image_url.url:t.image_url,n=typeof t.image_url==`object`&&t.image_url?t.image_url.detail:t.detail;t.type=`input_image`,t.image_url=e,typeof n==`string`&&n&&(t.detail=n)}if(t.type===`input_image`){let e=typeof t.image_url==`object`&&t.image_url?t.image_url.url:t.image_url,n=typeof t.image_url==`object`&&t.image_url?t.image_url.detail:t.detail,i=r(e);if(i)t.image_url=i;else return null;typeof n==`string`&&n&&(t.detail=n),(typeof t.detail!=`string`||!t.detail)&&(t.detail=`auto`)}return Array.isArray(t.content)&&(t.content=a(t.content)),Array.isArray(t.output)&&(t.output=a(t.output)),t}function o(e){let t=[];for(let n of e){if(!n||typeof n!=`object`||n.type!==`function_call_output`||!Array.isArray(n.output)){t.push(n);continue}let e=n.output,r=e.filter(i),a=e.filter(e=>!i(e)),o=[];for(let e of a)if(typeof e==`string`)o.push(e);else if(e&&typeof e==`object`){let t=e;typeof t.text==`string`&&o.push(t.text)}let s=o.join(`
|
|
3
3
|
`)||`(tool returned no text output)`;if(t.push({...n,output:s}),r.length>0){let e=`The previous tool result${n.call_id?` (${String(n.call_id)})`:``} included ${r.length} image${r.length===1?``:`s`}. Use the attached image${r.length===1?``:`s`} as the visual output from that tool.`;t.push({role:`user`,content:[{type:`input_text`,text:e},...r]})}}return t}function s(n,r,i){let s=n;if(Array.isArray(s.input)){let e=s.input.map(e=>{if(!e||typeof e!=`object`)return e;let t=e;return t.type===`reasoning`||typeof t.content==`string`&&t.content.length===0?null:t}).filter(Boolean),n=[];for(;e.length>0;){let r=e[0];if(!r||typeof r!=`object`)break;let i=r.role;if(i!==`developer`&&i!==`system`)break;let a=t(r.content).trim();a&&n.push(a),e.shift()}n.length>0&&(s.instructions=[typeof s.instructions==`string`&&s.instructions?s.instructions:``,...n].filter(e=>e.length>0).join(`
|
|
4
4
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";(()=>{var B=[{id:"chat",label:"Chat"},{id:"terminal",label:"Terminal"},{id:"files",label:"Files"},{id:"memory",label:"Memory"}],
|
|
1
|
+
"use strict";(()=>{var B=[{id:"chat",label:"Chat"},{id:"terminal",label:"Terminal"},{id:"files",label:"Files"},{id:"memory",label:"Memory"}],H=B,M="chat",ue=new Set(B.map(r=>r.id));function u(r,e=M){return r&&r.length>0?r:e}var te=["top-left","top-right","bottom-left","bottom-right","top","right","bottom","left"],re="top-right",oe=6,ne=12,ae=.6;function m(r,e=re){return te.includes(r)?r:e}function T(r={}){return{open:r.open??!1,activeTab:u(r.activeTab,M),corner:m(r.corner)}}function j(r){return{...r,open:!r.open}}function C(r,e){return r.open===e?r:{...r,open:e}}function A(r,e){let t=u(e,r.activeTab);return r.activeTab===t?r:{...r,activeTab:t}}function R(r,e){let t=m(e,r.corner);return r.corner===t?r:{...r,corner:t}}function O(r,e){return r>=oe||r>=ne&&e>=ae}function q({clientX:r,clientY:e,viewportWidth:t,viewportHeight:o,velocityXPxPerMs:n=0,velocityYPxPerMs:a=0,flickProjectionMs:s=180}){let l=F(r+n*s,0,t),p=F(e+a*s,0,o),i=l/t,c=p/o,d=i>1/3&&i<2/3,h=c>1/3&&c<2/3;if(d&&h){let f=c,b=1-c,S=i,g=1-i,w=Math.min(f,b,S,g);return w===f?"top":w===b?"bottom":w===S?"left":"right"}if(d)return c<.5?"top":"bottom";if(h)return i<.5?"left":"right";let E=i<.5?"left":"right";return`${c<.5?"top":"bottom"}-${E}`}function F(r,e,t){return Math.min(Math.max(r,e),t)}var Z="slicc-electron-overlay:set-tab";var $=`<?xml version="1.0" encoding="UTF-8"?>
|
|
2
2
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" width="100%" height="100%"><g transform="translate(191.47118749999993, 12.583024999999978) scale(1.1115000000000002)"><g transform="translate(0, 0)"><g id="Cone">
|
|
3
3
|
<path id="Cone_Bottom" data-name="Cone Bottom" d="M108.22,414.88l189.84,460.03c1.36,3.3,6.09,3.16,7.25-.22l159.34-463.34c.87-2.53-1.03-5.16-3.7-5.13l-349.18,3.32c-2.74.03-4.59,2.82-3.55,5.35Z" style="fill: rgb(34, 34, 34); stroke: rgb(255, 255, 255); stroke-linejoin: round; stroke-width: 20px;"/>
|
|
4
4
|
<g id="Waffle_Cross-Hatch" data-name="Waffle Cross-Hatch">
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
</g><g id="Left_Eye" data-name="Left Eye">
|
|
51
51
|
<circle id="Right_Eye_Outline" data-name="Right Eye Outline" cx="175.1" cy="250.34" r="64.78" style="fill: #fff; stroke: #000; stroke-miterlimit: 10; stroke-width: 6px;"/>
|
|
52
52
|
<path id="Left_Pupil" data-name="Left Pupil" d="M213.74,233.23c-.13,1.98-.7,3.97-1.76,5.81-3.71,6.43-11.93,8.63-18.36,4.92-6.43-3.71-8.63-11.93-4.92-18.36,2.32-4.02,6.4-6.38,10.7-6.69-3.8-1.78-8.03-2.8-12.51-2.8-16.37,0-29.64,13.27-29.64,29.64s13.27,29.64,29.64,29.64,29.64-13.27,29.64-29.64c0-4.48-1.02-8.72-2.81-12.53Z" style="fill: rgb(0, 0, 0);"/>
|
|
53
|
-
</g></g></g></svg>`;var U="slicc-electron-overlay-root",N="slicc-electron-overlay",pe="Semicolon",K=";",de="slicc-electron-overlay:toggle",L="slicc-electron-launcher",k="slicc-electron-sidebar",v="",y=18,J="slicc-electron-overlay-launcher-corner";function
|
|
53
|
+
</g></g></g></svg>`;var U="slicc-electron-overlay-root",N="slicc-electron-overlay",pe="Semicolon",K=";",de="slicc-electron-overlay:toggle",L="slicc-electron-launcher",k="slicc-electron-sidebar",v="",y=18,J="slicc-electron-overlay-launcher-corner";function V(r,e){let t=r.createElement("style");return t.textContent=e,t}function z(r){return r.replace(/<\?xml[^?]*\?>\s*/i,"")}var X=`
|
|
54
54
|
:host {
|
|
55
55
|
color-scheme: dark light;
|
|
56
56
|
--s2-gray-25: #1a1a1a;
|
|
@@ -99,8 +99,8 @@
|
|
|
99
99
|
--s2-shadow-elevated: 0 10px 32px rgba(0, 0, 0, 0.14), 0 2px 10px rgba(0, 0, 0, 0.08);
|
|
100
100
|
}
|
|
101
101
|
}
|
|
102
|
-
`;function ge(r,e){try{let t=new URL(r,window.location.href);return t.searchParams.set("tab",e),t.toString()}catch{return r}}var P=class extends HTMLElement{static observedAttributes=["open","corner"];button=null;pointerState=null;suppressClick=!1;connectedCallback(){this.shadowRoot||this.render(),this.sync()}attributeChangedCallback(){this.sync()}render(){let e=this.attachShadow({mode:"open"}),t=this.ownerDocument,o=y;e.appendChild(
|
|
103
|
-
${
|
|
102
|
+
`;function ge(r,e){try{let t=new URL(r,window.location.href);return t.searchParams.set("tab",e),t.toString()}catch{return r}}var P=class extends HTMLElement{static observedAttributes=["open","corner"];button=null;pointerState=null;suppressClick=!1;connectedCallback(){this.shadowRoot||this.render(),this.sync()}attributeChangedCallback(){this.sync()}render(){let e=this.attachShadow({mode:"open"}),t=this.ownerDocument,o=y;e.appendChild(V(t,`
|
|
103
|
+
${X}
|
|
104
104
|
:host {
|
|
105
105
|
all: initial;
|
|
106
106
|
position: fixed;
|
|
@@ -203,8 +203,8 @@
|
|
|
203
203
|
.logo-for-dark { display: none; }
|
|
204
204
|
.logo-for-light { display: block; }
|
|
205
205
|
}
|
|
206
|
-
`));let n=t.createElement("button");n.type="button";let s=`${navigator.platform?.startsWith("Mac")||navigator.userAgent?.includes("Mac")?"\u2318":"Ctrl+"}${K}`;n.setAttribute("aria-label","Toggle SLICC overlay"),n.title=`Toggle SLICC (${s})`;let l=t.createElement("div");l.className="logo-icon logo-for-dark",l.innerHTML=z($),l.setAttribute("aria-hidden","true");let p=t.createElement("div");p.className="logo-icon logo-for-light",p.innerHTML=z(W),p.setAttribute("aria-hidden","true");let i=t.createElement("span");i.className="tab-label",i.textContent="SLICC",n.appendChild(l),n.appendChild(p),n.appendChild(i),e.appendChild(n),this.button=n,this.button?.addEventListener("click",c=>{if(this.suppressClick){this.suppressClick=!1,c.preventDefault(),c.stopImmediatePropagation();return}this.dispatchEvent(new CustomEvent("slicc-overlay-toggle",{bubbles:!0,composed:!0}))}),this.button?.addEventListener("pointerdown",this.onPointerDown),this.button?.addEventListener("pointermove",this.onPointerMove),this.button?.addEventListener("pointerup",this.onPointerUp),this.button?.addEventListener("pointercancel",this.onPointerCancel)}sync(){this.button?.setAttribute("aria-pressed",String(this.hasAttribute("open")))}onPointerDown=e=>{if(!e.isPrimary||e.button!==0||!this.button)return;let t=this.getBoundingClientRect();this.pointerState={pointerId:e.pointerId,startX:e.clientX,startY:e.clientY,startLeft:t.left,startTop:t.top,width:t.width,height:t.height,lastX:e.clientX,lastY:e.clientY,lastTimestamp:e.timeStamp,velocityX:0,velocityY:0,dragging:!1},this.suppressClick=!1,this.button.setPointerCapture(e.pointerId),e.preventDefault()};onPointerMove=e=>{let t=this.pointerState;if(!t||e.pointerId!==t.pointerId)return;let o=e.clientX-t.startX,n=e.clientY-t.startY,a=Math.hypot(o,n);!t.dragging&&
|
|
207
|
-
${
|
|
206
|
+
`));let n=t.createElement("button");n.type="button";let s=`${navigator.platform?.startsWith("Mac")||navigator.userAgent?.includes("Mac")?"\u2318":"Ctrl+"}${K}`;n.setAttribute("aria-label","Toggle SLICC overlay"),n.title=`Toggle SLICC (${s})`;let l=t.createElement("div");l.className="logo-icon logo-for-dark",l.innerHTML=z($),l.setAttribute("aria-hidden","true");let p=t.createElement("div");p.className="logo-icon logo-for-light",p.innerHTML=z(W),p.setAttribute("aria-hidden","true");let i=t.createElement("span");i.className="tab-label",i.textContent="SLICC",n.appendChild(l),n.appendChild(p),n.appendChild(i),e.appendChild(n),this.button=n,this.button?.addEventListener("click",c=>{if(this.suppressClick){this.suppressClick=!1,c.preventDefault(),c.stopImmediatePropagation();return}this.dispatchEvent(new CustomEvent("slicc-overlay-toggle",{bubbles:!0,composed:!0}))}),this.button?.addEventListener("pointerdown",this.onPointerDown),this.button?.addEventListener("pointermove",this.onPointerMove),this.button?.addEventListener("pointerup",this.onPointerUp),this.button?.addEventListener("pointercancel",this.onPointerCancel)}sync(){this.button?.setAttribute("aria-pressed",String(this.hasAttribute("open")))}onPointerDown=e=>{if(!e.isPrimary||e.button!==0||!this.button)return;let t=this.getBoundingClientRect();this.pointerState={pointerId:e.pointerId,startX:e.clientX,startY:e.clientY,startLeft:t.left,startTop:t.top,width:t.width,height:t.height,lastX:e.clientX,lastY:e.clientY,lastTimestamp:e.timeStamp,velocityX:0,velocityY:0,dragging:!1},this.suppressClick=!1,this.button.setPointerCapture(e.pointerId),e.preventDefault()};onPointerMove=e=>{let t=this.pointerState;if(!t||e.pointerId!==t.pointerId)return;let o=e.clientX-t.startX,n=e.clientY-t.startY,a=Math.hypot(o,n);!t.dragging&&O(a,0)&&(t.dragging=!0,this.setAttribute("dragging",""));let s=Math.max(e.timeStamp-t.lastTimestamp,1),l=(e.clientX-t.lastX)/s,p=(e.clientY-t.lastY)/s;if(t.velocityX=t.velocityX===0?l:t.velocityX*.35+l*.65,t.velocityY=t.velocityY===0?p:t.velocityY*.35+p*.65,t.lastX=e.clientX,t.lastY=e.clientY,t.lastTimestamp=e.timeStamp,!t.dragging)return;let i=Math.max(y,window.innerWidth-t.width-y),c=Math.max(y,window.innerHeight-t.height-y),d=G(t.startLeft+o,y,i),h=G(t.startTop+n,y,c);this.style.left=`${d}px`,this.style.top=`${h}px`,this.style.right="auto",this.style.bottom="auto",e.preventDefault()};onPointerUp=e=>{this.finishPointerInteraction(e)};onPointerCancel=e=>{this.finishPointerInteraction(e,!1)};finishPointerInteraction(e,t=!0){let o=this.pointerState;if(!o||e.pointerId!==o.pointerId||!this.button)return;let n=Math.hypot(e.clientX-o.startX,e.clientY-o.startY),a=Math.hypot(o.velocityX,o.velocityY);if(t&&(o.dragging||O(n,a))){let l=q({clientX:e.clientX,clientY:e.clientY,viewportWidth:window.innerWidth,viewportHeight:window.innerHeight,velocityXPxPerMs:o.velocityX,velocityYPxPerMs:o.velocityY});this.dispatchEvent(new CustomEvent("slicc-overlay-move",{bubbles:!0,composed:!0,detail:{corner:l}})),this.suppressClick=!0,e.preventDefault()}this.button.hasPointerCapture(e.pointerId)&&this.button.releasePointerCapture(e.pointerId),this.pointerState=null,this.removeAttribute("dragging"),this.resetDragStyles()}resetDragStyles(){this.style.left="",this.style.top="",this.style.right="",this.style.bottom=""}},Y=class extends HTMLElement{static observedAttributes=["open","active-tab","app-url","corner"];tabButtons=new Map;iframe=null;emptyState=null;currentAppUrl=v;frameLoaded=!1;lastPostedTab=null;connectedCallback(){this.shadowRoot||this.render(),this.sync()}attributeChangedCallback(){this.sync()}render(){let e=this.attachShadow({mode:"open"}),t=this.ownerDocument,o=u(this.getAttribute("active-tab"));e.appendChild(V(t,`
|
|
207
|
+
${X}
|
|
208
208
|
:host { all: initial; position: fixed; inset: 0; display: block; pointer-events: none; font-family: var(--s2-font-family); }
|
|
209
209
|
:host([open]) { pointer-events: auto; }
|
|
210
210
|
*, *::before, *::after { box-sizing: border-box; }
|
|
@@ -255,8 +255,8 @@
|
|
|
255
255
|
iframe { border: 0; width: 100%; height: 100%; display: block; background: var(--s2-bg-base); }
|
|
256
256
|
.empty-state { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; padding: 24px; text-align: center; color: var(--s2-content-secondary); font-size: 13px; line-height: 1.5; }
|
|
257
257
|
.empty-state[hidden] { display: none; }
|
|
258
|
-
`));let n=t.createElement("div");n.className="backdrop",n.setAttribute("part","backdrop"),n.addEventListener("click",()=>{this.dispatchEvent(new CustomEvent("slicc-overlay-close",{bubbles:!0,composed:!0}))}),e.appendChild(n);let a=t.createElement("aside");a.className="sidebar",a.setAttribute("part","sidebar"),a.setAttribute("aria-label","SLICC overlay sidebar");let s=t.createElement("header");s.className="header";let l=t.createElement("div");l.className="header__brand";let p=t.createElement("div"),i=t.createElement("div");i.className="header__title",i.textContent="slicc";let c=t.createElement("div");c.className="header__subtitle",c.textContent="electron float",p.appendChild(i),p.appendChild(c),l.appendChild(p),s.appendChild(l);let d=t.createElement("button");d.type="button",d.className="header__close",d.setAttribute("aria-label","Close SLICC overlay"),d.textContent="\xD7",d.addEventListener("click",()=>{this.dispatchEvent(new CustomEvent("slicc-overlay-close",{bubbles:!0,composed:!0}))}),s.appendChild(d),a.appendChild(s);let h=t.createElement("div");h.className="tab-bar",h.setAttribute("role","tablist"),h.setAttribute("aria-label","SLICC overlay tabs");for(let{id:b,label:S}of
|
|
259
|
-
${
|
|
258
|
+
`));let n=t.createElement("div");n.className="backdrop",n.setAttribute("part","backdrop"),n.addEventListener("click",()=>{this.dispatchEvent(new CustomEvent("slicc-overlay-close",{bubbles:!0,composed:!0}))}),e.appendChild(n);let a=t.createElement("aside");a.className="sidebar",a.setAttribute("part","sidebar"),a.setAttribute("aria-label","SLICC overlay sidebar");let s=t.createElement("header");s.className="header";let l=t.createElement("div");l.className="header__brand";let p=t.createElement("div"),i=t.createElement("div");i.className="header__title",i.textContent="slicc";let c=t.createElement("div");c.className="header__subtitle",c.textContent="electron float",p.appendChild(i),p.appendChild(c),l.appendChild(p),s.appendChild(l);let d=t.createElement("button");d.type="button",d.className="header__close",d.setAttribute("aria-label","Close SLICC overlay"),d.textContent="\xD7",d.addEventListener("click",()=>{this.dispatchEvent(new CustomEvent("slicc-overlay-close",{bubbles:!0,composed:!0}))}),s.appendChild(d),a.appendChild(s);let h=t.createElement("div");h.className="tab-bar",h.setAttribute("role","tablist"),h.setAttribute("aria-label","SLICC overlay tabs");for(let{id:b,label:S}of H){let g=t.createElement("button");g.type="button",g.className="tab-bar__tab"+(b===o?" tab-bar__tab--active":""),g.setAttribute("role","tab"),g.setAttribute("aria-selected",String(b===o)),g.dataset.tab=b,g.textContent=S,this.tabButtons.set(b,g),g.addEventListener("click",()=>{this.dispatchEvent(new CustomEvent("slicc-overlay-select-tab",{bubbles:!0,composed:!0,detail:{tab:b}}))}),h.appendChild(g)}a.appendChild(h);let E=t.createElement("div");E.className="viewport";let x=t.createElement("iframe");x.title="SLICC electron float",this.iframe=x,x.addEventListener("load",()=>{this.frameLoaded=!0,this.postActiveTab()}),E.appendChild(x);let f=t.createElement("div");f.className="empty-state",f.textContent="Starting the local SLICC runtime\u2026",this.emptyState=f,E.appendChild(f),a.appendChild(E),e.appendChild(a),this.iframe?.addEventListener("load",()=>{this.frameLoaded=!0,this.postActiveTab()})}sync(){let e=u(this.getAttribute("active-tab")),t=this.getAttribute("app-url")?.trim()??v;for(let[o,n]of this.tabButtons){let a=o===e;n.classList.toggle("tab-bar__tab--active",a),n.setAttribute("aria-selected",String(a))}this.emptyState?.toggleAttribute("hidden",!!t),this.syncFrameUrl(t,e),this.postActiveTab()}syncFrameUrl(e,t){if(this.iframe){if(!e){this.currentAppUrl&&(this.currentAppUrl=v,this.frameLoaded=!1,this.lastPostedTab=null,this.iframe.removeAttribute("src"));return}e!==this.currentAppUrl&&(this.currentAppUrl=e,this.frameLoaded=!1,this.lastPostedTab=null,this.iframe.src=ge(e,t))}}postActiveTab(){if(!this.frameLoaded||!this.iframe?.contentWindow)return;let e=u(this.getAttribute("active-tab"));this.lastPostedTab!==e&&(this.iframe.contentWindow.postMessage({type:Z,tab:e},"*"),this.lastPostedTab=e)}},_=class extends HTMLElement{static observedAttributes=["open","active-tab","app-url","corner"];state=T();appUrlValue=v;syncingAttributes=!1;connectedCallback(){this.state=T({open:this.hasAttribute("open"),activeTab:u(this.getAttribute("active-tab")),corner:m(this.getAttribute("corner")??D(this.ownerDocument.defaultView))}),this.appUrlValue=this.getAttribute("app-url")?.trim()??v,this.shadowRoot||this.render(),this.syncChildren(),I(this.ownerDocument.defaultView,this.state.corner),this.ownerDocument.addEventListener("keydown",this.onKeyDown,!0),this.ownerDocument.defaultView?.addEventListener("message",this.onMessage)}disconnectedCallback(){this.ownerDocument.removeEventListener("keydown",this.onKeyDown,!0),this.ownerDocument.defaultView?.removeEventListener("message",this.onMessage)}attributeChangedCallback(){this.syncingAttributes||(this.state=T({open:this.hasAttribute("open"),activeTab:u(this.getAttribute("active-tab")),corner:m(this.getAttribute("corner")??D(this.ownerDocument.defaultView))}),this.appUrlValue=this.getAttribute("app-url")?.trim()??v,this.syncChildren(),I(this.ownerDocument.defaultView,this.state.corner))}get open(){return this.state.open}set open(e){this.applyState(C(this.state,e))}get activeTab(){return this.state.activeTab}set activeTab(e){this.applyState(A(this.state,e))}get corner(){return this.state.corner}set corner(e){this.applyState(R(this.state,e))}get appUrl(){return this.appUrlValue}set appUrl(e){let t=e.trim();t!==this.appUrlValue&&(this.appUrlValue=t,this.syncingAttributes=!0,t?this.setAttribute("app-url",t):this.removeAttribute("app-url"),this.syncingAttributes=!1,this.syncChildren())}toggle(){this.applyState(j(this.state))}showSidebar(){this.applyState(C(this.state,!0))}hideSidebar(){this.applyState(C(this.state,!1))}applyState(e){e.open===this.state.open&&e.activeTab===this.state.activeTab&&e.corner===this.state.corner||(this.state=e,this.syncingAttributes=!0,this.toggleAttribute("open",e.open),this.setAttribute("active-tab",e.activeTab),this.setAttribute("corner",e.corner),this.syncingAttributes=!1,this.syncChildren(),I(this.ownerDocument.defaultView,this.state.corner))}onKeyDown=e=>{if((e.key===K||e.code===pe)&&(e.metaKey||e.ctrlKey)&&!e.shiftKey&&!e.altKey&&!e.repeat){e.preventDefault(),e.stopPropagation(),this.toggle();return}e.key!=="Escape"||!this.state.open||this.hideSidebar()};onMessage=e=>{e.data&&typeof e.data=="object"&&"type"in e.data&&e.data.type===de&&this.toggle()};render(){let e=this.attachShadow({mode:"open"}),t=this.ownerDocument;e.appendChild(V(t,`
|
|
259
|
+
${X}
|
|
260
260
|
:host {
|
|
261
261
|
all: initial;
|
|
262
262
|
position: fixed;
|
|
@@ -266,4 +266,4 @@
|
|
|
266
266
|
z-index: 2147483647;
|
|
267
267
|
contain: layout style paint;
|
|
268
268
|
}
|
|
269
|
-
`));let o=t.createElement(L);o.addEventListener("slicc-overlay-toggle",()=>this.toggle()),o.addEventListener("slicc-overlay-move",a=>{let s=a.detail?.corner;this.applyState(
|
|
269
|
+
`));let o=t.createElement(L);o.addEventListener("slicc-overlay-toggle",()=>this.toggle()),o.addEventListener("slicc-overlay-move",a=>{let s=a.detail?.corner;this.applyState(R(this.state,s))}),e.appendChild(o);let n=t.createElement(k);n.addEventListener("slicc-overlay-close",()=>this.hideSidebar()),n.addEventListener("slicc-overlay-select-tab",a=>{let s=a.detail?.tab;this.applyState(A(this.state,s))}),e.appendChild(n)}syncChildren(){let e=this.shadowRoot;if(!e)return;let t=e.querySelector(L),o=e.querySelector(k);!t||!o||(t.toggleAttribute("open",this.state.open),t.setAttribute("corner",this.state.corner),o.toggleAttribute("open",this.state.open),o.setAttribute("corner",this.state.corner),o.setAttribute("active-tab",this.state.activeTab),this.appUrlValue?o.setAttribute("app-url",this.appUrlValue):o.removeAttribute("app-url"))}};function he(r=customElements){r.get(L)||r.define(L,P),r.get(k)||r.define(k,Y),r.get(N)||r.define(N,_)}function Q(r=document,e={}){he(r.defaultView?.customElements??customElements);let t=r.getElementById(U),o;return t instanceof _?o=t:(t?.remove(),o=r.createElement(N)),o.id=U,o.isConnected||(r.body??r.documentElement).appendChild(o),typeof e.open=="boolean"&&(o.open=e.open),e.activeTab!==void 0&&(o.activeTab=u(e.activeTab)),e.appUrl!==void 0&&(o.appUrl=e.appUrl??v),e.corner!==void 0&&(o.corner=e.corner??D(r.defaultView)),o}function ee(r=document){r.getElementById(U)?.remove()}function D(r){try{return m(r?.localStorage.getItem(J))}catch{return m(null)}}function I(r,e){try{r?.localStorage.setItem(J,e)}catch{}}function G(r,e,t){return Math.min(Math.max(r,e),t)}window.__SLICC_ELECTRON_OVERLAY__={inject(r={}){try{Q(document,r)}catch(e){console.error("[slicc-overlay] Injection failed:",e)}},remove(){try{ee(document)}catch(r){console.error("[slicc-overlay] Removal failed:",r)}}};})();
|
package/dist/ui/index.html
CHANGED
|
@@ -5,8 +5,9 @@
|
|
|
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/
|
|
9
|
-
<link rel="
|
|
8
|
+
<script type="module" crossorigin src="/assets/main-CGBwb-Z7.js"></script>
|
|
9
|
+
<link rel="modulepreload" crossorigin href="/assets/modulepreload-polyfill-wMinxHhO.js">
|
|
10
|
+
<link rel="stylesheet" crossorigin href="/assets/main-CvlDeETm.css">
|
|
10
11
|
</head>
|
|
11
12
|
<body>
|
|
12
13
|
<div id="app"></div>
|
package/dist/ui/llm-proxy-sw.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";(()=>{function
|
|
1
|
+
"use strict";(()=>{function c(e){if(!e)return{};let r={};for(let[t,o]of Object.entries(e)){let n=t.toLowerCase();n==="cookie"?r["X-Proxy-Cookie"]=o:n==="origin"?r["X-Proxy-Origin"]=o:n==="referer"?r["X-Proxy-Referer"]=o:n.startsWith("proxy-")?r[`X-Proxy-${t}`]=o:r[t]=o}return r}function d(e){return new Response(e.body,{status:e.status,statusText:e.statusText,headers:e.headers})}var g="/api/fetch-proxy",f="x-bypass-llm-proxy";self.importScripts("/preview-sw.js");self.addEventListener("install",e=>{e.waitUntil(self.skipWaiting())});self.addEventListener("activate",e=>{e.waitUntil(self.clients.claim())});self.addEventListener("fetch",e=>{let r=e.request;if(r.headers.get(f)==="1")return;let t;try{t=new URL(r.url)}catch{return}t.origin!==self.location.origin&&(t.protocol!=="http:"&&t.protocol!=="https:"||e.respondWith(R(r)))});async function R(e){let r=e.url,t={};e.headers.forEach((i,s)=>{s.toLowerCase()!==f&&(t[s]=i)});let o=c(t),n=new Headers;for(let[i,s]of Object.entries(o))n.set(i,s);n.set("X-Target-URL",r);let a=await p(e),u={method:e.method,headers:n,cache:"no-store",credentials:"omit",redirect:"manual",signal:e.signal,body:a},l=await fetch(g,u);return d(l)}async function p(e){if(e.method==="GET"||e.method==="HEAD")return;let r=await e.arrayBuffer();return r.byteLength>0?r:void 0}})();
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<title>SLICC cloud cones</title>
|
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
7
|
+
<script type="module" crossorigin src="/assets/cloud-CCHD45tb.js"></script>
|
|
8
|
+
<link rel="modulepreload" crossorigin href="/assets/modulepreload-polyfill-wMinxHhO.js">
|
|
9
|
+
<link rel="stylesheet" crossorigin href="/assets/cloud-DyAca2cv.css">
|
|
10
|
+
</head>
|
|
11
|
+
<body>
|
|
12
|
+
<header>
|
|
13
|
+
<h1>Cloud cones</h1>
|
|
14
|
+
<div id="user-box" class="hidden">
|
|
15
|
+
<span id="user-label"></span>
|
|
16
|
+
<button id="sign-out-btn">Sign out</button>
|
|
17
|
+
</div>
|
|
18
|
+
</header>
|
|
19
|
+
|
|
20
|
+
<main id="signed-out" class="hidden">
|
|
21
|
+
<button id="sign-in-btn">Sign in with Adobe</button>
|
|
22
|
+
</main>
|
|
23
|
+
|
|
24
|
+
<main id="signed-in" class="hidden">
|
|
25
|
+
<section class="create-row">
|
|
26
|
+
<input id="cone-name" placeholder="name (optional)" autocomplete="off" />
|
|
27
|
+
<button id="create-btn">+ New cone</button>
|
|
28
|
+
<span id="create-status" class="status"></span>
|
|
29
|
+
</section>
|
|
30
|
+
<section class="list">
|
|
31
|
+
<ul id="cone-list"></ul>
|
|
32
|
+
<div id="cap-info" class="cap-info"></div>
|
|
33
|
+
</section>
|
|
34
|
+
</main>
|
|
35
|
+
|
|
36
|
+
<div id="toast" class="toast hidden" role="status" aria-live="polite"></div>
|
|
37
|
+
</body>
|
|
38
|
+
</html>
|
|
@@ -5,8 +5,9 @@
|
|
|
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/
|
|
9
|
-
<link rel="
|
|
8
|
+
<script type="module" crossorigin src="/assets/main-CGBwb-Z7.js"></script>
|
|
9
|
+
<link rel="modulepreload" crossorigin href="/assets/modulepreload-polyfill-wMinxHhO.js">
|
|
10
|
+
<link rel="stylesheet" crossorigin href="/assets/main-CvlDeETm.css">
|
|
10
11
|
</head>
|
|
11
12
|
<body>
|
|
12
13
|
<div id="app"></div>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sliccy",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.7.0",
|
|
4
4
|
"description": "Browser-based coding agent with thin CLI server",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
},
|
|
26
26
|
"workspaces": [
|
|
27
27
|
"packages/shared-ts",
|
|
28
|
+
"packages/cloud-core",
|
|
28
29
|
"packages/webapp",
|
|
29
30
|
"packages/node-server",
|
|
30
31
|
"packages/chrome-extension",
|
|
@@ -35,12 +36,12 @@
|
|
|
35
36
|
"scripts": {
|
|
36
37
|
"dev": "tsx packages/node-server/src/index.ts --dev",
|
|
37
38
|
"dev:electron": "tsx packages/node-server/src/index.ts --dev --electron",
|
|
38
|
-
"build": "npm run build -w @slicc/shared-ts && npm run build -w @slicc/webapp && npm run build -w @slicc/node-server && npm run build -w @slicc/chrome-extension && npm run build -w @slicc/cloudflare-worker && npm run build -w @slicc/swift-server && npm run build -w @slicc/swift-launcher",
|
|
39
|
+
"build": "npm run build -w @slicc/shared-ts && npm run build -w @slicc/cloud-core && npm run build -w @slicc/webapp && npm run build -w @slicc/node-server && npm run build -w @slicc/chrome-extension && npm run build -w @slicc/cloudflare-worker && npm run build -w @slicc/swift-server && npm run build -w @slicc/swift-launcher",
|
|
39
40
|
"start": "node dist/node-server/index.js",
|
|
40
41
|
"start:electron": "node dist/node-server/index.js --electron",
|
|
41
42
|
"preflight": "node packages/dev-tools/tools/preflight-deps.mjs",
|
|
42
43
|
"pretypecheck": "npm run preflight",
|
|
43
|
-
"typecheck": "tsc --noEmit -p tsconfig.cli.json && tsc --noEmit -p tsconfig.json && tsc --noEmit -p tsconfig.worker.json && tsc --noEmit -p tsconfig.webapp-worker.json",
|
|
44
|
+
"typecheck": "tsc --noEmit -p tsconfig.cli.json && tsc --noEmit -p tsconfig.json && tsc --noEmit -p tsconfig.worker.json && tsc --noEmit -p tsconfig.webapp-worker.json && tsc --noEmit -p packages/cloud-core/tsconfig.json",
|
|
44
45
|
"pretest": "npm run preflight",
|
|
45
46
|
"test": "vitest run",
|
|
46
47
|
"test:coverage": "vitest run --coverage",
|
|
@@ -59,11 +60,12 @@
|
|
|
59
60
|
"deadcode:swift": "npm run deadcode -w @slicc/swift-server && npm run deadcode -w @slicc/swift-launcher",
|
|
60
61
|
"package:release": "node dist/node-server/release-package.js",
|
|
61
62
|
"publish:chrome": "node dist/node-server/publish-chrome-web-store.js",
|
|
62
|
-
"publish:worker": "
|
|
63
|
-
"postinstall": "if [ -d packages/shared-ts ]; then npm run build -w @slicc/shared-ts; fi",
|
|
63
|
+
"publish:worker": "bash packages/cloudflare-worker/scripts/publish-worker.sh",
|
|
64
|
+
"postinstall": "if [ -d packages/shared-ts ]; then npm run build -w @slicc/shared-ts; fi && if [ -d packages/cloud-core ]; then npm run build -w @slicc/cloud-core; fi",
|
|
64
65
|
"prepare": "husky"
|
|
65
66
|
},
|
|
66
67
|
"dependencies": {
|
|
68
|
+
"e2b": "^2.23.0",
|
|
67
69
|
"express": "^5.0.0",
|
|
68
70
|
"pyodide": "0.29.4",
|
|
69
71
|
"ws": "^8.18.0"
|
|
@@ -84,11 +86,11 @@
|
|
|
84
86
|
"lint-staged": "17.0.5",
|
|
85
87
|
"prettier": "3.8.3",
|
|
86
88
|
"semantic-release": "25.0.3",
|
|
87
|
-
"tsx": "4.22.
|
|
89
|
+
"tsx": "4.22.3",
|
|
88
90
|
"typescript": "^6.0.0",
|
|
89
91
|
"typescript-eslint": "8.59.4",
|
|
90
92
|
"vite": "8.0.13",
|
|
91
|
-
"vitest": "4.1.
|
|
93
|
+
"vitest": "4.1.7"
|
|
92
94
|
},
|
|
93
95
|
"lint-staged": {
|
|
94
96
|
"**/*.{ts,js,mjs}": [
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/oauth-service-DJF7cZo7.js","assets/index-BdDYVKjf.js","assets/index-CvlDeETm.css"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{B as e,I as t,K as n,L as r,N as i,P as a,U as o,W as s,Y as c,c as l,f as u,h as d,l as f}from"./index-BdDYVKjf.js";import{getOAuthPageOrigin as p}from"./oauth-service-DJF7cZo7.js";var m=Object.assign({"/packages/webapp/providers/adobe-config.json":{proxyEndpoint:`https://adobe-llm-proxy.paolo-moz.workers.dev`,redirectUri:`https://www.sliccy.ai/auth/callback`,extensionRedirectUri:`https://akjjllgokmbgpbdbmafpiefnhidlmbgf.chromiumapp.org/adobe`}})[`/packages/webapp/providers/adobe-config.json`]??{clientId:``,proxyEndpoint:``,scopes:`openid,profile,email`};function h(){let e=u(`adobe`);if(e)return e.replace(/\/$/,``);if(m.proxyEndpoint)return m.proxyEndpoint.replace(/\/$/,``);throw Error(`Adobe proxy endpoint not configured — set it in Settings or adobe-config.json`)}var g=new Map,_=new Map;async function v(e){let t=g.get(e);if(t)return t;try{let t=await fetch(`${e}/v1/config`,{headers:{[N]:`3.5.5`}});if(t.ok){let n=await t.json();return g.set(e,n),n}console.warn(`[adobe] Proxy /v1/config returned ${t.status}, falling back to build-time config`)}catch(e){console.warn(`[adobe] Failed to fetch proxy config:`,e instanceof Error?e.message:String(e))}let n={};return g.set(e,n),n}function y(e){let t=e.clientId||m.clientId;if(!t)throw Error(`Could not determine IMS client ID — proxy /v1/config did not return one and adobe-config.json is empty`);return t}function b(e){return e.scopes||m.scopes}function x(e){return e.imsEnvironment||m.imsEnvironment||`prod`}var S={prod:`https://ims-na1.adobelogin.com`,stg1:`https://ims-na1-stg1.adobelogin.com`};function C(e){return S[e??m.imsEnvironment??`prod`]??S.prod}var w=typeof chrome<`u`&&!!chrome?.runtime?.id;function T(){return f().find(e=>e.providerId===`adobe`)}async function E(e,t){try{let n=await fetch(`${C(t)}/ims/userinfo/v2`,{headers:{Authorization:`Bearer ${e}`}});if(n.ok){let e=await n.json();return{name:e.displayName||e.name||e.email,avatar:e.picture||e.avatar_url}}console.warn(`[adobe] User profile fetch returned ${n.status}, account will have no display name`)}catch(e){console.warn(`[adobe] Failed to fetch user profile:`,e instanceof Error?e.message:String(e))}return{}}function D(e){let t=e.indexOf(`#`);if(t<0)return null;let n=new URLSearchParams(e.slice(t+1)),r=n.get(`access_token`);return r?{accessToken:r,expiresIn:parseInt(n.get(`expires_in`)??`86400`,10)}:null}var O={id:`adobe`,name:`Adobe`,description:`Claude via Adobe — login with your Adobe ID`,requiresApiKey:!1,requiresBaseUrl:!m.proxyEndpoint,baseUrlPlaceholder:`https://your-proxy.example.com`,baseUrlDescription:`Anthropic-compatible proxy endpoint`,isOAuth:!0,defaultModelId:`sonnet`,oauthTokenDomains:[`ims-na1.adobelogin.com`,`ims-na1-stg1.adobelogin.com`,`*.adobelogin.com`,`*.adobe.io`,`firefall.adobe.io`,`admin.hlx.page`,`admin.hlx.live`,`admin.aem.page`,`admin.aem.live`],getModelIds:()=>{let e=e=>{let t={id:e.id,name:e.name??e.id},n=_.get(e.id);return n?.api&&(t.api=n.api),n?.context_window!==void 0&&(t.context_window=n.context_window),n?.max_tokens!==void 0&&(t.max_tokens=n.max_tokens),n?.reasoning!==void 0&&(t.reasoning=n.reasoning),n?.input&&(t.input=n.input),/haiku/i.test(e.id)&&(t.compat={supportsEagerToolInputStreaming:!1}),t};for(let t of U.values())if(t.length){let n=t.map(t=>e({id:t.id,name:t.name??t.id}));try{localStorage.setItem(`slicc-adobe-models`,JSON.stringify(n))}catch{}return n}for(let t of g.values())if(t.models?.length)return t.models.map(e);try{let e=localStorage.getItem(`slicc-adobe-models`);if(e){let t=JSON.parse(e);if(t.length)return t}}catch{}return[{id:`claude-sonnet-4-6`,name:`Claude Sonnet 4.6`}]},onOAuthLogin:async(e,t)=>{let n=h(),r=await v(n),i=y(r),a=b(r),o=x(r),s=w?null:await p(),c=w?m.extensionRedirectUri??`https://${chrome.runtime.id}.chromiumapp.org/`:m.redirectUri??`${s.origin}/auth/callback`,l=w?void 0:btoa(JSON.stringify({port:parseInt(new URL(s.href).port||`5710`,10),path:`/auth/callback`,nonce:crypto.randomUUID()})),u=l?JSON.parse(atob(l)).nonce:null,f=new URLSearchParams({client_id:i,scope:a,response_type:`token`,redirect_uri:c});l&&f.set(`state`,l);let g=await e(`${C(o)}/ims/authorize/v2?${f}`);if(!g)return;if(u&&g)try{if(new URL(g).searchParams.get(`nonce`)!==u){console.error(`[adobe] OAuth nonce mismatch — possible CSRF`);return}}catch(e){console.warn(`[adobe] Nonce check skipped (URL parse failed):`,e instanceof Error?e.message:String(e))}let _=D(g);if(!_){console.error(`[adobe] Could not extract token from redirect URL`);return}let S=await E(_.accessToken,o);await d({providerId:`adobe`,accessToken:_.accessToken,tokenExpiresAt:Date.now()+_.expiresIn*1e3,userName:S.name,userAvatar:S.avatar,baseUrl:m.proxyEndpoint?void 0:n}),await W().catch(e=>console.warn(`[adobe] Failed to fetch models after login:`,e instanceof Error?e.message:String(e))),t()},onOAuthLogout:async()=>{let e=T();if(e?.accessToken)try{let t=g.values().next().value??{},n=t.clientId||m.clientId,r=x(t);if(n){let t=await fetch(`${C(r)}/ims/revoke`,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:new URLSearchParams({token:e.accessToken,token_type_hint:`access_token`,client_id:n})});t.ok||console.warn(`[adobe] Token revocation returned ${t.status}, token may still be valid server-side`)}}catch(e){console.warn(`[adobe] Failed to revoke token:`,e instanceof Error?e.message:String(e))}await d({providerId:`adobe`,accessToken:``})},onSilentRenew:async()=>T()?.accessToken?M():null},k=null;async function A(){let e=T();if(!e?.accessToken)throw Error(`Not logged in to Adobe — please log in first`);if((e.tokenExpiresAt??0)-Date.now()>6e4)return e.accessToken;console.log(`[adobe] Token expired or expiring soon, attempting silent renewal...`);try{let e=await M();if(e)return e}catch(e){console.warn(`[adobe] Silent renewal failed:`,e instanceof Error?e.message:String(e))}let t=T();if((t?.tokenExpiresAt??0)-Date.now()>0&&t?.accessToken)return t.accessToken;throw Error(`Adobe session expired — please log in again`)}function j(){let e=T();return e?.tokenExpiresAt?Date.now()>e.tokenExpiresAt-6e4:!0}async function M(){return typeof window>`u`?null:k||(k=(async()=>{try{let e=h(),t=await v(e),n=y(t),r=b(t),i=x(t),a=w?m.extensionRedirectUri??`https://${chrome.runtime.id}.chromiumapp.org/`:m.redirectUri??`${window.location.origin}/auth/callback`,o=w?void 0:btoa(JSON.stringify({port:parseInt(new URL(window.location.href).port||`5710`,10),path:`/auth/callback`,nonce:crypto.randomUUID()})),s=o?JSON.parse(atob(o)).nonce:null,l=new URLSearchParams({client_id:n,scope:r,response_type:`token`,redirect_uri:a,prompt:`none`});o&&l.set(`state`,o);let u=`${C(i)}/ims/authorize/v2?${l}`,{createOAuthLauncher:f}=await c(async()=>{let{createOAuthLauncher:e}=await import(`./oauth-service-DJF7cZo7.js`);return{createOAuthLauncher:e}},__vite__mapDeps([0,1,2])),p=await f()(u);if(!p)return null;if(s&&p)try{if(new URL(p).searchParams.get(`nonce`)!==s)return console.error(`[adobe] OAuth nonce mismatch — possible CSRF`),null}catch(e){console.warn(`[adobe] Nonce check skipped (URL parse failed):`,e instanceof Error?e.message:String(e))}let g=D(p);if(!g)return null;let _=T();return await d({providerId:`adobe`,accessToken:g.accessToken,tokenExpiresAt:Date.now()+g.expiresIn*1e3,userName:_?.userName,userAvatar:_?.userAvatar,baseUrl:m.proxyEndpoint?void 0:e}),console.log(`[adobe] Token renewed silently`),await W().catch(e=>console.warn(`[adobe] Failed to refresh models after silent renewal:`,e instanceof Error?e.message:String(e))),g.accessToken}catch(e){return console.warn(`[adobe] Silent renewal error:`,e instanceof Error?e.message:String(e)),null}finally{k=null}})(),k)}var N=`X-Slicc-Version`;function P(e){let t={},n=N.toLowerCase();if(e.headers)for(let[r,i]of Object.entries(e.headers))r.toLowerCase()!==n&&(t[r]=i);return t[N]=`3.5.5`,{...e,headers:t}}var F=`adobe-provider-fallback`,I=new Set;function L(e,t){if(e.headers){for(let t of Object.keys(e.headers))if(t.toLowerCase()===`x-session-id`)return e}return I.has(t)||(I.add(t),console.warn(`[adobe] Missing X-Session-Id from ${t} — using daily fallback. Attach an X-Session-Id header at the call site (see scoop-context.ts streamWithSessionId or docs/pitfalls.md).`)),{...e,headers:{...e.headers??{},"X-Session-Id":l(F)}}}function R(){I.clear()}function z(e,t){return{type:`error`,reason:`error`,error:{role:`assistant`,content:[],api:`adobe-anthropic`,provider:`adobe`,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()}}}var B=(t,n,r={})=>{let o=e();return(async()=>{try{let e=await A();if(String(t.api).includes(`openai`)){let i=a({...t,baseUrl:`${h()}/v1`,api:`openai-completions`,compat:{...t.compat,supportsStore:!1,supportsDeveloperRole:!1}},n,P(L({...r,apiKey:e},`streamAdobe[openai]`)));for await(let e of i)o.push(e)}else{let a=i({...t,baseUrl:h(),api:`anthropic-messages`},n,P(L({...r,apiKey:e},`streamAdobe[anthropic]`)));for await(let e of a)o.push(e)}o.end()}catch(e){console.error(`[adobe] Stream error:`,e instanceof Error?e.message:String(e)),o.push(z(t,e)),o.end()}})(),o},V=(n,i,a)=>{let o=e();return(async()=>{try{let e=await A();if(String(n.api).includes(`openai`)){let t=r({...n,baseUrl:`${h()}/v1`,api:`openai-completions`,compat:{...n.compat,supportsStore:!1,supportsDeveloperRole:!1}},i,P(L({...a,apiKey:e},`streamSimpleAdobe[openai]`)));for await(let e of t)o.push(e)}else{let r=t({...n,baseUrl:h(),api:`anthropic-messages`},i,P(L({...a,apiKey:e},`streamSimpleAdobe[anthropic]`)));for await(let e of r)o.push(e)}o.end()}catch(e){console.error(`[adobe] Stream error:`,e instanceof Error?e.message:String(e)),o.push(z(n,e)),o.end()}})(),o};async function H(){try{let e=await A(),t=h(),n=await fetch(`${t}/v1/models`,{headers:{Authorization:`Bearer ${e}`,[N]:`3.5.5`}});if(n.ok){let e=await n.json();if(e.data?.length){for(let t of e.data){let e={id:t.id,name:t.name};t.api!==void 0&&(e.api=t.api),t.context_window!==void 0&&(e.context_window=t.context_window),t.max_tokens!==void 0&&(e.max_tokens=t.max_tokens),t.reasoning!==void 0&&(e.reasoning=t.reasoning),t.input!==void 0&&(e.input=t.input),_.set(t.id,e)}let n=new Map;for(let e of s())try{for(let t of o(e))n.set(t.id,t)}catch{}return e.data.map(e=>{let r=n.get(e.id),i=`adobe-${e.api===`openai`?`openai`:`anthropic`}`;return r?{...r,provider:`adobe`,api:i}:{id:e.id,name:e.name??e.id,provider:`adobe`,api:i,baseUrl:t,contextWindow:2e5,maxTokens:16384,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},inputCost:0,outputCost:0,cacheReadCost:0,cacheWriteCost:0,reasoning:!0}})}}else console.warn(`[adobe] Proxy /v1/models returned ${n.status}, falling back to Anthropic models`)}catch(e){console.warn(`[adobe] Failed to fetch proxy models:`,e instanceof Error?e.message:String(e))}return o(`anthropic`).map(e=>({...e,provider:`adobe`,api:`adobe-anthropic`}))}var U=new Map;async function W(){let e=h(),t=U.get(e);if(t)return t;let n=await H();return U.set(e,n),n}function G(){n({api:`adobe-anthropic`,stream:B,streamSimple:V}),n({api:`adobe-openai`,stream:B,streamSimple:V})}export{R as __resetAdobeSessionIdWarningCacheForTests,O as config,W as getAdobeModels,A as getValidAccessToken,j as isTokenExpired,G as register};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{X as e}from"./index-BdDYVKjf.js";var t=e(`agent-bridge`),n=`__slicc_agent`,r=`agent-spawn-request`;function i(){let e={spawn(e){return new Promise((t,n)=>{let i=globalThis.chrome?.runtime;if(!i||typeof i.sendMessage!=`function`){n(Error(`agent: chrome.runtime.sendMessage not available`));return}let a=e=>{let r=i.lastError;if(r){n(Error(r.message??`chrome.runtime error`));return}if(e==null){n(Error(`agent: empty response from offscreen bridge`));return}let a=e;if(!a.ok){n(Error(a.error??`agent: offscreen bridge error`));return}if(!a.result){n(Error(`agent: offscreen bridge returned no result`));return}t(a.result)};try{i.sendMessage({source:`panel`,payload:{type:r,options:e}},a)}catch(e){n(e instanceof Error?e:Error(String(e)))}})}};return globalThis[n]=e,t.info(`agent bridge proxy published on globalThis.__slicc_agent`),e}export{i as publishAgentBridgeProxy};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{B as e,K as t,V as n,b as r,d as i,p as a,y as o}from"./index-BdDYVKjf.js";import{t as s}from"./openai-Bf1npfRy.js";var c=`azure-openai`,l=`2024-12-01-preview`,u={id:c,name:`Azure OpenAI`,description:`GPT models via Azure AI Foundry`,requiresApiKey:!0,apiKeyPlaceholder:`Azure API key`,apiKeyEnvVar:`AZURE_OPENAI_API_KEY`,requiresBaseUrl:!0,baseUrlPlaceholder:`https://your-resource.cognitiveservices.azure.com/`,baseUrlDescription:`Azure resource endpoint`,requiresDeployment:!0,deploymentPlaceholder:`gpt-4.1-mini, gpt-4o, o4-mini`,deploymentDescription:`Comma-separated deployment names (from Azure Portal → Deployments)`,requiresApiVersion:!0,apiVersionDefault:l,apiVersionDescription:`Azure OpenAI API version`,getModelIds:()=>{let e=a(c);if(!e)return[{id:`azure-unconfigured`,name:`Azure OpenAI (set deployments in Settings)`}];let t=e.split(`,`).map(e=>e.trim()).filter(Boolean);return t.length===0?[{id:`azure-unconfigured`,name:`Azure OpenAI (set deployments in Settings)`}]:t.map(e=>{let t=e.startsWith(`o1`)||e.startsWith(`o3`)||e.startsWith(`o4`);return{id:e,name:`${e} (Azure)`,reasoning:t,input:[`text`,`image`]}})}};function d(e){return e.replace(/[^a-zA-Z0-9_-]/g,`_`).slice(0,64)}function f(e,t){let n=r(e.messages,t,d),i=[];for(let e of n)if(e.role===`user`)if(typeof e.content==`string`)i.push({role:`user`,content:e.content});else{let t=e.content.map(e=>e.type===`text`?{type:`text`,text:e.text??``}:e.type===`image`?{type:`image_url`,image_url:{url:`data:${e.mimeType};base64,${e.data}`}}:{type:`text`,text:JSON.stringify(e)});i.push({role:`user`,content:t})}else if(e.role===`assistant`){let t=e.content,n=t.filter(e=>e.type===`text`).map(e=>e.text??``).join(``),r=t.filter(e=>e.type===`toolCall`).map(e=>({id:e.id??``,type:`function`,function:{name:e.name??``,arguments:JSON.stringify(e.arguments??{})}}));r.length?i.push({role:`assistant`,content:n||null,tool_calls:r}):i.push({role:`assistant`,content:n})}else if(e.role===`toolResult`){let t=e.content;i.push({role:`tool`,tool_call_id:e.toolCallId??``,content:t?.map(e=>e.type===`text`?e.text??``:JSON.stringify(e)).join(``)||``})}return i}function p(e){if(e?.length)return e.map(e=>({type:`function`,function:{name:e.name,description:e.description,parameters:e.parameters}}))}function m(e){let t=e.content.find(e=>e.type===`text`);if(t)return{block:t,index:e.content.indexOf(t)};let n={type:`text`,text:``};return e.content.push(n),{block:n,index:e.content.length-1}}function h(e,t){return e.content.find(e=>e.type===`toolCall`&&e.id===t)}var g=(t,r,a={})=>{let o=e();return(async()=>{let e={role:`assistant`,content:[],api:`azure-openai-anthropic`,provider:c,model:t.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()};try{let u=a.apiKey;if(!u)throw Error(`Azure API key is required`);let d=t.baseUrl;if(!d)throw Error(`Azure endpoint is required`);let g=t.id,_={};t.headers&&Object.assign(_,t.headers),a.headers&&Object.assign(_,a.headers);let v=i(c)||l,y=new s({endpoint:d.replace(/\/+$/,``),apiKey:u,deployment:g,apiVersion:v,dangerouslyAllowBrowser:!0,defaultHeaders:_}),b=[...r.systemPrompt?[{role:`system`,content:r.systemPrompt}]:[],...f(r,t)],x=p(r.tools),S=await y.chat.completions.create({model:g,messages:b,stream:!0,stream_options:{include_usage:!0},...a.maxTokens?{max_completion_tokens:a.maxTokens}:{},...a.temperature===void 0?{}:{temperature:a.temperature},...x?{tools:x}:{}});o.push({type:`start`,partial:e});for await(let r of S){r.usage&&(e.usage.input=r.usage.prompt_tokens??0,e.usage.output=r.usage.completion_tokens??0,e.usage.totalTokens=r.usage.total_tokens??0,n(t,e.usage));for(let t of r.choices??[]){let n=t.delta;if(n){if(n.content){let{block:t,index:r}=m(e);t.text===``&&o.push({type:`text_start`,contentIndex:r,partial:e}),t.text+=n.content,o.push({type:`text_delta`,contentIndex:r,delta:n.content,partial:e})}if(n.tool_calls)for(let t of n.tool_calls){let n=t.id?h(e,t.id):void 0;if(!n&&t.id&&(n={type:`toolCall`,id:t.id,name:t.function?.name??``,arguments:{},_partialJson:``},e.content.push(n),o.push({type:`toolcall_start`,contentIndex:e.content.length-1,partial:e})),n&&t.function?.arguments){n._partialJson+=t.function.arguments;try{n.arguments=JSON.parse(n._partialJson)}catch{}o.push({type:`toolcall_delta`,contentIndex:e.content.indexOf(n),delta:t.function.arguments,partial:e})}}t.finish_reason&&(e.stopReason=t.finish_reason===`tool_calls`?`toolUse`:t.finish_reason===`length`?`length`:`stop`)}}}for(let t of e.content){let n=e.content.indexOf(t);if(t.type===`toolCall`){let r=t;try{r.arguments=JSON.parse(r._partialJson||`{}`)}catch{}delete r._partialJson,o.push({type:`toolcall_end`,contentIndex:n,toolCall:t,partial:e})}else t.type===`text`&&o.push({type:`text_end`,contentIndex:n,content:t.text,partial:e})}o.push({type:`done`,reason:e.stopReason,message:e}),o.end()}catch(t){e.stopReason=a.signal?.aborted?`aborted`:`error`,e.errorMessage=t instanceof Error?t.message:JSON.stringify(t),o.push({type:`error`,reason:e.stopReason,error:e}),o.end()}})(),o},_=(e,t,n)=>{let r=n?.apiKey;if(!r)throw Error(`Azure API key is required`);return g(e,t,{...o(e,n,r)})};function v(){t({api:`azure-openai-anthropic`,stream:g,streamSimple:_})}export{u as config,v as register};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{G as e,H as t,y as n,z as r}from"./index-BdDYVKjf.js";import{t as i}from"./headers-AeYLn7L4.js";import{t as a}from"./openai-Bf1npfRy.js";import{n as o,r as s,t as c}from"./openai-responses-shared-DxBvmwvL.js";var l=`v1`,u=new Set([`openai`,`openai-codex`,`opencode`,`azure-openai-responses`]);function d(e){let t=new Map;if(!e)return t;for(let n of e.split(`,`)){let e=n.trim();if(!e)continue;let[r,i]=e.split(`=`,2);!r||!i||t.set(r.trim(),i.trim())}return t}function f(e,t){return t?.azureDeploymentName?t.azureDeploymentName:d({}.AZURE_OPENAI_DEPLOYMENT_NAME_MAP).get(e.id)||e.id}function p(e){if(e instanceof Error){let t=e.status,n=typeof t==`number`?t:void 0;return n===void 0?e.message:`Azure OpenAI API error (${n}): ${e.message}`}try{return JSON.stringify(e)}catch{return String(e)}}var m=(t,n,a)=>{let o=new r;return(async()=>{let r=f(t,a),c={role:`assistant`,content:[],api:`azure-openai-responses`,provider:t.provider,model:t.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()};try{let l=y(t,a?.apiKey||e(t.provider)||``,a),u=b(t,n,a,r),d=await a?.onPayload?.(u,t);d!==void 0&&(u=d);let f={...a?.signal?{signal:a.signal}:{},...a?.timeoutMs===void 0?{}:{timeout:a.timeoutMs},...a?.maxRetries===void 0?{}:{maxRetries:a.maxRetries}},{data:p,response:m}=await l.responses.create(u,f).withResponse();if(await a?.onResponse?.({status:m.status,headers:i(m.headers)},t),o.push({type:`start`,partial:c}),await s(p,c,o,t),a?.signal?.aborted)throw Error(`Request was aborted`);if(c.stopReason===`aborted`||c.stopReason===`error`)throw Error(`An unknown error occurred`);o.push({type:`done`,reason:c.stopReason,message:c}),o.end()}catch(e){for(let e of c.content)delete e.index,delete e.partialJson;c.stopReason=a?.signal?.aborted?`aborted`:`error`,c.errorMessage=p(e),o.push({type:`error`,reason:c.stopReason,error:c}),o.end()}})(),o},h=(r,i,a)=>{let o=a?.apiKey||e(r.provider);if(!o)throw Error(`No API key for provider: ${r.provider}`);let s=n(r,a,o),c=a?.reasoning?t(r,a.reasoning):void 0,l=c===`off`?void 0:c;return m(r,i,{...s,reasoningEffort:l})};function g(e){let t=e.trim().replace(/\/+$/,``),n;try{n=new URL(t)}catch{throw Error(`Invalid Azure OpenAI base URL: ${e}`)}let r=n.hostname.endsWith(`.openai.azure.com`)||n.hostname.endsWith(`.cognitiveservices.azure.com`),i=n.pathname.replace(/\/+$/,``);return r&&(i===``||i===`/`||i===`/openai`)&&(n.pathname=`/openai/v1`,n.search=``),n.toString().replace(/\/+$/,``)}function _(e){return`https://${e}.openai.azure.com/openai/v1`}function v(e,t){let n=t?.azureApiVersion||{}.AZURE_OPENAI_API_VERSION||l,r=t?.azureBaseUrl?.trim()||{}.AZURE_OPENAI_BASE_URL?.trim()||void 0,i=t?.azureResourceName||{}.AZURE_OPENAI_RESOURCE_NAME,a=r;if(!a&&i&&(a=_(i)),!a&&e.baseUrl&&(a=e.baseUrl),!a)throw Error(`Azure OpenAI base URL is required. Set AZURE_OPENAI_BASE_URL or AZURE_OPENAI_RESOURCE_NAME, or pass azureBaseUrl, azureResourceName, or model.baseUrl.`);return{baseUrl:g(a),apiVersion:n}}function y(e,t,n){if(!t){if(!{}.AZURE_OPENAI_API_KEY)throw Error(`Azure OpenAI API key is required. Set AZURE_OPENAI_API_KEY environment variable or pass it as an argument.`);t={}.AZURE_OPENAI_API_KEY}let r={...e.headers};n?.headers&&Object.assign(r,n.headers);let{baseUrl:i,apiVersion:o}=v(e,n);return new a({apiKey:t,apiVersion:o,dangerouslyAllowBrowser:!0,defaultHeaders:r,baseURL:i})}function b(e,t,n,r){let i={model:r,input:c(e,t,u),stream:!0,prompt_cache_key:n?.sessionId};return n?.maxTokens&&(i.max_output_tokens=n?.maxTokens),n?.temperature!==void 0&&(i.temperature=n?.temperature),t.tools&&t.tools.length>0&&(i.tools=o(t.tools)),e.reasoning&&(n?.reasoningEffort||n?.reasoningSummary?(i.reasoning={effort:n?.reasoningEffort?e.thinkingLevelMap?.[n.reasoningEffort]??n.reasoningEffort:`medium`,summary:n?.reasoningSummary||`auto`},i.include=[`reasoning.encrypted_content`]):e.thinkingLevelMap?.off!==null&&(i.reasoning={effort:e.thinkingLevelMap?.off??`none`})),i}export{m as streamAzureOpenAIResponses,h as streamSimpleAzureOpenAIResponses};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./index-BdDYVKjf.js";function e(e){}export{e as registerSessionCostsProvider};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./index-BdDYVKjf.js";var t=15e3,n=class{sender;listeners;pending=new Map;unsubscribe;fetchTimeoutMs;nextId=1;disposed=!1;constructor(n,r,i={},a={}){this.sender=n,this.listeners=i,this.fetchTimeoutMs=a.fetchTimeoutMs??t,this.unsubscribe=r.onMessage(t=>{if(t.source!==`offscreen`)return;let n=e(t.payload,`follower-sprinkles-list`);if(n){this.listeners.onSprinklesList?.(n.sprinkles);return}let r=e(t.payload,`follower-sprinkle-update`);if(r){this.listeners.onSprinkleUpdate?.(r.sprinkleName,r.data);return}let i=e(t.payload,`follower-sprinkle-fetch-result`);if(i){let e=this.pending.get(i.id);if(!e)return;clearTimeout(e.timer),this.pending.delete(i.id),i.ok===!0?e.resolve(i.content):i.ok===!1?e.reject(Error(i.error)):e.reject(Error("Malformed follower-sprinkle-fetch-result: missing or non-boolean `ok`"))}})}fetchSprinkleContent(e){if(this.disposed)return Promise.reject(Error(`PanelFollowerSprinkleProxy disposed`));let t=`panel-${Date.now()}-${this.nextId++}`;return new Promise((n,r)=>{let i=setTimeout(()=>{this.pending.delete(t);let n={type:`follower-sprinkle-fetch-cancel`,sprinkleName:e};this.sender.send({source:`panel`,payload:n}),r(Error(`follower-sprinkle-fetch for "${e}" timed out after ${this.fetchTimeoutMs}ms — offscreen document may not be in follower mode`))},this.fetchTimeoutMs);this.pending.set(t,{resolve:n,reject:r,timer:i});let a={type:`follower-sprinkle-fetch`,id:t,sprinkleName:e};this.sender.send({source:`panel`,payload:a})})}cancelSprinkleFetch(e,t){}sendSprinkleLick(e,t,n){if(this.disposed)return;let r={type:`follower-sprinkle-lick`,sprinkleName:e,body:t,targetScoop:n};this.sender.send({source:`panel`,payload:r})}dispose(){if(this.disposed)return;this.disposed=!0,this.unsubscribe();let e=Error(`PanelFollowerSprinkleProxy disposed`);for(let t of this.pending.values())clearTimeout(t.timer),t.reject(e);this.pending.clear()}};export{n as PanelFollowerSprinkleProxy};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-BdDYVKjf.js","assets/index-CvlDeETm.css"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{B as e,E as t,K as n,L as r,P as i,Y as a,h as o,l as s,m as c,w as l}from"./index-BdDYVKjf.js";import{getOAuthPageOrigin as u}from"./oauth-service-DJF7cZo7.js";import{t as d}from"./global-db-CMspJ2t8.js";var f={clientId:``,scopes:`repo,read:user,user:email`};function p(){try{let e=localStorage.getItem(t);if(e)return e.replace(/\/$/,``)}catch{}return l}async function m(e){let t=`${p()}/oauth/token`,n=await fetch(t,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({provider:e.provider,code:e.code,redirect_uri:e.redirectUri})}),r;try{r=await n.json()}catch{throw Error(`Token exchange failed (HTTP ${n.status}): non-JSON response`)}if(!n.ok&&n.status!==200){let e=r.error_description??r.error??`Token exchange failed (HTTP ${n.status})`;throw Error(e)}if(r.error){let e=r.error_description??r.error;throw Error(e)}return r}async function h(e){let t=`${p()}/oauth/revoke`,n=await fetch(t,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({provider:e.provider,access_token:e.accessToken})});if(!(n.status===204||n.ok)){if(n.status===400)try{if((await n.json()).error===`unsupported`)return}catch{}throw Error(`Token revocation failed (HTTP ${n.status})`)}}var g=Object.assign({"/packages/webapp/providers/github-config.json":f})[`/packages/webapp/providers/github-config.json`]??{clientId:``,scopes:`repo,read:user,user:email`},_=null,v=null;async function y(){if(_)return _;if(b){try{let e=await fetch(`${p()}/api/runtime-config`);if(e.ok){let t=await e.json();if(t.oauth?.github)return _=t.oauth.github,_}}catch{}return g.clientId}try{let e=await fetch(`/api/runtime-config`);if(e.ok){let t=await e.json();if(t.oauth?.github)return _=t.oauth.github,_;if(t.trayWorkerBaseUrl){v=t.trayWorkerBaseUrl;let e=await fetch(`${t.trayWorkerBaseUrl}/api/runtime-config`);if(e.ok){let t=await e.json();if(t.oauth?.github)return _=t.oauth.github,_}}}}catch{}return g.clientId}var b=typeof chrome<`u`&&!!chrome?.runtime?.id;function x(){return s().find(e=>e.providerId===`github`)}function S(e){try{return new URL(e).searchParams.get(`code`)}catch{return null}}async function C(e){try{let t=await fetch(`https://api.github.com/user`,{headers:{Authorization:`Bearer ${e}`,Accept:`application/vnd.github+json`}});if(t.ok){let e=await t.json();return{name:e.name||e.login,avatar:e.avatar_url,login:e.login,id:e.id}}}catch(e){console.warn(`[github] Failed to fetch user profile:`,e instanceof Error?e.message:String(e))}return{}}function w(e,t){return`${e}+${t}@users.noreply.github.com`}async function T(e){try{let{VirtualFS:t}=await a(async()=>{let{VirtualFS:e}=await import(`./index-BdDYVKjf.js`);return{VirtualFS:e}},__vite__mapDeps([0,1]));await(await t.create({dbName:d})).writeFile(`/workspace/.git/github-token`,e),typeof window<`u`&&window.dispatchEvent(new CustomEvent(`github-token-changed`))}catch(e){console.warn(`[github] Failed to write git token:`,e instanceof Error?e.message:String(e))}}async function E(){try{let{VirtualFS:e}=await a(async()=>{let{VirtualFS:e}=await import(`./index-BdDYVKjf.js`);return{VirtualFS:e}},__vite__mapDeps([0,1]));await(await e.create({dbName:d})).rm(`/workspace/.git/github-token`),typeof window<`u`&&window.dispatchEvent(new CustomEvent(`github-token-changed`))}catch{}}async function D(e){if(!(!e.login||e.id===void 0))try{let{VirtualFS:t}=await a(async()=>{let{VirtualFS:e}=await import(`./index-BdDYVKjf.js`);return{VirtualFS:e}},__vite__mapDeps([0,1])),{readGlobalGitConfigValue:n,writeGlobalGitConfigValue:r}=await a(async()=>{let{readGlobalGitConfigValue:e,writeGlobalGitConfigValue:t}=await import(`./git-config-47_ySgKl.js`);return{readGlobalGitConfigValue:e,writeGlobalGitConfigValue:t}},[]),i=await t.create({dbName:d}),o=e.name||e.login,s=w(e.id,e.login);!await n(i,`user.name`)&&o&&await r(i,`user.name`,o),await n(i,`user.email`)||await r(i,`user.email`,s)}catch(e){console.warn(`[github] Failed to seed git identity:`,e instanceof Error?e.message:String(e))}}async function O(){let e=x();if(!e?.accessToken)throw Error(`Not logged in to GitHub — please log in first`);return e.accessToken}var k=`https://models.github.ai/inference`,A=[{id:`openai/gpt-4.1`,name:`GPT-4.1`,api:`openai`,context_window:1047576,max_tokens:32768,reasoning:!1,input:[`text`,`image`]},{id:`openai/gpt-4.1-mini`,name:`GPT-4.1 mini`,api:`openai`,context_window:1047576,max_tokens:32768,reasoning:!1,input:[`text`,`image`]}];function j(e,t){return{type:`error`,reason:`error`,error:{role:`assistant`,content:[],api:`github-openai`,provider:`github`,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()}}}var M=(t,n,r={})=>{let a=e();return(async()=>{try{let e=await O(),o=i({...t,baseUrl:k,api:`openai-completions`,compat:{...t.compat,supportsStore:!1,supportsDeveloperRole:!1,supportsUsageInStreaming:!1,maxTokensField:`max_tokens`}},n,{...r,apiKey:e});for await(let e of o)a.push(e);a.end()}catch(e){console.error(`[github] Stream error:`,e instanceof Error?e.message:String(e)),a.push(j(t,e)),a.end()}})(),a},N=(t,n,i)=>{let a=e();return(async()=>{try{let e=await O(),o=r({...t,baseUrl:k,api:`openai-completions`,compat:{...t.compat,supportsStore:!1,supportsDeveloperRole:!1,supportsUsageInStreaming:!1,maxTokensField:`max_tokens`}},n,{...i,apiKey:e});for await(let e of o)a.push(e);a.end()}catch(e){console.error(`[github] Stream error:`,e instanceof Error?e.message:String(e)),a.push(j(t,e)),a.end()}})(),a},P={id:`github`,name:`GitHub`,description:`GitHub Models + git authentication — login with your GitHub account`,requiresApiKey:!1,requiresBaseUrl:!1,isOAuth:!0,defaultModelId:`gpt-4.1`,oauthTokenDomains:[`github.com`,`*.github.com`,`api.github.com`,`raw.githubusercontent.com`,`models.github.ai`],getModelIds:()=>A,onOAuthLogin:async(e,t,n)=>{let r=await y();if(!r)throw Error(`GitHub OAuth not configured — no client ID available`);let i=n?.scopes??g.scopes,a=b?null:await u(),s=b?`${p()}/auth/callback`:`${v??a.origin}/auth/callback`,l=crypto.randomUUID(),d=b?chrome.runtime.id:``,f=b?{source:`extension`,extensionId:d,path:`/github`,nonce:l}:{port:parseInt(new URL(a.href).port||`5710`,10),path:`/auth/callback`,nonce:l},h=btoa(JSON.stringify(f)),_=l,x=new URLSearchParams({client_id:r,scope:i,redirect_uri:s});h&&x.set(`state`,h);let w=await e(`https://github.com/login/oauth/authorize?${x}`);if(!w)return;if(_)try{if(new URL(w).searchParams.get(`nonce`)!==_){console.error(`[github] OAuth nonce mismatch — possible CSRF`);return}}catch(e){console.warn(`[github] Nonce check skipped (URL parse failed):`,e instanceof Error?e.message:String(e))}let O=S(w);if(!O){console.error(`[github] Could not extract authorization code from redirect URL`);return}let k=await m({provider:`github`,code:O,redirectUri:s}),A=await C(k.access_token);await o({providerId:`github`,accessToken:k.access_token,userName:A.name,userAvatar:A.avatar});let j=c(`github`)?.maskedValue;j?await T(j):await E(),await D(A),t()},onOAuthLogout:async()=>{let e=x();e?.accessToken&&await h({provider:`github`,accessToken:e.accessToken}).catch(e=>console.warn(`[github] Token revocation failed:`,e instanceof Error?e.message:String(e))),await E(),await o({providerId:`github`,accessToken:``})}};function F(){n({api:`github-openai`,stream:M,streamSimple:N})}export{w as buildNoreplyEmail,P as config,S as extractCodeFromUrl,O as getValidAccessToken,F as register,D as syncGitIdentityFromGitHub};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{G as e,H as t,V as n,y as r,z as i}from"./index-BdDYVKjf.js";import{t as a}from"./sanitize-unicode-h0KEBmEw.js";import{a as o,i as s,n as c,o as l,r as u,s as d,t as f}from"./google-shared-Dz7dBXHI.js";var p=0,m=(t,r,a)=>{let o=new i;return(async()=>{let i={role:`assistant`,content:[],api:`google-generative-ai`,provider:t.provider,model:t.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()};try{let c=g(t,a?.apiKey||e(t.provider)||``,a?.headers),d=_(t,r,a),f=await a?.onPayload?.(d,t);f!==void 0&&(d=f);let m=await c.models.generateContentStream(d);o.push({type:`start`,partial:i});let h=null,v=i.content,y=()=>v.length-1;for await(let e of m){i.responseId||=e.responseId;let r=e.candidates?.[0];if(r?.content?.parts)for(let e of r.content.parts){if(e.text!==void 0){let t=u(e);(!h||t&&h.type!==`thinking`||!t&&h.type!==`text`)&&(h&&(h.type===`text`?o.push({type:`text_end`,contentIndex:v.length-1,content:h.text,partial:i}):o.push({type:`thinking_end`,contentIndex:y(),content:h.thinking,partial:i})),t?(h={type:`thinking`,thinking:``,thinkingSignature:void 0},i.content.push(h),o.push({type:`thinking_start`,contentIndex:y(),partial:i})):(h={type:`text`,text:``},i.content.push(h),o.push({type:`text_start`,contentIndex:y(),partial:i}))),h.type===`thinking`?(h.thinking+=e.text,h.thinkingSignature=l(h.thinkingSignature,e.thoughtSignature),o.push({type:`thinking_delta`,contentIndex:y(),delta:e.text,partial:i})):(h.text+=e.text,h.textSignature=l(h.textSignature,e.thoughtSignature),o.push({type:`text_delta`,contentIndex:y(),delta:e.text,partial:i}))}if(e.functionCall){h&&=(h.type===`text`?o.push({type:`text_end`,contentIndex:y(),content:h.text,partial:i}):o.push({type:`thinking_end`,contentIndex:y(),content:h.thinking,partial:i}),null);let t=e.functionCall.id,n={type:`toolCall`,id:!t||i.content.some(e=>e.type===`toolCall`&&e.id===t)?`${e.functionCall.name}_${Date.now()}_${++p}`:t,name:e.functionCall.name||``,arguments:e.functionCall.args??{},...e.thoughtSignature&&{thoughtSignature:e.thoughtSignature}};i.content.push(n),o.push({type:`toolcall_start`,contentIndex:y(),partial:i}),o.push({type:`toolcall_delta`,contentIndex:y(),delta:JSON.stringify(n.arguments),partial:i}),o.push({type:`toolcall_end`,contentIndex:y(),toolCall:n,partial:i})}}r?.finishReason&&(i.stopReason=s(r.finishReason),i.content.some(e=>e.type===`toolCall`)&&(i.stopReason=`toolUse`)),e.usageMetadata&&(i.usage={input:(e.usageMetadata.promptTokenCount||0)-(e.usageMetadata.cachedContentTokenCount||0),output:(e.usageMetadata.candidatesTokenCount||0)+(e.usageMetadata.thoughtsTokenCount||0),cacheRead:e.usageMetadata.cachedContentTokenCount||0,cacheWrite:0,totalTokens:e.usageMetadata.totalTokenCount||0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},n(t,i.usage))}if(h&&(h.type===`text`?o.push({type:`text_end`,contentIndex:y(),content:h.text,partial:i}):o.push({type:`thinking_end`,contentIndex:y(),content:h.thinking,partial:i})),a?.signal?.aborted)throw Error(`Request was aborted`);if(i.stopReason===`aborted`||i.stopReason===`error`)throw Error(`An unknown error occurred`);o.push({type:`done`,reason:i.stopReason,message:i}),o.end()}catch(e){for(let e of i.content)`index`in e&&delete e.index;i.stopReason=a?.signal?.aborted?`aborted`:`error`,i.errorMessage=e instanceof Error?e.message:JSON.stringify(e),o.push({type:`error`,reason:i.stopReason,error:i}),o.end()}})(),o},h=(n,i,a)=>{let o=a?.apiKey||e(n.provider);if(!o)throw Error(`No API key for provider: ${n.provider}`);let s=r(n,a,o);if(!a?.reasoning)return m(n,i,{...s,thinking:{enabled:!1}});let c=t(n,a.reasoning),l=c===`off`?`high`:c,u=n;return y(u)||b(u)||v(u)?m(n,i,{...s,thinking:{enabled:!0,level:S(l,u)}}):m(n,i,{...s,thinking:{enabled:!0,budgetTokens:C(u,l,a.thinkingBudgets)}})};function g(e,t,n){let r={};return e.baseUrl&&(r.baseUrl=e.baseUrl,r.apiVersion=``),(e.headers||n)&&(r.headers={...e.headers,...n}),new d({apiKey:t,httpOptions:Object.keys(r).length>0?r:void 0})}function _(e,t,n={}){let r=f(e,t),i={};n.temperature!==void 0&&(i.temperature=n.temperature),n.maxTokens!==void 0&&(i.maxOutputTokens=n.maxTokens);let s={...Object.keys(i).length>0&&i,...t.systemPrompt&&{systemInstruction:a(t.systemPrompt)},...t.tools&&t.tools.length>0&&{tools:c(t.tools)}};if(t.tools&&t.tools.length>0&&n.toolChoice?s.toolConfig={functionCallingConfig:{mode:o(n.toolChoice)}}:s.toolConfig=void 0,n.thinking?.enabled&&e.reasoning){let e={includeThoughts:!0};n.thinking.level===void 0?n.thinking.budgetTokens!==void 0&&(e.thinkingBudget=n.thinking.budgetTokens):e.thinkingLevel=n.thinking.level,s.thinkingConfig=e}else e.reasoning&&n.thinking&&!n.thinking.enabled&&(s.thinkingConfig=x(e));if(n.signal){if(n.signal.aborted)throw Error(`Request aborted`);s.abortSignal=n.signal}return{model:e.id,contents:r,config:s}}function v(e){return/gemma-?4/.test(e.id.toLowerCase())}function y(e){return/gemini-3(?:\.\d+)?-pro/.test(e.id.toLowerCase())}function b(e){return/gemini-3(?:\.\d+)?-flash/.test(e.id.toLowerCase())}function x(e){return y(e)?{thinkingLevel:`LOW`}:b(e)||v(e)?{thinkingLevel:`MINIMAL`}:{thinkingBudget:0}}function S(e,t){if(y(t))switch(e){case`minimal`:case`low`:return`LOW`;case`medium`:case`high`:return`HIGH`}if(v(t))switch(e){case`minimal`:case`low`:return`MINIMAL`;case`medium`:case`high`:return`HIGH`}switch(e){case`minimal`:return`MINIMAL`;case`low`:return`LOW`;case`medium`:return`MEDIUM`;case`high`:return`HIGH`}}function C(e,t,n){return n?.[t]===void 0?e.id.includes(`2.5-pro`)?{minimal:128,low:2048,medium:8192,high:32768}[t]:e.id.includes(`2.5-flash-lite`)?{minimal:512,low:2048,medium:8192,high:24576}[t]:e.id.includes(`2.5-flash`)?{minimal:128,low:2048,medium:8192,high:24576}[t]:-1:n[t]}export{m as streamGoogle,h as streamSimpleGoogle};
|