agentic-drive 0.11.1 → 0.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -0
- package/README.md +91 -2
- package/dist/account.d.ts +1 -1
- package/dist/account.js +2 -2
- package/dist/{chunk-W27ZQYPT.js → chunk-6TPC3BUW.js} +1 -1
- package/dist/{chunk-DB4F5EWD.js → chunk-FTIWCBCI.js} +98 -9
- package/dist/{chunk-HJXRMOUY.js → chunk-NPJG2MYP.js} +1 -1
- package/dist/{chunk-ECVUDAHL.js → chunk-OHDNQ23Q.js} +1 -1
- package/dist/{chunk-SEHT5Q5L.js → chunk-TGOARFYZ.js} +1 -0
- package/dist/cli.js +3 -3
- package/dist/client.d.ts +2 -2
- package/dist/client.js +1 -1
- package/dist/{drive-CS1CLfqo.d.ts → drive-BncyFxBL.d.ts} +18 -4
- package/dist/embed.d.ts +31 -5
- package/dist/embed.js +93 -33
- package/dist/index.d.ts +10 -3
- package/dist/index.js +4 -4
- package/dist/mcp.d.ts +1 -1
- package/dist/mcp.js +3 -3
- package/dist/worker.d.ts +2 -2
- package/dist/worker.js +2 -2
- package/llms.txt +25 -3
- package/package.json +2 -2
- package/ui-dist/assets/index-CSHYaonS.js +49 -0
- package/ui-dist/index.html +1 -1
- package/ui-dist/assets/index-DqkvcDrx.js +0 -49
package/dist/embed.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
DriveApiError,
|
|
3
3
|
createClient
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-TGOARFYZ.js";
|
|
5
5
|
|
|
6
6
|
// ui/embed.tsx
|
|
7
|
-
import { useEffect as useEffect3, useState as useState3 } from "react";
|
|
7
|
+
import { useEffect as useEffect3, useRef as useRef3, useState as useState3 } from "react";
|
|
8
8
|
import { createRoot } from "react-dom/client";
|
|
9
|
-
import { FolderIcon as FolderIcon3, SidebarNav as SidebarNav2, ToastProvider, TooltipProvider } from "agentic-design/react";
|
|
9
|
+
import { FolderIcon as FolderIcon3, SidebarNav as SidebarNav2, ToastProvider, TooltipProvider, useToast as useToast2 } from "agentic-design/react";
|
|
10
10
|
|
|
11
11
|
// ui/App.tsx
|
|
12
12
|
import { useEffect as useEffect2, useMemo, useRef as useRef2, useState as useState2 } from "react";
|
|
@@ -183,11 +183,9 @@ function useLoad(fn) {
|
|
|
183
183
|
const [state, set] = useState2({ status: "loading" });
|
|
184
184
|
const [tick, setTick] = useState2(0);
|
|
185
185
|
useEffect2(() => {
|
|
186
|
-
|
|
187
|
-
fn().then((data) =>
|
|
188
|
-
return () =>
|
|
189
|
-
live = false;
|
|
190
|
-
};
|
|
186
|
+
const pending = new AbortController();
|
|
187
|
+
fn(pending.signal).then((data) => !pending.signal.aborted && set({ status: "ok", data }), (e) => !pending.signal.aborted && set({ status: "error", error: errorText(e) }));
|
|
188
|
+
return () => pending.abort();
|
|
191
189
|
}, [tick]);
|
|
192
190
|
return [state, () => setTick((n) => n + 1)];
|
|
193
191
|
}
|
|
@@ -200,18 +198,14 @@ function Status({ state, retry, children }) {
|
|
|
200
198
|
return /* @__PURE__ */ jsx3(Fragment, { children });
|
|
201
199
|
}
|
|
202
200
|
var routeParts = (hash) => hash.replace(/^#\/?/, "").split("/");
|
|
203
|
-
|
|
204
|
-
history.replaceState(null, "", `#/${loc}`);
|
|
205
|
-
dispatchEvent(new HashChangeEvent("hashchange"));
|
|
206
|
-
};
|
|
207
|
-
function Routes({ hash, client, origin, go, onOpenItem }) {
|
|
201
|
+
function Routes({ hash, client, origin, go, onOpenItem, folderLoc }) {
|
|
208
202
|
const parts = routeParts(hash);
|
|
209
203
|
if (parts[0] === "trash") return /* @__PURE__ */ jsx3(TrashView, { client }, "trash");
|
|
210
204
|
if (parts[0] === "a" && parts[1]) return /* @__PURE__ */ jsx3(ActivityView, { client, id: parts[1] }, hash);
|
|
211
205
|
if (parts[0] === "f" && parts[1]) return /* @__PURE__ */ jsx3(Download, { client, id: parts[1], origin, go }, hash);
|
|
212
|
-
return /* @__PURE__ */ jsx3(Browser, { client, loc: parts[0] || "/", origin, onOpenItem }, hash);
|
|
206
|
+
return /* @__PURE__ */ jsx3(Browser, { client, loc: folderLoc ?? (parts[0] || "/"), go, origin, onOpenItem }, hash);
|
|
213
207
|
}
|
|
214
|
-
function Browser({ client, loc, origin, onOpenItem }) {
|
|
208
|
+
function Browser({ client, loc, origin, onOpenItem, go }) {
|
|
215
209
|
const openItem = (e, item) => {
|
|
216
210
|
if (e.defaultPrevented || e.button !== 0 || e.metaKey || e.ctrlKey || e.shiftKey || e.altKey || item.kind !== "ref") return;
|
|
217
211
|
if (onOpenItem?.(item) === true) e.preventDefault();
|
|
@@ -299,7 +293,7 @@ function Browser({ client, loc, origin, onOpenItem }) {
|
|
|
299
293
|
/* @__PURE__ */ jsx3(Menu, { align: "end", trigger: /* @__PURE__ */ jsx3(IconButton, { label: `Actions for ${item.name}`, icon: /* @__PURE__ */ jsx3(MoreIcon, {}), variant: "ghost" }), items: [
|
|
300
294
|
{ label: "Rename", onSelect: () => setDlg({ kind: "rename", item }) },
|
|
301
295
|
{ label: "Move", onSelect: () => setDlg({ kind: "move", item }) },
|
|
302
|
-
{ label: "Activity", onSelect: () =>
|
|
296
|
+
{ label: "Activity", onSelect: () => go(`a/${item.id}`) },
|
|
303
297
|
{ label: "Share", onSelect: () => setDlg({ kind: "share", item }) },
|
|
304
298
|
"separator",
|
|
305
299
|
{ label: "Move to trash", danger: true, onSelect: () => void act(() => client.trash(item.id), `Moved ${item.name} to trash`) }
|
|
@@ -508,16 +502,23 @@ function ActivityView({ client, id }) {
|
|
|
508
502
|
/* @__PURE__ */ jsx3(ActivityList, { entries: state.data.entries })
|
|
509
503
|
] }) }) });
|
|
510
504
|
}
|
|
505
|
+
async function downloadItem(client, id, origin, signal) {
|
|
506
|
+
const item = await client.stat(id, { signal });
|
|
507
|
+
signal.throwIfAborted();
|
|
508
|
+
const { url } = await client.url(id, void 0, { signal });
|
|
509
|
+
signal.throwIfAborted();
|
|
510
|
+
if (new URL(url, origin).origin !== origin) throw new Error("The download link points to another site.");
|
|
511
|
+
const a = document.createElement("a");
|
|
512
|
+
a.href = url;
|
|
513
|
+
a.download = item.name;
|
|
514
|
+
a.click();
|
|
515
|
+
return item;
|
|
516
|
+
}
|
|
511
517
|
function Download({ client, id, origin, go }) {
|
|
512
|
-
const [state, retry] = useLoad(async () => {
|
|
513
|
-
const item = await client
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
const a = document.createElement("a");
|
|
517
|
-
a.href = url;
|
|
518
|
-
a.download = item.name;
|
|
519
|
-
a.click();
|
|
520
|
-
go(item.parentId);
|
|
518
|
+
const [state, retry] = useLoad(async (signal) => {
|
|
519
|
+
const item = await downloadItem(client, id, origin, signal);
|
|
520
|
+
signal.throwIfAborted();
|
|
521
|
+
go(item.parentId, { replace: true });
|
|
521
522
|
return item;
|
|
522
523
|
});
|
|
523
524
|
return /* @__PURE__ */ jsx3(Status, { state, retry, children: null });
|
|
@@ -525,6 +526,22 @@ function Download({ client, id, origin, go }) {
|
|
|
525
526
|
|
|
526
527
|
// ui/embed.tsx
|
|
527
528
|
import { jsx as jsx4, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
529
|
+
var ROOT = { kind: "folder", path: "/" };
|
|
530
|
+
function locationHash(location2) {
|
|
531
|
+
if (location2.kind === "folder" && typeof location2.path === "string" && location2.path.length)
|
|
532
|
+
return `#/folder/${encodeURIComponent(location2.path)}`;
|
|
533
|
+
if (location2.kind === "trash") return "#/trash";
|
|
534
|
+
if ((location2.kind === "activity" || location2.kind === "file") && typeof location2.itemId === "string" && location2.itemId.length)
|
|
535
|
+
return `#/${location2.kind === "activity" ? "a" : "f"}/${encodeURIComponent(location2.itemId)}`;
|
|
536
|
+
throw new TypeError("Invalid drive location");
|
|
537
|
+
}
|
|
538
|
+
function fromHash(hash) {
|
|
539
|
+
const path = hash.slice(2);
|
|
540
|
+
if (path === "trash") return { kind: "trash" };
|
|
541
|
+
if (path.startsWith("a/")) return { kind: "activity", itemId: path.slice(2) };
|
|
542
|
+
if (path.startsWith("f/")) return { kind: "file", itemId: path.slice(2) };
|
|
543
|
+
return { kind: "folder", path: path || "/" };
|
|
544
|
+
}
|
|
528
545
|
var PLACEHOLDER = "from-get-token";
|
|
529
546
|
function makeClient({ baseUrl, getToken }) {
|
|
530
547
|
if (typeof getToken !== "function") throw new TypeError("getToken must be a function");
|
|
@@ -543,24 +560,48 @@ function makeClient({ baseUrl, getToken }) {
|
|
|
543
560
|
return { client: createClient({ baseUrl, token: PLACEHOLDER, fetch: fetchWithToken }), close: () => closed.abort() };
|
|
544
561
|
}
|
|
545
562
|
var clients = 0;
|
|
546
|
-
function DriveBrowser({ baseUrl, getToken, onOpenItem }) {
|
|
563
|
+
function DriveBrowser({ baseUrl, getToken, onOpenItem, location: location2, onNavigate }) {
|
|
564
|
+
const [local, setLocal] = useState3(ROOT);
|
|
565
|
+
const active = location2 ?? local;
|
|
566
|
+
locationHash(active);
|
|
567
|
+
const navigate = (next, options = { replace: false }) => {
|
|
568
|
+
if (location2 === void 0) setLocal(next);
|
|
569
|
+
onNavigate?.(next, options);
|
|
570
|
+
};
|
|
547
571
|
const [made, setMade] = useState3();
|
|
548
572
|
useEffect3(() => {
|
|
549
573
|
const next = makeClient({ baseUrl, getToken });
|
|
550
574
|
setMade({ id: ++clients, client: next.client, origin: new URL(baseUrl).origin });
|
|
551
575
|
return () => next.close();
|
|
552
576
|
}, [baseUrl, getToken]);
|
|
553
|
-
return made ? /* @__PURE__ */ jsx4(DriveView, { client: made.client, origin: made.origin, onOpenItem }, made.id) : null;
|
|
577
|
+
return made ? /* @__PURE__ */ jsx4(DriveView, { client: made.client, origin: made.origin, onOpenItem, location: active, onNavigate: navigate }, made.id) : null;
|
|
554
578
|
}
|
|
555
|
-
function DriveView({ client, origin, onOpenItem }) {
|
|
556
|
-
const
|
|
557
|
-
const
|
|
579
|
+
function DriveView({ client, origin, onOpenItem, location: location2, onNavigate }) {
|
|
580
|
+
const hash = locationHash(location2);
|
|
581
|
+
const toast = useToast2();
|
|
582
|
+
const pending = useRef3(new AbortController());
|
|
583
|
+
useEffect3(() => {
|
|
584
|
+
const controller = new AbortController();
|
|
585
|
+
pending.current = controller;
|
|
586
|
+
return () => controller.abort();
|
|
587
|
+
}, [hash]);
|
|
588
|
+
const download = async (id) => {
|
|
589
|
+
const signal = pending.current.signal;
|
|
590
|
+
try {
|
|
591
|
+
await downloadItem(client, id, origin, signal);
|
|
592
|
+
} catch (e) {
|
|
593
|
+
if (!signal.aborted) toast({ title: "Could not download", description: e instanceof DriveApiError ? `${e.message} (${e.code})` : e instanceof Error ? e.message : "Download failed", tone: "danger" });
|
|
594
|
+
}
|
|
595
|
+
};
|
|
596
|
+
const go = (loc, options = { replace: false }) => onNavigate(fromHash(`#/${loc === "/" || loc === "root" ? "" : loc}`), options);
|
|
558
597
|
const follow = (e) => {
|
|
559
598
|
if (e.defaultPrevented || e.button !== 0 || e.metaKey || e.ctrlKey || e.shiftKey || e.altKey) return;
|
|
560
599
|
const link = e.target.closest?.("a[href^='#/']");
|
|
561
600
|
if (!link || !e.currentTarget.contains(link)) return;
|
|
562
601
|
e.preventDefault();
|
|
563
|
-
|
|
602
|
+
const next = fromHash(link.getAttribute("href"));
|
|
603
|
+
if (next.kind === "file") void download(next.itemId);
|
|
604
|
+
else onNavigate(next, { replace: false });
|
|
564
605
|
};
|
|
565
606
|
const place = hash.startsWith("#/trash") ? "trash" : "files";
|
|
566
607
|
return /* @__PURE__ */ jsxs4("div", { className: "drive-root", onClick: follow, children: [
|
|
@@ -568,26 +609,45 @@ function DriveView({ client, origin, onOpenItem }) {
|
|
|
568
609
|
{ href: "#/", label: "My files", icon: /* @__PURE__ */ jsx4(FolderIcon3, { "aria-hidden": "true" }), current: place === "files" },
|
|
569
610
|
{ href: "#/trash", label: "Trash", current: place === "trash" }
|
|
570
611
|
] }),
|
|
571
|
-
/* @__PURE__ */ jsx4("div", { className: "drive-main", children: /* @__PURE__ */ jsx4(Routes, { hash, client, origin, go, onOpenItem }) })
|
|
612
|
+
/* @__PURE__ */ jsx4("div", { className: "drive-main", children: /* @__PURE__ */ jsx4(Routes, { hash, client, origin, go, onOpenItem, folderLoc: location2.kind === "folder" ? location2.path : void 0 }) })
|
|
572
613
|
] });
|
|
573
614
|
}
|
|
574
615
|
function mount(element, options) {
|
|
616
|
+
let active = { ...options.location ?? ROOT };
|
|
617
|
+
locationHash(active);
|
|
618
|
+
let settings = options;
|
|
575
619
|
let current = makeClient(options);
|
|
576
620
|
const root = createRoot(element);
|
|
577
621
|
let open = true;
|
|
578
622
|
let version = 0;
|
|
623
|
+
const navigate = (next, options2 = { replace: false }) => {
|
|
624
|
+
active = { ...next };
|
|
625
|
+
render(settings, current.client);
|
|
626
|
+
settings.onNavigate?.({ ...active }, options2);
|
|
627
|
+
};
|
|
579
628
|
const render = (next, client) => root.render(
|
|
580
|
-
/* @__PURE__ */ jsx4(TooltipProvider, { children: /* @__PURE__ */ jsx4(ToastProvider, { children: /* @__PURE__ */ jsx4(DriveView, { client, origin: new URL(next.baseUrl).origin, onOpenItem: next.onOpenItem }, version
|
|
629
|
+
/* @__PURE__ */ jsx4(TooltipProvider, { children: /* @__PURE__ */ jsx4(ToastProvider, { children: /* @__PURE__ */ jsx4(DriveView, { client, origin: new URL(next.baseUrl).origin, onOpenItem: next.onOpenItem, location: active, onNavigate: navigate }, version) }) })
|
|
581
630
|
);
|
|
582
631
|
render(options, current.client);
|
|
583
632
|
return {
|
|
584
633
|
update: (next) => {
|
|
585
634
|
if (!open) return;
|
|
635
|
+
if (next.location !== void 0) locationHash(next.location);
|
|
586
636
|
const made = makeClient(next);
|
|
637
|
+
settings = next;
|
|
638
|
+
if (next.location !== void 0) active = { ...next.location };
|
|
639
|
+
version++;
|
|
587
640
|
current.close();
|
|
588
641
|
current = made;
|
|
589
642
|
render(next, made.client);
|
|
590
643
|
},
|
|
644
|
+
setLocation: (next) => {
|
|
645
|
+
if (!open) return;
|
|
646
|
+
locationHash(next);
|
|
647
|
+
active = { ...next };
|
|
648
|
+
render(settings, current.client);
|
|
649
|
+
},
|
|
650
|
+
getLocation: () => ({ ...active }),
|
|
591
651
|
unmount: () => {
|
|
592
652
|
if (!open) return;
|
|
593
653
|
open = false;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { O as OnConflict, D as Drive, C as Ctx, N as Node, A as Actor } from './drive-
|
|
2
|
-
export { a as ACTOR_KINDS, b as Action, c as ActivityAction, d as ActivityEntry, e as ActorKind, f as Can, g as DriveDeps, h as DriveError, E as ERROR_STATUS, i as ErrorCode,
|
|
1
|
+
import { O as OnConflict, D as Drive, C as Ctx, N as Node, R as ResourceOwnership, A as Actor } from './drive-BncyFxBL.js';
|
|
2
|
+
export { a as ACTOR_KINDS, b as Action, c as ActivityAction, d as ActivityEntry, e as ActorKind, f as Can, g as DriveDeps, h as DriveError, E as ERROR_STATUS, i as ErrorCode, j as ROOT_ID, S as SearchQuery, k as createDrive, p as parseName, l as parseSubject, s as subjectKindOf } from './drive-BncyFxBL.js';
|
|
3
|
+
import * as agentic_identity from 'agentic-identity';
|
|
3
4
|
import { Store, Blobs, Doc } from 'agentic-identity';
|
|
4
5
|
export { B as BackfillOptions, a as BackfillResult, b as backfillAuthorIds, c as backfillResources } from './migrate-B79gRPMu.js';
|
|
5
6
|
export { DriveAccount, DriveAccountDeps, driveAccount } from './account.js';
|
|
@@ -76,6 +77,9 @@ declare function revokeKey(store: Store, token: string): Promise<void>;
|
|
|
76
77
|
/** A node as the CLI and MCP print it: no storage keys. `machineMade` is true when the creator is not a human principal. */
|
|
77
78
|
declare function publicNode(node: Node, path?: string): {
|
|
78
79
|
machineMade: boolean;
|
|
80
|
+
resourceOwnership?: ResourceOwnership;
|
|
81
|
+
resourceOwnerId?: string;
|
|
82
|
+
resourceOwnerKind?: agentic_identity.SubjectKind;
|
|
79
83
|
id: string;
|
|
80
84
|
owner: string;
|
|
81
85
|
parentId: string;
|
|
@@ -95,6 +99,9 @@ declare function publicNode(node: Node, path?: string): {
|
|
|
95
99
|
trashedAt: number | null;
|
|
96
100
|
} | {
|
|
97
101
|
machineMade: boolean;
|
|
102
|
+
resourceOwnership?: ResourceOwnership;
|
|
103
|
+
resourceOwnerId?: string;
|
|
104
|
+
resourceOwnerKind?: agentic_identity.SubjectKind;
|
|
98
105
|
id: string;
|
|
99
106
|
owner: string;
|
|
100
107
|
parentId: string;
|
|
@@ -115,4 +122,4 @@ declare function publicNode(node: Node, path?: string): {
|
|
|
115
122
|
path: string;
|
|
116
123
|
};
|
|
117
124
|
|
|
118
|
-
export { Actor, AuthError, Ctx, DEFAULT_MAX_BYTES, Drive, Node, OnConflict, type UploadOptions, VERSION, addPrincipal, buildExport, importLegacyLocal, issueKey, openLocal, publicNode, readZip, resolveToken, revokeKey, revokePrincipal, sniffMime, upload, writeZip };
|
|
125
|
+
export { Actor, AuthError, Ctx, DEFAULT_MAX_BYTES, Drive, Node, OnConflict, ResourceOwnership, type UploadOptions, VERSION, addPrincipal, buildExport, importLegacyLocal, issueKey, openLocal, publicNode, readZip, resolveToken, revokeKey, revokePrincipal, sniffMime, upload, writeZip };
|
package/dist/index.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
driveAccount
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-OHDNQ23Q.js";
|
|
4
4
|
import {
|
|
5
5
|
importLegacyLocal
|
|
6
6
|
} from "./chunk-AB2RTTHJ.js";
|
|
7
7
|
import {
|
|
8
8
|
VERSION
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-6TPC3BUW.js";
|
|
10
10
|
import {
|
|
11
11
|
DEFAULT_MAX_BYTES,
|
|
12
12
|
buildExport,
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
sniffMime,
|
|
15
15
|
upload,
|
|
16
16
|
writeZip
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-NPJG2MYP.js";
|
|
18
18
|
import {
|
|
19
19
|
ACTOR_KINDS,
|
|
20
20
|
AuthError,
|
|
@@ -34,7 +34,7 @@ import {
|
|
|
34
34
|
revokeKey,
|
|
35
35
|
revokePrincipal,
|
|
36
36
|
subjectKindOf
|
|
37
|
-
} from "./chunk-
|
|
37
|
+
} from "./chunk-FTIWCBCI.js";
|
|
38
38
|
export {
|
|
39
39
|
ACTOR_KINDS,
|
|
40
40
|
AuthError,
|
package/dist/mcp.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
-
import { D as Drive, C as Ctx } from './drive-
|
|
2
|
+
import { D as Drive, C as Ctx } from './drive-BncyFxBL.js';
|
|
3
3
|
import { Store } from 'agentic-identity';
|
|
4
4
|
|
|
5
5
|
declare function createMcpServer(drive: Drive, ctx: Ctx, exportDir: string, store: Store): McpServer;
|
package/dist/mcp.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import {
|
|
2
2
|
VERSION
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-6TPC3BUW.js";
|
|
4
4
|
import {
|
|
5
5
|
buildExport,
|
|
6
6
|
upload
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-NPJG2MYP.js";
|
|
8
8
|
import {
|
|
9
9
|
ACTOR_KINDS,
|
|
10
10
|
DriveError,
|
|
11
11
|
inviteIdentity,
|
|
12
12
|
publicNode
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-FTIWCBCI.js";
|
|
14
14
|
|
|
15
15
|
// src/mcp.ts
|
|
16
16
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
package/dist/worker.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Hono } from 'hono';
|
|
2
2
|
import { D1Like, R2Like } from 'agentic-identity/cloudflare';
|
|
3
3
|
import { Store, Blobs } from 'agentic-identity';
|
|
4
|
-
import { C as Ctx, D as Drive } from './drive-
|
|
5
|
-
export { E as ERROR_STATUS, i as ErrorCode, N as Node } from './drive-
|
|
4
|
+
import { C as Ctx, D as Drive } from './drive-BncyFxBL.js';
|
|
5
|
+
export { E as ERROR_STATUS, i as ErrorCode, N as Node } from './drive-BncyFxBL.js';
|
|
6
6
|
export { B as BackfillOptions, a as BackfillResult, b as backfillAuthorIds, c as backfillResources } from './migrate-B79gRPMu.js';
|
|
7
7
|
|
|
8
8
|
/**
|
package/dist/worker.js
CHANGED
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
DEFAULT_MAX_BYTES,
|
|
3
3
|
buildExport,
|
|
4
4
|
upload
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-NPJG2MYP.js";
|
|
6
6
|
import {
|
|
7
7
|
DEFAULT_URL_SECONDS,
|
|
8
8
|
DriveError,
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
inviteIdentity,
|
|
15
15
|
publicNode,
|
|
16
16
|
safeMime
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-FTIWCBCI.js";
|
|
18
18
|
|
|
19
19
|
// src/worker.ts
|
|
20
20
|
import { Hono } from "hono";
|
package/llms.txt
CHANGED
|
@@ -39,7 +39,7 @@ checks), `upload`, `sniffMime`, `DEFAULT_MAX_BYTES` (upload helpers), `buildExpo
|
|
|
39
39
|
(account plug-in). See README for behavior and limits.
|
|
40
40
|
|
|
41
41
|
Root types: `ActivityAction`, `ActivityEntry`, `Action`, `Actor`, `ActorKind`,
|
|
42
|
-
`Can`, `Ctx`, `Drive`, `DriveDeps`, `ErrorCode`, `Node`, `OnConflict`,
|
|
42
|
+
`Can`, `Ctx`, `Drive`, `DriveDeps`, `ErrorCode`, `Node`, `OnConflict`, `ResourceOwnership`,
|
|
43
43
|
`UploadOptions`, `SearchQuery`, `BackfillOptions`, `BackfillResult`,
|
|
44
44
|
`DriveAccount`, and `DriveAccountDeps`. They describe activity, callers, drive
|
|
45
45
|
operations, uploads, migrations, and account operations.
|
|
@@ -105,8 +105,8 @@ view.unmount();
|
|
|
105
105
|
```
|
|
106
106
|
|
|
107
107
|
`mount` returns a `MountedDrive` handle. `DriveBrowser` is the React component;
|
|
108
|
-
`DriveUiOptions` is its configuration. The CSS path supplies its styles. The handle
|
|
109
|
-
has `update` and `
|
|
108
|
+
`DriveUiOptions` is its configuration. `DriveLocation` is the folder, trash, activity, or file location type. `DriveNavigationOptions` describes host history updates. The CSS path supplies its styles. The handle
|
|
109
|
+
has `update`, `unmount`, `setLocation`, and `getLocation` methods. The `getToken` callback runs before each request
|
|
110
110
|
and may return undefined. The UI does not change the page address or theme.
|
|
111
111
|
The optional `onOpenItem` hook receives the full `Item` for a reference link, by pointer or Enter in list and grid views. Return true to skip the download; false or void keeps it. `OnOpenItem` and `Item` are exported types from `agentic-drive/ui`. Both `update` and React props can replace the hook.
|
|
112
112
|
React 19 and React DOM 19 are optional peer dependencies.
|
|
@@ -122,3 +122,25 @@ The CLI uses `AGENTIC_DRIVE_TOKEN`. The MCP command serves tools over stdio;
|
|
|
122
122
|
call `drive_ls` with a path. Storage adapters are provided by `agentic-identity`,
|
|
123
123
|
not by a drive subpath. For example: `import { createFileStore, createFileBlobs } from "agentic-identity/file"`;
|
|
124
124
|
pass `createFileStore({ path: "./data/db" })` and `createFileBlobs({ dir: "./data/blobs" })` to `createDrive`. The Worker uses D1 and R2 adapters by default.
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
### Embedded navigation
|
|
128
|
+
|
|
129
|
+
Set the location option to a folder with kind "folder" and path "/" (root),
|
|
130
|
+
a folder id, or an absolute path. Use kind "trash" for trash. Activity and file
|
|
131
|
+
locations use kind "activity" or "file" with itemId.
|
|
132
|
+
|
|
133
|
+
The mounted handle also has setLocation and getLocation methods. getLocation
|
|
134
|
+
returns a copy of the active location. A folder path can be passed as folder to
|
|
135
|
+
registerDocument. update keeps the location unless its options supply one.
|
|
136
|
+
React hosts can control location and apply onNavigate to their own state.
|
|
137
|
+
|
|
138
|
+
onNavigate receives the next location and history options. Use pushState when
|
|
139
|
+
replace is false, and replaceState when replace is true. File links download in place
|
|
140
|
+
without changing location or notifying the host, including on error. Navigation
|
|
141
|
+
cancels pending downloads. Explicit file locations return to the parent with
|
|
142
|
+
replace true on success; an error leaves that explicit location selected.
|
|
143
|
+
Root returns use "/". A direct location assignment does not notify the host,
|
|
144
|
+
but a completed download does. Apply popstate with setLocation or React props.
|
|
145
|
+
|
|
146
|
+
Trusted hosts use drive.claimResourceRef(ctx, path, ref, { resourceId, type, subject }, opts) for atomic app ownership. Check app access first. Repeated claims at the same path return the same reference. REF_CONFLICT means ownership or reference conflict. Direct trash releases the claim; restore reacquires it. Folder trash keeps child claims. This helper is not an unchecked HTTP, CLI, or MCP action.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agentic-drive",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.13.0",
|
|
4
4
|
"description": "Store, sort, and share files and folders.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"drive",
|
|
@@ -79,7 +79,7 @@
|
|
|
79
79
|
"dependencies": {
|
|
80
80
|
"@modelcontextprotocol/sdk": "^1.12.0",
|
|
81
81
|
"agentic-design": ">=0.8.0 <1.0.0",
|
|
82
|
-
"agentic-identity": ">=0.
|
|
82
|
+
"agentic-identity": ">=0.12.0 <1.0.0",
|
|
83
83
|
"hono": "^4.13.14",
|
|
84
84
|
"zod": "^4.6.6"
|
|
85
85
|
},
|