@augmentd-labs/canvas-web 2.15.4 → 2.15.6

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.
@@ -1 +0,0 @@
1
- import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{St as t,wt as n,xt as r}from"./react-DQazvoR7.js";import{A as i,D as a,E as o,M as s,N as c,O as l,P as u,j as d,k as f,yi as p}from"./ui-BX_B5WCf.js";import{i as m}from"./utils-BxVxyehK.js";import{t as h}from"./utils-2pl1SbIp.js";var g=e(n(),1),_=t(),v=m([`inline-flex items-center justify-center gap-2 whitespace-nowrap`,`text-sm transition-colors`,`rounded-(--btn-radius) font-(number:--btn-font-weight)`,`focus-ring`,`disabled:pointer-events-none disabled:opacity-50`,`[&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0`],{variants:{variant:{default:`bg-primary text-primary-foreground shadow-elevation-1 hover:bg-primary/90`,destructive:`bg-destructive text-destructive-foreground shadow-elevation-1 hover:bg-destructive/90`,outline:`border-(length:--btn-border-width) border-input bg-background shadow-elevation-1 hover:bg-accent hover:text-accent-foreground`,secondary:`bg-secondary text-secondary-foreground shadow-elevation-1 hover:bg-secondary/80`,ghost:`hover:bg-accent hover:text-accent-foreground`,link:`text-primary underline-offset-4 hover:underline`},size:{default:`h-(--btn-height) px-(--btn-padding-x)`,sm:`h-control-sm rounded-(--btn-radius) px-3 text-xs`,lg:`h-control-lg rounded-(--btn-radius) px-8`,icon:`h-(--btn-height) w-(--btn-height)`}},defaultVariants:{variant:`default`,size:`default`}}),y=r(),b=g.forwardRef(({className:e,variant:t,size:n,asChild:r=!1,...i},a)=>(0,y.jsx)(r?p:`button`,{className:h(v({variant:t,size:n,className:e})),ref:a,...i}));b.displayName=`Button`;var ee=g.forwardRef(({className:e,type:t,...n},r)=>(0,y.jsx)(`input`,{type:t,className:h(`flex w-full bg-transparent px-3 py-1 text-base transition-colors md:text-sm`,`h-(--input-height) rounded-(--input-radius)`,`border-(length:--input-border-width) border-input shadow-elevation-1`,`file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground`,`placeholder:text-muted-foreground`,`focus-ring`,`disabled:cursor-not-allowed disabled:opacity-50`,e),ref:r,...n}));ee.displayName=`Input`;function te(e){return!!e&&typeof e==`object`&&!Array.isArray(e)&&Object.prototype.hasOwnProperty.call(e,`status`)&&Object.prototype.hasOwnProperty.call(e,`payload`)}var ne=`/rest/v2`,re=3e4,ie=`X-App-Name`,ae=`.workspace`;Object.freeze([`**/.*`,`**/.*/**`,`**/node_modules/**`,`**/__pycache__/**`,`**/bower_components/**`,`**/vendor/bundle/**`,`**/target/debug/**`,`**/target/release/**`,`**/*.swp`,`**/*.tmp`,`**/Cache/**`,`**/Caches/**`,`**/CachedData/**`]),Object.freeze([ae,`${ae}/**`]);function oe(e){return String(e||``).replace(/^\/+/,``).split(`/`).map(encodeURIComponent).join(`/`)}function se(e){let t=String(e||`/`);return t.startsWith(`/`)?t:`/${t}`}var x={login:()=>`/auth/login`,logout:()=>`/auth/logout`,me:()=>`/auth/me`,status:()=>`/auth/status`,tokens:()=>`/auth/tokens`,token:e=>`/auth/tokens/${e}`,tokenRefresh:()=>`/auth/token/refresh`,devices:()=>`/auth/devices`,device:e=>`/auth/devices/${e}`,deviceRegister:()=>`/auth/devices/register`},S={collection:()=>`/workspaces`,byId:e=>`/workspaces/${e}`,start:e=>`/workspaces/${e}/start`,stop:e=>`/workspaces/${e}/stop`,status:e=>`/workspaces/${e}/status`,stats:e=>`/workspaces/${e}/stats`,tree:e=>`/workspaces/${e}/tree`,trees:e=>`/workspaces/${e}/trees`,treePath:(e,t,n)=>`/workspaces/${e}/trees/${encodeURIComponent(t)}/path${se(n)}`,pins:e=>`/workspaces/${e}/pins`,pin:(e,t)=>`/workspaces/${e}/pins/${encodeURIComponent(t)}`,pinsOrder:e=>`/workspaces/${e}/pins/order`,documents:e=>`/workspaces/${e}/documents`,documentsRemove:e=>`/workspaces/${e}/documents/remove`,treeByName:(e,t)=>`/workspaces/${e}/trees/${t}`,blobs:e=>`/workspaces/${e}/blobs`,dotfiles:e=>`/workspaces/${e}/dotfiles`,dotfilesStatus:e=>`/workspaces/${e}/dotfiles/status`,dotfilesInit:e=>`/workspaces/${e}/dotfiles/init`,backends:(e,t=null)=>`/workspaces/${e}/backends${t?`/${encodeURIComponent(t)}`:``}`,backend:(e,t,n)=>`/workspaces/${e}/backends/${encodeURIComponent(t)}/${encodeURIComponent(n)}`,backendSync:(e,t,n)=>`${S.backend(e,t,n)}/sync`,backendUsage:(e,t,n)=>`${S.backend(e,t,n)}/usage`,backendDocuments:(e,t,n)=>`${S.backend(e,t,n)}/documents`,backendObjects:(e,t,n)=>`${S.backend(e,t,n)}/objects`,backendObject:(e,t,n,r)=>`${S.backend(e,t,n)}/objects/${oe(r)}`,backendObjectRename:(e,t,n)=>`${S.backend(e,t,n)}/objects/rename`,backendChanges:(e,t,n)=>`${S.backend(e,t,n)}/changes`,mirrors:e=>`/workspaces/${e}/mirrors`,mirror:(e,t)=>`/workspaces/${e}/mirrors/${encodeURIComponent(t)}`,mirrorStatus:(e,t)=>`${S.mirror(e,t)}/status`,syncConflicts:e=>`/workspaces/${e}/sync/conflicts`,syncConflictResolve:(e,t)=>`/workspaces/${e}/sync/conflicts/${t}/resolve`,hooks:e=>`/workspaces/${e}/hooks`,hook:(e,t)=>`/workspaces/${e}/hooks/${t}`,hookRuns:e=>`/workspaces/${e}/hooks/runs`,hookReplay:(e,t)=>`/workspaces/${e}/hooks/runs/${t}/replay`,hooksExplain:e=>`/workspaces/${e}/hooks/explain`,hooksBackfill:e=>`/workspaces/${e}/hooks/backfill`},ce={collection:()=>`/contexts`,byId:e=>`/contexts/${e}`,tree:e=>`/contexts/${e}/tree`,treePaths:e=>`/contexts/${e}/tree/paths`,documents:e=>`/contexts/${e}/documents`,document:(e,t)=>`/contexts/${e}/documents/${t}`,documentsRemove:e=>`/contexts/${e}/documents/remove`,blobs:e=>`/contexts/${e}/blobs`,dotfiles:e=>`/contexts/${e}/dotfiles`,url:e=>`/contexts/${e}/url`},C={collection:()=>`/agents`,byId:e=>`/agents/${e}`,status:e=>`/agents/${e}/status`,prompt:e=>`/agents/${e}/prompt`},le={collection:()=>`/roles`,byId:e=>`/roles/${e}`},ue=()=>`/ping`,w=class extends Error{constructor(e,{code:t,statusCode:n,status:r,cause:i,retryable:a,reason:o,stoppedAt:s,hint:c}={}){super(e),this.name=`CanvasError`,this.code=t||`CANVAS_ERROR`,this.statusCode=n??r,this.status=r??n,i&&(this.cause=i),Object.assign(this,{retryable:a,reason:o,stoppedAt:s,hint:c})}},de=new Set([`ECONNREFUSED`,`ENOTFOUND`,`ETIMEDOUT`,`ECONNRESET`,`EAI_AGAIN`,`EPIPE`,`UND_ERR_CONNECT_TIMEOUT`,`UND_ERR_SOCKET`]),fe=new Set([`ConnectionRefused`,`ConnectionClosed`,`FailedToOpenSocket`,`DNSException`,`Timeout`]);function pe(e,t=new Set,n=0){if(!e||typeof e!=`object`||n>6)return t;if(typeof e.code==`string`&&t.add(e.code),Array.isArray(e.errors))for(let r of e.errors)pe(r,t,n+1);return e.cause&&pe(e.cause,t,n+1),t}function me(e){for(let t of pe(e))if(de.has(t)||fe.has(t))return!0;return!1}function he(e){if(!te(e))return e;if(e.status===`error`){let t=e.message||`Request failed`,n=typeof e.payload==`string`?e.payload.trim():``;throw new w(n&&!t.includes(n)?`${t}: ${n}`:t,{retryable:e.retryable,reason:e.reason,stoppedAt:e.stoppedAt,hint:e.hint,code:e.code,statusCode:e.statusCode,status:e.statusCode})}return e.payload}function ge(e){let t=e[Symbol.asyncIterator]();return new ReadableStream({async pull(e){let{value:n,done:r}=await t.next();if(r){e.close();return}e.enqueue(typeof n==`string`?new TextEncoder().encode(n):n)},cancel(e){return t.return?t.return(e).then(()=>void 0):void 0}})}var _e=e=>!!e&&typeof e==`object`&&typeof e.pipe==`function`&&typeof e[Symbol.asyncIterator]==`function`;function ve(e){return e==null?{}:typeof e==`string`||typeof Blob<`u`&&e instanceof Blob||e instanceof ArrayBuffer||ArrayBuffer.isView(e)||typeof URLSearchParams<`u`&&e instanceof URLSearchParams?{body:e}:typeof ReadableStream<`u`&&e instanceof ReadableStream?{body:e,duplex:`half`}:_e(e)?{body:ge(e),duplex:`half`}:{body:JSON.stringify(e),isJson:!0}}function ye(e){return{login:t=>e.post(x.login(),{strategy:`auto`,...t}),logout:()=>e.post(x.logout()),me:()=>e.get(x.me()),status:()=>e.get(x.status()),tokens:{list:()=>e.get(x.tokens()),create:t=>e.post(x.tokens(),t),delete:t=>e.delete(x.token(t)),update:(t,n)=>e.put(x.token(t),n)},devices:{register:t=>e.post(x.deviceRegister(),t),list:()=>e.get(x.devices()),update:(t,n)=>e.patch(x.device(t),n),remove:t=>e.delete(x.device(t))}}}var T=S;function be(e){return{list:()=>e.get(T.collection()),get:t=>e.get(T.byId(t)),create:t=>e.post(T.collection(),t),update:(t,n)=>e.put(T.byId(t),n),delete:t=>e.delete(T.byId(t)),start:(t,n={})=>e.post(T.start(t),n),stop:t=>e.post(T.stop(t)),status:t=>e.get(T.status(t)),stats:t=>e.get(T.stats(t)),tree:t=>e.get(T.tree(t)),trees:t=>e.get(T.trees(t)),removeTreePath:(t,n,r,{recursive:i=!1,purge:a=!1,destroy:o=!1}={})=>e.delete(T.treePath(t,n,r),{params:{recursive:i,...a?{purge:!0}:{},...o?{destroy:!0}:{}}}),documents:(t,n)=>e.get(T.documents(t),{params:n}),insertDocuments:(t,n)=>e.post(T.documents(t),n),uploadBlob:(t,n)=>e.request(`POST`,T.blobs(t),{data:n,headers:{"Content-Type":`application/octet-stream`}}),dotfiles:{list:(t,n)=>e.get(T.dotfiles(t),{params:n}),create:(t,n,r={})=>e.post(T.dotfiles(t),{dotfiles:Array.isArray(n)?n:[n],...r}),update:(t,n,r={})=>e.put(T.dotfiles(t),{documents:n,...r}),delete:(t,n)=>e.delete(T.dotfiles(t),{data:n}),status:t=>e.get(T.dotfilesStatus(t)),init:t=>e.post(T.dotfilesInit(t))},backends:{list:(t,n=null)=>e.get(T.backends(t,n)),get:(t,n,r)=>e.get(T.backend(t,n,r)),add:(t,n,r)=>e.post(T.backends(t,n),r),update:(t,n,r,i)=>e.patch(T.backend(t,n,r),i),remove:(t,n,r)=>e.delete(T.backend(t,n,r)),sync:(t,n,r)=>e.post(T.backendSync(t,n,r)),usage:(t,n,r)=>e.get(T.backendUsage(t,n,r)),documents:(t,n,r,i={})=>e.get(T.backendDocuments(t,n,r),{params:i}),objects:(t,n,r,i={})=>e.get(T.backendObjects(t,n,r),{params:i}),changes:(t,n,r,i={})=>e.get(T.backendChanges(t,n,r),{params:i}),putObject:(t,n,r,i,a,{headers:o={},params:s}={})=>e.request(`PUT`,T.backendObject(t,n,r,i),{data:a,...s?{params:s}:{},headers:{"Content-Type":`application/octet-stream`,...o}}),deleteObject:(t,n,r,i,{ifMatch:a,origin:o}={})=>e.delete(T.backendObject(t,n,r,i),{headers:{...a?{"If-Match":a}:{},...o?{"X-Canvas-Origin":o}:{}}}),renameObject:(t,n,r,i)=>e.post(T.backendObjectRename(t,n,r),i)},sync:{mirrors:t=>e.get(T.mirrors(t)),reportMirror:(t,n,r)=>e.post(T.mirrorStatus(t,n),r),forgetMirror:(t,n)=>e.delete(T.mirror(t,n)),conflicts:t=>e.get(T.syncConflicts(t)),resolveConflict:(t,n,r)=>e.post(T.syncConflictResolve(t,n),{keep:r})},hooks:{list:t=>e.get(T.hooks(t)),get:(t,n)=>e.get(T.hook(t,n)),set:(t,n,r)=>e.put(T.hook(t,n),{content:r}),delete:(t,n)=>e.delete(T.hook(t,n)),runs:(t,n={})=>e.get(T.hookRuns(t),{params:n}),explain:(t,n)=>e.post(T.hooksExplain(t),n),backfill:(t,n)=>e.post(T.hooksBackfill(t),n),replay:(t,n)=>e.post(T.hookReplay(t,n))}}}var E=ce;function xe(e){return{list:()=>e.get(E.collection()),get:t=>e.get(E.byId(t)),create:t=>e.post(E.collection(),t),update:(t,n)=>e.put(E.byId(t),n),delete:t=>e.delete(E.byId(t)),tree:t=>e.get(E.tree(t)),documents:(t,n)=>e.get(E.documents(t),{params:n}),insertDocuments:(t,n)=>e.post(E.documents(t),n),uploadBlob:(t,n)=>e.request(`POST`,E.blobs(t),{data:n,headers:{"Content-Type":`application/octet-stream`}}),dotfiles:t=>e.get(E.dotfiles(t)),url:t=>e.get(E.url(t)),setUrl:(t,n)=>e.post(E.url(t),{url:n})}}function Se(e){return{list:()=>e.get(C.collection()),get:t=>e.get(C.byId(t)),status:t=>e.get(C.status(t)),prompt:(t,n)=>e.post(C.prompt(t),n)}}function Ce(e){return{list:()=>e.get(le.collection()),get:t=>e.get(le.byId(t))}}function we(e){let t=new URLSearchParams;for(let[n,r]of Object.entries(e||{}))if(r!=null){if(Array.isArray(r))for(let e of r)e!=null&&t.append(n,String(e));else t.append(n,String(r))}return t}function Te(e){let t=null,n=e;for(let e=0;n&&typeof n==`object`&&e<6;e++){if(typeof n.code==`string`&&(t=n),Array.isArray(n.errors)&&n.errors.length){let e=n.errors.find(e=>e&&typeof e.code==`string`);e&&(t=e)}n=n.cause}return t}var Ee=class{constructor({baseUrl:e,apiBase:t=ne,getToken:n,token:r,timeout:i=re,userAgent:a,appName:o,headers:s={},unwrap:c=!0,fetch:l}={}){if(!e)throw new w(`baseUrl is required`);this.baseUrl=String(e).replace(/\/$/,``),this.apiBase=t,this.getToken=n||(()=>r||null),this.timeout=i,this.userAgent=a,this.appName=o,this.defaultHeaders=s,this.unwrapEnvelopes=c,this._fetch=l||((...e)=>globalThis.fetch(...e)),this.auth=ye(this),this.workspaces=be(this),this.contexts=xe(this),this.agents=Se(this),this.roles=Ce(this)}async request(e,t,{params:n,data:r,headers:i,timeout:a,signal:o}={}){let s=new URL(this.baseUrl+this.apiBase+t),c=we(n);for(let[e,t]of c)s.searchParams.append(e,t);let{body:l,duplex:u,isJson:d}=ve(r),f={...this.defaultHeaders,...i||{}},p=e=>Object.keys(f).some(t=>t.toLowerCase()===e);d&&!p(`content-type`)&&(f[`Content-Type`]=`application/json`),this.userAgent&&!p(`user-agent`)&&(f[`User-Agent`]=this.userAgent),this.appName&&!p(`x-app-name`)&&(f[ie]=this.appName);let m=this.getToken();m&&!p(`authorization`)&&(f.Authorization=`Bearer ${m}`);let h=a??this.timeout,g=[];h&&g.push(AbortSignal.timeout(h)),o&&g.push(o);let _=g.length>1?AbortSignal.any(g):g[0],v;try{v=await this._fetch(s,{method:e,headers:f,...l===void 0?{}:{body:l},...u?{duplex:u}:{},..._?{signal:_}:{}})}catch(e){if(e?.name===`TimeoutError`||e?.cause?.name===`TimeoutError`)throw new w(`Request timed out after ${h}ms`,{code:`TIMEOUT`,cause:e});if(e?.name===`AbortError`)throw new w(`Request aborted`,{code:`ABORTED`,cause:e});let t=Te(e)||e.cause||e;throw new w(t?.message||e.message||`Request failed`,{cause:t})}let y=await this._parseBody(v);if(te(y))return y.status===`error`||this.unwrapEnvelopes?he(y):y;if(v.ok)return y;throw new w(y&&typeof y==`object`&&y.message||(typeof y==`string`&&y.trim()?y.trim().slice(0,200):``)||`HTTP ${v.status}${v.statusText?` ${v.statusText}`:``}`,{statusCode:v.status,status:v.status})}async _parseBody(e){if(e.status===204)return null;let t=e.headers.get(`content-type`)||``,n=await e.text();if(!n)return null;if(t.includes(`application/json`))try{return JSON.parse(n)}catch(t){throw new w(`Invalid JSON in response`,{statusCode:e.status,status:e.status,cause:t})}return n}get(e,t){return this.request(`GET`,e,t)}post(e,t,n){return this.request(`POST`,e,{...n,data:t??{}})}put(e,t,n){return this.request(`PUT`,e,{...n,data:t??{}})}patch(e,t,n){return this.request(`PATCH`,e,{...n,data:t??{}})}delete(e,t){return this.request(`DELETE`,e,t)}ping(){return this.get(ue())}};function De(){return`${window.location.origin}/rest/v2`}var D=De(),Oe=D.split(`/rest`)[0],O={login:`${D}/auth/login`,register:`${D}/auth/register`,logout:`${D}/auth/logout`,me:`${D}/auth/me`,authConfig:`${D}/auth/config`,verifyEmailRequest:`${D}/auth/verify-email`,tokens:`${D}/auth/tokens`,users:`${D}/users`,currentUser:`${D}/auth/me`,workspaces:`${D}/workspaces`,contexts:`${D}/contexts`,inferd:`${D}/inferd`,admin:{users:`${D}/admin/users`,workspaces:`${D}/admin/workspaces`,logs:`${D}/admin/logs`,logsStream:`${D}/admin/logs/stream`,inferd:`${D}/admin/inferd`,authConfig:`${D}/admin/auth-config`},roles:`${D}/roles`,roleTemplates:`${D}/role-templates`,devices:`${D}/auth/devices`,ws:Oe},ke=null;function Ae(e){ke=e}function je(e,t){e.message.includes(`socket.io`)||e.message.includes(`websocket`)||(console.error(`API Error:`,e,t),ke&&ke(e,t))}function Me(e,t){return!e.statusCode&&e.code!==`ABORTED`&&e.code!==`TIMEOUT`&&(t||/fetch failed|failed to fetch|networkerror|load failed/i.test(e.message))}var k=typeof navigator<`u`&&navigator.onLine===!1,Ne=new Set;function Pe(e){if(k!==e){k=e;for(let e of Ne)e(k)}}function Fe(){return k}function A(){Pe(!0)}function Ie(){Pe(!1)}var Le=/Network error:/i;function Re(e){return e!=null&&Le.test(e)}function ze(e){return Ne.add(e),()=>{Ne.delete(e)}}typeof window<`u`&&window.addEventListener(`offline`,()=>Pe(!0));var j=!1;function Be(){let e=localStorage.getItem(`appName`);return e||(e=window.location.hostname,localStorage.setItem(`appName`,e)),e}function M(e){e&&localStorage.removeItem(`authToken`),j=!0,window.location.pathname.includes(`/login`)||(window.location.href=`/login`)}function N(){return localStorage.getItem(`authToken`)}function P(e){return e?e.startsWith(`canvas-`)&&e.length>10?!0:/^[A-Za-z0-9-_=]+\.[A-Za-z0-9-_=]+\.?[A-Za-z0-9-_.+/=]*$/.test(e):!1}function Ve(e,t){if(j&&!e&&!t)throw Error(`Authentication required`);if(e)return;let n=N();if(!n)throw console.warn(`Attempting authenticated request without token`),t||M(!1),Error(`Authentication required`);if(!P(n))throw console.warn(`Invalid token format detected, clearing`),t||M(!0),Error(`Invalid authentication token format`)}function He(e){throw!e&&!j&&(console.error(`Authentication failed, redirecting to login`),M(!0)),Error(`Authentication required`)}function Ue(e){if(e.startsWith(D))return e.slice(D.length);if(e.startsWith(`http`))throw Error(`api.* endpoints must live under API_URL (${D}); got ${e}`);return e}var We=(e,t={})=>fetch(e,{...t,credentials:`include`}).then(e=>(e.headers.get(`x-canvas-offline`)===`fallback`?A():Ie(),e),e=>{throw!t.signal?.aborted&&!(e instanceof Error&&e.name===`AbortError`)&&A(),e});function F(e,t){return new Ee({baseUrl:D,apiBase:``,getToken:e?N:()=>null,appName:Be(),timeout:0,unwrap:!t,fetch:We})}var I={authed:F(!0,!1),anon:F(!1,!1),authedEnvelope:F(!0,!0),anonEnvelope:F(!1,!0)};function Ge(e,t){return t?e?I.anonEnvelope:I.authedEnvelope:e?I.anon:I.authed}async function L(e,t,n,r={}){let{skipAuth:i=!1,noAuthRedirect:a=!1,envelope:o=!1,headers:s,signal:c,body:l}=r;Ve(i,a);let u=Ge(i,o);try{let r=await u.request(e,Ue(t),{data:n===void 0?l??void 0:n,headers:s,signal:c??void 0});return j=!1,r===null?void 0:r}catch(n){if(n instanceof w){if(n.code===`WORKSPACE_STOPPED`)throw n;if(n.code===`ABORTED`)throw new DOMException(`Request aborted`,`AbortError`);if(n.statusCode===401&&!i&&He(a),Me(n,me(n)))throw Error(`Network error: server unreachable. Check your connection and try again.`)}throw console.error(`API Error: ${t}`,n),n instanceof Error&&je(n,`${e} ${t}`),n}}var R={async get(e,t={}){return L(`GET`,e,void 0,t)},async post(e,t,n={}){return L(`POST`,e,t,n)},async put(e,t,n={}){return L(`PUT`,e,t,n)},async patch(e,t,n={}){return L(`PATCH`,e,t,n)},async delete(e,t={}){return L(`DELETE`,e,void 0,t)},async getEnvelope(e,t={}){return L(`GET`,e,void 0,{...t,envelope:!0})},async postEnvelope(e,t,n={}){return L(`POST`,e,t,{...n,envelope:!0})},setAuthToken(e){if(!e){console.warn(`Attempted to set empty auth token`);return}if(!P(e)){console.error(`Attempted to set invalid token format:`,e.substring(0,10)+`...`);return}localStorage.setItem(`authToken`,e),console.log(`Auth token set successfully`),j=!1},clearAuthToken(){localStorage.removeItem(`authToken`),console.log(`Auth token cleared`)},isAuthenticated(){let e=N();return!!e&&P(e)},async stream(e,t,n={}){let{onOpen:r,onChunk:i,onError:a,onComplete:o,signal:s}=n;try{Ve(!1,!1);let n=N(),a,c={"X-App-Name":Be(),...n?{Authorization:`Bearer ${n}`}:{}};t!==void 0&&(typeof t==`object`&&t&&!(t instanceof FormData)&&!(t instanceof URLSearchParams)&&!(t instanceof Blob)?(a=JSON.stringify(t),c[`Content-Type`]=`application/json`):a=t);let l=e.startsWith(`http`)?e:`${D}${e}`,u=await fetch(l,{method:`POST`,credentials:`include`,headers:c,body:a,signal:s});if(!u.ok){u.status===401&&He(!1);let e=null;try{e=await u.json()}catch{}let t=e?.message||e?.error||u.statusText||`Request failed`;throw Error(`HTTP ${u.status}: ${t}`)}if(j=!1,r?.(),!u.body)throw Error(`Response body is null - streaming not supported`);if(typeof u.body.getReader!=`function`){console.warn(`ReadableStream.getReader not available, falling back to text response`);let e=await u.text();i&&i(e),o&&o();return}let d=u.body.getReader(),f=new TextDecoder;try{for(;;){if(s?.aborted)throw d.cancel(),Error(`Stream aborted`);let{done:e,value:t}=await d.read();if(e){o&&o();break}let n=f.decode(t,{stream:!0});n&&i&&i(n)}}finally{d.releaseLock()}}catch(e){throw console.error(`Streaming error:`,e),a&&a(e instanceof Error?e:Error(String(e))),e}}},Ke=s,qe=u,Je=d,Ye=g.forwardRef(({className:e,...t},n)=>(0,y.jsx)(i,{className:h(`fixed inset-0 z-50 bg-scrim data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0`,e),...t,ref:n}));Ye.displayName=i.displayName;var z=g.forwardRef(({className:e,...t},n)=>(0,y.jsxs)(Je,{children:[(0,y.jsx)(Ye,{}),(0,y.jsx)(l,{ref:n,className:h(`fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-elevation-3 duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg`,e),...t})]}));z.displayName=l.displayName;var B=({className:e,...t})=>(0,y.jsx)(`div`,{className:h(`flex flex-col space-y-2 text-center sm:text-left`,e),...t});B.displayName=`AlertDialogHeader`;var Xe=({className:e,...t})=>(0,y.jsx)(`div`,{className:h(`flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2`,e),...t});Xe.displayName=`AlertDialogFooter`;var V=g.forwardRef(({className:e,...t},n)=>(0,y.jsx)(c,{ref:n,className:h(`text-lg font-semibold`,e),...t}));V.displayName=c.displayName;var Ze=g.forwardRef(({className:e,...t},n)=>(0,y.jsx)(f,{ref:n,className:h(`text-sm text-muted-foreground`,e),...t}));Ze.displayName=f.displayName;var Qe=g.forwardRef(({className:e,...t},n)=>(0,y.jsx)(o,{ref:n,className:h(v(),e),...t}));Qe.displayName=o.displayName;var $e=g.forwardRef(({className:e,...t},n)=>(0,y.jsx)(a,{ref:n,className:h(v({variant:`outline`}),`mt-2 sm:mt-0`,e),...t}));$e.displayName=a.displayName;function et(e){return new Promise((t,n)=>{let r=document.createElement(`div`);document.body.appendChild(r);let i=(0,_.createRoot)(r),a=e=>{i.unmount(),r.remove(),e?t(e):n(Error(`Workspace start cancelled`))};function o(){let[t,n]=(0,g.useState)(``);return(0,y.jsx)(Ke,{open:!0,onOpenChange:e=>{e||a()},children:(0,y.jsxs)(z,{children:[(0,y.jsxs)(B,{children:[(0,y.jsx)(V,{children:`Start protected workspace`}),(0,y.jsx)(Ze,{children:e===`workspace`?`Enter the workspace PIN/password or recovery key to start.`:`Unlock integrations, or start with authenticated integrations unavailable.`})]}),(0,y.jsxs)(`form`,{className:`space-y-4`,onSubmit:e=>{e.preventDefault(),a({passphrase:t})},children:[(0,y.jsxs)(`label`,{className:`space-y-2 block text-sm`,children:[`PIN/password or recovery key`,(0,y.jsx)(ee,{autoFocus:!0,type:`password`,autoComplete:`current-password`,value:t,onChange:e=>n(e.target.value)})]}),(0,y.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,y.jsx)(b,{type:`submit`,disabled:!t,children:`Unlock and start`}),e===`secrets`&&(0,y.jsx)(b,{type:`button`,variant:`outline`,onClick:()=>a({withoutSecrets:!0}),children:`Start without integrations`}),(0,y.jsx)(b,{type:`button`,variant:`ghost`,onClick:()=>a(),children:`Cancel`})]})]})]})})}i.render((0,y.jsx)(o,{}))})}var tt={gh:`GitHub`,slack:`Slack`,gcal:`Google Calendar`,caldav:`CalDAV`,msteams:`Microsoft Teams`};function nt(e){for(let t of e.locations||[]){let e=t?.url;if(typeof e!=`string`)continue;let n=e.indexOf(`://`);if(n<=0)continue;let r=e.slice(0,n),i=tt[r];if(i)return{scheme:r,label:i,url:e}}return null}var H=new Map,rt=new Set;function it(){for(let e of rt)e()}function at(e){H.set(e,(H.get(e)||0)+1),it()}function ot(e){let t=(H.get(e)||0)-1;t>0?H.set(e,t):H.delete(e),it()}function st(e){return rt.add(e),()=>{rt.delete(e)}}function ct(e){let t=(0,g.useCallback)(()=>e!=null&&H.has(e),[e]);return(0,g.useSyncExternalStore)(st,t,()=>!1)}function lt(e){let t=ct(e.id),n=nt(e),r=t&&n!=null;return{mirror:n,replicating:r,label:r?`Replicating to ${n.label}…`:``}}var U=`context`,ut=`data/schema/identity`,dt=e=>e===`directory`||e===`backends`?`directory`:`context`;function ft(e,t){if(!e||t===`/`)return null;let n=t.split(`/`).filter(Boolean),r=e;for(let e of n)if(r=r?.children?.find(t=>t.name===e),!r)return null;return r??null}var W=new Map,G=new Map;function pt(e,t=`/`,n=U,r=`context`){e.append(`treeNameOrTreeId`,n),e.append(`treeType`,r),t&&e.append(`context`,t)}var K=[`includes`,`references`,`derived-from`,`mentions`,`replies-to`,`depicts`,`authored-by`,`member-of`];function q(e,t=[]){t.filter(Boolean).forEach(t=>e.append(`allOf`,t))}function mt(e,t=[]){t.filter(Boolean).forEach(t=>e.append(`anyOf`,t))}function ht(e,t=[]){t.filter(Boolean).forEach(t=>e.append(`noneOf`,t))}function gt(e,t=[]){t.filter(Boolean).forEach(t=>e.append(`filters`,t))}function _t(e,t){for(let n of t??[])e.append(`ids`,String(n))}function vt(e,t){for(let n of t??[]){let t=n.op===`allOf`?`+`:n.op===`noneOf`?`!`:``;e.append(`rel`,`${t}${n.p}:${n.of}:${n.dir??`out`}`)}}function yt(e,t,n){let r=(t&&t.length?t:n?[n]:[]).map(e=>e.trim()).filter(Boolean);for(let t of r)e.append(`q`,t)}function bt(e,t=U){return`${O.workspaces}/${e}/trees/${encodeURIComponent(t)}`}function xt(e,t=U){return`${e}\0${t}`}function St(e){return String(e||`/`).split(`/`).filter(Boolean).map(encodeURIComponent).join(`/`)}function J(e,t,n){let r=St(n);return`${bt(e,t)}/path/${r}`}async function Ct(e){let t=await R.get(`${O.workspaces}/${e}`);return t&&`workspace`in t?t.workspace:t}async function wt(){try{let e=await R.get(O.workspaces);return Array.isArray(e)?e:(console.warn(`listWorkspaces: response.payload is not an array:`,e),[])}catch(e){throw console.error(`Failed to list workspaces:`,e),e}}async function Tt(e){try{return await R.post(O.workspaces,e)}catch(e){throw console.error(`Failed to create workspace:`,e),e}}var Et={resolving:`Resolving token on the remote server…`,exporting:`Remote server is packing the workspace…`,downloading:`Downloading archive…`,extracting:`Extracting…`,loading:`Validating and loading…`,done:`Done`};async function Dt(e){return R.get(`${O.workspaces}/import/jobs/${encodeURIComponent(e)}`)}async function Ot(e,t,{intervalMs:n=1500,signal:r}={}){for(;;){if(r?.aborted)throw Error(`Import tracking cancelled`);let i=await Dt(e);if(t?.(i),i.status===`done`){if(!i.result)throw Error(`Import finished without returning a workspace`);return i.result}if(i.status===`failed`)throw Error(i.error?.message||`Import failed`);await new Promise(e=>setTimeout(e,n))}}async function kt(e,t,n){return Ot((await R.post(`${O.workspaces}/import`,{url:e,token:t})).id,n)}async function At(){return R.get(`${O.workspaces}/remotes`)}async function jt(e,t,n){return R.post(`${O.workspaces}/remotes`,{url:e,token:t,...n?{label:n}:{}})}async function Mt(e){await R.delete(`${O.workspaces}/remotes/${encodeURIComponent(e)}`)}async function Nt(e,t={}){return R.post(`${O.workspaces}/${e}/export`,{stop:t.stop===!0})}async function Pt(e){return R.get(`${O.workspaces}/${e}/exports`)}async function Ft(e){await R.delete(`${O.workspaces}/exports/${encodeURIComponent(e)}`)}async function It(e){await R.post(`${O.workspaces}/exports/ticket`);let t=`${D}${O.workspaces}/exports/${encodeURIComponent(e)}`,n=document.createElement(`a`);n.href=t,n.download=e,document.body.appendChild(n),n.click(),n.remove()}async function Lt(e,t,n){return Ot((await Rt(e,t)).id,n)}function Rt(e,t){let n=localStorage.getItem(`authToken`),r=`${D}${O.workspaces}/import/upload?filename=${encodeURIComponent(e.name)}`;return new Promise((i,a)=>{let o=new XMLHttpRequest;o.open(`POST`,r,!0),o.withCredentials=!0,n&&o.setRequestHeader(`Authorization`,`Bearer ${n}`),o.setRequestHeader(`Content-Type`,`application/octet-stream`),o.upload.onprogress=e=>{e.lengthComputable&&t&&t(e.loaded/e.total)},o.onload=()=>{let e=null;try{e=JSON.parse(o.responseText)}catch{}let t=e?.payload?.job;o.status>=200&&o.status<300&&t?i(t):a(Error(e?.message||`Import failed (HTTP ${o.status})`))},o.onerror=()=>a(Error(`Upload failed — the connection dropped`)),o.onabort=()=>a(Error(`Upload cancelled`)),o.send(e)})}async function zt(e,t){try{if(!t){let n=await R.get(`${O.workspaces}/${e}/status`),r=n.protection?.mode||`none`;t=n.status!==`active`&&r!==`none`?await et(r):{}}let n=await R.post(`${O.workspaces}/${e}/start`,t);return window.dispatchEvent(new CustomEvent(`workspaces:refresh`)),n}catch(e){throw console.error(`Failed to start workspace:`,e),e}}async function Bt(e){try{let t=await R.post(`${O.workspaces}/${e}/stop`);return Wt(e),window.dispatchEvent(new CustomEvent(`workspace:stopped`,{detail:{refs:[e]}})),window.dispatchEvent(new CustomEvent(`workspaces:refresh`)),t}catch(e){throw console.error(`Failed to stop workspace:`,e),e}}async function Vt(e){try{return await R.delete(`${O.workspaces}/${e}`)}catch(e){throw console.error(`Failed to remove workspace:`,e),e}}async function Ht(e){try{return await R.get(`${O.workspaces}/${e}/trees`)||[]}catch(t){throw console.error(`Failed to list workspace trees ${e}:`,t),t}}async function Ut(e,t){try{return await R.get(`${O.workspaces}/${e}/trees/${encodeURIComponent(t)}`)}catch(n){throw console.error(`Failed to get workspace tree ${e}/${t}:`,n),n}}function Wt(e,t){if(!e){W.clear(),G.clear();return}if(!t){let t=`${e}\0`;for(let e of W.keys())e.startsWith(t)&&W.delete(e);for(let e of G.keys())e.startsWith(t)&&G.delete(e);return}let n=xt(e,t);W.delete(n),G.delete(n)}var Gt=`.trash`;function Kt(e){return e?Array.isArray(e.children)?{...e,children:e.children.filter(e=>e?.name!==Gt)}:e:null}async function qt(e,t,n={}){let r=xt(e,t);if(!n.force&&W.has(r))return W.get(r);if(!n.force&&G.has(r))return G.get(r);let i=Ut(e,t).then(e=>{let t=Kt(e);return G.get(r)===i&&W.set(r,t),t}).finally(()=>{G.get(r)===i&&G.delete(r)});return G.set(r,i),i}async function Jt(e,t=`/`,n=[],r={}){try{let i=new URLSearchParams,a=r.scope===`workspace`;a&&i.append(`scope`,`workspace`),r.applyCanvasSpec===!1&&i.append(`applyCanvasSpec`,`false`),i.append(`treeNameOrTreeId`,r.treeName||`context`),r.treeType&&i.append(`treeType`,r.treeType),t&&!a&&i.append(`context`,t),q(i,n),mt(i,r.anyOf),ht(i,r.noneOf),gt(i,r.filters),vt(i,r.rel),_t(i,r.ids),r.limit!==void 0&&i.append(`limit`,r.limit.toString()),r.offset!==void 0&&i.append(`offset`,r.offset.toString()),r.page!==void 0&&i.append(`page`,r.page.toString()),r.debug&&i.append(`debug`,`true`),r.debug&&r.debugLimit&&i.append(`debugLimit`,String(r.debugLimit)),r.sortBy&&i.append(`sortBy`,r.sortBy),r.order&&i.append(`order`,r.order),yt(i,r.queries,r.q);let o=i.toString(),s=`${O.workspaces}/${e}/documents${o?`?`+o:``}`;return await R.getEnvelope(s)}catch(t){throw console.error(`Failed to get workspace documents ${e}:`,t),t}}async function Yt(e,t,n=U,r={}){let i=n===`directory`?`directory`:`context`;return Jt(e,t,r.allOf||[],{treeName:n,treeType:i,limit:r.limit,page:r.page,offset:r.offset,q:r.q,queries:r.queries,anyOf:r.anyOf,noneOf:r.noneOf,filters:r.filters,ids:r.ids,sortBy:r.sortBy,order:r.order,applyCanvasSpec:r.applyCanvasSpec})}async function Xt(e,t,n,r={}){try{let i=new URLSearchParams;r.limit!==void 0&&i.append(`limit`,r.limit.toString()),r.offset!==void 0&&i.append(`offset`,r.offset.toString()),r.page!==void 0&&i.append(`page`,r.page.toString()),yt(i,r.queries,r.q),q(i,r.allOf),mt(i,r.anyOf),ht(i,r.noneOf),gt(i,r.filters),_t(i,r.ids),r.sortBy&&i.append(`sortBy`,r.sortBy),r.order&&i.append(`order`,r.order);let a=i.toString(),o=`${O.workspaces}/${e}/trees/${encodeURIComponent(t)}/layers/${encodeURIComponent(n)}/documents${a?`?`+a:``}`;return await R.getEnvelope(o)}catch(r){throw console.error(`Failed to get workspace layer documents ${e}/${t}/${n}:`,r),r}}async function Zt(e,t){try{return await R.patch(`${O.workspaces}/${e}`,t)}catch(e){throw console.error(`Failed to update workspace:`,e),e}}async function Qt(e,t,n=!0,r=U,i=`context`){try{return await R.put(J(e,r,t),{type:i,autoCreateLayers:n}),!0}catch(e){throw console.error(`Failed to insert workspace path ${t}:`,e),e}}async function $t(e,t,n=U,r={}){try{return await R.put(J(e,n,t),{type:`canvas`,...r}),!0}catch(e){throw console.error(`Failed to create workspace canvas ${t}:`,e),e}}async function en(e,t,n,r,i){let a={metadata:r};return i&&(a.querySpec=i),await R.patch(J(e,n,t),a),!0}async function tn(e,t,n=U){return await R.post(`${D}/pub/c`,{workspaceId:e,path:t,treeName:n})}async function nn(e,t,n=U){let r=new URLSearchParams({workspaceId:e,path:t,treeName:n});return await R.get(`${D}/pub/c?${r.toString()}`)}async function rn(e){return await R.delete(`${D}/pub/c/${encodeURIComponent(e)}`),!0}async function an(e){let t=await R.get(`${O.workspaces}/${e}/shares`);return{publicCanvasShares:t?.publicCanvasShares||[],emailShares:t?.emailShares||[]}}async function on(e,t){return await R.delete(`${O.workspaces}/${e}/shares/public-canvas/${encodeURIComponent(t)}`),!0}async function sn(e,t,n,r=U){try{return await R.patch(J(e,r,t),n),!0}catch(e){throw console.error(`Failed to update workspace path ${t}:`,e),e}}async function cn(e,t,n=!1,r=U,i=!1,a=!1){try{let o=new URLSearchParams({recursive:n.toString()});return i&&o.set(`purge`,`true`),a&&o.set(`destroy`,`true`),await R.delete(`${J(e,r,t)}?${o.toString()}`),!0}catch(e){throw console.error(`Failed to remove workspace path ${t}:`,e),e}}async function ln(e,t,n,r=!1,i=U,a,o={}){try{return await R.patch(J(e,i,t),{to:n,recursive:r,...o.mergeDown?{mergeDown:!0}:{},...a&&a!==i?{targetTreeNameOrTreeId:a}:{}}),!0}catch(e){throw console.error(`Failed to move workspace path from ${t} to ${n}:`,e),e}}async function un(e,t,n,r=!1,i=U,a){try{return await R.post(J(e,i,t),{to:n,recursive:r,...a&&a!==i?{targetTreeNameOrTreeId:a}:{}}),!0}catch(e){throw console.error(`Failed to copy workspace path from ${t} to ${n}:`,e),e}}async function dn(e,t,n,r=U,i=`context`){try{let a=X(Array.isArray(n)?n:[n]),o=performance.now();return await R.post(`${O.workspaces}/${e}/documents`,{documentIds:a,treeNameOrTreeId:r,treeType:i,context:t}),console.info(`[paste] linked ${a.length} document(s) → ${r}:${t} in ${Math.round(performance.now()-o)} ms`),!0}catch(e){throw console.error(`Failed to paste documents to workspace path ${t}:`,e),e}}async function fn(e,t,n,r=U,i=`context`){try{let a=Array.isArray(n)?n:[n],o=await R.post(`${O.workspaces}/${e}/documents`,{documents:a,treeNameOrTreeId:r,treeType:i,context:t});return Array.isArray(o)?o:[]}catch(e){throw console.error(`Failed to import documents to workspace path ${t}:`,e),e}}var Y=e=>`${O.workspaces}/${e}/pins`,pn=(e,t)=>`${e}\0${t}`;async function mn(e){let t=await R.get(Y(e));return Array.isArray(t)?t:[]}async function hn(e,t,n=U){return R.post(Y(e),{path:t,tree:n})}async function gn(e,t){await R.delete(`${Y(e)}/${encodeURIComponent(t)}`)}async function _n(e,t){let n=await R.patch(`${Y(e)}/order`,{order:t});return Array.isArray(n)?n:[]}async function vn(e,t=U){return await R.get(`${O.workspaces}/${e}/trees/${encodeURIComponent(t)}/layers`)||[]}async function yn(e,t,n,r=U){return await R.patch(`${O.workspaces}/${e}/trees/${encodeURIComponent(r)}/layers/${t}`,{name:n})}async function bn(e,t,n,r=U){return await R.post(`${O.workspaces}/${e}/trees/${encodeURIComponent(r)}/layers/${t}/lock`,{lockBy:n}),!0}async function xn(e,t,n,r=U){return await R.post(`${O.workspaces}/${e}/trees/${encodeURIComponent(r)}/layers/${t}/unlock`,{lockBy:n}),!0}async function Sn(e,t,n=U){return await R.delete(`${O.workspaces}/${e}/trees/${encodeURIComponent(n)}/layers/${t}`),!0}async function Cn(e,t,n,r=U){return await R.post(`${O.workspaces}/${e}/trees/${encodeURIComponent(r)}/layers/merge`,{layerId:t,targetLayers:n})}async function wn(e,t,n=U){return(await R.post(`${O.workspaces}/${e}/trees/${encodeURIComponent(n)}/paths/merge-down`,{path:t}))?.data??null}async function Tn(e,t,n=U){return(await R.post(`${O.workspaces}/${e}/trees/${encodeURIComponent(n)}/paths/subtract-down`,{path:t}))?.data??null}async function En(e,t,n,r=U){return await R.post(`${O.workspaces}/${e}/trees/${encodeURIComponent(r)}/layers/subtract`,{layerId:t,targetLayers:n})}function X(e){let t=e.map(e=>typeof e==`number`?e:Number(e));if(t.some(e=>!Number.isFinite(e)))throw Error(`Invalid document ID(s): expected numbers (or numeric strings), got ${JSON.stringify(e)}`);return t}async function Dn(e,t,n=`/`,r=[],i=U,a=`context`,o={}){let s=new URLSearchParams;pt(s,n,i,a),q(s,r),o.trashIfOrphaned&&s.append(`trashIfOrphaned`,`true`);let c=X(t);return await R.delete(`${O.workspaces}/${e}/documents/remove?${s.toString()}`,{headers:{"Content-Type":`application/json`},body:JSON.stringify(c)}),!0}async function On(e,t,n=`/`,r=[],i=U,a=`context`){let o=new URLSearchParams;pt(o,n,i,a),q(o,r);let s=X(t);return await R.delete(`${O.workspaces}/${e}/documents?${o.toString()}`,{headers:{"Content-Type":`application/json`},body:JSON.stringify(s)}),!0}async function kn(e,t){at(t.id);try{await R.put(`${O.workspaces}/${e}/documents`,{documents:[t]})}finally{ot(t.id)}return!0}async function An(e,t,n={}){let r={documentIds:X(t)};return n.urls&&(r.urls=n.urls),n.keepDocument&&(r.keepDocument=!0),await R.delete(`${O.workspaces}/${e}/documents/destroy`,{headers:{"Content-Type":`application/json`},body:JSON.stringify(r)})}async function jn(e,t,n){let r=n.folder?.trim().replace(/^\/+|\/+$/g,``),i=n.filename?.trim();return await R.post(`${O.workspaces}/${e}/documents/transfer`,{documentIds:X(t),to:n.to,mode:n.mode??`copy`,...n.keepDocument?{keepDocument:!0}:{},...r?{folder:r}:{},...i?{filename:i}:{},...n.onConflict?{onConflict:n.onConflict}:{}})}function Mn(e){return typeof e.capabilities?.paths==`boolean`?e.capabilities.paths:e.kind===`storage`&&e.driver!==`cacache`}async function Nn(e,t){return await R.get(`${O.workspaces}/${e}/documents/${t}`)}async function Pn(e,t){return await R.get(`${O.workspaces}/${e}/documents/${t}/locations`)||[]}async function Fn(e,t,n){let r=n?`?tree=${encodeURIComponent(n)}`:``;return(await R.get(`${O.workspaces}/${e}/documents/${t}/memberships${r}`))?.memberships||[]}async function In(e,t,n=500){return(await Jt(e,`/`,[t?`${ut}/${t}`:ut],{scope:`workspace`,limit:n})).payload||[]}async function Ln(e){try{let t=await R.get(`${O.workspaces}/${e}/documents/relations/predicates`);return t?.predicates?.length?t.predicates:[...K]}catch{return[...K]}}async function Rn(e,t,n={}){let r=new URLSearchParams;n.resolve===!1&&r.set(`resolve`,`false`),n.offset!==void 0&&r.set(`offset`,String(n.offset)),n.limit!==void 0&&r.set(`limit`,String(n.limit)),n.summary&&r.set(`summary`,`true`);let i=r.size?`?${r}`:``;return await R.get(`${O.workspaces}/${e}/documents/${t}/relations${i}`)??{documentId:Number(t),predicates:[...K],outgoing:[],incoming:[]}}async function zn(e,t,n,r,i=`out`){return await R.post(`${O.workspaces}/${e}/documents/${t}/relations`,{p:n,to:Array.isArray(r)?X(r):r,dir:i}),!0}async function Bn(e,t,n,r,i=`out`){return await R.delete(`${O.workspaces}/${e}/documents/${t}/relations`,{headers:{"Content-Type":`application/json`},body:JSON.stringify({p:n,to:r,dir:i})}),!0}function Vn(e,t,n={}){let r=new URLSearchParams;n.version&&r.set(`v`,n.version),n.download&&r.set(`download`,`1`),n.url&&r.set(`url`,n.url);let i=r.toString();return`${O.workspaces}/${e}/documents/${t}/content${i?`?${i}`:``}`}async function Hn(e,t,n=256,r){let i=localStorage.getItem(`authToken`),a=r?`&v=${encodeURIComponent(r)}`:``,o=await fetch(`${O.workspaces}/${e}/documents/${t}/thumbnail?size=${n}${a}`,{headers:i?{Authorization:`Bearer ${i}`}:{}});if(!o.ok)throw Error(`HTTP ${o.status}`);let s=o.headers.get(`content-type`)||`image/webp`;return{blob:await o.blob(),mime:s}}async function Un(e,t,n={}){let r=localStorage.getItem(`authToken`),i=await fetch(Vn(e,t,n),{headers:r?{Authorization:`Bearer ${r}`}:{}});if(!i.ok)throw Error(`HTTP ${i.status}`);let a=i.headers.get(`content-type`)||`application/octet-stream`;return{blob:await i.blob(),mime:a}}function Wn(e,t,n={}){return Vn(e,t,n)}async function Gn(e,t){let n=localStorage.getItem(`authToken`);return(await fetch(`${O.workspaces}/${e}/documents/${t}/content-ticket`,{method:`POST`,headers:n?{Authorization:`Bearer ${n}`}:{},credentials:`include`})).ok}async function Kn(e,t,n,r={}){let i=localStorage.getItem(`authToken`),a=await fetch(Vn(e,t,{download:!0,url:r.url}),{headers:i?{Authorization:`Bearer ${i}`}:{}});if(!a.ok)throw Error(`HTTP ${a.status}`);let o=await a.blob(),s=URL.createObjectURL(o),c=document.createElement(`a`);c.href=s,c.download=n,document.body.appendChild(c),c.click(),c.remove(),setTimeout(()=>URL.revokeObjectURL(s),3e4)}async function qn(e,t=`/`,n=[],r=[],i={},a=U){let o=new URLSearchParams;return o.append(`treeNameOrTreeId`,a),t&&o.append(`context`,t),q(o,n),gt(o,r),await R.delete(`${O.workspaces}/${e}/documents/purge?${o.toString()}`)}async function Jn(e){try{return await R.get(`${O.workspaces}/${e}/services`)}catch(e){throw console.error(`Failed to get workspace services status:`,e),e}}async function Yn(e,t){try{return await R.post(`${O.workspaces}/${e}/services/${t}/enable`)}catch(e){throw console.error(`Failed to enable ${t} service:`,e),e}}async function Xn(e,t){try{return await R.post(`${O.workspaces}/${e}/services/${t}/disable`)}catch(e){throw console.error(`Failed to disable ${t} service:`,e),e}}var Z=e=>`${O.workspaces}/${e}/backends`,Q=(e,t,n)=>`${Z(e)}/${encodeURIComponent(t)}/${encodeURIComponent(n)}`;async function Zn(e,t){let n=t?`${Z(e)}/${encodeURIComponent(t)}`:Z(e);return await R.get(n)||[]}async function Qn(e,t,n){return await R.get(`${Q(e,t,n)}/usage`)}async function $n(e){return await R.delete(`${O.workspaces}/${e}/thumbnails`)}async function er(e){return await R.get(`${O.workspaces}/${e}/usage`)}function tr(e){if(e==null||!Number.isFinite(e))return`—`;if(e<1024)return`${e} B`;let t=[`KB`,`MB`,`GB`,`TB`],n=e,r=`B`;for(let e of t){if(n<1024)break;n/=1024,r=e}return`${n.toFixed(n>=100?0:1)} ${r}`}async function nr(e,t,n){return await R.post(`${Z(e)}/${encodeURIComponent(t)}`,n)}async function rr(e,t,n,r){return await R.patch(Q(e,t,n),r)}async function ir(e,t,n){return await R.delete(Q(e,t,n))}async function ar(e,t,n){return await R.post(`${Q(e,t,n)}/sync`)}async function or(e,t,n){return await R.post(`${Q(e,t,n)}/sync/cancel`)}async function sr(e,t,n){return await R.post(`${Q(e,t,n)}/test`)}async function cr(e,t,n){return await R.get(`${Q(e,t,n)}/containers`)||[]}async function lr(e,t,n,r,i){return await R.post(`${Q(e,t,n)}/containers/${encodeURIComponent(r)}/documents`,i)}async function ur(e,t,n,r){return await R.post(`${Q(e,t,n)}/containers/${encodeURIComponent(r)}/sync`)}async function dr(e,t,n){return await R.get(`${Q(e,t,n)}/containers?available=1`)||[]}async function fr(e,t,n,r){return await R.post(`${Q(e,t,n)}/containers`,{folders:r})}async function pr(e,t,n,r){return await R.delete(`${Q(e,t,n)}/containers/${encodeURIComponent(r)}`)}async function mr(e,t,n,r,i){return await R.patch(`${Q(e,t,n)}/containers/${encodeURIComponent(r)}`,{name:i})}function hr(e,t){if(!t?.length)return null;let n=`/`+String(e||``).split(`/`).filter(Boolean).join(`/`);for(let e of t)if(e.treePath){if(n===e.treePath)return{backend:e,key:``};if(n.startsWith(e.treePath+`/`))return{backend:e,key:n.slice(e.treePath.length+1)}}return null}function gr(e,t){let n=hr(e,t);if(n)return{driver:n.backend.driver,address:n.backend.address,key:n.key};let r=_r(e);return r?{...r,driver:t?.find(e=>e.address===r.address)?.driver||r.driver}:null}function _r(e,t){let n=hr(e,t);if(n)return n.backend.driver===`file`?{driver:`file`,address:n.backend.address,key:n.key}:null;let r=String(e||``).split(`/`).filter(Boolean);return r[0]===`workspace`&&r.length>=2?{driver:`file`,address:`workspace:${r[1]}`,key:r.slice(2).join(`/`)}:r[0]===`device`&&r.length>=3?{driver:`file`,address:r[2],key:r.slice(3).join(`/`)}:r[0]===`file`&&r.length>=2?{driver:`file`,address:r[1],key:r.slice(2).join(`/`)}:null}async function vr(e,t,n,r={}){let i=new URLSearchParams;r.linked!==void 0&&i.append(`linked`,String(r.linked)),r.limit!==void 0&&i.append(`limit`,String(r.limit)),r.offset!==void 0&&i.append(`offset`,String(r.offset));let a=i.toString();return await R.getEnvelope(`${Q(e,t,n)}/documents${a?`?${a}`:``}`)}async function yr(e,t,n){return await R.post(`${Z(e)}/${encodeURIComponent(t)}/discover`,n)||[]}function br(e,t){let n=hr(e,t);if(n)return{driver:n.backend.driver,address:n.backend.address};let r=String(e||``).split(`/`).filter(Boolean);return r.length<2?null:r[0]===`workspace`?{driver:`file`,address:`workspace:${r[1]}`}:r[0]===`device`?r.length>=3?{driver:`file`,address:r[2]}:null:{driver:r[0],address:r[1]}}var xr=[`internal/`,`context/`,`vfs/`];async function Sr(e){try{return(await R.get(`${O.workspaces}/${encodeURIComponent(e)}/bitmaps`)||[]).map(e=>typeof e==`string`?e:e.key??String(e)).filter(e=>e&&!xr.some(t=>e.startsWith(t)))}catch{return[]}}async function Cr(e){return(await Sr(e)).filter(e=>e.startsWith(`tag/`)).map(e=>e.slice(4)).filter(Boolean).sort()}async function wr(e,t){let n=t.replace(/^\/+|\/+$/g,``);if(!n)throw Error(`Bitmap key is required`);if(n.startsWith(`data/`)||n===`data`)throw Error(`data/* bitmaps are protected and cannot be deleted manually`);return await R.delete(`${O.workspaces}/${encodeURIComponent(e)}/bitmaps/${n.split(`/`).map(encodeURIComponent).join(`/`)}`),!0}async function Tr(e,t,n=!0){let r=t.replace(/^data\/dataset\//,``).replace(/^\/+|\/+$/g,``);if(!r)throw Error(`Dataset name is required`);if(r==="default")throw Error(`The "default" dataset is virtual and cannot be deleted`);return await R.delete(`${O.workspaces}/${encodeURIComponent(e)}/datasets/${r.split(`/`).map(encodeURIComponent).join(`/`)}?dropDocuments=${n}`)}function $(e){return`${O.workspaces}/${encodeURIComponent(e)}/timelines`}async function Er(e){try{return await R.get($(e))||[]}catch{return[]}}async function Dr(e){try{return await R.get(`${$(e)}?verbose=true`)||[]}catch{return[]}}async function Or(e,t){return await R.post($(e),{name:t})}async function kr(e,t){return await R.delete(`${$(e)}/${encodeURIComponent(t)}`),!0}async function Ar(e,t){return(await R.post(`${$(e)}/histogram`,t))?.buckets??[]}async function jr(e,t){let n=t?`?workspaceId=${encodeURIComponent(t)}`:``;return await R.post(`${O.admin.inferd}/${e?`pause`:`resume`}${n}`)}async function Mr(e){return await R.get(`${O.workspaces}/${e}/db/stats`)}async function Nr(e,t){return await R.put(`${O.workspaces}/${e}/db/tuning`,t)}async function Pr(e){let t=await R.get(`${O.workspaces}/${e}/trash`);return Array.isArray(t)?t:[]}async function Fr(e,t){return await R.post(`${O.workspaces}/${e}/trash/restore`,{documentIds:X(t)})}async function Ir(e,t){return await R.delete(`${O.workspaces}/${e}/trash`,t?.length?{headers:{"Content-Type":`application/json`},body:JSON.stringify({documentIds:X(t)})}:{})}var Lr=(e,t,n)=>`${O.workspaces}/${e}/members/${encodeURIComponent(`${t}:${n}`)}`;async function Rr(e){return R.get(`${O.workspaces}/${e}/members`)}async function zr(e,t,n,r){return R.post(`${O.workspaces}/${e}/members`,{...t,permissions:n,...r?{description:r}:{}})}async function Br(e,t,n,r){return R.put(Lr(e,t,n),{permissions:r})}async function Vr(e,t,n){await R.delete(Lr(e,t,n))}async function Hr(e,t,n){return R.post(`${O.workspaces}/${encodeURIComponent(e)}/documents/copy-to-workspace`,{documentId:t,...n})}export{Nn as $,Bt as $t,yr as A,Ie as An,Cn as At,ft as B,Dn as Bt,Tr as C,V as Cn,Cr as Ct,An as D,Fe as Dn,wt as Dt,kr as E,Re as En,Ht as Et,Yn as F,ee as Fn,ir as Ft,Pn as G,Gn as Gt,Qn as H,mr as Ht,Nt as I,b as In,pr as It,nn as J,on as Jt,Fn as K,Fr as Kt,Un as L,Bn as Lt,Kn as M,O as Mn,dn as Mt,It as N,D as Nn,hn as Nt,Sn as O,ze as On,bn as Ot,Ir as P,Oe as Pn,qn as Pt,er as Q,zt as Qt,Hn as R,Mt as Rt,wr as S,B as Sn,an as St,Ft as T,R as Tn,Dr as Tt,qt as U,yn as Ut,tr as V,cn as Vt,Yt as W,_n as Wt,Ct as X,jr as Xt,Ln as Y,en as Yt,Mr as Z,Nr as Zt,tn as _,Qe as _n,Pt as _t,fr as a,jn as an,fn as at,Or as b,Ze as bn,Rr as bt,_r as c,gn as cn,Qt as ct,or as d,kn as dn,vr as dt,Tn as en,Jt as et,$n as f,Br as fn,dr as ft,zn as g,Ke as gn,Sr as gt,lr as h,lt as hn,Pr as ht,nr as i,sr as in,zr as it,Wn as j,Ae as jn,ln as jt,Xn as k,A as kn,wn as kt,Mn as l,rr as ln,Wt as lt,un as m,pn as mn,At as mt,Et as n,ar as nn,Jn as nt,jt as o,dt as on,Lt as ot,Hr as p,sn as pn,Zn as pt,Rn as q,Vr as qt,K as r,ur as rn,Ut as rt,br as s,xn as sn,kt as st,U as t,En as tn,Xt as tt,gr as u,Zt as un,cr as ut,Tt as v,$e as vn,In as vt,On as w,qe as wn,Er as wt,rn as x,Xe as xn,mn as xt,$t as y,z as yn,vn as yt,Ar as z,Vt as zt};