sliccy 3.5.4 → 3.5.5

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.
Files changed (109) hide show
  1. package/dist/ui/assets/adobe-DCsfRQn2.js +2 -0
  2. package/dist/ui/assets/adobe-DSSPywlx.js +1 -0
  3. package/dist/ui/assets/{agent-bridge-D2k69QZ-.js → agent-bridge-DaJ_nmW3.js} +1 -1
  4. package/dist/ui/assets/{agent-message-to-chat-H07zq-Kv.js → agent-message-to-chat-CsyFcZ2w.js} +1 -1
  5. package/dist/ui/assets/anthropic-04L_IqQ4.js +39 -0
  6. package/dist/ui/assets/{anthropic-BK3Od7MT.js → anthropic-DdObQ2i-.js} +3 -3
  7. package/dist/ui/assets/{apps-mZJxOz_q.js → apps-BBc8G_er.js} +1 -1
  8. package/dist/ui/assets/{azure-openai-CN9QA_pv.js → azure-openai-DzGirHIb.js} +1 -1
  9. package/dist/ui/assets/{azure-openai-Dch5aR9j.js → azure-openai-maMzaMwe.js} +1 -1
  10. package/dist/ui/assets/azure-openai-responses-Cd0P_ssa.js +1 -0
  11. package/dist/ui/assets/azure-openai-responses-CjukGNgz.js +1 -0
  12. package/dist/ui/assets/{bsh-watchdog-i5GXbvla.js → bsh-watchdog-C8BJAFc3.js} +1 -1
  13. package/dist/ui/assets/{cdp-Cv6W51Ld.js → cdp-DMk0S7sC.js} +3 -3
  14. package/dist/ui/assets/cost-command-BtJx6Gwp.js +1 -0
  15. package/dist/ui/assets/{dist-EkY3RL7q.js → dist-tLLu0PBg.js} +1 -1
  16. package/dist/ui/assets/{es-Crcyr8Z7.js → es-Bjf1BIVF.js} +1 -1
  17. package/dist/ui/assets/{follower-sprinkle-bridge-BayCf20v.js → follower-sprinkle-bridge-BFLnAii4.js} +1 -1
  18. package/dist/ui/assets/{github-DpDjTcq9.js → github-CcyS4zY-.js} +2 -2
  19. package/dist/ui/assets/{github-DKcpc18I.js → github-q1jHC2aO.js} +1 -1
  20. package/dist/ui/assets/{google-B97zVBac.js → google-Cgd9E3cB.js} +1 -1
  21. package/dist/ui/assets/{google-IZXg3PJn.js → google-okAFtSPB.js} +1 -1
  22. package/dist/ui/assets/{google-shared-DwzANLbz.js → google-shared-Dz7dBXHI.js} +1 -1
  23. package/dist/ui/assets/{google-shared-BaIigNCs.js → google-shared-O-0R1H53.js} +1 -1
  24. package/dist/ui/assets/{google-vertex-ICKJGS1M.js → google-vertex-BSk7Kd0k.js} +1 -1
  25. package/dist/ui/assets/{google-vertex-DDwmtWoJ.js → google-vertex-BkZigHmB.js} +1 -1
  26. package/dist/ui/assets/index-BdDYVKjf.js +1611 -0
  27. package/dist/ui/assets/{intercepted-oauth-CEgKdcyY.js → intercepted-oauth-BbYCzrsi.js} +1 -1
  28. package/dist/ui/assets/{kernel-worker-dg2bRx7X.js → kernel-worker-7oVJDvYj.js} +1016 -980
  29. package/dist/ui/assets/{lick-ws-bridge-DgWfdUlv.js → lick-ws-bridge-Cre3RRwL.js} +1 -1
  30. package/dist/ui/assets/{local-llm-DuUGv7wX.js → local-llm-DAe8mBkI.js} +1 -1
  31. package/dist/ui/assets/{magick-wasm-Bu7zx3Ux.js → magick-wasm-C1izt9i7.js} +1 -1
  32. package/dist/ui/assets/{mistral-czd8-m0c.js → mistral-BgP2Mhzf.js} +1 -1
  33. package/dist/ui/assets/{mistral-BS_Gm2MH.js → mistral-DVuMIs98.js} +1 -1
  34. package/dist/ui/assets/{nuke-command-BSkSFZ4H.js → nuke-command-BbxGOoiP.js} +1 -1
  35. package/dist/ui/assets/{oauth-CJxNn7hC.js → oauth-D12YL9GU.js} +1 -1
  36. package/dist/ui/assets/{oauth-bootstrap-BeZQrd7y.js → oauth-bootstrap-BtJmY6M6.js} +2 -2
  37. package/dist/ui/assets/{oauth-service-BAnfipgD.js → oauth-service-Copu_4SG.js} +1 -1
  38. package/dist/ui/assets/{oauth-service-BX55wTV9.js → oauth-service-DJF7cZo7.js} +1 -1
  39. package/dist/ui/assets/{offscreen-client-DSEhUCxj.js → offscreen-client-Cz7pdJA-.js} +1 -1
  40. package/dist/ui/assets/{onboarding-orchestrator-DjNti83y.js → onboarding-orchestrator-BKXIEudN.js} +1 -1
  41. package/dist/ui/assets/openai-codex-responses-B7pudFjp.js +7 -0
  42. package/dist/ui/assets/openai-codex-responses-BAPqEmsF.js +7 -0
  43. package/dist/ui/assets/openai-completions-iJ14N4Sw.js +5 -0
  44. package/dist/ui/assets/openai-responses-C4kJ_gQ1.js +1 -0
  45. package/dist/ui/assets/openai-responses-CtIsFZKY.js +1 -0
  46. package/dist/ui/assets/{openai-responses-shared-07lPyxEg.js → openai-responses-shared-CqmlDcXz.js} +1 -1
  47. package/dist/ui/assets/{openai-responses-shared-DDootAUL.js → openai-responses-shared-DxBvmwvL.js} +1 -1
  48. package/dist/ui/assets/openrouter-CPoeAmgd.js +1 -0
  49. package/dist/ui/assets/openrouter-CdadiGtx.js +1 -0
  50. package/dist/ui/assets/{panel-rpc-handlers-B4jZTNHO.js → panel-rpc-handlers-DbHRM59x.js} +1 -1
  51. package/dist/ui/assets/{provider-BhabAJGA.js → provider-DXK8JUs0.js} +1 -1
  52. package/dist/ui/assets/{provider-rBD-3FHW.js → provider-DcrxGcMH.js} +2 -2
  53. package/dist/ui/assets/provider-store-access-BjvfvyfX.js +1 -0
  54. package/dist/ui/assets/provider-store-access-auxlQIvP.js +1 -0
  55. package/dist/ui/assets/{proxied-fetch-C6dm2Ugc.js → proxied-fetch-Zr3psZ6-.js} +1 -1
  56. package/dist/ui/assets/{pyodide-BC4PaR54.js → pyodide-DlSYVqmj.js} +2 -2
  57. package/dist/ui/assets/{remote-terminal-view-CXbFLcuS.js → remote-terminal-view-PnTEWD7p.js} +1 -1
  58. package/dist/ui/assets/{secret-env-s_8cP7Wf.js → secret-env-YSczATtn.js} +1 -1
  59. package/dist/ui/assets/{slicc-editor-pZcWEwTm.js → slicc-editor-BwZ-JdjT.js} +1 -1
  60. package/dist/ui/assets/{spawn-qtlw6x6p.js → spawn-CfeAB8A4.js} +1 -1
  61. package/dist/ui/assets/{sql-wasm-DeVtn0z8.js → sql-wasm-BVmSEJv3.js} +1 -1
  62. package/dist/ui/assets/{store-DLeVoNF3.js → store-D-IKH6-w.js} +1 -1
  63. package/dist/ui/assets/{tray-leave-runtime-DqA9PbxV.js → tray-leave-runtime-D9Wr8bCF.js} +1 -1
  64. package/dist/ui/assets/{upgrade-detection-CKrzeeRx.js → upgrade-detection-CpKdzfSv.js} +1 -1
  65. package/dist/ui/assets/{xai-grok-CN1nP4TF.js → xai-grok-CGPoHWCQ.js} +1 -1
  66. package/dist/ui/assets/{xai-grok-CNyu04Tg.js → xai-grok-DwtbUE6F.js} +1 -1
  67. package/dist/ui/assets/{xai-grok-sanitize-BeI8rdV5.js → xai-grok-sanitize-DtMFuPGU.js} +1 -1
  68. package/dist/ui/assets/{xai-grok-sanitize-h_8XMTD9.js → xai-grok-sanitize-L5nUbDcW.js} +1 -1
  69. package/dist/ui/index.html +1 -1
  70. package/dist/ui/packages/webapp/index.html +1 -1
  71. package/package.json +3 -3
  72. package/dist/ui/assets/adobe-DpCIcyEb.js +0 -2
  73. package/dist/ui/assets/adobe-NMBK1vG2.js +0 -1
  74. package/dist/ui/assets/anthropic-ZtfIcLyL.js +0 -39
  75. package/dist/ui/assets/azure-openai-responses-Bhr0mNdj.js +0 -1
  76. package/dist/ui/assets/azure-openai-responses-D400BxTc.js +0 -1
  77. package/dist/ui/assets/cost-command-BGqK_hbH.js +0 -1
  78. package/dist/ui/assets/index-CCGqFzR9.js +0 -1575
  79. package/dist/ui/assets/openai-codex-responses-DJKJH9AX.js +0 -7
  80. package/dist/ui/assets/openai-codex-responses-jB5RkWeq.js +0 -7
  81. package/dist/ui/assets/openai-completions-BWWM3S2J.js +0 -5
  82. package/dist/ui/assets/openai-responses-C_3YpAmj.js +0 -1
  83. package/dist/ui/assets/openai-responses-tJegTQYT.js +0 -1
  84. package/dist/ui/assets/provider-store-access-H9Lu5HRL.js +0 -1
  85. package/dist/ui/assets/provider-store-access-biaB--zG.js +0 -1
  86. /package/dist/ui/assets/{active-transport-CfU1UxY6.js → active-transport-Clj9slj7.js} +0 -0
  87. /package/dist/ui/assets/{active-transport-Dm6CWYVE.js → active-transport-Cu6hvJXz.js} +0 -0
  88. /package/dist/ui/assets/{addon-fit-BDUxDgg1.js → addon-fit-CBG3Hsec.js} +0 -0
  89. /package/dist/ui/assets/{addon-fit-Dkm5m5XK.js → addon-fit-D2MIn2bh.js} +0 -0
  90. /package/dist/ui/assets/{azure-ai-foundry-1pnZpxAJ.js → azure-ai-foundry-CGkSI_4f.js} +0 -0
  91. /package/dist/ui/assets/{azure-ai-foundry-BHLfY_0t.js → azure-ai-foundry-DVqxYCDH.js} +0 -0
  92. /package/dist/ui/assets/{chat-fixture-DOzffHLr.js → chat-fixture-C0wxG6yH.js} +0 -0
  93. /package/dist/ui/assets/{dist-BYoCEWmq.js → dist-4mA3RMrN.js} +0 -0
  94. /package/dist/ui/assets/{dist-BrjVVq8c.js → dist-9RlRmGag.js} +0 -0
  95. /package/dist/ui/assets/{git-config-CGMfR0WK.js → git-config-47_ySgKl.js} +0 -0
  96. /package/dist/ui/assets/{global-db-B97_fwjD.js → global-db-CMspJ2t8.js} +0 -0
  97. /package/dist/ui/assets/{lick-manager-proxy-BnnMFbgv.js → lick-manager-proxy-1L0EGIWD.js} +0 -0
  98. /package/dist/ui/assets/{page-storage-sync-CqMAh8jG.js → page-storage-sync-3GLxly8J.js} +0 -0
  99. /package/dist/ui/assets/{pdfjs-DDDkZHZ4.js → pdfjs-CW51NNE6.js} +0 -0
  100. /package/dist/ui/assets/{rum-DCU8sePD.js → rum-CY2gBT8x.js} +0 -0
  101. /package/dist/ui/assets/{sprinkle-bridge-channel-DojIojh7.js → sprinkle-bridge-channel-Bw5UaanD.js} +0 -0
  102. /package/dist/ui/assets/{sprinkle-bridge-channel-DJC5SGWr.js → sprinkle-bridge-channel-DAHSl7rf.js} +0 -0
  103. /package/dist/ui/assets/{sprinkle-proxy-rF3NSOGq.js → sprinkle-proxy-D6wqmewK.js} +0 -0
  104. /package/dist/ui/assets/{xai-grok-errors-WbFsMZum.js → xai-grok-errors-C6VnD_MH.js} +0 -0
  105. /package/dist/ui/assets/{xai-grok-errors-Bzn3oNvW.js → xai-grok-errors-DQQRqci0.js} +0 -0
  106. /package/dist/ui/assets/{xai-grok-models-cvcIXmNM.js → xai-grok-models-BndZgIFZ.js} +0 -0
  107. /package/dist/ui/assets/{xai-grok-models-DMYWtapT.js → xai-grok-models-D7n8nh39.js} +0 -0
  108. /package/dist/ui/assets/{xterm-DhusGoAm.js → xterm-4j9yS4Tj.js} +0 -0
  109. /package/dist/ui/assets/{xterm-D8ldLLKi.js → xterm-DLCsxsB1.js} +0 -0
