sliccy 3.31.3 → 3.32.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ui/assets/adobe-COCy6g1M.js +1 -0
- package/dist/ui/assets/adobe-DUGWdvQ5.js +2 -0
- package/dist/ui/assets/{agent-bridge-BWErp9WQ.js → agent-bridge-gptBxwm5.js} +1 -1
- package/dist/ui/assets/{agent-message-to-chat-yjlD_qzG.js → agent-message-to-chat-DsYM2Nf4.js} +1 -1
- package/dist/ui/assets/{anthropic-D0vMegpZ.js → anthropic-CgiRKylK.js} +2 -2
- package/dist/ui/assets/{anthropic-CxgW-FY2.js → anthropic-G7KDEOLa.js} +2 -2
- package/dist/ui/assets/{apps-V2b5LPRn.js → apps-DN6ITdjP.js} +1 -1
- package/dist/ui/assets/{azure-openai-CnDbM4mI.js → azure-openai-BlwKlr9Y.js} +1 -1
- package/dist/ui/assets/{azure-openai-DH8BUUMY.js → azure-openai-CUGmdhX6.js} +1 -1
- package/dist/ui/assets/{azure-openai-responses-BAc8V1-V.js → azure-openai-responses-BKRFitiP.js} +1 -1
- package/dist/ui/assets/azure-openai-responses-Cl0gHBNR.js +1 -0
- package/dist/ui/assets/{biome_wasm-Drjp0ENI.js → biome_wasm-1Fb3_Eb-.js} +1 -1
- package/dist/ui/assets/{bsh-watchdog-CPljXgvq.js → bsh-watchdog-BR7AsDIi.js} +1 -1
- package/dist/ui/assets/{cdp-CCuRIt-R.js → cdp-DzVZxX6d.js} +3 -3
- package/dist/ui/assets/{cdp-ws-page-bridge-C_ZVLTYy.js → cdp-ws-page-bridge--cKpCsvm.js} +1 -1
- package/dist/ui/assets/{common-CLOK5F6r.js → common-C5uvkcLk.js} +1 -1
- package/dist/ui/assets/{connect-surface-CrsDxrdr.js → connect-surface-D6rrThH8.js} +1 -1
- package/dist/ui/assets/cost-command-B9B4IP-5.js +1 -0
- package/dist/ui/assets/{es-DwAoHYHH.js → es-D19VrHXm.js} +5 -5
- package/dist/ui/assets/{follower-sprinkle-bridge-XpDAiQ7_.js → follower-sprinkle-bridge-DJR_omcg.js} +1 -1
- package/dist/ui/assets/{github-Bm7XGiSO.js → github-CU3r1JEe.js} +1 -1
- package/dist/ui/assets/{github-copilot-AiXCpM16.js → github-copilot-DzODZ5h3.js} +2 -2
- package/dist/ui/assets/{github-copilot-ClQ2_1CI.js → github-copilot-kymvLZkx.js} +1 -1
- package/dist/ui/assets/{github-C4LnibEe.js → github-sJ_XJP6s.js} +2 -2
- package/dist/ui/assets/google-9osBiy_x.js +1 -0
- package/dist/ui/assets/google-Dq4_RUKF.js +1 -0
- package/dist/ui/assets/{google-shared-CyoUDi1C.js → google-shared-Doq5Txyx.js} +1 -1
- package/dist/ui/assets/{google-shared-DiYuYF5B.js → google-shared-EHxK5tCA.js} +3 -3
- package/dist/ui/assets/google-vertex-Cq6HYhBv.js +1 -0
- package/dist/ui/assets/{google-vertex-DSofdK1r.js → google-vertex-DhOc5ETU.js} +1 -1
- package/dist/ui/assets/{intercepted-oauth-BaMbdWzt.js → intercepted-oauth-YdVPSXOF.js} +1 -1
- package/dist/ui/assets/{kernel-worker-D0ATvajw.js → kernel-worker-BVBDMlmS.js} +832 -831
- package/dist/ui/assets/{lick-ws-bridge-DexaAOGa.js → lick-ws-bridge-MKVfHsRk.js} +1 -1
- package/dist/ui/assets/{local-llm-9UA0MhY4.js → local-llm-C3WhqJo7.js} +2 -2
- package/dist/ui/assets/{magick-wasm-CvQJmBim.js → magick-wasm-BOTq2b0v.js} +1 -1
- package/dist/ui/assets/{main-BrawN-is.js → main-Dl_T3zuo.js} +242 -187
- package/dist/ui/assets/{main-cherry-DQiWk2_-.js → main-cherry-BT51jAbd.js} +1 -1
- package/dist/ui/assets/{mistral-BityNCOu.js → mistral-BfLfYOf-.js} +2 -2
- package/dist/ui/assets/{mistral-C37kGxys.js → mistral-DzXbo5rw.js} +2 -2
- package/dist/ui/assets/{nodejs-B-RITx7S.js → nodejs-BxIwCAQ5.js} +1 -1
- package/dist/ui/assets/{nuke-command-DY6hDtTL.js → nuke-command-CfpsJRSC.js} +1 -1
- package/dist/ui/assets/{oauth-CqO24-xB.js → oauth-BgbUW9bY.js} +1 -1
- package/dist/ui/assets/oauth-bootstrap-JG0WQ9mJ.js +2 -0
- package/dist/ui/assets/{oauth-service-N6WU95u_.js → oauth-service-BF4-4Vx1.js} +1 -1
- package/dist/ui/assets/{oauth-service-HiBl8eyP.js → oauth-service-C3sJ83H8.js} +1 -1
- package/dist/ui/assets/offscreen-client-Dw-n6ik-.js +1 -0
- package/dist/ui/assets/{onboarding-orchestrator-BPCgaGMc.js → onboarding-orchestrator-HeXZBLSs.js} +1 -1
- package/dist/ui/assets/{openai-codex-CzhMk_AM.js → openai-codex-Bz7d1S35.js} +1 -1
- package/dist/ui/assets/{openai-codex-CTIKsIo1.js → openai-codex-MasaKMJu.js} +1 -1
- package/dist/ui/assets/{openai-codex-responses-B7uw3rZu.js → openai-codex-responses-7ex3qrkX.js} +3 -3
- package/dist/ui/assets/{openai-codex-responses-L8Vi6gG4.js → openai-codex-responses-DsRGCCxy.js} +5 -5
- package/dist/ui/assets/openai-completions-DWtoJrh1.js +5 -0
- package/dist/ui/assets/openai-responses-B3psQ7df.js +1 -0
- package/dist/ui/assets/openai-responses-DoL__uzV.js +1 -0
- package/dist/ui/assets/{openai-responses-shared-D_srrvf3.js → openai-responses-shared-BFENFDsE.js} +4 -4
- package/dist/ui/assets/{openai-responses-shared-CY_pd3Li.js → openai-responses-shared-KkgotzQz.js} +5 -5
- package/dist/ui/assets/{openrouter-bKU_HlyV.js → openrouter-BVRiIwwA.js} +1 -1
- package/dist/ui/assets/{openrouter-AdCCMknA.js → openrouter-BdX3XVJr.js} +1 -1
- package/dist/ui/assets/{panel-rpc-handlers-IZ7WW8PW.js → panel-rpc-handlers-xnsVIFCa.js} +1 -1
- package/dist/ui/assets/{provider-DpdmkSzh.js → provider-BbTHxz97.js} +1 -1
- package/dist/ui/assets/{provider-B8PArOX3.js → provider-CaIbJC0A.js} +2 -2
- package/dist/ui/assets/provider-store-access-DlLOaG0J.js +1 -0
- package/dist/ui/assets/provider-store-access-lRfzaetL.js +1 -0
- package/dist/ui/assets/{proxied-fetch-DnW2W1kZ.js → proxied-fetch-CUmK9tDH.js} +1 -1
- package/dist/ui/assets/{pyodide-DtgBQmax.js → pyodide-CxFJUwvM.js} +2 -2
- package/dist/ui/assets/{remote-terminal-view-lGYw39HS.js → remote-terminal-view-D2muLGcg.js} +1 -1
- package/dist/ui/assets/{secret-env-DzPr3VZU.js → secret-env-D1tUw6_w.js} +1 -1
- package/dist/ui/assets/{slicc-editor-fDpE12GJ.js → slicc-editor-DQqWQ9IZ.js} +1 -1
- package/dist/ui/assets/{spawn-o-4BQ1S6.js → spawn-D4XzKrVi.js} +1 -1
- package/dist/ui/assets/{sql-wasm-BJRe-N-b.js → sql-wasm-C2CcVoRy.js} +1 -1
- package/dist/ui/assets/{store-C2ZknlRA.js → store-BUdUwXvB.js} +1 -1
- package/dist/ui/assets/{tray-leave-runtime-BvoTRZSx.js → tray-leave-runtime-CQm3HG5b.js} +1 -1
- package/dist/ui/assets/{typescript-DfCOumjR.js → typescript-BedSJxXw.js} +3 -3
- package/dist/ui/assets/upgrade-detection-BygGGlt4.js +1 -0
- package/dist/ui/assets/{web-CTvaXVQO.js → web-jjbp_-nw.js} +1 -1
- package/dist/ui/assets/ws-subscribers-DJU39ebx.js +1 -0
- package/dist/ui/assets/{xai-grok-XC96hYSe.js → xai-grok-QzqLhxC4.js} +1 -1
- package/dist/ui/assets/{xai-grok-DE0f51zV.js → xai-grok-tdpAgCE7.js} +1 -1
- package/dist/ui/electron-overlay-entry.js +4 -4
- package/dist/ui/index.html +1 -1
- package/dist/ui/packages/webapp/index.html +1 -1
- package/package.json +1 -1
- package/dist/ui/assets/adobe-BHbBsM0g.js +0 -1
- package/dist/ui/assets/adobe-BQ32BWZd.js +0 -2
- package/dist/ui/assets/azure-openai-responses-DvUy14Qa.js +0 -1
- package/dist/ui/assets/cost-command-CReY6hyA.js +0 -1
- package/dist/ui/assets/google-CGZLxJ42.js +0 -1
- package/dist/ui/assets/google-qx8wVfLf.js +0 -1
- package/dist/ui/assets/google-vertex-Dyj-dCJ-.js +0 -1
- package/dist/ui/assets/oauth-bootstrap-BIz4TdzE.js +0 -2
- package/dist/ui/assets/offscreen-client-BxApYLqB.js +0 -1
- package/dist/ui/assets/openai-completions-DXyM4MCr.js +0 -5
- package/dist/ui/assets/openai-responses-BhYLEPzA.js +0 -1
- package/dist/ui/assets/openai-responses-COFBCLJB.js +0 -1
- package/dist/ui/assets/provider-store-access-4IY6m1mQ.js +0 -1
- package/dist/ui/assets/provider-store-access-B7F4Mjeu.js +0 -1
- package/dist/ui/assets/upgrade-detection-CkWdIydL.js +0 -1
- package/dist/ui/assets/ws-subscribers-Bk5_gJjp.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{ct as e,lt as t}from"./kernel-worker-BVBDMlmS.js";const n=`slicc:last-seen-version`;function r(){return{version:`3.32.1`,releasedAt:`2026-06-05T11:23:57Z`}}async function i(){let t=await e(n);return t&&t.length>0?t:null}async function a(e){await t(n,e)}async function o(){let e=r(),t=await i();return t===null?(await a(e.version),{bundled:e,lastSeen:null,isUpgrade:!1}):t===e.version?{bundled:e,lastSeen:t,isUpgrade:!1}:{bundled:e,lastSeen:t,isUpgrade:!0}}async function s(e){await a(e)}export{o as detectUpgrade,s as recordVersionSeen};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{_t as e,pt as t}from"./kernel-worker-BVBDMlmS.js";import{t as n}from"./common-C5uvkcLk.js";import{n as r,t as i}from"./biome_wasm-1Fb3_Eb-.js";var a=t((t=>{var a=t&&t.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||(`get`in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),o=t&&t.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),s=t&&t.__importStar||(function(){var e=function(t){return e=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},e(t)};return function(t){if(t&&t.__esModule)return t;var n={};if(t!=null)for(var r=e(t),i=0;i<r.length;i++)r[i]!==`default`&&a(n,t,r[i]);return o(n,t),n}})();Object.defineProperty(t,"__esModule",{value:!0}),t.Biome=void 0;let c=s((r(),e(i))),l=n();t.Biome=class extends l.BiomeCommon{constructor(){super(c)}}}));export default a();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{et as e,ft as t}from"./kernel-worker-BVBDMlmS.js";const n=t(`ws-subscribers`);var r=class{subs=new Map;tabRefs=new Map;bridge;webhooks;dispatcher;unsubscribeBridge;seq=1;constructor(e){this.bridge=e.bridge,this.webhooks=e.webhooks,this.dispatcher=e.dispatcher,this.unsubscribeBridge=this.bridge.onMatchedFrame((e,t)=>{this.handleFrame(e,t)})}async observe(e){this.validateSink(e);let t=`wssub-${this.seq++}-${Date.now().toString(36)}`,n={id:t,targetId:e.targetId,urlMatch:e.urlMatch,filter:e.filter,forward:e.forward,scoopJid:e.scoopJid,createdAt:new Date().toISOString()},r=this.tabRefs.get(e.targetId)??0;r===0&&await this.bridge.installRouter(e.targetId),this.tabRefs.set(e.targetId,r+1);try{await this.bridge.registerSelector(e.targetId,t,e.urlMatch,e.filter)}catch(t){throw this.releaseTab(e.targetId),t}return this.subs.set(t,n),this.toInfo(n)}async update(e,t){let n=this.subs.get(e);if(!n)throw Error(`browser.websocket: subscriber not found: ${e}`);let r=t.urlMatch,i=t.filter;return await this.bridge.updateSelector(n.targetId,e,r,i),t.urlMatch===null?delete n.urlMatch:t.urlMatch!==void 0&&(n.urlMatch=t.urlMatch),t.filter===null?delete n.filter:t.filter!==void 0&&(n.filter=t.filter),this.toInfo(n)}async close(e){let t=this.subs.get(e);if(!t)return!1;this.subs.delete(e);try{await this.bridge.unregisterSelector(t.targetId,e)}catch(t){n.warn(`unregisterSelector failed during close`,{id:e,error:t instanceof Error?t.message:String(t)})}return this.releaseTab(t.targetId),!0}list(){return Array.from(this.subs.values(),e=>this.toInfo(e))}async dropForScoop(e){let t=Array.from(this.subs.values()).filter(t=>t.scoopJid===e);for(let e of t)await this.close(e.id);return t.length}dispose(){this.unsubscribeBridge(),this.subs.clear(),this.tabRefs.clear()}validateSink(t){let n=t.forward;if(!n||typeof n!=`object`)throw Error(`browser.websocket: forward.sink is required`);switch(n.sink){case`webhook`:if(typeof n.webhookId!=`string`||!n.webhookId.trim())throw Error(`browser.websocket: webhook sink requires a webhookId`);if(!this.webhooks.has(n.webhookId))throw Error(`browser.websocket: webhookId "${n.webhookId}" is not registered; create it with \`webhook create\` first`);return;case`scoop`:if(typeof n.scoopJid!=`string`||!n.scoopJid.trim())throw Error(`browser.websocket: scoop sink requires a scoopJid`);return;case`vfs`:{if(typeof n.path!=`string`||!n.path.startsWith(`/workspace/`))throw Error(`browser.websocket: vfs sink path must be an absolute /workspace/... path`);let t=e(n.path);if(!t.startsWith(`/workspace/`)&&t!==`/workspace`)throw Error(`browser.websocket: vfs sink path escapes /workspace/ after normalization (got "${n.path}" → "${t}")`);return}case`log`:return;default:throw Error(`browser.websocket: unknown sink "${n.sink??``}"`)}}releaseTab(e){let t=(this.tabRefs.get(e)??1)-1;t<=0?this.tabRefs.delete(e):this.tabRefs.set(e,t)}toInfo(e){let t={id:e.id,targetId:e.targetId,forward:e.forward,createdAt:e.createdAt};return e.urlMatch!==void 0&&(t.urlMatch=e.urlMatch),e.filter!==void 0&&(t.filter=e.filter),e.scoopJid!==void 0&&(t.scoopJid=e.scoopJid),t}async handleFrame(e,t){let r=this.subs.get(e);if(!r)return;let i=r.forward;try{switch(i.sink){case`webhook`:await this.dispatcher.webhook(i.webhookId,t);return;case`scoop`:await this.dispatcher.scoop(i.scoopJid,t);return;case`vfs`:await this.dispatcher.vfs(i.path,t);return;case`log`:this.dispatcher.log(t);return}}catch(t){n.warn(`sink dispatch failed`,{subId:e,sink:i.sink,error:t instanceof Error?t.message:String(t)})}}};export{r as WsSubscriberRegistry};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{$ as e,G as t,U as n,w as r,y as i,z as a}from"./kernel-worker-BVBDMlmS.js";import{XaiErrorCode as o,XaiOAuthError as s}from"./xai-grok-errors-ByEMMSoz.js";import{resolveModels as c,toModelMetadata as l}from"./xai-grok-models-B0Tf--xf.js";import{sanitizePayload as u}from"./xai-grok-sanitize-CV6qvaEF.js";const d=`xai-grok`,f=`https://auth.x.ai`,p=`${f}/oauth2/authorize`,m=`${f}/oauth2/token`,h=`b1a00492-073a-47ea-816f-4c329264a828`,g=`http://127.0.0.1:56121/callback`,_=`https://api.x.ai/v1`,v=`openai-responses`,y=`${d}-openai`;function b(){return typeof process>`u`?null:{}.PI_XAI_OAUTH_MODELS??null}const x=c(b());function S(e){let t=``;for(let n of e)t+=String.fromCharCode(n);return btoa(t).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/,``)}function C(e){let t=new Uint8Array(e);return crypto.getRandomValues(t),t}function w(){return S(C(32))}async function T(e){let t=new TextEncoder().encode(e);return S(new Uint8Array(await crypto.subtle.digest(`SHA-256`,t)))}function E(){return S(C(16))}async function D(e,t){let n=new URLSearchParams({grant_type:`authorization_code`,code:e,redirect_uri:g,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 O(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 k(){return i().find(e=>e.providerId===d)}async function A(){let e=k();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 O(e.refreshToken);if(t?.access_token)return await r({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 j(e,t){return{type:`error`,reason:`error`,error:{role:`assistant`,content:[],api:y,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 M(e,t){return n=>!n||typeof n!=`object`?n:u(n,e,t)}function N(e,t){return t?{...e??{},"x-grok-conv-id":t}:e}const P=(e,n,r={})=>{let i=t();return(async()=>{try{let t=await A(),o=r.sessionId,s=a({...e,baseUrl:_,api:v},n,{...r,apiKey:t,headers:N(r.headers,o),onPayload:M(e.id,o)});for await(let e of s)i.push(e);i.end()}catch(t){console.error(`[xai-grok] Stream error:`,t instanceof Error?t.message:String(t)),i.push(j(e,t)),i.end()}})(),i},F=(e,r,i)=>{let a=t();return(async()=>{try{let t=await A(),o=i?.sessionId,s=n({...e,baseUrl:_,api:v},r,{...i,apiKey:t,headers:N(i?.headers,o),onPayload:M(e.id,o)});for await(let e of s)a.push(e);a.end()}catch(t){console.error(`[xai-grok] Stream error:`,t instanceof Error?t.message:String(t)),a.push(j(e,t)),a.end()}})(),a},I={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:()=>x.map(e=>{let t=l(e);return e.thinkingLevelMap?{...t,thinkingLevelMap:e.thinkingLevelMap}:t}),onOAuthLoginIntercepted:async(e,t,n)=>{let i=w(),a=await T(i),c=E(),l=E(),u=new URL(p);u.searchParams.set(`response_type`,`code`),u.searchParams.set(`client_id`,h),u.searchParams.set(`redirect_uri`,g),u.searchParams.set(`scope`,n?.scopes??`openid profile email offline_access grok-cli:access api:access`),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:`http://127.0.0.1:56121/*`,onCapture:`close`});if(!f)throw new s(`xAI OAuth login was cancelled or timed out`,o.CALLBACK_TIMEOUT);let m=new URL(f),v=m.searchParams.get(`code`),y=m.searchParams.get(`state`);if(!v)throw new s(`xAI OAuth redirect did not include a code`,o.CODE_MISSING);if(y!==c)throw new s(`xAI OAuth state mismatch — possible CSRF, aborting`,o.STATE_MISMATCH);let b=await D(v,i);await r({providerId:d,accessToken:b.access_token,refreshToken:b.refresh_token,tokenExpiresAt:Date.now()+(b.expires_in??21600)*1e3,baseUrl:_}),t()},onOAuthLogout:async()=>{await r({providerId:d,accessToken:``})},onSilentRenew:async()=>{let e=k();if(!e?.refreshToken)return null;let t=await O(e.refreshToken);return t?.access_token?(await r({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 L(){e({api:y,stream:P,streamSimple:F})}export{o as XaiErrorCode,s as XaiOAuthError,I as config,L as register};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{K as e,Q as t,X as n,f as r,ot as i,r as a}from"./main-Dl_T3zuo.js";import{XaiErrorCode as o,XaiOAuthError as s}from"./xai-grok-errors-bnlIBeu-.js";import{resolveModels as c,toModelMetadata as l}from"./xai-grok-models-CeEBaUMC.js";import{sanitizePayload as u}from"./xai-grok-sanitize-CR2JoOJd.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 r({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=t();return(async()=>{try{let t=await M(),o=i.sessionId,s=e({...n,baseUrl:y,api:b},r,{...i,apiKey:t,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=(e,r,i)=>{let a=t();return(async()=>{try{let t=await M(),o=i?.sessionId,s=n({...e,baseUrl:y,api:b},r,{...i,apiKey:t,headers:F(i?.headers,o),onPayload:P(e.id,o)});for await(let e of s)a.push(e);a.end()}catch(t){console.error(`[xai-grok] Stream error:`,t instanceof Error?t.message:String(t)),a.push(N(e,t)),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 i=E(),a=await D(i),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,i);await r({providerId:d,accessToken:S.access_token,refreshToken:S.refresh_token,tokenExpiresAt:Date.now()+(S.expires_in??21600)*1e3,baseUrl:y}),t()},onOAuthLogout:async()=>{await r({providerId:d,accessToken:``})},onSilentRenew:async()=>{let e=j();if(!e?.refreshToken)return null;let t=await A(e.refreshToken);return t?.access_token?(await r({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(){i({api:x,stream:I,streamSimple:L})}export{o as XaiErrorCode,s as XaiOAuthError,R as config,z as register};
|
|
@@ -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 H=[{id:"chat",label:"Chat"},{id:"terminal",label:"Terminal"},{id:"files",label:"Files"},{id:"memory",label:"Memory"}],
|
|
53
|
+
</g></g></g></svg>`;var H=[{id:"chat",label:"Chat"},{id:"terminal",label:"Terminal"},{id:"files",label:"Files"},{id:"memory",label:"Memory"}],q=H,M="chat",me=new Set(H.map(r=>r.id));function u(r,e=M){return r&&r.length>0?r:e}var ne=["top-left","top-right","bottom-left","bottom-right","top","right","bottom","left"],ae="top-right",se=6,ie=12,le=.6;function m(r,e=ae){return ne.includes(r)?r:e}function T(r={}){return{open:r.open??!1,activeTab:u(r.activeTab,M),corner:m(r.corner)}}function Z(r){return{...r,open:!r.open}}function k(r,e){return r.open===e?r:{...r,open:e}}function R(r,e){let t=u(e,r.activeTab);return r.activeTab===t?r:{...r,activeTab:t}}function A(r,e){let t=m(e,r.corner);return r.corner===t?r:{...r,corner:t}}function O(r,e){return r>=se||r>=ie&&e>=le}function $({clientX:r,clientY:e,viewportWidth:t,viewportHeight:o,velocityXPxPerMs:n=0,velocityYPxPerMs:a=0,flickProjectionMs:s=180}){let l=j(r+n*s,0,t),p=j(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,_=Math.min(f,b,S,g);return _===f?"top":_===b?"bottom":_===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 j(r,e,t){return Math.min(Math.max(r,e),t)}var W="slicc-electron-overlay:set-tab";var U="slicc-electron-overlay-root",N="slicc-electron-overlay",de="Semicolon",K=";",ge="slicc-electron-overlay:toggle",C="slicc-electron-launcher",L="slicc-electron-sidebar",v="",y=18,Q="slicc-electron-overlay-launcher-corner";function F(r,e){let t=r.createElement("style");return t.textContent=e,t}function z(r){return r.replace(/<\?xml[^?]*\?>\s*/i,"")}function G(r,e){let o=new DOMParser().parseFromString(e,"image/svg+xml").documentElement;return r.importNode(o,!0)}var V=`
|
|
54
54
|
:host {
|
|
55
55
|
color-scheme: dark light;
|
|
56
56
|
--s2-gray-25: #1a1a1a;
|
|
@@ -203,7 +203,7 @@
|
|
|
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+"}${
|
|
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.appendChild(G(t,z(X))),l.setAttribute("aria-hidden","true");let p=t.createElement("div");p.className="logo-icon logo-for-light",p.appendChild(G(t,z(B))),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=J(t.startLeft+o,y,i),h=J(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=$({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(F(t,`
|
|
207
207
|
${V}
|
|
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; }
|
|
@@ -255,7 +255,7 @@
|
|
|
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
|
|
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 q){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=he(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:W,tab:e},"*"),this.lastPostedTab=e)}},w=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(k(this.state,e))}get activeTab(){return this.state.activeTab}set activeTab(e){this.applyState(R(this.state,e))}get corner(){return this.state.corner}set corner(e){this.applyState(A(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(Z(this.state))}showSidebar(){this.applyState(k(this.state,!0))}hideSidebar(){this.applyState(k(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===de)&&(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===ge&&this.toggle()};render(){let e=this.attachShadow({mode:"open"}),t=this.ownerDocument;e.appendChild(F(t,`
|
|
259
259
|
${V}
|
|
260
260
|
:host {
|
|
261
261
|
all: initial;
|
|
@@ -266,4 +266,4 @@
|
|
|
266
266
|
z-index: 2147483647;
|
|
267
267
|
contain: layout style paint;
|
|
268
268
|
}
|
|
269
|
-
`));let o=t.createElement(
|
|
269
|
+
`));let o=t.createElement(C);o.addEventListener("slicc-overlay-toggle",()=>this.toggle()),o.addEventListener("slicc-overlay-move",a=>{let s=a.detail?.corner;this.applyState(A(this.state,s))}),e.appendChild(o);let n=t.createElement(L);n.addEventListener("slicc-overlay-close",()=>this.hideSidebar()),n.addEventListener("slicc-overlay-select-tab",a=>{let s=a.detail?.tab;this.applyState(R(this.state,s))}),e.appendChild(n)}syncChildren(){let e=this.shadowRoot;if(!e)return;let t=e.querySelector(C),o=e.querySelector(L);!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 ue(r=customElements){r.get(C)||r.define(C,P),r.get(L)||r.define(L,Y),r.get(N)||r.define(N,w)}function ee(r=document,e={}){ue(r.defaultView?.customElements??customElements);let t=r.getElementById(U),o;return t instanceof w?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 te(r=document){r.getElementById(U)?.remove()}function D(r){try{return m(r?.localStorage.getItem(Q))}catch{return m(null)}}function I(r,e){try{r?.localStorage.setItem(Q,e)}catch{}}function J(r,e,t){return Math.min(Math.max(r,e),t)}window.__SLICC_ELECTRON_OVERLAY__={inject(r={}){try{ee(document,r)}catch(e){console.error("[slicc-overlay] Injection failed:",e)}},remove(){try{te(document)}catch(r){console.error("[slicc-overlay] Removal failed:",r)}}};})();
|
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-Dl_T3zuo.js"></script>
|
|
9
9
|
<link rel="modulepreload" crossorigin href="/assets/modulepreload-polyfill-Dezn_h7o.js">
|
|
10
10
|
<link rel="stylesheet" crossorigin href="/assets/main-D683Koa8.css">
|
|
11
11
|
</head>
|
|
@@ -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-Dl_T3zuo.js"></script>
|
|
9
9
|
<link rel="modulepreload" crossorigin href="/assets/modulepreload-polyfill-Dezn_h7o.js">
|
|
10
10
|
<link rel="stylesheet" crossorigin href="/assets/main-D683Koa8.css">
|
|
11
11
|
</head>
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{F as e,J as t,L as n,Q as r,V as i,W as a,Y as o,t as s,w as c,x as l,y as u,z as d}from"./kernel-worker-D0ATvajw.js";import{getOAuthPageOrigin as f}from"./oauth-service-N6WU95u_.js";var p={proxyEndpoint:`https://adobe-llm-proxy.paolo-moz.workers.dev`,redirectUri:`https://www.sliccy.ai/auth/callback`,extensionRedirectUri:`https://akjjllgokmbgpbdbmafpiefnhidlmbgf.chromiumapp.org/adobe`};function m(e,t){let n={id:e.id,name:e.name??e.id},r=t?.api??e.api,i=t?.context_window??e.context_window,a=t?.max_tokens??e.max_tokens,o=t?.reasoning??e.reasoning,s=t?.input??e.input;return r&&(n.api=r),i!==void 0&&(n.context_window=i),a!==void 0&&(n.max_tokens=a),o!==void 0&&(n.reasoning=o),s&&(n.input=s),/haiku/i.test(e.id)&&(n.compat={supportsEagerToolInputStreaming:!1}),n}function h(e=3e5){let t=0;return{async run(n,r=Date.now()){if(r<t)return null;let i=null;try{i=await n()}catch(e){console.debug(`[silent-renew-backoff] renew threw:`,e instanceof Error?e.message:String(e)),i=null}return t=i?0:r+e,i},inCooldown(e=Date.now()){return e<t}}}const g=Object.assign({"/packages/webapp/providers/adobe-config.json":p})[`/packages/webapp/providers/adobe-config.json`]??{clientId:``,proxyEndpoint:``,scopes:`openid,profile,email`};function _(){let e=l(`adobe`);if(e)return e.replace(/\/$/,``);if(g.proxyEndpoint)return g.proxyEndpoint.replace(/\/$/,``);throw Error(`Adobe proxy endpoint not configured — set it in Settings or adobe-config.json`)}const v=new Map,y=new Map;async function b(e){let t=v.get(e);if(t)return t;try{let t=await fetch(`${e}/v1/config`,{headers:{[I]:`3.31.3`}});if(t.ok){let n=await t.json();return v.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 v.set(e,n),n}function x(e){let t=e.clientId||g.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 S(e){return e.scopes||g.scopes}function C(e){return e.imsEnvironment||g.imsEnvironment||`prod`}const w={prod:`https://ims-na1.adobelogin.com`,stg1:`https://ims-na1-stg1.adobelogin.com`};function T(e){return w[e??g.imsEnvironment??`prod`]??w.prod}const E=typeof chrome<`u`&&!!chrome?.runtime?.id;function D(){return u().find(e=>e.providerId===`adobe`)}async function O(e,t){try{let n=await fetch(`${T(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 k(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}const A={id:`adobe`,name:`Adobe`,description:`Claude via Adobe — login with your Adobe ID`,requiresApiKey:!1,requiresBaseUrl:!g.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=>m(e,y.get(e.id));for(let t of G.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 v.values())if(t.models?.length)return t.models.map(t=>e(t));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,n)=>{let r=_(),i=await b(r),a=x(i),o=S(i),s=C(i),l=E?null:await f(),u=E?g.extensionRedirectUri??`https://${chrome.runtime.id}.chromiumapp.org/`:g.redirectUri??`${l.origin}/auth/callback`,d=E?void 0:btoa(JSON.stringify({port:parseInt(new URL(l.href).port||`5710`,10),path:`/auth/callback`,nonce:crypto.randomUUID()})),p=d?JSON.parse(atob(d)).nonce:null,m=new URLSearchParams({client_id:a,scope:o,response_type:`token`,redirect_uri:u});d&&m.set(`state`,d),n?.forceReauth&&m.set(`prompt`,`login`);let h=await e(`${T(s)}/ims/authorize/v2?${m}`);if(!h)return;if(p&&h)try{if(new URL(h).searchParams.get(`nonce`)!==p){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 v=k(h);if(!v){console.error(`[adobe] Could not extract token from redirect URL`);return}let y=await O(v.accessToken,s);await c({providerId:`adobe`,accessToken:v.accessToken,tokenExpiresAt:Date.now()+v.expiresIn*1e3,userName:y.name,userAvatar:y.avatar,baseUrl:g.proxyEndpoint?void 0:r}),await K().catch(e=>console.warn(`[adobe] Failed to fetch models after login:`,e instanceof Error?e.message:String(e))),t()},onOAuthLogout:async()=>{let e=D();if(e?.accessToken)try{let t=v.values().next().value??{},n=t.clientId||g.clientId,r=C(t);if(n){let t=await fetch(`${T(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 c({providerId:`adobe`,accessToken:``})},onSilentRenew:async()=>D()?.accessToken?F():null};let j=null;const M=h();async function N(){let e=D();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...`);let t=await M.run(()=>F());if(t)return t;let n=D();if((n?.tokenExpiresAt??0)-Date.now()>0&&n?.accessToken)return n.accessToken;throw Error(`Adobe session expired — please log in again`)}function P(){let e=D();return e?.tokenExpiresAt?Date.now()>e.tokenExpiresAt-6e4:!0}async function F(){return typeof window>`u`?null:j||(j=(async()=>{try{let e=_(),t=await b(e),n=x(t),r=S(t),i=C(t),a=E?g.extensionRedirectUri??`https://${chrome.runtime.id}.chromiumapp.org/`:g.redirectUri??`${window.location.origin}/auth/callback`,o=E?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=`${T(i)}/ims/authorize/v2?${l}`,{createOAuthLauncher:d}=await import(`./oauth-service-N6WU95u_.js`),f=await d()(u,{interactive:!1});if(!f)return null;if(s&&f)try{if(new URL(f).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 p=k(f);if(!p)return null;let m=D();return await c({providerId:`adobe`,accessToken:p.accessToken,tokenExpiresAt:Date.now()+p.expiresIn*1e3,userName:m?.userName,userAvatar:m?.userAvatar,baseUrl:g.proxyEndpoint?void 0:e}),console.log(`[adobe] Token renewed silently`),await K().catch(e=>console.warn(`[adobe] Failed to refresh models after silent renewal:`,e instanceof Error?e.message:String(e))),p.accessToken}catch(e){return console.warn(`[adobe] Silent renewal error:`,e instanceof Error?e.message:String(e)),null}finally{j=null}})(),j)}const I=`X-Slicc-Version`;function L(e){let t={};if(e.headers)for(let[n,r]of Object.entries(e.headers))n.toLowerCase()!==`x-slicc-version`&&(t[n]=r);return t[I]=`3.31.3`,{...e,headers:t}}const R=new Set;function z(e,t){if(e.headers){for(let t of Object.keys(e.headers))if(t.toLowerCase()===`x-session-id`)return e}return R.has(t)||(R.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":s(`adobe-provider-fallback`)}}}function B(){R.clear()}function V(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()}}}const H=(t,r,i={})=>{let o=a();return(async()=>{try{let a=await N();if(String(t.api).includes(`openai`)){let e=n({...t,baseUrl:`${_()}/v1`,api:`openai-completions`,compat:{...t.compat,supportsStore:!1,supportsDeveloperRole:!1}},r,L(z({...i,apiKey:a},`streamAdobe[openai]`)));for await(let t of e)o.push(t)}else{let n=e({...t,baseUrl:_(),api:`anthropic-messages`},r,L(z({...i,apiKey:a},`streamAdobe[anthropic]`)));for await(let e of n)o.push(e)}o.end()}catch(e){console.error(`[adobe] Stream error:`,e instanceof Error?e.message:String(e)),o.push(V(t,e)),o.end()}})(),o},U=(e,t,n)=>{let r=a();return(async()=>{try{let a=await N();if(String(e.api).includes(`openai`)){let o=i({...e,baseUrl:`${_()}/v1`,api:`openai-completions`,compat:{...e.compat,supportsStore:!1,supportsDeveloperRole:!1}},t,L(z({...n,apiKey:a},`streamSimpleAdobe[openai]`)));for await(let e of o)r.push(e)}else{let i=d({...e,baseUrl:_(),api:`anthropic-messages`},t,L(z({...n,apiKey:a},`streamSimpleAdobe[anthropic]`)));for await(let e of i)r.push(e)}r.end()}catch(t){console.error(`[adobe] Stream error:`,t instanceof Error?t.message:String(t)),r.push(V(e,t)),r.end()}})(),r};async function W(){try{let e=await N(),n=_(),r=await fetch(`${n}/v1/models`,{headers:{Authorization:`Bearer ${e}`,[I]:`3.31.3`}});if(r.ok){let e=await r.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),y.set(t.id,e)}let r=new Map;for(let e of o())try{for(let n of t(e))r.set(n.id,n)}catch{}return e.data.map(e=>{let t=r.get(e.id),i=`adobe-${e.api===`openai`?`openai`:`anthropic`}`;return t?{...t,provider:`adobe`,api:i}:{id:e.id,name:e.name??e.id,provider:`adobe`,api:i,baseUrl:n,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 ${r.status}, falling back to Anthropic models`)}catch(e){console.warn(`[adobe] Failed to fetch proxy models:`,e instanceof Error?e.message:String(e))}return t(`anthropic`).map(e=>({...e,provider:`adobe`,api:`adobe-anthropic`}))}const G=new Map;async function K(){let e=_(),t=G.get(e);if(t)return t;let n=await W();return G.set(e,n),n}function q(){r({api:`adobe-anthropic`,stream:H,streamSimple:U}),r({api:`adobe-openai`,stream:H,streamSimple:U})}export{B as __resetAdobeSessionIdWarningCacheForTests,A as config,K as getAdobeModels,N as getValidAccessToken,P as isTokenExpired,q as register};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/oauth-service-HiBl8eyP.js","assets/main-BrawN-is.js","assets/modulepreload-polyfill-Dezn_h7o.js","assets/main-D683Koa8.css"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{H as e,J as t,K as n,W as r,Z as i,at as a,f as o,it as s,n as c,nt as l,r as u,s as d,tt as f}from"./main-BrawN-is.js";import{getOAuthPageOrigin as p}from"./oauth-service-HiBl8eyP.js";var m={proxyEndpoint:`https://adobe-llm-proxy.paolo-moz.workers.dev`,redirectUri:`https://www.sliccy.ai/auth/callback`,extensionRedirectUri:`https://akjjllgokmbgpbdbmafpiefnhidlmbgf.chromiumapp.org/adobe`};function h(e,t){let n={id:e.id,name:e.name??e.id},r=t?.api??e.api,i=t?.context_window??e.context_window,a=t?.max_tokens??e.max_tokens,o=t?.reasoning??e.reasoning,s=t?.input??e.input;return r&&(n.api=r),i!==void 0&&(n.context_window=i),a!==void 0&&(n.max_tokens=a),o!==void 0&&(n.reasoning=o),s&&(n.input=s),/haiku/i.test(e.id)&&(n.compat={supportsEagerToolInputStreaming:!1}),n}var g=5*6e4;function _(e=g){let t=0;return{async run(n,r=Date.now()){if(r<t)return null;let i=null;try{i=await n()}catch(e){console.debug(`[silent-renew-backoff] renew threw:`,e instanceof Error?e.message:String(e)),i=null}return t=i?0:r+e,i},inCooldown(e=Date.now()){return e<t}}}var v=Object.assign({"/packages/webapp/providers/adobe-config.json":m})[`/packages/webapp/providers/adobe-config.json`]??{clientId:``,proxyEndpoint:``,scopes:`openid,profile,email`};function y(){let e=d(`adobe`);if(e)return e.replace(/\/$/,``);if(v.proxyEndpoint)return v.proxyEndpoint.replace(/\/$/,``);throw Error(`Adobe proxy endpoint not configured — set it in Settings or adobe-config.json`)}var b=new Map,x=new Map;async function S(e){let t=b.get(e);if(t)return t;try{let t=await fetch(`${e}/v1/config`,{headers:{[R]:`3.31.3`}});if(t.ok){let n=await t.json();return b.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 b.set(e,n),n}function C(e){let t=e.clientId||v.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 w(e){return e.scopes||v.scopes}function T(e){return e.imsEnvironment||v.imsEnvironment||`prod`}var E={prod:`https://ims-na1.adobelogin.com`,stg1:`https://ims-na1-stg1.adobelogin.com`};function D(e){return E[e??v.imsEnvironment??`prod`]??E.prod}var O=typeof chrome<`u`&&!!chrome?.runtime?.id;function k(){return u().find(e=>e.providerId===`adobe`)}async function A(e,t){try{let n=await fetch(`${D(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 j(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 M={id:`adobe`,name:`Adobe`,description:`Claude via Adobe — login with your Adobe ID`,requiresApiKey:!1,requiresBaseUrl:!v.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=>h(e,x.get(e.id));for(let t of J.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 b.values())if(t.models?.length)return t.models.map(t=>e(t));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,n)=>{let r=y(),i=await S(r),a=C(i),s=w(i),c=T(i),l=O?null:await p(),u=O?v.extensionRedirectUri??`https://${chrome.runtime.id}.chromiumapp.org/`:v.redirectUri??`${l.origin}/auth/callback`,d=O?void 0:btoa(JSON.stringify({port:parseInt(new URL(l.href).port||`5710`,10),path:`/auth/callback`,nonce:crypto.randomUUID()})),f=d?JSON.parse(atob(d)).nonce:null,m=new URLSearchParams({client_id:a,scope:s,response_type:`token`,redirect_uri:u});d&&m.set(`state`,d),n?.forceReauth&&m.set(`prompt`,`login`);let h=await e(`${D(c)}/ims/authorize/v2?${m}`);if(!h)return;if(f&&h)try{if(new URL(h).searchParams.get(`nonce`)!==f){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 g=j(h);if(!g){console.error(`[adobe] Could not extract token from redirect URL`);return}let _=await A(g.accessToken,c);await o({providerId:`adobe`,accessToken:g.accessToken,tokenExpiresAt:Date.now()+g.expiresIn*1e3,userName:_.name,userAvatar:_.avatar,baseUrl:v.proxyEndpoint?void 0:r}),await Y().catch(e=>console.warn(`[adobe] Failed to fetch models after login:`,e instanceof Error?e.message:String(e))),t()},onOAuthLogout:async()=>{let e=k();if(e?.accessToken)try{let t=b.values().next().value??{},n=t.clientId||v.clientId,r=T(t);if(n){let t=await fetch(`${D(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 o({providerId:`adobe`,accessToken:``})},onSilentRenew:async()=>k()?.accessToken?L():null},N=null,P=_();async function F(){let e=k();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...`);let t=await P.run(()=>L());if(t)return t;let n=k();if((n?.tokenExpiresAt??0)-Date.now()>0&&n?.accessToken)return n.accessToken;throw Error(`Adobe session expired — please log in again`)}function I(){let e=k();return e?.tokenExpiresAt?Date.now()>e.tokenExpiresAt-6e4:!0}async function L(){return typeof window>`u`?null:N||(N=(async()=>{try{let e=y(),t=await S(e),n=C(t),r=w(t),i=T(t),a=O?v.extensionRedirectUri??`https://${chrome.runtime.id}.chromiumapp.org/`:v.redirectUri??`${window.location.origin}/auth/callback`,c=O?void 0:btoa(JSON.stringify({port:parseInt(new URL(window.location.href).port||`5710`,10),path:`/auth/callback`,nonce:crypto.randomUUID()})),l=c?JSON.parse(atob(c)).nonce:null,u=new URLSearchParams({client_id:n,scope:r,response_type:`token`,redirect_uri:a,prompt:`none`});c&&u.set(`state`,c);let d=`${D(i)}/ims/authorize/v2?${u}`,{createOAuthLauncher:f}=await s(async()=>{let{createOAuthLauncher:e}=await import(`./oauth-service-HiBl8eyP.js`);return{createOAuthLauncher:e}},__vite__mapDeps([0,1,2,3])),p=await f()(d,{interactive:!1});if(!p)return null;if(l&&p)try{if(new URL(p).searchParams.get(`nonce`)!==l)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 m=j(p);if(!m)return null;let h=k();return await o({providerId:`adobe`,accessToken:m.accessToken,tokenExpiresAt:Date.now()+m.expiresIn*1e3,userName:h?.userName,userAvatar:h?.userAvatar,baseUrl:v.proxyEndpoint?void 0:e}),console.log(`[adobe] Token renewed silently`),await Y().catch(e=>console.warn(`[adobe] Failed to refresh models after silent renewal:`,e instanceof Error?e.message:String(e))),m.accessToken}catch(e){return console.warn(`[adobe] Silent renewal error:`,e instanceof Error?e.message:String(e)),null}finally{N=null}})(),N)}var R=`X-Slicc-Version`;function z(e){let t={},n=R.toLowerCase();if(e.headers)for(let[r,i]of Object.entries(e.headers))r.toLowerCase()!==n&&(t[r]=i);return t[R]=`3.31.3`,{...e,headers:t}}var B=`adobe-provider-fallback`,V=new Set;function H(e,t){if(e.headers){for(let t of Object.keys(e.headers))if(t.toLowerCase()===`x-session-id`)return e}return V.has(t)||(V.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":c(B)}}}function U(){V.clear()}function W(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 G=(t,n,a={})=>{let o=i();return(async()=>{try{let i=await F();if(String(t.api).includes(`openai`)){let e=r({...t,baseUrl:`${y()}/v1`,api:`openai-completions`,compat:{...t.compat,supportsStore:!1,supportsDeveloperRole:!1}},n,z(H({...a,apiKey:i},`streamAdobe[openai]`)));for await(let t of e)o.push(t)}else{let r=e({...t,baseUrl:y(),api:`anthropic-messages`},n,z(H({...a,apiKey:i},`streamAdobe[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(W(t,e)),o.end()}})(),o},K=(e,r,a)=>{let o=i();return(async()=>{try{let i=await F();if(String(e.api).includes(`openai`)){let n=t({...e,baseUrl:`${y()}/v1`,api:`openai-completions`,compat:{...e.compat,supportsStore:!1,supportsDeveloperRole:!1}},r,z(H({...a,apiKey:i},`streamSimpleAdobe[openai]`)));for await(let e of n)o.push(e)}else{let t=n({...e,baseUrl:y(),api:`anthropic-messages`},r,z(H({...a,apiKey:i},`streamSimpleAdobe[anthropic]`)));for await(let e of t)o.push(e)}o.end()}catch(t){console.error(`[adobe] Stream error:`,t instanceof Error?t.message:String(t)),o.push(W(e,t)),o.end()}})(),o};async function q(){try{let e=await F(),t=y(),n=await fetch(`${t}/v1/models`,{headers:{Authorization:`Bearer ${e}`,[R]:`3.31.3`}});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),x.set(t.id,e)}let n=new Map;for(let e of l())try{for(let t of f(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 f(`anthropic`).map(e=>({...e,provider:`adobe`,api:`adobe-anthropic`}))}var J=new Map;async function Y(){let e=y(),t=J.get(e);if(t)return t;let n=await q();return J.set(e,n),n}function X(){a({api:`adobe-anthropic`,stream:G,streamSimple:K}),a({api:`adobe-openai`,stream:G,streamSimple:K})}export{U as __resetAdobeSessionIdWarningCacheForTests,M as config,Y as getAdobeModels,F as getValidAccessToken,I as isTokenExpired,X as register};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$ as e,X as t,rt as n,v as r}from"./main-BrawN-is.js";import{t as i}from"./headers-DO1UzNKu.js";import{t as a}from"./openai-Cn5LRPCm.js";import{n as o,r as s,t as c}from"./openai-responses-shared-D_srrvf3.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=(e,r,a)=>{let o=new t;return(async()=>{let t=f(e,a),c={role:`assistant`,content:[],api:`azure-openai-responses`,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()};try{let l=y(e,a?.apiKey||n(e.provider)||``,a),u=b(e,r,a,t),d=await a?.onPayload?.(u,e);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)},e),o.push({type:`start`,partial:c}),await s(p,c,o,e),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=(t,i,a)=>{let o=a?.apiKey||n(t.provider);if(!o)throw Error(`No API key for provider: ${t.provider}`);let s=r(t,a,o),c=a?.reasoning?e(t,a.reasoning):void 0,l=c===`off`?void 0:c;return m(t,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"./main-BrawN-is.js";function e(e){}export{e as registerSessionCostsProvider};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$ as e,Q as t,X as n,rt as r,v as i}from"./main-BrawN-is.js";import{t as a}from"./sanitize-unicode-DmIE6hZJ.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-CyoUDi1C.js";var p=0,m=(e,i,a)=>{let o=new n;return(async()=>{let n={role:`assistant`,content:[],api:`google-generative-ai`,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()};try{let c=g(e,a?.apiKey||r(e.provider)||``,a?.headers),d=_(e,i,a),f=await a?.onPayload?.(d,e);f!==void 0&&(d=f);let m=await c.models.generateContentStream(d);o.push({type:`start`,partial:n});let h=null,v=n.content,y=()=>v.length-1;for await(let r of m){n.responseId||=r.responseId;let i=r.candidates?.[0];if(i?.content?.parts)for(let e of i.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:n}):o.push({type:`thinking_end`,contentIndex:y(),content:h.thinking,partial:n})),t?(h={type:`thinking`,thinking:``,thinkingSignature:void 0},n.content.push(h),o.push({type:`thinking_start`,contentIndex:y(),partial:n})):(h={type:`text`,text:``},n.content.push(h),o.push({type:`text_start`,contentIndex:y(),partial:n}))),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:n})):(h.text+=e.text,h.textSignature=l(h.textSignature,e.thoughtSignature),o.push({type:`text_delta`,contentIndex:y(),delta:e.text,partial:n}))}if(e.functionCall){h&&=(h.type===`text`?o.push({type:`text_end`,contentIndex:y(),content:h.text,partial:n}):o.push({type:`thinking_end`,contentIndex:y(),content:h.thinking,partial:n}),null);let t=e.functionCall.id,r={type:`toolCall`,id:!t||n.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}};n.content.push(r),o.push({type:`toolcall_start`,contentIndex:y(),partial:n}),o.push({type:`toolcall_delta`,contentIndex:y(),delta:JSON.stringify(r.arguments),partial:n}),o.push({type:`toolcall_end`,contentIndex:y(),toolCall:r,partial:n})}}i?.finishReason&&(n.stopReason=s(i.finishReason),n.content.some(e=>e.type===`toolCall`)&&(n.stopReason=`toolUse`)),r.usageMetadata&&(n.usage={input:(r.usageMetadata.promptTokenCount||0)-(r.usageMetadata.cachedContentTokenCount||0),output:(r.usageMetadata.candidatesTokenCount||0)+(r.usageMetadata.thoughtsTokenCount||0),cacheRead:r.usageMetadata.cachedContentTokenCount||0,cacheWrite:0,totalTokens:r.usageMetadata.totalTokenCount||0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},t(e,n.usage))}if(h&&(h.type===`text`?o.push({type:`text_end`,contentIndex:y(),content:h.text,partial:n}):o.push({type:`thinking_end`,contentIndex:y(),content:h.thinking,partial:n})),a?.signal?.aborted)throw Error(`Request was aborted`);if(n.stopReason===`aborted`||n.stopReason===`error`)throw Error(`An unknown error occurred`);o.push({type:`done`,reason:n.stopReason,message:n}),o.end()}catch(e){for(let e of n.content)`index`in e&&delete e.index;n.stopReason=a?.signal?.aborted?`aborted`:`error`,n.errorMessage=e instanceof Error?e.message:JSON.stringify(e),o.push({type:`error`,reason:n.stopReason,error:n}),o.end()}})(),o},h=(t,n,a)=>{let o=a?.apiKey||r(t.provider);if(!o)throw Error(`No API key for provider: ${t.provider}`);let s=i(t,a,o);if(!a?.reasoning)return m(t,n,{...s,thinking:{enabled:!1}});let c=e(t,a.reasoning),l=c===`off`?`high`:c,u=t;return y(u)||b(u)||v(u)?m(t,n,{...s,thinking:{enabled:!0,level:S(l,u)}}):m(t,n,{...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};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{G as e,K as t,O as n,U as r,X as i,l as a}from"./kernel-worker-D0ATvajw.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-DiYuYF5B.js";let p=0;const m=(t,n,a)=>{let o=new r;return(async()=>{let r={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||i(t.provider)||``,a?.headers),d=_(t,n,a),f=await a?.onPayload?.(d,t);f!==void 0&&(d=f);let m=await c.models.generateContentStream(d);o.push({type:`start`,partial:r});let h=null,v=r.content,y=()=>v.length-1;for await(let n of m){r.responseId||=n.responseId;let i=n.candidates?.[0];if(i?.content?.parts)for(let e of i.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:r}):o.push({type:`thinking_end`,contentIndex:y(),content:h.thinking,partial:r})),t?(h={type:`thinking`,thinking:``,thinkingSignature:void 0},r.content.push(h),o.push({type:`thinking_start`,contentIndex:y(),partial:r})):(h={type:`text`,text:``},r.content.push(h),o.push({type:`text_start`,contentIndex:y(),partial:r}))),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:r})):(h.text+=e.text,h.textSignature=l(h.textSignature,e.thoughtSignature),o.push({type:`text_delta`,contentIndex:y(),delta:e.text,partial:r}))}if(e.functionCall){h&&=(h.type===`text`?o.push({type:`text_end`,contentIndex:y(),content:h.text,partial:r}):o.push({type:`thinking_end`,contentIndex:y(),content:h.thinking,partial:r}),null);let t=e.functionCall.id,n={type:`toolCall`,id:!t||r.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}};r.content.push(n),o.push({type:`toolcall_start`,contentIndex:y(),partial:r}),o.push({type:`toolcall_delta`,contentIndex:y(),delta:JSON.stringify(n.arguments),partial:r}),o.push({type:`toolcall_end`,contentIndex:y(),toolCall:n,partial:r})}}i?.finishReason&&(r.stopReason=s(i.finishReason),r.content.some(e=>e.type===`toolCall`)&&(r.stopReason=`toolUse`)),n.usageMetadata&&(r.usage={input:(n.usageMetadata.promptTokenCount||0)-(n.usageMetadata.cachedContentTokenCount||0),output:(n.usageMetadata.candidatesTokenCount||0)+(n.usageMetadata.thoughtsTokenCount||0),cacheRead:n.usageMetadata.cachedContentTokenCount||0,cacheWrite:0,totalTokens:n.usageMetadata.totalTokenCount||0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},e(t,r.usage))}if(h&&(h.type===`text`?o.push({type:`text_end`,contentIndex:y(),content:h.text,partial:r}):o.push({type:`thinking_end`,contentIndex:y(),content:h.thinking,partial:r})),a?.signal?.aborted)throw Error(`Request was aborted`);if(r.stopReason===`aborted`||r.stopReason===`error`)throw Error(`An unknown error occurred`);o.push({type:`done`,reason:r.stopReason,message:r}),o.end()}catch(e){for(let e of r.content)`index`in e&&delete e.index;r.stopReason=a?.signal?.aborted?`aborted`:`error`,r.errorMessage=e instanceof Error?e.message:JSON.stringify(e),o.push({type:`error`,reason:r.stopReason,error:r}),o.end()}})(),o},h=(e,r,a)=>{let o=a?.apiKey||i(e.provider);if(!o)throw Error(`No API key for provider: ${e.provider}`);let s=n(e,a,o);if(!a?.reasoning)return m(e,r,{...s,thinking:{enabled:!1}});let c=t(e,a.reasoning),l=c===`off`?`high`:c,u=e;return y(u)||b(u)||v(u)?m(e,r,{...s,thinking:{enabled:!0,level:S(l,u)}}):m(e,r,{...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};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$ as e,Q as t,X as n,v as r}from"./main-BrawN-is.js";import{t as i}from"./sanitize-unicode-DmIE6hZJ.js";import{a,c as o,i as s,l as c,n as l,o as u,r as d,s as f,t as p}from"./google-shared-CyoUDi1C.js";var m=`v1`,h=`gcp-vertex-credentials`,g={THINKING_LEVEL_UNSPECIFIED:c.THINKING_LEVEL_UNSPECIFIED,MINIMAL:c.MINIMAL,LOW:c.LOW,MEDIUM:c.MEDIUM,HIGH:c.HIGH},_=0,v=(e,r,i)=>{let a=new n;return(async()=>{let n={role:`assistant`,content:[],api:`google-vertex`,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()};try{let o=T(i),c=o?x(e,o,i?.headers):b(e,D(i),O(i),i?.headers),l=k(e,r,i),f=await i?.onPayload?.(l,e);f!==void 0&&(l=f);let p=await c.models.generateContentStream(l);a.push({type:`start`,partial:n});let m=null,h=n.content,g=()=>h.length-1;for await(let r of p){n.responseId||=r.responseId;let i=r.candidates?.[0];if(i?.content?.parts)for(let e of i.content.parts){if(e.text!==void 0){let t=d(e);(!m||t&&m.type!==`thinking`||!t&&m.type!==`text`)&&(m&&(m.type===`text`?a.push({type:`text_end`,contentIndex:h.length-1,content:m.text,partial:n}):a.push({type:`thinking_end`,contentIndex:g(),content:m.thinking,partial:n})),t?(m={type:`thinking`,thinking:``,thinkingSignature:void 0},n.content.push(m),a.push({type:`thinking_start`,contentIndex:g(),partial:n})):(m={type:`text`,text:``},n.content.push(m),a.push({type:`text_start`,contentIndex:g(),partial:n}))),m.type===`thinking`?(m.thinking+=e.text,m.thinkingSignature=u(m.thinkingSignature,e.thoughtSignature),a.push({type:`thinking_delta`,contentIndex:g(),delta:e.text,partial:n})):(m.text+=e.text,m.textSignature=u(m.textSignature,e.thoughtSignature),a.push({type:`text_delta`,contentIndex:g(),delta:e.text,partial:n}))}if(e.functionCall){m&&=(m.type===`text`?a.push({type:`text_end`,contentIndex:g(),content:m.text,partial:n}):a.push({type:`thinking_end`,contentIndex:g(),content:m.thinking,partial:n}),null);let t=e.functionCall.id,r={type:`toolCall`,id:!t||n.content.some(e=>e.type===`toolCall`&&e.id===t)?`${e.functionCall.name}_${Date.now()}_${++_}`:t,name:e.functionCall.name||``,arguments:e.functionCall.args??{},...e.thoughtSignature&&{thoughtSignature:e.thoughtSignature}};n.content.push(r),a.push({type:`toolcall_start`,contentIndex:g(),partial:n}),a.push({type:`toolcall_delta`,contentIndex:g(),delta:JSON.stringify(r.arguments),partial:n}),a.push({type:`toolcall_end`,contentIndex:g(),toolCall:r,partial:n})}}i?.finishReason&&(n.stopReason=s(i.finishReason),n.content.some(e=>e.type===`toolCall`)&&(n.stopReason=`toolUse`)),r.usageMetadata&&(n.usage={input:(r.usageMetadata.promptTokenCount||0)-(r.usageMetadata.cachedContentTokenCount||0),output:(r.usageMetadata.candidatesTokenCount||0)+(r.usageMetadata.thoughtsTokenCount||0),cacheRead:r.usageMetadata.cachedContentTokenCount||0,cacheWrite:0,totalTokens:r.usageMetadata.totalTokenCount||0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},t(e,n.usage))}if(m&&(m.type===`text`?a.push({type:`text_end`,contentIndex:g(),content:m.text,partial:n}):a.push({type:`thinking_end`,contentIndex:g(),content:m.thinking,partial:n})),i?.signal?.aborted)throw Error(`Request was aborted`);if(n.stopReason===`aborted`||n.stopReason===`error`)throw Error(`An unknown error occurred`);a.push({type:`done`,reason:n.stopReason,message:n}),a.end()}catch(e){for(let e of n.content)`index`in e&&delete e.index;n.stopReason=i?.signal?.aborted?`aborted`:`error`,n.errorMessage=e instanceof Error?e.message:JSON.stringify(e),a.push({type:`error`,reason:n.stopReason,error:n}),a.end()}})(),a},y=(t,n,i)=>{let a=r(t,i,void 0);if(!i?.reasoning)return v(t,n,{...a,thinking:{enabled:!1}});let o=e(t,i.reasoning),s=o===`off`?`high`:o,c=t;return A(c)||j(c)?v(t,n,{...a,thinking:{enabled:!0,level:N(s,c)}}):v(t,n,{...a,thinking:{enabled:!0,budgetTokens:P(c,s,i.thinkingBudgets)}})};function b(e,t,n,r){return new f({vertexai:!0,project:t,location:n,apiVersion:m,httpOptions:S(e,r)})}function x(e,t,n){return new f({vertexai:!0,apiKey:t,apiVersion:m,httpOptions:S(e,n)})}function S(e,t){let n={},r=C(e.baseUrl);return r&&(n.baseUrl=r,n.baseUrlResourceScope=o.COLLECTION,w(r)&&(n.apiVersion=``)),(e.headers||t)&&(n.headers={...e.headers,...t}),Object.keys(n).length>0?n:void 0}function C(e){let t=e.trim();if(!(!t||t.includes(`{location}`)))return t}function w(e){try{return new URL(e).pathname.split(`/`).some(e=>/^v\d+(?:beta\d*)?$/.test(e))}catch{return/(?:^|\/)v\d+(?:beta\d*)?(?:\/|$)/.test(e)}}function T(e){let t=e?.apiKey?.trim()||{}.GOOGLE_CLOUD_API_KEY?.trim();if(!(!t||t===h||E(t)))return t}function E(e){return/^<[^>]+>$/.test(e)}function D(e){let t=e?.project||{}.GOOGLE_CLOUD_PROJECT||{}.GCLOUD_PROJECT;if(!t)throw Error(`Vertex AI requires a project ID. Set GOOGLE_CLOUD_PROJECT/GCLOUD_PROJECT or pass project in options.`);return t}function O(e){let t=e?.location||{}.GOOGLE_CLOUD_LOCATION;if(!t)throw Error(`Vertex AI requires a location. Set GOOGLE_CLOUD_LOCATION or pass location in options.`);return t}function k(e,t,n={}){let r=p(e,t),o={};n.temperature!==void 0&&(o.temperature=n.temperature),n.maxTokens!==void 0&&(o.maxOutputTokens=n.maxTokens);let s={...Object.keys(o).length>0&&o,...t.systemPrompt&&{systemInstruction:i(t.systemPrompt)},...t.tools&&t.tools.length>0&&{tools:l(t.tools)}};if(t.tools&&t.tools.length>0&&n.toolChoice?s.toolConfig={functionCallingConfig:{mode:a(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=g[n.thinking.level],s.thinkingConfig=e}else e.reasoning&&n.thinking&&!n.thinking.enabled&&(s.thinkingConfig=M(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 A(e){return/gemini-3(?:\.\d+)?-pro/.test(e.id.toLowerCase())}function j(e){return/gemini-3(?:\.\d+)?-flash/.test(e.id.toLowerCase())}function M(e){let t=e;return A(t)?{thinkingLevel:c.LOW}:j(t)?{thinkingLevel:c.MINIMAL}:{thinkingBudget:0}}function N(e,t){if(A(t))switch(e){case`minimal`:case`low`:return`LOW`;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 P(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`)?{minimal:128,low:2048,medium:8192,high:24576}[t]:-1:n[t]}export{v as streamGoogleVertex,y as streamSimpleGoogleVertex};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/provider-B8PArOX3.js","assets/main-BrawN-is.js","assets/modulepreload-polyfill-Dezn_h7o.js","assets/main-D683Koa8.css","assets/global-db-CbuLl-zx.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{A as e,F as t,f as n,it as r,r as i}from"./main-BrawN-is.js";var a=t(`oauth-bootstrap`),o=6e4;async function s(){try{let{ensureAllMcpProvidersRegistered:e}=await r(async()=>{let{ensureAllMcpProvidersRegistered:e}=await import(`./provider-B8PArOX3.js`);return{ensureAllMcpProvidersRegistered:e}},__vite__mapDeps([0,1,2,3,4])),t=await e();t.length>0&&a.debug(`Pre-registered MCP providers for OAuth bootstrap`,{count:t.length})}catch(e){a.warn(`Failed to pre-register MCP providers for OAuth bootstrap`,{error:e instanceof Error?e.message:String(e)})}let t=i();a.info(`Bootstrap OAuth replicas`,{count:t.length});for(let r of t){if(!r.accessToken){a.debug(`Skipping account without token`,{providerId:r.providerId});continue}if((r.tokenExpiresAt??1/0)-Date.now()<=o){let t=e(r.providerId);if(t?.onSilentRenew)try{if(await t.onSilentRenew()){a.info(`Silently renewed OAuth token`,{providerId:r.providerId});continue}a.warn(`Silent renewal yielded no token; user must re-authenticate`,{providerId:r.providerId});continue}catch(e){a.warn(`Silent renewal failed`,{providerId:r.providerId,error:e instanceof Error?e.message:String(e)});continue}a.debug(`Skipping expired account (no silent-renew hook)`,{providerId:r.providerId});continue}try{await n({providerId:r.providerId,accessToken:r.accessToken,refreshToken:r.refreshToken,tokenExpiresAt:r.tokenExpiresAt,userName:r.userName,userAvatar:r.userAvatar}),a.debug(`Bootstrapped OAuth replica`,{providerId:r.providerId})}catch(e){a.error(`OAuth bootstrap failed`,{providerId:r.providerId,error:e instanceof Error?e.message:String(e)})}}}export{s as bootstrapOAuthReplicas};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{F as e,S as t,w as n}from"./main-BrawN-is.js";var r=e(`panel-transport`);function i(e){return typeof e==`object`&&!!e&&`source`in e&&`payload`in e}function a(){return{onMessage:e=>{let t=(t,n,r)=>(i(t)&&e(t),!1);return chrome.runtime.onMessage.addListener(t),()=>chrome.runtime.onMessage.removeListener(t)},send:e=>{chrome.runtime.sendMessage({source:`panel`,payload:e}).catch(e=>{r.error(`failed to send to offscreen`,{error:e instanceof Error?e.message:String(e)})})}}}var o=e(`offscreen-client`),s=class{eventListeners=new Set;callbacks;scoops=[];scoopStatuses=new Map;currentMessageId=new Map;ready=!1;stateRetryTimer=null;localFs=null;pendingClearAcks=new Map;transport;_selectedScoopJid=null;get selectedScoopJid(){return this._selectedScoopJid}scoopSelectedListeners=new Set;onScoopSelected(e){return this.scoopSelectedListeners.add(e),()=>{this.scoopSelectedListeners.delete(e)}}setSelectedScoopJid(e){if(this._selectedScoopJid!==e&&(this._selectedScoopJid=e,e!==null))for(let t of this.scoopSelectedListeners)try{t(e)}catch(e){o.error(`onScoopSelected handler threw`,{error:e instanceof Error?e.message:String(e)})}}locked=!1;constructor(e,t){this.callbacks=e,this.transport=t??a(),this.setupMessageListener()}setLocalFS(e){this.localFs=e}createAgentHandle(){return{sendMessage:(e,t,n)=>{if(!this.selectedScoopJid){this.emitToUI({type:`error`,error:`No scoop selected`});return}this.send({type:`user-message`,scoopJid:this.selectedScoopJid,text:e,attachments:n,messageId:t??`msg-${Date.now()}-${Math.random().toString(36).slice(2,8)}`})},onEvent:e=>(this.eventListeners.add(e),()=>this.eventListeners.delete(e)),stop:()=>{this.selectedScoopJid&&this.send({type:`abort`,scoopJid:this.selectedScoopJid})}}}getScoops(){return this.scoops}getScoop(e){return this.scoops.find(t=>t.jid===e)}isProcessing(e){return this.scoopStatuses.get(e)===`processing`}async registerScoop(e){if(!e.isCone)throw Error(`OffscreenClient.registerScoop is cone-only; use scoop_scoop for non-cone scoops`);this.scoops.find(t=>t.name===e.name)||(this.scoops.push(e),this.scoopStatuses.set(e.jid,`initializing`)),this.send({type:`cone-create`,name:e.name})}async unregisterScoop(e){this.send({type:`scoop-drop`,scoopJid:e}),this.scoops=this.scoops.filter(t=>t.jid!==e),this.scoopStatuses.delete(e)}createScoopTab(e){}async getGlobalMemory(){if(!this.localFs)return``;try{let e=await this.localFs.readFile(`/shared/CLAUDE.md`,{encoding:`utf-8`});return typeof e==`string`?e:new TextDecoder().decode(e)}catch{return``}}getScoopContext(e){if(this.localFs)return{getFS:()=>this.localFs}}getSharedFS(){return this.localFs}stopScoop(e){this.send({type:`abort`,scoopJid:e})}async clearQueuedMessages(e){}async deleteQueuedMessage(e,t){}updateModel(){this.send({type:`refresh-model`})}setLocked(e){this.locked=e}setScoopThinkingLevel(e,t){this.send({type:`set-thinking-level`,scoopJid:e,level:t})}async clearAllMessages(){let e=`clear-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,t=new Promise(t=>{this.pendingClearAcks.set(e,t)});this.send({type:`clear-chat`,requestId:e}),await Promise.race([t,new Promise(e=>setTimeout(e,5e3))]),this.pendingClearAcks.delete(e)}clearFilesystem(){this.send({type:`clear-filesystem`})}requestScoopMessages(e){this.send({type:`request-scoop-messages`,scoopJid:e})}requestState(){this.send({type:`request-state`});let e=0;this.stateRetryTimer=setInterval(()=>{if(e++,this.ready||e>20){this.stateRetryTimer&&=(clearInterval(this.stateRetryTimer),null);return}o.debug(`Retrying request-state`,{attempt:e}),this.send({type:`request-state`})},500)}isReady(){return this.ready}sprinkleOpHandler=null;forwardLickHandler=null;sendSprinkleLick(e,t,n,r){this.send({type:`sprinkle-lick`,sprinkleName:e,body:t,targetScoop:n,originLabel:r})}sendWebhookEvent(e,t,n){this.send({type:`lick-webhook-event`,webhookId:e,headers:t,body:n})}sendSetFollowerForwarding(e){this.send({type:`set-follower-forwarding`,enabled:e})}sendForwardedLick(e){this.send({type:`inject-forwarded-lick`,event:e})}setForwardLickHandler(e){this.forwardLickHandler=e}sendCherryHostEvent(e,t,n){this.send({type:`lick-cherry-host-event`,cherryRuntimeId:e,name:t,detail:n})}setSprinkleOpHandler(e){this.sprinkleOpHandler=e}sendRaw(e){this.send(e)}setupMessageListener(){this.transport.onMessage(e=>{if(e.source!==`offscreen`)return;let t=e.payload;t?.type===`sprinkle-op`&&this.sprinkleOpHandler?this.sprinkleOpHandler(t):this.handleOffscreenMessage(e.payload)})}handleOffscreenMessage(e){switch(e.type){case`offscreen-ready`:this.ready?(o.warn(`Offscreen restarted — re-requesting state`),this.ready=!1):o.info(`Offscreen engine ready`),this.send({type:`request-state`});break;case`agent-event`:this.handleAgentEvent(e);break;case`scoop-status`:this.handleScoopStatus(e);break;case`compaction-state`:this.callbacks.onCompactionStateChange?.(e.scoopJid,e.state);break;case`clear-chat-ack`:{let t=this.pendingClearAcks.get(e.requestId);t&&(this.pendingClearAcks.delete(e.requestId),t());break}case`scoop-created`:this.handleScoopCreated(e);break;case`scoop-list`:this.handleScoopList(e);break;case`state-snapshot`:this.handleStateSnapshot(e);break;case`error`:this.handleError(e);break;case`incoming-message`:this.handleIncomingMessage(e);break;case`scoop-messages-replaced`:{let t=e;this.callbacks.onScoopMessagesReplaced?.(t.scoopJid,t.messages);break}case`tray-runtime-status`:{let t=e;l(t.leader,t.follower);break}case`forward-lick`:this.forwardLickHandler?.(e.event);break;case`terminal-status`:case`terminal-output`:case`terminal-media-preview`:case`terminal-exit`:case`terminal-cleared`:for(let t of this.terminalEventListeners)try{t(e)}catch(e){o.error(`terminal event listener error`,{error:e instanceof Error?e.message:String(e)})}break}}terminalEventListeners=new Set;onTerminalEvent(e){return this.terminalEventListeners.add(e),()=>this.terminalEventListeners.delete(e)}handleAgentEvent(e){if(e.scoopJid===this.selectedScoopJid)switch(e.eventType){case`text_delta`:{let t=this.currentMessageId.get(e.scoopJid);t||(t=`scoop-${e.scoopJid}-${c()}`,this.currentMessageId.set(e.scoopJid,t),this.emitToUI({type:`message_start`,messageId:t})),this.emitToUI({type:`content_delta`,messageId:t,text:e.text??``});break}case`tool_start`:{let t=this.currentMessageId.get(e.scoopJid);t||(t=`scoop-${e.scoopJid}-${c()}`,this.currentMessageId.set(e.scoopJid,t),this.emitToUI({type:`message_start`,messageId:t})),this.emitToUI({type:`tool_use_start`,messageId:t,toolName:e.toolName??``,toolInput:e.toolInput});break}case`tool_end`:{let t=this.currentMessageId.get(e.scoopJid);t&&this.emitToUI({type:`tool_result`,messageId:t,toolName:e.toolName??``,result:e.toolResult??``,isError:e.isError});break}case`tool_ui`:{let t=this.currentMessageId.get(e.scoopJid);t||(t=`scoop-${e.scoopJid}-${c()}`,this.currentMessageId.set(e.scoopJid,t),this.emitToUI({type:`message_start`,messageId:t})),this.emitToUI({type:`tool_ui`,messageId:t,toolName:e.toolName??``,requestId:e.requestId??``,html:e.html??``});break}case`tool_ui_done`:{let t=this.currentMessageId.get(e.scoopJid);t&&this.emitToUI({type:`tool_ui_done`,messageId:t,requestId:e.requestId??``});break}case`response_done`:{let t=this.currentMessageId.get(e.scoopJid);t&&(this.emitToUI({type:`content_done`,messageId:t}),this.currentMessageId.delete(e.scoopJid));break}case`turn_end`:{let t=this.currentMessageId.get(e.scoopJid)??`done-${e.scoopJid}-${c()}`;this.currentMessageId.delete(e.scoopJid),this.emitToUI({type:`turn_end`,messageId:t});break}}}handleScoopStatus(e){this.scoopStatuses.set(e.scoopJid,e.status),this.callbacks.onStatusChange(e.scoopJid,e.status)}handleScoopCreated(e){let t=this.msgScoopToRegistered(e.scoop);this.scoops=this.scoops.filter(e=>e.name!==t.name||e.jid===t.jid),this.scoops.find(e=>e.jid===t.jid)||this.scoops.push(t),this.scoopStatuses.set(t.jid,e.scoop.status),this.callbacks.onScoopCreated(t)}handleScoopList(e){this.scoops=e.scoops.map(e=>this.msgScoopToRegistered(e));for(let t of e.scoops)this.scoopStatuses.set(t.jid,t.status);this.callbacks.onScoopListUpdate(e.scoops)}handleStateSnapshot(e){o.info(`Received state snapshot`,{scoopCount:e.scoops.length}),this.scoops=e.scoops.map(e=>this.msgScoopToRegistered(e));for(let t of e.scoops)this.scoopStatuses.set(t.jid,t.status);e.trayRuntimeStatus&&l(e.trayRuntimeStatus.leader,e.trayRuntimeStatus.follower);let t=!this.ready;t&&(this.ready=!0,this.stateRetryTimer&&=(clearInterval(this.stateRetryTimer),null)),this.callbacks.onScoopListUpdate(e.scoops),t&&this.callbacks.onReady?.()}handleError(e){e.scoopJid===this.selectedScoopJid&&this.emitToUI({type:`error`,error:e.error})}handleIncomingMessage(e){this.callbacks.onIncomingMessage(e.scoopJid,e.message)}msgScoopToRegistered(e){return{jid:e.jid,name:e.name,folder:e.folder,isCone:e.isCone,type:e.isCone?`cone`:`scoop`,requiresTrigger:!e.isCone,assistantLabel:e.assistantLabel,addedAt:new Date().toISOString(),...e.config?{config:{...e.config}}:{}}}emitToUI(e){for(let t of this.eventListeners)try{t(e)}catch(e){o.error(`Listener error`,{error:e instanceof Error?e.message:String(e)})}}send(e){if(this.locked){this.emitToUI({type:`error`,error:`This window is detached. Close it and use the detached tab.`});return}this.transport.send(e)}};function c(){return Date.now().toString(36)+Math.random().toString(36).slice(2,8)}function l(e,r){n({state:e.state,error:e.error,reconnectAttempts:e.reconnectAttempts,session:e.session?{...e.session}:null}),t({state:r.state,joinUrl:r.joinUrl,trayId:r.trayId,error:r.error,lastError:r.lastError,reconnectAttempts:r.reconnectAttempts,attachAttempts:r.attachAttempts,lastAttachCode:r.lastAttachCode,connectingSince:r.connectingSince,lastPingTime:r.lastPingTime})}export{s as OffscreenClient};
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import{$ as e,L as t,Q as n,X as r,g as i,rt as a,v as o}from"./main-BrawN-is.js";import{t as s}from"./headers-DO1UzNKu.js";import{t as c}from"./sanitize-unicode-DmIE6hZJ.js";import{i as l,n as u,r as d,t as f}from"./github-copilot-headers-DZtWWv8W.js";import{n as p}from"./openai-Cn5LRPCm.js";function m(e){for(let t of e)if(t.role===`toolResult`||t.role===`assistant`&&t.content.some(e=>e.type===`toolCall`))return!0;return!1}function h(e){return e.type===`text`}function g(e){return e.type===`thinking`}function _(e){return e.type===`toolCall`}function v(e){return e.type===`image`}function y(e){return e||(typeof process<`u`&&{}.PI_CACHE_RETENTION===`long`?`long`:`short`)}var b=(e,n,i)=>{let o=new r;return(async()=>{let r={role:`assistant`,content:[],api:e.api,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()};try{let c=i?.apiKey||a(e.provider)||``,l=L(e),u=y(i?.cacheRetention),d=u===`none`?void 0:i?.sessionId,f=S(e,n,c,i?.headers,d,l),p=C(e,n,i,l,u),m=await i?.onPayload?.(p,e);m!==void 0&&(p=m);let h={...i?.signal?{signal:i.signal}:{},...i?.timeoutMs===void 0?{}:{timeout:i.timeoutMs},...i?.maxRetries===void 0?{}:{maxRetries:i.maxRetries}},{data:g,response:_}=await f.chat.completions.create(p,h).withResponse();await i?.onResponse?.({status:_.status,headers:s(_.headers)},e),o.push({type:`start`,partial:r});let v=null,b=null,x=!1,w=new Map,T=new Map,E=r.content,D=e=>E.indexOf(e),O=e=>{let n=D(e);n!==-1&&(e.type===`text`?o.push({type:`text_end`,contentIndex:n,content:e.text,partial:r}):e.type===`thinking`?o.push({type:`thinking_end`,contentIndex:n,content:e.thinking,partial:r}):e.type===`toolCall`&&(e.arguments=t(e.partialArgs),delete e.partialArgs,delete e.streamIndex,o.push({type:`toolcall_end`,contentIndex:n,toolCall:e,partial:r})))},k=()=>(v||(v={type:`text`,text:``},E.push(v),o.push({type:`text_start`,contentIndex:D(v),partial:r})),v),A=e=>(b||(b={type:`thinking`,thinking:``,thinkingSignature:e},E.push(b),o.push({type:`thinking_start`,contentIndex:D(b),partial:r})),b),j=e=>{let t=typeof e.index==`number`?e.index:void 0,n=t===void 0?void 0:w.get(t);return!n&&e.id&&(n=T.get(e.id)),n||(n={type:`toolCall`,id:e.id||``,name:e.function?.name||``,arguments:{},partialArgs:``,streamIndex:t},t!==void 0&&w.set(t,n),e.id&&T.set(e.id,n),E.push(n),o.push({type:`toolcall_start`,contentIndex:D(n),partial:r})),t!==void 0&&n.streamIndex===void 0&&(n.streamIndex=t,w.set(t,n)),e.id&&T.set(e.id,n),n};for await(let n of g){if(!n||typeof n!=`object`)continue;r.responseId||=n.id,typeof n.model==`string`&&n.model.length>0&&n.model!==e.id&&(r.responseModel||=n.model),n.usage&&(r.usage=P(n.usage,e));let i=Array.isArray(n.choices)?n.choices[0]:void 0;if(i){if(!n.usage&&i.usage&&(r.usage=P(i.usage,e)),i.finish_reason){let e=F(i.finish_reason);r.stopReason=e.stopReason,e.errorMessage&&(r.errorMessage=e.errorMessage),x=!0}if(i.delta){if(i.delta.content!==null&&i.delta.content!==void 0&&i.delta.content.length>0){let e=k();e.text+=i.delta.content,o.push({type:`text_delta`,contentIndex:D(e),delta:i.delta.content,partial:r})}let n=[`reasoning_content`,`reasoning`,`reasoning_text`],a=i.delta,s=null;for(let e of n){let t=a[e];if(typeof t==`string`&&t.length>0){s=e;break}}if(s){let t=a[s];if(typeof t==`string`&&t.length>0){let n=A(e.provider===`opencode-go`&&s===`reasoning`?`reasoning_content`:s);n.thinking+=t,o.push({type:`thinking_delta`,contentIndex:D(n),delta:t,partial:r})}}if(i?.delta?.tool_calls)for(let e of i.delta.tool_calls){let n=j(e);!n.id&&e.id&&(n.id=e.id,T.set(e.id,n)),!n.name&&e.function?.name&&(n.name=e.function.name);let i=``;e.function?.arguments&&(i=e.function.arguments,n.partialArgs=(n.partialArgs??``)+e.function.arguments,n.arguments=t(n.partialArgs)),o.push({type:`toolcall_delta`,contentIndex:D(n),delta:i,partial:r})}let c=i.delta.reasoning_details;if(c&&Array.isArray(c)){for(let e of c)if(e.type===`reasoning.encrypted`&&e.id&&e.data){let t=r.content.find(t=>t.type===`toolCall`&&t.id===e.id);t&&(t.thoughtSignature=JSON.stringify(e))}}}}}for(let e of E)O(e);if(i?.signal?.aborted||r.stopReason===`aborted`)throw Error(`Request was aborted`);if(r.stopReason===`error`)throw Error(r.errorMessage||`Provider returned an error stop reason`);if(!x)throw Error(`Stream ended without finish_reason`);o.push({type:`done`,reason:r.stopReason,message:r}),o.end()}catch(e){for(let e of r.content)delete e.index,delete e.partialArgs,delete e.streamIndex;r.stopReason=i?.signal?.aborted?`aborted`:`error`,r.errorMessage=e instanceof Error?e.message:JSON.stringify(e);let t=e?.error?.metadata?.raw;t&&(r.errorMessage+=`\n${t}`),o.push({type:`error`,reason:r.stopReason,error:r}),o.end()}})(),o},x=(t,n,r)=>{let i=r?.apiKey||a(t.provider);if(!i)throw Error(`No API key for provider: ${t.provider}`);let s=o(t,r,i),c=r?.reasoning?e(t,r.reasoning):void 0,l=c===`off`?void 0:c,u=r?.toolChoice;return b(t,n,{...s,reasoningEffort:l,toolChoice:u})};function S(e,t,n,r,i,a=L(e)){if(!n){if(!{}.OPENAI_API_KEY)throw Error(`OpenAI API key is required. Set OPENAI_API_KEY environment variable or pass it as an argument.`);n={}.OPENAI_API_KEY}let o={...e.headers};if(e.provider===`github-copilot`){let e=u(t.messages),n=f({messages:t.messages,hasImages:e});Object.assign(o,n)}i&&a.sendSessionAffinityHeaders&&(o.session_id=i,o[`x-client-request-id`]=i,o[`x-session-affinity`]=i),r&&Object.assign(o,r);let s=e.provider===`cloudflare-ai-gateway`?{...o,Authorization:o.Authorization??null,"cf-aig-authorization":`Bearer ${n}`}:o;return new p({apiKey:n,baseURL:d(e.provider)?l(e):e.baseUrl,dangerouslyAllowBrowser:!0,defaultHeaders:s})}function C(e,t,n,r=L(e),i=y(n?.cacheRetention)){let a=M(e,t,r),o=w(r,i),s={model:e.id,messages:a,stream:!0,prompt_cache_key:e.baseUrl.includes(`api.openai.com`)&&i!==`none`||i===`long`&&r.supportsLongCacheRetention?n?.sessionId:void 0,prompt_cache_retention:i===`long`&&r.supportsLongCacheRetention?`24h`:void 0};if(r.supportsUsageInStreaming!==!1&&(s.stream_options={include_usage:!0}),r.supportsStore&&(s.store=!1),n?.maxTokens&&(r.maxTokensField===`max_tokens`?s.max_tokens=n.maxTokens:s.max_completion_tokens=n.maxTokens),n?.temperature!==void 0&&(s.temperature=n.temperature),t.tools&&t.tools.length>0?(s.tools=N(t.tools,r),r.zaiToolStream&&(s.tool_stream=!0)):m(t.messages)&&(s.tools=[]),o&&T(a,s.tools,o),n?.toolChoice&&(s.tool_choice=n.toolChoice),r.thinkingFormat===`zai`&&e.reasoning)s.enable_thinking=!!n?.reasoningEffort;else if(r.thinkingFormat===`qwen`&&e.reasoning)s.enable_thinking=!!n?.reasoningEffort;else if(r.thinkingFormat===`qwen-chat-template`&&e.reasoning)s.chat_template_kwargs={enable_thinking:!!n?.reasoningEffort,preserve_thinking:!0};else if(r.thinkingFormat===`deepseek`&&e.reasoning)s.thinking={type:n?.reasoningEffort?`enabled`:`disabled`},n?.reasoningEffort&&(s.reasoning_effort=e.thinkingLevelMap?.[n.reasoningEffort]??n.reasoningEffort);else if(r.thinkingFormat===`openrouter`&&e.reasoning){let t=s;n?.reasoningEffort?t.reasoning={effort:e.thinkingLevelMap?.[n.reasoningEffort]??n.reasoningEffort}:e.thinkingLevelMap?.off!==null&&(t.reasoning={effort:e.thinkingLevelMap?.off??`none`})}else if(r.thinkingFormat===`together`&&e.reasoning){let t=s;t.reasoning={enabled:!!n?.reasoningEffort},n?.reasoningEffort&&r.supportsReasoningEffort&&(t.reasoning_effort=e.thinkingLevelMap?.[n.reasoningEffort]??n.reasoningEffort)}else if(n?.reasoningEffort&&e.reasoning&&r.supportsReasoningEffort)s.reasoning_effort=e.thinkingLevelMap?.[n.reasoningEffort]??n.reasoningEffort;else if(!n?.reasoningEffort&&e.reasoning&&r.supportsReasoningEffort){let t=e.thinkingLevelMap?.off;typeof t==`string`&&(s.reasoning_effort=t)}if(e.baseUrl.includes(`openrouter.ai`)&&e.compat?.openRouterRouting&&(s.provider=e.compat.openRouterRouting),e.baseUrl.includes(`ai-gateway.vercel.sh`)&&e.compat?.vercelGatewayRouting){let t=e.compat.vercelGatewayRouting;if(t.only||t.order){let e={};t.only&&(e.only=t.only),t.order&&(e.order=t.order),s.providerOptions={gateway:e}}}return s}function w(e,t){if(e.cacheControlFormat!==`anthropic`||t===`none`)return;let n=t===`long`&&e.supportsLongCacheRetention?`1h`:void 0;return{type:`ephemeral`,...n?{ttl:n}:{}}}function T(e,t,n){E(e,n),O(t,n),D(e,n)}function E(e,t){for(let n of e)if(n.role===`system`||n.role===`developer`){k(n,t);return}}function D(e,t){for(let n=e.length-1;n>=0;n--){let r=e[n];if((r.role===`user`||r.role===`assistant`)&&A(r,t))return}}function O(e,t){if(!e||e.length===0)return;let n=e[e.length-1];n.cache_control=t}function k(e,t){return j(e,t)}function A(e,t){return e.role===`user`||e.role===`assistant`?j(e,t):!1}function j(e,t){let n=e.content;if(typeof n==`string`)return n.length===0?!1:(e.content=[{type:`text`,text:n,cache_control:t}],!0);if(!Array.isArray(n))return!1;for(let e=n.length-1;e>=0;e--){let r=n[e];if(r?.type===`text`){let e=r;return e.cache_control=t,!0}}return!1}function M(e,t,n){let r=[],a=t=>{if(t.includes(`|`)){let[e]=t.split(`|`);return e.replace(/[^a-zA-Z0-9_-]/g,`_`).slice(0,40)}return e.provider===`openai`&&t.length>40?t.slice(0,40):t},o=i(t.messages,e,e=>a(e));if(t.systemPrompt){let i=e.reasoning&&n.supportsDeveloperRole?`developer`:`system`;r.push({role:i,content:c(t.systemPrompt)})}let s=null;for(let t=0;t<o.length;t++){let i=o[t];if(n.requiresAssistantAfterToolResult&&s===`toolResult`&&i.role===`user`&&r.push({role:`assistant`,content:`I have processed the tool results.`}),i.role===`user`)if(typeof i.content==`string`)r.push({role:`user`,content:c(i.content)});else{let e=i.content.map(e=>e.type===`text`?{type:`text`,text:c(e.text)}:{type:`image_url`,image_url:{url:`data:${e.mimeType};base64,${e.data}`}});if(e.length===0)continue;r.push({role:`user`,content:e})}else if(i.role===`assistant`){let t={role:`assistant`,content:n.requiresAssistantAfterToolResult?``:null},a=i.content.filter(h).filter(e=>e.text.trim().length>0).map(e=>({type:`text`,text:c(e.text)})),o=a.map(e=>e.text).join(``),s=i.content.filter(g).filter(e=>e.thinking.trim().length>0);if(s.length>0)if(n.requiresThinkingAsText)t.content=[{type:`text`,text:s.map(e=>c(e.thinking)).join(`
|
|
2
|
-
|
|
3
|
-
`)},...a];else{o.length>0&&(t.content=o);let n=s[0].thinkingSignature;e.provider===`opencode-go`&&n===`reasoning`&&(n=`reasoning_content`),n&&n.length>0&&(t[n]=s.map(e=>e.thinking).join(`
|
|
4
|
-
`))}else o.length>0&&(t.content=o);let l=i.content.filter(_);if(l.length>0){t.tool_calls=l.map(e=>({id:e.id,type:`function`,function:{name:e.name,arguments:JSON.stringify(e.arguments)}}));let e=l.filter(e=>e.thoughtSignature).map(e=>{try{return JSON.parse(e.thoughtSignature)}catch{return null}}).filter(Boolean);e.length>0&&(t.reasoning_details=e)}n.requiresReasoningContentOnAssistantMessages&&e.reasoning&&t.reasoning_content===void 0&&(t.reasoning_content=``);let u=t.content;if(!(u!=null&&u.length>0)&&!t.tool_calls)continue;r.push(t)}else if(i.role===`toolResult`){let i=[],a=t;for(;a<o.length&&o[a].role===`toolResult`;a++){let t=o[a],s=t.content.filter(h).map(e=>e.text).join(`
|
|
5
|
-
`),l=t.content.some(e=>e.type===`image`),u={role:`tool`,content:c(s.length>0?s:`(see attached image)`),tool_call_id:t.toolCallId};if(n.requiresToolResultName&&t.toolName&&(u.name=t.toolName),r.push(u),l&&e.input.includes(`image`))for(let e of t.content)v(e)&&i.push({type:`image_url`,image_url:{url:`data:${e.mimeType};base64,${e.data}`}})}t=a-1,i.length>0?(n.requiresAssistantAfterToolResult&&r.push({role:`assistant`,content:`I have processed the tool results.`}),r.push({role:`user`,content:[{type:`text`,text:`Attached image(s) from tool result:`},...i]}),s=`user`):s=`toolResult`;continue}s=i.role}return r}function N(e,t){return e.map(e=>({type:`function`,function:{name:e.name,description:e.description,parameters:e.parameters,...t.supportsStrictMode!==!1&&{strict:!1}}}))}function P(e,t){let r=e.prompt_tokens||0,i=e.prompt_tokens_details?.cached_tokens??e.prompt_cache_hit_tokens??0,a=e.prompt_tokens_details?.cache_write_tokens||0,o=Math.max(0,r-i-a),s=e.completion_tokens||0,c={input:o,output:s,cacheRead:i,cacheWrite:a,totalTokens:o+s+i+a,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}};return n(t,c),c}function F(e){if(e===null)return{stopReason:`stop`};switch(e){case`stop`:case`end`:return{stopReason:`stop`};case`length`:return{stopReason:`length`};case`function_call`:case`tool_calls`:return{stopReason:`toolUse`};case`content_filter`:return{stopReason:`error`,errorMessage:`Provider finish_reason: content_filter`};case`network_error`:return{stopReason:`error`,errorMessage:`Provider finish_reason: network_error`};default:return{stopReason:`error`,errorMessage:`Provider finish_reason: ${e}`}}}function I(e){let t=e.provider,n=e.baseUrl,r=t===`zai`||n.includes(`api.z.ai`),i=t===`together`||n.includes(`api.together.ai`)||n.includes(`api.together.xyz`),a=t===`moonshotai`||t===`moonshotai-cn`||n.includes(`api.moonshot.`),o=t===`cloudflare-workers-ai`||n.includes(`api.cloudflare.com`),s=t===`cloudflare-ai-gateway`||n.includes(`gateway.ai.cloudflare.com`),c=t===`cerebras`||n.includes(`cerebras.ai`)||t===`xai`||n.includes(`api.x.ai`)||i||n.includes(`chutes.ai`)||n.includes(`deepseek.com`)||r||a||t===`opencode`||n.includes(`opencode.ai`)||o||s,l=n.includes(`chutes.ai`)||a||s||i,u=t===`xai`||n.includes(`api.x.ai`),d=t===`deepseek`||n.includes(`deepseek.com`),f=t===`openrouter`&&e.id.startsWith(`anthropic/`)?`anthropic`:void 0;return{supportsStore:!c,supportsDeveloperRole:!c,supportsReasoningEffort:!u&&!r&&!a&&!i&&!s,supportsUsageInStreaming:!0,maxTokensField:l?`max_tokens`:`max_completion_tokens`,requiresToolResultName:!1,requiresAssistantAfterToolResult:!1,requiresThinkingAsText:!1,requiresReasoningContentOnAssistantMessages:d,thinkingFormat:d?`deepseek`:r?`zai`:i?`together`:t===`openrouter`||n.includes(`openrouter.ai`)?`openrouter`:`openai`,openRouterRouting:{},vercelGatewayRouting:{},zaiToolStream:!1,supportsStrictMode:!a&&!i&&!s,cacheControlFormat:f,sendSessionAffinityHeaders:!1,supportsLongCacheRetention:!(i||o||s)}}function L(e){let t=I(e);return e.compat?{supportsStore:e.compat.supportsStore??t.supportsStore,supportsDeveloperRole:e.compat.supportsDeveloperRole??t.supportsDeveloperRole,supportsReasoningEffort:e.compat.supportsReasoningEffort??t.supportsReasoningEffort,supportsUsageInStreaming:e.compat.supportsUsageInStreaming??t.supportsUsageInStreaming,maxTokensField:e.compat.maxTokensField??t.maxTokensField,requiresToolResultName:e.compat.requiresToolResultName??t.requiresToolResultName,requiresAssistantAfterToolResult:e.compat.requiresAssistantAfterToolResult??t.requiresAssistantAfterToolResult,requiresThinkingAsText:e.compat.requiresThinkingAsText??t.requiresThinkingAsText,requiresReasoningContentOnAssistantMessages:e.compat.requiresReasoningContentOnAssistantMessages??t.requiresReasoningContentOnAssistantMessages,thinkingFormat:e.compat.thinkingFormat??t.thinkingFormat,openRouterRouting:e.compat.openRouterRouting??{},vercelGatewayRouting:e.compat.vercelGatewayRouting??t.vercelGatewayRouting,zaiToolStream:e.compat.zaiToolStream??t.zaiToolStream,supportsStrictMode:e.compat.supportsStrictMode??t.supportsStrictMode,cacheControlFormat:e.compat.cacheControlFormat??t.cacheControlFormat,sendSessionAffinityHeaders:e.compat.sendSessionAffinityHeaders??t.sendSessionAffinityHeaders,supportsLongCacheRetention:e.compat.supportsLongCacheRetention??t.supportsLongCacheRetention}:t}export{M as convertMessages,b as streamOpenAICompletions,x as streamSimpleOpenAICompletions};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$ as e,X as t,rt as n,v as r}from"./main-BrawN-is.js";import{t as i}from"./headers-DO1UzNKu.js";import{i as a,n as o,r as s,t as c}from"./github-copilot-headers-DZtWWv8W.js";import{n as l}from"./openai-Cn5LRPCm.js";import{n as u,r as d,t as f}from"./openai-responses-shared-D_srrvf3.js";var p=new Set([`openai`,`openai-codex`,`opencode`]);function m(e){return e||(typeof process<`u`&&{}.PI_CACHE_RETENTION===`long`?`long`:`short`)}function h(e){return{sendSessionIdHeader:e.compat?.sendSessionIdHeader??!0,supportsLongCacheRetention:e.compat?.supportsLongCacheRetention??!0}}function g(e,t){return t===`long`&&e.supportsLongCacheRetention?`24h`:void 0}function _(e){if(e instanceof Error){let t=e.status,n=typeof t==`number`?t:void 0;return n===void 0?e.message:`OpenAI API error (${n}): ${e.message}`}try{return JSON.stringify(e)}catch{return String(e)}}var v=(e,r,a)=>{let o=new t;return(async()=>{let t={role:`assistant`,content:[],api:e.api,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()};try{let s=a?.apiKey||n(e.provider)||``,c=m(a?.cacheRetention)===`none`?void 0:a?.sessionId,l=b(e,r,s,a?.headers,c),u=x(e,r,a),f=await a?.onPayload?.(u,e);f!==void 0&&(u=f);let p={...a?.signal?{signal:a.signal}:{},...a?.timeoutMs===void 0?{}:{timeout:a.timeoutMs},...a?.maxRetries===void 0?{}:{maxRetries:a.maxRetries}},{data:h,response:g}=await l.responses.create(u,p).withResponse();if(await a?.onResponse?.({status:g.status,headers:i(g.headers)},e),o.push({type:`start`,partial:t}),await d(h,t,o,e,{serviceTier:a?.serviceTier,applyServiceTierPricing:(t,n)=>C(t,n,e)}),a?.signal?.aborted)throw Error(`Request was aborted`);if(t.stopReason===`aborted`||t.stopReason===`error`)throw Error(`An unknown error occurred`);o.push({type:`done`,reason:t.stopReason,message:t}),o.end()}catch(e){for(let e of t.content)delete e.index,delete e.partialJson;t.stopReason=a?.signal?.aborted?`aborted`:`error`,t.errorMessage=_(e),o.push({type:`error`,reason:t.stopReason,error:t}),o.end()}})(),o},y=(t,i,a)=>{let o=a?.apiKey||n(t.provider);if(!o)throw Error(`No API key for provider: ${t.provider}`);let s=r(t,a,o),c=a?.reasoning?e(t,a.reasoning):void 0,l=c===`off`?void 0:c;return v(t,i,{...s,reasoningEffort:l})};function b(e,t,n,r,i){if(!n){if(!{}.OPENAI_API_KEY)throw Error(`OpenAI API key is required. Set OPENAI_API_KEY environment variable or pass it as an argument.`);n={}.OPENAI_API_KEY}let u=h(e),d={...e.headers};if(e.provider===`github-copilot`){let e=o(t.messages),n=c({messages:t.messages,hasImages:e});Object.assign(d,n)}i&&(u.sendSessionIdHeader&&(d.session_id=i),d[`x-client-request-id`]=i),r&&Object.assign(d,r);let f=e.provider===`cloudflare-ai-gateway`?{...d,Authorization:d.Authorization??null,"cf-aig-authorization":`Bearer ${n}`}:d;return new l({apiKey:n,baseURL:s(e.provider)?a(e):e.baseUrl,dangerouslyAllowBrowser:!0,defaultHeaders:f})}function x(e,t,n){let r=f(e,t,p),i=m(n?.cacheRetention),a=h(e),o={model:e.id,input:r,stream:!0,prompt_cache_key:i===`none`?void 0:n?.sessionId,prompt_cache_retention:g(a,i),store:!1};return n?.maxTokens&&(o.max_output_tokens=n?.maxTokens),n?.temperature!==void 0&&(o.temperature=n?.temperature),n?.serviceTier!==void 0&&(o.service_tier=n.serviceTier),t.tools&&t.tools.length>0&&(o.tools=u(t.tools)),e.reasoning&&(n?.reasoningEffort||n?.reasoningSummary?(o.reasoning={effort:n?.reasoningEffort?e.thinkingLevelMap?.[n.reasoningEffort]??n.reasoningEffort:`medium`,summary:n?.reasoningSummary||`auto`},o.include=[`reasoning.encrypted_content`]):e.provider!==`github-copilot`&&e.thinkingLevelMap?.off!==null&&(o.reasoning={effort:e.thinkingLevelMap?.off??`none`})),o}function S(e,t){switch(t){case`flex`:return .5;case`priority`:return e.id===`gpt-5.5`?2.5:2;default:return 1}}function C(e,t,n){let r=S(n,t);r!==1&&(e.cost.input*=r,e.cost.output*=r,e.cost.cacheRead*=r,e.cost.cacheWrite*=r,e.cost.total=e.cost.input+e.cost.output+e.cost.cacheRead+e.cost.cacheWrite)}export{v as streamOpenAIResponses,y as streamSimpleOpenAIResponses};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{K as e,O as t,U as n,X as r,a as i,c as a,f as o,o as s,s as c,u as l}from"./kernel-worker-D0ATvajw.js";import{n as u,r as d,t as f}from"./openai-responses-shared-CY_pd3Li.js";const p=new Set([`openai`,`openai-codex`,`opencode`]);function m(e){return e||(typeof process<`u`&&{}.PI_CACHE_RETENTION===`long`?`long`:`short`)}function h(e){return{sendSessionIdHeader:e.compat?.sendSessionIdHeader??!0,supportsLongCacheRetention:e.compat?.supportsLongCacheRetention??!0}}function g(e,t){return t===`long`&&e.supportsLongCacheRetention?`24h`:void 0}function _(e){if(e instanceof Error){let t=e.status,n=typeof t==`number`?t:void 0;return n===void 0?e.message:`OpenAI API error (${n}): ${e.message}`}try{return JSON.stringify(e)}catch{return String(e)}}const v=(e,t,i)=>{let a=new n;return(async()=>{let n={role:`assistant`,content:[],api:e.api,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()};try{let o=i?.apiKey||r(e.provider)||``,s=m(i?.cacheRetention)===`none`?void 0:i?.sessionId,c=b(e,t,o,i?.headers,s),u=x(e,t,i),f=await i?.onPayload?.(u,e);f!==void 0&&(u=f);let p={...i?.signal?{signal:i.signal}:{},...i?.timeoutMs===void 0?{}:{timeout:i.timeoutMs},...i?.maxRetries===void 0?{}:{maxRetries:i.maxRetries}},{data:h,response:g}=await c.responses.create(u,p).withResponse();if(await i?.onResponse?.({status:g.status,headers:l(g.headers)},e),a.push({type:`start`,partial:n}),await d(h,n,a,e,{serviceTier:i?.serviceTier,applyServiceTierPricing:(t,n)=>C(t,n,e)}),i?.signal?.aborted)throw Error(`Request was aborted`);if(n.stopReason===`aborted`||n.stopReason===`error`)throw Error(`An unknown error occurred`);a.push({type:`done`,reason:n.stopReason,message:n}),a.end()}catch(e){for(let e of n.content)delete e.index,delete e.partialJson;n.stopReason=i?.signal?.aborted?`aborted`:`error`,n.errorMessage=_(e),a.push({type:`error`,reason:n.stopReason,error:n}),a.end()}})(),a},y=(n,i,a)=>{let o=a?.apiKey||r(n.provider);if(!o)throw Error(`No API key for provider: ${n.provider}`);let s=t(n,a,o),c=a?.reasoning?e(n,a.reasoning):void 0,l=c===`off`?void 0:c;return v(n,i,{...s,reasoningEffort:l})};function b(e,t,n,r,l){if(!n){if(!{}.OPENAI_API_KEY)throw Error(`OpenAI API key is required. Set OPENAI_API_KEY environment variable or pass it as an argument.`);n={}.OPENAI_API_KEY}let u=h(e),d={...e.headers};if(e.provider===`github-copilot`){let e=s(t.messages),n=i({messages:t.messages,hasImages:e});Object.assign(d,n)}l&&(u.sendSessionIdHeader&&(d.session_id=l),d[`x-client-request-id`]=l),r&&Object.assign(d,r);let f=e.provider===`cloudflare-ai-gateway`?{...d,Authorization:d.Authorization??null,"cf-aig-authorization":`Bearer ${n}`}:d;return new o({apiKey:n,baseURL:c(e.provider)?a(e):e.baseUrl,dangerouslyAllowBrowser:!0,defaultHeaders:f})}function x(e,t,n){let r=f(e,t,p),i=m(n?.cacheRetention),a=h(e),o={model:e.id,input:r,stream:!0,prompt_cache_key:i===`none`?void 0:n?.sessionId,prompt_cache_retention:g(a,i),store:!1};return n?.maxTokens&&(o.max_output_tokens=n?.maxTokens),n?.temperature!==void 0&&(o.temperature=n?.temperature),n?.serviceTier!==void 0&&(o.service_tier=n.serviceTier),t.tools&&t.tools.length>0&&(o.tools=u(t.tools)),e.reasoning&&(n?.reasoningEffort||n?.reasoningSummary?(o.reasoning={effort:n?.reasoningEffort?e.thinkingLevelMap?.[n.reasoningEffort]??n.reasoningEffort:`medium`,summary:n?.reasoningSummary||`auto`},o.include=[`reasoning.encrypted_content`]):e.provider!==`github-copilot`&&e.thinkingLevelMap?.off!==null&&(o.reasoning={effort:e.thinkingLevelMap?.off??`none`})),o}function S(e,t){switch(t){case`flex`:return .5;case`priority`:return e.id===`gpt-5.5`?2.5:2;default:return 1}}function C(e,t,n){let r=S(n,t);r!==1&&(e.cost.input*=r,e.cost.output*=r,e.cost.cacheRead*=r,e.cost.cacheWrite*=r,e.cost.total=e.cost.input+e.cost.output+e.cost.cacheRead+e.cost.cacheWrite)}export{v as streamOpenAIResponses,y as streamSimpleOpenAIResponses};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./store-C2ZknlRA.js";import"./provider-DpdmkSzh.js";export{e as readMcpAuthEntries};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./provider-B8PArOX3.js";export{e as readMcpAuthEntries};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{ct as e,st as t}from"./kernel-worker-D0ATvajw.js";const n=`slicc:last-seen-version`;function r(){return{version:`3.31.3`,releasedAt:`2026-06-04T19:22:45Z`}}async function i(){let e=await t(n);return e&&e.length>0?e:null}async function a(t){await e(n,t)}async function o(){let e=r(),t=await i();return t===null?(await a(e.version),{bundled:e,lastSeen:null,isUpgrade:!1}):t===e.version?{bundled:e,lastSeen:t,isUpgrade:!1}:{bundled:e,lastSeen:t,isUpgrade:!0}}async function s(e){await a(e)}export{o as detectUpgrade,s as recordVersionSeen};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$ as e,dt as t}from"./kernel-worker-D0ATvajw.js";const n=t(`ws-subscribers`);var r=class{subs=new Map;tabRefs=new Map;bridge;webhooks;dispatcher;unsubscribeBridge;seq=1;constructor(e){this.bridge=e.bridge,this.webhooks=e.webhooks,this.dispatcher=e.dispatcher,this.unsubscribeBridge=this.bridge.onMatchedFrame((e,t)=>{this.handleFrame(e,t)})}async observe(e){this.validateSink(e);let t=`wssub-${this.seq++}-${Date.now().toString(36)}`,n={id:t,targetId:e.targetId,urlMatch:e.urlMatch,filter:e.filter,forward:e.forward,scoopJid:e.scoopJid,createdAt:new Date().toISOString()},r=this.tabRefs.get(e.targetId)??0;r===0&&await this.bridge.installRouter(e.targetId),this.tabRefs.set(e.targetId,r+1);try{await this.bridge.registerSelector(e.targetId,t,e.urlMatch,e.filter)}catch(t){throw this.releaseTab(e.targetId),t}return this.subs.set(t,n),this.toInfo(n)}async update(e,t){let n=this.subs.get(e);if(!n)throw Error(`browser.websocket: subscriber not found: ${e}`);let r=t.urlMatch,i=t.filter;return await this.bridge.updateSelector(n.targetId,e,r,i),t.urlMatch===null?delete n.urlMatch:t.urlMatch!==void 0&&(n.urlMatch=t.urlMatch),t.filter===null?delete n.filter:t.filter!==void 0&&(n.filter=t.filter),this.toInfo(n)}async close(e){let t=this.subs.get(e);if(!t)return!1;this.subs.delete(e);try{await this.bridge.unregisterSelector(t.targetId,e)}catch(t){n.warn(`unregisterSelector failed during close`,{id:e,error:t instanceof Error?t.message:String(t)})}return this.releaseTab(t.targetId),!0}list(){return Array.from(this.subs.values(),e=>this.toInfo(e))}async dropForScoop(e){let t=Array.from(this.subs.values()).filter(t=>t.scoopJid===e);for(let e of t)await this.close(e.id);return t.length}dispose(){this.unsubscribeBridge(),this.subs.clear(),this.tabRefs.clear()}validateSink(t){let n=t.forward;if(!n||typeof n!=`object`)throw Error(`browser.websocket: forward.sink is required`);switch(n.sink){case`webhook`:if(typeof n.webhookId!=`string`||!n.webhookId.trim())throw Error(`browser.websocket: webhook sink requires a webhookId`);if(!this.webhooks.has(n.webhookId))throw Error(`browser.websocket: webhookId "${n.webhookId}" is not registered; create it with \`webhook create\` first`);return;case`scoop`:if(typeof n.scoopJid!=`string`||!n.scoopJid.trim())throw Error(`browser.websocket: scoop sink requires a scoopJid`);return;case`vfs`:{if(typeof n.path!=`string`||!n.path.startsWith(`/workspace/`))throw Error(`browser.websocket: vfs sink path must be an absolute /workspace/... path`);let t=e(n.path);if(!t.startsWith(`/workspace/`)&&t!==`/workspace`)throw Error(`browser.websocket: vfs sink path escapes /workspace/ after normalization (got "${n.path}" → "${t}")`);return}case`log`:return;default:throw Error(`browser.websocket: unknown sink "${n.sink??``}"`)}}releaseTab(e){let t=(this.tabRefs.get(e)??1)-1;t<=0?this.tabRefs.delete(e):this.tabRefs.set(e,t)}toInfo(e){let t={id:e.id,targetId:e.targetId,forward:e.forward,createdAt:e.createdAt};return e.urlMatch!==void 0&&(t.urlMatch=e.urlMatch),e.filter!==void 0&&(t.filter=e.filter),e.scoopJid!==void 0&&(t.scoopJid=e.scoopJid),t}async handleFrame(e,t){let r=this.subs.get(e);if(!r)return;let i=r.forward;try{switch(i.sink){case`webhook`:await this.dispatcher.webhook(i.webhookId,t);return;case`scoop`:await this.dispatcher.scoop(i.scoopJid,t);return;case`vfs`:await this.dispatcher.vfs(i.path,t);return;case`log`:this.dispatcher.log(t);return}}catch(t){n.warn(`sink dispatch failed`,{subId:e,sink:i.sink,error:t instanceof Error?t.message:String(t)})}}};export{r as WsSubscriberRegistry};
|