sliccy 2.41.2 → 2.41.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ui/assets/__vite-browser-external-CTFk2Lkt.js +1 -0
- package/dist/ui/assets/__vite-browser-external-DWqD2dLY.js +1 -0
- package/dist/ui/assets/addon-fit-yURJy3qA.js +13 -0
- package/dist/ui/assets/adobe-BsSm3jFi.js +1 -0
- package/dist/ui/assets/{adobe-B289PMn-.js → adobe-CXSEcJ7K.js} +1 -1
- package/dist/ui/assets/{agent-bridge-VMFIuopH.js → agent-bridge-BlJXkod_.js} +1 -1
- package/dist/ui/assets/agent-message-to-chat-MNM38dyt.js +7 -0
- package/dist/ui/assets/anthropic-D0T8mqRV.js +39 -0
- package/dist/ui/assets/{anthropic-BNzn9jxd.js → anthropic-DIK0AGND.js} +1 -1
- package/dist/ui/assets/azure-ai-foundry-CaxHzIfg.js +1 -0
- package/dist/ui/assets/{azure-openai-WlNLdxb8.js → azure-openai-DiTytjhJ.js} +1 -1
- package/dist/ui/assets/azure-openai-DojHdJL3.js +1 -0
- package/dist/ui/assets/azure-openai-responses-C3mV0HRP.js +1 -0
- package/dist/ui/assets/{azure-openai-responses-2u29KiQ4.js → azure-openai-responses-CV1ipjUS.js} +1 -1
- package/dist/ui/assets/bedrock-camp-CSnbcnRX.js +5 -0
- package/dist/ui/assets/{bedrock-camp-BYUI3MPM.js → bedrock-camp-CkDNhlzI.js} +3 -3
- package/dist/ui/assets/bsh-watchdog-BPXsh13l.js +42 -0
- package/dist/ui/assets/chunk-Cn1BcAw8.js +1 -0
- package/dist/ui/assets/cost-command-HWF_AGaW.js +1 -0
- package/dist/ui/assets/db-Cdoacmjm.js +1 -0
- package/dist/ui/assets/diagnostics-DgDchIlf.js +1 -0
- package/dist/ui/assets/dist-CdiravWB.js +43 -0
- package/dist/ui/assets/dist-Dvfs0thb.js +9 -0
- package/dist/ui/assets/es-Bu6eKDug.js +36 -0
- package/dist/ui/assets/{fs-DGvU58ce.js → fs-DLmF36ib.js} +3 -3
- package/dist/ui/assets/fs-gdBGOI77.js +3 -0
- package/dist/ui/assets/git-config-CdPD25HI.js +7 -0
- package/dist/ui/assets/{github-BdBT7jQP.js → github-B32rSqUy.js} +2 -2
- package/dist/ui/assets/github-BQrJLgkA.js +1 -0
- package/dist/ui/assets/github-copilot-headers-CnBwk0a7.js +1 -0
- package/dist/ui/assets/google-Cbh4PPo4.js +1 -0
- package/dist/ui/assets/{google-DXyEIJQt.js → google-O7ym9XvO.js} +1 -1
- package/dist/ui/assets/google-shared-D8AVju7J.js +269 -0
- package/dist/ui/assets/google-vertex-BNPwBn3T.js +1 -0
- package/dist/ui/assets/headers-1z24dq00.js +1 -0
- package/dist/ui/assets/{index-2YPPqfMe.js → index-9RNwBuQi.js} +153 -153
- package/dist/ui/assets/js-realm-worker-CxL23t6B.js +1 -0
- package/dist/ui/assets/kernel-worker-D5nK6-Lp.js +7014 -0
- package/dist/ui/assets/lick-manager-proxy-CU8QckrD.js +1 -0
- package/dist/ui/assets/local-llm-D3sFAL4U.js +2 -0
- package/dist/ui/assets/{local-llm-v6E29R0f.js → local-llm-DLpX9b2N.js} +1 -1
- package/dist/ui/assets/logger-BHrAkMIS.js +1 -0
- package/dist/ui/assets/magick-wasm-2iwpLX2j.js +1 -0
- package/dist/ui/assets/mime-types-CtECiBq5.js +1 -0
- package/dist/ui/assets/{mistral-DCT8MOLt.js → mistral-BYAsX48J.js} +1 -1
- package/dist/ui/assets/mistral-C0WEyWP1.js +46 -0
- package/dist/ui/assets/mount-5yZEk140.js +1 -0
- package/dist/ui/assets/{mount-DGceyJAY.js → mount-CYLV7YdV.js} +2 -2
- package/dist/ui/assets/mount-id-DTHL0KHy.js +1 -0
- package/dist/ui/assets/{nuke-command-B2Cr8yRU.js → nuke-command-DZ_jreqt.js} +1 -1
- package/dist/ui/assets/oauth-service-BOg00ewY.js +1 -0
- package/dist/ui/assets/{offscreen-client-BZcNIg4B.js → offscreen-client-D6Tnw-Q6.js} +1 -1
- package/dist/ui/assets/{onboarding-orchestrator-DNrrFQR0.js → onboarding-orchestrator-BSkXArrf.js} +1 -1
- package/dist/ui/assets/openai-BHyrBS3D.js +16 -0
- package/dist/ui/assets/{openai-codex-responses-DcX-CN3X.js → openai-codex-responses-BXWvnlPi.js} +1 -1
- package/dist/ui/assets/openai-codex-responses-Dp-5SEuz.js +7 -0
- package/dist/ui/assets/openai-completions-BE9W0d4w.js +5 -0
- package/dist/ui/assets/{openai-completions-Bew_ZujQ.js → openai-completions-D2C4y3qd.js} +1 -1
- package/dist/ui/assets/{openai-responses-C6R1BTfa.js → openai-responses-B_9yL_Y1.js} +1 -1
- package/dist/ui/assets/openai-responses-BvAlkAlM.js +1 -0
- package/dist/ui/assets/{openai-responses-shared-6i2YUTcv.js → openai-responses-shared-Cn97lSlK.js} +1 -1
- package/dist/ui/assets/openai-responses-shared-RmEhlV31.js +12 -0
- package/dist/ui/assets/pdfjs-Dcpzfrlx.js +54 -0
- package/dist/ui/assets/provider-settings-CNuleEei.js +2 -0
- package/dist/ui/assets/provider-settings-oSgrKsb-.js +90 -0
- package/dist/ui/assets/providers-BXn6VB-n.js +1 -0
- package/dist/ui/assets/py-realm-worker-BLXn1Tp_.js +23 -0
- package/dist/ui/assets/pyodide-C2X7foBW.js +3 -0
- package/dist/ui/assets/pyodide-Nsz9RSYM.js +3 -0
- package/dist/ui/assets/remote-cache-BSVr74Dp.js +1 -0
- package/dist/ui/assets/sanitize-unicode-BzRhXPLL.js +1 -0
- package/dist/ui/assets/secret-masking-BMzkw8ZK.js +1 -0
- package/dist/ui/assets/{spawn-DPstb7fx.js → spawn-Cz9T1Juk.js} +1 -1
- package/dist/ui/assets/sprinkle-bridge-channel-DhKQ_srk.js +1 -0
- package/dist/ui/assets/sprinkle-proxy-DFfNIL2L.js +1 -0
- package/dist/ui/assets/sql-wasm-D1epIc7x.js +2 -0
- package/dist/ui/assets/transform-messages-BdxHijhT.js +1 -0
- package/dist/ui/assets/tray-follower-status-DmK3Afse.js +1 -0
- package/dist/ui/assets/upgrade-detection-DPUv129B.js +1 -0
- package/dist/ui/assets/xterm-BUXrv9NX.js +48 -0
- package/dist/ui/index.html +7 -7
- package/dist/ui/packages/webapp/index.html +7 -7
- package/package.json +1 -1
- package/dist/ui/assets/cost-command-C-iNLlwZ.js +0 -1
- package/dist/ui/assets/js-realm-worker-1pc5_MyD.js +0 -1
- package/dist/ui/assets/kernel-worker-F5kL1tTL.js +0 -7573
- package/dist/ui/assets/provider-settings-CZjUI9ty.js +0 -2
- package/dist/ui/assets/py-realm-worker-C_uxhdB2.js +0 -25
- package/dist/ui/assets/tray-follower-status-BrSKMPaE.js +0 -1
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/magick-wasm-BnlzD3um.js","assets/preload-helper-ca-nBW7U.js","assets/azure-openai-WlNLdxb8.js","assets/bedrock-camp-BYUI3MPM.js","assets/chunk-jRWAZmH_.js","assets/index-2YPPqfMe.js","assets/simple-options-B0cR4giT.js","assets/fs-DGvU58ce.js","assets/logger-B-No_qN_.js","assets/path-utils-CNNVZ3-O.js","assets/tray-follower-status-BrSKMPaE.js","assets/mime-types-DL940yDZ.js","assets/mount-picker-popup-BLHoVG3y.js","assets/mount-DGceyJAY.js","assets/index-RVLUy-Qx.css","assets/openai-NzrumIkM.js","assets/local-llm-v6E29R0f.js","assets/openai-completions-Bew_ZujQ.js","assets/github-copilot-headers-DLK82thn.js","assets/headers-CeeP1wvy.js","assets/sanitize-unicode-DANurEy1.js","assets/adobe-B289PMn-.js","assets/github-BdBT7jQP.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{r as e}from"./chunk-jRWAZmH_.js";import{t}from"./logger-B-No_qN_.js";import{t as n}from"./preload-helper-ca-nBW7U.js";import{i as r,r as i,t as a}from"./bedrock-camp-BYUI3MPM.js";import{d as o,l as s,u as c}from"./simple-options-B0cR4giT.js";import{o as l,s as u,t as d}from"./tray-follower-status-BrSKMPaE.js";import{o as f}from"./index-2YPPqfMe.js";function p(e){if(!Number.isFinite(e)||e<=0)return`0 B`;let t=[`B`,`KB`,`MB`,`GB`],n=e,r=0;for(;n>=1024&&r<t.length-1;)n/=1024,r++;return`${n>=10||r===0?Math.round(n):Math.round(n*10)/10} ${t[r]}`}function m(e){let t=e.mimeType||`application/octet-stream`;return`${e.name} (${t}, ${p(e.size)})`}var h=t(`image-processor`),g=3932160,_=1568,v=new Set([`image/jpeg`,`image/png`,`image/gif`,`image/webp`]);function y(e){return v.has(e)}function b(e,t){try{if(t===`image/png`){if(e.length<32)return null;let t=atob(e.slice(0,32)),n=t.charCodeAt(16)<<24|t.charCodeAt(17)<<16|t.charCodeAt(18)<<8|t.charCodeAt(19),r=t.charCodeAt(20)<<24|t.charCodeAt(21)<<16|t.charCodeAt(22)<<8|t.charCodeAt(23);return n>0&&r>0?{width:n,height:r}:null}if(t===`image/gif`){if(e.length<16)return null;let t=atob(e.slice(0,16)),n=t.charCodeAt(6)|t.charCodeAt(7)<<8,r=t.charCodeAt(8)|t.charCodeAt(9)<<8;return n>0&&r>0?{width:n,height:r}:null}if(t===`image/jpeg`){let t=Math.min(21846*4,e.length),n=atob(e.slice(0,t));for(let e=0;e<n.length-8;e++)if(n.charCodeAt(e)===255){let t=n.charCodeAt(e+1);if(t===192||t===194){let t=n.charCodeAt(e+5)<<8|n.charCodeAt(e+6),r=n.charCodeAt(e+7)<<8|n.charCodeAt(e+8);return r>0&&t>0?{width:r,height:t}:null}}}}catch{}return null}async function x(e){if(!y(e.mimeType))return h.warn(`Unsupported image format`,{mimeType:e.mimeType}),{type:`text`,text:`[Image removed: unsupported format "${e.mimeType}". Supported: JPEG, PNG, GIF, WebP]`};let t=e.data.length,r=b(e.data,e.mimeType);if(!(t>5242880||r!==null&&(r.width>8e3||r.height>8e3)||r!==null&&Math.max(r.width,r.height)>1568))return e;h.info(`Image needs processing`,{base64Size:t,dimensions:r?`${r.width}x${r.height}`:`unknown`,reason:t>5242880?`size`:`dimensions`});let i,a;try{let e=await n(()=>import(`./magick-wasm-BnlzD3um.js`),__vite__mapDeps([0,1]));i=e.getMagick,a=e.MIME_TO_MAGICK_FORMAT}catch(e){return h.error(`ImageMagick WASM module unavailable`,{error:e instanceof Error?e.message:String(e)}),{type:`text`,text:`[Image removed: resize service unavailable (ImageMagick WASM could not be loaded)]`}}let o;try{o=await i()}catch(e){return h.error(`ImageMagick WASM initialization failed`,{error:e instanceof Error?e.message:String(e)}),{type:`text`,text:`[Image removed: resize service unavailable (WASM init failed)]`}}try{let n=atob(e.data),r=new Uint8Array(n.length);for(let e=0;e<n.length;e++)r[e]=n.charCodeAt(e);let i={data:null,mime:e.mimeType};if(await o.ImageMagick.read(r,async t=>{let n=t.width,r=t.height,o=Math.max(n,r);if(o>1568){let e=_/o,i=Math.round(n*e),a=Math.round(r*e);t.resize(i,a),h.info(`Resized image`,{from:`${n}x${r}`,to:`${i}x${a}`})}let s=a[e.mimeType]||`JPEG`;t.write(s,e=>{i.data=new Uint8Array(e)}),i.data&&i.data.length>g&&s!==`JPEG`?(h.info(`Still over 5MB, compressing to JPEG q80`),t.quality=80,t.write(`JPEG`,e=>{i.data=new Uint8Array(e)}),i.mime=`image/jpeg`):i.data&&i.data.length>g&&(h.info(`Still over 5MB as JPEG, reducing quality to 60`),t.quality=60,t.write(`JPEG`,e=>{i.data=new Uint8Array(e)}))}),!i.data)return h.warn(`ImageMagick produced no output`),{type:`text`,text:`[Image removed: could not be processed (empty output from resize)]`};if(i.data.length>g)return h.warn(`Image still over 5MB after resize+compress`,{size:i.data.length}),{type:`text`,text:`[Image removed: still ${Math.round(i.data.length/1024/1024*10)/10}MB after resize and compression, exceeds 5MB API limit]`};let s=``;for(let e=0;e<i.data.length;e++)s+=String.fromCharCode(i.data[e]);let c=btoa(s);return h.info(`Image processed successfully`,{originalBase64:t,newBase64:c.length,mimeType:i.mime}),{type:`image`,data:c,mimeType:i.mime}}catch(n){return h.error(`Image data processing failed (corrupt or unreadable)`,{mimeType:e.mimeType,estimatedBytes:t,error:n instanceof Error?n.message:String(n)}),{type:`text`,text:`[Image removed: image data could not be processed (${n instanceof Error?n.message:`corrupt or unreadable`})]`}}}t(`tool-adapter`),t(`context-compaction`);function S(e,t){if(e.state===`inactive`&&t.state===`inactive`)return{kind:`hidden`};if(e.state===`leader`&&e.session?.joinUrl)return{kind:`leader-copy`,joinUrl:e.session.joinUrl,label:`Enable multi-browser sync`,caption:`Share this URL to connect more browsers.`};if(e.state!==`inactive`){let t=e.state===`connecting`?`Setting up multi-browser sync…`:e.state===`reconnecting`?`Reconnecting…`:`Sync service unreachable.`;return{kind:`leader-pending`,label:`Multi-browser sync`,caption:e.error??t}}return{kind:`follower`,label:`Multi-browser sync`,caption:t.error??t.lastError??C(t.state)??`Mirroring another browser.`}}function C(e){switch(e){case`connected`:return`Connected — mirroring another browser.`;case`connecting`:return`Connecting to the other browser…`;case`reconnecting`:return`Reconnecting…`;case`disconnected`:return`Disconnected from the other browser.`;default:return null}}function w(e){let t=e.trim();if(!t)return`Paste a sync URL to continue.`;let n=null;try{n=new URL(t)}catch{return`That doesn’t look like a URL. Paste the full https://… link from the other browser.`}return n.protocol!==`https:`&&n.protocol!==`http:`?`Sync URLs must start with https://.`:n.pathname.includes(`/join/`)?`That sync URL is malformed. Re-copy it from the other browser and try again.`:`This URL is missing the /join/… capability. Use “Enable multi-browser sync” on the other browser.`}var T=Object.assign({"/packages/dev-tools/providers.build.json":{include:[`*`],exclude:[]}})[`/packages/dev-tools/providers.build.json`]??{include:[`*`],exclude:[]};function E(e){let{include:t,exclude:n}=T;return n.includes(`*`)||n.includes(e)?!1:!!(t.includes(`*`)||t.includes(e))}var D=Object.assign({"./built-in/azure-ai-foundry.ts":()=>n(()=>import(`./azure-ai-foundry-B1O-wE_V.js`),[]),"./built-in/azure-openai.ts":()=>n(()=>import(`./azure-openai-WlNLdxb8.js`),__vite__mapDeps([2,3,4,5,1,6,7,8,9,10,11,12,13,14,15])),"./built-in/bedrock-camp.ts":()=>n(()=>import(`./bedrock-camp-BYUI3MPM.js`).then(e=>e.n),__vite__mapDeps([3,4,5,1,6,7,8,9,10,11,12,13,14])),"./built-in/local-llm.ts":()=>n(()=>import(`./local-llm-v6E29R0f.js`),__vite__mapDeps([16,3,4,5,1,6,7,8,9,10,11,12,13,14,17,18,19,20,15]))}),O=Object.assign({"/packages/webapp/providers/adobe.ts":()=>n(()=>import(`./adobe-B289PMn-.js`),__vite__mapDeps([21,1,3,4,5,6,7,8,9,10,11,12,13,14])),"/packages/webapp/providers/github.ts":()=>n(()=>import(`./github-BdBT7jQP.js`),__vite__mapDeps([22,1,3,4,5,6,7,8,9,10,11,12,13,14]))}),k=new Map,A=null;function j(){return A||(A=(async()=>{for(let[e,t]of Object.entries(D)){let e=await t();e.config&&E(e.config.id)&&(k.set(e.config.id,e.config),e.register?.())}for(let[e,t]of Object.entries(O)){let e=await t();e.config&&(k.set(e.config.id,e.config),e.register?.())}})(),A)}function M(e){return k.get(e)}function N(){return[...k.keys()]}var ee=e({addAccount:()=>J,applyProviderDefaults:()=>W,clearAllSettings:()=>ve,describeInvalidJoinUrl:()=>w,downloadProviders:()=>_e,exportProviders:()=>ge,getAccounts:()=>K,getAllAvailableModels:()=>se,getApiKey:()=>he,getApiKeyForProvider:()=>ue,getApiVersionForProvider:()=>fe,getAvailableProviders:()=>z,getBaseUrlForProvider:()=>X,getDeploymentForProvider:()=>de,getProviderConfig:()=>B,getProviderModels:()=>H,getSelectedModelId:()=>Z,getSelectedProvider:()=>Q,isModelHiddenFromPicker:()=>G,removeAccount:()=>Y,resolveCurrentModel:()=>$,resolveModelById:()=>ye,saveOAuthAccount:()=>ce,setSelectedModelId:()=>pe,showProviderSettings:()=>Ce}),P=s,F=c;function I(){return typeof chrome<`u`&&!!chrome?.runtime?.id}var L=`slicc_accounts`,R=`selected-model`,te=[`slicc_provider`,`slicc_api_key`,`slicc_base_url`,`anthropic_api_key`,`api_provider`,`azure_resource`,`bedrock_region`],ne=!1;function re(){if(!ne){ne=!0;for(let e of te)try{localStorage.removeItem(e)}catch{}}}function z(){let e=o().filter(E),t=N();return[...new Set([...e,...t])]}function B(e){return M(e)||{id:e,name:e.split(`-`).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `),description:`${e} provider`,requiresApiKey:!0,requiresBaseUrl:!1}}function V(e,t){t.context_window!==void 0&&(e.contextWindow=t.context_window),t.max_tokens!==void 0&&(e.maxTokens=t.max_tokens),t.reasoning!==void 0&&(e.reasoning=t.reasoning),t.input!==void 0&&(e.input=t.input),t.compat!==void 0&&(e.compat={...e.compat??{},...t.compat})}function H(e){try{if(e===`bedrock-camp`){let e=a(X(`bedrock-camp`)),t=F(`amazon-bedrock`).filter(t=>r(t,e)),n=new Set(t.map(e=>e.id)),o=i().filter(t=>r(t,e)&&!n.has(t.id));return[...t,...o].map(e=>({...e,api:`bedrock-camp-converse`,provider:`bedrock-camp`}))}let t=B(e);if(t.getModelIds){let n;try{n=t.getModelIds()}catch(t){return U.error(`Provider getModelIds callback failed`,{providerId:e,error:t instanceof Error?t.message:String(t)}),[]}let r=new Map;for(let e of o())try{for(let t of F(e))r.set(t.id,t)}catch{}return n.map(n=>{let i=`${e}-${n.api===`openai`?`openai`:`anthropic`}`,a=r.get(n.id),o=a?{...a,api:i,provider:e}:{id:n.id,name:n.name??n.id,provider:e,api:i,baseUrl:``,contextWindow:2e5,maxTokens:16384,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},inputCost:0,outputCost:0,cacheReadCost:0,cacheWriteCost:0,reasoning:!0},s=t.modelOverrides?.[n.id];return s&&V(o,s),V(o,n),o})}if(t.isOAuth){let n=F(`anthropic`),r=`${e}-anthropic`;return n.map(n=>{let i={...n,api:r,provider:e},a=t.modelOverrides?.[n.id];return a&&V(i,a),i})}return F(e===`azure-ai-foundry`?`anthropic`:e)}catch(t){return U.error(`Failed to load models`,{providerId:e,error:t instanceof Error?t.message:String(t)}),[]}}var ie=Object.assign({})[`/packages/webapp/providers.json`]??[],U=t(`provider-settings`);function W(e=ie){if(e.length===0||K().length>0)return;let t=new Set(z());for(let n of e)if(!(!n.providerId||!n.apiKey)){if(!t.has(n.providerId)){U.warn(`Unknown provider "${n.providerId}" in providers.json — skipping`);continue}J(n.providerId,n.apiKey,n.baseUrl)}let n=e.find(e=>e.providerId&&e.apiKey&&t.has(e.providerId));n?.model&&!localStorage.getItem(R)&&localStorage.setItem(R,`${n.providerId}:${n.model}`)}var ae=[/haiku/i];function G(e){return ae.some(t=>t.test(e))}function oe(e){return e.filter(e=>!G(e.id))}function se(){let e=K();if(e.length===0)return[];let t=new Map;for(let n of e){if(t.has(n.providerId))continue;let e=oe(H(n.providerId));if(e.length===0)continue;let r=B(n.providerId),i={providerId:n.providerId,providerName:r.name,models:e};t.set(n.providerId,i)}return[...t.values()]}function K(){re();let e=localStorage.getItem(L);if(!e)return[];try{let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>typeof e==`object`&&!!e&&typeof e.providerId==`string`&&typeof e.apiKey==`string`):[]}catch{return[]}}function q(e){localStorage.setItem(L,JSON.stringify(e))}function J(e,t,n,r,i){let a=K().filter(t=>t.providerId!==e),o={providerId:e,apiKey:t};n&&(o.baseUrl=n),r&&(o.deployment=r),i&&(o.apiVersion=i),a.push(o),q(a)}function Y(e){q(K().filter(t=>t.providerId!==e));let t=localStorage.getItem(R)??``,n=t.indexOf(`:`);n>0&&t.slice(0,n)===e&&localStorage.removeItem(R)}function ce(e){let t=K().find(t=>t.providerId===e.providerId),n=K().filter(t=>t.providerId!==e.providerId);n.push({providerId:e.providerId,apiKey:``,accessToken:e.accessToken,refreshToken:e.refreshToken,tokenExpiresAt:e.tokenExpiresAt,userName:e.userName,userAvatar:e.userAvatar,baseUrl:e.baseUrl??t?.baseUrl}),q(n)}var le=`local`;function ue(e){let t=K().find(t=>t.providerId===e);return t?t.accessToken||t.apiKey||(B(e).optionalApiKey?le:null):null}function X(e){return K().find(t=>t.providerId===e)?.baseUrl??null}function de(e){return K().find(t=>t.providerId===e)?.deployment??null}function fe(e){return K().find(t=>t.providerId===e)?.apiVersion??null}function Z(){let e=localStorage.getItem(R)||``,t=e.indexOf(`:`);return t>=0?e.slice(t+1):e}function pe(e){if(e.includes(`:`))localStorage.setItem(R,e);else{let t=Q();localStorage.setItem(R,`${t}:${e}`)}}function me(){return localStorage.getItem(R)||``}function Q(){let e=me(),t=e.indexOf(`:`);if(t>0)return e.slice(0,t);let n=K();return n.length>0?n[0].providerId:`anthropic`}function he(){return ue(Q())}function ge(){let e=K(),t=Q(),n=Z();return e.map(e=>{let r={providerId:e.providerId,apiKey:e.apiKey};return e.baseUrl&&(r.baseUrl=e.baseUrl),e.providerId===t&&n&&(r.model=n),r})}function _e(){let e=JSON.stringify(ge(),null,2),t=new Blob([e],{type:`application/json`}),n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=`providers.json`,r.click(),URL.revokeObjectURL(n)}function ve(){localStorage.removeItem(L),localStorage.removeItem(R);for(let e of te)localStorage.removeItem(e)}function ye(e){if(!e)return $();let t=Q(),n=X(t);try{let r=B(t),i=P(r.isOAuth||t===`azure-ai-foundry`?`anthropic`:t===`bedrock-camp`?`amazon-bedrock`:t,e);if(!i?.id)throw Error(`Model ${e} not found`);let a=i;return r.isOAuth?a=H(t).find(t=>t.id===e)||{...a,api:`${t}-anthropic`,provider:t}:t===`bedrock-camp`&&(a={...a,api:`bedrock-camp-converse`,provider:`bedrock-camp`}),n&&(a={...a,baseUrl:n}),a}catch{return $()}}function $(){let e=Q(),t=Z(),n=X(e),r=H(e),i=B(e),a=i.defaultModelId?r.find(e=>e.id.toLowerCase().includes(i.defaultModelId.toLowerCase()))?.id:void 0,o=t||a||r[0]?.id||`claude-sonnet-4-6`;try{let t=B(e),i=t.isOAuth||e===`azure-ai-foundry`?`anthropic`:e===`bedrock-camp`?`amazon-bedrock`:e,a=P(i,o);if(!a?.id)throw Error(`Model ${o} not found in ${i} registry`);let s=a;return t.isOAuth?s=r.find(e=>e.id===o)||{...s,api:`${e}-anthropic`,provider:e}:e===`bedrock-camp`&&(s={...s,api:`bedrock-camp-converse`,provider:`bedrock-camp`}),n&&(s={...s,baseUrl:n}),s}catch{let e=r.find(e=>e.id===o);return e?n?{...e,baseUrl:n}:e:P(`anthropic`,`claude-sonnet-4-0`)}}function be(e){return e.length<=10?`****`:e.slice(0,4)+`...`+e.slice(-4)}function xe(e){let t=`http://www.w3.org/2000/svg`,n=document.createElementNS(t,`svg`);n.setAttribute(`width`,`14`),n.setAttribute(`height`,`14`),n.setAttribute(`viewBox`,`0 0 20 20`),n.setAttribute(`fill`,`none`),n.setAttribute(`stroke`,`currentColor`),n.setAttribute(`stroke-width`,`1.5`),n.setAttribute(`stroke-linecap`,`round`),n.setAttribute(`stroke-linejoin`,`round`);for(let r of e){let e=document.createElementNS(t,`path`);e.setAttribute(`d`,r),n.appendChild(e)}return n}var Se={pen:[`M14.3 3.3a1.5 1.5 0 0 1 2.1 0l.3.3a1.5 1.5 0 0 1 0 2.1L7.7 14.8l-3.2.7.7-3.2z`],trash:[`M4 6h12`,`M8 6V4a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2`,`M6 6v10a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V6`]};function Ce(e){return f(`button`),new Promise(t=>{let r=localStorage.getItem(L)??``,i=document.createElement(`div`);i.className=`dialog-overlay`;let a=document.createElement(`div`);a.className=`dialog`,a.style.cssText=`max-width: 480px; width: 90vw; padding: 32px;`,K().length>0?o():e?.autoJoinUrl?c(e.autoJoinUrl):e?.preferTrayJoin?f():s(),i.appendChild(a),document.body.appendChild(i);function o(){a.innerHTML=``;let e=document.createElement(`div`);e.className=`dialog__title`,e.textContent=`Accounts`,a.appendChild(e);let n=K(),c=`background: transparent; border: 1px solid var(--s2-border-subtle); color: var(--s2-content-secondary); border-radius: var(--s2-radius-s); padding: 6px; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: color 0.15s, border-color 0.15s;`;if(n.length===0){let e=document.createElement(`div`);e.className=`dialog__desc`,e.textContent=`No accounts configured.`,a.appendChild(e)}else{let e=document.createElement(`div`);e.style.cssText=`margin-bottom: 16px;`;for(let t of n){let n=B(t.providerId),r=document.createElement(`div`);r.style.cssText=`display: flex; align-items: center; justify-content: space-between; padding: 10px 12px; background: var(--s2-bg-layer-2); border-radius: var(--s2-radius-default); margin-bottom: 8px; border: 1px solid var(--s2-border-subtle);`;let i=document.createElement(`div`);i.style.cssText=`flex: 1; min-width: 0;`;let a=document.createElement(`div`);a.style.cssText=`font-size: 14px; font-weight: 600; color: var(--s2-content-default);`,a.textContent=n.name,i.appendChild(a);let l=document.createElement(`div`);l.style.cssText=`font-size: 11px; color: var(--s2-content-disabled); font-family: monospace; margin-top: 2px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;`,t.userName?l.textContent=t.userName:t.accessToken?l.textContent=`Logged in`:l.textContent=be(t.apiKey),t.baseUrl&&(l.textContent+=` • `+t.baseUrl),i.appendChild(l),r.appendChild(i);let u=document.createElement(`div`);u.style.cssText=`display: flex; gap: 4px; margin-left: 12px; flex-shrink: 0;`;let d=document.createElement(`button`);d.style.cssText=c,d.setAttribute(`aria-label`,`Edit account`),d.appendChild(xe(Se.pen)),d.addEventListener(`mouseenter`,()=>{d.style.color=`var(--s2-accent)`,d.style.borderColor=`var(--s2-accent)`}),d.addEventListener(`mouseleave`,()=>{d.style.color=`var(--s2-content-secondary)`,d.style.borderColor=`var(--s2-border-subtle)`}),d.addEventListener(`click`,()=>{s(t)}),u.appendChild(d);let f=document.createElement(`button`);f.style.cssText=c,f.setAttribute(`aria-label`,`Remove account`),f.appendChild(xe(Se.trash)),f.addEventListener(`mouseenter`,()=>{f.style.color=`var(--s2-negative)`,f.style.borderColor=`var(--s2-negative)`}),f.addEventListener(`mouseleave`,()=>{f.style.color=`var(--s2-content-secondary)`,f.style.borderColor=`var(--s2-border-subtle)`}),f.addEventListener(`click`,()=>{Y(t.providerId),o()}),u.appendChild(f),r.appendChild(u),e.appendChild(r)}a.appendChild(e)}let u=document.createElement(`div`);u.style.cssText=`display: flex; gap: 8px;`;let p=document.createElement(`button`);p.className=n.length>0?`dialog__btn dialog__btn--secondary`:`dialog__btn`,p.style.flex=`1`,p.textContent=`Add Account`,p.addEventListener(`click`,()=>s()),u.appendChild(p);let m=document.createElement(`button`);m.className=`dialog__btn dialog__btn--secondary`,m.style.flex=`1`,m.textContent=`Export`,m.addEventListener(`click`,()=>_e()),u.appendChild(m),a.appendChild(u);let h=document.createElement(`hr`);h.style.cssText=`border: none; border-top: 1px solid var(--s2-border-subtle); margin: 16px 0;`,a.appendChild(h);let g=document.createElement(`div`);g.className=`dialog__desc`,g.style.cssText=`font-weight: 600; margin-bottom: 8px;`,g.textContent=`Tray`,a.appendChild(g);let _=d(),v=_.state!==`inactive`,y=l(window.localStorage);if(v||y){let e=document.createElement(`div`);e.style.cssText=`font-size: 12px; color: var(--s2-content-secondary); margin-bottom: 8px;`,e.textContent=`Follower: ${v?_.state:`configured`}`,_.error&&(e.textContent+=` — ${_.error}`,e.style.color=`var(--slicc-cone)`),a.appendChild(e)}let b=document.createElement(`button`);b.className=`dialog__btn dialog__btn--secondary`,b.textContent=v||y?`Reconnect to other browser`:`Connect to another browser`,b.addEventListener(`click`,()=>f()),a.appendChild(b);let x=document.createElement(`hr`);x.style.cssText=`border: none; border-top: 1px solid var(--s2-border-subtle); margin: 16px 0;`,a.appendChild(x);let S=document.createElement(`button`);S.className=`dialog__btn`,S.textContent=`Get Started`,S.addEventListener(`click`,()=>{i.remove(),t((localStorage.getItem(L)??``)!==r)}),a.appendChild(S)}function s(e){a.innerHTML=``;let t=!!e,r=document.createElement(`div`);r.className=`dialog__title`,r.textContent=t?`Edit Account`:`Add Account`,a.appendChild(r);let i=document.createElement(`div`);i.className=`dialog__desc`,i.textContent=`Provider:`,a.appendChild(i);let s=document.createElement(`select`);if(s.className=`dialog__input`,s.style.marginBottom=`8px`,t){let t=B(e.providerId),n=document.createElement(`option`);n.value=e.providerId,n.textContent=t.name,s.appendChild(n),s.disabled=!0,s.style.opacity=`0.7`}else{let e=z(),t=new Set(K().map(e=>e.providerId)),n=[...e].sort((e,t)=>{let n=B(e).name,r=B(t).name;return n.localeCompare(r)});for(let e of n){if(t.has(e))continue;let n=B(e),r=document.createElement(`option`);r.value=e,r.textContent=n.name,s.appendChild(r)}}a.appendChild(s);let c=document.createElement(`div`);c.className=`dialog__desc`,c.style.cssText=`font-size: 12px; color: var(--s2-content-tertiary); margin-bottom: 16px; margin-top: -4px;`,a.appendChild(c);let l=document.createElement(`div`);l.style.cssText=`margin-bottom: 16px; display: none;`;let u=document.createElement(`button`);u.className=`dialog__btn`,u.textContent=`Login`,u.style.cssText=`width: 100%; margin-bottom: 8px;`,l.appendChild(u);let d=document.createElement(`div`);d.className=`dialog__desc`,d.style.cssText=`font-size: 12px; color: var(--s2-content-secondary); text-align: center;`,l.appendChild(d),u.addEventListener(`click`,async()=>{let e=s.value;if(!e)return;let t=B(e);if(!t.onOAuthLogin)return;let r=K().some(t=>t.providerId===e),i=X(e);if(t.requiresBaseUrl&&!v.value.trim()&&!i){d.textContent=`Base URL is required.`,d.style.color=`var(--slicc-cone)`,v.focus();return}t.requiresBaseUrl&&v.value.trim()&&J(e,``,v.value.trim()),d.textContent=`Opening login window...`;try{let{createOAuthLauncher:e}=await n(async()=>{let{createOAuthLauncher:e}=await import(`./oauth-service-CfTUWB9P.js`);return{createOAuthLauncher:e}},[]),r=e();await t.onOAuthLogin(r,o)}catch(t){if(!r)try{Y(e)}catch{}U.error(`OAuth login failed`,{providerId:e,error:t instanceof Error?t.message:String(t)}),d.textContent=`Login failed: ${t instanceof Error?t.message:String(t)}`}}),t&&e.userName&&(d.textContent=`Logged in as ${e.userName}`,u.textContent=`Re-login`),a.appendChild(l);let p=document.createElement(`div`),m=document.createElement(`div`);m.className=`dialog__desc`,p.appendChild(m);let h=document.createElement(`input`);h.className=`dialog__input`,h.type=`password`,h.autocomplete=`off`,h.spellcheck=!1,t&&(h.value=e.apiKey),p.appendChild(h),a.appendChild(p);let g=document.createElement(`div`),_=document.createElement(`div`);_.className=`dialog__desc`,_.textContent=`Base URL:`,g.appendChild(_);let v=document.createElement(`input`);v.className=`dialog__input`,v.type=`text`,v.autocomplete=`off`,v.spellcheck=!1,t&&e.baseUrl&&(v.value=e.baseUrl),g.appendChild(v);let y=document.createElement(`div`);y.className=`dialog__desc`,y.style.cssText=`font-size: 11px; color: var(--s2-content-secondary); margin-top: -12px; margin-bottom: 16px;`,g.appendChild(y),a.appendChild(g);let b=document.createElement(`div`);b.style.display=`none`;let x=document.createElement(`div`);x.className=`dialog__desc`,x.textContent=`Deployment:`,b.appendChild(x);let S=document.createElement(`input`);S.className=`dialog__input`,S.type=`text`,S.autocomplete=`off`,S.spellcheck=!1,t&&e.deployment&&(S.value=e.deployment),b.appendChild(S);let C=document.createElement(`div`);C.className=`dialog__desc`,C.style.cssText=`font-size: 11px; color: var(--s2-content-secondary); margin-top: -12px; margin-bottom: 16px;`,b.appendChild(C),a.appendChild(b);let w=document.createElement(`div`);w.style.display=`none`;let T=document.createElement(`div`);T.className=`dialog__desc`,T.textContent=`API Version:`,w.appendChild(T);let E=document.createElement(`input`);E.className=`dialog__input`,E.type=`text`,E.autocomplete=`off`,E.spellcheck=!1,t&&e.apiVersion&&(E.value=e.apiVersion),w.appendChild(E);let D=document.createElement(`div`);D.className=`dialog__desc`,D.style.cssText=`font-size: 11px; color: var(--s2-content-secondary); margin-top: -12px; margin-bottom: 16px;`,w.appendChild(D),a.appendChild(w);let O=document.createElement(`div`);O.style.cssText=`color: var(--slicc-cone); font-size: 12px; margin-bottom: 8px; display: none;`,a.appendChild(O);let k=document.createElement(`button`);k.className=`dialog__btn`,k.textContent=t?`Save`:`Add`;function A(){let e=s.value;if(!e)return;let t=B(e);if(c.textContent=t.description,t.isOAuth)l.style.display=``,p.style.display=`none`,g.style.display=t.requiresBaseUrl?``:`none`,t.requiresBaseUrl&&(v.placeholder=t.baseUrlPlaceholder||`https://...`,y.textContent=t.baseUrlDescription||``),u.textContent=`Login with ${t.name}`,k.style.display=`none`;else{l.style.display=`none`,m.textContent=`${t.requiresApiKey?`API Key`:`API Key (optional)`}${t.apiKeyEnvVar?` (${t.apiKeyEnvVar})`:``}:`,h.placeholder=t.apiKeyPlaceholder||`API key`;let e=t.requiresApiKey||t.optionalApiKey;p.style.display=e?``:`none`,v.placeholder=t.baseUrlPlaceholder||`https://...`,y.textContent=t.baseUrlDescription||``,g.style.display=t.requiresBaseUrl?``:`none`,k.style.display=``}t.requiresDeployment?(b.style.display=``,S.placeholder=t.deploymentPlaceholder||`deployment-name`,C.textContent=t.deploymentDescription||``):b.style.display=`none`,t.requiresApiVersion?(w.style.display=``,!E.value&&t.apiVersionDefault&&(E.value=t.apiVersionDefault),E.placeholder=t.apiVersionDefault||`api-version`,D.textContent=t.apiVersionDescription||``):w.style.display=`none`}s.addEventListener(`change`,()=>{O.style.display=`none`,A()}),A();function j(){let e=s.value;if(!e)return;let t=B(e);if(t.requiresApiKey&&h.value.trim().length<5){O.textContent=`API key is required (at least 5 characters).`,O.style.display=``,h.focus();return}if(t.requiresBaseUrl&&!v.value.trim()){O.textContent=`Base URL is required for this provider.`,O.style.display=``,v.focus();return}if(t.requiresDeployment&&!S.value.trim()){O.textContent=`Deployment name is required for this provider.`,O.style.display=``,S.focus();return}J(e,h.value.trim(),v.value.trim()||void 0,S.value.trim()||void 0,E.value.trim()||void 0),o()}k.addEventListener(`click`,j);let M=e=>{e.key===`Enter`&&j()};h.addEventListener(`keydown`,M),v.addEventListener(`keydown`,M),S.addEventListener(`keydown`,M),E.addEventListener(`keydown`,M),a.appendChild(k);let N=K().length>0;if(!t&&!N){let e=document.createElement(`button`);e.className=`dialog__btn dialog__btn--secondary`,e.style.marginTop=`8px`,e.textContent=`Connect to another browser`,e.addEventListener(`click`,()=>{f()}),a.appendChild(e)}else if(N){let e=document.createElement(`button`);e.className=`dialog__btn dialog__btn--secondary`,e.style.marginTop=`8px`,e.textContent=`Back`,e.addEventListener(`click`,()=>{o()}),a.appendChild(e)}requestAnimationFrame(()=>{let e=s.value;if(!e)return;let t=B(e);t.requiresApiKey?h.focus():t.requiresBaseUrl&&v.focus()})}function c(e){a.innerHTML=``;let n=document.createElement(`div`);n.className=`dialog__title`,n.textContent=`Connect this browser?`,a.appendChild(n);let r=document.createElement(`div`);r.className=`dialog__desc`,r.style.marginBottom=`12px`,r.textContent=`You’ve been invited to mirror another SLICC browser. Click below to start syncing.`,a.appendChild(r);let o=document.createElement(`div`);o.className=`dialog__desc`,o.style.cssText=`font-family: monospace; font-size: 11px; color: var(--s2-content-secondary); word-break: break-all; margin-bottom: 16px; padding: 8px; background: var(--s2-bg-secondary); border-radius: 4px;`,o.textContent=e.length>80?e.slice(0,40)+`…`+e.slice(-37):e,a.appendChild(o);let c=document.createElement(`div`);c.style.cssText=`font-size: 12px; color: var(--s2-content-secondary); margin-bottom: 8px; display: none;`,a.appendChild(c);let l=document.createElement(`button`);l.className=`dialog__btn`,l.textContent=`Connect`,l.addEventListener(`click`,()=>{let n=u(window.localStorage,e);if(!n){c.textContent=`Invalid sync URL.`,c.style.display=``,c.style.color=`var(--slicc-cone)`;return}if(I()){let e={type:`refresh-tray-runtime`,joinUrl:n.joinUrl,workerBaseUrl:n.workerBaseUrl};chrome.runtime.sendMessage({source:`panel`,payload:e}).catch(()=>{})}else window.dispatchEvent(new CustomEvent(`slicc:tray-join`,{detail:{joinUrl:n.joinUrl}}));c.textContent=`Connecting…`,c.style.display=``,c.style.color=`var(--s2-content-secondary)`,setTimeout(()=>{i.remove(),t(!1)},800)}),a.appendChild(l);let d=document.createElement(`button`);d.className=`dialog__btn dialog__btn--secondary`,d.style.marginTop=`8px`,d.textContent=`Set up an account instead`,d.addEventListener(`click`,()=>{s()}),a.appendChild(d)}function f(){a.innerHTML=``;let e=document.createElement(`div`);e.className=`dialog__title`,e.textContent=`Connect to another browser`,a.appendChild(e);let n=document.createElement(`div`);n.className=`dialog__desc`,n.style.marginBottom=`12px`,n.textContent=`Paste a multi-browser sync URL to mirror another SLICC browser.`,a.appendChild(n);let r=document.createElement(`details`);r.style.cssText=`margin-bottom: 12px; font-size: 12px; color: var(--s2-content-secondary);`;let o=document.createElement(`summary`);o.style.cssText=`cursor: pointer; user-select: none; color: var(--s2-content-secondary);`,o.textContent=`How do I get the sync URL?`,r.appendChild(o);let c=document.createElement(`div`);c.style.cssText=`margin-top: 8px; padding: 10px 12px; background: var(--s2-bg-layer-2); border-radius: var(--s2-radius-default); border: 1px solid var(--s2-border-subtle); line-height: 1.5;`;let l=document.createElement(`ol`);l.style.cssText=`margin: 0; padding-left: 20px;`;for(let e of[`On the other SLICC, click the avatar (top right).`,`Choose “Enable multi-browser sync” — the URL is copied automatically.`,`Paste it below. Both browsers must be on the same SLICC version.`]){let t=document.createElement(`li`);t.textContent=e,l.appendChild(t)}c.appendChild(l),r.appendChild(c),a.appendChild(r);let d=document.createElement(`div`);d.className=`dialog__desc`,d.textContent=`Sync URL:`,a.appendChild(d);let f=document.createElement(`input`);f.className=`dialog__input`,f.type=`text`,f.autocomplete=`off`,f.spellcheck=!1,f.placeholder=`https://www.sliccy.ai/join/<token>`,a.appendChild(f);let p=document.createElement(`div`);p.style.cssText=`color: var(--slicc-cone); font-size: 12px; margin-bottom: 8px; display: none;`,a.appendChild(p);let m=document.createElement(`div`);m.style.cssText=`font-size: 12px; color: var(--s2-content-secondary); margin-bottom: 8px; display: none;`;let h=document.createElement(`button`);h.className=`dialog__btn`,h.textContent=`Connect`,h.addEventListener(`click`,()=>{let e=f.value.trim();if(!e){p.textContent=`Paste a sync URL to continue.`,p.style.display=``,f.focus();return}let n=u(window.localStorage,e);if(!n){p.textContent=w(e),p.style.display=``,f.focus();return}if(I()){let e={type:`refresh-tray-runtime`,joinUrl:n.joinUrl,workerBaseUrl:n.workerBaseUrl};chrome.runtime.sendMessage({source:`panel`,payload:e}).catch(()=>{})}else window.dispatchEvent(new CustomEvent(`slicc:tray-join`,{detail:{joinUrl:n.joinUrl}}));m.textContent=`Connecting…`,m.style.display=``,m.style.color=`var(--s2-content-secondary)`,setTimeout(()=>{i.remove(),t(!1)},800)}),a.appendChild(h),a.appendChild(m);let g=document.createElement(`button`);g.className=`dialog__btn dialog__btn--secondary`,g.style.marginTop=`8px`,g.textContent=`Back`,g.addEventListener(`click`,()=>{s()}),a.appendChild(g),f.addEventListener(`input`,()=>{p.style.display=`none`}),f.addEventListener(`keydown`,e=>{e.key===`Enter`&&h.click()}),requestAnimationFrame(()=>f.focus())}})}export{x as C,y as S,m as T,ce as _,he as a,j as b,de as c,Z as d,Q as f,ye as g,$ as h,se as i,B as l,Y as m,ve as n,fe as o,ee as p,K as r,X as s,W as t,H as u,pe as v,p as w,S as x,Ce as y};
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
(function(){var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(e&&(t=e(e=0)),t),s=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),c=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n||t(r,Symbol.toStringTag,{value:`Module`}),r},l=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},u=(n,r,a)=>(a=n==null?{}:e(i(n)),l(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n)),d=s(((e,t)=>{t.exports={}}));function ee(e,t){if(typeof t!=`string`||!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/.test(t))throw Error(`${e} must use an exact semver version in package.json`);return t}var te=class{nextId=1;pending=new Map;handler;disposed=!1;constructor(e){this.port=e,this.handler=e=>{if(e.data?.type!==`realm-rpc-res`)return;let t=e.data,n=this.pending.get(t.id);n&&(this.pending.delete(t.id),typeof t.error==`string`?n.reject(Error(t.error)):n.resolve(t.result))},e.addEventListener(`message`,this.handler),e.start?.()}call(e,t,n=[]){if(this.disposed)return Promise.reject(Error(`realm-rpc: client disposed`));let r=this.nextId++,i={type:`realm-rpc-req`,id:r,channel:e,op:t,args:n};return new Promise((e,t)=>{this.pending.set(r,{resolve:e,reject:t}),this.port.postMessage(i)})}dispose(){if(this.disposed)return;this.disposed=!0,this.port.removeEventListener(`message`,this.handler);let e=Error(`realm-rpc: client disposed`);for(let t of this.pending.values())t.reject(e);this.pending.clear()}},ne=c({loadPyodide:()=>M,version:()=>$});function re(e){return!isNaN(parseFloat(e))&&isFinite(e)}function f(e){return e.charAt(0).toUpperCase()+e.substring(1)}function p(e){return function(){return this[e]}}function m(e){if(e)for(var t=0;t<B.length;t++)e[B[t]]!==void 0&&this[`set`+f(B[t])](e[B[t]])}function h(){var e=/^\s*at .*(\S+:\d+|\(native\))/m,t=/^(eval@)?(\[native code])?$/;return{parse:P(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:P(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:P(function(t){return t.stack.split(`
|
|
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 W({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:P(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 W({functionName:e});var t=/((.*".+"[^@]*)?[^@]*)(?:@)/,n=e.match(t),r=n&&n[1]?n[1]:void 0,i=this.extractLocation(e.replace(t,``));return new W({functionName:r,fileName:i[0],lineNumber:i[1],columnNumber:i[2],source:e})},this)},`ErrorStackParser$$parseFFOrSafari`)}}function ie(){return typeof API<`u`&&API!==globalThis.API?API.runtimeEnv:ae({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`})}function ae(e){let t=e.IN_NODE&&typeof module<`u`&&module.exports&&typeof F==`function`&&typeof __dirname==`string`,n=e.IN_NODE&&!t,r=!e.IN_NODE&&!e.IN_DENO&&!e.IN_BUN,i=r&&typeof window<`u`&&typeof window.document<`u`&&typeof document.createElement==`function`&&`sessionStorage`in window&&typeof globalThis.importScripts!=`function`,a=r&&typeof globalThis.WorkerGlobalScope<`u`&&typeof globalThis.self<`u`&&globalThis.self instanceof globalThis.WorkerGlobalScope;return{...e,IN_BROWSER:r,IN_BROWSER_MAIN_THREAD:i,IN_BROWSER_WEB_WORKER:a,IN_NODE_COMMONJS:t,IN_NODE_ESM:n}}async function g(){if(!G.IN_NODE||(xe=(await Promise.resolve().then(()=>u(d(),1))).default,Ce=await Promise.resolve().then(()=>u(d(),1)),q=await Promise.resolve().then(()=>u(d(),1)),Se=(await Promise.resolve().then(()=>u(d(),1))).default,K=await Promise.resolve().then(()=>u(d(),1)),Y=K.sep,typeof F<`u`))return;let e={fs:Ce,crypto:await Promise.resolve().then(()=>u(d(),1)),ws:await Promise.resolve().then(()=>u(d(),1)),child_process:await Promise.resolve().then(()=>u(d(),1))};globalThis.require=function(t){return e[t]}}function oe(e,t){return K.resolve(t||`.`,e)}function se(e,t){return t===void 0&&(t=location),new URL(e,t).toString()}function ce(e,t){return e.startsWith(`file://`)&&(e=e.slice(7)),e.includes(`://`)?{response:fetch(e)}:{binary:q.readFile(e).then(e=>new Uint8Array(e.buffer,e.byteOffset,e.byteLength))}}function le(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)))}}function ue(e,t){let n=new URL(e,location);return{response:fetch(n,t?{integrity:t}:{})}}async function de(e,t){let{response:n,binary:r}=X(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())}async function fe(e){e.startsWith(`file://`)&&(e=e.slice(7)),e.includes(`://`)?Se.runInThisContext(await(await fetch(e)).text()):await import(xe.pathToFileURL(e).href)}async function pe(e){if(G.IN_NODE){await g();let t=await q.readFile(e,{encoding:`utf8`});return JSON.parse(t)}else if(G.IN_SHELL){let t=read(e);return JSON.parse(t)}else return await(await fetch(e)).json()}async function me(){if(G.IN_NODE_COMMONJS)return __dirname;let e;try{throw Error()}catch(t){e=t}let t=be.parse(e)[0].fileName;if(G.IN_NODE&&!t.startsWith(`file://`)&&(t=`file://${t}`),G.IN_NODE_ESM){let e=await Promise.resolve().then(()=>u(d(),1));return(await Promise.resolve().then(()=>u(d(),1))).fileURLToPath(e.dirname(t))}let n=t.lastIndexOf(Y);if(n===-1)throw Error(`Could not extract indexURL path from pyodide module location. Please pass the indexURL explicitly to loadPyodide.`);return t.slice(0,n)}function he(e){return e.substring(0,e.lastIndexOf(`/`)+1)||globalThis.location?.toString()||`.`}function ge(e){let t=e.FS,n=e.FS.filesystems.MEMFS,r=e.PATH,i={DIR_MODE:16895,FILE_MODE:33279,mount:P(function(e){if(!e.opts.fileSystemHandle)throw Error(`opts.fileSystemHandle is required`);return n.mount.apply(null,arguments)},`mount`),syncfs:P(async(e,t,n)=>{try{let r=i.getLocalSet(e),a=await i.getRemoteSet(e),o=t?a:r,s=t?r:a;await i.reconcile(e,o,s),n(null)}catch(e){n(e)}},`syncfs`),getLocalSet:P(e=>{let n=Object.create(null);function i(e){return e!==`.`&&e!==`..`}P(i,`isRealDir`);function a(e){return t=>r.join2(e,t)}P(a,`toAbsolute`);let o=t.readdir(e.mountpoint).filter(i).map(a(e.mountpoint));for(;o.length;){let e=o.pop(),r=t.stat(e);t.isDir(r.mode)&&o.push.apply(o,t.readdir(e).filter(i).map(a(e))),n[e]={timestamp:r.mtime,mode:r.mode}}return{type:`local`,entries:n}},`getLocalSet`),getRemoteSet:P(async e=>{let t=Object.create(null),n=await we(e.opts.fileSystemHandle);for(let[a,o]of n)a!==`.`&&(t[r.join2(e.mountpoint,a)]={timestamp:o.kind===`file`?new Date((await o.getFile()).lastModified):new Date,mode:o.kind===`file`?i.FILE_MODE:i.DIR_MODE});return{type:`remote`,entries:t,handles:n}},`getRemoteSet`),loadLocalEntry:P(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:P((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:P(e=>{var n=t.stat(e);t.isDir(n.mode)?t.rmdir(e):t.isFile(n.mode)&&t.unlink(e)},`removeLocalEntry`),loadRemoteEntry:P(async e=>{if(e.kind===`file`){let t=await e.getFile();return{contents:new Uint8Array(await t.arrayBuffer()),mode:i.FILE_MODE,timestamp:new Date(t.lastModified)}}else{if(e.kind===`directory`)return{mode:i.DIR_MODE,timestamp:new Date};throw Error(`unknown kind: `+e.kind)}},`loadRemoteEntry`),storeRemoteEntry:P(async(e,n,i)=>{let a=e.get(r.dirname(n)),o=t.isFile(i.mode)?await a.getFileHandle(r.basename(n),{create:!0}):await a.getDirectoryHandle(r.basename(n),{create:!0});if(o.kind===`file`){let e=await o.createWritable();await e.write(i.contents),await e.close()}e.set(n,o)},`storeRemoteEntry`),removeRemoteEntry:P(async(e,t)=>{await e.get(r.dirname(t)).removeEntry(r.basename(t)),e.delete(t)},`removeRemoteEntry`),reconcile:P(async(e,n,a)=>{let o=0,s=[];Object.keys(n.entries).forEach(function(e){let r=n.entries[e],i=a.entries[e];(!i||t.isFile(r.mode)&&r.timestamp.getTime()>i.timestamp.getTime())&&(s.push(e),o++)}),s.sort();let c=[];if(Object.keys(a.entries).forEach(function(e){n.entries[e]||(c.push(e),o++)}),c.sort().reverse(),!o)return;let l=n.type===`remote`?n.handles:a.handles;for(let t of s){let n=r.normalize(t.replace(e.mountpoint,`/`)).substring(1);if(a.type===`local`){let e=l.get(n),r=await i.loadRemoteEntry(e);i.storeLocalEntry(t,r)}else{let e=i.loadLocalEntry(t);await i.storeRemoteEntry(l,n,e)}}for(let t of c)if(a.type===`local`)i.removeLocalEntry(t);else{let n=r.normalize(t.replace(e.mountpoint,`/`)).substring(1);await i.removeRemoteEntry(l,n)}},`reconcile`)};e.FS.filesystems.NATIVEFS_ASYNC=i}async function _e(){let e=await Te;if(e)return e.exports;let t=Symbol(`error marker`);return{create_sentinel:P(()=>t,`create_sentinel`),is_sentinel:P(e=>e===t,`is_sentinel`)}}function ve(e){let t={config:e,runtimeEnv:G},n={noImageDecoding:!0,noAudioDecoding:!0,noWasmDecoding:!1,preRun:x(e),print:e.stdout,printErr:e.stderr,onExit(e){n.exitCode=e},thisProgram:e._sysExecutable,arguments:e.args,API:t,locateFile:P(t=>e.indexURL+t,`locateFile`),instantiateWasm:S(e.indexURL)};return n}function ye(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)}}function _(e){return function(t){Object.assign(t.ENV,e)}}function v(e){return e?[async t=>{t.addRunDependency(`fsInitHook`);try{await e(t.FS,{sitePackages:t.API.sitePackages})}finally{t.removeRunDependency(`fsInitHook`)}}]:[]}function y(e){let t=e.HEAPU32[e._Py_Version>>>2];return[t>>>24&255,t>>>16&255,t>>>8&255]}function b(e){let t=de(e);return async e=>{e.API.pyVersionTuple=y(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`)}}}function x(e){let t;return t=e.stdLibURL==null?e.indexURL+`python_stdlib.zip`:e.stdLibURL,[b(t),ye(e.env.HOME),_(e.env),ge,...v(e.fsInit)]}function S(e){if(typeof WasmOffsetConverter<`u`)return;let{binary:t,response:n}=X(e+`pyodide.asm.wasm`),r=_e();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)}}(),{}}}function C(e){return e===void 0||e.endsWith(`/`)?e:e+`/`}async function w(e={}){if(await g(),e.lockFileContents&&e.lockFileURL)throw Error(`Can't pass both lockFileContents and lockFileURL`);let t=e.indexURL||await me();if(t=C(J(t)),e.packageBaseUrl=C(e.packageBaseUrl),e.cdnUrl=C(e.packageBaseUrl??`https://cdn.jsdelivr.net/pyodide/v0.29.3/full/`),!e.lockFileContents){let n=e.lockFileURL??t+`pyodide-lock.json`;e.lockFileContents=pe(n),e.packageBaseUrl??=he(n)}e.indexURL=t,e.packageCacheDir&&=C(J(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:`b7b7b0f46eb68e65c029c0dc739270e8a5d35251e9aab6014ee1c2f630e5d1d0`},r=Object.assign(n,e);return r.env.HOME??=`/home/pyodide`,r.env.PYTHONINSPECT??=`1`,r}function T(e){let t=ve(e),n=t.API;return n.lockFilePromise=Promise.resolve(e.lockFileContents),t}async function E(e){if(typeof _createPyodideModule!=`function`){let t=`${e.indexURL}pyodide.asm.js`;await Z(t)}}async function D(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}async function O(e){let t=await _createPyodideModule(e);if(e.exitCode!==void 0)throw new t.ExitStatus(e.exitCode);return t}function k(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.3`&&t.checkAPIVersion)throw Error(`Pyodide version does not match: '${$}' <==> '${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}")`)}}function A(e,t,n){let r=e.API,i;return t&&(i=r.restoreSnapshot(t)),r.finalizeBootstrap(i,n._snapshotDeserializer)}async function j(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}async function M(e={}){let t=await w(e),n=T(t);await E(t);let r=await D(t,n),i=await O(n);return k(i,t),await j(A(i,r,t),t)}var N,P,F,I,L,R,z,B,V,H,U,W,be,G,xe,K,Se,Ce,q,J,Y,X,Z,we,Q,Te,Ee,$,De=o((()=>{for(N=Object.defineProperty,P=(e,t)=>N(e,`name`,{value:t,configurable:!0}),F=(e=>typeof require<`u`?require:typeof Proxy<`u`?new Proxy(e,{get:(e,t)=>(typeof require<`u`?require:e)[t]}):e)(function(e){if(typeof require<`u`)return require.apply(this,arguments);throw Error(`Dynamic require of "`+e+`" is not supported`)}),I=(()=>{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}})(),P(re,`_isNumber`),P(f,`_capitalize`),P(p,`_getter`),L=[`isConstructor`,`isEval`,`isNative`,`isToplevel`],R=[`columnNumber`,`lineNumber`],z=[`fileName`,`functionName`,`source`],B=L.concat(R,z,[`args`],[`evalOrigin`]),P(m,`StackFrame`),m.prototype={getArgs:P(function(){return this.args},`getArgs`),setArgs:P(function(e){if(Object.prototype.toString.call(e)!==`[object Array]`)throw TypeError(`Args must be an Array`);this.args=e},`setArgs`),getEvalOrigin:P(function(){return this.evalOrigin},`getEvalOrigin`),setEvalOrigin:P(function(e){if(e instanceof m)this.evalOrigin=e;else if(e instanceof Object)this.evalOrigin=new m(e);else throw TypeError(`Eval Origin must be an Object or StackFrame`)},`setEvalOrigin`),toString:P(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`)},m.fromString=P(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 m({functionName:r,args:i||void 0,fileName:s,lineNumber:c||void 0,columnNumber:l||void 0})},`StackFrame$$fromString`),V=0;V<L.length;V++)m.prototype[`get`+f(L[V])]=p(L[V]),m.prototype[`set`+f(L[V])]=function(e){return function(t){this[e]=!!t}}(L[V]);for(H=0;H<R.length;H++)m.prototype[`get`+f(R[H])]=p(R[H]),m.prototype[`set`+f(R[H])]=function(e){return function(t){if(!re(t))throw TypeError(e+` must be a Number`);this[e]=Number(t)}}(R[H]);for(U=0;U<z.length;U++)m.prototype[`get`+f(z[U])]=p(z[U]),m.prototype[`set`+f(z[U])]=function(e){return function(t){this[e]=String(t)}}(z[U]);if(W=m,P(h,`ErrorStackParser`),be=new h,P(ie,`getGlobalRuntimeEnv`),G=ie(),P(ae,`calculateDerivedFlags`),P(g,`initNodeModules`),P(oe,`node_resolvePath`),P(se,`browser_resolvePath`),J=G.IN_NODE?oe:G.IN_SHELL?P(e=>e,`resolvePath`):se,G.IN_NODE||(Y=`/`),P(ce,`node_getBinaryResponse`),P(le,`shell_getBinaryResponse`),P(ue,`browser_getBinaryResponse`),X=G.IN_NODE?ce:G.IN_SHELL?le:ue,P(de,`loadBinaryFile`),G.IN_BROWSER_MAIN_THREAD)Z=P(async e=>await import(e),`loadScript`);else if(G.IN_BROWSER_WEB_WORKER)Z=P(async e=>{try{globalThis.importScripts(e)}catch(t){if(t instanceof TypeError)await import(e);else throw t}},`loadScript`);else if(G.IN_NODE)Z=fe;else if(G.IN_SHELL)Z=load;else throw Error(`Cannot determine runtime environment`);P(fe,`nodeLoadScript`),P(pe,`loadLockFile`),P(me,`calculateDirname`),P(he,`calculateInstallBaseUrl`),P(ge,`initializeNativeFS`),we=P(async e=>{let t=[];async function n(e){for await(let r of e.values())t.push(r),r.kind===`directory`&&await n(r)}P(n,`collect`),await n(e);let r=new Map;r.set(`.`,e);for(let n of t){let t=(await e.resolve(n)).join(`/`);r.set(t,n)}return r},`getFsHandles`),Q=I(`AGFzbQEAAAABDANfAGAAAW9gAW8BfwMDAgECByECD2NyZWF0ZV9zZW50aW5lbAAAC2lzX3NlbnRpbmVsAAEKEwIHAPsBAPsbCwkAIAD7GvsUAAs=`),Te=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(Q);return await WebAssembly.instantiate(e)}catch(e){if(e instanceof WebAssembly.CompileError)return;throw e}}(),P(_e,`getSentinelImport`),P(ve,`createSettings`),P(ye,`createHomeDirectory`),P(_,`setEnvironment`),P(v,`callFsInitHook`),P(y,`computeVersionTuple`),P(b,`installStdlib`),P(x,`getFileSystemInitializationFuncs`),P(S,`getInstantiateWasmFunc`),Ee=`0.29.3`,P(C,`withTrailingSlash`),$=Ee,P(w,`initializeConfiguration`),P(T,`createEmscriptenSettings`),P(E,`loadWasmScript`),P(D,`prepareSnapshot`),P(O,`createPyodideModule`),P(k,`configureAPI`),P(A,`bootstrapPyodide`),P(j,`finalizeSetup`),P(M,`loadPyodide`)}));`${ee(`pyodide`,`0.29.3`)}`;async function Oe(e,t,n=()=>Promise.resolve().then(()=>(De(),ne))){let r=[],i=[],a=new te(t),o;try{o=await(await n()).loadPyodide({indexURL:e.pyodideIndexURL,fullStdLib:!1})}catch(e){a.dispose();let n={type:`realm-error`,message:`loadPyodide: ${e instanceof Error?e.message:String(e)}`};t.postMessage(n);return}let s=e.pyodideSyncDirs??[e.cwd,`/tmp`];try{await ke(a,o,s)}catch(e){let t=e instanceof Error?e.message:String(e);i.push(`Warning: VFS→Pyodide sync failed: ${t}\n`)}try{o.FS.chdir(e.cwd)}catch{}o.setStdout({batched:e=>r.push(e+`
|
|
4
|
-
`)}),o.setStderr({batched:e=>i.push(e+`
|
|
5
|
-
`)});let c=!1;o.setStdin({stdin:()=>c||!e.stdin?null:(c=!0,e.stdin)}),o.globals.set(`__slicc_code`,e.code),o.globals.set(`__slicc_filename`,e.filename),o.globals.set(`__slicc_argv`,e.argv);let l;try{await o.runPythonAsync(`
|
|
6
|
-
import sys
|
|
7
|
-
import traceback
|
|
8
|
-
|
|
9
|
-
__slicc_exit_code = 0
|
|
10
|
-
try:
|
|
11
|
-
sys.argv = __slicc_argv
|
|
12
|
-
exec(compile(__slicc_code, __slicc_filename, "exec"), {"__name__": "__main__", "__file__": __slicc_filename})
|
|
13
|
-
except SystemExit as exc:
|
|
14
|
-
code = exc.code
|
|
15
|
-
if code is None:
|
|
16
|
-
__slicc_exit_code = 0
|
|
17
|
-
elif isinstance(code, int):
|
|
18
|
-
__slicc_exit_code = code
|
|
19
|
-
else:
|
|
20
|
-
print(code, file=sys.stderr)
|
|
21
|
-
__slicc_exit_code = 1
|
|
22
|
-
except BaseException:
|
|
23
|
-
traceback.print_exc()
|
|
24
|
-
__slicc_exit_code = 1
|
|
25
|
-
`);let e=o.globals.get(`__slicc_exit_code`);l=typeof e==`number`?e:Number(e??1)}catch(e){let t=e instanceof Error?e.message:String(e);i.push(`${t}\n`),l=1}try{o.runPython(`del __slicc_code, __slicc_filename, __slicc_argv, __slicc_exit_code`)}catch{}try{await Ae(a,o,s)}catch(e){let t=e instanceof Error?e.message:String(e);i.push(`Warning: Pyodide→VFS sync failed: ${t}\n`)}a.dispose();let u={type:`realm-done`,stdout:r.join(``),stderr:i.join(``),exitCode:l};t.postMessage(u)}async function ke(e,t,n){let r=t.FS;function i(e){try{r.stat(e)}catch{r.mkdirTree(e)}}async function a(t){i(t);let n;try{n=await e.call(`vfs`,`readDir`,[t])}catch{return}for(let o of n){let n=t===`/`?`/${o}`:`${t}/${o}`;try{if((await e.call(`vfs`,`stat`,[n])).isDirectory)await a(n);else{let a=await e.call(`vfs`,`readFile`,[n]);i(t),r.writeFile(n,a)}}catch{}}}for(let e of n)await a(e)}async function Ae(e,t,n){let r=t.FS;async function i(t){let n;try{n=r.readdir(t).filter(e=>e!==`.`&&e!==`..`)}catch{return}for(let a of n){let n=t===`/`?`/${a}`:`${t}/${a}`;try{let a=r.stat(n);if(r.isDir(a.mode))await e.call(`vfs`,`mkdir`,[n]),await i(n);else{let i=new TextDecoder().decode(r.readFile(n));await e.call(`vfs`,`mkdir`,[t]),await e.call(`vfs`,`writeFile`,[n,i])}}catch{}}}for(let e of n)await i(e)}let je={postMessage:(e,t)=>t?self.postMessage(e,t):self.postMessage(e),addEventListener:(e,t)=>self.addEventListener(e,t),removeEventListener:(e,t)=>self.removeEventListener(e,t)};self.addEventListener(`message`,e=>{if(e.data?.type!==`realm-init`)return;let t=e.data;t.kind===`py`&&Oe(t,je).catch(e=>{let t={type:`realm-error`,message:e instanceof Error?e.message:String(e)};self.postMessage(t)})})})();
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
function e(e){if(!e)return null;try{let t=new URL(e.trim());t.search=``,t.hash=``,t.pathname!==`/`&&(t.pathname=t.pathname.replace(/\/+$/,``)||`/`);let n=t.toString();return n.endsWith(`/`)?n.slice(0,-1):n}catch{return null}}function t(t){if(!t)return null;try{let n=new URL(t.trim());n.search=``,n.hash=``;let r=n.toString(),i=n.pathname.split(`/`).filter(Boolean);if(i.length<2||i.at(-2)!==`join`)return null;let[a,o,...s]=decodeURIComponent(i.at(-1)).split(`.`);if(!a||!o||s.length>0)return null;i.splice(-2,2),n.pathname=i.length>0?`/${i.join(`/`)}`:`/`;let c=e(n.toString());return c?{workerBaseUrl:c,trayId:a,joinUrl:r}:null}catch{return null}}var n=`slicc.trayWorkerBaseUrl`,r=`slicc.trayJoinUrl`,i=`https://www.sliccy.ai`;function a(n){if(!n)return null;try{let r=new URL(n.trim());r.search=``,r.hash=``;let i=r.pathname.split(`/`).filter(Boolean),a=null;if(i.length>=2&&i.at(-2)===`tray`)a=decodeURIComponent(i.at(-1)),i.splice(-2,2),r.pathname=i.length>0?`/${i.join(`/`)}`:`/`;else if(i.length>=2&&i.at(-2)===`join`)return t(r.toString());let o=e(r.toString());return o?{workerBaseUrl:o,trayId:a,joinUrl:null}:null}catch{return null}}function o(e){let t=a(e);return t?.joinUrl?t:null}function s(e,t){let i=o(t);return i?(e.setItem(r,i.joinUrl),e.setItem(n,i.workerBaseUrl),i):null}function c(e){return!!o(e?.getItem(`slicc.trayJoinUrl`)??null)}var l={state:`inactive`,joinUrl:null,trayId:null,error:null,lastPingTime:null,reconnectAttempts:0,attachAttempts:0,lastAttachCode:null,connectingSince:null,lastError:null};function u(){return{...l}}var d=new Set;function f(){if(d.size!==0)for(let e of[...d])try{e({...l})}catch{}}function p(e){l={...e},f()}export{n as a,r as i,p as n,c as o,i as r,s,u as t};
|