@@ -0,0 +1,7 @@
1
+ import{A as e,G as t,H as n,M as r,Y as i,j as a,k as o,y as s,z as c}from"./index-BdDYVKjf.js";import{t as l}from"./headers-AeYLn7L4.js";import{n as u,r as d,t as f}from"./openai-responses-shared-DxBvmwvL.js";var p=null,m=e=>i(()=>import(e),[]);typeof process<`u`&&(process.versions?.node||process.versions?.bun)&&m(`node:os`).then(e=>{p=e});var h=`https://chatgpt.com/backend-api`,g=`https://api.openai.com/auth`,_=3,v=1e3,y=new Set([`openai`,`openai-codex`,`opencode`]),b=1009,x=new Set([`completed`,`incomplete`,`failed`,`cancelled`,`queued`,`in_progress`]);function ee(e,t){return e===429||e===500||e===502||e===503||e===504?!0:/rate.?limit|overloaded|service.?unavailable|upstream.?connect|connection.?refused/i.test(t)}function S(e,t){return new Promise((n,r)=>{if(t?.aborted){r(Error(`Request was aborted`));return}let i=setTimeout(n,e);t?.addEventListener(`abort`,()=>{clearTimeout(i),r(Error(`Request was aborted`))})})}var C=(n,r,i)=>{let a=new c;return(async()=>{let s={role:`assistant`,content:[],api:`openai-codex-responses`,provider:n.provider,model:n.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||t(n.provider)||``;if(!c)throw Error(`No API key for provider: ${n.provider}`);let u=ye(c),d=w(n,r,i),f=await i?.onPayload?.(d,n);f!==void 0&&(d=f);let p=i?.sessionId||be(),m=xe(n.headers,i?.headers,u,c,i?.sessionId),h=Se(n.headers,i?.headers,u,c,p),g=JSON.stringify(d),y=i?.transport||`auto`,b=y!==`sse`&&z(i?.sessionId);if(b&&B(i?.sessionId),y!==`sse`&&!b){let t=!1;try{if(await _e(re(n.baseUrl),d,h,s,a,n,()=>{t=!0},i),i?.signal?.aborted)throw Error(`Request was aborted`);a.push({type:`done`,reason:s.stopReason,message:s}),a.end();return}catch(n){if(i?.signal?.aborted||A(n)||(o(s,e(`provider_transport_failure`,n,{configuredTransport:y,fallbackTransport:t?void 0:`sse`,eventsEmitted:t,phase:t?`after_message_stream_start`:`before_message_stream_start`,requestBytes:new TextEncoder().encode(g).byteLength})),V(i?.sessionId,n),t))throw n;B(i?.sessionId)}}let x,C;for(let e=0;e<=_;e++){if(i?.signal?.aborted)throw Error(`Request was aborted`);try{if(x=await fetch(D(n.baseUrl),{method:`POST`,headers:m,body:g,signal:i?.signal}),await i?.onResponse?.({status:x.status,headers:l(x.headers)},n),x.ok)break;let t=await x.text();if(e<_&&ee(x.status,t)){let t=v*2**e,n=x.headers.get(`retry-after-ms`);if(n!==null){let e=Number(n);Number.isFinite(e)&&(t=Math.max(0,e))}else{let e=x.headers.get(`retry-after`);if(e){let n=Number(e);if(Number.isFinite(n))t=Math.max(0,n*1e3);else{let n=Date.parse(e);Number.isNaN(n)||(t=Math.max(0,n-Date.now()))}}}await S(t,i?.signal);continue}let r=await ve(new Response(t,{status:x.status,statusText:x.statusText}));throw Error(r.friendlyMessage||r.message)}catch(t){if(t instanceof Error&&(t.name===`AbortError`||t.message===`Request was aborted`))throw Error(`Request was aborted`);if(C=t instanceof Error?t:Error(String(t)),e<_&&!C.message.includes(`usage limit`)){await S(v*2**e,i?.signal);continue}throw C}}if(!x?.ok)throw C??Error(`Failed after retries`);if(!x.body)throw Error(`No response body`);if(a.push({type:`start`,partial:s}),await ie(x,s,a,n,i),i?.signal?.aborted)throw Error(`Request was aborted`);a.push({type:`done`,reason:s.stopReason,message:s}),a.end()}catch(e){for(let e of s.content)delete e.partialJson;s.stopReason=i?.signal?.aborted?`aborted`:`error`,s.errorMessage=e instanceof Error?e.message:String(e),a.push({type:`error`,reason:s.stopReason,error:s}),a.end()}})(),a},te=(e,r,i)=>{let a=i?.apiKey||t(e.provider);if(!a)throw Error(`No API key for provider: ${e.provider}`);let o=s(e,i,a),c=i?.reasoning?n(e,i.reasoning):void 0,l=c===`off`?void 0:c;return C(e,r,{...o,reasoningEffort:l})};function w(e,t,n){let r=f(e,t,y,{includeSystemPrompt:!1}),i={model:e.id,store:!1,stream:!0,instructions:t.systemPrompt||`You are a helpful assistant.`,input:r,text:{verbosity:n?.textVerbosity||`low`},include:[`reasoning.encrypted_content`],prompt_cache_key:n?.sessionId,tool_choice:`auto`,parallel_tool_calls:!0};if(n?.temperature!==void 0&&(i.temperature=n.temperature),n?.serviceTier!==void 0&&(i.service_tier=n.serviceTier),t.tools&&t.tools.length>0&&(i.tools=u(t.tools,{strict:null})),n?.reasoningEffort!==void 0){let t=n.reasoningEffort===`none`?e.thinkingLevelMap?.off??`none`:e.thinkingLevelMap?.[n.reasoningEffort]??n.reasoningEffort;t!==null&&(i.reasoning={effort:t,summary:n.reasoningSummary??`auto`})}return i}function ne(e,t){switch(t){case`flex`:return .5;case`priority`:return e.id===`gpt-5.5`?2.5:2;default:return 1}}function T(e,t,n){let r=ne(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)}function E(e,t){return e===`default`&&(t===`flex`||t===`priority`)?t:e??t}function D(e){let t=(e&&e.trim().length>0?e:h).replace(/\/+$/,``);return t.endsWith(`/codex/responses`)?t:t.endsWith(`/codex`)?`${t}/responses`:`${t}/codex/responses`}function re(e){let t=new URL(D(e));return t.protocol===`https:`&&(t.protocol=`wss:`),t.protocol===`http:`&&(t.protocol=`ws:`),t.toString()}async function ie(e,t,n,r,i){await d(j(oe(e)),t,n,r,{serviceTier:i?.serviceTier,resolveServiceTier:E,applyServiceTierPricing:(e,t)=>T(e,t,r)})}var O=class extends Error{code;payload;constructor(e,t){super(e),this.name=`CodexApiError`,this.code=t?.code,this.payload=t?.payload,this.cause=t?.cause}},k=class extends Error{payload;constructor(e,t){super(e),this.name=`CodexProtocolError`,this.payload=t?.payload,this.cause=t?.cause}};function A(e){return e instanceof O||e instanceof k}async function*j(e){for await(let t of e){let e=typeof t.type==`string`?t.type:void 0;if(e){if(e===`error`){let e=t.code||``;throw new O(`Codex error: ${t.message||e||JSON.stringify(t)}`,{code:e||void 0,payload:t})}if(e===`response.failed`){let e=t.response,n=e?.error?.code,r=e?.error?.message;throw new O(r||`Codex response failed`,{code:n,payload:t})}if(e===`response.done`||e===`response.completed`||e===`response.incomplete`){let e=t.response,n=e&&{...e,status:ae(e.status)};yield{...t,type:`response.completed`,response:n};return}yield t}}}function ae(e){if(typeof e==`string`)return x.has(e)?e:void 0}async function*oe(e){if(!e.body)return;let t=e.body.getReader(),n=new TextDecoder,r=``;try{for(;;){let{done:e,value:i}=await t.read();if(e)break;r+=n.decode(i,{stream:!0});let o=r.indexOf(`
2
+
3
+ `);for(;o!==-1;){let e=r.slice(0,o);r=r.slice(o+2);let t=e.split(`
4
+ `).filter(e=>e.startsWith(`data:`)).map(e=>e.slice(5).trim());if(t.length>0){let e=t.join(`
5
+ `).trim();if(e&&e!==`[DONE]`)try{yield JSON.parse(e)}catch(t){throw new k(`Invalid Codex SSE JSON: ${a(t)}`,{cause:t,payload:e})}}o=r.indexOf(`
6
+
7
+ `)}}}finally{try{await t.cancel()}catch{}try{t.releaseLock()}catch{}}}var M=`responses_websockets=2026-02-06`,N=300*1e3,P=new Map,F=new Map,I=new Set;function L(e){let t=F.get(e);return t||(t={requests:0,connectionsCreated:0,connectionsReused:0,cachedContextRequests:0,storeTrueRequests:0,fullContextRequests:0,deltaRequests:0,lastInputItems:0,websocketFailures:0,sseFallbacks:0},F.set(e,t)),t}function se(e){let t=F.get(e);return t?{...t}:void 0}function ce(e){if(e){F.delete(e),I.delete(e);return}F.clear(),I.clear()}function R(e){let t=e=>{e.idleTimer&&clearTimeout(e.idleTimer),q(e.socket,1e3,`debug_close`)};if(e){let n=P.get(e);n&&t(n),P.delete(e);return}for(let e of P.values())t(e);P.clear()}r(R);function z(e){return e?I.has(e):!1}function B(e){if(!e)return;let t=L(e);t.sseFallbacks++,t.websocketFallbackActive=z(e)}function V(e,t){if(!e)return;I.add(e);let n=L(e);n.websocketFailures++,n.lastWebSocketError=a(t),n.websocketFallbackActive=!0}var H=null;async function U(){if(H)return H;if(process?.versions?.bun&&({}.HTTP_PROXY||{}.HTTPS_PROXY||{}.http_proxy||{}.https_proxy)){let e=(await m(`proxy-from-env`)).getProxyForUrl;return H=class extends WebSocket{constructor(t,n){let r={};r=Array.isArray(n)||typeof n==`string`?{protocols:n}:{...n};let i=e(t.toString().replace(/^wss:/,`https:`).replace(/^ws:/,`http:`));super(t,{...r,...i?{proxy:i}:{}})}},H}let e=globalThis.WebSocket;return typeof e==`function`?e:null}var W=class extends Error{code;reason;wasClean;constructor(e,t){super(e),this.name=`WebSocketCloseError`,this.code=t?.code,this.reason=t?.reason,this.wasClean=t?.wasClean}};function G(e){let t=e.readyState;return typeof t==`number`?t:void 0}function K(e){let t=G(e);return t===void 0||t===1}function q(e,t=1e3,n=`done`){try{e.close(t,n)}catch{}}function J(e,t){t.idleTimer&&clearTimeout(t.idleTimer),t.idleTimer=setTimeout(()=>{t.busy||(q(t.socket,1e3,`idle_timeout`),P.delete(e))},N)}async function Y(e,t,n){let r=await U();if(!r)throw Error(`WebSocket transport is not available in this runtime`);let i=l(t);return delete i[`OpenAI-Beta`],new Promise((t,a)=>{let o=!1,s;try{s=new r(e,{headers:i})}catch(e){a(e instanceof Error?e:Error(String(e)));return}let c=()=>{o||(o=!0,f(),t(s))},l=e=>{let t=X(e);o||(o=!0,f(),a(t))},u=e=>{let t=Z(e);o||(o=!0,f(),a(t))},d=()=>{o||(o=!0,f(),s.close(1e3,`aborted`),a(Error(`Request was aborted`)))},f=()=>{s.removeEventListener(`open`,c),s.removeEventListener(`error`,l),s.removeEventListener(`close`,u),n?.removeEventListener(`abort`,d)};s.addEventListener(`open`,c),s.addEventListener(`error`,l),s.addEventListener(`close`,u),n?.addEventListener(`abort`,d)})}async function le(e,t,n,r){if(!n){let n=await Y(e,t,r);return{socket:n,reused:!1,release:({keep:e}={})=>{if(e===!1){q(n);return}q(n)}}}let i=P.get(n);if(i){if(i.idleTimer&&=(clearTimeout(i.idleTimer),void 0),!i.busy&&K(i.socket))return i.busy=!0,{socket:i.socket,entry:i,reused:!0,release:({keep:e}={})=>{if(!e||!K(i.socket)){q(i.socket),P.delete(n);return}i.busy=!1,J(n,i)}};if(i.busy){let n=await Y(e,t,r);return{socket:n,reused:!1,release:()=>{q(n)}}}K(i.socket)||(q(i.socket),P.delete(n))}let a=await Y(e,t,r),o={socket:a,busy:!0};return P.set(n,o),{socket:a,entry:o,reused:!1,release:({keep:e}={})=>{if(!e||!K(o.socket)){q(o.socket),o.idleTimer&&clearTimeout(o.idleTimer),P.get(n)===o&&P.delete(n);return}o.busy=!1,J(n,o)}}}function X(e){if(e&&typeof e==`object`){let t=`message`in e?e.message:void 0;if(typeof t==`string`&&t.length>0)return Error(t);let n=`error`in e?e.error:void 0;if(n instanceof Error&&n.message.length>0)return n;if(n&&typeof n==`object`&&`message`in n){let e=n.message;if(typeof e==`string`&&e.length>0)return Error(e)}}return Error(`WebSocket error`)}function Z(e){if(e&&typeof e==`object`){let t=`code`in e?e.code:void 0,n=`reason`in e?e.reason:void 0,r=`wasClean`in e?e.wasClean:void 0,i=typeof t==`number`?` ${t}`:``,a=typeof n==`string`&&n.length>0?` ${n}`:``;return!a&&t===b&&(a=` message too big`),new W(`WebSocket closed${i}${a}`.trim(),{code:typeof t==`number`?t:void 0,reason:typeof n==`string`&&n.length>0?n:void 0,wasClean:typeof r==`boolean`?r:void 0})}return Error(`WebSocket closed`)}async function ue(e){if(typeof e==`string`)return e;if(e instanceof ArrayBuffer)return new TextDecoder().decode(new Uint8Array(e));if(ArrayBuffer.isView(e)){let t=e;return new TextDecoder().decode(new Uint8Array(t.buffer,t.byteOffset,t.byteLength))}if(e&&typeof e==`object`&&`arrayBuffer`in e){let t=await e.arrayBuffer();return new TextDecoder().decode(new Uint8Array(t))}return null}async function*de(e,t){let n=[],r=null,i=!1,o=null,s=!1,c=()=>{if(!r)return;let e=r;r=null,e()},l=e=>{(async()=>{let t=null;try{if(!e||typeof e!=`object`||!(`data`in e)||(t=await ue(e.data),!t))return;let r=JSON.parse(t),a=typeof r.type==`string`?r.type:``;(a===`response.completed`||a===`response.done`||a===`response.incomplete`)&&(s=!0,i=!0),n.push(r),c()}catch(e){o=new k(`Invalid Codex WebSocket JSON: ${a(e)}`,{cause:e,payload:t}),i=!0,c()}})()},u=e=>{o=X(e),i=!0,c()},d=e=>{if(s){i=!0,c();return}o||=Z(e),i=!0,c()},f=()=>{o=Error(`Request was aborted`),i=!0,c()};e.addEventListener(`message`,l),e.addEventListener(`error`,u),e.addEventListener(`close`,d),t?.addEventListener(`abort`,f);try{for(;;){if(t?.aborted)throw Error(`Request was aborted`);if(n.length>0){yield n.shift();continue}if(i)break;await new Promise(e=>{r=e})}if(o)throw o;if(!s)throw Error(`WebSocket stream closed before response.completed`)}finally{e.removeEventListener(`message`,l),e.removeEventListener(`error`,u),e.removeEventListener(`close`,d),t?.removeEventListener(`abort`,f)}}function Q(e){let{input:t,previous_response_id:n,...r}=e;return r}function fe(e,t){return JSON.stringify(e??[])===JSON.stringify(t??[])}function pe(e,t){return JSON.stringify(Q(e))===JSON.stringify(Q(t))}function me(e,t){if(!pe(e,t.lastRequestBody))return;let n=e.input??[],r=[...t.lastRequestBody.input??[],...t.lastResponseItems];if(!(n.length<r.length)&&fe(n.slice(0,r.length),r))return n.slice(r.length)}function he(e,t){let n=e.continuation;if(!n)return t;let r=me(t,n);return!r||!n.lastResponseId?(e.continuation=void 0,t):{...t,previous_response_id:n.lastResponseId,input:r}}async function*ge(e,t,n,r){let i=!1;for await(let a of e)i||(i=!0,r(),n.push({type:`start`,partial:t})),yield a}async function _e(e,t,n,r,i,a,o,s){let{socket:c,entry:l,reused:u,release:p}=await le(e,n,s?.sessionId,s?.signal),m=!0,h=s?.transport===`websocket-cached`||s?.transport===`auto`,g=t,_=h&&l?he(l,g):g,v=s?.sessionId?L(s.sessionId):void 0;v&&(v.requests++,u?v.connectionsReused++:v.connectionsCreated++,h&&v.cachedContextRequests++,_.store===!0&&v.storeTrueRequests++,v.lastInputItems=_.input?.length??0,_.previous_response_id?(v.deltaRequests++,v.lastDeltaInputItems=_.input?.length??0,v.lastPreviousResponseId=_.previous_response_id):(v.fullContextRequests++,v.lastDeltaInputItems=void 0,v.lastPreviousResponseId=void 0));try{if(c.send(JSON.stringify({type:`response.create`,..._})),await d(ge(j(de(c,s?.signal)),r,i,o),r,i,a,{serviceTier:s?.serviceTier,resolveServiceTier:E,applyServiceTierPricing:(e,t)=>T(e,t,a)}),s?.signal?.aborted)m=!1;else if(h&&l&&r.responseId){let e=f(a,{messages:[r]},y,{includeSystemPrompt:!1}).filter(e=>e.type!==`function_call_output`);l.continuation={lastRequestBody:g,lastResponseId:r.responseId,lastResponseItems:e}}}catch(e){throw l&&(l.continuation=void 0),m=!1,e}finally{p({keep:m})}}async function ve(e){let t=await e.text(),n=t||e.statusText||`Request failed`,r;try{let i=JSON.parse(t)?.error;if(i){let t=i.code||i.type||``;if(/usage_limit_reached|usage_not_included|rate_limit_exceeded/i.test(t)||e.status===429){let e=i.plan_type?` (${i.plan_type.toLowerCase()} plan)`:``,t=i.resets_at?Math.max(0,Math.round((i.resets_at*1e3-Date.now())/6e4)):void 0;r=`You have hit your ChatGPT usage limit${e}.${t===void 0?``:` Try again in ~${t} min.`}`.trim()}n=i.message||r||n}}catch{}return{message:n,friendlyMessage:r}}function ye(e){try{let t=e.split(`.`);if(t.length!==3)throw Error(`Invalid token`);let n=JSON.parse(atob(t[1]))?.[g]?.chatgpt_account_id;if(!n)throw Error(`No account ID in token`);return n}catch{throw Error(`Failed to extract accountId from token`)}}function be(){return typeof globalThis.crypto?.randomUUID==`function`?globalThis.crypto.randomUUID():`codex_${Date.now()}_${Math.random().toString(36).slice(2,10)}`}function $(e,t,n,r){let i=new Headers(e);for(let[e,n]of Object.entries(t||{}))i.set(e,n);i.set(`Authorization`,`Bearer ${r}`),i.set(`chatgpt-account-id`,n),i.set(`originator`,`pi`);let a=p?`pi (${p.platform()} ${p.release()}; ${p.arch()})`:`pi (browser)`;return i.set(`User-Agent`,a),i}function xe(e,t,n,r,i){let a=$(e,t,n,r);return a.set(`OpenAI-Beta`,`responses=experimental`),a.set(`accept`,`text/event-stream`),a.set(`content-type`,`application/json`),i&&(a.set(`session_id`,i),a.set(`x-client-request-id`,i)),a}function Se(e,t,n,r,i){let a=$(e,t,n,r);return a.delete(`accept`),a.delete(`content-type`),a.delete(`OpenAI-Beta`),a.delete(`openai-beta`),a.set(`OpenAI-Beta`,M),a.set(`x-client-request-id`,i),a.set(`session_id`,i),a}export{R as closeOpenAICodexWebSocketSessions,se as getOpenAICodexWebSocketDebugStats,ce as resetOpenAICodexWebSocketDebugStats,C as streamOpenAICodexResponses,te as streamSimpleOpenAICodexResponses};
@@ -0,0 +1,5 @@
1
+ import{G as e,H as t,O as n,V as r,b as i,y as a,z as o}from"./index-BdDYVKjf.js";import{t as s}from"./headers-AeYLn7L4.js";import{t as c}from"./sanitize-unicode-h0KEBmEw.js";import{i as l,n as u,r as d,t as f}from"./github-copilot-headers-CTUP_cqn.js";import{n as p}from"./openai-Bf1npfRy.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=(t,r,i)=>{let a=new o;return(async()=>{let o={role:`assistant`,content:[],api:t.api,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=i?.apiKey||e(t.provider)||``,l=L(t),u=y(i?.cacheRetention),d=u===`none`?void 0:i?.sessionId,f=S(t,r,c,i?.headers,d,l),p=C(t,r,i,l,u),m=await i?.onPayload?.(p,t);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)},t),a.push({type:`start`,partial:o});let v=null,b=null,x=!1,w=new Map,T=new Map,E=o.content,D=e=>E.indexOf(e),O=e=>{let t=D(e);t!==-1&&(e.type===`text`?a.push({type:`text_end`,contentIndex:t,content:e.text,partial:o}):e.type===`thinking`?a.push({type:`thinking_end`,contentIndex:t,content:e.thinking,partial:o}):e.type===`toolCall`&&(e.arguments=n(e.partialArgs),delete e.partialArgs,delete e.streamIndex,a.push({type:`toolcall_end`,contentIndex:t,toolCall:e,partial:o})))},k=()=>(v||(v={type:`text`,text:``},E.push(v),a.push({type:`text_start`,contentIndex:D(v),partial:o})),v),A=e=>(b||(b={type:`thinking`,thinking:``,thinkingSignature:e},E.push(b),a.push({type:`thinking_start`,contentIndex:D(b),partial:o})),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),a.push({type:`toolcall_start`,contentIndex:D(n),partial:o})),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 e of g){if(!e||typeof e!=`object`)continue;o.responseId||=e.id,typeof e.model==`string`&&e.model.length>0&&e.model!==t.id&&(o.responseModel||=e.model),e.usage&&(o.usage=P(e.usage,t));let r=Array.isArray(e.choices)?e.choices[0]:void 0;if(r){if(!e.usage&&r.usage&&(o.usage=P(r.usage,t)),r.finish_reason){let e=F(r.finish_reason);o.stopReason=e.stopReason,e.errorMessage&&(o.errorMessage=e.errorMessage),x=!0}if(r.delta){if(r.delta.content!==null&&r.delta.content!==void 0&&r.delta.content.length>0){let e=k();e.text+=r.delta.content,a.push({type:`text_delta`,contentIndex:D(e),delta:r.delta.content,partial:o})}let e=[`reasoning_content`,`reasoning`,`reasoning_text`],i=r.delta,s=null;for(let t of e){let e=i[t];if(typeof e==`string`&&e.length>0){s=t;break}}if(s){let e=i[s];if(typeof e==`string`&&e.length>0){let n=A(t.provider===`opencode-go`&&s===`reasoning`?`reasoning_content`:s);n.thinking+=e,a.push({type:`thinking_delta`,contentIndex:D(n),delta:e,partial:o})}}if(r?.delta?.tool_calls)for(let e of r.delta.tool_calls){let t=j(e);!t.id&&e.id&&(t.id=e.id,T.set(e.id,t)),!t.name&&e.function?.name&&(t.name=e.function.name);let r=``;e.function?.arguments&&(r=e.function.arguments,t.partialArgs=(t.partialArgs??``)+e.function.arguments,t.arguments=n(t.partialArgs)),a.push({type:`toolcall_delta`,contentIndex:D(t),delta:r,partial:o})}let c=r.delta.reasoning_details;if(c&&Array.isArray(c)){for(let e of c)if(e.type===`reasoning.encrypted`&&e.id&&e.data){let t=o.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||o.stopReason===`aborted`)throw Error(`Request was aborted`);if(o.stopReason===`error`)throw Error(o.errorMessage||`Provider returned an error stop reason`);if(!x)throw Error(`Stream ended without finish_reason`);a.push({type:`done`,reason:o.stopReason,message:o}),a.end()}catch(e){for(let e of o.content)delete e.index,delete e.partialArgs,delete e.streamIndex;o.stopReason=i?.signal?.aborted?`aborted`:`error`,o.errorMessage=e instanceof Error?e.message:JSON.stringify(e);let t=e?.error?.metadata?.raw;t&&(o.errorMessage+=`\n${t}`),a.push({type:`error`,reason:o.stopReason,error:o}),a.end()}})(),a},x=(n,r,i)=>{let o=i?.apiKey||e(n.provider);if(!o)throw Error(`No API key for provider: ${n.provider}`);let s=a(n,i,o),c=i?.reasoning?t(n,i.reasoning):void 0,l=c===`off`?void 0:c,u=i?.toolChoice;return b(n,r,{...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 n=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,n-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 r(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};
@@ -0,0 +1 @@
1
+ import{G as e,H as t,y as n,z as r}from"./index-BdDYVKjf.js";import{t as i}from"./headers-AeYLn7L4.js";import{i as a,n as o,r as s,t as c}from"./github-copilot-headers-CTUP_cqn.js";import{n as l}from"./openai-Bf1npfRy.js";import{n as u,r as d,t as f}from"./openai-responses-shared-DxBvmwvL.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=(t,n,a)=>{let o=new r;return(async()=>{let r={role:`assistant`,content:[],api:t.api,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 s=a?.apiKey||e(t.provider)||``,c=m(a?.cacheRetention)===`none`?void 0:a?.sessionId,l=b(t,n,s,a?.headers,c),u=x(t,n,a),f=await a?.onPayload?.(u,t);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)},t),o.push({type:`start`,partial:r}),await d(h,r,o,t,{serviceTier:a?.serviceTier,applyServiceTierPricing:(e,n)=>C(e,n,t)}),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)delete e.index,delete e.partialJson;r.stopReason=a?.signal?.aborted?`aborted`:`error`,r.errorMessage=_(e),o.push({type:`error`,reason:r.stopReason,error:r}),o.end()}})(),o},y=(r,i,a)=>{let o=a?.apiKey||e(r.provider);if(!o)throw Error(`No API key for provider: ${r.provider}`);let s=n(r,a,o),c=a?.reasoning?t(r,a.reasoning):void 0,l=c===`off`?void 0:c;return v(r,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};
@@ -0,0 +1 @@
1
+ import{B as e,L as t,U as n,a as r,b as i,i as a,l as o,n as s,r as c,s as l}from"./kernel-worker-7oVJDvYj.js";import{n as u,r as d,t as f}from"./openai-responses-shared-CqmlDcXz.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,r,i)=>{let a=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 o=i?.apiKey||n(e.provider)||``,s=m(i?.cacheRetention)===`none`?void 0:i?.sessionId,c=b(e,r,o,i?.headers,s),u=x(e,r,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:t}),await d(h,t,a,e,{serviceTier:i?.serviceTier,applyServiceTierPricing:(t,n)=>C(t,n,e)}),i?.signal?.aborted)throw Error(`Request was aborted`);if(t.stopReason===`aborted`||t.stopReason===`error`)throw Error(`An unknown error occurred`);a.push({type:`done`,reason:t.stopReason,message:t}),a.end()}catch(e){for(let e of t.content)delete e.index,delete e.partialJson;t.stopReason=i?.signal?.aborted?`aborted`:`error`,t.errorMessage=_(e),a.push({type:`error`,reason:t.stopReason,error:t}),a.end()}})(),a},y=(t,r,a)=>{let o=a?.apiKey||n(t.provider);if(!o)throw Error(`No API key for provider: ${t.provider}`);let s=i(t,a,o),c=a?.reasoning?e(t,a.reasoning):void 0,l=c===`off`?void 0:c;return v(t,r,{...s,reasoningEffort:l})};function b(e,t,n,i,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=c(t.messages),n=s({messages:t.messages,hasImages:e});Object.assign(d,n)}l&&(u.sendSessionIdHeader&&(d.session_id=l),d[`x-client-request-id`]=l),i&&Object.assign(d,i);let f=e.provider===`cloudflare-ai-gateway`?{...d,Authorization:d.Authorization??null,"cf-aig-authorization":`Bearer ${n}`}:d;return new o({apiKey:n,baseURL:a(e.provider)?r(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,4 +1,4 @@
1
- import{E as e,o as t,x as n,z as r}from"./kernel-worker-dg2bRx7X.js";import{t as i}from"./hash-C3GX0Zuo.js";function a(e,t){let n={v:1,id:e};return t&&(n.phase=t),JSON.stringify(n)}function o(e){if(e){if(e.startsWith(`{`))try{let t=JSON.parse(e);if(t.v===1&&typeof t.id==`string`)return t.phase===`commentary`||t.phase===`final_answer`?{id:t.id,phase:t.phase}:{id:t.id}}catch{}return{id:e}}}function s(e,r,a,s){let c=[],l=e=>{let t=e.replace(/[^a-zA-Z0-9_-]/g,`_`);return(t.length>64?t.slice(0,64):t).replace(/_+$/,``)},u=e=>{let t=`fc_${i(e)}`;return t.length>64?t.slice(0,64):t},d=n(r.messages,e,(t,n,r)=>{if(!a.has(e.provider)||!t.includes(`|`))return l(t);let[i,o]=t.split(`|`),s=l(i),c=r.provider!==e.provider||r.api!==e.api?u(o):l(o);return c.startsWith(`fc_`)||(c=l(`fc_${c}`)),`${s}|${c}`});if((s?.includeSystemPrompt??!0)&&r.systemPrompt){let n=e.reasoning?`developer`:`system`;c.push({role:n,content:t(r.systemPrompt)})}let f=0;for(let n of d){if(n.role===`user`)if(typeof n.content==`string`)c.push({role:`user`,content:[{type:`input_text`,text:t(n.content)}]});else{let e=n.content.map(e=>e.type===`text`?{type:`input_text`,text:t(e.text)}:{type:`input_image`,detail:`auto`,image_url:`data:${e.mimeType};base64,${e.data}`});if(e.length===0)continue;c.push({role:`user`,content:e})}else if(n.role===`assistant`){let r=[],a=n,s=a.model!==e.id&&a.provider===e.provider&&a.api===e.api;for(let e of n.content)if(e.type===`thinking`){if(e.thinkingSignature){let t=JSON.parse(e.thinkingSignature);r.push(t)}}else if(e.type===`text`){let n=e,a=o(n.textSignature),s=a?.id;s?s.length>64&&(s=`msg_${i(s)}`):s=`msg_${f}`,r.push({type:`message`,role:`assistant`,content:[{type:`output_text`,text:t(n.text),annotations:[]}],status:`completed`,id:s,phase:a?.phase})}else if(e.type===`toolCall`){let t=e,[n,i]=t.id.split(`|`),a=i;s&&a?.startsWith(`fc_`)&&(a=void 0),r.push({type:`function_call`,id:a,call_id:n,name:t.name,arguments:JSON.stringify(t.arguments)})}if(r.length===0)continue;c.push(...r)}else if(n.role===`toolResult`){let r=n.content.filter(e=>e.type===`text`).map(e=>e.text).join(`
1
+ import{E as e,o as t,x as n,z as r}from"./kernel-worker-7oVJDvYj.js";import{t as i}from"./hash-C3GX0Zuo.js";function a(e,t){let n={v:1,id:e};return t&&(n.phase=t),JSON.stringify(n)}function o(e){if(e){if(e.startsWith(`{`))try{let t=JSON.parse(e);if(t.v===1&&typeof t.id==`string`)return t.phase===`commentary`||t.phase===`final_answer`?{id:t.id,phase:t.phase}:{id:t.id}}catch{}return{id:e}}}function s(e,r,a,s){let c=[],l=e=>{let t=e.replace(/[^a-zA-Z0-9_-]/g,`_`);return(t.length>64?t.slice(0,64):t).replace(/_+$/,``)},u=e=>{let t=`fc_${i(e)}`;return t.length>64?t.slice(0,64):t},d=n(r.messages,e,(t,n,r)=>{if(!a.has(e.provider)||!t.includes(`|`))return l(t);let[i,o]=t.split(`|`),s=l(i),c=r.provider!==e.provider||r.api!==e.api?u(o):l(o);return c.startsWith(`fc_`)||(c=l(`fc_${c}`)),`${s}|${c}`});if((s?.includeSystemPrompt??!0)&&r.systemPrompt){let n=e.reasoning?`developer`:`system`;c.push({role:n,content:t(r.systemPrompt)})}let f=0;for(let n of d){if(n.role===`user`)if(typeof n.content==`string`)c.push({role:`user`,content:[{type:`input_text`,text:t(n.content)}]});else{let e=n.content.map(e=>e.type===`text`?{type:`input_text`,text:t(e.text)}:{type:`input_image`,detail:`auto`,image_url:`data:${e.mimeType};base64,${e.data}`});if(e.length===0)continue;c.push({role:`user`,content:e})}else if(n.role===`assistant`){let r=[],a=n,s=a.model!==e.id&&a.provider===e.provider&&a.api===e.api;for(let e of n.content)if(e.type===`thinking`){if(e.thinkingSignature){let t=JSON.parse(e.thinkingSignature);r.push(t)}}else if(e.type===`text`){let n=e,a=o(n.textSignature),s=a?.id;s?s.length>64&&(s=`msg_${i(s)}`):s=`msg_${f}`,r.push({type:`message`,role:`assistant`,content:[{type:`output_text`,text:t(n.text),annotations:[]}],status:`completed`,id:s,phase:a?.phase})}else if(e.type===`toolCall`){let t=e,[n,i]=t.id.split(`|`),a=i;s&&a?.startsWith(`fc_`)&&(a=void 0),r.push({type:`function_call`,id:a,call_id:n,name:t.name,arguments:JSON.stringify(t.arguments)})}if(r.length===0)continue;c.push(...r)}else if(n.role===`toolResult`){let r=n.content.filter(e=>e.type===`text`).map(e=>e.text).join(`
2
2
  `),i=n.content.some(e=>e.type===`image`),a=r.length>0,[o]=n.toolCallId.split(`|`),s;if(i&&e.input.includes(`image`)){let e=[];a&&e.push({type:`input_text`,text:t(r)});for(let t of n.content)t.type===`image`&&e.push({type:`input_image`,detail:`auto`,image_url:`data:${t.mimeType};base64,${t.data}`});s=e}else s=t(a?r:`(see attached image)`);c.push({type:`function_call_output`,call_id:o,output:s})}f++}return c}function c(e,t){let n=t?.strict===void 0?!1:t.strict;return e.map(e=>({type:`function`,name:e.name,description:e.description,parameters:e.parameters,strict:n}))}async function l(t,n,i,o,s){let c=null,l=null,d=n.content,f=()=>d.length-1;for await(let d of t)if(d.type===`response.created`)n.responseId=d.response.id;else if(d.type===`response.output_item.added`){let e=d.item;e.type===`reasoning`?(c=e,l={type:`thinking`,thinking:``},n.content.push(l),i.push({type:`thinking_start`,contentIndex:f(),partial:n})):e.type===`message`?(c=e,l={type:`text`,text:``},n.content.push(l),i.push({type:`text_start`,contentIndex:f(),partial:n})):e.type===`function_call`&&(c=e,l={type:`toolCall`,id:`${e.call_id}|${e.id}`,name:e.name,arguments:{},partialJson:e.arguments||``},n.content.push(l),i.push({type:`toolcall_start`,contentIndex:f(),partial:n}))}else if(d.type===`response.reasoning_summary_part.added`)c&&c.type===`reasoning`&&(c.summary=c.summary||[],c.summary.push(d.part));else if(d.type===`response.reasoning_summary_text.delta`){if(c?.type===`reasoning`&&l?.type===`thinking`){c.summary=c.summary||[];let e=c.summary[c.summary.length-1];e&&(l.thinking+=d.delta,e.text+=d.delta,i.push({type:`thinking_delta`,contentIndex:f(),delta:d.delta,partial:n}))}}else if(d.type===`response.reasoning_summary_part.done`){if(c?.type===`reasoning`&&l?.type===`thinking`){c.summary=c.summary||[];let e=c.summary[c.summary.length-1];e&&(l.thinking+=`
3
3
 
4
4
  `,e.text+=`
@@ -1,4 +1,4 @@
1
- import{O as e,V as t,b as n}from"./index-CCGqFzR9.js";import{t as r}from"./sanitize-unicode-h0KEBmEw.js";import{t as i}from"./hash-B9Dtr1VK.js";function a(e,t){let n={v:1,id:e};return t&&(n.phase=t),JSON.stringify(n)}function o(e){if(e){if(e.startsWith(`{`))try{let t=JSON.parse(e);if(t.v===1&&typeof t.id==`string`)return t.phase===`commentary`||t.phase===`final_answer`?{id:t.id,phase:t.phase}:{id:t.id}}catch{}return{id:e}}}function s(e,t,a,s){let c=[],l=e=>{let t=e.replace(/[^a-zA-Z0-9_-]/g,`_`);return(t.length>64?t.slice(0,64):t).replace(/_+$/,``)},u=e=>{let t=`fc_${i(e)}`;return t.length>64?t.slice(0,64):t},d=n(t.messages,e,(t,n,r)=>{if(!a.has(e.provider)||!t.includes(`|`))return l(t);let[i,o]=t.split(`|`),s=l(i),c=r.provider!==e.provider||r.api!==e.api?u(o):l(o);return c.startsWith(`fc_`)||(c=l(`fc_${c}`)),`${s}|${c}`});if((s?.includeSystemPrompt??!0)&&t.systemPrompt){let n=e.reasoning?`developer`:`system`;c.push({role:n,content:r(t.systemPrompt)})}let f=0;for(let t of d){if(t.role===`user`)if(typeof t.content==`string`)c.push({role:`user`,content:[{type:`input_text`,text:r(t.content)}]});else{let e=t.content.map(e=>e.type===`text`?{type:`input_text`,text:r(e.text)}:{type:`input_image`,detail:`auto`,image_url:`data:${e.mimeType};base64,${e.data}`});if(e.length===0)continue;c.push({role:`user`,content:e})}else if(t.role===`assistant`){let n=[],a=t,s=a.model!==e.id&&a.provider===e.provider&&a.api===e.api;for(let e of t.content)if(e.type===`thinking`){if(e.thinkingSignature){let t=JSON.parse(e.thinkingSignature);n.push(t)}}else if(e.type===`text`){let t=e,a=o(t.textSignature),s=a?.id;s?s.length>64&&(s=`msg_${i(s)}`):s=`msg_${f}`,n.push({type:`message`,role:`assistant`,content:[{type:`output_text`,text:r(t.text),annotations:[]}],status:`completed`,id:s,phase:a?.phase})}else if(e.type===`toolCall`){let t=e,[r,i]=t.id.split(`|`),a=i;s&&a?.startsWith(`fc_`)&&(a=void 0),n.push({type:`function_call`,id:a,call_id:r,name:t.name,arguments:JSON.stringify(t.arguments)})}if(n.length===0)continue;c.push(...n)}else if(t.role===`toolResult`){let n=t.content.filter(e=>e.type===`text`).map(e=>e.text).join(`
1
+ import{O as e,V as t,b as n}from"./index-BdDYVKjf.js";import{t as r}from"./sanitize-unicode-h0KEBmEw.js";import{t as i}from"./hash-B9Dtr1VK.js";function a(e,t){let n={v:1,id:e};return t&&(n.phase=t),JSON.stringify(n)}function o(e){if(e){if(e.startsWith(`{`))try{let t=JSON.parse(e);if(t.v===1&&typeof t.id==`string`)return t.phase===`commentary`||t.phase===`final_answer`?{id:t.id,phase:t.phase}:{id:t.id}}catch{}return{id:e}}}function s(e,t,a,s){let c=[],l=e=>{let t=e.replace(/[^a-zA-Z0-9_-]/g,`_`);return(t.length>64?t.slice(0,64):t).replace(/_+$/,``)},u=e=>{let t=`fc_${i(e)}`;return t.length>64?t.slice(0,64):t},d=n(t.messages,e,(t,n,r)=>{if(!a.has(e.provider)||!t.includes(`|`))return l(t);let[i,o]=t.split(`|`),s=l(i),c=r.provider!==e.provider||r.api!==e.api?u(o):l(o);return c.startsWith(`fc_`)||(c=l(`fc_${c}`)),`${s}|${c}`});if((s?.includeSystemPrompt??!0)&&t.systemPrompt){let n=e.reasoning?`developer`:`system`;c.push({role:n,content:r(t.systemPrompt)})}let f=0;for(let t of d){if(t.role===`user`)if(typeof t.content==`string`)c.push({role:`user`,content:[{type:`input_text`,text:r(t.content)}]});else{let e=t.content.map(e=>e.type===`text`?{type:`input_text`,text:r(e.text)}:{type:`input_image`,detail:`auto`,image_url:`data:${e.mimeType};base64,${e.data}`});if(e.length===0)continue;c.push({role:`user`,content:e})}else if(t.role===`assistant`){let n=[],a=t,s=a.model!==e.id&&a.provider===e.provider&&a.api===e.api;for(let e of t.content)if(e.type===`thinking`){if(e.thinkingSignature){let t=JSON.parse(e.thinkingSignature);n.push(t)}}else if(e.type===`text`){let t=e,a=o(t.textSignature),s=a?.id;s?s.length>64&&(s=`msg_${i(s)}`):s=`msg_${f}`,n.push({type:`message`,role:`assistant`,content:[{type:`output_text`,text:r(t.text),annotations:[]}],status:`completed`,id:s,phase:a?.phase})}else if(e.type===`toolCall`){let t=e,[r,i]=t.id.split(`|`),a=i;s&&a?.startsWith(`fc_`)&&(a=void 0),n.push({type:`function_call`,id:a,call_id:r,name:t.name,arguments:JSON.stringify(t.arguments)})}if(n.length===0)continue;c.push(...n)}else if(t.role===`toolResult`){let n=t.content.filter(e=>e.type===`text`).map(e=>e.text).join(`
2
2
  `),i=t.content.some(e=>e.type===`image`),a=n.length>0,[o]=t.toolCallId.split(`|`),s;if(i&&e.input.includes(`image`)){let e=[];a&&e.push({type:`input_text`,text:r(n)});for(let n of t.content)n.type===`image`&&e.push({type:`input_image`,detail:`auto`,image_url:`data:${n.mimeType};base64,${n.data}`});s=e}else s=r(a?n:`(see attached image)`);c.push({type:`function_call_output`,call_id:o,output:s})}f++}return c}function c(e,t){let n=t?.strict===void 0?!1:t.strict;return e.map(e=>({type:`function`,name:e.name,description:e.description,parameters:e.parameters,strict:n}))}async function l(n,r,i,o,s){let c=null,l=null,d=r.content,f=()=>d.length-1;for await(let d of n)if(d.type===`response.created`)r.responseId=d.response.id;else if(d.type===`response.output_item.added`){let e=d.item;e.type===`reasoning`?(c=e,l={type:`thinking`,thinking:``},r.content.push(l),i.push({type:`thinking_start`,contentIndex:f(),partial:r})):e.type===`message`?(c=e,l={type:`text`,text:``},r.content.push(l),i.push({type:`text_start`,contentIndex:f(),partial:r})):e.type===`function_call`&&(c=e,l={type:`toolCall`,id:`${e.call_id}|${e.id}`,name:e.name,arguments:{},partialJson:e.arguments||``},r.content.push(l),i.push({type:`toolcall_start`,contentIndex:f(),partial:r}))}else if(d.type===`response.reasoning_summary_part.added`)c&&c.type===`reasoning`&&(c.summary=c.summary||[],c.summary.push(d.part));else if(d.type===`response.reasoning_summary_text.delta`){if(c?.type===`reasoning`&&l?.type===`thinking`){c.summary=c.summary||[];let e=c.summary[c.summary.length-1];e&&(l.thinking+=d.delta,e.text+=d.delta,i.push({type:`thinking_delta`,contentIndex:f(),delta:d.delta,partial:r}))}}else if(d.type===`response.reasoning_summary_part.done`){if(c?.type===`reasoning`&&l?.type===`thinking`){c.summary=c.summary||[];let e=c.summary[c.summary.length-1];e&&(l.thinking+=`
3
3
 
4
4
  `,e.text+=`
@@ -0,0 +1 @@
1
+ import{G as e}from"./index-BdDYVKjf.js";import{t}from"./headers-AeYLn7L4.js";import{t as n}from"./sanitize-unicode-h0KEBmEw.js";import{n as r}from"./openai-Bf1npfRy.js";var i=async(n,r,i)=>{let c={api:n.api,provider:n.provider,model:n.id,output:[],stopReason:`stop`,timestamp:Date.now()};try{let l=i?.apiKey||e(n.provider);if(!l)throw Error(`No API key available for provider: ${n.provider}`);let u=a(n,l,i?.headers),d=o(n,r),f=await i?.onPayload?.(d,n);f!==void 0&&(d=f);let p={...i?.signal?{signal:i.signal}:{},...i?.timeoutMs===void 0?{}:{timeout:i.timeoutMs},...i?.maxRetries===void 0?{}:{maxRetries:i.maxRetries}},{data:m,response:h}=await u.chat.completions.create(d,p).withResponse();await i?.onResponse?.({status:h.status,headers:t(h.headers)},n);let g=m;c.responseId=g.id,g.usage&&(c.usage=s(g.usage,n));let _=g.choices[0];if(_){let e=_.message.content;typeof e==`string`&&e.length>0&&c.output.push({type:`text`,text:e});for(let e of _.message.images??[]){let t=typeof e.image_url==`string`?e.image_url:e.image_url?.url;if(!t?.startsWith(`data:`))continue;let n=t.match(/^data:([^;]+);base64,(.+)$/);n&&c.output.push({type:`image`,mimeType:n[1],data:n[2]})}}return c}catch(e){return c.stopReason=i?.signal?.aborted?`aborted`:`error`,c.errorMessage=e instanceof Error?e.message:JSON.stringify(e),c}};function a(e,t,n){return new r({apiKey:t,baseURL:e.baseUrl,dangerouslyAllowBrowser:!0,defaultHeaders:{...e.headers,...n}})}function o(e,t){let r=t.input.map(e=>e.type===`text`?{type:`text`,text:n(e.text)}:{type:`image_url`,image_url:{url:`data:${e.mimeType};base64,${e.data}`}});return{model:e.id,messages:[{role:`user`,content:r}],stream:!1,modalities:e.output.includes(`text`)?[`image`,`text`]:[`image`]}}function s(e,t){let n=e.prompt_tokens||0,r=e.prompt_tokens_details?.cached_tokens||0,i=e.prompt_tokens_details?.cache_write_tokens||0,a=i>0?Math.max(0,r-i):r,o=Math.max(0,n-a-i),s=e.completion_tokens||0,c={input:o,output:s,cacheRead:a,cacheWrite:i,totalTokens:o+s+a+i,cost:{input:t.cost.input/1e6*o,output:t.cost.output/1e6*s,cacheRead:t.cost.cacheRead/1e6*a,cacheWrite:t.cost.cacheWrite/1e6*i,total:0}};return c.cost.total=c.cost.input+c.cost.output+c.cost.cacheRead+c.cost.cacheWrite,c}export{i as generateImagesOpenRouter};
@@ -0,0 +1 @@
1
+ import{U as e,l as t,o as n,s as r}from"./kernel-worker-7oVJDvYj.js";const i=async(t,n,i)=>{let c={api:t.api,provider:t.provider,model:t.id,output:[],stopReason:`stop`,timestamp:Date.now()};try{let l=i?.apiKey||e(t.provider);if(!l)throw Error(`No API key available for provider: ${t.provider}`);let u=a(t,l,i?.headers),d=o(t,n),f=await i?.onPayload?.(d,t);f!==void 0&&(d=f);let p={...i?.signal?{signal:i.signal}:{},...i?.timeoutMs===void 0?{}:{timeout:i.timeoutMs},...i?.maxRetries===void 0?{}:{maxRetries:i.maxRetries}},{data:m,response:h}=await u.chat.completions.create(d,p).withResponse();await i?.onResponse?.({status:h.status,headers:r(h.headers)},t);let g=m;c.responseId=g.id,g.usage&&(c.usage=s(g.usage,t));let _=g.choices[0];if(_){let e=_.message.content;typeof e==`string`&&e.length>0&&c.output.push({type:`text`,text:e});for(let e of _.message.images??[]){let t=typeof e.image_url==`string`?e.image_url:e.image_url?.url;if(!t?.startsWith(`data:`))continue;let n=t.match(/^data:([^;]+);base64,(.+)$/);n&&c.output.push({type:`image`,mimeType:n[1],data:n[2]})}}return c}catch(e){return c.stopReason=i?.signal?.aborted?`aborted`:`error`,c.errorMessage=e instanceof Error?e.message:JSON.stringify(e),c}};function a(e,n,r){return new t({apiKey:n,baseURL:e.baseUrl,dangerouslyAllowBrowser:!0,defaultHeaders:{...e.headers,...r}})}function o(e,t){let r=t.input.map(e=>e.type===`text`?{type:`text`,text:n(e.text)}:{type:`image_url`,image_url:{url:`data:${e.mimeType};base64,${e.data}`}});return{model:e.id,messages:[{role:`user`,content:r}],stream:!1,modalities:e.output.includes(`text`)?[`image`,`text`]:[`image`]}}function s(e,t){let n=e.prompt_tokens||0,r=e.prompt_tokens_details?.cached_tokens||0,i=e.prompt_tokens_details?.cache_write_tokens||0,a=i>0?Math.max(0,r-i):r,o=Math.max(0,n-a-i),s=e.completion_tokens||0,c={input:o,output:s,cacheRead:a,cacheWrite:i,totalTokens:o+s+a+i,cost:{input:t.cost.input/1e6*o,output:t.cost.output/1e6*s,cacheRead:t.cost.cacheRead/1e6*a,cacheWrite:t.cost.cacheWrite/1e6*i,total:0}};return c.cost.total=c.cost.input+c.cost.output+c.cost.cacheRead+c.cost.cacheWrite,c}export{i as generateImagesOpenRouter};
@@ -1 +1 @@
1
- import{g as e,u as t}from"./index-CCGqFzR9.js";function n(n={}){return{"page-info":()=>({origin:window.location.origin,href:window.location.href,title:document.title||``}),screencapture:async({mimeType:e,quality:t})=>{let n=await l(e,t),r=await n.arrayBuffer(),i=await u(n);return{bytes:r,width:i.width,height:i.height,mimeType:e}},"speak-text":async({text:e,lang:t,voice:n,rate:r,pitch:i,volume:a})=>{if(typeof speechSynthesis>`u`)throw Error(`speechSynthesis is unavailable in this page`);return await new Promise((o,s)=>{let c=new SpeechSynthesisUtterance(e);if(t!==void 0&&(c.lang=t),r!==void 0&&(c.rate=r),i!==void 0&&(c.pitch=i),a!==void 0&&(c.volume=a),n){let e=speechSynthesis.getVoices().find(e=>e.name===n);e&&(c.voice=e)}c.onend=()=>o(),c.onerror=e=>s(Error(`speak: ${e.error||`utterance failed`}`)),speechSynthesis.speak(c)}),{done:!0}},"list-voices":async()=>{if(typeof speechSynthesis>`u`)throw Error(`speechSynthesis is unavailable in this page`);let e=speechSynthesis.getVoices();return e.length>0?{voices:e.map(c)}:{voices:(await new Promise(e=>{let t=()=>{speechSynthesis.removeEventListener(`voiceschanged`,t),e(speechSynthesis.getVoices())};speechSynthesis.addEventListener(`voiceschanged`,t),setTimeout(()=>{speechSynthesis.removeEventListener(`voiceschanged`,t),e(speechSynthesis.getVoices())},1e3)})).map(c)}},"play-audio":async({bytes:e,volume:t})=>{if(typeof AudioContext>`u`)throw Error(`Web Audio API is unavailable in this page`);let n=new AudioContext;try{let r=await n.decodeAudioData(e.slice(0)),i=n.createBufferSource();if(i.buffer=r,t!==void 0){let e=n.createGain();e.gain.value=Math.max(0,Math.min(1,t)),i.connect(e),e.connect(n.destination)}else i.connect(n.destination);await new Promise(e=>{i.onended=()=>e(),i.start()})}finally{try{await n.close()}catch{}}return{done:!0}},"play-chime":async({tone:e})=>{let t={success:[880,1320],error:[440,220],notify:[660,660]},[n,r]=t[e??`notify`]??t.notify;if(typeof AudioContext>`u`)throw Error(`Web Audio API is unavailable in this page`);let i=new AudioContext;try{let e=i.currentTime;for(let[t,a]of[n,r].entries()){let n=i.createOscillator();n.type=`sine`,n.frequency.value=a;let r=i.createGain();r.gain.setValueAtTime(1e-4,e+t*.18),r.gain.exponentialRampToValueAtTime(.2,e+t*.18+.02),r.gain.exponentialRampToValueAtTime(1e-4,e+t*.18+.18),n.connect(r),r.connect(i.destination),n.start(e+t*.18),n.stop(e+t*.18+.2)}await new Promise(e=>setTimeout(e,450))}finally{try{await i.close()}catch{}}return{done:!0}},"clipboard-read-text":async()=>{if(!navigator.clipboard?.readText)throw Error(`clipboard API unavailable`);return{text:await navigator.clipboard.readText()}},"clipboard-write-text":async({text:e})=>{if(!navigator.clipboard?.writeText)throw Error(`clipboard API unavailable`);return await f(),await navigator.clipboard.writeText(e),{done:!0}},"clipboard-write-image":async({bytes:e,mimeType:t})=>{if(!navigator.clipboard?.write||typeof ClipboardItem>`u`)throw Error(`clipboard image API unavailable`);let n,r=new Blob([e],{type:t});return n=t===`image/png`?r:await d(r),await f(),await navigator.clipboard.write([new ClipboardItem({"image/png":n})]),{done:!0}},"window-open":async({url:e,target:t,features:n})=>({opened:window.open(e,t??`_blank`,n??`noopener,noreferrer`)!==null}),"oauth-popup":async({url:e})=>({redirectUrl:await s(e)}),"capture-camera":async e=>await i(e),"enumerate-media-devices":async()=>{if(!navigator.mediaDevices?.enumerateDevices)throw Error(`enumerateDevices is not supported in this browser`);let e=await navigator.mediaDevices.enumerateDevices(),t=e=>({deviceId:e.deviceId,label:e.label||``,...e.groupId?{groupId:e.groupId}:{}});return{videoinputs:e.filter(e=>e.kind===`videoinput`).map(t),audioinputs:e.filter(e=>e.kind===`audioinput`).map(t)}},"tray-reset":async()=>{if(!n.resetTray)throw Error(`host reset: no active tray session to reset`);return await n.resetTray()},"tray-leave":async({workerBaseUrl:e,requestId:t})=>{if(!n.leaveTray)throw Error(`host leave: tray leave is not available in this environment`);return await n.leaveTray({workerBaseUrl:e,requestId:t})},"oauth-extras-set":({providerId:n,domains:r})=>(e(n,r),{storeAfter:t()}),"save-oauth-accounts":({accountsJson:e})=>(localStorage.setItem(`slicc_accounts`,e),{storedJson:localStorage.getItem(`slicc_accounts`)??e})}}var r=1500;async function i(e){if(!navigator.mediaDevices?.getUserMedia)throw Error(`getUserMedia is not supported in this browser`);let t=e.mode===`photo`||e.captureVideo!==!1,n=!!e.captureAudio&&e.mode===`video`;if(!t&&!n)throw Error(`camera capture: at least one of video or audio must be requested`);let i=await o({wantVideo:t,videoDeviceId:t?await a(e.deviceId,`videoinput`):void 0,audioDeviceId:n?await a(e.audioDeviceId,`audioinput`):void 0,wantAudio:n,width:e.width,height:e.height,frameRate:e.frameRate,exact:!!e.exactSize});try{let n=null,a=0,o=0;if(t){n=document.createElement(`video`),n.srcObject=i,n.muted=!0,n.playsInline=!0;let e=n;await new Promise((t,n)=>{e.onloadedmetadata=()=>e.play().then(()=>t()).catch(n),e.onerror=()=>n(Error(`Failed to load camera stream`))}),await new Promise(e=>requestAnimationFrame(()=>e())),await new Promise(e=>requestAnimationFrame(()=>e())),a=e.videoWidth,o=e.videoHeight}if(e.mode===`photo`){if(!n)throw Error(`photo capture requires a video track`);let t=e.warmupMs??r;t>0&&await new Promise(e=>setTimeout(e,t));let i=document.createElement(`canvas`);i.width=a,i.height=o;let s=i.getContext(`2d`);if(!s)throw Error(`Failed to get canvas context`);s.drawImage(n,0,0,a,o);let c=await new Promise((t,n)=>{i.toBlob(e=>e?t(e):n(Error(`Failed to encode photo`)),e.mimeType,e.quality)});return{bytes:await c.arrayBuffer(),mimeType:c.type||e.mimeType,width:a,height:o}}let s=Math.max(100,Math.min(e.durationMs??5e3,6e4)),c=typeof MediaRecorder<`u`&&MediaRecorder.isTypeSupported(e.mimeType)?e.mimeType:`video/webm`,l=new MediaRecorder(i,{mimeType:c}),u=[];l.ondataavailable=e=>{e.data&&e.data.size>0&&u.push(e.data)};let d=new Promise(e=>{l.onstop=()=>e()});l.start(),await new Promise(e=>setTimeout(e,s)),l.stop(),await d;let f=new Blob(u,{type:c});return{bytes:await f.arrayBuffer(),mimeType:f.type||c,width:a,height:o,durationMs:s}}finally{i.getTracks().forEach(e=>e.stop())}}async function a(e,t){if(e===void 0||e===``)return;if(!/^\d+$/.test(e))return e;if(!navigator.mediaDevices?.enumerateDevices)return;let n=parseInt(e,10);return(await navigator.mediaDevices.enumerateDevices()).filter(e=>e.kind===t)[n]?.deviceId}async function o(e){let t=t=>{if(!e.wantVideo)return!1;let n={};return e.videoDeviceId&&(n.deviceId={exact:e.videoDeviceId}),e.width&&(n.width=t===`exact`?{exact:e.width}:{ideal:e.width}),e.height&&(n.height=t===`exact`?{exact:e.height}:{ideal:e.height}),e.frameRate&&(n.frameRate=t===`exact`?{exact:e.frameRate}:{ideal:e.frameRate}),Object.keys(n).length>0?n:!0},n=()=>e.wantAudio?e.audioDeviceId?{deviceId:{exact:e.audioDeviceId}}:!0:!1;try{return await navigator.mediaDevices.getUserMedia({video:t(e.exact?`exact`:`ideal`),audio:n()})}catch(r){let i=r?.name;if(!e.exact||i!==`OverconstrainedError`&&i!==`NotReadableError`)throw r;return console.warn(`panel-rpc:capture-camera: exact ${e.width??`?`}x${e.height??`?`}@${e.frameRate??`?`} unmet, falling back to ideal`),await navigator.mediaDevices.getUserMedia({video:t(`ideal`),audio:n()})}}function s(e){return new Promise(t=>{let n=window.open(e,`_blank`,`width=500,height=700,popup=yes`),r=!1,i=null,a=()=>{r||(r=!0,window.removeEventListener(`message`,o),clearTimeout(s),i&&clearInterval(i))},o=e=>{if(e.data?.type!==`oauth-callback`||e.origin!==window.location.origin||n&&e.source!==n)return;if(a(),e.data.error){console.error(`[panel-rpc:oauth-popup] OAuth error:`,e.data.error),t(null);return}let r=e.data.redirectUrl;typeof r!=`string`&&r!=null||t(r??null)};window.addEventListener(`message`,o),i=setInterval(async()=>{if(!r)try{let e=await fetch(`/api/oauth-result`);if(e.status===204||!e.ok)return;let n=await e.json();if(r)return;if(a(),n.error){console.error(`[panel-rpc:oauth-popup] Server relay OAuth error:`,n.error),t(null);return}t(n.redirectUrl??null)}catch(e){console.warn(`[panel-rpc:oauth-popup] Poll failed:`,e instanceof Error?e.message:String(e))}},1e3);let s=setTimeout(()=>{a();try{n?.close()}catch{}t(null)},12e4)})}function c(e){return{name:e.name,lang:e.lang,default:e.default}}async function l(e,t){if(!navigator.mediaDevices?.getDisplayMedia)throw Error(`screen capture is not supported in this browser`);let n=await navigator.mediaDevices.getDisplayMedia({video:!0,audio:!1});try{let r=document.createElement(`video`);r.srcObject=n,r.muted=!0,r.playsInline=!0,await new Promise((e,t)=>{r.onloadedmetadata=()=>r.play().then(()=>e()).catch(t),r.onerror=()=>t(Error(`Failed to load video stream`))}),await new Promise(e=>setTimeout(e,100));let i=r.videoWidth,a=r.videoHeight,o=document.createElement(`canvas`);o.width=i,o.height=a;let s=o.getContext(`2d`);if(!s)throw Error(`Failed to get canvas context`);return s.drawImage(r,0,0,i,a),await new Promise((n,r)=>{o.toBlob(e=>e?n(e):r(Error(`Failed to create image blob`)),e,t)})}finally{n.getTracks().forEach(e=>e.stop())}}async function u(e){let t=URL.createObjectURL(e);try{let e=new Image;return await new Promise((n,r)=>{e.onload=()=>n(),e.onerror=()=>r(Error(`Failed to decode capture`)),e.src=t}),{width:e.naturalWidth,height:e.naturalHeight}}finally{URL.revokeObjectURL(t)}}async function d(e){let t=URL.createObjectURL(e);try{let e=new Image;await new Promise((n,r)=>{e.onload=()=>n(),e.onerror=()=>r(Error(`Failed to load image for clipboard conversion`)),e.src=t});let n=document.createElement(`canvas`);n.width=e.naturalWidth,n.height=e.naturalHeight;let r=n.getContext(`2d`);if(!r)throw Error(`Failed to get canvas context`);return r.drawImage(e,0,0),await new Promise((e,t)=>{n.toBlob(n=>n?e(n):t(Error(`PNG re-encode failed`)),`image/png`)})}finally{URL.revokeObjectURL(t)}}async function f(e=5*6e4){typeof document>`u`||typeof document.hasFocus==`function`&&(document.hasFocus()||await new Promise((t,n)=>{let r=()=>{window.removeEventListener(`focus`,i),document.removeEventListener(`visibilitychange`,a),clearTimeout(o)},i=()=>{document.hasFocus()&&(r(),t())},a=()=>{document.visibilityState===`visible`&&document.hasFocus()&&(r(),t())},o=setTimeout(()=>{r(),n(Error(`timed out waiting for window focus`))},e);window.addEventListener(`focus`,i),document.addEventListener(`visibilitychange`,a)}))}export{n as createStandalonePanelRpcHandlers};
1
+ import{g as e,u as t}from"./index-BdDYVKjf.js";function n(n={}){return{"page-info":()=>({origin:window.location.origin,href:window.location.href,title:document.title||``}),screencapture:async({mimeType:e,quality:t})=>{let n=await l(e,t),r=await n.arrayBuffer(),i=await u(n);return{bytes:r,width:i.width,height:i.height,mimeType:e}},"speak-text":async({text:e,lang:t,voice:n,rate:r,pitch:i,volume:a})=>{if(typeof speechSynthesis>`u`)throw Error(`speechSynthesis is unavailable in this page`);return await new Promise((o,s)=>{let c=new SpeechSynthesisUtterance(e);if(t!==void 0&&(c.lang=t),r!==void 0&&(c.rate=r),i!==void 0&&(c.pitch=i),a!==void 0&&(c.volume=a),n){let e=speechSynthesis.getVoices().find(e=>e.name===n);e&&(c.voice=e)}c.onend=()=>o(),c.onerror=e=>s(Error(`speak: ${e.error||`utterance failed`}`)),speechSynthesis.speak(c)}),{done:!0}},"list-voices":async()=>{if(typeof speechSynthesis>`u`)throw Error(`speechSynthesis is unavailable in this page`);let e=speechSynthesis.getVoices();return e.length>0?{voices:e.map(c)}:{voices:(await new Promise(e=>{let t=()=>{speechSynthesis.removeEventListener(`voiceschanged`,t),e(speechSynthesis.getVoices())};speechSynthesis.addEventListener(`voiceschanged`,t),setTimeout(()=>{speechSynthesis.removeEventListener(`voiceschanged`,t),e(speechSynthesis.getVoices())},1e3)})).map(c)}},"play-audio":async({bytes:e,volume:t})=>{if(typeof AudioContext>`u`)throw Error(`Web Audio API is unavailable in this page`);let n=new AudioContext;try{let r=await n.decodeAudioData(e.slice(0)),i=n.createBufferSource();if(i.buffer=r,t!==void 0){let e=n.createGain();e.gain.value=Math.max(0,Math.min(1,t)),i.connect(e),e.connect(n.destination)}else i.connect(n.destination);await new Promise(e=>{i.onended=()=>e(),i.start()})}finally{try{await n.close()}catch{}}return{done:!0}},"play-chime":async({tone:e})=>{let t={success:[880,1320],error:[440,220],notify:[660,660]},[n,r]=t[e??`notify`]??t.notify;if(typeof AudioContext>`u`)throw Error(`Web Audio API is unavailable in this page`);let i=new AudioContext;try{let e=i.currentTime;for(let[t,a]of[n,r].entries()){let n=i.createOscillator();n.type=`sine`,n.frequency.value=a;let r=i.createGain();r.gain.setValueAtTime(1e-4,e+t*.18),r.gain.exponentialRampToValueAtTime(.2,e+t*.18+.02),r.gain.exponentialRampToValueAtTime(1e-4,e+t*.18+.18),n.connect(r),r.connect(i.destination),n.start(e+t*.18),n.stop(e+t*.18+.2)}await new Promise(e=>setTimeout(e,450))}finally{try{await i.close()}catch{}}return{done:!0}},"clipboard-read-text":async()=>{if(!navigator.clipboard?.readText)throw Error(`clipboard API unavailable`);return{text:await navigator.clipboard.readText()}},"clipboard-write-text":async({text:e})=>{if(!navigator.clipboard?.writeText)throw Error(`clipboard API unavailable`);return await f(),await navigator.clipboard.writeText(e),{done:!0}},"clipboard-write-image":async({bytes:e,mimeType:t})=>{if(!navigator.clipboard?.write||typeof ClipboardItem>`u`)throw Error(`clipboard image API unavailable`);let n,r=new Blob([e],{type:t});return n=t===`image/png`?r:await d(r),await f(),await navigator.clipboard.write([new ClipboardItem({"image/png":n})]),{done:!0}},"window-open":async({url:e,target:t,features:n})=>({opened:window.open(e,t??`_blank`,n??`noopener,noreferrer`)!==null}),"oauth-popup":async({url:e})=>({redirectUrl:await s(e)}),"capture-camera":async e=>await i(e),"enumerate-media-devices":async()=>{if(!navigator.mediaDevices?.enumerateDevices)throw Error(`enumerateDevices is not supported in this browser`);let e=await navigator.mediaDevices.enumerateDevices(),t=e=>({deviceId:e.deviceId,label:e.label||``,...e.groupId?{groupId:e.groupId}:{}});return{videoinputs:e.filter(e=>e.kind===`videoinput`).map(t),audioinputs:e.filter(e=>e.kind===`audioinput`).map(t)}},"tray-reset":async()=>{if(!n.resetTray)throw Error(`host reset: no active tray session to reset`);return await n.resetTray()},"tray-leave":async({workerBaseUrl:e,requestId:t})=>{if(!n.leaveTray)throw Error(`host leave: tray leave is not available in this environment`);return await n.leaveTray({workerBaseUrl:e,requestId:t})},"oauth-extras-set":({providerId:n,domains:r})=>(e(n,r),{storeAfter:t()}),"save-oauth-accounts":({accountsJson:e})=>(localStorage.setItem(`slicc_accounts`,e),{storedJson:localStorage.getItem(`slicc_accounts`)??e})}}var r=1500;async function i(e){if(!navigator.mediaDevices?.getUserMedia)throw Error(`getUserMedia is not supported in this browser`);let t=e.mode===`photo`||e.captureVideo!==!1,n=!!e.captureAudio&&e.mode===`video`;if(!t&&!n)throw Error(`camera capture: at least one of video or audio must be requested`);let i=await o({wantVideo:t,videoDeviceId:t?await a(e.deviceId,`videoinput`):void 0,audioDeviceId:n?await a(e.audioDeviceId,`audioinput`):void 0,wantAudio:n,width:e.width,height:e.height,frameRate:e.frameRate,exact:!!e.exactSize});try{let n=null,a=0,o=0;if(t){n=document.createElement(`video`),n.srcObject=i,n.muted=!0,n.playsInline=!0;let e=n;await new Promise((t,n)=>{e.onloadedmetadata=()=>e.play().then(()=>t()).catch(n),e.onerror=()=>n(Error(`Failed to load camera stream`))}),await new Promise(e=>requestAnimationFrame(()=>e())),await new Promise(e=>requestAnimationFrame(()=>e())),a=e.videoWidth,o=e.videoHeight}if(e.mode===`photo`){if(!n)throw Error(`photo capture requires a video track`);let t=e.warmupMs??r;t>0&&await new Promise(e=>setTimeout(e,t));let i=document.createElement(`canvas`);i.width=a,i.height=o;let s=i.getContext(`2d`);if(!s)throw Error(`Failed to get canvas context`);s.drawImage(n,0,0,a,o);let c=await new Promise((t,n)=>{i.toBlob(e=>e?t(e):n(Error(`Failed to encode photo`)),e.mimeType,e.quality)});return{bytes:await c.arrayBuffer(),mimeType:c.type||e.mimeType,width:a,height:o}}let s=Math.max(100,Math.min(e.durationMs??5e3,6e4)),c=typeof MediaRecorder<`u`&&MediaRecorder.isTypeSupported(e.mimeType)?e.mimeType:`video/webm`,l=new MediaRecorder(i,{mimeType:c}),u=[];l.ondataavailable=e=>{e.data&&e.data.size>0&&u.push(e.data)};let d=new Promise(e=>{l.onstop=()=>e()});l.start(),await new Promise(e=>setTimeout(e,s)),l.stop(),await d;let f=new Blob(u,{type:c});return{bytes:await f.arrayBuffer(),mimeType:f.type||c,width:a,height:o,durationMs:s}}finally{i.getTracks().forEach(e=>e.stop())}}async function a(e,t){if(e===void 0||e===``)return;if(!/^\d+$/.test(e))return e;if(!navigator.mediaDevices?.enumerateDevices)return;let n=parseInt(e,10);return(await navigator.mediaDevices.enumerateDevices()).filter(e=>e.kind===t)[n]?.deviceId}async function o(e){let t=t=>{if(!e.wantVideo)return!1;let n={};return e.videoDeviceId&&(n.deviceId={exact:e.videoDeviceId}),e.width&&(n.width=t===`exact`?{exact:e.width}:{ideal:e.width}),e.height&&(n.height=t===`exact`?{exact:e.height}:{ideal:e.height}),e.frameRate&&(n.frameRate=t===`exact`?{exact:e.frameRate}:{ideal:e.frameRate}),Object.keys(n).length>0?n:!0},n=()=>e.wantAudio?e.audioDeviceId?{deviceId:{exact:e.audioDeviceId}}:!0:!1;try{return await navigator.mediaDevices.getUserMedia({video:t(e.exact?`exact`:`ideal`),audio:n()})}catch(r){let i=r?.name;if(!e.exact||i!==`OverconstrainedError`&&i!==`NotReadableError`)throw r;return console.warn(`panel-rpc:capture-camera: exact ${e.width??`?`}x${e.height??`?`}@${e.frameRate??`?`} unmet, falling back to ideal`),await navigator.mediaDevices.getUserMedia({video:t(`ideal`),audio:n()})}}function s(e){return new Promise(t=>{let n=window.open(e,`_blank`,`width=500,height=700,popup=yes`),r=!1,i=null,a=()=>{r||(r=!0,window.removeEventListener(`message`,o),clearTimeout(s),i&&clearInterval(i))},o=e=>{if(e.data?.type!==`oauth-callback`||e.origin!==window.location.origin||n&&e.source!==n)return;if(a(),e.data.error){console.error(`[panel-rpc:oauth-popup] OAuth error:`,e.data.error),t(null);return}let r=e.data.redirectUrl;typeof r!=`string`&&r!=null||t(r??null)};window.addEventListener(`message`,o),i=setInterval(async()=>{if(!r)try{let e=await fetch(`/api/oauth-result`);if(e.status===204||!e.ok)return;let n=await e.json();if(r)return;if(a(),n.error){console.error(`[panel-rpc:oauth-popup] Server relay OAuth error:`,n.error),t(null);return}t(n.redirectUrl??null)}catch(e){console.warn(`[panel-rpc:oauth-popup] Poll failed:`,e instanceof Error?e.message:String(e))}},1e3);let s=setTimeout(()=>{a();try{n?.close()}catch{}t(null)},12e4)})}function c(e){return{name:e.name,lang:e.lang,default:e.default}}async function l(e,t){if(!navigator.mediaDevices?.getDisplayMedia)throw Error(`screen capture is not supported in this browser`);let n=await navigator.mediaDevices.getDisplayMedia({video:!0,audio:!1});try{let r=document.createElement(`video`);r.srcObject=n,r.muted=!0,r.playsInline=!0,await new Promise((e,t)=>{r.onloadedmetadata=()=>r.play().then(()=>e()).catch(t),r.onerror=()=>t(Error(`Failed to load video stream`))}),await new Promise(e=>setTimeout(e,100));let i=r.videoWidth,a=r.videoHeight,o=document.createElement(`canvas`);o.width=i,o.height=a;let s=o.getContext(`2d`);if(!s)throw Error(`Failed to get canvas context`);return s.drawImage(r,0,0,i,a),await new Promise((n,r)=>{o.toBlob(e=>e?n(e):r(Error(`Failed to create image blob`)),e,t)})}finally{n.getTracks().forEach(e=>e.stop())}}async function u(e){let t=URL.createObjectURL(e);try{let e=new Image;return await new Promise((n,r)=>{e.onload=()=>n(),e.onerror=()=>r(Error(`Failed to decode capture`)),e.src=t}),{width:e.naturalWidth,height:e.naturalHeight}}finally{URL.revokeObjectURL(t)}}async function d(e){let t=URL.createObjectURL(e);try{let e=new Image;await new Promise((n,r)=>{e.onload=()=>n(),e.onerror=()=>r(Error(`Failed to load image for clipboard conversion`)),e.src=t});let n=document.createElement(`canvas`);n.width=e.naturalWidth,n.height=e.naturalHeight;let r=n.getContext(`2d`);if(!r)throw Error(`Failed to get canvas context`);return r.drawImage(e,0,0),await new Promise((e,t)=>{n.toBlob(n=>n?e(n):t(Error(`PNG re-encode failed`)),`image/png`)})}finally{URL.revokeObjectURL(t)}}async function f(e=5*6e4){typeof document>`u`||typeof document.hasFocus==`function`&&(document.hasFocus()||await new Promise((t,n)=>{let r=()=>{window.removeEventListener(`focus`,i),document.removeEventListener(`visibilitychange`,a),clearTimeout(o)},i=()=>{document.hasFocus()&&(r(),t())},a=()=>{document.visibilityState===`visible`&&document.hasFocus()&&(r(),t())},o=setTimeout(()=>{r(),n(Error(`timed out waiting for window focus`))},e);window.addEventListener(`focus`,i),document.addEventListener(`visibilitychange`,a)}))}export{n as createStandalonePanelRpcHandlers};
@@ -1 +1 @@
1
- import{C as e,S as t,_ as n,nt as r,p as i,v as a,w as o}from"./kernel-worker-dg2bRx7X.js";import{discoverAuth as s,refreshAccessToken as c,runAuthFlow as l}from"./oauth-CJxNn7hC.js";import{n as u}from"./store-DLeVoNF3.js";const d=r(`mcp-provider`);function f(){return typeof globalThis<`u`&&globalThis.indexedDB!==void 0}function p(e){return`mcp:${e}`}const m=new Map,h=new Set;async function g(){let e=typeof chrome<`u`?chrome:void 0;if(e?.runtime?.id)return e.identity?.getRedirectURL?.(`mcp-callback`)??`https://${e.runtime.id}.chromiumapp.org/mcp-callback`;let{getOAuthPageOrigin:t}=await import(`./oauth-service-BAnfipgD.js`),{origin:n}=await t();return`${n}/auth/callback`}async function _(e){if(e)return e;let{createProxiedFetch:t}=await import(`./kernel-worker-dg2bRx7X.js`),n=t();return async(e,t)=>{let r=await n(e,{method:t?.method,headers:t?.headers,body:t?.body}),i=new TextDecoder().decode(r.body);return{ok:r.status>=200&&r.status<300,status:r.status,statusText:r.statusText,text:async()=>i,json:async()=>JSON.parse(i),headers:{get:e=>r.headers[e.toLowerCase()]??null}}}}async function v(e){let t=m.get(p(e.name));if(t)return t;let n=await _(e.fetchImpl),r=await s(e.serverUrl,void 0,n);return m.set(p(e.name),r),r}function y(e){let t=p(e.name),r=(()=>{try{return new URL(e.serverUrl).host}catch{return``}})();return{id:t,name:`MCP: ${e.name}`,description:`MCP server at ${e.serverUrl}`,requiresApiKey:!1,requiresBaseUrl:!1,isOAuth:!0,oauthTokenDomains:r?[r]:[],getModelIds:()=>[],onOAuthLogin:async(n,r)=>{let i=e.launcher??n,o=await _(e.fetchImpl),s=await l({asMetadata:await v(e),clientId:e.auth.clientId,scope:e.auth.scope,redirectUri:await g(),launcher:i,fetchImpl:o});await a({providerId:t,accessToken:s.accessToken,refreshToken:s.refreshToken,tokenExpiresAt:s.expiresAt}),r()},onSilentRenew:async()=>{if(!n(t))return null;let r=i().find(e=>e.providerId===t)?.refreshToken;if(!r)return d.info(`No refresh token for MCP provider, skipping silent renewal`,{id:t}),null;try{let n=await v(e),i=n.grantTypes??[];if(i.length>0&&!i.includes(`refresh_token`))return d.info(`AS does not advertise refresh_token grant; skipping silent renewal`,{id:t}),null;let o=await _(e.fetchImpl),s=await c({tokenEndpoint:n.tokenEndpoint,clientId:e.auth.clientId,refreshToken:r,scope:e.auth.scope,fetchImpl:o});return await a({providerId:t,accessToken:s.accessToken,refreshToken:s.refreshToken??r,tokenExpiresAt:s.expiresAt}),s.accessToken}catch(e){return d.warn(`MCP silent renewal failed`,{id:t,error:e instanceof Error?e.message:String(e)}),null}}}}function b(t){let n=p(t.name);h.has(n)||(e(y(t)),h.add(n),d.debug(`Registered MCP provider`,{id:n}))}async function x(e){let n=p(e);if(h.has(n)&&t(n))return!0;if(!f())return!1;let r=await u(e);return r?(b({name:e,serverUrl:r.serverUrl,auth:r.auth}),!0):!1}async function S(){if(!f())return[];let{readMcpAuthEntries:e}=await import(`./provider-store-access-biaB--zG.js`),t=await e(),n=[];for(let e of t)b({name:e.name,serverUrl:e.serverUrl,auth:e.auth}),n.push(p(e.name));return n}function C(e){let t=p(e);return h.delete(t),m.delete(t),o(t)}export{S as ensureAllMcpProvidersRegistered,x as ensureMcpProviderRegistered,b as registerMcpProvider,C as removeMcpProvider};
1
+ import{C as e,S as t,_ as n,nt as r,p as i,v as a,w as o}from"./kernel-worker-7oVJDvYj.js";import{discoverAuth as s,refreshAccessToken as c,runAuthFlow as l}from"./oauth-D12YL9GU.js";import{n as u}from"./store-D-IKH6-w.js";const d=r(`mcp-provider`);function f(){return typeof globalThis<`u`&&globalThis.indexedDB!==void 0}function p(e){return`mcp:${e}`}const m=new Map,h=new Set;async function g(){let e=typeof chrome<`u`?chrome:void 0;if(e?.runtime?.id)return e.identity?.getRedirectURL?.(`mcp-callback`)??`https://${e.runtime.id}.chromiumapp.org/mcp-callback`;let{getOAuthPageOrigin:t}=await import(`./oauth-service-Copu_4SG.js`),{origin:n}=await t();return`${n}/auth/callback`}async function _(e){if(e)return e;let{createProxiedFetch:t}=await import(`./kernel-worker-7oVJDvYj.js`),n=t();return async(e,t)=>{let r=await n(e,{method:t?.method,headers:t?.headers,body:t?.body}),i=new TextDecoder().decode(r.body);return{ok:r.status>=200&&r.status<300,status:r.status,statusText:r.statusText,text:async()=>i,json:async()=>JSON.parse(i),headers:{get:e=>r.headers[e.toLowerCase()]??null}}}}async function v(e){let t=m.get(p(e.name));if(t)return t;let n=await _(e.fetchImpl),r=await s(e.serverUrl,void 0,n);return m.set(p(e.name),r),r}function y(e){let t=p(e.name),r=(()=>{try{return new URL(e.serverUrl).host}catch{return``}})();return{id:t,name:`MCP: ${e.name}`,description:`MCP server at ${e.serverUrl}`,requiresApiKey:!1,requiresBaseUrl:!1,isOAuth:!0,oauthTokenDomains:r?[r]:[],getModelIds:()=>[],onOAuthLogin:async(n,r)=>{let i=e.launcher??n,o=await _(e.fetchImpl),s=await l({asMetadata:await v(e),clientId:e.auth.clientId,scope:e.auth.scope,redirectUri:await g(),launcher:i,fetchImpl:o});await a({providerId:t,accessToken:s.accessToken,refreshToken:s.refreshToken,tokenExpiresAt:s.expiresAt}),r()},onSilentRenew:async()=>{if(!n(t))return null;let r=i().find(e=>e.providerId===t)?.refreshToken;if(!r)return d.info(`No refresh token for MCP provider, skipping silent renewal`,{id:t}),null;try{let n=await v(e),i=n.grantTypes??[];if(i.length>0&&!i.includes(`refresh_token`))return d.info(`AS does not advertise refresh_token grant; skipping silent renewal`,{id:t}),null;let o=await _(e.fetchImpl),s=await c({tokenEndpoint:n.tokenEndpoint,clientId:e.auth.clientId,refreshToken:r,scope:e.auth.scope,fetchImpl:o});return await a({providerId:t,accessToken:s.accessToken,refreshToken:s.refreshToken??r,tokenExpiresAt:s.expiresAt}),s.accessToken}catch(e){return d.warn(`MCP silent renewal failed`,{id:t,error:e instanceof Error?e.message:String(e)}),null}}}}function b(t){let n=p(t.name);h.has(n)||(e(y(t)),h.add(n),d.debug(`Registered MCP provider`,{id:n}))}async function x(e){let n=p(e);if(h.has(n)&&t(n))return!0;if(!f())return!1;let r=await u(e);return r?(b({name:e,serverUrl:r.serverUrl,auth:r.auth}),!0):!1}async function S(){if(!f())return[];let{readMcpAuthEntries:e}=await import(`./provider-store-access-BjvfvyfX.js`),t=await e(),n=[];for(let e of t)b({name:e.name,serverUrl:e.serverUrl,auth:e.auth}),n.push(p(e.name));return n}function C(e){let t=p(e);return h.delete(t),m.delete(t),o(t)}export{S as ensureAllMcpProvidersRegistered,x as ensureMcpProviderRegistered,b as registerMcpProvider,C as removeMcpProvider};
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-CCGqFzR9.js","assets/index-CvlDeETm.css","assets/oauth-service-BX55wTV9.js","assets/proxied-fetch-C6dm2Ugc.js"])))=>i.map(i=>d[i]);
2
- import{S as e,X as t,Y as n,h as r,i,l as a,m as o}from"./index-CCGqFzR9.js";import{t as s}from"./global-db-B97_fwjD.js";var c=t(`mcp-store`),l=`/workspace/.mcp/servers.json`,u=1,d=null,f=null;async function p(){return d||=await n(()=>import(`./index-CCGqFzR9.js`),__vite__mapDeps([0,1])),d}async function m(e){if(e)return e;if(f&&f.dbName===`slicc-fs-global`)return f.instance;let{VirtualFS:t}=await p(),n=await t.create({dbName:s});return f={instance:n,dbName:s},n}function h(){return{version:u,servers:{}}}function g(e){if(!e||typeof e!=`object`)return h();let t=e,n=typeof t.version==`number`?t.version:u,r={};if(t.servers&&typeof t.servers==`object`)for(let[e,n]of Object.entries(t.servers)){if(!n||typeof n!=`object`)continue;let t=n;typeof t.url==`string`&&(r[e]=t)}return{version:n,servers:r}}async function _(e){try{let t=await(await m(e)).readFile(l,{encoding:`utf-8`});try{return g(JSON.parse(t))}catch(e){return c.warn(`servers.json is not valid JSON; treating as empty`,{error:e instanceof Error?e.message:String(e)}),h()}}catch(e){return e instanceof i&&e.code===`ENOENT`||c.warn(`Failed to read servers.json`,{error:e instanceof Error?e.message:String(e)}),h()}}async function v(e){return(await _(e)).servers}async function y(){let e=await v(),t=[];for(let[n,r]of Object.entries(e))!r?.url||!r.auth?.clientId||t.push({name:n,serverUrl:r.url,auth:r.auth});return t}var b=t(`mcp-oauth`);async function x(e,t,n){let r=new URL(e).origin,i=t??`${r}/.well-known/oauth-protected-resource`,a=null,o=null;b.debug(`Fetching PRM`,{prmUrl:i});try{let e=await n(i,{headers:{Accept:`application/json`}});if(!e.ok)o=`${e.status} ${e.statusText}`;else{let t=await e.json();!t.authorization_servers||t.authorization_servers.length===0?o=`lists no authorization_servers`:a=t}}catch(e){o=e instanceof Error?e.message:String(e)}let s,c,l;a&&a.authorization_servers&&a.authorization_servers.length>0?(s=a.authorization_servers[0].replace(/\/+$/,``),c=`${s}/.well-known/oauth-authorization-server`,l=`prm`,b.debug(`Discovery via PRM`,{prmUrl:i,asmUrl:c})):(s=r,c=`${r}/.well-known/oauth-authorization-server`,l=`asm-origin-fallback`,b.debug(`PRM unavailable; falling back to ASM at server origin`,{prmUrl:i,prmReason:o,asmUrl:c}));let u=null,d=null;b.debug(`Fetching ASM`,{asmUrl:c});try{let e=await n(c,{headers:{Accept:`application/json`}});e.ok?u=await e.json():d=`${e.status} ${e.statusText}`}catch(e){d=e instanceof Error?e.message:String(e)}if(!u)throw Error(l===`asm-origin-fallback`?`MCP OAuth discovery failed. PRM (${i}): ${o}. ASM fallback (${c}): ${d}.`:`ASM fetch failed: ${d} (${c})`);if(!u.authorization_endpoint||!u.token_endpoint)throw Error(l===`asm-origin-fallback`?`MCP OAuth discovery failed. PRM (${i}): ${o}. ASM fallback (${c}) is missing required endpoints (authorization_endpoint, token_endpoint).`:`ASM at ${c} is missing required endpoints`);return{issuer:u.issuer||s,authorizationEndpoint:u.authorization_endpoint,tokenEndpoint:u.token_endpoint,registrationEndpoint:u.registration_endpoint,supportedScopes:u.scopes_supported??a?.scopes_supported,codeChallengeMethods:u.code_challenge_methods_supported,grantTypes:u.grant_types_supported,discoveryPath:l}}function S(e){return!e||e.length===0||e.includes(`S256`)?`S256`:e.includes(`plain`)?`plain`:`S256`}function C(e){let t=``;for(let n of e)t+=String.fromCharCode(n);return btoa(t).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/,``)}async function w(e){let t=new Uint8Array(32);crypto.getRandomValues(t);let n=C(t);if(e===`plain`)return{codeVerifier:n,codeChallenge:n,method:e};let r=await crypto.subtle.digest(`SHA-256`,new TextEncoder().encode(n));return{codeVerifier:n,codeChallenge:C(new Uint8Array(r)),method:e}}function T(e){try{let t=new URL(e);return{code:t.searchParams.get(`code`),state:t.searchParams.get(`state`)}}catch{return{code:null,state:null}}}async function E(e){let t=await w(S(e.asMetadata.codeChallengeMethods)),n=C(crypto.getRandomValues(new Uint8Array(16))),r=new URLSearchParams({response_type:`code`,client_id:e.clientId,redirect_uri:e.redirectUri,code_challenge:t.codeChallenge,code_challenge_method:t.method,state:n});e.scope&&r.set(`scope`,e.scope);let i=`${e.asMetadata.authorizationEndpoint}?${r.toString()}`,a=await e.launcher(i);if(!a)throw Error(`MCP OAuth flow cancelled or timed out`);let{code:o,state:s}=T(a);if(!o)throw Error("MCP OAuth redirect missing `code` parameter");if(s!==n)throw Error(`MCP OAuth state mismatch — possible CSRF`);return O({tokenEndpoint:e.asMetadata.tokenEndpoint,clientId:e.clientId,code:o,codeVerifier:t.codeVerifier,redirectUri:e.redirectUri,fetchImpl:e.fetchImpl})}function D(e){if(e.error||!e.access_token)throw Error(`Token endpoint error: ${e.error??`no_access_token`}${e.error_description?` — ${e.error_description}`:``}`);return{accessToken:e.access_token,refreshToken:e.refresh_token,expiresAt:e.expires_in?Date.now()+e.expires_in*1e3:void 0,scope:e.scope,tokenType:e.token_type}}async function O(e){let t=new URLSearchParams({grant_type:`authorization_code`,code:e.code,redirect_uri:e.redirectUri,client_id:e.clientId,code_verifier:e.codeVerifier}).toString(),n=await e.fetchImpl(e.tokenEndpoint,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`,Accept:`application/json`},body:t}),r=await n.json();if(!n.ok&&!r.access_token)throw Error(`Token exchange failed: ${n.status} ${n.statusText}${r.error?` (${r.error})`:``}`);return D(r)}async function k(e){let t=new URLSearchParams({grant_type:`refresh_token`,refresh_token:e.refreshToken,client_id:e.clientId});e.scope&&t.set(`scope`,e.scope);let n=await e.fetchImpl(e.tokenEndpoint,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`,Accept:`application/json`},body:t.toString()}),r=await n.json();if(!n.ok&&!r.access_token)throw Error(`Token refresh failed: ${n.status} ${n.statusText}${r.error?` (${r.error})`:``}`);return D(r)}var A=t(`mcp-provider`),j=`mcp:`;function M(){return typeof globalThis<`u`&&globalThis.indexedDB!==void 0}function N(e){return`${j}${e}`}var P=new Map,F=new Set;async function I(){let e=typeof chrome<`u`?chrome:void 0;if(e?.runtime?.id)return e.identity?.getRedirectURL?.(`mcp-callback`)??`https://${e.runtime.id}.chromiumapp.org/mcp-callback`;let{getOAuthPageOrigin:t}=await n(async()=>{let{getOAuthPageOrigin:e}=await import(`./oauth-service-BX55wTV9.js`);return{getOAuthPageOrigin:e}},__vite__mapDeps([2,0,1])),{origin:r}=await t();return`${r}/auth/callback`}async function L(e){if(e)return e;let{createProxiedFetch:t}=await n(async()=>{let{createProxiedFetch:e}=await import(`./proxied-fetch-C6dm2Ugc.js`);return{createProxiedFetch:e}},__vite__mapDeps([3,0,1])),r=t();return async(e,t)=>{let n=await r(e,{method:t?.method,headers:t?.headers,body:t?.body}),i=new TextDecoder().decode(n.body);return{ok:n.status>=200&&n.status<300,status:n.status,statusText:n.statusText,text:async()=>i,json:async()=>JSON.parse(i),headers:{get:e=>n.headers[e.toLowerCase()]??null}}}}async function R(e){let t=P.get(N(e.name));if(t)return t;let n=await L(e.fetchImpl),r=await x(e.serverUrl,void 0,n);return P.set(N(e.name),r),r}function z(e){let t=N(e.name),n=(()=>{try{return new URL(e.serverUrl).host}catch{return``}})();return{id:t,name:`MCP: ${e.name}`,description:`MCP server at ${e.serverUrl}`,requiresApiKey:!1,requiresBaseUrl:!1,isOAuth:!0,oauthTokenDomains:n?[n]:[],getModelIds:()=>[],onOAuthLogin:async(n,i)=>{let a=e.launcher??n,o=await L(e.fetchImpl),s=await E({asMetadata:await R(e),clientId:e.auth.clientId,scope:e.auth.scope,redirectUri:await I(),launcher:a,fetchImpl:o});await r({providerId:t,accessToken:s.accessToken,refreshToken:s.refreshToken,tokenExpiresAt:s.expiresAt}),i()},onSilentRenew:async()=>{if(!o(t))return null;let n=a().find(e=>e.providerId===t)?.refreshToken;if(!n)return A.info(`No refresh token for MCP provider, skipping silent renewal`,{id:t}),null;try{let i=await R(e),a=i.grantTypes??[];if(a.length>0&&!a.includes(`refresh_token`))return A.info(`AS does not advertise refresh_token grant; skipping silent renewal`,{id:t}),null;let o=await L(e.fetchImpl),s=await k({tokenEndpoint:i.tokenEndpoint,clientId:e.auth.clientId,refreshToken:n,scope:e.auth.scope,fetchImpl:o});return await r({providerId:t,accessToken:s.accessToken,refreshToken:s.refreshToken??n,tokenExpiresAt:s.expiresAt}),s.accessToken}catch(e){return A.warn(`MCP silent renewal failed`,{id:t,error:e instanceof Error?e.message:String(e)}),null}}}}function B(t){let n=N(t.name);F.has(n)||(e(z(t)),F.add(n),A.debug(`Registered MCP provider`,{id:n}))}async function V(){if(!M())return[];let{readMcpAuthEntries:e}=await n(async()=>{let{readMcpAuthEntries:e}=await import(`./provider-store-access-H9Lu5HRL.js`);return{readMcpAuthEntries:e}},[]),t=await e(),r=[];for(let e of t)B({name:e.name,serverUrl:e.serverUrl,auth:e.auth}),r.push(N(e.name));return r}export{V as ensureAllMcpProvidersRegistered,y as t};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-BdDYVKjf.js","assets/index-CvlDeETm.css","assets/oauth-service-DJF7cZo7.js","assets/proxied-fetch-Zr3psZ6-.js"])))=>i.map(i=>d[i]);
2
+ import{S as e,X as t,Y as n,h as r,i,l as a,m as o}from"./index-BdDYVKjf.js";import{t as s}from"./global-db-CMspJ2t8.js";var c=t(`mcp-store`),l=`/workspace/.mcp/servers.json`,u=1,d=null,f=null;async function p(){return d||=await n(()=>import(`./index-BdDYVKjf.js`),__vite__mapDeps([0,1])),d}async function m(e){if(e)return e;if(f&&f.dbName===`slicc-fs-global`)return f.instance;let{VirtualFS:t}=await p(),n=await t.create({dbName:s});return f={instance:n,dbName:s},n}function h(){return{version:u,servers:{}}}function g(e){if(!e||typeof e!=`object`)return h();let t=e,n=typeof t.version==`number`?t.version:u,r={};if(t.servers&&typeof t.servers==`object`)for(let[e,n]of Object.entries(t.servers)){if(!n||typeof n!=`object`)continue;let t=n;typeof t.url==`string`&&(r[e]=t)}return{version:n,servers:r}}async function _(e){try{let t=await(await m(e)).readFile(l,{encoding:`utf-8`});try{return g(JSON.parse(t))}catch(e){return c.warn(`servers.json is not valid JSON; treating as empty`,{error:e instanceof Error?e.message:String(e)}),h()}}catch(e){return e instanceof i&&e.code===`ENOENT`||c.warn(`Failed to read servers.json`,{error:e instanceof Error?e.message:String(e)}),h()}}async function v(e){return(await _(e)).servers}async function y(){let e=await v(),t=[];for(let[n,r]of Object.entries(e))!r?.url||!r.auth?.clientId||t.push({name:n,serverUrl:r.url,auth:r.auth});return t}var b=t(`mcp-oauth`);async function x(e,t,n){let r=new URL(e).origin,i=t??`${r}/.well-known/oauth-protected-resource`,a=null,o=null;b.debug(`Fetching PRM`,{prmUrl:i});try{let e=await n(i,{headers:{Accept:`application/json`}});if(!e.ok)o=`${e.status} ${e.statusText}`;else{let t=await e.json();!t.authorization_servers||t.authorization_servers.length===0?o=`lists no authorization_servers`:a=t}}catch(e){o=e instanceof Error?e.message:String(e)}let s,c,l;a&&a.authorization_servers&&a.authorization_servers.length>0?(s=a.authorization_servers[0].replace(/\/+$/,``),c=`${s}/.well-known/oauth-authorization-server`,l=`prm`,b.debug(`Discovery via PRM`,{prmUrl:i,asmUrl:c})):(s=r,c=`${r}/.well-known/oauth-authorization-server`,l=`asm-origin-fallback`,b.debug(`PRM unavailable; falling back to ASM at server origin`,{prmUrl:i,prmReason:o,asmUrl:c}));let u=null,d=null;b.debug(`Fetching ASM`,{asmUrl:c});try{let e=await n(c,{headers:{Accept:`application/json`}});e.ok?u=await e.json():d=`${e.status} ${e.statusText}`}catch(e){d=e instanceof Error?e.message:String(e)}if(!u)throw Error(l===`asm-origin-fallback`?`MCP OAuth discovery failed. PRM (${i}): ${o}. ASM fallback (${c}): ${d}.`:`ASM fetch failed: ${d} (${c})`);if(!u.authorization_endpoint||!u.token_endpoint)throw Error(l===`asm-origin-fallback`?`MCP OAuth discovery failed. PRM (${i}): ${o}. ASM fallback (${c}) is missing required endpoints (authorization_endpoint, token_endpoint).`:`ASM at ${c} is missing required endpoints`);return{issuer:u.issuer||s,authorizationEndpoint:u.authorization_endpoint,tokenEndpoint:u.token_endpoint,registrationEndpoint:u.registration_endpoint,supportedScopes:u.scopes_supported??a?.scopes_supported,codeChallengeMethods:u.code_challenge_methods_supported,grantTypes:u.grant_types_supported,discoveryPath:l}}function S(e){return!e||e.length===0||e.includes(`S256`)?`S256`:e.includes(`plain`)?`plain`:`S256`}function C(e){let t=``;for(let n of e)t+=String.fromCharCode(n);return btoa(t).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/,``)}async function w(e){let t=new Uint8Array(32);crypto.getRandomValues(t);let n=C(t);if(e===`plain`)return{codeVerifier:n,codeChallenge:n,method:e};let r=await crypto.subtle.digest(`SHA-256`,new TextEncoder().encode(n));return{codeVerifier:n,codeChallenge:C(new Uint8Array(r)),method:e}}function T(e){try{let t=new URL(e);return{code:t.searchParams.get(`code`),state:t.searchParams.get(`state`)}}catch{return{code:null,state:null}}}async function E(e){let t=await w(S(e.asMetadata.codeChallengeMethods)),n=C(crypto.getRandomValues(new Uint8Array(16))),r=new URLSearchParams({response_type:`code`,client_id:e.clientId,redirect_uri:e.redirectUri,code_challenge:t.codeChallenge,code_challenge_method:t.method,state:n});e.scope&&r.set(`scope`,e.scope);let i=`${e.asMetadata.authorizationEndpoint}?${r.toString()}`,a=await e.launcher(i);if(!a)throw Error(`MCP OAuth flow cancelled or timed out`);let{code:o,state:s}=T(a);if(!o)throw Error("MCP OAuth redirect missing `code` parameter");if(s!==n)throw Error(`MCP OAuth state mismatch — possible CSRF`);return O({tokenEndpoint:e.asMetadata.tokenEndpoint,clientId:e.clientId,code:o,codeVerifier:t.codeVerifier,redirectUri:e.redirectUri,fetchImpl:e.fetchImpl})}function D(e){if(e.error||!e.access_token)throw Error(`Token endpoint error: ${e.error??`no_access_token`}${e.error_description?` — ${e.error_description}`:``}`);return{accessToken:e.access_token,refreshToken:e.refresh_token,expiresAt:e.expires_in?Date.now()+e.expires_in*1e3:void 0,scope:e.scope,tokenType:e.token_type}}async function O(e){let t=new URLSearchParams({grant_type:`authorization_code`,code:e.code,redirect_uri:e.redirectUri,client_id:e.clientId,code_verifier:e.codeVerifier}).toString(),n=await e.fetchImpl(e.tokenEndpoint,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`,Accept:`application/json`},body:t}),r=await n.json();if(!n.ok&&!r.access_token)throw Error(`Token exchange failed: ${n.status} ${n.statusText}${r.error?` (${r.error})`:``}`);return D(r)}async function k(e){let t=new URLSearchParams({grant_type:`refresh_token`,refresh_token:e.refreshToken,client_id:e.clientId});e.scope&&t.set(`scope`,e.scope);let n=await e.fetchImpl(e.tokenEndpoint,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`,Accept:`application/json`},body:t.toString()}),r=await n.json();if(!n.ok&&!r.access_token)throw Error(`Token refresh failed: ${n.status} ${n.statusText}${r.error?` (${r.error})`:``}`);return D(r)}var A=t(`mcp-provider`),j=`mcp:`;function M(){return typeof globalThis<`u`&&globalThis.indexedDB!==void 0}function N(e){return`${j}${e}`}var P=new Map,F=new Set;async function I(){let e=typeof chrome<`u`?chrome:void 0;if(e?.runtime?.id)return e.identity?.getRedirectURL?.(`mcp-callback`)??`https://${e.runtime.id}.chromiumapp.org/mcp-callback`;let{getOAuthPageOrigin:t}=await n(async()=>{let{getOAuthPageOrigin:e}=await import(`./oauth-service-DJF7cZo7.js`);return{getOAuthPageOrigin:e}},__vite__mapDeps([2,0,1])),{origin:r}=await t();return`${r}/auth/callback`}async function L(e){if(e)return e;let{createProxiedFetch:t}=await n(async()=>{let{createProxiedFetch:e}=await import(`./proxied-fetch-Zr3psZ6-.js`);return{createProxiedFetch:e}},__vite__mapDeps([3,0,1])),r=t();return async(e,t)=>{let n=await r(e,{method:t?.method,headers:t?.headers,body:t?.body}),i=new TextDecoder().decode(n.body);return{ok:n.status>=200&&n.status<300,status:n.status,statusText:n.statusText,text:async()=>i,json:async()=>JSON.parse(i),headers:{get:e=>n.headers[e.toLowerCase()]??null}}}}async function R(e){let t=P.get(N(e.name));if(t)return t;let n=await L(e.fetchImpl),r=await x(e.serverUrl,void 0,n);return P.set(N(e.name),r),r}function z(e){let t=N(e.name),n=(()=>{try{return new URL(e.serverUrl).host}catch{return``}})();return{id:t,name:`MCP: ${e.name}`,description:`MCP server at ${e.serverUrl}`,requiresApiKey:!1,requiresBaseUrl:!1,isOAuth:!0,oauthTokenDomains:n?[n]:[],getModelIds:()=>[],onOAuthLogin:async(n,i)=>{let a=e.launcher??n,o=await L(e.fetchImpl),s=await E({asMetadata:await R(e),clientId:e.auth.clientId,scope:e.auth.scope,redirectUri:await I(),launcher:a,fetchImpl:o});await r({providerId:t,accessToken:s.accessToken,refreshToken:s.refreshToken,tokenExpiresAt:s.expiresAt}),i()},onSilentRenew:async()=>{if(!o(t))return null;let n=a().find(e=>e.providerId===t)?.refreshToken;if(!n)return A.info(`No refresh token for MCP provider, skipping silent renewal`,{id:t}),null;try{let i=await R(e),a=i.grantTypes??[];if(a.length>0&&!a.includes(`refresh_token`))return A.info(`AS does not advertise refresh_token grant; skipping silent renewal`,{id:t}),null;let o=await L(e.fetchImpl),s=await k({tokenEndpoint:i.tokenEndpoint,clientId:e.auth.clientId,refreshToken:n,scope:e.auth.scope,fetchImpl:o});return await r({providerId:t,accessToken:s.accessToken,refreshToken:s.refreshToken??n,tokenExpiresAt:s.expiresAt}),s.accessToken}catch(e){return A.warn(`MCP silent renewal failed`,{id:t,error:e instanceof Error?e.message:String(e)}),null}}}}function B(t){let n=N(t.name);F.has(n)||(e(z(t)),F.add(n),A.debug(`Registered MCP provider`,{id:n}))}async function V(){if(!M())return[];let{readMcpAuthEntries:e}=await n(async()=>{let{readMcpAuthEntries:e}=await import(`./provider-store-access-auxlQIvP.js`);return{readMcpAuthEntries:e}},[]),t=await e(),r=[];for(let e of t)B({name:e.name,serverUrl:e.serverUrl,auth:e.auth}),r.push(N(e.name));return r}export{V as ensureAllMcpProvidersRegistered,y as t};
@@ -0,0 +1 @@
1
+ import{t as e}from"./store-D-IKH6-w.js";import"./provider-DXK8JUs0.js";export{e as readMcpAuthEntries};
@@ -0,0 +1 @@
1
+ import{t as e}from"./provider-DcrxGcMH.js";export{e as readMcpAuthEntries};
@@ -1 +1 @@
1
- import{o as e,s as t}from"./index-CCGqFzR9.js";var n=new Map,r=new Map;function i(e){let t=e.length;return t===0?`0`:`${t}:${e.charCodeAt(0)}:${t>1?e.charCodeAt(1):0}:${t>2?e.charCodeAt(2):0}:${t>3?e.charCodeAt(3):0}:${t>4?e.charCodeAt(Math.floor(t/4)):0}:${t>4?e.charCodeAt(Math.floor(t/2)):0}:${t>4?e.charCodeAt(Math.floor(3*t/4)):0}:${e.charCodeAt(t-1)}`}function a(e,t){let r=i(e);n.set(r,t),setTimeout(()=>n.delete(r),1e4)}function o(e,t){r.set(e,t),setTimeout(()=>r.delete(e),1e4)}new TextDecoder;function s(e){if(typeof e!=`string`)return e;let t=new Uint8Array(e.length);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n)&255;return t}function c(e){if(!e)return{};let t={};for(let[n,r]of Object.entries(e)){let e=n.toLowerCase();e===`cookie`?t[`X-Proxy-Cookie`]=r:e===`origin`?t[`X-Proxy-Origin`]=r:e===`referer`?t[`X-Proxy-Referer`]=r:e.startsWith(`proxy-`)?t[`X-Proxy-${n}`]=r:t[n]=r}return t}function l(e){let t={};for(let[n,r]of Object.entries(e))n.toLowerCase()===`x-proxy-set-cookie`?t[`set-cookie`]=r:t[n]=r;return t}function u(e){if(e){if(e instanceof Headers){let t={};return e.forEach((e,n)=>{t[n]=e}),t}return e}}var d=32*1024*1024;function f(e){if(!e)return!0;let t=e.toLowerCase();return t.startsWith(`text/`)||t.includes(`json`)||t.includes(`xml`)||t.includes(`javascript`)||t.includes(`ecmascript`)||t.includes(`html`)||t.includes(`css`)||t.includes(`svg`)}async function p(e,t){let n=e.headers.get(`content-type`)??``,r=await e.arrayBuffer(),i=new Uint8Array(r);if(!f(n)){let e=``;for(let t=0;t<i.length;t+=32768)e+=String.fromCharCode(...i.subarray(t,t+32768));a(e,i),t&&o(t,i)}return i}var m=u;function h(e,t){if(e){if(!f(t?.[`Content-Type`]??t?.[`content-type`]??``)){let t=s(e);return new Blob([t])}return e}}var g=c,_=l;async function v(e,t){let n=chrome.runtime.connect({name:`fetch-proxy.fetch`}),r=m(t?.headers),i=t?.method??`GET`,a=t?.body?h(t.body,r):void 0,o,s=!1;if(a!==void 0){let e=a instanceof Uint8Array?a:new Uint8Array(await new Response(a).arrayBuffer());if(e.byteLength>d)s=!0;else{let t=``;for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);o=btoa(t)}}return new Promise((t,a)=>{let c=null,l=!1,u=[];n.onMessage.addListener(r=>{let i=r;if(i.type===`response-head`)c=i;else if(i.type===`response-chunk`){let e=atob(i.dataBase64),t=new Uint8Array(e.length);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n);u.push(t)}else if(i.type===`response-end`){if(!c){l=!0,a(Error(`fetch-proxy: response-end before response-head`));return}let r=u.reduce((e,t)=>e+t.length,0),i=new Uint8Array(r),o=0;for(let e of u)i.set(e,o),o+=e.length;let s=new Headers;for(let[e,t]of Object.entries(c.headers))s.set(e,String(t));p(new Response(i,{status:c.status,statusText:c.statusText,headers:s}),e).then(n=>{t({status:c.status,statusText:c.statusText,headers:c.headers,body:n,url:e})}).catch(a),l=!0,n.disconnect()}else i.type===`response-error`&&(l=!0,a(Error(i.error)),n.disconnect())}),n.onDisconnect.addListener(()=>{l||a(Error(c?`fetch-proxy port disconnected mid-stream`:`fetch-proxy port disconnected before response`))}),n.postMessage({type:`request`,url:e,method:i,headers:r,bodyBase64:o,requestBodyTooLarge:s})})}function y(){return typeof chrome<`u`&&chrome?.runtime?.id?v:async(n,r)=>{let i=r?.method??`GET`,a={...g(m(r?.headers)),"X-Target-URL":n},o={method:i,headers:a,cache:`no-store`};r?.body&&![`GET`,`HEAD`].includes(i)&&(o.body=h(r.body,a));let s=await fetch(`/api/fetch-proxy`,o);if(e(s))throw Error(await t(s));let c=await p(s,n),l={};s.headers.forEach((e,t)=>{l[t]=e});let u=_(l);return{status:s.status,statusText:s.statusText,headers:u,body:c,url:n}}}export{y as createProxiedFetch};
1
+ import{o as e,s as t}from"./index-BdDYVKjf.js";var n=new Map,r=new Map;function i(e){let t=e.length;return t===0?`0`:`${t}:${e.charCodeAt(0)}:${t>1?e.charCodeAt(1):0}:${t>2?e.charCodeAt(2):0}:${t>3?e.charCodeAt(3):0}:${t>4?e.charCodeAt(Math.floor(t/4)):0}:${t>4?e.charCodeAt(Math.floor(t/2)):0}:${t>4?e.charCodeAt(Math.floor(3*t/4)):0}:${e.charCodeAt(t-1)}`}function a(e,t){let r=i(e);n.set(r,t),setTimeout(()=>n.delete(r),1e4)}function o(e,t){r.set(e,t),setTimeout(()=>r.delete(e),1e4)}new TextDecoder;function s(e){if(typeof e!=`string`)return e;let t=new Uint8Array(e.length);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n)&255;return t}function c(e){if(!e)return{};let t={};for(let[n,r]of Object.entries(e)){let e=n.toLowerCase();e===`cookie`?t[`X-Proxy-Cookie`]=r:e===`origin`?t[`X-Proxy-Origin`]=r:e===`referer`?t[`X-Proxy-Referer`]=r:e.startsWith(`proxy-`)?t[`X-Proxy-${n}`]=r:t[n]=r}return t}function l(e){let t={};for(let[n,r]of Object.entries(e))n.toLowerCase()===`x-proxy-set-cookie`?t[`set-cookie`]=r:t[n]=r;return t}function u(e){if(e){if(e instanceof Headers){let t={};return e.forEach((e,n)=>{t[n]=e}),t}return e}}var d=32*1024*1024;function f(e){if(!e)return!0;let t=e.toLowerCase();return t.startsWith(`text/`)||t.includes(`json`)||t.includes(`xml`)||t.includes(`javascript`)||t.includes(`ecmascript`)||t.includes(`html`)||t.includes(`css`)||t.includes(`svg`)}async function p(e,t){let n=e.headers.get(`content-type`)??``,r=await e.arrayBuffer(),i=new Uint8Array(r);if(!f(n)){let e=``;for(let t=0;t<i.length;t+=32768)e+=String.fromCharCode(...i.subarray(t,t+32768));a(e,i),t&&o(t,i)}return i}var m=u;function h(e,t){if(e){if(!f(t?.[`Content-Type`]??t?.[`content-type`]??``)){let t=s(e);return new Blob([t])}return e}}var g=c,_=l;async function v(e,t){let n=chrome.runtime.connect({name:`fetch-proxy.fetch`}),r=m(t?.headers),i=t?.method??`GET`,a=t?.body?h(t.body,r):void 0,o,s=!1;if(a!==void 0){let e=a instanceof Uint8Array?a:new Uint8Array(await new Response(a).arrayBuffer());if(e.byteLength>d)s=!0;else{let t=``;for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);o=btoa(t)}}return new Promise((t,a)=>{let c=null,l=!1,u=[];n.onMessage.addListener(r=>{let i=r;if(i.type===`response-head`)c=i;else if(i.type===`response-chunk`){let e=atob(i.dataBase64),t=new Uint8Array(e.length);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n);u.push(t)}else if(i.type===`response-end`){if(!c){l=!0,a(Error(`fetch-proxy: response-end before response-head`));return}let r=u.reduce((e,t)=>e+t.length,0),i=new Uint8Array(r),o=0;for(let e of u)i.set(e,o),o+=e.length;let s=new Headers;for(let[e,t]of Object.entries(c.headers))s.set(e,String(t));p(new Response(i,{status:c.status,statusText:c.statusText,headers:s}),e).then(n=>{t({status:c.status,statusText:c.statusText,headers:c.headers,body:n,url:e})}).catch(a),l=!0,n.disconnect()}else i.type===`response-error`&&(l=!0,a(Error(i.error)),n.disconnect())}),n.onDisconnect.addListener(()=>{l||a(Error(c?`fetch-proxy port disconnected mid-stream`:`fetch-proxy port disconnected before response`))}),n.postMessage({type:`request`,url:e,method:i,headers:r,bodyBase64:o,requestBodyTooLarge:s})})}function y(){return typeof chrome<`u`&&chrome?.runtime?.id?v:async(n,r)=>{let i=r?.method??`GET`,a={...g(m(r?.headers)),"X-Target-URL":n},o={method:i,headers:a,cache:`no-store`};r?.body&&![`GET`,`HEAD`].includes(i)&&(o.body=h(r.body,a));let s=await fetch(`/api/fetch-proxy`,o);if(e(s))throw Error(await t(s));let c=await p(s,n),l={};s.headers.forEach((e,t)=>{l[t]=e});let u=_(l);return{status:s.status,statusText:s.statusText,headers:u,body:c,url:n}}}export{y as createProxiedFetch};
@@ -1,3 +1,3 @@
1
- import{at as e,ot as t}from"./kernel-worker-dg2bRx7X.js";var n=Object.defineProperty,r=(e,t)=>n(e,`name`,{value:t,configurable:!0}),i=(t=>typeof e<`u`?e:typeof Proxy<`u`?new Proxy(t,{get:(t,n)=>(typeof e<`u`?e:t)[n]}):t)(function(t){if(typeof e<`u`)return e.apply(this,arguments);throw Error(`Dynamic require of "`+t+`" is not supported`)}),a=(()=>{for(var e=new Uint8Array(128),t=0;t<64;t++)e[t<26?t+65:t<52?t+71:t<62?t-4:t*4-205]=t;return t=>{for(var n=t.length,r=new Uint8Array((n-(t[n-1]==`=`)-(t[n-2]==`=`))*3/4|0),i=0,a=0;i<n;){var o=e[t.charCodeAt(i++)],s=e[t.charCodeAt(i++)],c=e[t.charCodeAt(i++)],l=e[t.charCodeAt(i++)];r[a++]=o<<2|s>>4,r[a++]=s<<4|c>>2,r[a++]=c<<6|l}return r}})();function o(e){return!isNaN(parseFloat(e))&&isFinite(e)}r(o,`_isNumber`);function s(e){return e.charAt(0).toUpperCase()+e.substring(1)}r(s,`_capitalize`);function c(e){return function(){return this[e]}}r(c,`_getter`);var l=[`isConstructor`,`isEval`,`isNative`,`isToplevel`],u=[`columnNumber`,`lineNumber`],d=[`fileName`,`functionName`,`source`],f=l.concat(u,d,[`args`],[`evalOrigin`]);function p(e){if(e)for(var t=0;t<f.length;t++)e[f[t]]!==void 0&&this[`set`+s(f[t])](e[f[t]])}for(r(p,`StackFrame`),p.prototype={getArgs:r(function(){return this.args},`getArgs`),setArgs:r(function(e){if(Object.prototype.toString.call(e)!==`[object Array]`)throw TypeError(`Args must be an Array`);this.args=e},`setArgs`),getEvalOrigin:r(function(){return this.evalOrigin},`getEvalOrigin`),setEvalOrigin:r(function(e){if(e instanceof p)this.evalOrigin=e;else if(e instanceof Object)this.evalOrigin=new p(e);else throw TypeError(`Eval Origin must be an Object or StackFrame`)},`setEvalOrigin`),toString:r(function(){var e=this.getFileName()||``,t=this.getLineNumber()||``,n=this.getColumnNumber()||``,r=this.getFunctionName()||``;return this.getIsEval()?e?`[eval] (`+e+`:`+t+`:`+n+`)`:`[eval]:`+t+`:`+n:r?r+` (`+e+`:`+t+`:`+n+`)`:e+`:`+t+`:`+n},`toString`)},p.fromString=r(function(e){var t=e.indexOf(`(`),n=e.lastIndexOf(`)`),r=e.substring(0,t),i=e.substring(t+1,n).split(`,`),a=e.substring(n+1);if(a.indexOf(`@`)===0)var o=/@(.+?)(?::(\d+))?(?::(\d+))?$/.exec(a,``),s=o[1],c=o[2],l=o[3];return new p({functionName:r,args:i||void 0,fileName:s,lineNumber:c||void 0,columnNumber:l||void 0})},`StackFrame$$fromString`),m=0;m<l.length;m++)p.prototype[`get`+s(l[m])]=c(l[m]),p.prototype[`set`+s(l[m])]=function(e){return function(t){this[e]=!!t}}(l[m]);var m;for(h=0;h<u.length;h++)p.prototype[`get`+s(u[h])]=c(u[h]),p.prototype[`set`+s(u[h])]=function(e){return function(t){if(!o(t))throw TypeError(e+` must be a Number`);this[e]=Number(t)}}(u[h]);var h;for(g=0;g<d.length;g++)p.prototype[`get`+s(d[g])]=c(d[g]),p.prototype[`set`+s(d[g])]=function(e){return function(t){this[e]=String(t)}}(d[g]);var g,_=p;function v(){var e=/^\s*at .*(\S+:\d+|\(native\))/m,t=/^(eval@)?(\[native code])?$/;return{parse:r(function(t){if(t.stack&&t.stack.match(e))return this.parseV8OrIE(t);if(t.stack)return this.parseFFOrSafari(t);throw Error(`Cannot parse given Error object`)},`ErrorStackParser$$parse`),extractLocation:r(function(e){if(e.indexOf(`:`)===-1)return[e];var t=/(.+?)(?::(\d+))?(?::(\d+))?$/.exec(e.replace(/[()]/g,``));return[t[1],t[2]||void 0,t[3]||void 0]},`ErrorStackParser$$extractLocation`),parseV8OrIE:r(function(t){return t.stack.split(`
1
+ import{at as e,ot as t}from"./kernel-worker-7oVJDvYj.js";var n=Object.defineProperty,r=(e,t)=>n(e,`name`,{value:t,configurable:!0}),i=(t=>typeof e<`u`?e:typeof Proxy<`u`?new Proxy(t,{get:(t,n)=>(typeof e<`u`?e:t)[n]}):t)(function(t){if(typeof e<`u`)return e.apply(this,arguments);throw Error(`Dynamic require of "`+t+`" is not supported`)}),a=(()=>{for(var e=new Uint8Array(128),t=0;t<64;t++)e[t<26?t+65:t<52?t+71:t<62?t-4:t*4-205]=t;return t=>{for(var n=t.length,r=new Uint8Array((n-(t[n-1]==`=`)-(t[n-2]==`=`))*3/4|0),i=0,a=0;i<n;){var o=e[t.charCodeAt(i++)],s=e[t.charCodeAt(i++)],c=e[t.charCodeAt(i++)],l=e[t.charCodeAt(i++)];r[a++]=o<<2|s>>4,r[a++]=s<<4|c>>2,r[a++]=c<<6|l}return r}})();function o(e){return!isNaN(parseFloat(e))&&isFinite(e)}r(o,`_isNumber`);function s(e){return e.charAt(0).toUpperCase()+e.substring(1)}r(s,`_capitalize`);function c(e){return function(){return this[e]}}r(c,`_getter`);var l=[`isConstructor`,`isEval`,`isNative`,`isToplevel`],u=[`columnNumber`,`lineNumber`],d=[`fileName`,`functionName`,`source`],f=l.concat(u,d,[`args`],[`evalOrigin`]);function p(e){if(e)for(var t=0;t<f.length;t++)e[f[t]]!==void 0&&this[`set`+s(f[t])](e[f[t]])}for(r(p,`StackFrame`),p.prototype={getArgs:r(function(){return this.args},`getArgs`),setArgs:r(function(e){if(Object.prototype.toString.call(e)!==`[object Array]`)throw TypeError(`Args must be an Array`);this.args=e},`setArgs`),getEvalOrigin:r(function(){return this.evalOrigin},`getEvalOrigin`),setEvalOrigin:r(function(e){if(e instanceof p)this.evalOrigin=e;else if(e instanceof Object)this.evalOrigin=new p(e);else throw TypeError(`Eval Origin must be an Object or StackFrame`)},`setEvalOrigin`),toString:r(function(){var e=this.getFileName()||``,t=this.getLineNumber()||``,n=this.getColumnNumber()||``,r=this.getFunctionName()||``;return this.getIsEval()?e?`[eval] (`+e+`:`+t+`:`+n+`)`:`[eval]:`+t+`:`+n:r?r+` (`+e+`:`+t+`:`+n+`)`:e+`:`+t+`:`+n},`toString`)},p.fromString=r(function(e){var t=e.indexOf(`(`),n=e.lastIndexOf(`)`),r=e.substring(0,t),i=e.substring(t+1,n).split(`,`),a=e.substring(n+1);if(a.indexOf(`@`)===0)var o=/@(.+?)(?::(\d+))?(?::(\d+))?$/.exec(a,``),s=o[1],c=o[2],l=o[3];return new p({functionName:r,args:i||void 0,fileName:s,lineNumber:c||void 0,columnNumber:l||void 0})},`StackFrame$$fromString`),m=0;m<l.length;m++)p.prototype[`get`+s(l[m])]=c(l[m]),p.prototype[`set`+s(l[m])]=function(e){return function(t){this[e]=!!t}}(l[m]);var m;for(h=0;h<u.length;h++)p.prototype[`get`+s(u[h])]=c(u[h]),p.prototype[`set`+s(u[h])]=function(e){return function(t){if(!o(t))throw TypeError(e+` must be a Number`);this[e]=Number(t)}}(u[h]);var h;for(g=0;g<d.length;g++)p.prototype[`get`+s(d[g])]=c(d[g]),p.prototype[`set`+s(d[g])]=function(e){return function(t){this[e]=String(t)}}(d[g]);var g,_=p;function v(){var e=/^\s*at .*(\S+:\d+|\(native\))/m,t=/^(eval@)?(\[native code])?$/;return{parse:r(function(t){if(t.stack&&t.stack.match(e))return this.parseV8OrIE(t);if(t.stack)return this.parseFFOrSafari(t);throw Error(`Cannot parse given Error object`)},`ErrorStackParser$$parse`),extractLocation:r(function(e){if(e.indexOf(`:`)===-1)return[e];var t=/(.+?)(?::(\d+))?(?::(\d+))?$/.exec(e.replace(/[()]/g,``));return[t[1],t[2]||void 0,t[3]||void 0]},`ErrorStackParser$$extractLocation`),parseV8OrIE:r(function(t){return t.stack.split(`
2
2
  `).filter(function(t){return!!t.match(e)},this).map(function(e){e.indexOf(`(eval `)>-1&&(e=e.replace(/eval code/g,`eval`).replace(/(\(eval at [^()]*)|(,.*$)/g,``));var t=e.replace(/^\s+/,``).replace(/\(eval code/g,`(`).replace(/^.*?\s+/,``),n=t.match(/ (\(.+\)$)/);t=n?t.replace(n[0],``):t;var r=this.extractLocation(n?n[1]:t);return new _({functionName:n&&t||void 0,fileName:[`eval`,`<anonymous>`].indexOf(r[0])>-1?void 0:r[0],lineNumber:r[1],columnNumber:r[2],source:e})},this)},`ErrorStackParser$$parseV8OrIE`),parseFFOrSafari:r(function(e){return e.stack.split(`
3
- `).filter(function(e){return!e.match(t)},this).map(function(e){if(e.indexOf(` > eval`)>-1&&(e=e.replace(/ line (\d+)(?: > eval line \d+)* > eval:\d+:\d+/g,`:$1`)),e.indexOf(`@`)===-1&&e.indexOf(`:`)===-1)return new _({functionName:e});var t=/((.*".+"[^@]*)?[^@]*)(?:@)/,n=e.match(t),r=n&&n[1]?n[1]:void 0,i=this.extractLocation(e.replace(t,``));return new _({functionName:r,fileName:i[0],lineNumber:i[1],columnNumber:i[2],source:e})},this)},`ErrorStackParser$$parseFFOrSafari`)}}r(v,`ErrorStackParser`);var ee=new v;function y(){return typeof API<`u`&&API!==globalThis.API?API.runtimeEnv:x({IN_BUN:typeof Bun<`u`,IN_DENO:typeof Deno<`u`,IN_NODE:typeof process==`object`&&typeof process.versions==`object`&&typeof process.versions.node==`string`&&!process.browser,IN_SAFARI:typeof navigator==`object`&&typeof navigator.userAgent==`string`&&navigator.userAgent.indexOf(`Chrome`)===-1&&navigator.userAgent.indexOf(`Safari`)>-1,IN_SHELL:typeof read==`function`&&typeof load==`function`})}r(y,`getGlobalRuntimeEnv`);var b=y();function x(e){let t=e.IN_NODE&&typeof module<`u`&&module.exports&&typeof i==`function`&&typeof __dirname==`string`,n=e.IN_NODE&&!t,r=!e.IN_NODE&&!e.IN_DENO&&!e.IN_BUN,a=r&&typeof window<`u`&&typeof window.document<`u`&&typeof document.createElement==`function`&&`sessionStorage`in window&&typeof globalThis.importScripts!=`function`,o=r&&typeof globalThis.WorkerGlobalScope<`u`&&typeof globalThis.self<`u`&&globalThis.self instanceof globalThis.WorkerGlobalScope;return{...e,IN_BROWSER:r,IN_BROWSER_MAIN_THREAD:a,IN_BROWSER_WEB_WORKER:o,IN_NODE_COMMONJS:t,IN_NODE_ESM:n}}r(x,`calculateDerivedFlags`);var S,C,te,ne,w;async function T(){if(!b.IN_NODE||(S=(await import(`./kernel-worker-dg2bRx7X.js`).then(e=>t(e.W(),1))).default,ne=await import(`./kernel-worker-dg2bRx7X.js`).then(e=>t(e.W(),1)),w=await import(`./kernel-worker-dg2bRx7X.js`).then(e=>t(e.W(),1)),te=(await import(`./kernel-worker-dg2bRx7X.js`).then(e=>t(e.W(),1))).default,C=await import(`./kernel-worker-dg2bRx7X.js`).then(e=>t(e.W(),1)),k=C.sep,typeof i<`u`))return;let e={fs:ne,crypto:await import(`./kernel-worker-dg2bRx7X.js`).then(e=>t(e.W(),1)),ws:await import(`./kernel-worker-dg2bRx7X.js`).then(e=>t(e.W(),1)),child_process:await import(`./kernel-worker-dg2bRx7X.js`).then(e=>t(e.W(),1))};globalThis.require=function(t){return e[t]}}r(T,`initNodeModules`);function E(e,t){return C.resolve(t||`.`,e)}r(E,`node_resolvePath`);function D(e,t){return t===void 0&&(t=location),new URL(e,t).toString()}r(D,`browser_resolvePath`);var O=b.IN_NODE?E:b.IN_SHELL?r(e=>e,`resolvePath`):D,k;b.IN_NODE||(k=`/`);function A(e,t){return e.startsWith(`file://`)&&(e=e.slice(7)),e.includes(`://`)?{response:fetch(e)}:{binary:w.readFile(e).then(e=>new Uint8Array(e.buffer,e.byteOffset,e.byteLength))}}r(A,`node_getBinaryResponse`);function j(e,t){if(e.startsWith(`file://`)&&(e=e.slice(7)),e.includes(`://`))throw Error(`Shell cannot fetch urls`);return{binary:Promise.resolve(new Uint8Array(readbuffer(e)))}}r(j,`shell_getBinaryResponse`);function M(e,t){let n=new URL(e,location);return{response:fetch(n,t?{integrity:t}:{})}}r(M,`browser_getBinaryResponse`);var N=b.IN_NODE?A:b.IN_SHELL?j:M;async function P(e,t){let{response:n,binary:r}=N(e,t);if(r)return r;let i=await n;if(!i.ok)throw Error(`Failed to load '${e}': request failed.`);return new Uint8Array(await i.arrayBuffer())}r(P,`loadBinaryFile`);var F;if(b.IN_BROWSER_MAIN_THREAD)F=r(async e=>await import(e),`loadScript`);else if(b.IN_BROWSER_WEB_WORKER)F=r(async e=>{try{globalThis.importScripts(e)}catch(t){if(t instanceof TypeError)await import(e);else throw t}},`loadScript`);else if(b.IN_NODE)F=I;else if(b.IN_SHELL)F=load;else throw Error(`Cannot determine runtime environment`);async function I(e){e.startsWith(`file://`)&&(e=e.slice(7)),e.includes(`://`)?te.runInThisContext(await(await fetch(e)).text()):await import(S.pathToFileURL(e).href)}r(I,`nodeLoadScript`);async function L(e){if(b.IN_NODE){await T();let t=await w.readFile(e,{encoding:`utf8`});return JSON.parse(t)}else if(b.IN_SHELL){let t=read(e);return JSON.parse(t)}else return await(await fetch(e)).json()}r(L,`loadLockFile`);async function R(){if(b.IN_NODE_COMMONJS)return __dirname;let e;try{throw Error()}catch(t){e=t}let n=ee.parse(e)[0].fileName;if(b.IN_NODE&&!n.startsWith(`file://`)&&(n=`file://${n}`),b.IN_NODE_ESM){let e=await import(`./kernel-worker-dg2bRx7X.js`).then(e=>t(e.W(),1));return(await import(`./kernel-worker-dg2bRx7X.js`).then(e=>t(e.W(),1))).fileURLToPath(e.dirname(n))}let r=n.lastIndexOf(k);if(r===-1)throw Error(`Could not extract indexURL path from pyodide module location. Please pass the indexURL explicitly to loadPyodide.`);return n.slice(0,r)}r(R,`calculateDirname`);function z(e){return e.substring(0,e.lastIndexOf(`/`)+1)||globalThis.location?.toString()||`.`}r(z,`calculateInstallBaseUrl`);function B(e){let t=e.FS,n=e.FS.filesystems.MEMFS,i=e.PATH,a={DIR_MODE:16895,FILE_MODE:33279,mount:r(function(e){if(!e.opts.fileSystemHandle)throw Error(`opts.fileSystemHandle is required`);return n.mount.apply(null,arguments)},`mount`),syncfs:r(async(e,t,n)=>{try{let r=a.getLocalSet(e),i=await a.getRemoteSet(e),o=t?i:r,s=t?r:i;await a.reconcile(e,o,s),n(null)}catch(e){n(e)}},`syncfs`),getLocalSet:r(e=>{let n=Object.create(null);function a(e){return e!==`.`&&e!==`..`}r(a,`isRealDir`);function o(e){return t=>i.join2(e,t)}r(o,`toAbsolute`);let s=t.readdir(e.mountpoint).filter(a).map(o(e.mountpoint));for(;s.length;){let e=s.pop(),r=t.stat(e);t.isDir(r.mode)&&s.push.apply(s,t.readdir(e).filter(a).map(o(e))),n[e]={timestamp:r.mtime,mode:r.mode}}return{type:`local`,entries:n}},`getLocalSet`),getRemoteSet:r(async e=>{let t=Object.create(null),n=await re(e.opts.fileSystemHandle);for(let[r,o]of n)r!==`.`&&(t[i.join2(e.mountpoint,r)]={timestamp:o.kind===`file`?new Date((await o.getFile()).lastModified):new Date,mode:o.kind===`file`?a.FILE_MODE:a.DIR_MODE});return{type:`remote`,entries:t,handles:n}},`getRemoteSet`),loadLocalEntry:r(e=>{let r=t.lookupPath(e,{}).node,i=t.stat(e);if(t.isDir(i.mode))return{timestamp:i.mtime,mode:i.mode};if(t.isFile(i.mode))return r.contents=n.getFileDataAsTypedArray(r),{timestamp:i.mtime,mode:i.mode,contents:r.contents};throw Error(`node type not supported`)},`loadLocalEntry`),storeLocalEntry:r((e,n)=>{if(t.isDir(n.mode))t.mkdirTree(e,n.mode);else if(t.isFile(n.mode))t.writeFile(e,n.contents,{canOwn:!0});else throw Error(`node type not supported`);t.chmod(e,n.mode),t.utime(e,n.timestamp,n.timestamp)},`storeLocalEntry`),removeLocalEntry:r(e=>{var n=t.stat(e);t.isDir(n.mode)?t.rmdir(e):t.isFile(n.mode)&&t.unlink(e)},`removeLocalEntry`),loadRemoteEntry:r(async e=>{if(e.kind===`file`){let t=await e.getFile();return{contents:new Uint8Array(await t.arrayBuffer()),mode:a.FILE_MODE,timestamp:new Date(t.lastModified)}}else{if(e.kind===`directory`)return{mode:a.DIR_MODE,timestamp:new Date};throw Error(`unknown kind: `+e.kind)}},`loadRemoteEntry`),storeRemoteEntry:r(async(e,n,r)=>{let a=e.get(i.dirname(n)),o=t.isFile(r.mode)?await a.getFileHandle(i.basename(n),{create:!0}):await a.getDirectoryHandle(i.basename(n),{create:!0});if(o.kind===`file`){let e=await o.createWritable();await e.write(r.contents),await e.close()}e.set(n,o)},`storeRemoteEntry`),removeRemoteEntry:r(async(e,t)=>{await e.get(i.dirname(t)).removeEntry(i.basename(t)),e.delete(t)},`removeRemoteEntry`),reconcile:r(async(e,n,r)=>{let o=0,s=[];Object.keys(n.entries).forEach(function(e){let i=n.entries[e],a=r.entries[e];(!a||t.isFile(i.mode)&&i.timestamp.getTime()>a.timestamp.getTime())&&(s.push(e),o++)}),s.sort();let c=[];if(Object.keys(r.entries).forEach(function(e){n.entries[e]||(c.push(e),o++)}),c.sort().reverse(),!o)return;let l=n.type===`remote`?n.handles:r.handles;for(let t of s){let n=i.normalize(t.replace(e.mountpoint,`/`)).substring(1);if(r.type===`local`){let e=l.get(n),r=await a.loadRemoteEntry(e);a.storeLocalEntry(t,r)}else{let e=a.loadLocalEntry(t);await a.storeRemoteEntry(l,n,e)}}for(let t of c)if(r.type===`local`)a.removeLocalEntry(t);else{let n=i.normalize(t.replace(e.mountpoint,`/`)).substring(1);await a.removeRemoteEntry(l,n)}},`reconcile`)};e.FS.filesystems.NATIVEFS_ASYNC=a}r(B,`initializeNativeFS`);var re=r(async e=>{let t=[];async function n(e){for await(let r of e.values())t.push(r),r.kind===`directory`&&await n(r)}r(n,`collect`),await n(e);let i=new Map;i.set(`.`,e);for(let n of t){let t=(await e.resolve(n)).join(`/`);i.set(t,n)}return i},`getFsHandles`),ie=a(`AGFzbQEAAAABDANfAGAAAW9gAW8BfwMDAgECByECD2NyZWF0ZV9zZW50aW5lbAAAC2lzX3NlbnRpbmVsAAEKEwIHAPsBAPsbCwkAIAD7GvsUAAs=`),ae=async function(){if(!(globalThis.navigator&&(/iPad|iPhone|iPod/.test(navigator.userAgent)||navigator.platform===`MacIntel`&&typeof navigator.maxTouchPoints<`u`&&navigator.maxTouchPoints>1)))try{let e=await WebAssembly.compile(ie);return await WebAssembly.instantiate(e)}catch(e){if(e instanceof WebAssembly.CompileError)return;throw e}}();async function V(){let e=await ae;if(e)return e.exports;let t=Symbol(`error marker`);return{create_sentinel:r(()=>t,`create_sentinel`),is_sentinel:r(e=>e===t,`is_sentinel`)}}r(V,`getSentinelImport`);function H(e){let t={config:e,runtimeEnv:b},n={noImageDecoding:!0,noAudioDecoding:!0,noWasmDecoding:!1,preRun:J(e),print:e.stdout,printErr:e.stderr,onExit(e){n.exitCode=e},thisProgram:e._sysExecutable,arguments:e.args,API:t,locateFile:r(t=>e.indexURL+t,`locateFile`),instantiateWasm:Y(e.indexURL)};return n}r(H,`createSettings`);function U(e){return function(t){try{t.FS.mkdirTree(e)}catch(t){console.error(`Error occurred while making a home directory '${e}':`),console.error(t),console.error(`Using '/' for a home directory instead`),e=`/`}t.FS.chdir(e)}}r(U,`createHomeDirectory`);function W(e){return function(t){Object.assign(t.ENV,e)}}r(W,`setEnvironment`);function G(e){return e?[async t=>{t.addRunDependency(`fsInitHook`);try{await e(t.FS,{sitePackages:t.API.sitePackages})}finally{t.removeRunDependency(`fsInitHook`)}}]:[]}r(G,`callFsInitHook`);function K(e){let t=e.HEAPU32[e._Py_Version>>>2];return[t>>>24&255,t>>>16&255,t>>>8&255]}r(K,`computeVersionTuple`);function q(e){let t=P(e);return async e=>{e.API.pyVersionTuple=K(e);let[n,r]=e.API.pyVersionTuple;e.FS.mkdirTree(`/lib`),e.API.sitePackages=`/lib/python${n}.${r}/site-packages`,e.FS.mkdirTree(e.API.sitePackages),e.addRunDependency(`install-stdlib`);try{let i=await t;e.FS.writeFile(`/lib/python${n}${r}.zip`,i)}catch(e){console.error(`Error occurred while installing the standard library:`),console.error(e)}finally{e.removeRunDependency(`install-stdlib`)}}}r(q,`installStdlib`);function J(e){let t;return t=e.stdLibURL==null?e.indexURL+`python_stdlib.zip`:e.stdLibURL,[q(t),U(e.env.HOME),W(e.env),B,...G(e.fsInit)]}r(J,`getFileSystemInitializationFuncs`);function Y(e){if(typeof WasmOffsetConverter<`u`)return;let{binary:t,response:n}=N(e+`pyodide.asm.wasm`),r=V();return function(e,i){return async function(){e.sentinel=await r;try{let r;r=n?await WebAssembly.instantiateStreaming(n,e):await WebAssembly.instantiate(await t,e);let{instance:a,module:o}=r;i(a,o)}catch(e){console.warn(`wasm instantiation failed!`),console.warn(e)}}(),{}}}r(Y,`getInstantiateWasmFunc`);var oe=`0.29.4`;function X(e){return e===void 0||e.endsWith(`/`)?e:e+`/`}r(X,`withTrailingSlash`);var Z=oe;async function Q(e={}){if(await T(),e.lockFileContents&&e.lockFileURL)throw Error(`Can't pass both lockFileContents and lockFileURL`);let t=e.indexURL||await R();if(t=X(O(t)),e.packageBaseUrl=X(e.packageBaseUrl),e.cdnUrl=X(e.packageBaseUrl??`https://cdn.jsdelivr.net/pyodide/v0.29.4/full/`),!e.lockFileContents){let n=e.lockFileURL??t+`pyodide-lock.json`;e.lockFileContents=L(n),e.packageBaseUrl??=z(n)}e.indexURL=t,e.packageCacheDir&&=X(O(e.packageCacheDir));let n={fullStdLib:!1,jsglobals:globalThis,stdin:globalThis.prompt?()=>globalThis.prompt():void 0,args:[],env:{},packages:[],packageCacheDir:e.packageBaseUrl,enableRunUntilComplete:!0,checkAPIVersion:!0,BUILD_ID:`9ad695efc6a269d9e0a764721c629a728308ddb40e060fe4513bb5c162585079`},r=Object.assign(n,e);return r.env.HOME??=`/home/pyodide`,r.env.PYTHONINSPECT??=`1`,r}r(Q,`initializeConfiguration`);function $(e){let t=H(e),n=t.API;return n.lockFilePromise=Promise.resolve(e.lockFileContents),t}r($,`createEmscriptenSettings`);async function se(e){if(typeof _createPyodideModule!=`function`){let t=`${e.indexURL}pyodide.asm.js`;await F(t)}}r(se,`loadWasmScript`);async function ce(e,t){if(!e._loadSnapshot)return;let n=await e._loadSnapshot,r=ArrayBuffer.isView(n)?n:new Uint8Array(n);return t.noInitialRun=!0,t.INITIAL_MEMORY=r.length,r}r(ce,`prepareSnapshot`);async function le(e){let t=await _createPyodideModule(e);if(e.exitCode!==void 0)throw new t.ExitStatus(e.exitCode);return t}r(le,`createPyodideModule`);function ue(e,t){let n=e.API;if(t.pyproxyToStringRepr&&n.setPyProxyToStringMethod(!0),t.convertNullToNone&&n.setCompatNullToNone(!0),t.toJsLiteralMap&&n.setCompatToJsLiteralMap(!0),n.version!==`0.29.4`&&t.checkAPIVersion)throw Error(`Pyodide version does not match: '${Z}' <==> '${n.version}'. If you updated the Pyodide version, make sure you also updated the 'indexURL' parameter passed to loadPyodide.`);e.locateFile=e=>{throw e.endsWith(`.so`)?Error(`Failed to find dynamic library "${e}"`):Error(`Unexpected call to locateFile("${e}")`)}}r(ue,`configureAPI`);function de(e,t,n){let r=e.API,i;return t&&(i=r.restoreSnapshot(t)),r.finalizeBootstrap(i,n._snapshotDeserializer)}r(de,`bootstrapPyodide`);async function fe(e,t){let n=e._api;return n.sys.path.insert(0,``),n._pyodide.set_excepthook(),await n.packageIndexReady,n.initializeStreams(t.stdin,t.stdout,t.stderr),e}r(fe,`finalizeSetup`);async function pe(e={}){let t=await Q(e),n=$(t);await se(t);let r=await ce(t,n),i=await le(n);return ue(i,t),await fe(de(i,r,t),t)}r(pe,`loadPyodide`);export{pe as loadPyodide,Z as version};
3
+ `).filter(function(e){return!e.match(t)},this).map(function(e){if(e.indexOf(` > eval`)>-1&&(e=e.replace(/ line (\d+)(?: > eval line \d+)* > eval:\d+:\d+/g,`:$1`)),e.indexOf(`@`)===-1&&e.indexOf(`:`)===-1)return new _({functionName:e});var t=/((.*".+"[^@]*)?[^@]*)(?:@)/,n=e.match(t),r=n&&n[1]?n[1]:void 0,i=this.extractLocation(e.replace(t,``));return new _({functionName:r,fileName:i[0],lineNumber:i[1],columnNumber:i[2],source:e})},this)},`ErrorStackParser$$parseFFOrSafari`)}}r(v,`ErrorStackParser`);var ee=new v;function y(){return typeof API<`u`&&API!==globalThis.API?API.runtimeEnv:x({IN_BUN:typeof Bun<`u`,IN_DENO:typeof Deno<`u`,IN_NODE:typeof process==`object`&&typeof process.versions==`object`&&typeof process.versions.node==`string`&&!process.browser,IN_SAFARI:typeof navigator==`object`&&typeof navigator.userAgent==`string`&&navigator.userAgent.indexOf(`Chrome`)===-1&&navigator.userAgent.indexOf(`Safari`)>-1,IN_SHELL:typeof read==`function`&&typeof load==`function`})}r(y,`getGlobalRuntimeEnv`);var b=y();function x(e){let t=e.IN_NODE&&typeof module<`u`&&module.exports&&typeof i==`function`&&typeof __dirname==`string`,n=e.IN_NODE&&!t,r=!e.IN_NODE&&!e.IN_DENO&&!e.IN_BUN,a=r&&typeof window<`u`&&typeof window.document<`u`&&typeof document.createElement==`function`&&`sessionStorage`in window&&typeof globalThis.importScripts!=`function`,o=r&&typeof globalThis.WorkerGlobalScope<`u`&&typeof globalThis.self<`u`&&globalThis.self instanceof globalThis.WorkerGlobalScope;return{...e,IN_BROWSER:r,IN_BROWSER_MAIN_THREAD:a,IN_BROWSER_WEB_WORKER:o,IN_NODE_COMMONJS:t,IN_NODE_ESM:n}}r(x,`calculateDerivedFlags`);var S,C,te,ne,w;async function T(){if(!b.IN_NODE||(S=(await import(`./kernel-worker-7oVJDvYj.js`).then(e=>t(e.W(),1))).default,ne=await import(`./kernel-worker-7oVJDvYj.js`).then(e=>t(e.W(),1)),w=await import(`./kernel-worker-7oVJDvYj.js`).then(e=>t(e.W(),1)),te=(await import(`./kernel-worker-7oVJDvYj.js`).then(e=>t(e.W(),1))).default,C=await import(`./kernel-worker-7oVJDvYj.js`).then(e=>t(e.W(),1)),k=C.sep,typeof i<`u`))return;let e={fs:ne,crypto:await import(`./kernel-worker-7oVJDvYj.js`).then(e=>t(e.W(),1)),ws:await import(`./kernel-worker-7oVJDvYj.js`).then(e=>t(e.W(),1)),child_process:await import(`./kernel-worker-7oVJDvYj.js`).then(e=>t(e.W(),1))};globalThis.require=function(t){return e[t]}}r(T,`initNodeModules`);function E(e,t){return C.resolve(t||`.`,e)}r(E,`node_resolvePath`);function D(e,t){return t===void 0&&(t=location),new URL(e,t).toString()}r(D,`browser_resolvePath`);var O=b.IN_NODE?E:b.IN_SHELL?r(e=>e,`resolvePath`):D,k;b.IN_NODE||(k=`/`);function A(e,t){return e.startsWith(`file://`)&&(e=e.slice(7)),e.includes(`://`)?{response:fetch(e)}:{binary:w.readFile(e).then(e=>new Uint8Array(e.buffer,e.byteOffset,e.byteLength))}}r(A,`node_getBinaryResponse`);function j(e,t){if(e.startsWith(`file://`)&&(e=e.slice(7)),e.includes(`://`))throw Error(`Shell cannot fetch urls`);return{binary:Promise.resolve(new Uint8Array(readbuffer(e)))}}r(j,`shell_getBinaryResponse`);function M(e,t){let n=new URL(e,location);return{response:fetch(n,t?{integrity:t}:{})}}r(M,`browser_getBinaryResponse`);var N=b.IN_NODE?A:b.IN_SHELL?j:M;async function P(e,t){let{response:n,binary:r}=N(e,t);if(r)return r;let i=await n;if(!i.ok)throw Error(`Failed to load '${e}': request failed.`);return new Uint8Array(await i.arrayBuffer())}r(P,`loadBinaryFile`);var F;if(b.IN_BROWSER_MAIN_THREAD)F=r(async e=>await import(e),`loadScript`);else if(b.IN_BROWSER_WEB_WORKER)F=r(async e=>{try{globalThis.importScripts(e)}catch(t){if(t instanceof TypeError)await import(e);else throw t}},`loadScript`);else if(b.IN_NODE)F=I;else if(b.IN_SHELL)F=load;else throw Error(`Cannot determine runtime environment`);async function I(e){e.startsWith(`file://`)&&(e=e.slice(7)),e.includes(`://`)?te.runInThisContext(await(await fetch(e)).text()):await import(S.pathToFileURL(e).href)}r(I,`nodeLoadScript`);async function L(e){if(b.IN_NODE){await T();let t=await w.readFile(e,{encoding:`utf8`});return JSON.parse(t)}else if(b.IN_SHELL){let t=read(e);return JSON.parse(t)}else return await(await fetch(e)).json()}r(L,`loadLockFile`);async function R(){if(b.IN_NODE_COMMONJS)return __dirname;let e;try{throw Error()}catch(t){e=t}let n=ee.parse(e)[0].fileName;if(b.IN_NODE&&!n.startsWith(`file://`)&&(n=`file://${n}`),b.IN_NODE_ESM){let e=await import(`./kernel-worker-7oVJDvYj.js`).then(e=>t(e.W(),1));return(await import(`./kernel-worker-7oVJDvYj.js`).then(e=>t(e.W(),1))).fileURLToPath(e.dirname(n))}let r=n.lastIndexOf(k);if(r===-1)throw Error(`Could not extract indexURL path from pyodide module location. Please pass the indexURL explicitly to loadPyodide.`);return n.slice(0,r)}r(R,`calculateDirname`);function z(e){return e.substring(0,e.lastIndexOf(`/`)+1)||globalThis.location?.toString()||`.`}r(z,`calculateInstallBaseUrl`);function B(e){let t=e.FS,n=e.FS.filesystems.MEMFS,i=e.PATH,a={DIR_MODE:16895,FILE_MODE:33279,mount:r(function(e){if(!e.opts.fileSystemHandle)throw Error(`opts.fileSystemHandle is required`);return n.mount.apply(null,arguments)},`mount`),syncfs:r(async(e,t,n)=>{try{let r=a.getLocalSet(e),i=await a.getRemoteSet(e),o=t?i:r,s=t?r:i;await a.reconcile(e,o,s),n(null)}catch(e){n(e)}},`syncfs`),getLocalSet:r(e=>{let n=Object.create(null);function a(e){return e!==`.`&&e!==`..`}r(a,`isRealDir`);function o(e){return t=>i.join2(e,t)}r(o,`toAbsolute`);let s=t.readdir(e.mountpoint).filter(a).map(o(e.mountpoint));for(;s.length;){let e=s.pop(),r=t.stat(e);t.isDir(r.mode)&&s.push.apply(s,t.readdir(e).filter(a).map(o(e))),n[e]={timestamp:r.mtime,mode:r.mode}}return{type:`local`,entries:n}},`getLocalSet`),getRemoteSet:r(async e=>{let t=Object.create(null),n=await re(e.opts.fileSystemHandle);for(let[r,o]of n)r!==`.`&&(t[i.join2(e.mountpoint,r)]={timestamp:o.kind===`file`?new Date((await o.getFile()).lastModified):new Date,mode:o.kind===`file`?a.FILE_MODE:a.DIR_MODE});return{type:`remote`,entries:t,handles:n}},`getRemoteSet`),loadLocalEntry:r(e=>{let r=t.lookupPath(e,{}).node,i=t.stat(e);if(t.isDir(i.mode))return{timestamp:i.mtime,mode:i.mode};if(t.isFile(i.mode))return r.contents=n.getFileDataAsTypedArray(r),{timestamp:i.mtime,mode:i.mode,contents:r.contents};throw Error(`node type not supported`)},`loadLocalEntry`),storeLocalEntry:r((e,n)=>{if(t.isDir(n.mode))t.mkdirTree(e,n.mode);else if(t.isFile(n.mode))t.writeFile(e,n.contents,{canOwn:!0});else throw Error(`node type not supported`);t.chmod(e,n.mode),t.utime(e,n.timestamp,n.timestamp)},`storeLocalEntry`),removeLocalEntry:r(e=>{var n=t.stat(e);t.isDir(n.mode)?t.rmdir(e):t.isFile(n.mode)&&t.unlink(e)},`removeLocalEntry`),loadRemoteEntry:r(async e=>{if(e.kind===`file`){let t=await e.getFile();return{contents:new Uint8Array(await t.arrayBuffer()),mode:a.FILE_MODE,timestamp:new Date(t.lastModified)}}else{if(e.kind===`directory`)return{mode:a.DIR_MODE,timestamp:new Date};throw Error(`unknown kind: `+e.kind)}},`loadRemoteEntry`),storeRemoteEntry:r(async(e,n,r)=>{let a=e.get(i.dirname(n)),o=t.isFile(r.mode)?await a.getFileHandle(i.basename(n),{create:!0}):await a.getDirectoryHandle(i.basename(n),{create:!0});if(o.kind===`file`){let e=await o.createWritable();await e.write(r.contents),await e.close()}e.set(n,o)},`storeRemoteEntry`),removeRemoteEntry:r(async(e,t)=>{await e.get(i.dirname(t)).removeEntry(i.basename(t)),e.delete(t)},`removeRemoteEntry`),reconcile:r(async(e,n,r)=>{let o=0,s=[];Object.keys(n.entries).forEach(function(e){let i=n.entries[e],a=r.entries[e];(!a||t.isFile(i.mode)&&i.timestamp.getTime()>a.timestamp.getTime())&&(s.push(e),o++)}),s.sort();let c=[];if(Object.keys(r.entries).forEach(function(e){n.entries[e]||(c.push(e),o++)}),c.sort().reverse(),!o)return;let l=n.type===`remote`?n.handles:r.handles;for(let t of s){let n=i.normalize(t.replace(e.mountpoint,`/`)).substring(1);if(r.type===`local`){let e=l.get(n),r=await a.loadRemoteEntry(e);a.storeLocalEntry(t,r)}else{let e=a.loadLocalEntry(t);await a.storeRemoteEntry(l,n,e)}}for(let t of c)if(r.type===`local`)a.removeLocalEntry(t);else{let n=i.normalize(t.replace(e.mountpoint,`/`)).substring(1);await a.removeRemoteEntry(l,n)}},`reconcile`)};e.FS.filesystems.NATIVEFS_ASYNC=a}r(B,`initializeNativeFS`);var re=r(async e=>{let t=[];async function n(e){for await(let r of e.values())t.push(r),r.kind===`directory`&&await n(r)}r(n,`collect`),await n(e);let i=new Map;i.set(`.`,e);for(let n of t){let t=(await e.resolve(n)).join(`/`);i.set(t,n)}return i},`getFsHandles`),ie=a(`AGFzbQEAAAABDANfAGAAAW9gAW8BfwMDAgECByECD2NyZWF0ZV9zZW50aW5lbAAAC2lzX3NlbnRpbmVsAAEKEwIHAPsBAPsbCwkAIAD7GvsUAAs=`),ae=async function(){if(!(globalThis.navigator&&(/iPad|iPhone|iPod/.test(navigator.userAgent)||navigator.platform===`MacIntel`&&typeof navigator.maxTouchPoints<`u`&&navigator.maxTouchPoints>1)))try{let e=await WebAssembly.compile(ie);return await WebAssembly.instantiate(e)}catch(e){if(e instanceof WebAssembly.CompileError)return;throw e}}();async function V(){let e=await ae;if(e)return e.exports;let t=Symbol(`error marker`);return{create_sentinel:r(()=>t,`create_sentinel`),is_sentinel:r(e=>e===t,`is_sentinel`)}}r(V,`getSentinelImport`);function H(e){let t={config:e,runtimeEnv:b},n={noImageDecoding:!0,noAudioDecoding:!0,noWasmDecoding:!1,preRun:J(e),print:e.stdout,printErr:e.stderr,onExit(e){n.exitCode=e},thisProgram:e._sysExecutable,arguments:e.args,API:t,locateFile:r(t=>e.indexURL+t,`locateFile`),instantiateWasm:Y(e.indexURL)};return n}r(H,`createSettings`);function U(e){return function(t){try{t.FS.mkdirTree(e)}catch(t){console.error(`Error occurred while making a home directory '${e}':`),console.error(t),console.error(`Using '/' for a home directory instead`),e=`/`}t.FS.chdir(e)}}r(U,`createHomeDirectory`);function W(e){return function(t){Object.assign(t.ENV,e)}}r(W,`setEnvironment`);function G(e){return e?[async t=>{t.addRunDependency(`fsInitHook`);try{await e(t.FS,{sitePackages:t.API.sitePackages})}finally{t.removeRunDependency(`fsInitHook`)}}]:[]}r(G,`callFsInitHook`);function K(e){let t=e.HEAPU32[e._Py_Version>>>2];return[t>>>24&255,t>>>16&255,t>>>8&255]}r(K,`computeVersionTuple`);function q(e){let t=P(e);return async e=>{e.API.pyVersionTuple=K(e);let[n,r]=e.API.pyVersionTuple;e.FS.mkdirTree(`/lib`),e.API.sitePackages=`/lib/python${n}.${r}/site-packages`,e.FS.mkdirTree(e.API.sitePackages),e.addRunDependency(`install-stdlib`);try{let i=await t;e.FS.writeFile(`/lib/python${n}${r}.zip`,i)}catch(e){console.error(`Error occurred while installing the standard library:`),console.error(e)}finally{e.removeRunDependency(`install-stdlib`)}}}r(q,`installStdlib`);function J(e){let t;return t=e.stdLibURL==null?e.indexURL+`python_stdlib.zip`:e.stdLibURL,[q(t),U(e.env.HOME),W(e.env),B,...G(e.fsInit)]}r(J,`getFileSystemInitializationFuncs`);function Y(e){if(typeof WasmOffsetConverter<`u`)return;let{binary:t,response:n}=N(e+`pyodide.asm.wasm`),r=V();return function(e,i){return async function(){e.sentinel=await r;try{let r;r=n?await WebAssembly.instantiateStreaming(n,e):await WebAssembly.instantiate(await t,e);let{instance:a,module:o}=r;i(a,o)}catch(e){console.warn(`wasm instantiation failed!`),console.warn(e)}}(),{}}}r(Y,`getInstantiateWasmFunc`);var oe=`0.29.4`;function X(e){return e===void 0||e.endsWith(`/`)?e:e+`/`}r(X,`withTrailingSlash`);var Z=oe;async function Q(e={}){if(await T(),e.lockFileContents&&e.lockFileURL)throw Error(`Can't pass both lockFileContents and lockFileURL`);let t=e.indexURL||await R();if(t=X(O(t)),e.packageBaseUrl=X(e.packageBaseUrl),e.cdnUrl=X(e.packageBaseUrl??`https://cdn.jsdelivr.net/pyodide/v0.29.4/full/`),!e.lockFileContents){let n=e.lockFileURL??t+`pyodide-lock.json`;e.lockFileContents=L(n),e.packageBaseUrl??=z(n)}e.indexURL=t,e.packageCacheDir&&=X(O(e.packageCacheDir));let n={fullStdLib:!1,jsglobals:globalThis,stdin:globalThis.prompt?()=>globalThis.prompt():void 0,args:[],env:{},packages:[],packageCacheDir:e.packageBaseUrl,enableRunUntilComplete:!0,checkAPIVersion:!0,BUILD_ID:`9ad695efc6a269d9e0a764721c629a728308ddb40e060fe4513bb5c162585079`},r=Object.assign(n,e);return r.env.HOME??=`/home/pyodide`,r.env.PYTHONINSPECT??=`1`,r}r(Q,`initializeConfiguration`);function $(e){let t=H(e),n=t.API;return n.lockFilePromise=Promise.resolve(e.lockFileContents),t}r($,`createEmscriptenSettings`);async function se(e){if(typeof _createPyodideModule!=`function`){let t=`${e.indexURL}pyodide.asm.js`;await F(t)}}r(se,`loadWasmScript`);async function ce(e,t){if(!e._loadSnapshot)return;let n=await e._loadSnapshot,r=ArrayBuffer.isView(n)?n:new Uint8Array(n);return t.noInitialRun=!0,t.INITIAL_MEMORY=r.length,r}r(ce,`prepareSnapshot`);async function le(e){let t=await _createPyodideModule(e);if(e.exitCode!==void 0)throw new t.ExitStatus(e.exitCode);return t}r(le,`createPyodideModule`);function ue(e,t){let n=e.API;if(t.pyproxyToStringRepr&&n.setPyProxyToStringMethod(!0),t.convertNullToNone&&n.setCompatNullToNone(!0),t.toJsLiteralMap&&n.setCompatToJsLiteralMap(!0),n.version!==`0.29.4`&&t.checkAPIVersion)throw Error(`Pyodide version does not match: '${Z}' <==> '${n.version}'. If you updated the Pyodide version, make sure you also updated the 'indexURL' parameter passed to loadPyodide.`);e.locateFile=e=>{throw e.endsWith(`.so`)?Error(`Failed to find dynamic library "${e}"`):Error(`Unexpected call to locateFile("${e}")`)}}r(ue,`configureAPI`);function de(e,t,n){let r=e.API,i;return t&&(i=r.restoreSnapshot(t)),r.finalizeBootstrap(i,n._snapshotDeserializer)}r(de,`bootstrapPyodide`);async function fe(e,t){let n=e._api;return n.sys.path.insert(0,``),n._pyodide.set_excepthook(),await n.packageIndexReady,n.initializeStreams(t.stdin,t.stdout,t.stderr),e}r(fe,`finalizeSetup`);async function pe(e={}){let t=await Q(e),n=$(t);await se(t);let r=await ce(t,n),i=await le(n);return ue(i,t),await fe(de(i,r,t),t)}r(pe,`loadPyodide`);export{pe as loadPyodide,Z as version};
@@ -1,5 +1,5 @@
1
1
  const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/xterm-BmfB5bmM.css"])))=>i.map(i=>d[i]);
2
- import{J as e,Y as t}from"./index-CCGqFzR9.js";var n=class{client;sid;onEvent;nextExecId=1;pending=new Map;buffers=new Map;opened=!1;openWaiters=[];unsubscribe=null;constructor(e){this.client=e.client,this.sid=e.sid,this.onEvent=e.onEvent??null,this.unsubscribe=this.subscribeToEvents()}open(e={}){return this.opened?Promise.resolve():new Promise((t,n)=>{this.openWaiters.push(e=>e?n(e):t()),this.send({type:`terminal-open`,sid:this.sid,cwd:e.cwd,env:e.env})})}exec(e){let t=`e${this.nextExecId++}`;return new Promise(n=>{this.pending.set(t,n),this.buffers.set(t,{stdout:``,stderr:``}),this.send({type:`terminal-exec`,sid:this.sid,execId:t,command:e})})}signal(e){this.send({type:`terminal-signal`,sid:this.sid,signal:e})}resize(e,t){this.send({type:`terminal-resize`,sid:this.sid,cols:e,rows:t})}close(){if(this.opened){this.send({type:`terminal-close`,sid:this.sid}),this.opened=!1;for(let e of this.openWaiters)e(Error(`terminal session closed`));this.openWaiters=[];for(let[e,t]of this.pending){let n=this.buffers.get(e)??{stdout:``,stderr:``};t({stdout:n.stdout,stderr:n.stderr,exitCode:130})}this.pending.clear(),this.buffers.clear()}}dispose(){this.unsubscribe?.(),this.unsubscribe=null}send(e){this.client.sendRaw(e)}subscribeToEvents(){return this.client.onTerminalEvent(e=>{e.sid===this.sid&&this.handleEvent(e)})}handleEvent(e){switch(this.onEvent?.(e),e.type){case`terminal-status`:{let t=e;if(t.state===`opened`){this.opened=!0;for(let e of this.openWaiters)e();this.openWaiters=[]}else if(t.state===`error`){this.opened=!1;let e=Error(t.error??`terminal session error`);for(let t of this.openWaiters)t(e);this.openWaiters=[]}return}case`terminal-output`:{let t=e;if(t.execId!==void 0){let e=this.buffers.get(t.execId);if(!e)return;t.stream===`stdout`?e.stdout+=t.data:e.stderr+=t.data}else for(let e of this.buffers.values())t.stream===`stdout`?e.stdout+=t.data:e.stderr+=t.data;return}case`terminal-exit`:{let t=e,n=this.pending.get(t.execId),r=this.buffers.get(t.execId);this.pending.delete(t.execId),this.buffers.delete(t.execId),n&&n({stdout:r?.stdout??``,stderr:r?.stderr??``,exitCode:t.exitCode});return}case`terminal-cleared`:case`terminal-media-preview`:return}}},r={background:`#141414`,foreground:`#cfcfcf`,cursor:`#3562ff`,cursorAccent:`#141414`,selectionBackground:`#3562ff40`,selectionForeground:`#ffffff`,black:`#1a1a1a`,red:`#e34850`,green:`#2d9d78`,yellow:`#e68619`,blue:`#3562ff`,magenta:`#a962e8`,cyan:`#2db9be`,white:`#cfcfcf`,brightBlack:`#5a5a5a`,brightRed:`#e34850`,brightGreen:`#2d9d78`,brightYellow:`#e68619`,brightBlue:`#4a75ff`,brightMagenta:`#a962e8`,brightCyan:`#2db9be`,brightWhite:`#ffffff`},i={background:`#f0f0f0`,foreground:`#1a1a1a`,cursor:`#2b54db`,cursorAccent:`#f0f0f0`,selectionBackground:`#2b54db30`,selectionForeground:`#000000`,black:`#1a1a1a`,red:`#d73220`,green:`#268e6c`,yellow:`#d17a00`,blue:`#2b54db`,magenta:`#8839ef`,cyan:`#1a9088`,white:`#e8e8e8`,brightBlack:`#6e6e6e`,brightRed:`#d73220`,brightGreen:`#268e6c`,brightYellow:`#d17a00`,brightBlue:`#1e44c4`,brightMagenta:`#8839ef`,brightCyan:`#1a9088`,brightWhite:`#ffffff`},a=`\x1B[34m/\x1B[0m \x1B[90m$\x1B[0m `,o=4,s=class{options;client;terminal=null;fitAddon=null;terminalHost=null;previewHost=null;previewUrls=[];hasPreview=!1;previewStateListener=null;resizeObserver=null;themeObserver=null;currentLine=``;cursorPos=0;history=[];historyIndex=-1;isExecuting=!1;execInFlight=null;suppressOutput=!1;tabBusy=!1;constructor(e){this.options=e;let t=e.sid??`panel-terminal-${Date.now()}`;this.client=new n({client:e.client,sid:t,onEvent:e=>this.handleEvent(e)})}async mount(e){let{Terminal:n}=await t(async()=>{let{Terminal:e}=await import(`./xterm-DhusGoAm.js`);return{Terminal:e}},[]),{FitAddon:a}=await t(async()=>{let{FitAddon:e}=await import(`./addon-fit-Dkm5m5XK.js`);return{FitAddon:e}},[]);await t(()=>Promise.resolve({}),__vite__mapDeps([0]));let o=!document.documentElement.classList.contains(`theme-light`);this.terminal=new n({cursorBlink:!0,fontSize:11,fontFamily:`'Source Code Pro', 'JetBrains Mono', 'Fira Code', 'Cascadia Code', monospace`,theme:o?r:i,convertEol:!0}),this.themeObserver=new MutationObserver(()=>{if(!this.terminal)return;let e=document.documentElement.classList.contains(`theme-light`);this.terminal.options.theme=e?i:r}),this.themeObserver.observe(document.documentElement,{attributes:!0,attributeFilter:[`class`]}),this.fitAddon=new a,this.terminal.loadAddon(this.fitAddon),e.replaceChildren(),this.terminalHost=document.createElement(`div`),this.terminalHost.className=`terminal-panel__terminal-host`,e.appendChild(this.terminalHost),this.previewHost=document.createElement(`div`),this.previewHost.className=`terminal-panel__preview`,e.appendChild(this.previewHost),this.terminal.open(this.terminalHost),this.fitAddon.fit(),this.resizeObserver=new ResizeObserver(()=>this.refit()),this.resizeObserver.observe(this.terminalHost),this.terminal.writeln(`\x1B[1mslicc\x1B[0m \x1B[90mshell (kernel)\x1B[0m`),this.terminal.writeln(`\x1B[90mType "help" for available commands.\x1B[0m
2
+ import{J as e,Y as t}from"./index-BdDYVKjf.js";var n=class{client;sid;onEvent;nextExecId=1;pending=new Map;buffers=new Map;opened=!1;openWaiters=[];unsubscribe=null;constructor(e){this.client=e.client,this.sid=e.sid,this.onEvent=e.onEvent??null,this.unsubscribe=this.subscribeToEvents()}open(e={}){return this.opened?Promise.resolve():new Promise((t,n)=>{this.openWaiters.push(e=>e?n(e):t()),this.send({type:`terminal-open`,sid:this.sid,cwd:e.cwd,env:e.env})})}exec(e){let t=`e${this.nextExecId++}`;return new Promise(n=>{this.pending.set(t,n),this.buffers.set(t,{stdout:``,stderr:``}),this.send({type:`terminal-exec`,sid:this.sid,execId:t,command:e})})}signal(e){this.send({type:`terminal-signal`,sid:this.sid,signal:e})}resize(e,t){this.send({type:`terminal-resize`,sid:this.sid,cols:e,rows:t})}close(){if(this.opened){this.send({type:`terminal-close`,sid:this.sid}),this.opened=!1;for(let e of this.openWaiters)e(Error(`terminal session closed`));this.openWaiters=[];for(let[e,t]of this.pending){let n=this.buffers.get(e)??{stdout:``,stderr:``};t({stdout:n.stdout,stderr:n.stderr,exitCode:130})}this.pending.clear(),this.buffers.clear()}}dispose(){this.unsubscribe?.(),this.unsubscribe=null}send(e){this.client.sendRaw(e)}subscribeToEvents(){return this.client.onTerminalEvent(e=>{e.sid===this.sid&&this.handleEvent(e)})}handleEvent(e){switch(this.onEvent?.(e),e.type){case`terminal-status`:{let t=e;if(t.state===`opened`){this.opened=!0;for(let e of this.openWaiters)e();this.openWaiters=[]}else if(t.state===`error`){this.opened=!1;let e=Error(t.error??`terminal session error`);for(let t of this.openWaiters)t(e);this.openWaiters=[]}return}case`terminal-output`:{let t=e;if(t.execId!==void 0){let e=this.buffers.get(t.execId);if(!e)return;t.stream===`stdout`?e.stdout+=t.data:e.stderr+=t.data}else for(let e of this.buffers.values())t.stream===`stdout`?e.stdout+=t.data:e.stderr+=t.data;return}case`terminal-exit`:{let t=e,n=this.pending.get(t.execId),r=this.buffers.get(t.execId);this.pending.delete(t.execId),this.buffers.delete(t.execId),n&&n({stdout:r?.stdout??``,stderr:r?.stderr??``,exitCode:t.exitCode});return}case`terminal-cleared`:case`terminal-media-preview`:return}}},r={background:`#141414`,foreground:`#cfcfcf`,cursor:`#3562ff`,cursorAccent:`#141414`,selectionBackground:`#3562ff40`,selectionForeground:`#ffffff`,black:`#1a1a1a`,red:`#e34850`,green:`#2d9d78`,yellow:`#e68619`,blue:`#3562ff`,magenta:`#a962e8`,cyan:`#2db9be`,white:`#cfcfcf`,brightBlack:`#5a5a5a`,brightRed:`#e34850`,brightGreen:`#2d9d78`,brightYellow:`#e68619`,brightBlue:`#4a75ff`,brightMagenta:`#a962e8`,brightCyan:`#2db9be`,brightWhite:`#ffffff`},i={background:`#f0f0f0`,foreground:`#1a1a1a`,cursor:`#2b54db`,cursorAccent:`#f0f0f0`,selectionBackground:`#2b54db30`,selectionForeground:`#000000`,black:`#1a1a1a`,red:`#d73220`,green:`#268e6c`,yellow:`#d17a00`,blue:`#2b54db`,magenta:`#8839ef`,cyan:`#1a9088`,white:`#e8e8e8`,brightBlack:`#6e6e6e`,brightRed:`#d73220`,brightGreen:`#268e6c`,brightYellow:`#d17a00`,brightBlue:`#1e44c4`,brightMagenta:`#8839ef`,brightCyan:`#1a9088`,brightWhite:`#ffffff`},a=`\x1B[34m/\x1B[0m \x1B[90m$\x1B[0m `,o=4,s=class{options;client;terminal=null;fitAddon=null;terminalHost=null;previewHost=null;previewUrls=[];hasPreview=!1;previewStateListener=null;resizeObserver=null;themeObserver=null;currentLine=``;cursorPos=0;history=[];historyIndex=-1;isExecuting=!1;execInFlight=null;suppressOutput=!1;tabBusy=!1;constructor(e){this.options=e;let t=e.sid??`panel-terminal-${Date.now()}`;this.client=new n({client:e.client,sid:t,onEvent:e=>this.handleEvent(e)})}async mount(e){let{Terminal:n}=await t(async()=>{let{Terminal:e}=await import(`./xterm-4j9yS4Tj.js`);return{Terminal:e}},[]),{FitAddon:a}=await t(async()=>{let{FitAddon:e}=await import(`./addon-fit-D2MIn2bh.js`);return{FitAddon:e}},[]);await t(()=>Promise.resolve({}),__vite__mapDeps([0]));let o=!document.documentElement.classList.contains(`theme-light`);this.terminal=new n({cursorBlink:!0,fontSize:11,fontFamily:`'Source Code Pro', 'JetBrains Mono', 'Fira Code', 'Cascadia Code', monospace`,theme:o?r:i,convertEol:!0}),this.themeObserver=new MutationObserver(()=>{if(!this.terminal)return;let e=document.documentElement.classList.contains(`theme-light`);this.terminal.options.theme=e?i:r}),this.themeObserver.observe(document.documentElement,{attributes:!0,attributeFilter:[`class`]}),this.fitAddon=new a,this.terminal.loadAddon(this.fitAddon),e.replaceChildren(),this.terminalHost=document.createElement(`div`),this.terminalHost.className=`terminal-panel__terminal-host`,e.appendChild(this.terminalHost),this.previewHost=document.createElement(`div`),this.previewHost.className=`terminal-panel__preview`,e.appendChild(this.previewHost),this.terminal.open(this.terminalHost),this.fitAddon.fit(),this.resizeObserver=new ResizeObserver(()=>this.refit()),this.resizeObserver.observe(this.terminalHost),this.terminal.writeln(`\x1B[1mslicc\x1B[0m \x1B[90mshell (kernel)\x1B[0m`),this.terminal.writeln(`\x1B[90mType "help" for available commands.\x1B[0m
3
3
  `),await this.client.open({cwd:this.options.cwd,env:this.options.env}),this.showPrompt(),this.setupInputHandler()}refit(){this.fitAddon?.fit()}clearTerminal(){this.terminal?.clear()}async executeCommandInTerminal(e){let t=e.trim();return t?this.terminal?this.isExecuting||this.currentLine.length>0?{stdout:``,stderr:`terminal is busy; finish current input first
4
4
  `,exitCode:1}:(this.history[this.history.length-1]!==t&&this.history.push(t),this.historyIndex=-1,this.terminal.write(t),this.terminal.writeln(``),this.runRemote(t)):this.client.exec(t):{stdout:``,stderr:``,exitCode:0}}setPreviewStateListener(e){this.previewStateListener=e,e?.(this.hasPreview)}dispose(){this.clearMediaPreview(),this.themeObserver?.disconnect(),this.themeObserver=null,this.resizeObserver?.disconnect(),this.resizeObserver=null,this.terminal?.dispose(),this.terminal=null,this.fitAddon=null,this.terminalHost=null,this.previewHost=null,this.client.close(),this.client.dispose()}renderMediaPreview(e){if(!this.previewHost)return;let t=Uint8Array.from(atob(e.data),e=>e.charCodeAt(0)),n=URL.createObjectURL(new Blob([t],{type:e.mediaType}));this.previewUrls.push(n);let r=document.createElement(`div`);r.className=`terminal-panel__preview-item`;let i=document.createElement(`div`);i.className=`terminal-panel__preview-label`;let a=e.path.split(`/`).pop()??e.path;if(i.textContent=`${a} · ${e.mediaType}`,r.appendChild(i),e.mediaType.startsWith(`video/`)){let e=document.createElement(`video`);e.className=`terminal-panel__preview-media`,e.controls=!0,e.autoplay=!0,e.loop=!0,e.muted=!0,e.playsInline=!0,e.src=n,e.addEventListener(`loadedmetadata`,()=>this.refit(),{once:!0}),r.appendChild(e)}else{let e=document.createElement(`img`);e.className=`terminal-panel__preview-media`,e.alt=a,e.src=n,e.addEventListener(`load`,()=>this.refit(),{once:!0}),r.appendChild(e)}this.previewHost.appendChild(r),this.previewHost.classList.add(`terminal-panel__preview--visible`),this.hasPreview=!0,this.previewStateListener?.(!0)}clearMediaPreview(){for(let e of this.previewUrls)URL.revokeObjectURL(e);this.previewUrls=[],this.previewHost&&(this.previewHost.replaceChildren(),this.previewHost.classList.remove(`terminal-panel__preview--visible`)),this.hasPreview=!1,this.previewStateListener?.(!1)}showPrompt(){this.terminal?.write(a)}setupInputHandler(){this.terminal&&this.terminal.onData(e=>{if(this.isExecuting){(e===``||e.length===1&&e.charCodeAt(0)===3)&&(this.client.signal(`SIGINT`),this.terminal?.writeln(`^C`));return}if(e.startsWith(`\x1B[`)||e.startsWith(`\x1BO`)){switch(e){case`\x1B[A`:this.handleHistoryUp();return;case`\x1B[B`:this.handleHistoryDown();return;case`\x1B[C`:this.handleArrowRight();return;case`\x1B[D`:this.handleArrowLeft();return;case`\x1B[H`:case`\x1BOH`:case`\x1B[1~`:this.handleHome();return;case`\x1B[F`:case`\x1BOF`:case`\x1B[4~`:this.handleEnd();return;case`\x1B[3~`:this.handleDelete();return}return}for(let t of e)switch(t){case`\r`:this.handleEnter();break;case``:this.handleBackspace();break;case``:this.terminal?.writeln(`^C`),this.currentLine=``,this.cursorPos=0,this.showPrompt();break;case` `:this.handleTab();break;default:t>=` `&&this.insertChar(t)}})}insertChar(e){if(!this.terminal)return;let t=this.currentLine.slice(this.cursorPos);this.currentLine=this.currentLine.slice(0,this.cursorPos)+e+t,this.cursorPos++,this.terminal.write(e),t.length>0&&(this.terminal.write(t),this.terminal.write(`\x1b[${t.length}D`))}handleBackspace(){if(!this.terminal||this.cursorPos<=0)return;let e=this.currentLine.slice(this.cursorPos);this.currentLine=this.currentLine.slice(0,this.cursorPos-1)+e,this.cursorPos--,this.terminal.write(`\b\x1B[K`),e.length>0&&(this.terminal.write(e),this.terminal.write(`\x1b[${e.length}D`))}handleDelete(){if(!this.terminal||this.cursorPos>=this.currentLine.length)return;let e=this.currentLine.slice(this.cursorPos+1);this.currentLine=this.currentLine.slice(0,this.cursorPos)+e,this.terminal.write(`\x1B[K`),e.length>0&&(this.terminal.write(e),this.terminal.write(`\x1b[${e.length}D`))}handleArrowLeft(){this.cursorPos<=0||(this.cursorPos--,this.terminal?.write(`\x1B[D`))}handleArrowRight(){this.cursorPos>=this.currentLine.length||(this.cursorPos++,this.terminal?.write(`\x1B[C`))}handleHome(){this.cursorPos!==0&&(this.terminal?.write(`\x1b[${this.cursorPos}D`),this.cursorPos=0)}handleEnd(){let e=this.currentLine.length-this.cursorPos;e<=0||(this.terminal?.write(`\x1b[${e}C`),this.cursorPos=this.currentLine.length)}handleHistoryUp(){if(this.history.length===0)return;let e=this.historyIndex===-1?this.history.length-1:Math.max(0,this.historyIndex-1);this.historyIndex=e,this.replaceLine(this.history[e])}handleHistoryDown(){if(this.historyIndex===-1)return;let e=this.historyIndex+1;e>=this.history.length?(this.historyIndex=-1,this.replaceLine(``)):(this.historyIndex=e,this.replaceLine(this.history[e]))}async handleTab(){if(!this.terminal||this.tabBusy)return;this.tabBusy=!0;let e=this.isExecuting;this.isExecuting=!0;try{let{currentWord:e,isFirstWord:t,compgenCmd:n}=d(this.currentLine.slice(0,this.cursorPos));this.suppressOutput=!0;let r=``;try{r=(await this.client.exec(n)).stdout}finally{this.suppressOutput=!1}let i=r.split(`
5
5
  `).filter(Boolean);if(i.length===0)return;if(i.length===1){let n=i[0],r=n.slice(e.length);r&&this.insertText(r);let a=` `;if(!t){this.suppressOutput=!0;try{(await this.client.exec(f(n))).stdout.trim()===n&&(a=`/`)}finally{this.suppressOutput=!1}}this.insertText(a);return}let a=p(i).slice(e.length);if(a){this.insertText(a);return}this.terminal.writeln(``),this.terminal.writeln(i.map(e=>e.split(`/`).pop()??e).join(` `)),this.showPrompt(),this.terminal.write(this.currentLine);let o=this.currentLine.length-this.cursorPos;o>0&&this.terminal.write(`\x1b[${o}D`)}catch(e){console.warn(`[RemoteTerminal] Tab completion failed:`,e instanceof Error?e.message:String(e))}finally{this.tabBusy=!1,this.isExecuting=e}}insertText(e){if(!this.terminal||e.length===0)return;let t=this.currentLine.slice(this.cursorPos);this.currentLine=this.currentLine.slice(0,this.cursorPos)+e+this.currentLine.slice(this.cursorPos),this.cursorPos+=e.length,this.terminal.write(e),t.length>0&&(this.terminal.write(t),this.terminal.write(`\x1b[${t.length}D`))}replaceLine(e){if(!this.terminal)return;let t=this.currentLine.length-this.cursorPos;t>0&&this.terminal.write(`\x1b[${t}C`),this.terminal.write(`\r`),this.terminal.write(`\x1b[${o+this.currentLine.length}D`),this.terminal.write(`\x1B[K`),this.showPrompt(),this.terminal.write(e),this.currentLine=e,this.cursorPos=e.length}handleEnter(){if(!this.terminal)return;let e=this.currentLine.trim();if(this.terminal.writeln(``),this.currentLine=``,this.cursorPos=0,this.historyIndex=-1,!e){this.showPrompt();return}this.history[this.history.length-1]!==e&&this.history.push(e);let t=c(e);if(t){this.runRemoteWithLocalPicker(e,t);return}this.runRemote(e)}async runRemoteWithLocalPicker(t,n){this.isExecuting=!0;try{let r=window;if(typeof r.showDirectoryPicker!=`function`){this.terminal?.writeln(`mount: File System Access API not available
@@ -1 +1 @@
1
- import{X as e}from"./index-CCGqFzR9.js";var t=e(`secret-env`);function n(e){return/^[A-Za-z_][A-Za-z0-9_]*$/.test(e)}async function r(){if(typeof chrome<`u`&&chrome?.runtime?.id)return new Promise(e=>{chrome.runtime.sendMessage({type:`secrets.list-masked-entries`},r=>{let i=r,a={};for(let e of i?.entries??[])e.name&&e.maskedValue&&n(e.name)&&(a[e.name]=e.maskedValue);Object.keys(a).length>0&&t.info(`Loaded masked secrets into shell env from SW`,{count:Object.keys(a).length}),e(a)})});try{let e=await fetch(`/api/secrets/masked`);if(!e.ok)return t.warn(`Failed to fetch masked secrets`,{status:e.status}),{};let r=await e.json();if(!Array.isArray(r)||r.length===0)return{};let i={};for(let e of r)e.name&&e.maskedValue&&n(e.name)&&(i[e.name]=e.maskedValue);return Object.keys(i).length>0&&t.info(`Loaded masked secrets into shell env`,{count:Object.keys(i).length}),i}catch(e){return t.debug(`Could not fetch masked secrets (server may be unavailable)`,{error:e instanceof Error?e.message:String(e)}),{}}}export{r as fetchSecretEnvVars};
1
+ import{X as e}from"./index-BdDYVKjf.js";var t=e(`secret-env`);function n(e){return/^[A-Za-z_][A-Za-z0-9_]*$/.test(e)}async function r(){if(typeof chrome<`u`&&chrome?.runtime?.id)return new Promise(e=>{chrome.runtime.sendMessage({type:`secrets.list-masked-entries`},r=>{let i=r,a={};for(let e of i?.entries??[])e.name&&e.maskedValue&&n(e.name)&&(a[e.name]=e.maskedValue);Object.keys(a).length>0&&t.info(`Loaded masked secrets into shell env from SW`,{count:Object.keys(a).length}),e(a)})});try{let e=await fetch(`/api/secrets/masked`);if(!e.ok)return t.warn(`Failed to fetch masked secrets`,{status:e.status}),{};let r=await e.json();if(!Array.isArray(r)||r.length===0)return{};let i={};for(let e of r)e.name&&e.maskedValue&&n(e.name)&&(i[e.name]=e.maskedValue);return Object.keys(i).length>0&&t.info(`Loaded masked secrets into shell env`,{count:Object.keys(i).length}),i}catch(e){return t.debug(`Could not fetch masked secrets (server may be unavailable)`,{error:e instanceof Error?e.message:String(e)}),{}}}export{r as fetchSecretEnvVars};