@openchambery/web 2.1.10-beta.11 → 2.1.10-beta.12
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/assets/{AgentAvatar-HkvwOX6E.js → AgentAvatar-D8ipj0Vr.js} +1 -1
- package/dist/assets/AssistantView-o_2FGmWi.js +3 -0
- package/dist/assets/DiagramView-BkIY1i8Z.js +1 -0
- package/dist/assets/{FadeInOnReveal-BKvNCFE0.js → FadeInOnReveal-CUnBy-rf.js} +1 -1
- package/dist/assets/{Icon-x0XTu231.js → Icon-DJOJhmkK.js} +1 -1
- package/dist/assets/{ImageLoadingPlaceholder-BH8oXC-W.js → ImageLoadingPlaceholder-BfOy_RFL.js} +1 -1
- package/dist/assets/{LoadingImage-BiQ8G0W3.js → LoadingImage-DAp7ygoZ.js} +1 -1
- package/dist/assets/MarkdownRenderer-CVFTXv6T.js +2 -0
- package/dist/assets/MarkdownRendererImpl-xDJ3_wfo.js +10 -0
- package/dist/assets/MarkstreamRendererImpl-CARsxzOk.js +3 -0
- package/dist/assets/MobileDetailNavigation-C7XoCy6_.js +1 -0
- package/dist/assets/MobileShareBridge-0q0bC1g-.js +4 -0
- package/dist/assets/MobileTabPageHeader-BfA3Blg2.js +2 -0
- package/dist/assets/{MultiRunWindow-CPEzqHIB.js → MultiRunWindow-DEzF6uXQ.js} +1 -1
- package/dist/assets/OnboardingScreen-C2l09plq.js +1 -0
- package/dist/assets/{OverlayScrollbar-DYyjRbut.js → OverlayScrollbar-Dr5XwsW5.js} +1 -1
- package/dist/assets/{SettingsView-BnlqCPxN.js → SettingsView-D75F19Z9.js} +9 -9
- package/dist/assets/{SettingsWindow-BgSOpeEz.js → SettingsWindow-DyBoEjPj.js} +1 -1
- package/dist/assets/TerminalView-DRgyfXdO.js +8 -0
- package/dist/assets/{ToolOutputDialog-BgjZ_2_o.css → ToolOutputDialog-C1c4G7q4.css} +1 -1
- package/dist/assets/ToolOutputDialog-KoIg0zrK.js +10 -0
- package/dist/assets/{appThemeRegistry-BIjwa_wL.js → appThemeRegistry-D7s0BCM_.js} +1 -1
- package/dist/assets/assistant-attachment-cache-dU-EaPYt.js +1 -0
- package/dist/assets/{button-Ca8Z9cOP.js → button--NSU9MZj.js} +1 -1
- package/dist/assets/{collapsible-P03Lkmyr.js → collapsible-B9JDgD12.js} +1 -1
- package/dist/assets/{desktopHosts-C0e7Nes2.js → desktopHosts-C4ejHJ9p.js} +1 -1
- package/dist/assets/desktopRelayRestore-UTCV51RC.js +1 -0
- package/dist/assets/{diagram-DIRYGkQv.js → diagram-Xy80Pnhl.js} +1 -1
- package/dist/assets/{dialog-DKsOQO4Y.js → dialog-DMF6va3u.js} +1 -1
- package/dist/assets/dropdown-menu.styles-DSndmPAq.js +1 -0
- package/dist/assets/{fileMentionTouchSelection-DFsw2Air.js → fileMentionTouchSelection-CagpeffM.js} +1 -1
- package/dist/assets/{gitApi-CmIIjInT.js → gitApi-BVwik90d.js} +3 -3
- package/dist/assets/image-loading-BbXaWHv9.js +1 -0
- package/dist/assets/{input-CGZVLev1.js → input-C0EI9bKy.js} +1 -1
- package/dist/assets/insertionBoundaries-B1UojqLv.js +1 -0
- package/dist/assets/main-2yJj_50W.js +2 -0
- package/dist/assets/main-B-JMz9Zg.js +169 -0
- package/dist/assets/{markdownHeightCache-CYwP7eeh.js → markdownHeightCache-_0n435fL.js} +1 -1
- package/dist/assets/mcpQueries-CBvyBo4z.js +1 -0
- package/dist/assets/miniChat-QLQvDR18.js +2 -0
- package/dist/assets/mobile-D2W9Os9Y.js +2 -0
- package/dist/assets/{mobileBackNavigation-mSj0hnU6.js → mobileBackNavigation-DUcdCT-q.js} +1 -1
- package/dist/assets/multirun-BNXvhpnK.js +3 -0
- package/dist/assets/persistence-CAKBi4bp.js +3 -0
- package/dist/assets/platform-jaHE0AyQ.js +7 -0
- package/dist/assets/projectMeta-B7-8QrCr.js +1 -0
- package/dist/assets/queryRuntime-DRiRiAgZ.js +1 -0
- package/dist/assets/renderElectronMiniChatApp-cXQ0iiAs.js +2 -0
- package/dist/assets/renderMobileApp-BZ-dHkIL.js +28 -0
- package/dist/assets/runtime-file-download-CzOWaZO_.js +1 -0
- package/dist/assets/runtime-file-resource-WtDqIbiH.js +2 -0
- package/dist/assets/runtimeConfig-WZniSuc4.js +2 -0
- package/dist/assets/runtimeEndpointReset-BdC1LMDQ.js +149 -0
- package/dist/assets/{scheduledTaskNavigation-CgctKy2R.js → scheduledTaskNavigation-CUbKrS_Q.js} +1 -1
- package/dist/assets/{sessionChangeSummary-BW__1utJ.js → sessionChangeSummary-FnRoTUCa.js} +1 -1
- package/dist/assets/{sessionLookup-CuUmBpTW.js → sessionLookup-Dyf9EV-B.js} +1 -1
- package/dist/assets/{sortable-tabs-strip-MZyRcU60.js → sortable-tabs-strip-ubL98Ysr.js} +1 -1
- package/dist/assets/speechSettingsQueries-B5rRSSZa.js +4 -0
- package/dist/assets/src-DvTg6DjE.css +2 -0
- package/dist/assets/terminalApi-CK8s1iYr.js +1 -0
- package/dist/assets/{textarea-BfNgh87h.js → textarea-D2NwOmCU.js} +1 -1
- package/dist/assets/{tooltip-B7cKvIho.js → tooltip-CRvh1CJe.js} +1 -1
- package/dist/assets/{url-nBOUbtV_.js → url-BD7mCWgV.js} +1 -1
- package/dist/assets/{useAppFontEffects-_ks0w1bd.js → useAppFontEffects-CICX6ccA.js} +32 -32
- package/dist/assets/{useDesktopWindowControlsLayout-DXQVvdHD.js → useDesktopWindowControlsLayout-DPp8-6hC.js} +1 -1
- package/dist/assets/{useEffectiveDirectory-CCu_lDxO.js → useEffectiveDirectory-CzkOEaY-.js} +1 -1
- package/dist/assets/{useFontPreferences-rSp7tOs0.js → useFontPreferences-BLwhdOar.js} +1 -1
- package/dist/assets/useMobileNavigationStore-CeMnArss.js +417 -0
- package/dist/assets/{useWorkerHighlightedLines-cWzxInp-.js → useWorkerHighlightedLines-DxLthSDl.js} +1 -1
- package/dist/index.html +13 -10
- package/dist/mini-chat.html +13 -10
- package/dist/mobile.html +13 -10
- package/package.json +1 -1
- package/server/lib/fs/DOCUMENTATION.md +4 -1
- package/server/lib/fs/image-fingerprint.d.ts +2 -0
- package/server/lib/fs/image-fingerprint.js +43 -0
- package/server/lib/fs/image-fingerprint.test.js +54 -0
- package/server/lib/fs/raw-video.test.js +34 -0
- package/server/lib/fs/routes.js +16 -6
- package/server/lib/quota/DOCUMENTATION.md +2 -0
- package/server/lib/quota/magpie.js +3 -0
- package/server/lib/quota/magpie.test.js +14 -0
- package/dist/assets/AssistantView-h4JgDKch.js +0 -3
- package/dist/assets/DiagramView-COkfppid.js +0 -1
- package/dist/assets/MarkdownRenderer-BI0rNBtw.js +0 -2
- package/dist/assets/MarkdownRendererImpl-BLyOCqTz.js +0 -10
- package/dist/assets/MarkstreamRendererImpl-Do60i4aN.js +0 -3
- package/dist/assets/MobileDetailNavigation-CH1olmS8.js +0 -1
- package/dist/assets/MobileShareBridge-D4PDUXQS.js +0 -4
- package/dist/assets/MobileTabPageHeader-B4l8kjn4.js +0 -2
- package/dist/assets/OnboardingScreen-TFogoeFF.js +0 -1
- package/dist/assets/TerminalView-CZtA47Sq.js +0 -8
- package/dist/assets/ToolOutputDialog-DjKdgCBP.js +0 -10
- package/dist/assets/assistant-attachment-cache-C-JB3e_-.js +0 -1
- package/dist/assets/desktopRelayRestore-DckkHKsi.js +0 -1
- package/dist/assets/dropdown-menu.styles-vl6a_Aes.js +0 -1
- package/dist/assets/fileQueries-DVpZC5ha.js +0 -1
- package/dist/assets/image-loading-BLKPYB1F.js +0 -1
- package/dist/assets/insertionBoundaries-BRzI9-zA.js +0 -1
- package/dist/assets/main-B18HaTNc.js +0 -169
- package/dist/assets/main-DyI3Npnd.js +0 -2
- package/dist/assets/mcpQueries-ylwK_h6F.js +0 -1
- package/dist/assets/miniChat-_Ap6jcID.js +0 -2
- package/dist/assets/mobile-D-4NtQFc.js +0 -2
- package/dist/assets/multirun-DCBP8mIS.js +0 -3
- package/dist/assets/persistence-BKszKaoQ.js +0 -3
- package/dist/assets/platform-QykS5eAQ.js +0 -7
- package/dist/assets/projectMeta-DRVg_EU7.js +0 -1
- package/dist/assets/relay-image-stream-B05lazQn.js +0 -2
- package/dist/assets/renderElectronMiniChatApp-DsMQnVs5.js +0 -2
- package/dist/assets/renderMobileApp-OVPO-Ol5.js +0 -28
- package/dist/assets/runtime-fetch-WgH0pROs.js +0 -1
- package/dist/assets/runtimeConfig-BQKJNTNq.js +0 -2
- package/dist/assets/runtimeEndpointReset-KlafK5Te.js +0 -149
- package/dist/assets/speechSettingsQueries-CQnnDLiJ.js +0 -4
- package/dist/assets/src-DtMCDy_d.css +0 -2
- package/dist/assets/terminalApi-BeYpC7rG.js +0 -1
- package/dist/assets/useMobileNavigationStore-DzAYtvXh.js +0 -417
- package/dist/assets/useRuntimeAPIs-Cx8S1HLz.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{c as e,l as t,p as n,s as r,w as i}from"./runtime-auth-BpCQ-dPr.js";import{n as a}from"./runtime-switch-CMiMO5Yj.js";import{s as o}from"./queryRuntime-DRiRiAgZ.js";import{c as s,r as c}from"./runtime-file-resource-WtDqIbiH.js";async function l(r,i){return(e()||Object.keys(t()).length)&&await n(),c(r,i).url}async function u(e,t){let n=a(),c=r(),u=await o()?.files.statFile?.(e.path,e);e.signal?.throwIfAborted();let d,f=!1;if(u&&u.size>33554432&&!i())d=await l(`/api/fs/raw`,{path:e.path,download:`true`,directory:e.directory,allowOutsideWorkspace:e.allowOutsideWorkspace?`true`:void 0,outsideFileGrant:e.outsideFileGrant});else{let n=await s(e,t);d=URL.createObjectURL(n),f=!0}try{if(e.signal?.throwIfAborted(),n!==a()||c!==r())throw new DOMException(`File runtime changed`,`AbortError`);let t=document.createElement(`a`);t.href=d,t.download=e.filename||u?.filename||e.path.split(`/`).pop()||`file`,document.body.append(t),t.click(),t.remove()}finally{f&&setTimeout(()=>URL.revokeObjectURL(d),1e3)}}export{l as n,u as t};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/vendor-aparajita-capacitor-secure-storage-xol_6BsB.js","assets/rolldown-runtime-hePW80VL.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{_ as t,c as n,l as r,s as i}from"./runtime-auth-BpCQ-dPr.js";import{c as a,f as o,i as s,n as c,r as l}from"./runtime-switch-CMiMO5Yj.js";import{a as u,o as d,s as f,u as p}from"./queryRuntime-DRiRiAgZ.js";import{it as m}from"./vendor-base-ui-CdzJ6My_.js";import{n as h}from"./vendor-react-BP2cRVqX.js";import{s as g}from"./vendor-tanstack-react-query-CdqCAt40.js";import{o as _}from"./vendor-aparajita-capacitor-secure-storage-xol_6BsB.js";var v=h(),y=e(m(),1),b=y.createContext(null),x=()=>{let e=y.useContext(b);if(!e)throw Error(`Runtime APIs are not available. Did you forget to wrap the app in <RuntimeAPIProvider>?`);return e},S=e=>{let t=(0,v.c)(3),n=x(),r;return t[0]!==n||t[1]!==e?(r=e(n),t[0]=n,t[1]=e,t[2]=r):r=t[2],r},C=()=>S(ee);function ee(e){return e.runtime.isVSCode}var w=e=>e,T=(e,t=s())=>d.files.content(e.scopeDirectory,e.path,w(e.options),t),te=(e,t,n=s())=>({queryKey:d.files.directory(t.scopeDirectory,t.directory,t.respectGitignore,n),queryFn:async()=>{if(!t.directory)throw Error(`A directory is required to list files`);return t.respectGitignore===void 0?e.listDirectory(t.directory):e.listDirectory(t.directory,{respectGitignore:t.respectGitignore})}}),E=(e,t,n=s())=>({queryKey:d.files.search(t.directory,t.query,t.maxResults,t.includeHidden,t.respectGitignore,n),queryFn:async()=>{if(!t.directory)throw Error(`A directory is required to search files`);let n={directory:t.directory,query:t.query.trim(),maxResults:t.maxResults,...t.includeHidden===void 0?{}:{includeHidden:t.includeHidden},...t.respectGitignore===void 0?{}:{respectGitignore:t.respectGitignore}};return e.search(n)}}),ne=(e,t,n=s())=>({queryKey:T(t,n),queryFn:async()=>{if(!t.path)throw Error(`A file path is required to read file content`);if(!e.readFile)throw Error(`File content reads are unavailable in this runtime`);return(await(t.options===void 0?e.readFile(t.path):e.readFile(t.path,t.options))).content}}),re=(e,t,n,r)=>{e.setQueryData(T(t,n),r)},ie=(e,t,n=s())=>({queryKey:t.options?.fingerprint?[...d.files.stat(t.scopeDirectory,t.path,w(t.options),n),`sha256`]:d.files.stat(t.scopeDirectory,t.path,w(t.options),n),queryFn:async()=>{if(!t.path)throw Error(`A file path is required to read file status`);if(!e.statFile)throw Error(`File status reads are unavailable in this runtime`);return t.options===void 0?e.statFile(t.path):e.statFile(t.path,t.options)}}),ae=(e,t)=>{let n=(0,v.c)(9),r;n[0]===t?r=n[1]:(r=t===void 0?{}:t,n[0]=t,n[1]=r);let i=r,{files:a}=x(),o,c;if(n[2]!==a||n[3]!==e){let t=s();c=g,o=te(a,e,t),n[2]=a,n[3]=e,n[4]=o,n[5]=c}else o=n[4],c=n[5];let l;return n[6]!==i||n[7]!==o?(l={...o,...i},n[6]=i,n[7]=o,n[8]=l):l=n[8],c(l)},oe=(e,t)=>{let n=(0,v.c)(9),r;n[0]===t?r=n[1]:(r=t===void 0?{}:t,n[0]=t,n[1]=r);let i=r,{files:a}=x(),o,c;if(n[2]!==a||n[3]!==e){let t=s();c=g,o=E(a,e,t),n[2]=a,n[3]=e,n[4]=o,n[5]=c}else o=n[4],c=n[5];let l;return n[6]!==i||n[7]!==o?(l={...o,...i},n[6]=i,n[7]=o,n[8]=l):l=n[8],c(l)},se=(e,t)=>{let n=(0,v.c)(9),r;n[0]===t?r=n[1]:(r=t===void 0?{}:t,n[0]=t,n[1]=r);let i=r,{files:a}=x(),o,c;if(n[2]!==a||n[3]!==e){let t=s();c=g,o=ne(a,e,t),n[2]=a,n[3]=e,n[4]=o,n[5]=c}else o=n[4],c=n[5];let l;return n[6]!==i||n[7]!==o?(l={...o,...i},n[6]=i,n[7]=o,n[8]=l):l=n[8],c(l)},ce=2e3,le=(e,t)=>{let n=(0,v.c)(19),r;n[0]===t?r=n[1]:(r=t===void 0?{}:t,n[0]=t,n[1]=r);let i=r,{files:a}=x(),o,c,l,d;n[2]!==a||n[3]!==e||n[4]!==i.enabled?(d=s(),o=!!(i.enabled&&e.path&&a.statFile),l=g,c=ie(a,e,d),n[2]=a,n[3]=e,n[4]=i.enabled,n[5]=o,n[6]=c,n[7]=l,n[8]=d):(o=n[5],c=n[6],l=n[7],d=n[8]);let f=i.intervalMs??ce,p;n[9]!==o||n[10]!==c||n[11]!==f?(p={...c,enabled:o,refetchInterval:f,refetchIntervalInBackground:!1,staleTime:0},n[9]=o,n[10]=c,n[11]=f,n[12]=p):p=n[12];let m=l(p),h=y.useRef(null),_=y.useRef(null),b;n[13]!==o||n[14]!==e||n[15]!==i.client||n[16]!==m||n[17]!==d?(b=()=>{let t=m.data;if(!o||!t)return;h.current!==e.path&&(h.current=e.path??null,_.current=null);let n=`${t.size}:${t.mtimeMs??``}`,r=_.current;_.current=n,r!==null&&r!==n&&(i.client??u).invalidateQueries({queryKey:T(e,d)})},n[13]=o,n[14]=e,n[15]=i.client,n[16]=m,n[17]=d,n[18]=b):b=n[18],y.useEffect(b)},ue=`openchamber-runtime-images`,de=128,fe=268435456,pe=Promise.resolve(),me=()=>new Promise((e,t)=>{if(!globalThis.indexedDB){t(Error(`IndexedDB unavailable`));return}let n=indexedDB.open(ue,1),r=!1;n.onupgradeneeded=()=>{n.result.createObjectStore(`meta`,{keyPath:`key`}),n.result.createObjectStore(`bytes`)},n.onerror=n.onblocked=()=>{r=!0,t(Error(`Image database unavailable`))},n.onsuccess=()=>{if(r){n.result.close();return}n.result.onversionchange=()=>n.result.close(),e(n.result)}}),D=e=>new Promise((t,n)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>n(e.error)}),O=(e,t)=>{let n=pe.catch(()=>{}).then(async()=>{t?.throwIfAborted();let n=await me();try{t?.throwIfAborted();let r=n.transaction([`meta`,`bytes`],`readwrite`),i=()=>{try{r.abort()}catch{}},a=new Promise((e,t)=>{r.oncomplete=()=>e(),r.onabort=r.onerror=()=>t(r.error??Error(`Image transaction aborted`))});a.catch(()=>{}),t?.addEventListener(`abort`,i,{once:!0});try{let t=await e(r.objectStore(`meta`),r.objectStore(`bytes`));return await a,t}catch(e){throw i(),await a.catch(()=>{}),e}finally{t?.removeEventListener(`abort`,i)}}finally{n.close()}});return pe=n,n},k={read:(e,t)=>O(async(t,n)=>{let r=await D(t.get(e));if(!r)return null;let i=await D(n.get(e));return!(i instanceof ArrayBuffer)||i.byteLength!==r.size?(t.delete(e),n.delete(e),null):(t.put({...r,used:Date.now()}),new Blob([i],{type:r.mime}))},t),write:async(e,t,n,r)=>{let i=await t.arrayBuffer();if(n.throwIfAborted(),i.byteLength>33554432)throw Error(`File exceeds complete-body cache budget`);await O(async(n,a)=>{let o=(await D(n.getAll())).filter(t=>t.key!==e).sort((e,t)=>e.used-t.used),s=o.reduce((e,t)=>e+t.size,i.byteLength),c=o.length+1;for(let e of o){if(s<=fe&&c<=de)break;n.delete(e.key),a.delete(e.key),s-=e.size,c--}a.put(i,e);let l=await D(n.get(e));n.put({key:e,size:i.byteLength,mime:t.type,used:Date.now(),tags:[...new Set([...l?.tags??[],...r??[]])]})},n)},clear:()=>O(async(e,t)=>{e.clear(),t.clear()}),tag:(e,t,n)=>O(async n=>{let r=await D(n.get(e));r&&n.put({...r,tags:[...new Set([...r.tags??[],...t])]})},n),clearTag:e=>O(async(t,n)=>{for(let r of await D(t.getAll()))r.tags?.includes(e)&&(t.delete(r.key),n.delete(r.key))})};async function he(e,t,n,r=1/0){t?.throwIfAborted();let i=/^bytes (\d+)-(\d+)\/(\d+)$/.exec(e.headers.get(`content-range`)??``),a=e.headers.get(`content-encoding`),o=a&&a!==`identity`?0:Number(i?.[3]??e.headers.get(`content-length`)),s=Number.isSafeInteger(o)&&o>0?o:null;if(i&&(Number(i[1])!==0||Number(i[2])+1!==Number(i[3])))throw await e.body?.cancel(),Error(`Incomplete media range`);if(!n&&!Number.isFinite(r)){let n=await e.blob();if(t?.throwIfAborted(),s&&n.size!==s)throw Error(`Truncated media download`);return n}if(n?.(s?0:null),!e.body){let r=await e.blob();return t?.throwIfAborted(),n?.(100),r}let c=e.body.getReader(),l=[],u=0,d=s?0:null,f=()=>{c.cancel().catch(()=>{})};t?.addEventListener(`abort`,f,{once:!0});try{for(;;){t?.throwIfAborted();let{done:e,value:i}=await c.read();if(t?.throwIfAborted(),e)break;if(u+=i.byteLength,u>r)throw Error(`File requires a streaming destination`);if(l.push(new Uint8Array(i).buffer),s&&u>s)throw Error(`Media size differs from response headers`);let a=s?Math.min(99,Math.floor(u/s*100)):null;a!==d&&(d=a,n?.(a))}if(s&&u!==s)throw Error(`Truncated media download`);let i=new Blob(l,{type:e.headers.get(`content-type`)??``});return n?.(100),i}finally{t?.removeEventListener(`abort`,f),c.cancel().catch(()=>{}),c.releaseLock()}}var ge=/^[A-Za-z]:\/$/,_e=/^[A-Za-z]:\//,A=e=>{if(typeof e!=`string`)return``;let t=e.trim();if(!t)return``;let n=t.replace(/\\/g,`/`),r=n.startsWith(`//`),i=n.replace(/\/+/g,`/`);r&&!i.startsWith(`//`)&&(i=`/${i}`);let a=i===`/`,o=ge.test(i);return!a&&!o&&(i=i.replace(/\/+$/,``)),i},ve=e=>{let t=A(e);return t.startsWith(`/`)||_e.test(t)},ye=e=>{let t=A(e);return _e.test(t)||t.startsWith(`//`)?t.toLowerCase():t},be=e=>e.split(`/`).filter(Boolean),xe=(e,t)=>{let n=[...e];for(let e of be(t))if(e!==`.`){if(e===`..`){n.length>0&&n.pop();continue}n.push(e)}return n},Se=(e,t)=>{let n=A(t);if(!n)return A(e);if(ve(n))return n;let r=A(e);if(!r)return n;let i=_e.test(r)?r.slice(0,2):``,a=r.startsWith(`//`),o=r.startsWith(`/`)&&!a,s=xe(be(i?r.slice(2):r),n).join(`/`);return i?s?`${i}/${s}`:`${i}/`:a?`//${s}`:o?`/${s}`:s},Ce=(e,t)=>{let n=A(e),r=A(t);if(!n||!r)return!1;let i=ye(n),a=ye(r);return i===a||i.startsWith(`${a}/`)},we=(e,t)=>{let n=A(e),r=A(t);return n?r?ye(n)===ye(r)?`.`:Ce(n,r)?n.slice(r.length+1):n:n:``},Te=(e,t)=>{let n=A(e),r=A(t);if(n&&(!r||Ce(r,n))||!r)return n;let i=r.lastIndexOf(`/`);return i===0?`/`:i<0?n||r:/^[A-Za-z]:\//.test(r)&&i===2?r.slice(0,3):r.slice(0,i)},Ee=`__openchamberNativeRelayAssetBridge`,j=e=>typeof e==`function`,De=e=>{if(!e||typeof e!=`object`)return!1;let t=e;return j(t.openAsset)&&j(t.writeChunk)&&j(t.endAsset)&&j(t.abortAsset)&&j(t.releaseAsset)},Oe=()=>{let e=globalThis[Ee];return De(e)?e:null},ke=e=>{if(typeof Buffer<`u`)return Buffer.from(e).toString(`base64`);let t=``,n=32768;for(let r=0;r<e.byteLength;r+=n){let i=Math.min(r+n,e.byteLength),a=``;for(let t=r;t<i;t++)a+=String.fromCharCode(e[t]);t+=a}return btoa(t)},Ae=e=>({openAsset:async({mimeType:t})=>{let n=await e.create({mimeType:t});if(!n?.assetId||!n?.url)throw Error(`Desktop virtualAsset.create returned an incomplete result`);return{assetId:n.assetId,url:n.url}},writeChunk:async(t,n)=>{let r=n.byteOffset===0&&n.byteLength===n.buffer.byteLength?n:n.slice();await e.push(t,r)},endAsset:async t=>{await e.finish(t)},abortAsset:async t=>{try{await e.cancel(t)}catch{}},releaseAsset:async t=>{try{await e.cancel(t)}catch{}}}),je=e=>({openAsset:async({assetId:t,mimeType:n})=>{let r=await e.create({assetId:t,mime:n});if(!r?.url)throw Error(`Capacitor virtual asset create returned no url`);return{assetId:r.assetId||t,url:r.url}},writeChunk:async(t,n)=>{await e.append({assetId:t,chunk:ke(n)})},endAsset:async t=>{await e.finish({assetId:t})},abortAsset:async t=>{try{await e.cancel({assetId:t})}catch{}},releaseAsset:async t=>{try{await e.cancel({assetId:t})}catch{}}}),Me=()=>{if(typeof window>`u`)return null;let e=window.__OPENCHAMBER_DESKTOP__?.virtualAsset;return!e||!j(e.create)||!j(e.push)||!j(e.finish)||!j(e.cancel)?null:e},Ne=null,Pe=async()=>{if(typeof window>`u`)return null;let e=window.Capacitor;if(!e||typeof e.isNativePlatform!=`function`||!e.isNativePlatform())return null;let t=e.Plugins?.OpenChamberVirtualAsset;if(t&&typeof t==`object`&&j(t.create)&&j(t.append)&&j(t.finish)&&j(t.cancel))return t;try{let{registerPlugin:e}=await _(async()=>{let{registerPlugin:e}=await import(`./vendor-aparajita-capacitor-secure-storage-xol_6BsB.js`).then(e=>e.i);return{registerPlugin:e}},__vite__mapDeps([0,1])),t=e(`OpenChamberVirtualAsset`);if(j(t.create)&&j(t.append)&&j(t.finish)&&j(t.cancel))return t}catch{}return null},Fe=async()=>{let e=Oe();if(e)return e;let t=Me();if(t)return Ae(t);Ne??=Pe();let n=await Ne;return n?je(n):null},M=()=>{if(typeof window>`u`)return null;let e=window.__OPENCHAMBER_DESKTOP__?.imageCache;return e&&j(e.acquire)&&j(e.append)&&j(e.commit)&&j(e.release)?e:null},Ie=3e5,Le=33554432,Re=524288,N=new Map,P=new Map,F=new Set,I=0,ze=null,Be=0,Ve=()=>F.size+I,L=()=>(Be+=1,`ria_${(typeof crypto<`u`&&typeof crypto.randomUUID==`function`?crypto.randomUUID():`${Date.now().toString(36)}${Math.random().toString(36).slice(2,12)}`).replace(/-/g,``).slice(0,24)}_${(Be%1e6).toString(36)}`),He=e=>{e.ttlTimer!==null&&(clearTimeout(e.ttlTimer),e.ttlTimer=null)},Ue=e=>{He(e),N.delete(e.url),P.delete(e.assetId),F.delete(e.assetId)},R=async e=>{try{await e()}catch{}},z=async(e,t={})=>{if(e.released)return;if(e.released=!0,Ue(e),e.kind===`blob`){try{URL.revokeObjectURL(e.url)}catch{}return}let n=e.bridge;n&&(t.abort&&await R(()=>n.abortAsset(e.assetId,t.reason)),await R(()=>n.releaseAsset(e.assetId)))},B=e=>{He(e),!(e.retainCount>0)&&(e.ttlTimer=setTimeout(()=>{z(e,{abort:!0,reason:`ttl-expired`})},Ie))},We=e=>{if(!e)return!1;let t=N.get(e);return!!(t&&!t.released)},Ge=e=>{let t=N.get(e);return!t||t.released?!1:(t.retainCount+=1,He(t),!0)},Ke=e=>{let t=N.get(e);!t||t.released||(t.retainCount=Math.max(0,t.retainCount-1),t.retainCount===0&&B(t))},qe=async e=>{for(;Ve()>=6;){if(e.aborted)throw e.reason instanceof Error?e.reason:Error(`aborted`);await new Promise((t,n)=>{let r=()=>{clearTimeout(i),n(e.reason instanceof Error?e.reason:Error(`aborted`))},i=setTimeout(()=>{e.removeEventListener(`abort`,r),t()},25);e.addEventListener(`abort`,r,{once:!0})})}},Je=async e=>{for(;;)if(await qe(e),Ve()<6){I+=1;return}},V=()=>{I=Math.max(0,I-1)},Ye=e=>{let t=e.headers.get(`content-type`)?.split(`;`)[0]?.trim().toLowerCase();return t&&t.startsWith(`image/`)?t:`image/png`},Xe=async(e,t,n,r,i)=>{if(await Je(n),n.aborted)throw V(),n.reason instanceof Error?n.reason:Error(`aborted`);let a=t.body;if(!a||typeof a.getReader!=`function`)throw V(),Error(`Image response body is not readable`);let o=L(),s=Ye(t),c;try{c=await e.openAsset({assetId:o,mimeType:s})}catch(e){throw V(),e}if(!c?.url||typeof c.url!=`string`||!c.assetId)throw V(),await R(()=>e.abortAsset(o,`invalid-open`)),Error(`Native asset bridge returned an incomplete open result`);F.add(c.assetId),V();let l={assetId:c.assetId,url:c.url,kind:`native`,transportIdentity:r,ttlTimer:null,retainCount:0,released:!1,byteLength:0,bridge:e,sourcePath:i};return N.set(c.url,l),P.set(c.assetId,l),B(l),Ze(e,a,l,n,r),c.url},Ze=(e,t,n,r,i)=>{let a=t.getReader(),o=()=>{a.cancel().catch(()=>void 0),z(n,{abort:!0,reason:`aborted`})};return r.addEventListener(`abort`,o,{once:!0}),(async()=>{let t=[],c=0,l=e=>{if(e<=0)return new Uint8Array;if(t.length===1&&t[0].byteLength===e)return c=0,t.pop();let n=new Uint8Array(e),r=0;for(;r<e&&t.length>0;){let i=t[0],a=e-r;i.byteLength<=a?(n.set(i,r),r+=i.byteLength,t.shift()):(n.set(i.subarray(0,a),r),t[0]=i.subarray(a),r+=a)}return c-=r,n},u=()=>{t.length=0,c=0},d=()=>{if(r.aborted||n.released)throw r.reason instanceof Error?r.reason:Error(`aborted`);if(s()!==i)throw Error(`Runtime transport changed during image stream`)},f=async t=>{for(;c>0&&(t||c>=524288);){d();let t=l(Math.min(c,Re));await e.writeChunk(n.assetId,t)}};try{for(;;){d();let{done:e,value:r}=await a.read();if(e)break;if(!(!r||r.byteLength===0)){if(n.byteLength+=r.byteLength,n.byteLength>33554432)throw Error(`Image exceeds maximum size of ${Le} bytes`);t.push(r),c+=r.byteLength,c>=524288&&await f(!1)}}d(),await f(!0),d(),await e.endAsset(n.assetId),F.delete(n.assetId)}catch(e){u(),await z(n,{abort:!0,reason:e instanceof Error?e.message:`stream-failed`})}finally{r.removeEventListener(`abort`,o)}})().catch(()=>{})},Qe=async(e,t,n)=>{let r=await e.blob();if(t.aborted)throw t.reason instanceof Error?t.reason:Error(`aborted`);if(r.size>33554432)throw Error(`Image exceeds maximum size of ${Le} bytes`);if(s()!==n)throw Error(`Runtime transport changed during image load`);let i=URL.createObjectURL(r),a={assetId:L(),url:i,kind:`blob`,transportIdentity:n,ttlTimer:null,retainCount:0,released:!1,byteLength:r.size,bridge:null};return N.set(i,a),P.set(a.assetId,a),B(a),i},$e=async(e,t,n={})=>{if(st(),t.aborted)throw t.reason instanceof Error?t.reason:Error(`aborted`);if(!(e instanceof Blob))throw Error(`Verified display requires a Blob`);if(e.size>33554432)throw Error(`Image exceeds maximum size of ${Le} bytes`);let r=s(),i=et(e,n.mimeType),a=await Fe();return a?nt(a,e,i,t,r):tt(e,t,r)},et=(e,t)=>{let n=(t||e.type||``).split(`;`)[0]?.trim().toLowerCase();return n&&n.startsWith(`image/`)?n:n||`image/png`},tt=async(e,t,n)=>{if(t.aborted)throw t.reason instanceof Error?t.reason:Error(`aborted`);if(s()!==n)throw Error(`Runtime transport changed during image load`);let r=URL.createObjectURL(e),i={assetId:L(),url:r,kind:`blob`,transportIdentity:n,ttlTimer:null,retainCount:0,released:!1,byteLength:e.size,bridge:null};return N.set(r,i),P.set(i.assetId,i),B(i),r},nt=async(e,t,n,r,i)=>{if(await Je(r),r.aborted)throw V(),r.reason instanceof Error?r.reason:Error(`aborted`);if(s()!==i)throw V(),Error(`Runtime transport changed during image load`);let a=L(),o;try{o=await e.openAsset({assetId:a,mimeType:n})}catch(e){throw V(),e}if(!o?.url||typeof o.url!=`string`||!o.assetId)throw V(),await R(()=>e.abortAsset(a,`invalid-open`)),Error(`Native asset bridge returned an incomplete open result`);F.add(o.assetId),V();let c={assetId:o.assetId,url:o.url,kind:`native`,transportIdentity:i,ttlTimer:null,retainCount:0,released:!1,byteLength:t.size,bridge:e,sourceBlob:t};N.set(o.url,c),P.set(o.assetId,c),B(c);try{if(r.aborted)throw r.reason instanceof Error?r.reason:Error(`aborted`);if(s()!==i)throw Error(`Runtime transport changed during image load`);let n=new Uint8Array(await t.arrayBuffer());if(r.aborted)throw r.reason instanceof Error?r.reason:Error(`aborted`);let a=0;for(;a<n.byteLength;){if(r.aborted||c.released)throw r.reason instanceof Error?r.reason:Error(`aborted`);if(s()!==i)throw Error(`Runtime transport changed during image load`);let t=Math.min(a+Re,n.byteLength);await e.writeChunk(o.assetId,n.subarray(a,t)),a=t}return await e.endAsset(o.assetId),F.delete(o.assetId),o.url}catch(e){throw await z(c,{abort:!0,reason:e instanceof Error?e.message:`verified-blob-failed`}),e}},rt=async(e,t)=>{st();let n=s();return it(await p(`/api/fs/raw`,{method:`GET`,cache:`no-store`,query:{path:e},signal:t}),t,n,e)},it=async(e,t,n,r)=>{if(st(),!e.ok)throw Error(`Image source request failed with status ${e.status}`);let i=await Fe();return i?Xe(i,e,t,n,r??``):Qe(e,t,n)},at=async(e,t,n)=>{let r=N.get(e);if(!r||r.released)return null;if(r.transportIdentity!==s())throw Error(`Image runtime changed`);if(t?.throwIfAborted(),r.sourceBlob)return n?.(100),r.sourceBlob;if(!r.sourcePath)return null;let i=await p(`/api/fs/raw`,{query:{path:r.sourcePath},signal:t,headers:n?{Range:`bytes=0-`}:void 0});if(!i.ok)throw Error(`Image source request failed (${i.status})`);let a=await he(i,t,n);if(t?.throwIfAborted(),r.transportIdentity!==s())throw Error(`Image runtime changed`);if(!a.size||a.size>33554432)throw Error(`Invalid image size`);return a},H=e=>{if(!e)return;let t=N.get(e);if(t){z(t,{abort:!0,reason:`released`});return}if(e.startsWith(`blob:`))try{URL.revokeObjectURL(e)}catch{}},ot=(e=`cleared`)=>{let t=Array.from(N.values());for(let n of t)z(n,{abort:!0,reason:e});F.clear(),I=0},st=()=>{ze||typeof window>`u`||(ze=a(()=>{ot(`transport-changed`)}))},U=new Map,ct=Array.from(crypto.getRandomValues(new Uint8Array(16)),e=>e.toString(16).padStart(2,`0`)).join(``),W=33554432,lt=!1,ut=!1,dt=!1,G=async e=>Array.from(new Uint8Array(await crypto.subtle.digest(`SHA-256`,e)),e=>e.toString(16).padStart(2,`0`)).join(``),K=e=>G(new TextEncoder().encode(JSON.stringify([`runtime-image-v2`,l(),n(),Object.entries(r()).sort(([e],[t])=>e.localeCompare(t)),e]))),q=e=>e&&/^[a-f0-9]{64}$/.test(e)?e:void 0,J=()=>{ut||(ut=!0,console.warn(`Image persistence unavailable; using bounded memory cache. A later acquisition will retry persistence.`))},Y=new Map,X=new Map,ft=32,pt=67108864,mt=3e5,Z=0,Q,ht=()=>{clearTimeout(Q),Q=void 0;for(let[e,t]of X)(t.expires<=Date.now()||X.size>ft||Z>pt)&&(X.delete(e),Z-=t.blob.size);if(X.size){let e=Math.min(...Array.from(X.values(),e=>e.expires));Q=setTimeout(ht,Math.max(0,e-Date.now()))}},$=(e,t)=>{Y.get(e)===t&&Y.delete(e),t.controller.abort(),t.source?.response.body?.cancel().catch(()=>{})},gt=(e,t)=>new Promise((n,r)=>{let i=()=>r(new DOMException(`Aborted`,`AbortError`));t.addEventListener(`abort`,i,{once:!0}),t.aborted&&i(),e.then(e=>{t.removeEventListener(`abort`,i),t.aborted?(e.release(),i()):n(e)},e=>{t.removeEventListener(`abort`,i),r(e)})}),_t=(e,t={})=>({query:{path:e,...t.allowOutsideWorkspace?{allowOutsideWorkspace:`true`}:{},...t.outsideFileGrant?{outsideFileGrant:t.outsideFileGrant}:{}},...t.directory?{headers:{"x-opencode-directory":t.directory}}:{}}),vt=async(e,t,n,r)=>{let i=f()?.files;if(!r&&i?.readFileBinary){let r=await i.readFileBinary(e,t);return n.throwIfAborted(),fetch(r.dataUrl,{signal:n})}let a=_t(e,t);return p(`/api/fs/raw`,{...a,signal:n,cache:`no-store`,headers:{...a.headers,...r?{Range:r}:{}}})},yt=async(e,t,n={},r)=>{let a=f()?.files;if(!r&&!a?.statFile)return St(e,t,void 0,n);let o=s(),l=c(),d=i(),p=A(e),m=()=>{if(l!==c()||d!==i()||o!==s())throw new DOMException(`Image request superseded`,`AbortError`)},h=()=>{t.throwIfAborted(),m()},g=a&&ie(a,{scopeDirectory:n.directory??null,path:p,options:{...n,fingerprint:!0}},o),_=()=>r?Promise.resolve(r.metadata):u.fetchQuery({...g,queryKey:[...g.queryKey??[],l,d],staleTime:0,retry:!1}),v=await _();if(h(),!v.isFile||!Number.isSafeInteger(v.size)||v.size<0||typeof v.mtimeMs!=`number`||!Number.isFinite(v.mtimeMs))throw Error(`Image file version is unavailable`);if(v.size>W)return r?{response:await r.load(t),complete:Promise.resolve(),release:()=>{},filename:r.metadata.filename||`file`,coverage:`stream`}:St(e,t,void 0,n);let y=q(v.sha256);!y&&!dt&&(dt=!0,console.warn(`Host image fingerprints unavailable; browser image reuse is memory-only until the Host is updated.`));let b=y&&r?.persistent!==!1?await K(y):void 0;h();let x=JSON.stringify([o,l,d,y??p]),S=y??JSON.stringify([v.size,v.mtimeMs]),C=JSON.stringify([x,S]);ht();let ee=Y.get(C);if(!ee){let e=new AbortController,t={refs:0,controller:e,promise:Promise.resolve().then(async()=>{let a=X.get(x);if(a?.version===S)return X.delete(x),X.set(x,a),{response:new Response(a.blob),complete:Promise.resolve()};if(b){try{let t=await k.read(b,e.signal);if(m(),t&&t.size===v.size&&await G(await t.arrayBuffer())===y)return{response:new Response(t),complete:Promise.resolve()}}catch{m(),e.signal.throwIfAborted(),J()}let t=M(),n=t?.fileResources&&t.lookup?await t.lookup({key:b,size:v.size}):null;if(n&&t)try{let t=await fetch(n.url,{signal:e.signal});if(!t.ok)throw Error(`Cached file read failed (${t.status})`);let r=await t.blob();if(m(),e.signal.throwIfAborted(),r.size===v.size&&await G(await r.arrayBuffer())===y)return{response:new Response(r),complete:Promise.resolve()}}finally{await t.release(n.leaseId)}}let u=r?await r.load(e.signal):await vt(p,n,e.signal);if(m(),e.signal.aborted)throw new DOMException(`Aborted`,`AbortError`);if(u.status!==200||!u.body)throw Error(`File source request failed (${u.status})`);let f=(async()=>{let n=u.clone().body.getReader(),a=[],f=0;try{for(;;){let{done:t,value:i}=await n.read();if(t)break;if(f+=i.byteLength,r?.maxBytes&&f>r.maxBytes)throw Error(`File exceeds descriptor limit`);if(e.signal.aborted||f>v.size)throw Error(`Image changed during download`);a.push(new Uint8Array(i))}t.committing=!0;let p=await _();if(e.signal.aborted||l!==c()||d!==i()||o!==s())throw new DOMException(`Image request superseded`,`AbortError`);if(!p.isFile||f!==v.size||p.size!==v.size||p.mtimeMs!==v.mtimeMs)throw Error(`Image changed during download`);let h=new Blob(a,{type:u.headers.get(`content-type`)??`application/octet-stream`});if(y){if(q(p.sha256)!==y||await G(await h.arrayBuffer())!==y)throw Error(`Image fingerprint changed during download`);m(),e.signal.throwIfAborted();try{b&&await k.write(b,h,e.signal,r?.tags)}catch{m(),e.signal.throwIfAborted(),J()}}m(),e.signal.throwIfAborted();let g=X.get(x);g&&(Z-=g.blob.size),X.delete(x),X.set(x,{version:S,blob:h,expires:Date.now()+mt}),Z+=h.size,ht()}finally{n.cancel().catch(()=>{})}})();return f.catch(()=>$(C,t)),{response:u,complete:f}})};ee=t,Y.set(C,t),t.promise.then(n=>{t.source=n,e.signal.aborted&&$(C,t),n.complete.finally(()=>{t.committing=!1,t.refs||$(C,t)}).catch(()=>{})}).catch(()=>$(C,t))}let w=ee;w.refs+=1;let T=new AbortController,te=!1,E=()=>{te||(te=!0,t.removeEventListener(`abort`,E),w.controller.signal.removeEventListener(`abort`,E),T.abort(),--w.refs===0&&!w.committing&&$(C,w))};w.controller.signal.addEventListener(`abort`,E,{once:!0}),t.addEventListener(`abort`,E,{once:!0});try{let e=await w.promise;if(h(),T.signal.aborted||w.controller.signal.aborted)throw new DOMException(`Aborted`,`AbortError`);let t=e.response.clone(),n=new Response(t.body,{status:t.status,headers:t.headers});return v.mimeType&&n.headers.set(`Content-Type`,v.mimeType),n.headers.set(`Content-Length`,String(v.size)),n.headers.set(`Content-Disposition`,`inline; filename*=UTF-8''${encodeURIComponent(v.filename||p.split(`/`).pop()||`file`)}`),{response:n,complete:e.complete,release:E,filename:v.filename||p.split(`/`).pop()||`file`,coverage:`complete`}}catch(e){throw E(),e}},bt=async e=>{Ot();let n=new AbortController,r=n.signal,i=()=>n.abort();e.signal?.addEventListener(`abort`,i,{once:!0});let o=a(i),s=t(i),c;try{e.signal?.throwIfAborted(),c=await gt(yt(e.identity,r,{},{metadata:{isFile:!0,size:e.size,mtimeMs:0,sha256:e.sha256,mimeType:e.mime,filename:e.filename},load:e.load,persistent:e.persistent,tags:e.tags,maxBytes:e.maxBytes}),r);let t=await he(c.response,r,()=>{},e.maxBytes);if(await c.complete,r.throwIfAborted(),t.size!==e.size||await G(await t.arrayBuffer())!==e.sha256.toLowerCase())throw Error(`File fingerprint mismatch`);if(r.throwIfAborted(),e.persistent&&e.tags?.length&&t.size<=W)try{await k.tag(await K(e.sha256),e.tags,r)}catch{r.throwIfAborted(),J()}return t}finally{c?.release(),e.signal?.removeEventListener(`abort`,i),o(),s()}},xt=async e=>{Tt();try{e?await k.clearTag(e):await k.clear()}catch{J()}},St=async(e,n,r,i={})=>{let o=new AbortController,s=()=>{o.abort(),n.removeEventListener(`abort`,s),c(),l()},c=a(s),l=t(s);n.addEventListener(`abort`,s,{once:!0});try{n.throwIfAborted();let t=await vt(e,i,o.signal,r??(f()?.files.readFileBinary?void 0:`bytes=0-`));if(!t.ok&&t.status!==416)throw Error(`File request failed (${t.status})`);return{response:t,release:s,complete:Promise.resolve(),filename:e.split(`/`).pop()||`file`,coverage:`stream`}}catch(e){throw s(),e}},Ct=async(e,t)=>{if(!f()?.files?.statFile)return Et(e,t);let n=await yt(e,t),r=new AbortController,i=``,a=!1,o=()=>{a||(a=!0,t.removeEventListener(`abort`,o),r.abort(),i&&H(i),n.release())};t.addEventListener(`abort`,o,{once:!0});try{if(t.throwIfAborted(),i=await it(n.response,r.signal,s(),e),i.startsWith(`blob:`)&&await n.complete,n.complete.catch(o),t.throwIfAborted(),a)throw new DOMException(`Aborted`,`AbortError`);return Ge(i),{url:i,release:o}}catch(e){throw a&&i&&H(i),o(),e}},wt=(e,t)=>{U.get(e)===t&&(U.delete(e),t.controller.abort(),t.resource&&t.resource.release().catch(()=>{}))},Tt=()=>{for(let[e,t]of U)wt(e,t);for(let[e,t]of Y)$(e,t);X.clear(),Z=0,clearTimeout(Q),Q=void 0},Et=async(e,t)=>{let n=new AbortController,r=()=>n.abort();t.addEventListener(`abort`,r,{once:!0});let a=c(),o=i(),s=``,l=!1,u=()=>{l||(l=!0,t.removeEventListener(`abort`,r),n.abort(),s&&H(s))};try{if(t.aborted||a!==c()||o!==i()||(s=await rt(e,n.signal),t.aborted||a!==c()||o!==i()))throw new DOMException(`Image request superseded`,`AbortError`);return{url:s,release:u}}catch(e){throw u(),e}},Dt=(e,t,n=`inline`)=>{if(t.aborted)return Promise.reject(new DOMException(`Aborted`,`AbortError`));Ot();let r=M();return gt(r?It(e,t,r):Ct(e,t),t)},Ot=()=>{lt||(lt=!0,a(Tt),t(e=>{Tt(),e?.reason!==`endpoint-switch`&&(k.clear().catch(J),M()?.clear?.().catch(J))}))},kt=(e,t)=>({url:o().authenticatedAsset(e,t),cache:`browser`}),At=async e=>{let t=Nt(),n=typeof e==`function`?await e():e;return n.size<=W&&await t(n,await G(await n.arrayBuffer())),n},jt=async(e,t)=>he(await Ft(e),e.signal,t),Mt=async(e,t,n)=>{let r=e;if(/^https?:\/\//i.test(e)){let t=new URL(o().api(`/api/fs/raw`),globalThis.location?.href),n=new URL(e);n.origin===t.origin&&n.pathname===t.pathname&&(r=`/api/fs/raw${n.search}`)}if(/^\/api\/fs\/raw\?/.test(r)){let e=new URLSearchParams(r.slice(r.indexOf(`?`)+1)),i=e.get(`path`);if(i)return jt({path:i,signal:t,directory:e.get(`directory`)??void 0,allowOutsideWorkspace:e.get(`allowOutsideWorkspace`)===`true`,outsideFileGrant:e.get(`outsideFileGrant`)??void 0},n)}let i=/^\/api(?=\/|[?#]|$)/.test(e)?await p(e,{signal:t,cache:`no-store`}):await fetch(e,{signal:t,cache:`no-store`});if(!i.ok)throw Error(`File request failed (${i.status})`);return he(i,t,n)},Nt=()=>{Ot();let e=c(),n=i();return async(r,o)=>{if(r.size>W||!q(o))return;let l=new AbortController,u=a(()=>l.abort()),d=t(()=>l.abort());try{if(e!==c()||n!==i())return;let t=await K(o);if(await G(await r.arrayBuffer())!==o)return;l.signal.throwIfAborted();let a=JSON.stringify([s(),e,n,o]),u=X.get(a);u&&(Z-=u.blob.size),X.delete(a),X.set(a,{version:o,blob:r,expires:Date.now()+mt}),Z+=r.size,ht();let d=M();if(d?.fileResources&&r.size>0){let e=await d.acquire({key:t,size:r.size});try{if(l.signal.throwIfAborted(),!e.hit){let t=new Uint8Array(await r.arrayBuffer());for(let n=0;n<t.length;n+=524288)l.signal.throwIfAborted(),await d.append(e.leaseId,t.slice(n,n+524288));l.signal.throwIfAborted(),await d.commit(e.leaseId,r.type||`application/octet-stream`)}}finally{await d.release(e.leaseId)}}else await k.write(t,r,l.signal)}catch{l.signal.aborted||J()}finally{u(),d()}}},Pt=(e,t)=>{let n=/^bytes=(\d*)-(\d*)$/.exec(t),r=e.size,i=n?.[1]?Number(n[1]):Math.max(0,r-Number(n?.[2])),a=n?.[1]&&n[2]?Math.min(Number(n[2]),r-1):r-1;return!n||!n[1]&&!n[2]||!Number.isSafeInteger(i)||!Number.isSafeInteger(a)||i<0||i>=r||a<i?new Response(null,{status:416,headers:{"Content-Range":`bytes */${r}`}}):new Response(e.slice(i,a+1,e.type),{status:206,headers:{"Content-Type":e.type||`application/octet-stream`,"Content-Length":String(a-i+1),"Content-Range":`bytes ${i}-${a}/${r}`,"Accept-Ranges":`bytes`}})},Ft=async e=>{Ot();let n=e.signal??new AbortController().signal;n.throwIfAborted();let r=e.directory?Se(e.directory,e.path):A(e.path),o=c(),l=i(),d=()=>{if(n.throwIfAborted(),o!==c()||l!==i())throw new DOMException(`File request superseded`,`AbortError`)},p;if(e.range){let t=f()?.files,i=t?.statFile&&ie(t,{scopeDirectory:e.directory??null,path:r,options:{...e,fingerprint:!0}},s()),a=i?await u.fetchQuery({...i,queryKey:[...i.queryKey??[],o,l],staleTime:0,retry:!1}):void 0;d();let c=q(a?.sha256),m=c?await K(c):void 0,h=null;if(m){try{h=await k.read(m,n)}catch{J()}d(),h&&(h.size!==a?.size||await G(await h.arrayBuffer())!==c)&&(h=null)}if(h)return d(),Pt(a?.mimeType?new Blob([h],{type:a.mimeType}):h,e.range);let g=M(),_=m&&a&&g?.fileResources&&g.lookup?await g.lookup({key:m,size:a.size}):null;if(_&&g)try{d();let t=await fetch(_.url,{signal:n,headers:{Range:e.range}});if(!t.ok&&t.status!==416)throw Error(`Cached range failed (${t.status})`);let i=new Headers(t.headers);a?.mimeType&&i.set(`Content-Type`,a.mimeType),p={response:new Response(t.body,{status:t.status,headers:i}),complete:Promise.resolve(),release:()=>{g.release(_.leaseId)},filename:r.split(`/`).pop()||`file`,coverage:`stream`}}catch(e){throw await g.release(_.leaseId),e}else p=await St(r,n,e.range,e)}else{let t=M();if(t?.fileResources&&!e.outsideFileGrant&&!e.allowOutsideWorkspace&&!e.directory){let e=f()?.files,i=e?.statFile?await e.statFile(r):void 0;if(d(),i&&i.size>0&&i.size<=W){let e=await It(r,n,t);try{let t=await fetch(e.url,{signal:n});if(!t.ok)throw Error(`Cached file read failed (${t.status})`);let a=new Headers(t.headers);i.mimeType&&a.set(`Content-Type`,i.mimeType),a.set(`Content-Disposition`,`inline; filename*=UTF-8''${encodeURIComponent(i.filename||r.split(`/`).pop()||`file`)}`),p={response:new Response(t.body,{status:t.status,headers:a}),complete:Promise.resolve(),release:e.release,filename:r.split(`/`).pop()||`file`,coverage:`complete`}}catch(t){throw e.release(),t}}else p=await St(r,n)}else p=await yt(r,n,e)}try{d()}catch(e){throw p.release(),e}let m=p.response.body?.getReader();if(!m)return p.release(),p.response;let h=!1,g=()=>{h||(h=!0,n.removeEventListener(`abort`,g),_(),v(),p.release(),m.cancel().catch(()=>{}))},_=a(g),v=t(g);return n.addEventListener(`abort`,g,{once:!0}),new Response(new ReadableStream({async pull(e){try{d();let t=await m.read();d(),t.done?(await p.complete,d(),e.close(),g()):e.enqueue(t.value)}catch(t){e.error(t),g()}},cancel:g}),{status:p.response.status,statusText:p.response.statusText,headers:p.response.headers})},It=async(e,t,r)=>{let a=s(),o=c(),l=i(),d=A(e),p=f()?.files;if(!p?.statFile)throw Error(`Image file metadata is unavailable`);let m=ie(p,{scopeDirectory:null,path:d,options:{fingerprint:!0}},a),h=()=>u.fetchQuery({...m,queryKey:[...m.queryKey??[],o,l],staleTime:0,retry:!1}),g=await h();if(t.throwIfAborted(),o!==c()||l!==i()||a!==s())throw new DOMException(`Image request superseded`,`AbortError`);let _=JSON.stringify([a,o,l,q(g.sha256)??d]),v=U.get(_);if(!v){let e=new AbortController,t=()=>{if(e.signal.aborted||o!==c()||l!==i()||a!==s())throw new DOMException(`Image request superseded`,`AbortError`)},u=n()||ct;v={refs:0,controller:e,promise:(async()=>{if(t(),!g.isFile||!Number.isSafeInteger(g.size)||g.size<=0||g.size>W||typeof g.mtimeMs!=`number`||!Number.isFinite(g.mtimeMs))throw Error(`Image file version is unavailable`);let n=q(g.sha256),i=await crypto.subtle.digest(`SHA-256`,new TextEncoder().encode(JSON.stringify([a,u,d,g.size,g.mtimeMs])));t();let o=n?await K(n):Array.from(new Uint8Array(i),e=>e.toString(16).padStart(2,`0`)).join(``),s=await r.acquire({key:o,size:g.size});try{if(t(),!s.hit){let i=n?await k.read(o,e.signal).catch(()=>null):null;t();let a=i&&i.size===g.size&&await G(await i.arrayBuffer())===n?new Response(i):await vt(d,{},e.signal);if(!a.ok||!a.body)throw Error(`Image download failed (${a.status})`);let c=a.headers.get(`content-type`)?.split(`;`)[0]?.trim()??``,l=a.body.getReader(),u=0,f=[];try{for(;;){let{done:e,value:i}=await l.read();if(e)break;if(t(),u+=i.byteLength,n&&f.push(new Uint8Array(i)),u>g.size)throw Error(`Image changed during download`);for(let e=0;e<i.byteLength;e+=524288)t(),await r.append(s.leaseId,i.slice(e,e+524288))}}finally{await l.cancel().catch(()=>{})}let p=await h();if(t(),u!==g.size||p.size!==g.size||p.mtimeMs!==g.mtimeMs)throw Error(`Image changed during download`);if(n&&(q(p.sha256)!==n||await G(await new Blob(f).arrayBuffer())!==n))throw Error(`Image fingerprint changed during download`);await r.commit(s.leaseId,c)}return t(),{url:s.url,release:()=>r.release(s.leaseId)}}catch(e){throw await r.release(s.leaseId).catch(()=>{}),e}})()};let f=v;U.set(_,f),f.promise.then(e=>{f.resource=e,(f.controller.signal.aborted||!f.refs)&&(U.get(_)===f?wt(_,f):e.release().catch(()=>{}))}).catch(()=>{U.get(_)===f&&U.delete(_)})}let y=v;return y.refs+=1,new Promise((e,n)=>{let r=!1,i=()=>{r||(r=!0,--y.refs,y.refs||wt(_,y))},a=()=>{i(),n(new DOMException(`Aborted`,`AbortError`))};t.addEventListener(`abort`,a,{once:!0}),y.promise.then(n=>{if(t.removeEventListener(`abort`,a),t.aborted||y.controller.signal.aborted){a();return}e({url:n.url,release:i})},e=>{t.removeEventListener(`abort`,a),i(),n(e)})})};export{x as A,T as C,oe as D,ae as E,le as O,Se as S,se as T,Te as _,At as a,Ce as b,jt as c,We as d,at as f,$e as g,Ge as h,xt as i,b as j,C as k,bt as l,H as m,Nt as n,Mt as o,Ke as p,kt as r,Ft as s,Dt as t,Le as u,we as v,re as w,A as x,ve as y};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/vendor-capacitor-app-B5H_XtmE.js","assets/rolldown-runtime-hePW80VL.js","assets/vendor-aparajita-capacitor-secure-storage-xol_6BsB.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{f as e,g as t,h as n,l as r,p as i}from"./runtime-auth-BpCQ-dPr.js";import{a,d as o,f as s,p as c,u as l}from"./runtime-switch-CMiMO5Yj.js";import{l as u,u as d}from"./queryRuntime-DRiRiAgZ.js";import{tt as f}from"./persistence-CAKBi4bp.js";import{t as ee}from"./desktopRelayRestore-UTCV51RC.js";import{$ as te,A as ne,B as re,Ct as ie,D as ae,E as oe,F as se,H as ce,I as le,J as ue,L as de,M as fe,N as pe,P as me,Q as he,R as ge,S as _e,T as ve,U as ye,V as be,W as xe,X as Se,Y as p,Z as Ce,_ as we,_t as Te,a as Ee,at as De,b as Oe,bt as ke,c as Ae,ct as je,d as Me,dt as Ne,et as Pe,f as Fe,ft as Ie,g as Le,gt as Re,h as ze,ht as Be,i as Ve,j as He,k as Ue,l as We,lt as Ge,m as Ke,mt as qe,n as m,nt as Je,o as Ye,ot as Xe,p as Ze,pt as Qe,q as $e,s as et,st as tt,t as nt,tt as rt,u as it,ut as at,v as h,vt as ot,x as g,y as st,yt as _}from"./platform-jaHE0AyQ.js";import{s as ct}from"./runtime-file-resource-WtDqIbiH.js";import{n as v,o as y}from"./vendor-aparajita-capacitor-secure-storage-xol_6BsB.js";import{a as lt,c as ut,l as dt,n as ft,r as pt,s as mt,t as ht}from"./terminalApi-CK8s1iYr.js";import{t as gt}from"./runtime-file-download-CzOWaZO_.js";import{t as b}from"./types-BuiqMmh_.js";import{n as x,t as S}from"./capgoAdapter-KNLHDj7G.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var _t=e=>{let t=e?.retry;return{maxRetries:t?.maxRetries??3,initialRetryDelay:t?.initialDelayMs??1e3,maxRetryDelay:t?.maxDelayMs??8e3,connectionTimeout:e?.connectionTimeoutMs??1e4}},vt=()=>({async createSession(e){return pt(e)},connect(e,t,n){let r=ft(e,t.onEvent,t.onError,_t(n));return{close:()=>r()}},async sendInput(e,t){await dt(e,t)},async resize(e){await mt(e.sessionId,e.cols,e.rows)},async close(e){await ht(e)},async restartSession(e,t){return ut(e,{cwd:t.cwd??``,cols:t.cols,rows:t.rows})},async forceKill(e){await lt(e)}}),yt=()=>({checkIsGitRepository:Ae,getGitStatus:de,getGitDiff:pe,getGitFileDiff:me,revertGitFile:Xe,stageGitFile:Ge,stageGitFiles:at,unstageGitFile:Be,unstageGitFiles:Re,stageGitHunk:Ne,unstageGitHunk:Te,revertGitHunk:tt,isLinkedWorktree:$e,getGitBranches:fe,deleteGitBranch:st,deleteRemoteBranch:_e,removeRemote:Pe,generateCommitMessage:oe,generatePullRequestDescription:ae,listGitWorktrees:p,validateGitWorktree:_,createGitWorktree:h,deleteGitWorktree:g,validateWorktreeDirectory:ke,canonicalizeWorktreeState:et,createGitCommit(e,t,n){return Le(e,t,n)},gitPush:ye,gitPull:ce,gitFetch:be,listGitStashes:ue,countGitStashFiles:Ke,stashGitChanges:Qe,applyGitStash:Ye,popGitStash:Ce,dropGitStash:ve,checkoutBranch:We,createBranch:ze,renameBranch:rt,getGitLog(e,t){return le(e,t)},getCommitFiles:Ue,getCurrentGitIdentity:He,hasLocalIdentity:xe,setGitIdentity:je,getGitIdentities:se,createGitIdentity:we,updateGitIdentity:ot,deleteGitIdentity:Oe,getRemotes:re,rebase:te,abortRebase:Ee,continueRebase:Ze,merge:Se,abortMerge:Ve,continueMerge:Fe,checkoutCommit:it,cherryPick:Me,revertCommit:De,resetToCommit:Je,stash:Ie,stashPop:qe,getConflictDetails:ne,worktree:{list:p,validate:_,bootstrapStatus:ge,preview:he,create:h,remove:g}}),C=e=>e.replace(/\\/g,`/`),bt=(e,t)=>({directory:C(t?.directory||t?.path||e),entries:(Array.isArray(t?.entries)?t.entries:[]).filter(e=>!!(e&&typeof e.name==`string`&&typeof e.path==`string`)).map(e=>({name:e.name,path:C(e.path),isDirectory:!!e.isDirectory}))}),w=(e,t)=>{let n=t||e?.();return n?{"x-opencode-directory":n}:void 0},xt=({getDirectory:e})=>({async listDirectory(t,n){let r=C(t),i=new URLSearchParams;r&&i.set(`path`,r),n?.respectGitignore&&i.set(`respectGitignore`,`true`);let a=await d(`/api/fs/list`,{query:i,headers:w(e)});if(!a.ok){let e=await a.json().catch(()=>({error:a.statusText}));throw Error(e.error||`Failed to list directory`)}return bt(r,await a.json())},async search(t){let n=new URLSearchParams,r=C(t.directory);r&&n.set(`directory`,r),n.set(`query`,t.query),n.set(`dirs`,`false`),n.set(`type`,`file`),typeof t.maxResults==`number`&&Number.isFinite(t.maxResults)&&n.set(`limit`,String(t.maxResults));let i=await d(`/api/find/file`,{query:n,headers:w(e)});if(!i.ok){let e=await i.json().catch(()=>({error:i.statusText}));throw Error(e.error||`Failed to search files`)}let a=await i.json();return(Array.isArray(a)?a:[]).map(e=>({path:C(`${r}/${e}`),preview:[C(e)]}))},async createDirectory(t){let n=C(t),r=await d(`/api/fs/mkdir`,{method:`POST`,headers:{"Content-Type":`application/json`,...w(e)},body:JSON.stringify({path:n})});if(!r.ok){let e=await r.json().catch(()=>({error:r.statusText}));throw Error(e.error||`Failed to create directory`)}let i=await r.json();return{success:!!i?.success,path:typeof i?.path==`string`?C(i.path):n}},async statFile(t,n){let r=C(t),i=new URLSearchParams({path:r});n?.fingerprint&&i.set(`fingerprint`,`true`),n?.allowOutsideWorkspace&&i.set(`allowOutsideWorkspace`,`true`),n?.outsideFileGrant&&i.set(`outsideFileGrant`,n.outsideFileGrant);let a=await d(`/api/fs/stat`,{query:i,headers:w(e,n?.directory)});if(!a.ok){let e=await a.json().catch(()=>({error:a.statusText}));throw Error(e.error||`Failed to stat file`)}let o=await a.json().catch(()=>({}));return{path:typeof o.path==`string`?C(o.path):r,isFile:!!o.isFile,size:typeof o.size==`number`?o.size:0,mtimeMs:typeof o.mtimeMs==`number`?o.mtimeMs:void 0,sha256:typeof o.sha256==`string`?o.sha256:void 0,mimeType:typeof o.mimeType==`string`?o.mimeType:void 0,filename:typeof o.filename==`string`?o.filename:void 0,isBinary:typeof o.isBinary==`boolean`?o.isBinary:void 0}},async readFile(t,n){let r=C(t);if(!n?.optional)return{content:await(await ct({path:r,...n,directory:n?.directory??e?.()})).text(),path:r,exists:!0};let i=new URLSearchParams({path:r});n?.allowOutsideWorkspace&&i.set(`allowOutsideWorkspace`,`true`),n?.outsideFileGrant&&i.set(`outsideFileGrant`,n.outsideFileGrant),n?.optional&&i.set(`optional`,`true`);let a=await d(`/api/fs/read`,{query:i,cache:n?.optional?`no-store`:`default`,headers:w(e,n?.directory)});if(!a.ok){let e=await a.json().catch(()=>({error:a.statusText}));throw Error(e.error||`Failed to read file`)}let o=await a.text();if(n?.optional){let e=a.headers.get(`x-openchamber-file-exists`);if(e!==`true`&&e!==`false`)throw Error(`Optional file read requires an existence response header`);return{content:o,path:r,exists:e===`true`}}return{content:o,path:r,exists:!0}},async writeFile(t,n){let r=C(t),i=await d(`/api/fs/write`,{method:`POST`,headers:{"Content-Type":`application/json`,...w(e)},body:JSON.stringify({path:r,content:n})});if(!i.ok){let e=await i.json().catch(()=>({error:i.statusText}));throw Error(e.error||`Failed to write file`)}let a=await i.json().catch(()=>({}));return{success:!!a.success,path:typeof a.path==`string`?C(a.path):r}},async delete(t){let n=C(t),r=await d(`/api/fs/delete`,{method:`POST`,headers:{"Content-Type":`application/json`,...w(e)},body:JSON.stringify({path:n})});if(!r.ok){let e=await r.json().catch(()=>({error:r.statusText}));throw Error(e.error||`Failed to delete file`)}return{success:!!(await r.json().catch(()=>({}))).success}},async rename(t,n){let r=await d(`/api/fs/rename`,{method:`POST`,headers:{"Content-Type":`application/json`,...w(e)},body:JSON.stringify({oldPath:t,newPath:n})});if(!r.ok){let e=await r.json().catch(()=>({error:r.statusText}));throw Error(e.error||`Failed to rename file`)}let i=await r.json().catch(()=>({}));return{success:!!i.success,path:typeof i.path==`string`?C(i.path):n}},async revealPath(t){let n=await d(`/api/fs/reveal`,{method:`POST`,headers:{"Content-Type":`application/json`,...w(e)},body:JSON.stringify({path:C(t)})});if(!n.ok){let e=await n.json().catch(()=>({error:n.statusText}));throw Error(e.error||`Failed to reveal path`)}return{success:!!(await n.json().catch(()=>({}))).success}},async downloadFile(t){let n=C(t);await gt({path:n,directory:e?.()})}}),T=`/api/config/settings`,St=`/api/config/reload`,E=e=>!e||typeof e!=`object`?{}:e,Ct=()=>({async load(){let e=await d(T,{method:`GET`,headers:{Accept:`application/json`}});if(!e.ok)throw Error(`Failed to load settings: ${e.statusText}`);return{settings:E(await e.json().catch(()=>({}))),source:`web`}},async save(e){let t=await d(T,{method:`PUT`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify(e)});if(!t.ok){let e=await t.json().catch(()=>({error:t.statusText}));throw Error(e.error||`Failed to save settings`)}return E(await t.json().catch(()=>({})))},async restartOpenCode(){let e=await d(St,{method:`POST`});if(!e.ok){let t=await e.json().catch(()=>({error:e.statusText}));throw Error(t.error||`Failed to restart OpenCode`)}return{restarted:!0}}}),wt=()=>({async requestDirectoryAccess(e){return{success:!0,path:e.path}},async startAccessingDirectory(e){return{success:!0}},async stopAccessingDirectory(e){return{success:!0}}}),Tt=1500,D=5e3,Et=`openchamber-notification-claim:`,O=new Map,Dt=()=>typeof document>`u`||document.visibilityState===`visible`&&document.hasFocus(),Ot=e=>(typeof e?.tag==`string`?e.tag.trim():``)||[e?.sessionId,e?.kind,e?.title,e?.body].filter(e=>typeof e==`string`&&e.trim().length>0).map(e=>e.trim()).join(`|`),kt=e=>{for(let[t,n]of O)e-n>D&&O.delete(t)},At=e=>{let t=Ot(e);if(!t)return!0;let n=Date.now();if(kt(n),n-(O.get(t)??0)<D)return!1;try{if(typeof window<`u`&&window.localStorage){let e=`${Et}${t}`,r=Number(window.localStorage.getItem(e)??`0`);if(Number.isFinite(r)&&n-r<D)return O.set(t,r),!1;Number.isFinite(r)&&r>0&&window.localStorage.removeItem(e),window.localStorage.setItem(e,String(n))}}catch{}return O.set(t,n),!0},k=async()=>{if(typeof navigator>`u`||!(`serviceWorker`in navigator))return null;let e=null;try{e=await navigator.serviceWorker.getRegistration()??null}catch{e=null}if(e?.active)return e;if(!e)return null;try{return await Promise.race([navigator.serviceWorker.ready,new Promise(e=>{setTimeout(()=>e(null),Tt)})])??e}catch{return e}},A=async e=>{let t=await k();if(!t||typeof t.showNotification!=`function`)return!1;try{return await t.showNotification(e?.title??`OpenChamberY`,{body:e?.body,tag:e?.tag}),!0}catch(e){return console.warn(`Failed to send notification via service worker`,e),!1}},jt=async()=>{let e=await k();if(!e||!(`pushManager`in e)||!e.pushManager)return!1;try{return!!await e.pushManager.getSubscription()}catch{return!1}},Mt=async e=>{if(e?.requireHidden&&typeof document<`u`&&document.hasFocus())return!0;if(typeof Notification>`u`)return!1;if(Notification.permission==="default"&&await Notification.requestPermission()!==`granted`||Notification.permission!==`granted`)return console.warn(`Notification permission not granted`),!1;if(!Dt()&&await jt()||!At(e))return!0;try{return await A(e)||new Notification(e?.title??`OpenChamberY`,{body:e?.body,tag:e?.tag}),!0}catch(e){return console.warn(`Failed to send notification`,e),!1}},Nt=async e=>{if(typeof window>`u`)return!1;let t=window.__OPENCHAMBER_DESKTOP__;if(!t?.invoke)return!1;try{return await t.invoke(`desktop_notify`,{payload:{title:e?.title,body:e?.body,tag:e?.tag,kind:e?.kind,sessionId:e?.sessionId,directory:e?.directory,requireHidden:e?.requireHidden}}),!0}catch(e){return console.warn(`Failed to send native notification (desktop)`,e),!1}},Pt=()=>({async notifyAgentCompletion(e){return await Nt(e)||await Mt(e)},canNotify:()=>typeof window<`u`&&window.__OPENCHAMBER_DESKTOP__?.invoke?!0:typeof Notification<`u`&&Notification.permission===`granted`}),Ft=()=>({async getAvailableTools(){let e=await d(`/api/experimental/tool/ids`);if(!e.ok)throw Error(`Tools API returned ${e.status} ${e.statusText}`);let t=await e.json();if(!Array.isArray(t))throw Error(`Tools API returned invalid data format`);return t.filter(e=>typeof e==`string`&&e!==`invalid`).sort()}}),j=async(e,t)=>{try{let n=await d(e,{...t,credentials:`include`,headers:{Accept:`application/json`,...t?.headers??{}}});return n.ok?await n.json():null}catch{return null}},It=()=>({async getVapidPublicKey(){return j(`/api/push/vapid-public-key`)},async subscribe(e){return j(`/api/push/subscribe`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)})},async unsubscribe(e){return j(`/api/push/subscribe`,{method:`DELETE`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)})},async setVisibility(e){return j(`/api/push/visibility`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e),keepalive:!0})},async registerApnsToken(e){return j(`/api/push/apns-token`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)})},async unregisterApnsToken(e){return j(`/api/push/apns-token`,{method:`DELETE`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)})},async registerLiveActivityToken(e){return j(`/api/push/live-activity-token`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)})},async unregisterLiveActivityToken(e){return j(`/api/push/live-activity-token`,{method:`DELETE`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)})}}),M=async e=>await e.json().catch(()=>null),Lt=({urls:e})=>({async authStatus(){let e=await d(`/api/github/auth/status`,{method:`GET`,headers:{Accept:`application/json`}}),t=await M(e);if(!e.ok||!t)throw Error(t?.error||e.statusText||`Failed to load GitHub status`);return t},async authStart(){let e=await d(`/api/github/auth/start`,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify({})}),t=await M(e);if(!e.ok||!t||!(`deviceCode`in t))throw Error(t?.error||e.statusText||`Failed to start GitHub auth`);return t},async authComplete(e){let t=await d(`/api/github/auth/complete`,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify({deviceCode:e})}),n=await M(t);if(!t.ok||!n)throw Error(n?.error||t.statusText||`Failed to complete GitHub auth`);return n},async authDisconnect(){let e=await d(`/api/github/auth`,{method:`DELETE`,headers:{Accept:`application/json`}}),t=await M(e);if(!e.ok)throw Error(t?.error||e.statusText||`Failed to disconnect GitHub`);return{removed:!!t?.removed}},async authActivate(e){let t=await d(`/api/github/auth/activate`,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify({accountId:e})}),n=await M(t);if(!t.ok||!n)throw Error(n?.error||t.statusText||`Failed to activate GitHub account`);return n},async authSetGhCliDisabled(e){let t=await d(`/api/github/auth/gh-cli`,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify({disabled:e})}),n=await M(t);if(!t.ok||!n)throw Error(n?.error||t.statusText||`Failed to update gh CLI setting`);return{disabled:!!n.disabled}},async me(){let e=await d(`/api/github/me`,{method:`GET`,headers:{Accept:`application/json`}}),t=await M(e);if(!e.ok||!t)throw Error(t?.error||e.statusText||`Failed to fetch GitHub user`);return t},async prStatus(e,t,n,r){let i=new URLSearchParams({directory:e,branch:t,...n?{remote:n}:{},...r?.force?{force:`true`}:{}}),a=await d(`/api/github/pr/status?${i.toString()}`,{method:`GET`,headers:{Accept:`application/json`}}),o=await M(a);if(!a.ok||!o)throw Error(o?.error||a.statusText||`Failed to load PR status`);return o},async prCreate(e){let t=await d(`/api/github/pr/create`,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify(e)}),n=await M(t);if(!t.ok||!n)throw Error(n?.error||t.statusText||`Failed to create PR`);return n},async prUpdate(e){let t=await d(`/api/github/pr/update`,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify(e)}),n=await M(t);if(!t.ok||!n)throw Error(n?.error||t.statusText||`Failed to update PR`);return n},async prMerge(e){let t=await d(`/api/github/pr/merge`,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify(e)}),n=await M(t);if(!t.ok||!n)throw Error(n?.error||t.statusText||`Failed to merge PR`);return n},async prReady(e){let t=await d(`/api/github/pr/ready`,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify(e)}),n=await M(t);if(!t.ok||!n)throw Error(n?.error||t.statusText||`Failed to mark PR ready`);return n},async repoUpstream(e){let t=await d(`/api/github/repo/upstream?directory=${encodeURIComponent(e)}`,{method:`GET`,headers:{Accept:`application/json`}}),n=await M(t);if(!t.ok||!n)throw Error(n?.error||t.statusText||`Failed to detect upstream repo`);return n},async repoBranches(e,t){let n=await d(`/api/github/repo/branches?owner=${encodeURIComponent(e)}&repo=${encodeURIComponent(t)}`,{method:`GET`,headers:{Accept:`application/json`}}),r=await M(n);if(!n.ok||!r)throw Error(r?.error||n.statusText||`Failed to fetch repo branches`);return r.branches??[]},async prsList(e,t){let n=t?.page??1,r=new URLSearchParams({directory:e,page:String(n)});t?.query&&r.set(`query`,t.query);let i=await d(`/api/github/pulls/list?${r.toString()}`,{method:`GET`,headers:{Accept:`application/json`}}),a=await M(i);if(!i.ok||!a)throw Error(a?.error||i.statusText||`Failed to load pull requests`);return a},async prContext(t,n,r){let i=new URLSearchParams({directory:t,number:String(n)});r?.includeDiff&&i.set(`diff`,`1`),r?.includeCheckDetails&&i.set(`checkDetails`,`1`),r?.sourceRepo?.owner&&r.sourceRepo.repo&&(i.set(`owner`,r.sourceRepo.owner),i.set(`repo`,r.sourceRepo.repo));let a=await d(e.api(`/api/github/pulls/context`,i),{method:`GET`,headers:{Accept:`application/json`}}),o=await M(a);if(!a.ok||!o)throw Error(o?.error||a.statusText||`Failed to load pull request context`);return o},async issuesList(e,t){let n=t?.page??1,r=new URLSearchParams({directory:e,page:String(n)});t?.query&&r.set(`query`,t.query);let i=await d(`/api/github/issues/list?${r.toString()}`,{method:`GET`,headers:{Accept:`application/json`}}),a=await M(i);if(!i.ok||!a)throw Error(a?.error||i.statusText||`Failed to load issues`);return a},async issueGet(t,n,r){let i=new URLSearchParams({directory:t,number:String(n)});r?.sourceRepo?.owner&&r.sourceRepo.repo&&(i.set(`owner`,r.sourceRepo.owner),i.set(`repo`,r.sourceRepo.repo));let a=await d(e.api(`/api/github/issues/get`,i),{method:`GET`,headers:{Accept:`application/json`}}),o=await M(a);if(!a.ok||!o)throw Error(o?.error||a.statusText||`Failed to load issue`);return o},async issueComments(t,n,r){let i=new URLSearchParams({directory:t,number:String(n)});r?.sourceRepo?.owner&&r.sourceRepo.repo&&(i.set(`owner`,r.sourceRepo.owner),i.set(`repo`,r.sourceRepo.repo));let a=await d(e.api(`/api/github/issues/comments`,i),{method:`GET`,headers:{Accept:`application/json`}}),o=await M(a);if(!a.ok||!o)throw Error(o?.error||a.statusText||`Failed to load issue comments`);return o}}),N=async e=>await e.json().catch(()=>null),Rt=()=>({async listClients(){let e=await d(`/api/client-auth/clients`,{method:`GET`,headers:{Accept:`application/json`}}),t=await N(e);if(!e.ok||!t)throw Error(t?.error||e.statusText||`Failed to load remote clients`);return Array.isArray(t.clients)?t.clients:[]},async createClient(e={}){let t=await d(`/api/client-auth/clients`,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify({label:e.label??``})}),n=await N(t);if(!t.ok||!n?.client||typeof n.token!=`string`)throw Error(n?.error||t.statusText||`Failed to create remote client token`);return n},async createPairingSession(e={}){let t=await d(`/api/client-auth/pairing/sessions`,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify({label:e.label??``,...e.allowedClientKinds?{allowedClientKinds:e.allowedClientKinds}:{},...e.serverUrl?{serverUrl:e.serverUrl}:{},...typeof e.includeRelay==`boolean`?{includeRelay:e.includeRelay}:{},...typeof e.includeDirect==`boolean`?{includeDirect:e.includeDirect}:{},...e.relayUrl?{relayUrl:e.relayUrl}:{}})}),n=await N(t);if(!t.ok||typeof n?.pairing?.secret!=`string`||!n?.server)throw Error(n?.error||t.statusText||`Failed to create pairing session`);return n},async listPendingPairings(){let e=await d(`/api/client-auth/pairing/sessions`,{method:`GET`,headers:{Accept:`application/json`}}),t=await N(e);if(!e.ok||!t)throw Error(t?.error||e.statusText||`Failed to load pending pairings`);return Array.isArray(t.pending)?t.pending:[]},async getPairingTransports(){let e=await d(`/api/client-auth/pairing/transports`,{method:`GET`,headers:{Accept:`application/json`}}),t=await N(e);if(!e.ok||!t)throw Error(t?.error||e.statusText||`Failed to load pairing transports`);return{...typeof t.serverName==`string`?{serverName:t.serverName}:{},local:t.local??null,lan:t.lan??null,relayAvailable:t.relayAvailable===!0,...typeof t.relayUrl==`string`?{relayUrl:t.relayUrl}:{},...typeof t.relayUrlLocked==`boolean`?{relayUrlLocked:t.relayUrlLocked}:{}}},async cancelPairing(e){let t=await d(`/api/client-auth/pairing/sessions/${encodeURIComponent(e)}`,{method:`DELETE`,headers:{Accept:`application/json`}}),n=await N(t);if(!t.ok||!n)throw Error(n?.error||t.statusText||`Failed to cancel pairing`);return{cancelled:n.cancelled===!0}},async renameClient(e,t){let n=await d(`/api/client-auth/clients/${encodeURIComponent(e)}`,{method:`PATCH`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify({label:t})}),r=await N(n);if(!n.ok||!r?.client)throw Error(r?.error||n.statusText||`Failed to rename remote client`);return r.client},async revokeClient(e){let t=await d(`/api/client-auth/clients/${encodeURIComponent(e)}`,{method:`DELETE`,headers:{Accept:`application/json`}}),n=await N(t);if(!t.ok||!n)throw Error(n?.error||t.statusText||`Failed to revoke remote client`);return n},async purgeRevokedClients(){let e=await d(`/api/client-auth/clients`,{method:`DELETE`,headers:{Accept:`application/json`}}),t=await N(e);if(!e.ok||!t)throw Error(t?.error||e.statusText||`Failed to clear revoked clients`);return t}}),P=e=>typeof e==`object`&&!!e&&!Array.isArray(e),F=e=>typeof e==`number`&&Number.isFinite(e),zt=e=>{if(!P(e)||typeof e.ok!=`boolean`)return!1;if(e.ok===!0)return P(e.session)&&typeof e.session.id==`string`&&typeof e.messageID==`string`;let t=e.phase;if(typeof t!=`string`)return!1;switch(t){case`validate`:return typeof e.error==`string`&&Array.isArray(e.errors)&&e.errors.every(e=>typeof e==`string`);case`create`:return!(typeof e.error!=`string`||`status`in e&&e.status!==void 0&&!F(e.status));case`prompt`:return P(e.session)&&typeof e.session.id==`string`&&typeof e.messageID==`string`&&typeof e.ambiguous==`boolean`&&typeof e.error==`string`&&(!(`status`in e)||e.status===void 0||F(e.status));case`conflict`:return typeof e.error==`string`;case`unavailable`:return typeof e.error==`string`;case`internal`:return typeof e.error==`string`;default:return!1}},Bt=()=>({async createWithPrompt(e,t){let n;try{n=await d(`/api/openchamber/conversations`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e),signal:t})}catch{throw Error(`Conversation request failed`)}let r;try{r=await n.json()}catch{throw Error(`Unexpected server response: invalid JSON`)}if(!zt(r))throw Error(`Unexpected server response: result shape mismatch`);return r}}),Vt=`https://openchamber.xiaobe.top/v1/mobile/update/check`,Ht=`https://openchamber-update.vercel.app/v1/mobile/update/check`,Ut=1e4,I=`openchamber.mobile-ota.device-id.v1`,L=e=>typeof e==`string`&&e.trim().length>0?e.trim():null,R=()=>{try{let e=v;return((typeof e.getConfig==`function`?e.getConfig():void 0)??e.config)?.OpenChamberOTA??{}}catch{return{}}},z=e=>e===`beta`||e===`stable`?e:R().channel===`stable`?`stable`:`beta`,B=()=>{let e=R().shellApiVersion;return typeof e==`number`&&Number.isFinite(e)&&e>0?Math.floor(e):1},V=()=>{let e=nt();if(e===`ios`||e===`android`)return e;try{let e=v.getPlatform();if(e===`ios`||e===`android`)return e}catch{}return`android`},Wt=()=>{if(typeof window>`u`)return null;try{return L(window.localStorage.getItem(I))}catch{return null}},H=e=>{if(!(typeof window>`u`))try{window.localStorage.setItem(I,e)}catch{}},U=async e=>{if(e)try{let t=L((await e.getDeviceId()).deviceId);if(t)return H(t),t}catch{}let t=Wt();if(t)return t;let n=f();return H(n),n},W=async()=>{let e=L(`2.1.10-beta.12`);if(m())try{let{App:t}=await y(async()=>{let{App:e}=await import(`./vendor-capacitor-app-B5H_XtmE.js`).then(e=>e.t);return{App:e}},__vite__mapDeps([0,1,2])),n=await t.getInfo(),r=L(n.version)??e??`0.0.0`,i=L(n.build),a=i?Number.parseInt(i,10):0;return{version:r,build:Number.isFinite(a)?a:0}}catch{}return{version:e??`0.0.0`,build:0}},G=(e,t,n)=>{let r=L(e?.version),i=L(t);if(n===`beta`&&i)return i;if(r&&r!==`builtin`)return i&&i!==r&&i.startsWith(`${r}-`)?i:r;let a=L(e?.id);return a&&a!==`builtin`?a:i??`builtin`},Gt=()=>L(`2.1.10-beta.12`),K=e=>{let t=e?.trim().match(/^v?(\d+)\.\d+\.\d+(?:-beta\.\d+)?$/i),n=t?Number(t[1]):void 0;return n!==void 0&&Number.isSafeInteger(n)?n:void 0},q=async(e,t)=>{let n=Gt();if(!e)return G(null,n,t);try{return G((await e.current()).bundle,n,t)}catch{return G(null,n,t)}},Kt=()=>[Vt,Ht],qt=(e,t,n)=>{let r=e-n();return r<=0||t<=0?null:Math.max(1,Math.ceil(r/t))};async function Jt(e,t,n,r){try{if(m())try{let{CapacitorHttp:r}=await y(async()=>{let{CapacitorHttp:e}=await import(`./vendor-aparajita-capacitor-secure-storage-xol_6BsB.js`).then(e=>e.i);return{CapacitorHttp:e}},__vite__mapDeps([2,1])),i=Object.fromEntries(new Headers(t.headers).entries()),a;if(typeof t.body==`string`)try{a=JSON.parse(t.body)}catch{a=t.body}let o=await Promise.race([r.request({url:e,method:t.method||`GET`,headers:i,data:a,connectTimeout:n,readTimeout:n}),new Promise(e=>{window.setTimeout(()=>e(null),n)})]);return o?{ok:o.status>=200&&o.status<300,status:o.status,json:async()=>{if(typeof o.data==`string`)try{return JSON.parse(o.data)}catch{return o.data}return o.data}}:null}catch{}let i=await r(e,{...t,signal:AbortSignal.timeout(n)});return{ok:i.ok,status:i.status,json:()=>i.json()}}catch{return null}}var Yt=e=>{if(!e||typeof e!=`object`)return!1;let t=e;return!(t.status!==`ok`||t.primaryAction!==`none`&&t.primaryAction!==`apply_ota`&&t.primaryAction!==`install_native_required`||!t.ota||typeof t.ota!=`object`||!t.native||typeof t.native!=`object`||typeof t.nextCheckInSec!=`number`||!Number.isFinite(t.nextCheckInSec))},Xt=e=>{let t=e;return t.isChannelRollback===!0||t.is_channel_rollback===!0?{...e,isChannelRollback:!0}:e};async function Zt(e,t,n,r){let i=await Jt(e,{method:`POST`,headers:{Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify(t)},n,r);if(!i?.ok)return null;let a;try{a=await i.json()}catch{return null}if(!Yt(a))return null;if(a.primaryAction===`apply_ota`&&(t.releaseMajor===void 0||K(a.ota.bundle?.releaseVersion)!==t.releaseMajor))throw Error(`OTA release major mismatch`);return Xt(a)}async function Qt(e={}){let t=e.updater===void 0?await S():e.updater;if(!t&&!m())throw new b;let n=e.fetchImpl??fetch,r=e.now??Date.now,i=z(e.channelOverride),[a,o,s]=await Promise.all([U(t),W(),q(t,i)]),c={channel:i,platform:V(),deviceId:a,nativeVersion:o.version,nativeBuild:o.build,shellApiVersion:B(),currentBundleId:s,releaseMajor:K(s)??K(o.version)},l=Kt(),u=r()+Ut,d=null;for(let[e,t]of l.entries()){let i=qt(u,l.length-e,r);if(i===null)break;try{let e=await Zt(t,c,i,n);if(e)return e;d=Error(`Mobile OTA check failed at ${t}`)}catch(e){d=e instanceof Error?e:Error(`Mobile OTA check failed`)}}throw d??Error(`Unable to check for mobile OTA updates`)}async function $t(e){let t=await S();if(!t)return null;let n=await J({updater:t});if(n.releaseMajor===void 0||K(e.releaseVersion)!==n.releaseMajor)throw Error(`OTA release major mismatch`);try{let{bundles:n}=await t.list();return n.find(t=>t.checksum===e.checksum&&t.version===e.releaseVersion&&(t.status===`success`||t.status===`pending`))?.id??null}catch{return null}}async function en(e){let t=await S();if(!t)throw new b;let n=await J({updater:t});if(n.releaseMajor===void 0||K(e.releaseVersion)!==n.releaseMajor)throw Error(`OTA release major mismatch`);return(await t.download({url:e.url,version:e.releaseVersion,checksum:e.checksum,...e.sessionKey?{sessionKey:e.sessionKey}:{}})).id}async function tn(){let e=await S();if(!e)throw new b;await e.reload()}async function nn(e){let t=await S();if(!t)throw new b;await t.next({id:e})}async function J(e={}){let t=e.updater===void 0?await S():e.updater,n=z(e.channelOverride),[r,i,a]=await Promise.all([U(t),W(),q(t,n)]);return{channel:n,platform:V(),deviceId:r,nativeVersion:i.version,nativeBuild:i.build,shellApiVersion:B(),currentBundleId:a,releaseMajor:K(a)??K(i.version)}}var Y=null,X=e=>typeof e==`string`&&e.trim().length>0?e.trim():null,Z=async()=>{let e=X(`2.1.10-beta.12`);try{if(v.isNativePlatform()){let{App:t}=await y(async()=>{let{App:e}=await import(`./vendor-capacitor-app-B5H_XtmE.js`).then(e=>e.t);return{App:e}},__vite__mapDeps([0,1,2]));return X((await t.getInfo()).version)??e??`unknown`}}catch{}return e??`unknown`},rn=()=>({async checkForOtaUpdate(e){if(!x()&&!v.isNativePlatform())throw new b;return Qt(e?.channelOverride?{channelOverride:e.channelOverride}:{})},async downloadOtaUpdate(e){if(!x())throw new b;let t=await $t(e);return t?(Y=t,{skipped:!0}):(Y=await en(e),{skipped:!1})},async applyOtaUpdateNow(){if(!x())throw new b;await tn()},async queueOtaUpdateForNextLaunch(){if(!x())throw new b;let e=Y;if(!e)throw Error(`No downloaded OTA bundle to queue`);await nn(e)},async getOtaStatus(){if(!x())return{supported:!1,currentBundleId:`builtin`,nativeVersion:await Z()};let e=await S();if(!e)return{supported:!1,currentBundleId:`builtin`,nativeVersion:await Z()};try{let[t,n]=await Promise.all([e.current(),Z()]);return{supported:!0,currentBundleId:X(t.bundle?.id)||`builtin`,nativeVersion:n}}catch{return{supported:!0,currentBundleId:`builtin`,nativeVersion:await Z()}}}}),an=()=>({api:(...e)=>s().api(...e),authenticatedAsset:(...e)=>s().authenticatedAsset(...e),auth:(...e)=>s().auth(...e),health:(...e)=>s().health(...e),rawFile:(...e)=>s().rawFile(...e),sse:(...e)=>s().sse(...e),websocket:(...e)=>s().websocket(...e)}),on=(e={})=>{let t=e.urls??o();c(t);let n=an();return{runtime:{platform:`web`,isDesktop:!1,isVSCode:!1,label:`web`},terminal:vt(),git:yt(),files:xt({urls:n,getDirectory:()=>ie.getState().currentDirectory}),settings:Ct(),permissions:wt(),notifications:Pt(),github:Lt({urls:n}),push:It(),mobileUpdates:rn(),clientAuth:Rt(),tools:Ft(),conversations:Bt()}},Q=(e,t)=>{if(!e||!t)return!1;try{return new URL(e).origin===new URL(t).origin}catch{return!1}},$=Promise.resolve(),sn=()=>$,cn=()=>{let o=typeof window.__OPENCHAMBER_API_BASE_URL__==`string`?window.__OPENCHAMBER_API_BASE_URL__.trim():``,s=typeof window.__OPENCHAMBER_CLIENT_TOKEN__==`string`?window.__OPENCHAMBER_CLIENT_TOKEN__.trim():``,c=typeof window.__OPENCHAMBER_LOCAL_ORIGIN__==`string`?window.__OPENCHAMBER_LOCAL_ORIGIN__.trim():``,d=l({apiBaseUrl:o||void 0,realtimeBaseUrl:o||void 0});a({apiBaseUrl:o,runtimeKey:Q(o,c)?`local`:null}),n(s||null),t(window.__OPENCHAMBER_RUNTIME_HEADERS__||null),i(o||void 0).catch(()=>{}),c&&!Q(o,c)&&Object.keys(r()).length>0&&e(c).catch(()=>{}),u();let f=window.__OPENCHAMBER_RELAY_HOST_ID__;return $=Promise.race([ee(typeof f==`string`&&f?f:void 0).catch(()=>{}),new Promise(e=>{window.setTimeout(e,1e4)})]),on({urls:d})};export{sn as n,cn as t};
|