@augmentd-labs/canvas-web 2.26.18 → 2.26.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (155) hide show
  1. package/dist/assets/DocumentBodyEditor-CE2S2X6g.js +1 -0
  2. package/dist/assets/DocumentIcon-BS10SIP6.js +1 -0
  3. package/dist/assets/EditorOverlay-BUToR_av.js +1 -0
  4. package/dist/assets/FileForm-BxTixeDm.js +1 -0
  5. package/dist/assets/FiltersApplet-BpqITV13.js +1 -0
  6. package/dist/assets/HomeFab-BAKOAkpE.js +3 -0
  7. package/dist/assets/IdentityFields-C2MPM-Ab.js +1 -0
  8. package/dist/assets/LensApplet-DNTGwgZs.js +1 -0
  9. package/dist/assets/LinkToCard-BZwwE-Dv.js +1 -0
  10. package/dist/assets/LinkToSidePanel-eCy3nW4R.js +1 -0
  11. package/dist/assets/{LocationTab-BONJQfYM.js → LocationTab-DAtqAQ3l.js} +1 -1
  12. package/dist/assets/{MarkdownEditor-CkobBLtI.js → MarkdownEditor-7OqSDr7E.js} +1 -1
  13. package/dist/assets/MessageComposerDialog-DzLhkHyh.js +4 -0
  14. package/dist/assets/{NextShell-Byg6OtC2.js → NextShell-D9gvlKY2.js} +1 -1
  15. package/dist/assets/NotesApplet-gMAMneRi.js +1 -0
  16. package/dist/assets/ObjectPropertiesCard-C3jt40tM.css +1 -0
  17. package/dist/assets/ObjectPropertiesCard-DDcRLpsW.js +8 -0
  18. package/dist/assets/PathPickerField-cVs5sZuG.js +1 -0
  19. package/dist/assets/PickDocumentsCard-BlicxMqC.js +1 -0
  20. package/dist/assets/SketchApplet-D8mkYmK9.js +1 -0
  21. package/dist/assets/{SketchEditor-C9_lu3Ot.js → SketchEditor-zMrm1npg.js} +4 -4
  22. package/dist/assets/TerminalApplet-BO2HRp0z.js +20 -0
  23. package/dist/assets/TerminalApplet-BrP-ENHg.css +1 -0
  24. package/dist/assets/TextDocumentEditor-7V4aFL8i.js +1 -0
  25. package/dist/assets/TodosApplet-swdaBT-2.js +1 -0
  26. package/dist/assets/TodosWidget-BXF8fYer.js +1 -0
  27. package/dist/assets/UploadProgressList-B2xCVzFR.js +1 -0
  28. package/dist/assets/_agentId_-Ci4j4UYy.js +0 -0
  29. package/dist/assets/_contextId_-DDFyhgV2.js +1 -0
  30. package/dist/assets/_workspaceName_-DO9ZBx7N.js +1 -0
  31. package/dist/assets/about-B1_n4Iu8.js +1 -0
  32. package/dist/assets/add-BnwWcDlO.js +1 -0
  33. package/dist/assets/admin-Bhg9QBHL.js +5 -0
  34. package/dist/assets/agents-ClK3Y2x0.js +1 -0
  35. package/dist/assets/agents-DquOfkFX.js +1 -0
  36. package/dist/assets/alert-dialog-DIA-tAP5.js +1 -0
  37. package/dist/assets/api-CA6WiiYM.js +1 -0
  38. package/dist/assets/api-tokens-O5iFESo0.js +1 -0
  39. package/dist/assets/appearance-C2vu3ALt.js +1 -0
  40. package/dist/assets/applet-target-DnTa2VAT.js +1 -0
  41. package/dist/assets/apps-BZrw8Cqo.js +1 -0
  42. package/dist/assets/auth-Bx9fAZmz.js +1 -0
  43. package/dist/assets/auth-CUdpxbLV.js +1 -0
  44. package/dist/assets/backend-sync-progress-DU-e9TWi.css +1 -0
  45. package/dist/assets/backend-sync-progress-DWR42uQV.js +7 -0
  46. package/dist/assets/blobs-WiXP9QRi.js +1 -0
  47. package/dist/assets/button-Bv4zA1qr.js +1 -0
  48. package/dist/assets/chunk-62JRHF6Z-vspAGgtK.js +3 -0
  49. package/dist/assets/{chunk-K2UTITRG-zQFDOW3Q.js → chunk-K2UTITRG-BvHe9UPk.js} +3 -3
  50. package/dist/assets/code-editor-BOIngd5F.js +40 -0
  51. package/dist/assets/color-DFEH4BfK.js +1 -0
  52. package/dist/assets/content-app-view-C33Ip_rx.js +1 -0
  53. package/dist/assets/context-D_K4g9SQ.js +1 -0
  54. package/dist/assets/contexts-B6d6Axza.js +1 -0
  55. package/dist/assets/contexts-CgydYDn-2.js +1 -0
  56. package/dist/assets/date-time-picker-BZaA3M9_.js +1 -0
  57. package/dist/assets/desk-dI_FvLsK.js +1 -0
  58. package/dist/assets/devices-CAa1bRxk.js +1 -0
  59. package/dist/assets/devices-D3-_UWM0.js +1 -0
  60. package/dist/assets/document-BG_mODBn.js +1 -0
  61. package/dist/assets/document-list-BiogH4tf.js +2 -0
  62. package/dist/assets/document-list-DAYdk5vh.css +1 -0
  63. package/dist/assets/document-open-mode-DoImW-xs.js +1 -0
  64. package/dist/assets/embedding-Cjrxh6MN.js +1 -0
  65. package/dist/assets/embedding-m8SZH4oN.js +1 -0
  66. package/dist/assets/form-panel-Dz96K7Lv.js +1 -0
  67. package/dist/assets/geo-CZfs0E-x.js +1 -0
  68. package/dist/assets/home-pS7q4Wl4.js +1 -0
  69. package/dist/assets/image-GAAHSSAO-CI-0hUck.js +1 -0
  70. package/dist/assets/index-C10UNpew.css +2 -0
  71. package/dist/assets/index-exXolIqD.js +16 -0
  72. package/dist/assets/inferd-config-editor-DagMmwW4.js +1 -0
  73. package/dist/assets/input-BOtCd4HP.js +1 -0
  74. package/dist/assets/key-bindings-BOtykyXR.js +1 -0
  75. package/dist/assets/label-CNoJOoe0.js +1 -0
  76. package/dist/assets/last-path-BbXWC3b3.js +1 -0
  77. package/dist/assets/layer-style-Byl5LNFR.js +1 -0
  78. package/dist/assets/lazy-editor-Cbva8Pe2.js +2 -0
  79. package/dist/assets/logs-CdbfY8_H.js +1 -0
  80. package/dist/assets/{markdown-html-XoABNf32.js → markdown-html-CZMGihx6.js} +1 -1
  81. package/dist/assets/markdown-view-BBBZtNSR.js +2 -0
  82. package/dist/assets/note-save-status-DPz4VzL6.js +1 -0
  83. package/dist/assets/offline-BjMpUv3N.js +1 -0
  84. package/dist/assets/page-header-GtTr9Ff_.js +1 -0
  85. package/dist/assets/public-share-DT9Tgn_Y.js +1 -0
  86. package/dist/assets/query-debug-tVbB_8Z6.js +1 -0
  87. package/dist/assets/react-BHzhHVTZ.js +164 -0
  88. package/dist/assets/registry-6tE_1KPV.js +2 -0
  89. package/dist/assets/relation-events-CKio19hE.js +1 -0
  90. package/dist/assets/remotes-DR_iJClb.js +1 -0
  91. package/dist/assets/role-C5I0Plgn.js +1 -0
  92. package/dist/assets/roles-DERIgujv.js +2 -0
  93. package/dist/assets/roles-DswT1Lv0.js +2 -0
  94. package/dist/assets/settings-Cc6OMCOX.js +14 -0
  95. package/dist/assets/settings-D7K7z_JD.js +1 -0
  96. package/dist/assets/settings-Du8r1SXC.js +1 -0
  97. package/dist/assets/settings-vosK_LI-.js +1 -0
  98. package/dist/assets/share-target-Df10J5JB.js +1 -0
  99. package/dist/assets/shared-1dpCuibu.js +1 -0
  100. package/dist/assets/shared-C7b3QOUP.js +1 -0
  101. package/dist/assets/sketch-lazy-Q58-vPF-.js +2 -0
  102. package/dist/assets/socket-CtH3EU9m.js +1 -0
  103. package/dist/assets/subtree-transfer-dialog-B7s4r78T.js +1 -0
  104. package/dist/assets/tags-YamdPoBK.js +1 -0
  105. package/dist/assets/text-documents-D_zDMyhB.js +2 -0
  106. package/dist/assets/{ui-BqHBdBU4.js → ui-BSqPn1LJ.js} +2 -2
  107. package/dist/assets/url-params-n7kU_WZ-.js +1 -0
  108. package/dist/assets/use-applet-docs-Cry2SFsG.js +1 -0
  109. package/dist/assets/use-applet-target-mkjQujx6.js +1 -0
  110. package/dist/assets/use-canvas-pins-C57Vbkrq.css +1 -0
  111. package/dist/assets/use-canvas-pins-CZBfEB5E.js +3 -0
  112. package/dist/assets/use-create-panel-DhSNIGtr.js +1 -0
  113. package/dist/assets/use-document-modal-PG8bQyIB.js +1 -0
  114. package/dist/assets/use-menu-BVkqNEIx.js +1 -0
  115. package/dist/assets/use-mobile-Db-vWu9Y.js +1 -0
  116. package/dist/assets/use-settings-back-Dk-DJEUO.js +1 -0
  117. package/dist/assets/use-sortable-data-DYIDDI8c.js +1 -0
  118. package/dist/assets/{use-theme-Bd8sb5Ox.js → use-theme-DaxpiICf.js} +1 -1
  119. package/dist/assets/use-toast-BlLDqSUO.js +1 -0
  120. package/dist/assets/use-toolbox-Ck_cLGgf.js +1 -0
  121. package/dist/assets/use-workspace-identity-BVpGHkZq.js +1 -0
  122. package/dist/assets/useAddTarget-CVRPElxz.js +1 -0
  123. package/dist/assets/useAgentModels-DI41aFY3.js +3 -0
  124. package/dist/assets/useDocumentThumbnail-C_rq2rXs.js +1 -0
  125. package/dist/assets/useEditNoteFields-Bigs9ZG8.js +1 -0
  126. package/dist/assets/useEscapeClose-DR_xKT_k.js +1 -0
  127. package/dist/assets/useSocketSubscription-ifW-vnlb.js +1 -0
  128. package/dist/assets/useToastHelpers-CRrpIIdY.js +1 -0
  129. package/dist/assets/users-C9N-O1QA.js +1 -0
  130. package/dist/assets/workspace-BydSRtST.js +1 -0
  131. package/dist/assets/workspace-CJ1PWQ29.js +1 -0
  132. package/dist/assets/workspace-access-C9nZlBBZ.js +1 -0
  133. package/dist/assets/workspace-area-menu-Ba_9bGKs.js +1 -0
  134. package/dist/assets/workspace-content-gate-D8bzGD9i.js +1 -0
  135. package/dist/assets/workspace-import-form-D5JA8gzx.js +1 -0
  136. package/dist/assets/workspaces-C9Wtka2V.js +1 -0
  137. package/dist/assets/workspaces-Dx5_N57M.js +1 -0
  138. package/dist/index.html +69 -14
  139. package/dist/sw.js +1 -1
  140. package/package.json +2 -2
  141. package/dist/assets/EditorOverlay-B384ALjA.js +0 -1
  142. package/dist/assets/TextDocumentEditor-DBVWuJaR.js +0 -1
  143. package/dist/assets/alert-dialog-BC58hyW-.js +0 -1
  144. package/dist/assets/blobs-CtDkR2hC.js +0 -1
  145. package/dist/assets/code-editor-BQnKd3jw.js +0 -40
  146. package/dist/assets/document-list-BmUv3zzK.js +0 -19
  147. package/dist/assets/document-list-r-TfV16D.css +0 -1
  148. package/dist/assets/image-GAAHSSAO-BoD-NvEF.js +0 -1
  149. package/dist/assets/index-BhcdilCi.css +0 -2
  150. package/dist/assets/index-CiNkwkdB.js +0 -61
  151. package/dist/assets/react-BzqgEMSQ.js +0 -164
  152. package/dist/assets/subtree-transfer-dialog-DRz8kLqY.js +0 -1
  153. package/dist/assets/text-documents-BvR9-zf4.js +0 -3
  154. package/dist/assets/useAddTarget-CgZfKokT.js +0 -1
  155. package/dist/assets/workspace-BSXnX2Me.js +0 -1
@@ -1 +0,0 @@
1
- import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{l as t,u as n}from"./code-editor-BQnKd3jw.js";import{vt as r}from"./react-BzqgEMSQ.js";import{Ot as i}from"./ui-BqHBdBU4.js";import{_ as a,a as o,b as s,c,i as l,s as u,t as d,u as f,x as p}from"./alert-dialog-BC58hyW-.js";var m=e(n(),1),h=r(),g=(e,t)=>`${a.workspaces}/${encodeURIComponent(e)}/trees/${encodeURIComponent(t)}/subtree`;function _(e,t,n,r){return f.post(`${g(e,t)}/export`,{path:n,dependencies:r})}function v(e,t,n,r,i){return f.post(`${g(e,t)}/import`,{parentPath:n,name:r,archive:i})}async function y(e,t,n,r){for(;;){let i=await f.get(`${g(e,t)}/jobs/${encodeURIComponent(n)}`,{cache:`no-store`});if(r(i),i.status===`failed`)throw Error(i.error?.message||`Subtree transfer failed`);if(i.status===`done`)return i;await new Promise(e=>setTimeout(e,750))}}var b=t();function x(e){let t=document.createElement(`div`);document.body.appendChild(t);let n=(0,h.createRoot)(t),r=()=>{n.unmount(),t.remove()};n.render((0,b.jsx)(S,{...e,onClose:r}))}function S({mode:e,workspaceId:t,treeName:n,path:r,onImported:a,onClose:f}){let[h,g]=(0,m.useState)(`related`),[x,S]=(0,m.useState)(null),[C,w]=(0,m.useState)(``),[T,E]=(0,m.useState)(!1),[D,O]=(0,m.useState)(``),[k,A]=(0,m.useState)(null),j=k?.status===`done`&&e===`import`?k.result:null,M=async e=>{if(e){E(!0),O(``),S(null),A(null);try{if(e.size>125829120)throw Error(`This export exceeds the 120 MB upload limit.`);let t=JSON.parse(await e.text());if(t.format!==`canvas-subtree`||t.version!==1||!Array.isArray(t.nodes)||!t.nodes[0]||!Array.isArray(t.documents))throw Error(`Choose a Canvas subtree export file.`);S(t),w(t.nodes[0].name===`/`?t.source.tree.name:t.nodes[0].name)}catch(e){O(e instanceof Error?e.message:`Could not read export`)}finally{E(!1)}}},N=async()=>{E(!0),O(``);try{let i=k?.status===`running`?k:e===`export`?await _(t,n,r,h):await v(t,n,r,C,x);A(i);let o=await y(t,n,i.id,A);e===`export`?S(o.result):a()}catch(t){O(t instanceof Error?t.message:`Subtree transfer failed`),e===`import`&&a()}finally{E(!1)}},P=()=>{if(!x)return;let e=URL.createObjectURL(new Blob([JSON.stringify(x)],{type:`application/json`})),t=document.createElement(`a`);t.href=e,t.download=`${(x.nodes[0].name===`/`?x.source.tree.name:x.nodes[0].name).replace(/[^\p{L}\p{N}._-]/gu,`_`)}.canvas-subtree.json`,t.click(),setTimeout(()=>URL.revokeObjectURL(e),1e3)},F=(0,m.useMemo)(()=>x?new Set(x.nodes.flatMap(e=>e.documentIds)).size:0,[x]);return(0,b.jsx)(d,{open:!0,onOpenChange:e=>{!e&&!T&&f()},children:(0,b.jsxs)(l,{children:[(0,b.jsxs)(u,{children:[(0,b.jsx)(c,{children:e===`export`?`Export subtree`:`Import subtree`}),(0,b.jsxs)(o,{children:[e===`export`?`${n}:${r}`:`Destination: ${n}:${r}`,`. Includes document records, folder structure, and relationships. Physical files are copied separately.`]})]}),e===`export`&&!x&&(0,b.jsxs)(`label`,{className:`grid gap-2 text-sm`,children:[`Include`,(0,b.jsxs)(`select`,{disabled:T||k?.status===`running`,value:h,onChange:e=>g(e.target.value),className:`rounded-md border bg-background p-2`,children:[(0,b.jsx)(`option`,{value:`related`,children:`Subtree + attachments and contacts`}),(0,b.jsx)(`option`,{value:`none`,children:`Subtree only`})]}),(0,b.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`Supporting records keep their relationships. Their other folders, unrelated messages, and reply chains are excluded.`})]}),e===`import`&&!j&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(s,{type:`file`,accept:`.json,application/json`,disabled:T||k?.status===`running`,"aria-label":`Subtree export file`,onChange:e=>void M(e.target.files?.[0])}),x&&(0,b.jsxs)(`label`,{className:`grid gap-2 text-sm`,children:[`Folder name`,(0,b.jsx)(s,{value:C,disabled:T||k?.status===`running`,onChange:e=>w(e.target.value)})]}),x?.source.tree.type===`context`&&(0,b.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Existing context layers are reused by name. Documents are added to their shared membership; existing documents, layer settings, and saved views are kept.`})]}),x&&(0,b.jsxs)(`p`,{className:`text-sm`,children:[x.nodes.length,` folders, `,F,` subtree documents, and `,x.documents.length-F,` supporting records.`,x.summary?.externalRelations>0&&` ${x.summary.externalRelations} references point outside this export.`]}),!!x?.skippedDocuments?.length&&(0,b.jsxs)(`div`,{role:`status`,className:`space-y-2 rounded-md border p-3 text-sm`,children:[(0,b.jsxs)(`p`,{children:[x.skippedDocuments.length,` missing document`,x.skippedDocuments.length===1?` was`:`s were`,` skipped during export. Available records and folders are included.`]}),(0,b.jsx)(`ul`,{className:`max-h-32 overflow-y-auto text-xs`,children:x.skippedDocuments.map(n=>(0,b.jsxs)(`li`,{children:[e===`export`?(0,b.jsxs)(`a`,{className:`underline`,target:`_blank`,rel:`noopener noreferrer`,href:`/workspaces/${encodeURIComponent(t)}/documents/by-id/${n.id}`,children:[`Document `,n.id]}):`Source document ${n.id}`,`: `,n.reason===`not-found`?`record not found`:n.reason]},n.id))})]}),T&&(0,b.jsxs)(`div`,{role:`status`,className:`flex items-center gap-2 text-sm`,children:[(0,b.jsx)(i,{className:`h-4 w-4 animate-spin`}),(0,b.jsx)(`span`,{children:k?`${k.phase.charAt(0).toUpperCase()}${k.phase.slice(1)}${k.total?`: ${k.received} / ${k.total}`:`…`}`:`Starting…`})]}),j&&(0,b.jsxs)(`div`,{role:`status`,className:`space-y-2 text-sm`,children:[(0,b.jsxs)(`p`,{children:[`Imported `,j.documents,` documents into `,j.path,`. Reused `,j.reused,` matching records.`]}),!!j.reusedLayers&&(0,b.jsxs)(`p`,{children:[`Merged into `,j.reusedLayers,` existing layers, keeping their settings and documents.`]}),(0,b.jsx)(`p`,{children:`Copy the files into the destination backend and run its sync. Matching checksums reconnect the imported file records.`}),j.unresolvedRelations>0&&(0,b.jsxs)(`p`,{children:[j.unresolvedRelations,` external references were kept as migration metadata because their target records are not present.`]})]}),D&&(0,b.jsx)(`p`,{role:`alert`,className:`text-sm text-destructive`,children:D}),(0,b.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,b.jsx)(p,{variant:`outline`,disabled:T,onClick:f,children:`Close`}),e===`export`&&x?(0,b.jsx)(p,{onClick:P,children:`Download export`}):!j&&(0,b.jsx)(p,{disabled:T||e===`import`&&(!x||!C.trim()||C.includes(`/`)),onClick:()=>void N(),children:D?`Retry`:e===`export`?`Create export`:`Import subtree`})]})]})})}export{x as showSubtreeTransfer};
@@ -1,3 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/MarkdownEditor-CkobBLtI.js","assets/rolldown-runtime-C0FnF6B9.js","assets/code-editor-BQnKd3jw.js","assets/react-BzqgEMSQ.js","assets/ui-BqHBdBU4.js","assets/utils-2pl1SbIp.js","assets/utils-BxVxyehK.js","assets/punycode.es6-ZbLrB_Dn.js","assets/use-theme-Bd8sb5Ox.js","assets/MarkdownEditor-DWa37grk.css"])))=>i.map(i=>d[i]);
2
- import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{l as t,u as n}from"./code-editor-BQnKd3jw.js";import{t as r}from"./preload-helper-Czpn1I53.js";import{t as i}from"./utils-2pl1SbIp.js";import{v as a}from"./alert-dialog-BC58hyW-.js";import{i as o,o as s}from"./blobs-CtDkR2hC.js";import{B as c,Ln as l,N as u,P as d,Tn as f,V as p,in as m,qn as h,rt as g}from"./workspace-BSXnX2Me.js";var _=e(n(),1),v=(0,_.createContext)(null);function y(){return(0,_.useContext)(v)}function b(e,t,n={}){let r=new URLSearchParams;n.download&&r.set(`download`,`1`),n.url&&r.set(`url`,n.url),n.format&&r.set(`format`,n.format),n.version&&r.set(`v`,n.version);let i=r.toString();return`${a}/pub/c/${encodeURIComponent(e)}/documents/${t}/content${i?`?${i}`:``}`}async function x(e,t,n=256){let r=await fetch(`${a}/pub/c/${encodeURIComponent(e)}/documents/${t}/thumbnail?size=${n}`);if(!r.ok)throw Error(`HTTP ${r.status}`);let i=r.headers.get(`content-type`)||`image/webp`;return{blob:await r.blob(),mime:i}}async function S(e,t,n={}){let r=await fetch(b(e,t,n),{signal:n.signal});if(!r.ok)throw Error(`HTTP ${r.status}`);let i=r.headers.get(`content-type`)||`application/octet-stream`;return{blob:await r.blob(),mime:i}}async function C(e,t,n,r={}){let{blob:i}=await S(e,t,{...r}),a=URL.createObjectURL(i),o=document.createElement(`a`);o.href=a,o.download=n,document.body.appendChild(o),o.click(),o.remove(),setTimeout(()=>URL.revokeObjectURL(a),3e4)}function w(e){let t=y();return(0,_.useMemo)(()=>({isPublic:t!=null,fetchBlob:(n,r={})=>t?S(t,n,r):c(e,n,r),fetchThumbnail:(n,r=256,i)=>t?x(t,n,r):p(e,n,r,i),download:(n,r,i={})=>t?C(t,n,r,i):d(e,n,r,i),streamUrl:(n,r={})=>t?b(t,n,r):u(e,n,r),mintTicket:n=>t?Promise.resolve(!0):m(e,n)}),[e,t])}var T=e=>({blobUrl:null,blob:null,text:null,mime:null,error:null,loading:e});function E(e,t,{url:n,mode:r=`blob`,enabled:i=!0,maxTextLength:a=2e5,typeHint:o,version:s=null}={}){let{isPublic:c,fetchBlob:l}=w(e),u=`${c?`pub`:`ws`}:${e}:${t}:${n??``}:${r}:${i}:${o??``}:${s??``}`,[d,f]=(0,_.useState)(T(i)),[p,m]=(0,_.useState)(u);return u!==p&&(m(u),f(T(i))),(0,_.useEffect)(()=>{if(!i)return;let e=!1,c=null;return l(t,{...n?{url:n}:{},...s?{version:s}:{}}).then(async({blob:t,mime:n})=>{if(!e){if(r===`text`){let r=await t.text();e||f({blobUrl:null,blob:null,text:r.slice(0,a),mime:n,error:null,loading:!1})}else{let r=o&&(!t.type||t.type===`application/octet-stream`),i=r?t.slice(0,t.size,o):t;if(c=URL.createObjectURL(i),e){URL.revokeObjectURL(c),c=null;return}f({blobUrl:c,blob:i,text:null,mime:r?o:n,error:null,loading:!1})}}}).catch(t=>{e||f({blobUrl:null,blob:null,text:null,mime:null,error:String(t instanceof Error?t.message:t),loading:!1})}),()=>{e=!0,c&&URL.revokeObjectURL(c)}},[u]),d}function D(e,t,{url:n,enabled:r=!0}={}){let{isPublic:i,streamUrl:a,mintTicket:o}=w(e),s=`${i?`pub`:`ws`}:${e}:${t}:${n||``}:${r}`,[c,l]=(0,_.useState)({src:null,error:null,loading:!0}),[u,d]=(0,_.useState)(s);return s!==u&&(d(s),l({src:null,error:null,loading:!0})),(0,_.useEffect)(()=>{if(!r)return;let e=!1;return o(t).then(r=>{e||l(r?{src:a(t,{url:n}),error:null,loading:!1}:{src:null,error:`Could not authorize stream`,loading:!1})}).catch(t=>{e||l({src:null,error:t instanceof Error?t.message:String(t),loading:!1})}),()=>{e=!0}},[s]),c}function O(e){let t=new Set;for(let n of e){let e=n.trim();e&&t.add(`tag/${e}`)}return Array.from(t)}function k(e){return(e||[]).filter(e=>e.startsWith(`tag/`)).map(e=>e.slice(4))}var A=t(),j=(0,_.lazy)(()=>r(()=>import(`./MarkdownEditor-CkobBLtI.js`).then(e=>({default:e.MarkdownEditor})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9]))),M=(0,A.jsx)(`div`,{className:`rounded-md border border-input p-3 text-sm text-muted-foreground`,children:`Loading editor…`});function N(e){return(0,A.jsx)(_.Suspense,{fallback:M,children:(0,A.jsx)(j,{...e})})}var P=class{snapshot;listeners=new Set;timer;running;forcedSave;options;key;constructor(e,t,n={}){this.key=e,this.options=n;let r={value:t,saved:JSON.stringify(t),meta:{}};try{let t=JSON.parse(n.storage?.getItem(e)||`null`);t?.version===1&&t.value&&typeof t.saved==`string`&&(r=t)}catch{}this.snapshot={...r,status:JSON.stringify(r.value)===r.saved?`idle`:`draft`,error:``,storageError:!1}}configure=e=>{this.options={...e,storage:this.options.storage}};getSnapshot=()=>this.snapshot;subscribe=e=>(this.listeners.add(e),()=>{this.listeners.delete(e)});emit(e){this.snapshot={...this.snapshot,...e},this.listeners.forEach(e=>e())}persist(){try{if(!this.options.storage)throw Error(`Storage unavailable`);this.options.storage.setItem(this.key,JSON.stringify({version:1,value:this.snapshot.value,saved:this.snapshot.saved,meta:this.snapshot.meta})),this.snapshot.storageError&&this.emit({storageError:!1})}catch{this.snapshot.storageError||this.emit({storageError:!0})}}update=e=>{let t={...this.snapshot.value,...e};JSON.stringify(t)!==JSON.stringify(this.snapshot.value)&&(this.emit({value:t,status:`draft`,error:``}),this.persist(),this.schedule())};schedule=()=>{this.cancelTimer(),this.options.save&&(this.timer=setTimeout(()=>{this.flush().catch(()=>{})},this.options.delay??650))};cancelTimer=()=>{clearTimeout(this.timer),this.timer=void 0};flush=()=>(this.cancelTimer(),this.running||=this.drain().finally(()=>{this.running=void 0,this.forcedSave=void 0}),this.running);async drain(){for(;JSON.stringify(this.snapshot.value)!==this.snapshot.saved;){let e=this.snapshot.value,t=this.forcedSave??this.options.save;if(!t||this.options.valid&&!this.options.valid(e))return;this.emit({status:`saving`,error:``});try{await t(e,this.snapshot.meta,e=>{this.emit({meta:e}),this.persist()}),this.emit({saved:JSON.stringify(e)}),this.persist()}catch(e){throw this.emit({status:`error`,error:e instanceof Error?e.message:`Save failed`}),this.persist(),e}}if(this.snapshot.status!==`idle`&&this.emit({status:`saved`}),!this.options.retainAfterSave)try{this.options.storage?.removeItem(this.key)}catch{}}saveWith=e=>(this.forcedSave=e,this.flush());clear=()=>{this.cancelTimer();try{this.options.storage?.removeItem(this.key)}catch{}}};function F(e){let t=`local`;try{let e=localStorage.getItem(`authToken`)||``,n=JSON.parse(atob(e.split(`.`)[1].replace(/-/g,`+`).replace(/_/g,`/`)));t=String(n.sub||n.userId||n.id||n.email||e)}catch{}let n=2166136261;for(let e of t)n=Math.imul(n^e.charCodeAt(0),16777619);return`canvas:note-draft:${n>>>0}:${e}`}var I=class{users=0;draft;constructor(e){this.draft=e}attach(){this.users++}release(){this.users--}},L=new Map;function R(e,t,n={}){let r=(0,_.useMemo)(()=>{let r=L.get(e);if(r)return r;let i;try{i=localStorage}catch{}let a=new I(new P(e,t,{...n,storage:i}));return L.set(e,a),a},[e]),{draft:i}=r;return(0,_.useEffect)(()=>{i.configure(n)}),(0,_.useEffect)(()=>{r.attach();let t=()=>{i.flush().catch(()=>{})},n=()=>{document.visibilityState===`hidden`&&t()};return i.schedule(),window.addEventListener(`online`,t),window.addEventListener(`pagehide`,t),document.addEventListener(`visibilitychange`,n),()=>{window.removeEventListener(`online`,t),window.removeEventListener(`pagehide`,t),document.removeEventListener(`visibilitychange`,n),r.release(),i.flush().catch(()=>{}).finally(()=>{r.users===0&&L.get(e)===r&&L.delete(e)})}},[i,r,e]),{...(0,_.useSyncExternalStore)(i.subscribe,i.getSnapshot),update:i.update,flush:i.flush,clear:i.clear,saveWith:i.saveWith,getSnapshot:i.getSnapshot}}function z(e,t,n=!0){let r=e.features??e.metadata?.features??[],i={title:String(e.data?.title??``),content:String(e.data?.content??``),comment:String(e.comment??``),tags:k(r),geo:e.metadata?.geo??null},a=R(F(`document:${t}:${e.id}`),i,{save:n?async n=>{await f(t,{id:e.id,schema:e.schema,schemaVersion:e.schemaVersion,data:{...e.data,title:n.title.trim(),content:n.content},comment:n.comment,metadata:{features:[...r.filter(e=>!e.startsWith(`tag/`)),...O(n.tags)],geo:n.geo}}),window.dispatchEvent(new CustomEvent(`workspace:documents:refresh`))}:void 0});return{...a.value,status:a.status,error:a.error,storageError:a.storageError,setTitle:e=>a.update({title:e}),setContent:e=>a.update({content:e}),setComment:e=>a.update({comment:e}),setTags:e=>a.update({tags:e}),setGeo:e=>a.update({geo:e}),saving:a.status===`saving`,canSave:a.status!==`saving`,save:a.flush}}function B({status:e,storageError:t,error:n,onRetry:r}){return(0,A.jsx)(`p`,{role:`status`,className:`text-xs text-muted-foreground`,children:e===`error`?(0,A.jsxs)(A.Fragment,{children:[(0,A.jsxs)(`span`,{title:n,children:[`Couldn’t sync. `,t?`Keep this editor open.`:`Draft saved on this device.`]}),` `,(0,A.jsx)(`button`,{type:`button`,className:`underline`,onClick:()=>void r().catch(()=>{}),children:`Retry`})]}):e===`saving`?`Saving…`:e===`saved`?`Saved`:e===`draft`?t?`Draft recovery unavailable. Keep this editor open until saved.`:`Draft saved on this device`:`Changes save automatically`})}function V({kind:e,value:t,onChange:n,placeholder:r,rows:a=16,fill:o=!1}){return e===`markdown`?(0,A.jsx)(N,{value:t,onChange:n,placeholder:r,fill:o}):(0,A.jsx)(`textarea`,{value:t,onChange:e=>n(e.target.value),rows:o?void 0:a,placeholder:r,spellCheck:!1,className:i(`flex w-full rounded-md border border-input bg-transparent px-3 py-2 font-mono text-xs leading-relaxed shadow-elevation-1 transition-colors placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring`,o&&`h-full min-h-0 resize-none`)})}var H=1e6;function U(e){if(e.schema===`data/schema/note`)return`markdown`;if(e.schema!==`data/schema/file`)return null;let t=h(String(e.metadata?.contentType??``),l(e));return t===`markdown`?`markdown`:t===`text`?`text`:null}function W(e){return e.schema===`data/schema/file`&&U(e)!=null}function G(e){let t=Number(e.metadata?.size??0);return Number.isFinite(t)&&t>1e6}var K=`workspace:data`;function q(e){for(let t of e.locations||[]){let e=/^stored:\/\/([^/]+)\/(.+)$/.exec(String(t?.url||``));if(!(!e||e[1]===K))return{backend:e[1],key:e[2]}}return null}async function J(e,t,n,r={}){let i=l(t)||`document-${t.id}.txt`,a=String(t.metadata?.contentType??``)||(U(t)===`markdown`?`text/markdown`:`text/plain`),c=n.endsWith(`
3
- `)?n:`${n}\n`,u=new Blob([c],{type:a}),d=q(t);if(d){let n=String(t.checksumArray?.[0]??``).replace(/^sha256\//,``),i=await s(e,{driver:`file`,address:d.backend,key:d.key},u,{ifMatch:n||void 0,contentType:a});return(r.comment!==void 0&&r.comment!==(t.comment??``)||r.metadata!==void 0)&&await f(e,{id:i.docId??t.id,schema:t.schema,schemaVersion:t.schemaVersion,...r.comment===void 0?{}:{comment:r.comment},...r.metadata===void 0?{}:{metadata:r.metadata}}),g(e,i.docId??t.id)}let p=await o(e,u);return await f(e,{id:t.id,schema:t.schema,schemaVersion:t.schemaVersion,...r.comment===void 0?{}:{comment:r.comment},checksumArray:[`sha256/${p.checksum}`],locations:[{url:p.url,metadata:{filename:i}}],metadata:{contentType:a,size:p.size,...r.metadata??{}}}),g(e,t.id)}export{b as _,G as a,z as c,N as d,k as f,v as g,D as h,W as i,R as l,E as m,H as n,V as o,O as p,U as r,B as s,J as t,F as u,w as v,y};
@@ -1 +0,0 @@
1
- import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{u as t}from"./code-editor-BQnKd3jw.js";import{_ as n,u as r}from"./alert-dialog-BC58hyW-.js";import{Ht as i,Mn as a,Pt as o,ft as s,jn as c,xt as l}from"./workspace-BSXnX2Me.js";var u=e(t(),1);function d(e){return!/[\\\0]/.test(e)&&e.split(`/`).every(e=>e!==`.`&&e!==`..`)}function f(e,t){if(!d(e))throw Error(`Invalid backend folder path`);let n=`/`+e.split(`/`).filter(Boolean).join(`/`),r=[...t].filter(e=>e.treePath&&(n===e.treePath||n.startsWith(e.treePath+`/`))).sort((e,t)=>t.treePath.length-e.treePath.length)[0];if(!r)throw Error(`Choose a writable storage backend folder`);if(!r.enabled||r.config?.readOnly===!0||!r.capabilities.upload)throw Error(`This backend does not support file uploads or is read-only`);return{driver:r.driver,address:r.address,key:n.slice(r.treePath.length).replace(/^\//,``)}}function p(e,t){if(!t||t.includes(`/`)||!d(t)||!d(e))throw Error(`Invalid upload filename or folder`);return[e.replace(/^\/+|\/+$/g,``),t].filter(Boolean).join(`/`)}var m=(0,u.createContext)(null);function h(){let e=(0,u.useContext)(m);if(!e)throw Error(`useToolbox must be used within a ToolboxProvider`);return e}function g(){return(0,u.useContext)(m)}var _=`contexts:deleted`;function v(e,t){return e.id===t.id?t.ownerId===void 0?e.isShared!==!0&&e.type!==`shared`:e.userId===t.ownerId:!1}async function y(){try{let e=await r.get(n.contexts);return Array.isArray(e)?e:(console.warn(`listContexts: response.payload is not an array:`,e),[])}catch(e){throw console.error(`Failed to list contexts:`,e),e}}function b(e,t){return t?`${e}${e.includes(`?`)?`&`:`?`}ownerId=${encodeURIComponent(t)}`:e}async function x(e,t){try{let i=b(`${n.contexts}/${e}`,t),a=await r.get(i);if(a&&a)return a;throw Error(`Context data not found in API response`)}catch(t){throw console.error(`Failed to get context ${e}:`,t),t}}async function ee(e){try{let t=await r.post(n.contexts,e);if(t&&t&&t.context)return t.context;throw Error(`Created context data not found in API response`)}catch(e){throw console.error(`Failed to create context:`,e),e}}async function S(e,t,i){try{let a=b(`${n.contexts}/${e}`,i),o=await r.put(a,t);if(o?.context)return o.context;throw Error(`Updated context data not found in API response`)}catch(t){throw console.error(`Failed to patch context ${e}:`,t),t}}async function C(e,t,i){try{let a=b(`${n.contexts}/${e}`,i),o=await r.put(a,t);if(o?.context)return o.context;throw Error(`Updated context data not found in API response`)}catch(t){throw console.error(`Failed to update context ${e}:`,t),t}}async function w(e,t,i,a){try{let o=b(`${n.contexts}/${e}/url`,i),s=await r.post(o,{url:t,...a?{treeName:a}:{}});if(s&&s&&s.url)return{url:s.url,treeId:s.treeId};throw Error(`Updated context data not found in API response`)}catch(t){throw console.error(`Failed to update context URL for ${e}:`,t),t}}async function T(e,t){try{let i=b(`${n.contexts}/${e}`,t);await r.delete(i),window.dispatchEvent(new CustomEvent(_,{detail:{id:e,ownerId:t}}))}catch(t){throw console.error(`Failed to delete context ${e}:`,t),t}}async function E(e,t=[],i=[],o={},s){try{if(o.ids?.length===0)return Object.assign([],{count:0,totalCount:0});if(a(o.sortBy)){let n=await c(o,async n=>{let r=await E(e,t,i,{...o,...n,sortBy:void 0,order:`asc`},s);return{payload:r,count:r.count,totalCount:r.totalCount}});return Object.assign(n.payload,{count:n.count,totalCount:n.totalCount})}let l=new URLSearchParams;o.geoSelection&&(l.set(`geoSelection`,JSON.stringify(o.geoSelection)),l.set(`includeUnlocated`,String(o.includeUnlocated===!0))),o.ids?.forEach(e=>l.append(`ids`,String(e))),t.forEach(e=>l.append(`allOf`,e)),i.forEach(e=>l.append(`filters`,e)),(o.anyOf||[]).filter(Boolean).forEach(e=>l.append(`anyOf`,e)),(o.noneOf||[]).filter(Boolean).forEach(e=>l.append(`noneOf`,e)),o.sortBy&&l.append(`sortBy`,o.sortBy),o.order&&l.append(`order`,o.order),o.applyContextSpec===!1&&l.append(`applyContextSpec`,`false`),s&&l.append(`ownerId`,s),o.includeServerContext!==void 0&&l.append(`includeServerContext`,o.includeServerContext.toString()),o.includeClientContext!==void 0&&l.append(`includeClientContext`,o.includeClientContext.toString()),o.limit!==void 0&&l.append(`limit`,o.limit.toString()),o.offset!==void 0&&l.append(`offset`,o.offset.toString()),o.page!==void 0&&l.append(`page`,o.page.toString()),(o.queries&&o.queries.length?o.queries:o.q?[o.q]:[]).map(e=>e.trim()).filter(Boolean).forEach(e=>l.append(`q`,e));let u=`${n.contexts}/${e}/documents${l.toString()?`?`+l.toString():``}`,d=await r.getEnvelope(u,{signal:o.signal}),f=d.payload;if(Array.isArray(f)){let e=f;return e.count=d.count??void 0,e.totalCount=d.totalCount??void 0,e}return console.warn(`getContextDocuments: payload is not an array:`,f),[]}catch(t){throw console.error(`Failed to get context documents for ${e}:`,t),t}}async function D(e){let t=await r.get(`${n.contexts}/${e}/shares`);return Array.isArray(t)?t:[]}async function O(e,t,i){try{return{message:(await r.post(`${n.contexts}/${e}/shares`,{userEmail:t,accessLevel:i})).message||`Context access granted`}}catch(e){throw console.error(`Failed to grant context access:`,e),e}}async function k(e,t){try{return{message:(await r.delete(`${n.contexts}/${e}/shares/${encodeURIComponent(t)}`)).message||`Context access revoked`}}catch(e){throw console.error(`Failed to revoke context access:`,e),e}}async function A(e,t){try{let i=b(`${n.contexts}/${e}/tree`,t),a=await r.get(i);if(a)return a;throw Error(`Context tree data not found in API response`)}catch(t){throw console.error(`Failed to get context tree for ${e}:`,t),t}}async function j(e,t,i,a){try{let a=Array.isArray(t)?t:[t],o=new URLSearchParams,s=`${n.contexts}/${e}/documents/remove${o.toString()?`?${o.toString()}`:``}`;return{message:await r.delete(b(s,i),{body:JSON.stringify(a),headers:{"Content-Type":`application/json`}})||`Documents removed from context`}}catch(t){throw console.error(`Failed to remove documents from context ${e}:`,t),t}}async function M(e,t,i,a){try{let a=Array.isArray(t)?t:[t],o=new URLSearchParams,s=`${n.contexts}/${e}/documents${o.toString()?`?${o.toString()}`:``}`;return await r.delete(b(s,i),{body:JSON.stringify(a),headers:{"Content-Type":`application/json`}})}catch(t){throw console.error(`Failed to delete documents from context ${e}:`,t),t}}async function N(e,t,i,a){try{let o=Array.isArray(i)?i:[i];return await r.post(b(`${n.contexts}/${e}/documents`,a),{documentIds:o,context:t}),!0}catch(e){throw console.error(`Failed to paste documents to context path ${t}:`,e),e}}async function P(e,t,i=!0){return await r.post(`${n.contexts}/${e}/tree/paths`,{path:t,autoCreateLayers:i})??!0}async function F(e,t,i=!1){let a=new URLSearchParams({path:t,recursive:i.toString()});return await r.delete(`${n.contexts}/${e}/tree/paths?${a}`)??!0}async function I(e,t,i){return await r.patch(`${n.contexts}/${e}/tree/paths`,{path:t,...i})??!0}async function L(e,t,i,a=!1,o={}){return await r.post(`${n.contexts}/${e}/tree/paths/move`,{from:t,to:i,recursive:a,...o.mergeDown?{mergeDown:!0}:{}})??!0}async function te(e,t){return await r.post(`${n.contexts}/${e}/tree/paths/merge-down`,{path:t})}async function R(e,t){return await r.post(`${n.contexts}/${e}/tree/paths/subtract-down`,{path:t})}async function z(e,t,i,a=!1){return await r.post(`${n.contexts}/${e}/tree/paths/copy`,{from:t,to:i,recursive:a})??!0}async function B(e,t,i){return await r.post(`${n.contexts}/${e}/tree/layers/merge`,{layerId:t,targetLayers:i})}async function V(e,t,i){return await r.post(`${n.contexts}/${e}/tree/layers/subtract`,{layerId:t,targetLayers:i})}async function H(e,t,i){try{let a=Array.isArray(i)?i:[i];return await r.post(`${n.workspaces}/${e}/documents`,{documents:a,treeType:`context`,context:t}),!0}catch(e){throw console.error(`Failed to import documents to context path ${t}:`,e),e}}async function U(e,t,i=[]){try{let a=Array.isArray(t)?t:[t],o=await r.post(`${n.contexts}/${e}/documents`,{documents:a,features:i});return Array.isArray(o)?o:[]}catch(t){throw console.error(`Failed to insert documents into context ${e}:`,t),t}}function W(){let{state:e}=h(),{activeContextType:t,activeContextId:n,activeWorkspaceName:r,activeTreeName:i,activeContextPath:a}=e;return(0,u.useMemo)(()=>t===`context`&&n?{mode:`context`,contextId:n}:r&&a?{mode:`workspace`,workspaceName:r,path:a,treeName:i||`context`,treeType:i===`directory`||i===`backends`?`directory`:`context`}:null,[t,n,r,i,a])}var G=new Map,K=15e3;function q(e){let t=G.get(e);if(t&&Date.now()-t.at<K)return t.promise;let n=o(e);return n.catch(()=>G.delete(e)),G.set(e,{at:Date.now(),promise:n}),n}function J(e){e?.mode===`workspace`&&window.dispatchEvent(new CustomEvent(`workspace:documents:refresh`,{detail:{workspaceName:e.workspaceName,treeName:e.treeName,path:e.path}}))}async function Y(e,t,n={}){if(!e)throw Error(`No active workspace or context to add to`);if(e.mode===`workspace`){if(e.treeName===`backends`)throw Error(`Backend folders accept files, not database-only documents`);let r=e.treeType;try{let t=(await q(e.workspaceName)).find(t=>t?.name===e.treeName||t?.id===e.treeName);(t?.type===`directory`||t?.type===`context`)&&(r=t.type)}catch{}let i=await s(e.workspaceName,e.path,t,e.treeName,r);return i.length&&n.refresh!==!1&&J(e),i}return U(e.contextId,t)}async function X(e){if(!e)throw Error(`No active workspace or context to add to`);if(e.mode===`workspace`)return{workspaceName:e.workspaceName,path:e.path,treeName:e.treeName,treeType:e.treeType};let t=await x(e.contextId),n=t.workspaceName||t.workspaceId;if(!n)throw Error(`Context has no bound workspace`);return{workspaceName:n,path:t.path||`/`,treeName:t.treeId||`context`,treeType:`context`}}async function Z(e,t){if(!e)throw Error(`No active workspace or context to add to`);if(e.mode===`workspace`){let n=await i(e.workspaceName,e.path,t,e.treeName,e.treeType);return n&&window.dispatchEvent(new CustomEvent(`workspace:documents:refresh`,{detail:{workspaceName:e.workspaceName,treeName:e.treeName,path:e.path}})),n}let n=await x(e.contextId);return N(e.contextId,n.path||`/`,t)}function Q(e){return e?e.mode===`context`?`Adds to the current context`:`Adds to ${e.path===`/`?`/`:e.path}`:`No destination. Open a workspace path or a context first`}async function $(e,t){return f(t,await l(e))}function ne(e){let t=e?.mode===`workspace`&&e.treeName===`backends`,n=t?e.workspaceName:``,r=t?e.path:``,i=`${n}\0${r}`,[a,o]=(0,u.useState)(null);return(0,u.useEffect)(()=>{if(!t)return;let e=!1;return $(n,r).then(t=>{e||o({key:i,destination:t})}).catch(t=>{e||o({key:i,error:t instanceof Error?t.message:`Unable to load backend`})}),()=>{e=!0}},[t,n,r,i]),{isBackend:t,loading:t&&a?.key!==i,destination:a?.key===i?a.destination:void 0,error:a?.key===i?a.error:void 0}}export{R as A,f as B,L as C,j as D,F as E,v as F,m as I,h as L,I as M,w as N,k as O,_ as P,g as R,te as S,S as T,H as _,X as a,y as b,ne as c,T as d,M as f,O as g,A as h,$ as i,C as j,V as k,z as l,E as m,Z as n,Y as o,x as p,J as r,W as s,Q as t,ee as u,P as v,N as w,B as x,D as y,p as z};
@@ -1 +0,0 @@
1
- import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{l as t,u as n}from"./code-editor-BQnKd3jw.js";import{vt as r}from"./react-BzqgEMSQ.js";import{_ as i,a,b as o,c as s,i as c,s as l,t as u,u as d,v as f,x as p}from"./alert-dialog-BC58hyW-.js";var ee=`data/schema/note`,te=`data/schema/link`,ne=`data/schema/tab`,re=`data/schema/file`,ie=`data/schema/drawing`,ae=`data/schema/message/email`,oe=`data/schema/task`,m=`data/schema/identity`;function h(e,t){return e.startsWith(`${t}/`)?e.slice(t.length+1):``}var se={png:`image/png`,jpg:`image/jpeg`,jpeg:`image/jpeg`,gif:`image/gif`,webp:`image/webp`,bmp:`image/bmp`,svg:`image/svg+xml`,avif:`image/avif`,heic:`image/heic`,heif:`image/heif`,mp3:`audio/mpeg`,wav:`audio/wav`,ogg:`audio/ogg`,oga:`audio/ogg`,m4a:`audio/mp4`,flac:`audio/flac`,aac:`audio/aac`,mp4:`video/mp4`,m4v:`video/mp4`,webm:`video/webm`,mov:`video/quicktime`,mkv:`video/x-matroska`,avi:`video/x-msvideo`,ogv:`video/ogg`,pdf:`application/pdf`,md:`text/markdown`,markdown:`text/markdown`,txt:`text/plain`,json:`application/json`,xml:`application/xml`,csv:`text/csv`,log:`text/plain`,yml:`text/yaml`,yaml:`text/yaml`};function ce(e){let t=/\.([a-z0-9]+)$/i.exec(e||``);return t?t[1].toLowerCase():``}function le(e){return se[ce(e)]}function g(e){return e.startsWith(`image/`)?`image`:e.startsWith(`audio/`)?`audio`:e.startsWith(`video/`)?`video`:e===`application/pdf`?`pdf`:e.startsWith(`text/`)||e.endsWith(`+json`)||e===`application/json`||e===`application/xml`?`text`:null}function ue(e,t){if(e===`text/markdown`||/\.(md|markdown)$/i.test(t||``))return`markdown`;if(e&&e!==`application/octet-stream`){let t=g(e);if(t)return t}let n=le(t);if(n){let e=g(n);if(e)return e}return`binary`}function de(e){if(!e)return null;try{let t=new URL(e),n=t.hostname.replace(/^www\.|^m\./,``);if(n===`youtu.be`)return t.pathname.slice(1).split(`/`)[0]||null;if(n===`youtube.com`||n===`youtube-nocookie.com`){if(t.pathname===`/watch`)return t.searchParams.get(`v`);let e=t.pathname.match(/^\/(shorts|embed|live)\/([^/]+)/);if(e)return e[2]}return null}catch{return null}}var fe=`data/schema/message/email`,pe=`data/schema/tab`,_=`data/schema/task`;function v(e,t){let n=String(e||``).replace(/\s+/g,` `).trim();return n?n.length>t?`${n.slice(0,t)}...`:n:``}function me(e){return String(e||``).replace(/```[\s\S]*?```/g,` `).replace(/`([^`]*)`/g,`$1`).replace(/!\[([^\]]*)\]\([^)]*\)/g,`$1`).replace(/\[([^\]]*)\]\([^)]*\)/g,`$1`).replace(/^#{1,6}\s+/gm,``).replace(/^\s*>\s?/gm,``).replace(/^\s*[-*+]\s+/gm,``).replace(/(\*\*|__|\*|_|~~)/g,``)}function he(e){if(!e)return``;if(typeof e==`string`)return e;if(Array.isArray(e))return e.map(he).filter(Boolean).join(`, `);if(typeof e==`object`){let t=e,n=String(t.address||``).trim(),r=String(t.name||``).trim();return r&&n&&r!==n?`${r} <${n}>`:r||n}return``}function ge(e){let t=Array.isArray(e?.channels)?e.channels.length:0,n=Array.isArray(e?.identifiers)?e.identifiers.length:0,r=Array.isArray(e?.organizations)?e.organizations.length:0;return[t?`${t} channel${t===1?``:`s`}`:``,n?`${n} identifier${n===1?``:`s`}`:``,r?`${r} organization${r===1?``:`s`}`:``].filter(Boolean).join(` · `)}function _e(e){let t=String(e?.displayName||``).trim();if(t)return t;let n=e?.name;if(!n||typeof n!=`object`)return String(n||``).trim();let r=n;return[r.prefix,r.given,r.middle,r.family,r.suffix].map(e=>String(e||``).trim()).filter(Boolean).join(` `)}function ve(e){let t=String(e?.primaryEmail||``).trim();if(t)return t;let n=Array.isArray(e?.channels)?e.channels:[],r=n.find(e=>e?.kind===`email`&&e?.primary)||n.find(e=>e?.kind===`email`);return String(r?.value||``).trim()}function ye(e){try{let t=new URL(e);return`${t.hostname}${t.pathname}`}catch{return e}}function be(e){return e.schema===`data/schema/file`&&String(e.metadata?.contentType||``).startsWith(`image/`)}var xe=/^(imaps?|pop3s?|mailto|graph|ews|news|nntp):/i;function Se(e){if(!e||xe.test(e))return``;let t=e.replace(/^[a-z][a-z0-9+.-]*:\/\//i,``),n=t.indexOf(`/`),r=(n>=0?t.slice(n+1):t).split(`/`).filter(Boolean).pop();if(!r)return``;let i;try{i=decodeURIComponent(r)}catch{i=r}return/^stored:\/\//i.test(e)&&!Ce(i)?``:i}function Ce(e){return e.length>0&&!/^[a-f0-9]{12,}$/i.test(e)&&!/^[a-f0-9]{16,}\.[A-Za-z0-9]{1,12}$/i.test(e)}function we(e){return typeof e.comment==`string`?e.comment.trim():``}function y(e){let t=String(e.metadata?.filename||``).trim();if(t)return t;let n=String(e.data?.filename||``).trim();if(n)return n;let r=(e.locations||[]).filter(Boolean),i=r.find(e=>/^stored:\/\/workspace:/i.test(e.url||``)),a=String(i?.metadata?.filename||``).trim();if(a)return a;let o=[...r].sort((e,t)=>String(e.url||``).localeCompare(String(t.url||``))),s=o.find(e=>String(e.metadata?.filename||``).trim());if(s)return String(s.metadata?.filename||``).trim();for(let e of o){let t=Se(e.url);if(t)return t}return``}function Te(e){let t=e.data;for(let e of[t.url,t.htmlUrl,t.htmlLink])if(typeof e==`string`&&/^https?:\/\//i.test(e))return e;for(let t of e.locations||[])if(typeof t?.url==`string`&&/^https?:\/\//i.test(t.url))return t.url;return null}function b(e){let t=e.schema===fe,n=e.schema===pe,r=e.schema.split(`/`).pop()||e.schema;if(t)return{title:v(e.data.title||e.data.name||e.data.subject,160)||`Email ${e.id}`,preview:v(e.data.bodyPreview||e.data.body||``,140),subtitle:v(he(e.data.from),120),icon:`mail`,isExternal:!1,schemaLabel:r};if(e.schema===`data/schema/message`){let t=e.data.sender,n=e.data.channel;return{title:v(e.data.text,160)||`Message`,preview:v(e.data.text,400),subtitle:[t?.name||t?.displayName||t?.username||t?.id,n?.name||n?.id].filter(Boolean).join(` · `),icon:`mail`,isExternal:!1,schemaLabel:r}}if(n||e.schema===`data/schema/link`){let t=String(e.data.title||e.data.name||e.data.label||``).trim(),n=String(e.data.url||e.data.uri||``).trim();return{title:t||ye(n)||`Document ${e.id}`,preview:v(e.data.description||e.data.summary||n,140),subtitle:n,icon:`globe`,isExternal:!!n,schemaLabel:r}}if(e.schema===_||e.schema.startsWith(`${_}/`)){let t=String(e.data.status||(e.data.completed?`completed`:`pending`)).trim(),n=e.data.dueDate?new Date(String(e.data.dueDate)):null,i=n&&!Number.isNaN(n.getTime())?n.toLocaleDateString(void 0,{month:`short`,day:`numeric`}):``;return{title:v(e.data.title||e.data.name,160)||`Task ${e.id}`,preview:v(me(e.data.description||e.data.summary),400),subtitle:[t,i?`due ${i}`:``].filter(Boolean).join(` · `),icon:`file`,isExternal:!1,schemaLabel:r}}if(e.schema===`data/schema/identity`||e.schema.startsWith(`data/schema/identity/`)){let t=ve(e.data),n=h(e.schema,m);return{title:v(_e(e.data),160)||`Identity ${e.id}`,preview:v(ge(e.data),140),subtitle:[t,n].filter(Boolean).join(` · `),icon:t?`mail`:`file`,isExternal:!1,schemaLabel:r}}if(e.schema===`data/schema/file`){let t=y(e),n=String(e.metadata?.contentType||``).trim(),i=e.metadata?.size,a=[n,Number.isFinite(i)?`${i} bytes`:``].filter(Boolean);return{title:v(t||e.data.title||e.data.name,160)||`File ${e.id}`,preview:a.join(` · `),subtitle:t,icon:`file`,isExternal:!1,schemaLabel:r}}return{title:v(e.data.title||e.data.name||e.data.subject||y(e),160)||`Document ${e.id}`,preview:v(me(e.data.content||e.data.description||e.data.summary||e.data.bodyPreview||e.data.body),400),subtitle:``,icon:`file`,isExternal:!1,schemaLabel:r}}function x(e){return e===`alphabetical`||e===`type`}function S(e){return e.schema===`data/schema/file`?(/\.([^.]+)$/.exec(y(e))?.[1]||e.metadata?.contentType||`file`).toLowerCase():e.schema.split(`/`).pop()||e.schema}function C(e,t,n=`asc`){let r=n===`desc`?-1:1,i=(e,t)=>e.localeCompare(t,void 0,{numeric:!0,sensitivity:`base`}),a=e.map(e=>({document:e,title:b(e).title,type:S(e)}));return a.sort((e,n)=>((t===`type`?i(e.type,n.type):0)||i(e.title,n.title)||e.document.id-n.document.id)*r),a.map(({document:e})=>e)}async function w(e,t){let n=[],r=new Set,i,a=0,o=500;for(;i=await t({limit:o,offset:a,page:void 0}),a===0&&i.payload.length&&i.payload.length<o&&(i.totalCount==null||i.payload.length<i.totalCount)&&(o=i.payload.length,i=await t({limit:o,offset:a,page:void 0})),!(!i.payload.length&&(i.totalCount==null||a>=i.totalCount));){let e=0;for(let t of i.payload)r.has(t.id)||(r.add(t.id),n.push(t),e++);if(i.payload.length&&!e)throw Error(`Document pagination did not advance`);if(a+=o,i.totalCount!=null&&a>=i.totalCount)break}let s=C(n,e.sortBy,e.order),c=e.limit??50,l=Math.max(0,e.offset??((e.page??1)-1)*(c||100)),u=c===0?s:s.slice(l,l+c);return{...i,payload:u,count:u.length,totalCount:s.length}}var T=e(n(),1),Ee=r(),E=t();function De(e){return new Promise((t,n)=>{let r=document.createElement(`div`);document.body.appendChild(r);let i=(0,Ee.createRoot)(r),d=e=>{i.unmount(),r.remove(),e?t(e):n(Error(`Workspace start cancelled`))};function f(){let[t,n]=(0,T.useState)(``);return(0,E.jsx)(u,{open:!0,onOpenChange:e=>{e||d()},children:(0,E.jsxs)(c,{children:[(0,E.jsxs)(l,{children:[(0,E.jsx)(s,{children:`Start protected workspace`}),(0,E.jsx)(a,{children:e===`workspace`?`Enter the workspace PIN/password or recovery key to start.`:`Unlock integrations, or start with authenticated integrations unavailable.`})]}),(0,E.jsxs)(`form`,{className:`space-y-4`,onSubmit:e=>{e.preventDefault(),d({passphrase:t})},children:[(0,E.jsxs)(`label`,{className:`space-y-2 block text-sm`,children:[`PIN/password or recovery key`,(0,E.jsx)(o,{autoFocus:!0,type:`password`,autoComplete:`current-password`,value:t,onChange:e=>n(e.target.value)})]}),(0,E.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,E.jsx)(p,{type:`submit`,disabled:!t,children:`Unlock and start`}),e===`secrets`&&(0,E.jsx)(p,{type:`button`,variant:`outline`,onClick:()=>d({withoutSecrets:!0}),children:`Start without integrations`}),(0,E.jsx)(p,{type:`button`,variant:`ghost`,onClick:()=>d(),children:`Cancel`})]})]})]})})}i.render((0,E.jsx)(f,{}))})}var Oe={gh:`GitHub`,slack:`Slack`,gcal:`Google Calendar`,caldav:`CalDAV`,msteams:`Microsoft Teams`};function ke(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=Oe[r];if(i)return{scheme:r,label:i,url:e}}return null}var D=new Map,O=new Set;function k(){for(let e of O)e()}function Ae(e){D.set(e,(D.get(e)||0)+1),k()}function je(e){let t=(D.get(e)||0)-1;t>0?D.set(e,t):D.delete(e),k()}function Me(e){return O.add(e),()=>{O.delete(e)}}function Ne(e){let t=(0,T.useCallback)(()=>e!=null&&D.has(e),[e]);return(0,T.useSyncExternalStore)(Me,t,()=>!1)}function Pe(e){let t=Ne(e.id),n=ke(e),r=t&&n!=null;return{mirror:n,replicating:r,label:r?`Replicating to ${n.label}…`:``}}var A=`context`,j=`data/schema/identity`,Fe=e=>e===`directory`||e===`backends`?`directory`:`context`;function Ie(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 M=new Map,N=new Map;function P(e,t=`/`,n=A,r=`context`){e.append(`treeNameOrTreeId`,n),e.append(`treeType`,r),t&&e.append(`context`,t)}var F=[`includes`,`references`,`derived-from`,`mentions`,`replies-to`,`depicts`,`authored-by`,`member-of`];function I(e,t=[]){t.filter(Boolean).forEach(t=>e.append(`allOf`,t))}function Le(e,t=[]){t.filter(Boolean).forEach(t=>e.append(`anyOf`,t))}function Re(e,t=[]){t.filter(Boolean).forEach(t=>e.append(`noneOf`,t))}function ze(e,t=[]){t.filter(Boolean).forEach(t=>e.append(`filters`,t))}function Be(e,t){for(let n of t??[])e.append(`ids`,String(n))}function Ve(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 He(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 Ue(e,t=A){return`${i.workspaces}/${e}/trees/${encodeURIComponent(t)}`}function L(e,t=A){return`${e}\0${t}`}function We(e){return String(e||`/`).split(`/`).filter(Boolean).map(encodeURIComponent).join(`/`)}function R(e,t,n){let r=We(n);return`${Ue(e,t)}/path/${r}`}async function Ge(e){let t=await d.get(`${i.workspaces}/${e}`);return t&&`workspace`in t?{...t.workspace,access:t.access}:t}async function Ke(e){return d.get(`${i.workspaces}/${e}/status`)}async function qe(){try{let e=await d.get(i.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 Je(){return d.post(`${i.workspaces}/scan`)}async function Ye(e){try{return await d.post(i.workspaces,e)}catch(e){throw console.error(`Failed to create workspace:`,e),e}}var Xe={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 Ze(e){return d.get(`${i.workspaces}/import/jobs/${encodeURIComponent(e)}`)}async function z(e,t,{intervalMs:n=1500,signal:r}={}){for(;;){if(r?.aborted)throw Error(`Import tracking cancelled`);let i=await Ze(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 Qe(e,t,n,r={}){return z((await d.post(`${i.workspaces}/import`,{url:e,token:t,...r})).id,n)}async function $e(){return d.get(`${i.workspaces}/remotes`)}async function et(e,t,n){return d.post(`${i.workspaces}/remotes`,{url:e,token:t,...n?{label:n}:{}})}async function tt(e){await d.delete(`${i.workspaces}/remotes/${encodeURIComponent(e)}`)}async function nt(e,t={}){return d.post(`${i.workspaces}/${e}/export`,{stop:t.stop===!0})}async function rt(e){return d.get(`${i.workspaces}/${e}/exports`)}async function it(e){await d.delete(`${i.workspaces}/exports/${encodeURIComponent(e)}`)}async function at(e){await d.post(`${i.workspaces}/exports/ticket`);let t=`${i.workspaces}/exports/${encodeURIComponent(e)}`,n=document.createElement(`a`);n.href=t,n.download=e,document.body.appendChild(n),n.click(),n.remove()}async function ot(e,t,n,r={}){return z((await st(e,t,r)).id,n)}function st(e,t,n={}){let r=localStorage.getItem(`authToken`),a=new URLSearchParams({filename:e.name,...n}),o=`${i.workspaces}/import/upload?${a}`;return new Promise((n,i)=>{let a=new XMLHttpRequest;a.open(`POST`,o,!0),a.withCredentials=!0,r&&a.setRequestHeader(`Authorization`,`Bearer ${r}`),a.setRequestHeader(`Content-Type`,`application/octet-stream`),a.upload.onprogress=e=>{e.lengthComputable&&t&&t(e.loaded/e.total)},a.onload=()=>{let e=null;try{e=JSON.parse(a.responseText)}catch{}let t=e?.payload?.job;a.status>=200&&a.status<300&&t?n(t):i(Error(e?.message||`Import failed (HTTP ${a.status})`))},a.onerror=()=>i(Error(`Upload failed — the connection dropped`)),a.onabort=()=>i(Error(`Upload cancelled`)),a.send(e)})}async function ct(e,t,n){let r=await d.post(`${i.workspaces}/import`,{path:e,...t});return`phase`in r?z(r.id,n):r}async function lt(e,t){try{if(!t){let n=await d.get(`${i.workspaces}/${e}/status`),r=n.protection?.mode||`none`;t=n.status!==`active`&&r!==`none`?await De(r):{}}let n=await d.post(`${i.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 ut(e){try{let t=await d.post(`${i.workspaces}/${e}/stop`);return V(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 dt(e){try{return await d.delete(`${i.workspaces}/${e}`)}catch(e){throw console.error(`Failed to remove workspace:`,e),e}}async function ft(e){try{return await d.get(`${i.workspaces}/${e}/trees`)||[]}catch(t){throw console.error(`Failed to list workspace trees ${e}:`,t),t}}async function B(e,t){try{return await d.get(`${i.workspaces}/${e}/trees/${encodeURIComponent(t)}`)}catch(n){throw console.error(`Failed to get workspace tree ${e}/${t}:`,n),n}}function V(e,t){if(!e){M.clear(),N.clear();return}if(!t){let t=`${e}\0`;for(let e of M.keys())e.startsWith(t)&&M.delete(e);for(let e of N.keys())e.startsWith(t)&&N.delete(e);return}let n=L(e,t);M.delete(n),N.delete(n)}var pt=`.trash`;function mt(e){return e?Array.isArray(e.children)?{...e,children:e.children.filter(e=>e?.name!==pt)}:e:null}async function ht(e,t,n={}){let r=L(e,t);if(!n.force&&M.has(r))return M.get(r);if(!n.force&&N.has(r))return N.get(r);let i=B(e,t).then(e=>{let t=mt(e);return N.get(r)===i&&M.set(r,t),t}).finally(()=>{N.get(r)===i&&N.delete(r)});return N.set(r,i),i}function H(e,t,n){let r=new URLSearchParams;Ve(r,n.rel);let i=new URLSearchParams;return He(i,n.queries,n.q),{treeNameOrTreeId:n.treeName||`context`,...n.treeType?{treeType:n.treeType}:{},context:e||`/`,scope:n.scope??`path`,allOf:t.filter(Boolean),anyOf:(n.anyOf??[]).filter(Boolean),noneOf:(n.noneOf??[]).filter(Boolean),filters:(n.filters??[]).filter(Boolean),rel:r.getAll(`rel`),q:i.getAll(`q`),...n.ids?.length?{ids:[...n.ids]}:{},applyCanvasSpec:n.applyCanvasSpec!==!1,...n.layerId&&n.scope!==`workspace`?{layerId:n.layerId}:{}}}async function U(e,t=`/`,n=[],r={}){if(x(r.sortBy))return w(r,i=>U(e,t,n,{...r,...i,sortBy:void 0,order:`asc`}));try{let a=new URLSearchParams,o=H(t,n,r);for(let[e,t]of Object.entries(o))Array.isArray(t)?t.forEach(t=>a.append(e,String(t))):a.append(e,String(t));r.limit!==void 0&&a.append(`limit`,r.limit.toString()),r.offset!==void 0&&a.append(`offset`,r.offset.toString()),r.page!==void 0&&a.append(`page`,r.page.toString()),r.debug&&a.append(`debug`,`true`),r.debug&&r.debugLimit&&a.append(`debugLimit`,String(r.debugLimit)),r.sortBy&&a.append(`sortBy`,r.sortBy),r.order&&a.append(`order`,r.order);let s=a.toString(),c=`${i.workspaces}/${e}/documents${s?`?`+s:``}`;return await d.getEnvelope(c)}catch(t){throw console.error(`Failed to get workspace documents ${e}:`,t),t}}async function gt(e,t,n=A,r={}){let i=n===`directory`?`directory`:`context`;return U(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 W(e,t,n,r={}){if(x(r.sortBy))return w(r,i=>W(e,t,n,{...r,...i,sortBy:void 0,order:`asc`}));try{let a=new URLSearchParams;r.limit!==void 0&&a.append(`limit`,r.limit.toString()),r.offset!==void 0&&a.append(`offset`,r.offset.toString()),r.page!==void 0&&a.append(`page`,r.page.toString()),He(a,r.queries,r.q),I(a,r.allOf),Le(a,r.anyOf),Re(a,r.noneOf),ze(a,r.filters),Be(a,r.ids),r.sortBy&&a.append(`sortBy`,r.sortBy),r.order&&a.append(`order`,r.order);let o=a.toString(),s=`${i.workspaces}/${e}/trees/${encodeURIComponent(t)}/layers/${encodeURIComponent(n)}/documents${o?`?`+o:``}`;return await d.getEnvelope(s)}catch(r){throw console.error(`Failed to get workspace layer documents ${e}/${t}/${n}:`,r),r}}async function _t(e,t){try{return await d.patch(`${i.workspaces}/${e}`,t)}catch(e){throw console.error(`Failed to update workspace:`,e),e}}async function vt(e,t,n=!0,r=A,i=`context`){try{return await d.put(R(e,r,t),{type:i,autoCreateLayers:n}),!0}catch(e){throw console.error(`Failed to insert workspace path ${t}:`,e),e}}async function yt(e,t,n=A,r={}){try{return await d.put(R(e,n,t),{type:`canvas`,...r}),!0}catch(e){throw console.error(`Failed to create workspace canvas ${t}:`,e),e}}async function bt(e,t,n,r,i){let a={metadata:r};return i&&(a.querySpec=i),await d.patch(R(e,n,t),a),!0}async function xt(e,t,n=A){return await d.post(`${f}/pub/c`,{workspaceId:e,path:t,treeName:n})}async function St(e,t,n=A){let r=new URLSearchParams({workspaceId:e,path:t,treeName:n});return await d.get(`${f}/pub/c?${r.toString()}`)}async function Ct(e){return await d.delete(`${f}/pub/c/${encodeURIComponent(e)}`),!0}async function wt(e){let t=await d.get(`${i.workspaces}/${e}/shares`);return{publicCanvasShares:t?.publicCanvasShares||[],emailShares:t?.emailShares||[]}}async function Tt(e,t){return await d.delete(`${i.workspaces}/${e}/shares/public-canvas/${encodeURIComponent(t)}`),!0}async function Et(e,t,n,r=A){try{return await d.patch(R(e,r,t),n),!0}catch(e){throw console.error(`Failed to update workspace path ${t}:`,e),e}}async function Dt(e,t,n=!1,r=A,i=!1,a=!1){try{let o=new URLSearchParams({recursive:n.toString()});return i&&o.set(`purge`,`true`),a&&o.set(`destroy`,`true`),await d.delete(`${R(e,r,t)}?${o.toString()}`),!0}catch(e){throw console.error(`Failed to remove workspace path ${t}:`,e),e}}async function Ot(e,t,n,r=!1,i=A,a,o={}){try{return await d.patch(R(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 kt(e,t,n,r=!1,i=A,a){try{return await d.post(R(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 At(e,t,n,r=A,a=`context`){try{let o=K(Array.isArray(n)?n:[n]),s=performance.now();return await d.post(`${i.workspaces}/${e}/documents`,{documentIds:o,treeNameOrTreeId:r,treeType:a,context:t}),console.info(`[paste] linked ${o.length} document(s) → ${r}:${t} in ${Math.round(performance.now()-s)} ms`),!0}catch(e){throw console.error(`Failed to paste documents to workspace path ${t}:`,e),e}}async function jt(e,t,n,r=A,a=`context`){try{let o=Array.isArray(n)?n:[n],s=await d.post(`${i.workspaces}/${e}/documents`,{documents:o,treeNameOrTreeId:r,treeType:a,context:t});return Array.isArray(s)?s:[]}catch(e){throw console.error(`Failed to import documents to workspace path ${t}:`,e),e}}var G=e=>`${i.workspaces}/${e}/pins`,Mt=(e,t)=>`${e}\0${t}`;async function Nt(e){let t=await d.get(G(e));return Array.isArray(t)?t:[]}async function Pt(e,t,n=A){return d.post(G(e),{path:t,tree:n})}async function Ft(e,t){await d.delete(`${G(e)}/${encodeURIComponent(t)}`)}async function It(e,t){let n=await d.patch(`${G(e)}/order`,{order:t});return Array.isArray(n)?n:[]}async function Lt(e,t=A){return await d.get(`${i.workspaces}/${e}/trees/${encodeURIComponent(t)}/layers`)||[]}async function Rt(e,t,n,r=A){return await d.patch(`${i.workspaces}/${e}/trees/${encodeURIComponent(r)}/layers/${t}`,{name:n})}async function zt(e,t,n,r=A){return await d.post(`${i.workspaces}/${e}/trees/${encodeURIComponent(r)}/layers/${t}/lock`,{lockBy:n}),!0}async function Bt(e,t,n,r=A){return await d.post(`${i.workspaces}/${e}/trees/${encodeURIComponent(r)}/layers/${t}/unlock`,{lockBy:n}),!0}async function Vt(e,t,n=A){return await d.delete(`${i.workspaces}/${e}/trees/${encodeURIComponent(n)}/layers/${t}`),!0}async function Ht(e,t,n,r=A){return await d.post(`${i.workspaces}/${e}/trees/${encodeURIComponent(r)}/layers/merge`,{layerId:t,targetLayers:n})}async function Ut(e,t,n=A){return(await d.post(`${i.workspaces}/${e}/trees/${encodeURIComponent(n)}/paths/merge-down`,{path:t}))?.data??null}async function Wt(e,t,n=A){return(await d.post(`${i.workspaces}/${e}/trees/${encodeURIComponent(n)}/paths/subtract-down`,{path:t}))?.data??null}async function Gt(e,t,n,r=A){return await d.post(`${i.workspaces}/${e}/trees/${encodeURIComponent(r)}/layers/subtract`,{layerId:t,targetLayers:n})}function K(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 Kt(e,t,n=`/`,r=[],a=A,o=`context`,s={}){let c=new URLSearchParams;P(c,n,a,o),I(c,r),s.trashIfOrphaned&&c.append(`trashIfOrphaned`,`true`);let l=K(t);return await d.delete(`${i.workspaces}/${e}/documents/remove?${c.toString()}`,{headers:{"Content-Type":`application/json`},body:JSON.stringify(l)}),!0}async function qt(e,t,n=`/`,r=[],a=A,o=`context`){let s=new URLSearchParams;P(s,n,a,o),I(s,r);let c=K(t);return await d.delete(`${i.workspaces}/${e}/documents?${s.toString()}`,{headers:{"Content-Type":`application/json`},body:JSON.stringify(c)}),!0}async function Jt(e,t){Ae(t.id);try{await d.put(`${i.workspaces}/${e}/documents`,{documents:[t]})}finally{je(t.id)}return!0}async function Yt(e,t,n={}){let r={documentIds:K(t)};return n.urls&&(r.urls=n.urls),n.keepDocument&&(r.keepDocument=!0),await d.delete(`${i.workspaces}/${e}/documents/destroy`,{headers:{"Content-Type":`application/json`},body:JSON.stringify(r)})}async function Xt(e,t,n){let r=n.folder?.trim().replace(/^\/+|\/+$/g,``),a=n.filename?.trim();return await d.post(`${i.workspaces}/${e}/documents/transfer`,{documentIds:K(t),to:n.to,mode:n.mode??`copy`,...n.deleteFrom?{deleteFrom:n.deleteFrom}:{},...n.keepDocument?{keepDocument:!0}:{},...r?{folder:r}:{},...a?{filename:a}:{},...n.onConflict?{onConflict:n.onConflict}:{}})}function Zt(e){return typeof e.capabilities?.paths==`boolean`?e.capabilities.paths:e.kind===`storage`&&e.driver!==`cacache`}async function Qt(e,t){return await d.get(`${i.workspaces}/${encodeURIComponent(e)}/documents/${t}`)}async function $t(e,t,n){return await d.get(`${i.workspaces}/${encodeURIComponent(e)}/documents/by-hash/${encodeURIComponent(t)}/${encodeURIComponent(n)}`)}async function en(e,t){return await d.get(`${i.workspaces}/${e}/documents/${t}/locations`)||[]}async function tn(e,t,n){let r=n?`?tree=${encodeURIComponent(n)}`:``;return(await d.get(`${i.workspaces}/${e}/documents/${t}/memberships${r}`))?.memberships||[]}async function nn(e,t,n=500){return(await U(e,`/`,[t?`${j}/${t}`:j],{scope:`workspace`,limit:n})).payload||[]}async function rn(e){try{let t=await d.get(`${i.workspaces}/${e}/documents/relations/predicates`);return t?.predicates?.length?t.predicates:[...F]}catch{return[...F]}}async function an(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 a=r.size?`?${r}`:``;return await d.get(`${i.workspaces}/${e}/documents/${t}/relations${a}`)??{documentId:Number(t),predicates:[...F],outgoing:[],incoming:[]}}async function on(e,t,n,r,a=`out`){return await d.post(`${i.workspaces}/${e}/documents/${t}/relations`,{p:n,to:Array.isArray(r)?K(r):r,dir:a}),!0}async function sn(e,t,n,r,a=`out`){return await d.delete(`${i.workspaces}/${e}/documents/${t}/relations`,{headers:{"Content-Type":`application/json`},body:JSON.stringify({p:n,to:r,dir:a})}),!0}function q(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),n.format&&r.set(`format`,n.format);let a=r.toString();return`${i.workspaces}/${e}/documents/${t}/content${a?`?${a}`:``}`}async function cn(e,t,n=256,r){let a=localStorage.getItem(`authToken`),o=r?`&v=${encodeURIComponent(r)}`:``,s=await fetch(`${i.workspaces}/${e}/documents/${t}/thumbnail?size=${n}${o}`,{headers:a?{Authorization:`Bearer ${a}`}:{}});if(!s.ok)throw Error(`HTTP ${s.status}`);let c=s.headers.get(`content-type`)||`image/webp`;return{blob:await s.blob(),mime:c}}async function ln(e,t,n={}){let r=localStorage.getItem(`authToken`),i=await fetch(q(e,t,n),{signal:n.signal,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 un(e,t,n={}){return q(e,t,n)}async function dn(e,t){let n=localStorage.getItem(`authToken`);return(await fetch(`${i.workspaces}/${e}/documents/${t}/content-ticket`,{method:`POST`,headers:n?{Authorization:`Bearer ${n}`}:{},credentials:`include`})).ok}async function fn(e,t,n,r={}){let i=localStorage.getItem(`authToken`),a=await fetch(q(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 pn(e,t,n){return d.post(`${i.workspaces}/${e}/documents/purge`,{selection:t,expectedCount:n})}async function mn(e){try{return await d.get(`${i.workspaces}/${e}/services`)}catch(e){throw console.error(`Failed to get workspace services status:`,e),e}}async function hn(e,t){try{return await d.post(`${i.workspaces}/${e}/services/${t}/enable`)}catch(e){throw console.error(`Failed to enable ${t} service:`,e),e}}async function gn(e,t){try{return await d.post(`${i.workspaces}/${e}/services/${t}/disable`)}catch(e){throw console.error(`Failed to disable ${t} service:`,e),e}}var J=e=>`${i.workspaces}/${e}/backends`,Y=(e,t,n)=>`${J(e)}/${encodeURIComponent(t)}/${encodeURIComponent(n)}`;async function _n(e,t){let n=t?`${J(e)}/${encodeURIComponent(t)}`:J(e);return await d.get(n)||[]}async function vn(e,t,n){return await d.get(Y(e,t,n))}async function yn(e,t,n){return await d.get(`${Y(e,t,n)}/usage`)}async function bn(e){return await d.delete(`${i.workspaces}/${e}/thumbnails`)}async function xn(e){return await d.get(`${i.workspaces}/${e}/usage`)}function Sn(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 Cn(e,t,n){return await d.post(`${J(e)}/${encodeURIComponent(t)}`,n)}async function wn(e,t,n,r){return await d.patch(Y(e,t,n),r)}async function Tn(e,t,n){return await d.delete(Y(e,t,n))}async function En(e,t,n){return await d.post(`${Y(e,t,n)}/sync`)}async function Dn(e,t,n){return await d.post(`${Y(e,t,n)}/sync/cancel`)}async function On(e,t,n){return await d.post(`${Y(e,t,n)}/test`)}async function kn(e,t,n){return await d.get(`${Y(e,t,n)}/containers`)||[]}async function An(e,t,n,r,i){return await d.post(`${Y(e,t,n)}/containers/${encodeURIComponent(r)}/documents`,i)}async function jn(e,t,n,r){return await d.post(`${Y(e,t,n)}/containers/${encodeURIComponent(r)}/sync`)}function Mn(e){let t=String(e||``).split(`/`).filter(Boolean);return t[0]!==`imap`||t.length<3||t[t.length-1]===`attachments`?null:{address:t[1]}}async function Nn(e,t,n,r){return d.post(`${Y(e,`imap`,t)}/messages/move`,{documentIds:n,targetPath:r})}async function Pn(e,t,n){return await d.get(`${Y(e,t,n)}/containers?available=1`)||[]}async function Fn(e,t,n,r){return await d.post(`${Y(e,t,n)}/containers`,{folders:r})}async function In(e,t,n,r){return await d.delete(`${Y(e,t,n)}/containers/${encodeURIComponent(r)}`)}async function Ln(e,t,n,r,i){return await d.patch(`${Y(e,t,n)}/containers/${encodeURIComponent(r)}`,{name:i})}function X(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 Rn(e,t){let n=X(e,t);if(n)return{driver:n.backend.driver,address:n.backend.address,key:n.key};let r=Z(e);return r?{...r,driver:t?.find(e=>e.address===r.address)?.driver||r.driver}:null}function Z(e,t){let n=X(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[1]===`git`?null: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}function zn(e,t){let n=X(e,t);if(n){let{backend:e,key:t}=n;return!t||![`file`,`gdrive`].includes(e.driver)||!e.enabled||!e.capabilities.mutableContainers||e.config?.readOnly===!0?null:{driver:e.driver,address:e.address,key:t}}if(t)return null;let r=String(e||``).split(`/`).filter(Boolean);if(r[0]===`gdrive`&&r.length>2)return{driver:`gdrive`,address:r[1],key:r.slice(2).join(`/`)};let i=Z(e);return i?.key?i:null}async function Bn(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 d.getEnvelope(`${Y(e,t,n)}/documents${a?`?${a}`:``}`)}async function Vn(e,t,n){return await d.post(`${J(e)}/${encodeURIComponent(t)}/discover`,n)||[]}function Hn(e,t){let n=X(e,t);if(n)return{driver:n.backend.driver,address:n.backend.address};let r=String(e||``).split(`/`).filter(Boolean);return r.length<2||r[0]===`workspace`&&r[1]===`git`?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 Un=[`internal/`,`context/`,`vfs/`];async function Wn(e){try{return(await d.get(`${i.workspaces}/${encodeURIComponent(e)}/bitmaps`)||[]).map(e=>typeof e==`string`?e:e.key??String(e)).filter(e=>e&&!Un.some(t=>e.startsWith(t)))}catch{return[]}}async function Gn(e){return(await Wn(e)).filter(e=>e.startsWith(`tag/`)).map(e=>e.slice(4)).filter(Boolean).sort()}async function Kn(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 d.delete(`${i.workspaces}/${encodeURIComponent(e)}/bitmaps/${n.split(`/`).map(encodeURIComponent).join(`/`)}`),!0}async function qn(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 d.delete(`${i.workspaces}/${encodeURIComponent(e)}/datasets/${r.split(`/`).map(encodeURIComponent).join(`/`)}?dropDocuments=${n}`)}function Q(e){return`${i.workspaces}/${encodeURIComponent(e)}/timelines`}async function Jn(e){try{return await d.get(Q(e))||[]}catch{return[]}}async function Yn(e){try{return await d.get(`${Q(e)}?verbose=true`)||[]}catch{return[]}}async function Xn(e,t){return await d.post(Q(e),{name:t})}async function Zn(e,t){return await d.delete(`${Q(e)}/${encodeURIComponent(t)}`),!0}async function Qn(e,t){return(await d.post(`${Q(e)}/histogram`,t))?.buckets??[]}async function $n(e,t){let n=t?`?workspaceId=${encodeURIComponent(t)}`:``;return await d.post(`${i.admin.inferd}/${e?`pause`:`resume`}${n}`)}async function er(e){return await d.get(`${i.workspaces}/${e}/db/stats`)}async function tr(e,t){return await d.put(`${i.workspaces}/${e}/db/tuning`,t)}async function nr(e){let t=await d.get(`${i.workspaces}/${e}/trash`);return Array.isArray(t)?t:[]}async function rr(e,t){return await d.post(`${i.workspaces}/${e}/trash/restore`,{documentIds:K(t)})}async function ir(e,t){return await d.delete(`${i.workspaces}/${e}/trash`,t?.length?{headers:{"Content-Type":`application/json`},body:JSON.stringify({documentIds:K(t)})}:{})}var ar=(e,t,n)=>`${i.workspaces}/${e}/members/${encodeURIComponent(`${t}:${n}`)}`;async function or(e){return d.get(`${i.workspaces}/${e}/members`)}async function sr(e,t,n,r){return d.post(`${i.workspaces}/${e}/members`,{...t,permissions:n,...r?{description:r}:{}})}async function cr(e,t,n,r){return d.put(ar(e,t,n),{permissions:r})}async function lr(e,t,n){await d.delete(ar(e,t,n))}async function ur(e,t,n){return d.post(`${i.workspaces}/${encodeURIComponent(e)}/documents/copy-to-workspace`,{documentId:t,...n})}async function $(e,t,n){let r=await d.postEnvelope(`${i.workspaces}/${encodeURIComponent(e)}/db/${t}`,n??{});return{message:r.message??``,payload:r.payload}}function dr(e){return $(e,`reindex/timelines`)}function fr(e){return $(e,`reindex/mime`)}function pr(e,t=!1){return $(e,`reindex/search${t?`?rebuild=true`:``}`)}function mr(e,t){return $(e,`optimize`,t?{space:t}:{})}async function hr(e,t){return d.post(`${i.workspaces}/${e}/documents/${t}/download`)}export{rn as $,Kt as $t,Vt as A,S as An,wt as At,ln as B,ae as Bn,Ot as Bt,Ct as C,wn as Cn,nr as Ct,it as D,Et as Dn,Lt as Dt,qt as E,cr as En,nn as Et,hr as F,b as Fn,qe as Ft,vn as G,ne as Gn,fr as Gt,Qn as H,m as Hn,At as Ht,at as I,Te as In,zt as It,gt as J,h as Jn,Tn as Jt,yn as K,oe as Kn,pr as Kt,ir as L,y as Ln,Ut as Lt,Vn as M,x as Mn,Jn as Mt,un as N,C as Nn,Yn as Nt,Zn as O,Mt as On,or as Ot,fn as P,we as Pn,ft as Pt,St as Q,dt as Qt,hn as R,be as Rn,Ht as Rt,Xn as S,Ft as Sn,$e as St,qn as T,Jt as Tn,rt as Tt,Ie as U,te as Un,Pt as Ut,cn as V,re as Vn,mr as Vt,Sn as W,ee as Wn,pn as Wt,tn as X,sn as Xt,en as Y,de as Yn,In as Yt,an as Z,tt as Zt,An as _,jn as _n,V as _t,Fn as a,rr as an,U as at,Ye as b,Fe as bn,Pn as bt,Z as c,bt as cn,Ke as ct,Rn as d,tr as dn,Mn as dt,Dt as en,Ge as et,H as f,lt as fn,jt as ft,kt as g,En as gn,vt as gt,ur as h,Gt as hn,Qe as ht,Cn as i,dn as in,$t as it,gn as j,w as jn,Gn as jt,Yt as k,Pe as kn,Nt as kt,Zt as l,Je as ln,B as lt,bn as m,Wt as mn,ct as mt,Xe as n,Rt as nn,xn as nt,et as o,lr as on,W as ot,Dn as p,ut as pn,ot as pt,ht as q,ue as qn,dr as qt,F as r,It as rn,Qt as rt,Hn as s,Tt as sn,mn as st,A as t,Ln as tn,er as tt,zn as u,$n as un,sr as ut,on as v,On as vn,kn as vt,Kn as w,_t as wn,Wn as wt,yt as x,Bt as xn,_n as xt,xt as y,Xt as yn,Bn as yt,nt as z,ie as zn,Nn as zt};