@desplega.ai/agent-fs-just-bash 0.7.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,38 @@
1
+ # @desplega.ai/agent-fs-just-bash
2
+
3
+ `just-bash` compatible filesystem adapter for agent-fs.
4
+
5
+ ```ts
6
+ import { Bash } from "just-bash";
7
+ import { AgentFsFileSystem } from "@desplega.ai/agent-fs-just-bash";
8
+
9
+ const fs = new AgentFsFileSystem({
10
+ baseUrl: "http://127.0.0.1:7433",
11
+ apiKey: process.env.AGENT_FS_API_KEY,
12
+ orgId: "org_...",
13
+ driveId: "drive_...",
14
+ });
15
+
16
+ const bash = new Bash({ fs, cwd: "/" });
17
+ await bash.exec("cat README.md");
18
+ ```
19
+
20
+ The adapter talks to the agent-fs daemon HTTP API. It uses `/raw` for byte-safe
21
+ reads and writes, and `/ops` for `ls`, `stat`, `rm`, `cp`, and `mv`.
22
+
23
+ ## Supported semantics
24
+
25
+ - Files are read and written as raw bytes.
26
+ - Directories are agent-fs prefixes. Empty directories are represented with a
27
+ hidden `.agent-fs-dir` marker file that this adapter filters from `readdir`.
28
+ - `appendFile` creates files when missing.
29
+ - `chmod` and `utimes` verify the path exists, then no-op because agent-fs does
30
+ not persist POSIX mode or caller-supplied timestamps.
31
+ - Symlink creation is not supported and throws `EPERM`; `lstat` is equivalent to
32
+ `stat`; `realpath` returns the normalized virtual path.
33
+ - Hard links are approximated as file copies.
34
+
35
+ `getAllPaths()` is synchronous in the `just-bash` interface, so this adapter
36
+ returns a local cache of paths discovered through reads, writes, and listings.
37
+ Call `await fs.refreshAllPaths()` before shell commands that rely on globbing an
38
+ already-populated remote drive.
@@ -0,0 +1,79 @@
1
+ export type { BufferEncoding, ByteString, CpOptions, DirectoryEntry, DirentEntry, FileContent, FileEntry, FileInit, FileSystemFactory, FsEntry, FsStat, IFileSystem, InitialFiles, LazyFileEntry, LazyFileProvider, MkdirOptions, ReadFileOptions, RmOptions, SymlinkEntry, WriteFileOptions, } from "./types.js";
2
+ import type { BufferEncoding, ByteString, CpOptions, DirentEntry, FileContent, FsStat, IFileSystem, InitialFiles, MkdirOptions, ReadFileOptions, RmOptions, WriteFileOptions } from "./types.js";
3
+ type FetchLike = (input: string | URL | Request, init?: RequestInit) => Promise<Response>;
4
+ export interface AgentFsFileSystemOptions {
5
+ baseUrl?: string;
6
+ apiKey?: string;
7
+ orgId: string;
8
+ driveId: string;
9
+ fetch?: FetchLike;
10
+ directoryMarkerName?: string;
11
+ writeMessage?: string | ((operation: string, path: string) => string);
12
+ }
13
+ export declare class AgentFsHttpError extends Error {
14
+ readonly status: number;
15
+ readonly code?: string;
16
+ constructor(message: string, status: number, code?: string);
17
+ }
18
+ export declare class AgentFsFileSystem implements IFileSystem {
19
+ private readonly baseUrl;
20
+ private readonly apiKey?;
21
+ private readonly orgId;
22
+ private readonly driveId;
23
+ private readonly fetchFn;
24
+ private readonly directoryMarkerName;
25
+ private readonly writeMessage?;
26
+ private readonly knownFiles;
27
+ private readonly knownDirectories;
28
+ constructor(options: AgentFsFileSystemOptions);
29
+ readFile(path: string, options?: ReadFileOptions | BufferEncoding): Promise<string>;
30
+ readFileBytes(path: string): Promise<ByteString>;
31
+ readFileBuffer(path: string): Promise<Uint8Array>;
32
+ writeFile(path: string, content: FileContent, options?: WriteFileOptions | BufferEncoding): Promise<void>;
33
+ appendFile(path: string, content: FileContent, options?: WriteFileOptions | BufferEncoding): Promise<void>;
34
+ exists(path: string): Promise<boolean>;
35
+ stat(path: string): Promise<FsStat>;
36
+ mkdir(path: string, options?: MkdirOptions): Promise<void>;
37
+ readdir(path: string): Promise<string[]>;
38
+ readdirWithFileTypes(path: string): Promise<DirentEntry[]>;
39
+ rm(path: string, options?: RmOptions): Promise<void>;
40
+ cp(src: string, dest: string, options?: CpOptions): Promise<void>;
41
+ mv(src: string, dest: string): Promise<void>;
42
+ resolvePath(base: string, path: string): string;
43
+ getAllPaths(): string[];
44
+ chmod(path: string, _mode: number): Promise<void>;
45
+ symlink(target: string, linkPath: string): Promise<void>;
46
+ link(existingPath: string, newPath: string): Promise<void>;
47
+ readlink(path: string): Promise<string>;
48
+ lstat(path: string): Promise<FsStat>;
49
+ realpath(path: string): Promise<string>;
50
+ utimes(path: string, _atime: Date, _mtime: Date): Promise<void>;
51
+ refreshAllPaths(path?: string): Promise<string[]>;
52
+ writeInitialFiles(initialFiles: InitialFiles): Promise<void>;
53
+ private refreshDirectory;
54
+ private assertDirectoryReadable;
55
+ private assertParentWritable;
56
+ private assertParentDirectory;
57
+ private fileExists;
58
+ private directoryExists;
59
+ private listDirectory;
60
+ private collectFilePaths;
61
+ private op;
62
+ private requestJson;
63
+ private getRaw;
64
+ private putRaw;
65
+ private rawUrl;
66
+ private markerPath;
67
+ private isDirectoryMarkerName;
68
+ private isDirectoryMarkerPath;
69
+ private messageFor;
70
+ private rememberFile;
71
+ private rememberDirectory;
72
+ private rememberAncestors;
73
+ private forgetFile;
74
+ private forgetDirectory;
75
+ }
76
+ export declare function createAgentFsFileSystem(options: AgentFsFileSystemOptions): AgentFsFileSystem;
77
+ export declare function createAgentFsFileSystemWithFiles(options: AgentFsFileSystemOptions, initialFiles: InitialFiles): Promise<AgentFsFileSystem>;
78
+ export declare function normalizePath(path: string): string;
79
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js ADDED
@@ -0,0 +1,761 @@
1
+ const DEFAULT_BASE_URL = "http://127.0.0.1:7433";
2
+ const DEFAULT_DIR_MODE = 0o755;
3
+ const DEFAULT_FILE_MODE = 0o644;
4
+ const DEFAULT_DIRECTORY_MARKER = ".agent-fs-dir";
5
+ export class AgentFsHttpError extends Error {
6
+ status;
7
+ code;
8
+ constructor(message, status, code) {
9
+ super(message);
10
+ this.name = "AgentFsHttpError";
11
+ this.status = status;
12
+ this.code = code;
13
+ }
14
+ }
15
+ export class AgentFsFileSystem {
16
+ baseUrl;
17
+ apiKey;
18
+ orgId;
19
+ driveId;
20
+ fetchFn;
21
+ directoryMarkerName;
22
+ writeMessage;
23
+ knownFiles = new Set();
24
+ knownDirectories = new Set(["/"]);
25
+ constructor(options) {
26
+ if (!options.orgId) {
27
+ throw new Error("AgentFsFileSystem requires orgId");
28
+ }
29
+ if (!options.driveId) {
30
+ throw new Error("AgentFsFileSystem requires driveId");
31
+ }
32
+ this.baseUrl = stripTrailingSlash(options.baseUrl ?? getEnv("AGENT_FS_API_URL") ?? DEFAULT_BASE_URL);
33
+ this.apiKey = options.apiKey ?? getEnv("AGENT_FS_API_KEY") ?? undefined;
34
+ this.orgId = options.orgId;
35
+ this.driveId = options.driveId;
36
+ this.fetchFn = options.fetch ?? globalThis.fetch?.bind(globalThis);
37
+ this.directoryMarkerName =
38
+ options.directoryMarkerName ?? DEFAULT_DIRECTORY_MARKER;
39
+ this.writeMessage = options.writeMessage;
40
+ if (!this.fetchFn) {
41
+ throw new Error("AgentFsFileSystem requires a fetch implementation");
42
+ }
43
+ }
44
+ async readFile(path, options) {
45
+ const bytes = await this.readFileBuffer(path);
46
+ return decodeBytes(bytes, getEncoding(options));
47
+ }
48
+ async readFileBytes(path) {
49
+ return bytesToLatin1(await this.readFileBuffer(path));
50
+ }
51
+ async readFileBuffer(path) {
52
+ validatePath(path, "open");
53
+ const normalized = normalizePath(path);
54
+ try {
55
+ const bytes = await this.getRaw(normalized);
56
+ this.rememberFile(normalized);
57
+ return bytes;
58
+ }
59
+ catch (err) {
60
+ if (isNotFound(err) && (await this.directoryExists(normalized))) {
61
+ throw new Error(`EISDIR: illegal operation on a directory, read '${path}'`);
62
+ }
63
+ throw toPathError(err, "open", path);
64
+ }
65
+ }
66
+ async writeFile(path, content, options) {
67
+ validatePath(path, "write");
68
+ const normalized = normalizePath(path);
69
+ await this.assertParentWritable(normalized, "write");
70
+ await this.putRaw(normalized, encodeContent(content, getEncoding(options)), this.messageFor("write", normalized));
71
+ this.rememberFile(normalized);
72
+ }
73
+ async appendFile(path, content, options) {
74
+ validatePath(path, "append");
75
+ const normalized = normalizePath(path);
76
+ await this.assertParentWritable(normalized, "append");
77
+ let existing = new Uint8Array(0);
78
+ try {
79
+ existing = await this.readFileBuffer(normalized);
80
+ }
81
+ catch (err) {
82
+ if (!isNotFound(err) && !isPathNotFound(err)) {
83
+ throw err;
84
+ }
85
+ }
86
+ const next = concatBytes(existing, encodeContent(content, getEncoding(options)));
87
+ await this.putRaw(normalized, next, this.messageFor("append", normalized));
88
+ this.rememberFile(normalized);
89
+ }
90
+ async exists(path) {
91
+ if (path.includes("\0"))
92
+ return false;
93
+ const normalized = normalizePath(path);
94
+ if (normalized === "/")
95
+ return true;
96
+ try {
97
+ await this.stat(normalized);
98
+ return true;
99
+ }
100
+ catch {
101
+ return false;
102
+ }
103
+ }
104
+ async stat(path) {
105
+ validatePath(path, "stat");
106
+ const normalized = normalizePath(path);
107
+ if (normalized === "/")
108
+ return directoryStat();
109
+ try {
110
+ const result = await this.op("stat", { path: normalized });
111
+ this.rememberFile(normalized);
112
+ return fileStat(result);
113
+ }
114
+ catch (err) {
115
+ if (!isNotFound(err) && !isPathNotFound(err)) {
116
+ throw err;
117
+ }
118
+ }
119
+ if (await this.directoryExists(normalized)) {
120
+ this.rememberDirectory(normalized);
121
+ return directoryStat();
122
+ }
123
+ throw new Error(`ENOENT: no such file or directory, stat '${path}'`);
124
+ }
125
+ async mkdir(path, options) {
126
+ validatePath(path, "mkdir");
127
+ const normalized = normalizePath(path);
128
+ if (normalized === "/")
129
+ return;
130
+ const existing = await this.exists(normalized);
131
+ if (existing) {
132
+ if (options?.recursive)
133
+ return;
134
+ throw new Error(`EEXIST: file already exists, mkdir '${path}'`);
135
+ }
136
+ await this.assertParentDirectory(normalized, "mkdir", Boolean(options?.recursive));
137
+ const marker = this.markerPath(normalized);
138
+ await this.putRaw(marker, new Uint8Array(0), this.messageFor("mkdir", normalized));
139
+ this.rememberDirectory(normalized);
140
+ this.rememberFile(marker);
141
+ }
142
+ async readdir(path) {
143
+ const entries = await this.readdirWithFileTypes(path);
144
+ return entries.map((entry) => entry.name);
145
+ }
146
+ async readdirWithFileTypes(path) {
147
+ validatePath(path, "scandir");
148
+ const normalized = normalizePath(path);
149
+ await this.assertDirectoryReadable(normalized, path);
150
+ const entries = await this.listDirectory(normalized, false);
151
+ return entries
152
+ .map((entry) => ({
153
+ name: entry.name,
154
+ isFile: entry.type === "file",
155
+ isDirectory: entry.type === "directory",
156
+ isSymbolicLink: false,
157
+ }))
158
+ .sort((a, b) => a.name.localeCompare(b.name));
159
+ }
160
+ async rm(path, options) {
161
+ validatePath(path, "rm");
162
+ const normalized = normalizePath(path);
163
+ if (normalized === "/") {
164
+ throw new Error(`EBUSY: resource busy or locked, rm '${path}'`);
165
+ }
166
+ const fileExists = await this.fileExists(normalized);
167
+ if (fileExists) {
168
+ await this.op("rm", { path: normalized });
169
+ this.forgetFile(normalized);
170
+ return;
171
+ }
172
+ const directoryEntries = await this.listDirectory(normalized, true);
173
+ const directoryExists = directoryEntries.length > 0 || this.knownDirectories.has(normalized);
174
+ if (!directoryExists) {
175
+ if (options?.force)
176
+ return;
177
+ throw new Error(`ENOENT: no such file or directory, rm '${path}'`);
178
+ }
179
+ const visibleEntries = directoryEntries.filter((entry) => !this.isDirectoryMarkerName(entry.name));
180
+ if (visibleEntries.length > 0 && !options?.recursive) {
181
+ throw new Error(`ENOTEMPTY: directory not empty, rm '${path}'`);
182
+ }
183
+ const files = await this.collectFilePaths(normalized);
184
+ for (const file of files) {
185
+ await this.op("rm", { path: file });
186
+ this.forgetFile(file);
187
+ }
188
+ this.forgetDirectory(normalized);
189
+ }
190
+ async cp(src, dest, options) {
191
+ validatePath(src, "cp");
192
+ validatePath(dest, "cp");
193
+ const srcNorm = normalizePath(src);
194
+ const destNorm = normalizePath(dest);
195
+ await this.assertParentWritable(destNorm, "cp");
196
+ if (await this.fileExists(srcNorm)) {
197
+ await this.op("cp", { from: srcNorm, to: destNorm });
198
+ this.rememberFile(destNorm);
199
+ return;
200
+ }
201
+ if (!(await this.directoryExists(srcNorm))) {
202
+ throw new Error(`ENOENT: no such file or directory, cp '${src}'`);
203
+ }
204
+ if (!options?.recursive) {
205
+ throw new Error(`EISDIR: illegal operation on a directory, cp '${src}'`);
206
+ }
207
+ await this.mkdir(destNorm, { recursive: true });
208
+ const entries = await this.listDirectory(srcNorm, false);
209
+ for (const entry of entries) {
210
+ const childSrc = joinPath(srcNorm, entry.name);
211
+ const childDest = joinPath(destNorm, entry.name);
212
+ if (entry.type === "directory") {
213
+ await this.cp(childSrc, childDest, { recursive: true });
214
+ }
215
+ else {
216
+ await this.cp(childSrc, childDest);
217
+ }
218
+ }
219
+ }
220
+ async mv(src, dest) {
221
+ validatePath(src, "rename");
222
+ validatePath(dest, "rename");
223
+ const srcNorm = normalizePath(src);
224
+ const destNorm = normalizePath(dest);
225
+ await this.assertParentWritable(destNorm, "rename");
226
+ if (await this.fileExists(srcNorm)) {
227
+ await this.op("mv", {
228
+ from: srcNorm,
229
+ to: destNorm,
230
+ message: this.messageFor("mv", destNorm),
231
+ });
232
+ this.forgetFile(srcNorm);
233
+ this.rememberFile(destNorm);
234
+ return;
235
+ }
236
+ if (!(await this.directoryExists(srcNorm))) {
237
+ throw new Error(`ENOENT: no such file or directory, rename '${src}'`);
238
+ }
239
+ await this.cp(srcNorm, destNorm, { recursive: true });
240
+ await this.rm(srcNorm, { recursive: true });
241
+ }
242
+ resolvePath(base, path) {
243
+ if (path.startsWith("/")) {
244
+ return normalizePath(path);
245
+ }
246
+ return normalizePath(base === "/" ? `/${path}` : `${base}/${path}`);
247
+ }
248
+ getAllPaths() {
249
+ return [...new Set([...this.knownDirectories, ...this.knownFiles])]
250
+ .filter((path) => !this.isDirectoryMarkerPath(path))
251
+ .sort();
252
+ }
253
+ async chmod(path, _mode) {
254
+ validatePath(path, "chmod");
255
+ if (!(await this.exists(path))) {
256
+ throw new Error(`ENOENT: no such file or directory, chmod '${path}'`);
257
+ }
258
+ }
259
+ async symlink(target, linkPath) {
260
+ validatePath(target, "symlink");
261
+ validatePath(linkPath, "symlink");
262
+ throw new Error(`EPERM: operation not permitted, symlink '${target}' -> '${linkPath}'`);
263
+ }
264
+ async link(existingPath, newPath) {
265
+ validatePath(existingPath, "link");
266
+ validatePath(newPath, "link");
267
+ if (await this.exists(newPath)) {
268
+ throw new Error(`EEXIST: file already exists, link '${newPath}'`);
269
+ }
270
+ await this.cp(existingPath, newPath);
271
+ }
272
+ async readlink(path) {
273
+ validatePath(path, "readlink");
274
+ if (!(await this.exists(path))) {
275
+ throw new Error(`ENOENT: no such file or directory, readlink '${path}'`);
276
+ }
277
+ throw new Error(`EINVAL: invalid argument, readlink '${path}'`);
278
+ }
279
+ async lstat(path) {
280
+ return this.stat(path);
281
+ }
282
+ async realpath(path) {
283
+ validatePath(path, "realpath");
284
+ const normalized = normalizePath(path);
285
+ if (!(await this.exists(normalized))) {
286
+ throw new Error(`ENOENT: no such file or directory, realpath '${path}'`);
287
+ }
288
+ return normalized;
289
+ }
290
+ async utimes(path, _atime, _mtime) {
291
+ validatePath(path, "utimes");
292
+ if (!(await this.exists(path))) {
293
+ throw new Error(`ENOENT: no such file or directory, utimes '${path}'`);
294
+ }
295
+ }
296
+ async refreshAllPaths(path = "/") {
297
+ validatePath(path, "scandir");
298
+ const normalized = normalizePath(path);
299
+ await this.refreshDirectory(normalized);
300
+ return this.getAllPaths();
301
+ }
302
+ async writeInitialFiles(initialFiles) {
303
+ for (const [path, value] of Object.entries(initialFiles)) {
304
+ if (typeof value === "function") {
305
+ await this.writeFile(path, await value());
306
+ }
307
+ else if (isFileInit(value)) {
308
+ await this.writeFile(path, value.content);
309
+ if (value.mtime) {
310
+ await this.utimes(path, value.mtime, value.mtime);
311
+ }
312
+ if (value.mode !== undefined) {
313
+ await this.chmod(path, value.mode);
314
+ }
315
+ }
316
+ else {
317
+ await this.writeFile(path, value);
318
+ }
319
+ }
320
+ }
321
+ async refreshDirectory(path) {
322
+ if (!(await this.directoryExists(path)))
323
+ return;
324
+ const entries = await this.listDirectory(path, false);
325
+ for (const entry of entries) {
326
+ const child = joinPath(path, entry.name);
327
+ if (entry.type === "directory") {
328
+ await this.refreshDirectory(child);
329
+ }
330
+ }
331
+ }
332
+ async assertDirectoryReadable(normalized, original) {
333
+ if (normalized === "/")
334
+ return;
335
+ if (await this.fileExists(normalized)) {
336
+ throw new Error(`ENOTDIR: not a directory, scandir '${original}'`);
337
+ }
338
+ if (!(await this.directoryExists(normalized))) {
339
+ throw new Error(`ENOENT: no such file or directory, scandir '${original}'`);
340
+ }
341
+ }
342
+ async assertParentWritable(path, operation) {
343
+ const parent = dirname(path);
344
+ if (parent === "/")
345
+ return;
346
+ if (await this.fileExists(parent)) {
347
+ throw new Error(`ENOTDIR: not a directory, ${operation} '${path}'`);
348
+ }
349
+ }
350
+ async assertParentDirectory(path, operation, recursive) {
351
+ const parent = dirname(path);
352
+ if (parent === "/")
353
+ return;
354
+ if (await this.fileExists(parent)) {
355
+ throw new Error(`ENOTDIR: not a directory, ${operation} '${path}'`);
356
+ }
357
+ if (!recursive && !(await this.directoryExists(parent))) {
358
+ throw new Error(`ENOENT: no such file or directory, ${operation} '${path}'`);
359
+ }
360
+ }
361
+ async fileExists(path) {
362
+ try {
363
+ await this.op("stat", { path });
364
+ this.rememberFile(path);
365
+ return true;
366
+ }
367
+ catch (err) {
368
+ if (isNotFound(err) || isPathNotFound(err))
369
+ return false;
370
+ throw err;
371
+ }
372
+ }
373
+ async directoryExists(path) {
374
+ if (path === "/")
375
+ return true;
376
+ const entries = await this.listDirectory(path, true);
377
+ if (entries.length > 0) {
378
+ this.rememberDirectory(path);
379
+ return true;
380
+ }
381
+ return this.knownDirectories.has(path);
382
+ }
383
+ async listDirectory(path, includeMarkers) {
384
+ const result = await this.op("ls", { path });
385
+ const entries = includeMarkers
386
+ ? result.entries
387
+ : result.entries.filter((entry) => !this.isDirectoryMarkerName(entry.name));
388
+ for (const entry of result.entries) {
389
+ const child = joinPath(path, entry.name);
390
+ if (entry.type === "directory") {
391
+ this.rememberDirectory(child);
392
+ }
393
+ else {
394
+ this.rememberFile(child);
395
+ }
396
+ }
397
+ return entries;
398
+ }
399
+ async collectFilePaths(path) {
400
+ const files = [];
401
+ const entries = await this.listDirectory(path, true);
402
+ for (const entry of entries) {
403
+ const child = joinPath(path, entry.name);
404
+ if (entry.type === "directory") {
405
+ files.push(...(await this.collectFilePaths(child)));
406
+ }
407
+ else {
408
+ files.push(child);
409
+ }
410
+ }
411
+ return files;
412
+ }
413
+ async op(op, params = {}) {
414
+ return this.requestJson(`/orgs/${encodeURIComponent(this.orgId)}/ops`, {
415
+ method: "POST",
416
+ body: JSON.stringify({ op, driveId: this.driveId, ...params }),
417
+ });
418
+ }
419
+ async requestJson(path, init) {
420
+ const headers = new Headers(init.headers);
421
+ headers.set("Content-Type", "application/json");
422
+ if (this.apiKey) {
423
+ headers.set("Authorization", `Bearer ${this.apiKey}`);
424
+ }
425
+ let response;
426
+ try {
427
+ response = await this.fetchFn(`${this.baseUrl}${path}`, { ...init, headers });
428
+ }
429
+ catch {
430
+ throw new Error(`Cannot connect to agent-fs daemon at ${this.baseUrl}. Is it running? Start with: agent-fs daemon start`);
431
+ }
432
+ const text = await response.text();
433
+ let body = null;
434
+ try {
435
+ body = text ? JSON.parse(text) : null;
436
+ }
437
+ catch {
438
+ throw new Error(`Unexpected response from daemon (${response.status}): ${text || "empty"}`);
439
+ }
440
+ if (!response.ok) {
441
+ throw httpErrorFromBody(response.status, body);
442
+ }
443
+ return body;
444
+ }
445
+ async getRaw(path) {
446
+ const headers = new Headers();
447
+ if (this.apiKey) {
448
+ headers.set("Authorization", `Bearer ${this.apiKey}`);
449
+ }
450
+ const response = await this.fetchFn(this.rawUrl(path), {
451
+ method: "GET",
452
+ headers,
453
+ });
454
+ if (!response.ok) {
455
+ throw await httpErrorFromResponse(response);
456
+ }
457
+ return new Uint8Array(await response.arrayBuffer());
458
+ }
459
+ async putRaw(path, bytes, message) {
460
+ const headers = new Headers();
461
+ headers.set("Content-Type", "application/octet-stream");
462
+ if (this.apiKey) {
463
+ headers.set("Authorization", `Bearer ${this.apiKey}`);
464
+ }
465
+ if (message) {
466
+ headers.set("X-Agent-FS-Message", message);
467
+ }
468
+ const response = await this.fetchFn(this.rawUrl(path), {
469
+ method: "PUT",
470
+ headers,
471
+ body: bytes,
472
+ });
473
+ if (!response.ok) {
474
+ throw await httpErrorFromResponse(response);
475
+ }
476
+ }
477
+ rawUrl(path) {
478
+ const encoded = path
479
+ .replace(/^\/+/, "")
480
+ .split("/")
481
+ .map((part) => encodeURIComponent(part))
482
+ .join("/");
483
+ return `${this.baseUrl}/orgs/${encodeURIComponent(this.orgId)}/drives/${encodeURIComponent(this.driveId)}/files/${encoded}/raw`;
484
+ }
485
+ markerPath(path) {
486
+ return joinPath(path, this.directoryMarkerName);
487
+ }
488
+ isDirectoryMarkerName(name) {
489
+ return name === this.directoryMarkerName;
490
+ }
491
+ isDirectoryMarkerPath(path) {
492
+ return basename(path) === this.directoryMarkerName;
493
+ }
494
+ messageFor(operation, path) {
495
+ if (typeof this.writeMessage === "function") {
496
+ return this.writeMessage(operation, path);
497
+ }
498
+ return this.writeMessage;
499
+ }
500
+ rememberFile(path) {
501
+ const normalized = normalizePath(path);
502
+ this.knownFiles.add(normalized);
503
+ this.rememberAncestors(normalized);
504
+ }
505
+ rememberDirectory(path) {
506
+ const normalized = normalizePath(path);
507
+ this.knownDirectories.add(normalized);
508
+ this.rememberAncestors(normalized);
509
+ }
510
+ rememberAncestors(path) {
511
+ let current = dirname(path);
512
+ while (true) {
513
+ this.knownDirectories.add(current);
514
+ if (current === "/")
515
+ break;
516
+ current = dirname(current);
517
+ }
518
+ }
519
+ forgetFile(path) {
520
+ this.knownFiles.delete(normalizePath(path));
521
+ }
522
+ forgetDirectory(path) {
523
+ const normalized = normalizePath(path);
524
+ for (const file of [...this.knownFiles]) {
525
+ if (file === normalized || file.startsWith(`${normalized}/`)) {
526
+ this.knownFiles.delete(file);
527
+ }
528
+ }
529
+ for (const dir of [...this.knownDirectories]) {
530
+ if (dir !== "/" && (dir === normalized || dir.startsWith(`${normalized}/`))) {
531
+ this.knownDirectories.delete(dir);
532
+ }
533
+ }
534
+ }
535
+ }
536
+ export function createAgentFsFileSystem(options) {
537
+ return new AgentFsFileSystem(options);
538
+ }
539
+ export async function createAgentFsFileSystemWithFiles(options, initialFiles) {
540
+ const fs = new AgentFsFileSystem(options);
541
+ await fs.writeInitialFiles(initialFiles);
542
+ return fs;
543
+ }
544
+ export function normalizePath(path) {
545
+ if (!path || path === "/")
546
+ return "/";
547
+ let normalized = path.endsWith("/") && path !== "/" ? path.slice(0, -1) : path;
548
+ if (!normalized.startsWith("/")) {
549
+ normalized = `/${normalized}`;
550
+ }
551
+ const parts = normalized.split("/").filter((part) => part && part !== ".");
552
+ const resolved = [];
553
+ for (const part of parts) {
554
+ if (part === "..") {
555
+ resolved.pop();
556
+ }
557
+ else {
558
+ resolved.push(part);
559
+ }
560
+ }
561
+ return `/${resolved.join("/")}` || "/";
562
+ }
563
+ function validatePath(path, operation) {
564
+ if (path.includes("\0")) {
565
+ throw new Error(`ENOENT: path contains null byte, ${operation} '${path}'`);
566
+ }
567
+ }
568
+ function dirname(path) {
569
+ const normalized = normalizePath(path);
570
+ if (normalized === "/")
571
+ return "/";
572
+ const index = normalized.lastIndexOf("/");
573
+ return index === 0 ? "/" : normalized.slice(0, index);
574
+ }
575
+ function basename(path) {
576
+ const normalized = normalizePath(path);
577
+ if (normalized === "/")
578
+ return "/";
579
+ return normalized.slice(normalized.lastIndexOf("/") + 1);
580
+ }
581
+ function joinPath(parent, child) {
582
+ return normalizePath(parent === "/" ? `/${child}` : `${parent}/${child}`);
583
+ }
584
+ function getEncoding(options) {
585
+ if (typeof options === "string")
586
+ return options;
587
+ return options?.encoding ?? "utf8";
588
+ }
589
+ function encodeContent(content, encoding) {
590
+ if (content instanceof Uint8Array)
591
+ return content;
592
+ switch (encoding) {
593
+ case "base64":
594
+ return base64ToBytes(content);
595
+ case "hex":
596
+ return hexToBytes(content);
597
+ case "binary":
598
+ case "latin1":
599
+ return latin1ToBytes(content);
600
+ case "ascii":
601
+ return asciiToBytes(content);
602
+ case "utf-8":
603
+ case "utf8":
604
+ return new TextEncoder().encode(content);
605
+ }
606
+ }
607
+ function decodeBytes(bytes, encoding) {
608
+ switch (encoding) {
609
+ case "base64":
610
+ return bytesToBase64(bytes);
611
+ case "hex":
612
+ return bytesToHex(bytes);
613
+ case "binary":
614
+ case "latin1":
615
+ return bytesToLatin1(bytes);
616
+ case "ascii":
617
+ return bytesToAscii(bytes);
618
+ case "utf-8":
619
+ case "utf8":
620
+ return new TextDecoder().decode(bytes);
621
+ }
622
+ }
623
+ function concatBytes(left, right) {
624
+ const out = new Uint8Array(left.length + right.length);
625
+ out.set(left, 0);
626
+ out.set(right, left.length);
627
+ return out;
628
+ }
629
+ function bytesToLatin1(bytes) {
630
+ let result = "";
631
+ for (let i = 0; i < bytes.length; i += 0x8000) {
632
+ result += String.fromCharCode(...bytes.subarray(i, i + 0x8000));
633
+ }
634
+ return result;
635
+ }
636
+ function latin1ToBytes(value) {
637
+ const bytes = new Uint8Array(value.length);
638
+ for (let i = 0; i < value.length; i++) {
639
+ bytes[i] = value.charCodeAt(i) & 0xff;
640
+ }
641
+ return bytes;
642
+ }
643
+ function bytesToAscii(bytes) {
644
+ let result = "";
645
+ for (let i = 0; i < bytes.length; i += 0x8000) {
646
+ result += String.fromCharCode(...bytes.subarray(i, i + 0x8000).map((byte) => byte & 0x7f));
647
+ }
648
+ return result;
649
+ }
650
+ function asciiToBytes(value) {
651
+ const bytes = new Uint8Array(value.length);
652
+ for (let i = 0; i < value.length; i++) {
653
+ bytes[i] = value.charCodeAt(i) & 0x7f;
654
+ }
655
+ return bytes;
656
+ }
657
+ function bytesToHex(bytes) {
658
+ return [...bytes].map((byte) => byte.toString(16).padStart(2, "0")).join("");
659
+ }
660
+ function hexToBytes(value) {
661
+ if (value.length % 2 !== 0) {
662
+ throw new Error("Invalid hex string length");
663
+ }
664
+ const bytes = new Uint8Array(value.length / 2);
665
+ for (let i = 0; i < bytes.length; i++) {
666
+ const byte = Number.parseInt(value.slice(i * 2, i * 2 + 2), 16);
667
+ if (!Number.isFinite(byte)) {
668
+ throw new Error("Invalid hex string");
669
+ }
670
+ bytes[i] = byte;
671
+ }
672
+ return bytes;
673
+ }
674
+ function bytesToBase64(bytes) {
675
+ const binary = bytesToLatin1(bytes);
676
+ if (typeof btoa === "function")
677
+ return btoa(binary);
678
+ const buffer = getBuffer();
679
+ return buffer.from(binary, "binary").toString("base64");
680
+ }
681
+ function base64ToBytes(value) {
682
+ if (typeof atob === "function")
683
+ return latin1ToBytes(atob(value));
684
+ const buffer = getBuffer();
685
+ return new Uint8Array(buffer.from(value, "base64"));
686
+ }
687
+ function getBuffer() {
688
+ const maybeBuffer = globalThis
689
+ .Buffer;
690
+ if (!maybeBuffer) {
691
+ throw new Error("Base64 encoding requires btoa/atob or Buffer");
692
+ }
693
+ return maybeBuffer;
694
+ }
695
+ function fileStat(result) {
696
+ return {
697
+ isFile: true,
698
+ isDirectory: false,
699
+ isSymbolicLink: false,
700
+ mode: DEFAULT_FILE_MODE,
701
+ size: result.size,
702
+ mtime: coerceDate(result.modifiedAt ?? result.createdAt),
703
+ };
704
+ }
705
+ function directoryStat() {
706
+ return {
707
+ isFile: false,
708
+ isDirectory: true,
709
+ isSymbolicLink: false,
710
+ mode: DEFAULT_DIR_MODE,
711
+ size: 0,
712
+ mtime: new Date(),
713
+ };
714
+ }
715
+ function coerceDate(value) {
716
+ if (value instanceof Date)
717
+ return value;
718
+ if (typeof value === "string")
719
+ return new Date(value);
720
+ return new Date();
721
+ }
722
+ function stripTrailingSlash(value) {
723
+ return value.endsWith("/") ? value.slice(0, -1) : value;
724
+ }
725
+ function getEnv(name) {
726
+ const processLike = globalThis;
727
+ return processLike.process?.env?.[name];
728
+ }
729
+ function isFileInit(value) {
730
+ return (typeof value === "object" &&
731
+ value !== null &&
732
+ "content" in value &&
733
+ !("byteLength" in value));
734
+ }
735
+ function httpErrorFromBody(status, body) {
736
+ const message = body?.message ?? body?.error ?? "Request failed";
737
+ const suggestion = body?.suggestion ? `\n Suggestion: ${body.suggestion}` : "";
738
+ return new AgentFsHttpError(`${message}${suggestion}`, status, body?.error);
739
+ }
740
+ async function httpErrorFromResponse(response) {
741
+ const text = await response.text().catch(() => "");
742
+ try {
743
+ return httpErrorFromBody(response.status, text ? JSON.parse(text) : null);
744
+ }
745
+ catch {
746
+ return new AgentFsHttpError(`Unexpected response from daemon (${response.status}): ${text || "empty"}`, response.status);
747
+ }
748
+ }
749
+ function isNotFound(err) {
750
+ return err instanceof AgentFsHttpError && err.status === 404;
751
+ }
752
+ function isPathNotFound(err) {
753
+ return err instanceof Error && err.message.startsWith("ENOENT:");
754
+ }
755
+ function toPathError(err, operation, path) {
756
+ if (isNotFound(err)) {
757
+ return new Error(`ENOENT: no such file or directory, ${operation} '${path}'`);
758
+ }
759
+ return err instanceof Error ? err : new Error(String(err));
760
+ }
761
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,92 @@
1
+ export type ByteString = string & {
2
+ readonly __byteStringBrand: unique symbol;
3
+ };
4
+ export type BufferEncoding = "utf8" | "utf-8" | "ascii" | "binary" | "base64" | "hex" | "latin1";
5
+ export type FileContent = string | Uint8Array;
6
+ export interface ReadFileOptions {
7
+ encoding?: BufferEncoding | null;
8
+ }
9
+ export interface WriteFileOptions {
10
+ encoding?: BufferEncoding;
11
+ }
12
+ export interface FileEntry {
13
+ type: "file";
14
+ content: string | Uint8Array;
15
+ mode: number;
16
+ mtime: Date;
17
+ }
18
+ export interface DirectoryEntry {
19
+ type: "directory";
20
+ mode: number;
21
+ mtime: Date;
22
+ }
23
+ export interface SymlinkEntry {
24
+ type: "symlink";
25
+ target: string;
26
+ mode: number;
27
+ mtime: Date;
28
+ }
29
+ export interface LazyFileEntry {
30
+ type: "file";
31
+ lazy: () => string | Uint8Array | Promise<string | Uint8Array>;
32
+ mode: number;
33
+ mtime: Date;
34
+ }
35
+ export type FsEntry = FileEntry | LazyFileEntry | DirectoryEntry | SymlinkEntry;
36
+ export interface DirentEntry {
37
+ name: string;
38
+ isFile: boolean;
39
+ isDirectory: boolean;
40
+ isSymbolicLink: boolean;
41
+ }
42
+ export interface FsStat {
43
+ isFile: boolean;
44
+ isDirectory: boolean;
45
+ isSymbolicLink: boolean;
46
+ mode: number;
47
+ size: number;
48
+ mtime: Date;
49
+ }
50
+ export interface MkdirOptions {
51
+ recursive?: boolean;
52
+ }
53
+ export interface RmOptions {
54
+ recursive?: boolean;
55
+ force?: boolean;
56
+ }
57
+ export interface CpOptions {
58
+ recursive?: boolean;
59
+ }
60
+ export interface IFileSystem {
61
+ readFile(path: string, options?: ReadFileOptions | BufferEncoding): Promise<string>;
62
+ readFileBytes?(path: string): Promise<ByteString>;
63
+ readFileBuffer(path: string): Promise<Uint8Array>;
64
+ writeFile(path: string, content: FileContent, options?: WriteFileOptions | BufferEncoding): Promise<void>;
65
+ appendFile(path: string, content: FileContent, options?: WriteFileOptions | BufferEncoding): Promise<void>;
66
+ exists(path: string): Promise<boolean>;
67
+ stat(path: string): Promise<FsStat>;
68
+ mkdir(path: string, options?: MkdirOptions): Promise<void>;
69
+ readdir(path: string): Promise<string[]>;
70
+ readdirWithFileTypes?(path: string): Promise<DirentEntry[]>;
71
+ rm(path: string, options?: RmOptions): Promise<void>;
72
+ cp(src: string, dest: string, options?: CpOptions): Promise<void>;
73
+ mv(src: string, dest: string): Promise<void>;
74
+ resolvePath(base: string, path: string): string;
75
+ getAllPaths(): string[];
76
+ chmod(path: string, mode: number): Promise<void>;
77
+ symlink(target: string, linkPath: string): Promise<void>;
78
+ link(existingPath: string, newPath: string): Promise<void>;
79
+ readlink(path: string): Promise<string>;
80
+ lstat(path: string): Promise<FsStat>;
81
+ realpath(path: string): Promise<string>;
82
+ utimes(path: string, atime: Date, mtime: Date): Promise<void>;
83
+ }
84
+ export interface FileInit {
85
+ content: FileContent;
86
+ mode?: number;
87
+ mtime?: Date;
88
+ }
89
+ export type LazyFileProvider = () => string | Uint8Array | Promise<string | Uint8Array>;
90
+ export type InitialFiles = Record<string, FileContent | FileInit | LazyFileProvider>;
91
+ export type FileSystemFactory = (initialFiles?: InitialFiles) => IFileSystem;
92
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,41 @@
1
+ {
2
+ "name": "@desplega.ai/agent-fs-just-bash",
3
+ "version": "0.7.4",
4
+ "type": "module",
5
+ "description": "just-bash-compatible filesystem adapter for agent-fs",
6
+ "license": "MIT",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/desplega-ai/agent-fs.git",
10
+ "directory": "packages/just-bash"
11
+ },
12
+ "keywords": [
13
+ "agent-fs",
14
+ "just-bash",
15
+ "filesystem",
16
+ "bash",
17
+ "remote-filesystem"
18
+ ],
19
+ "exports": {
20
+ ".": {
21
+ "types": "./dist/index.d.ts",
22
+ "import": "./dist/index.js"
23
+ }
24
+ },
25
+ "files": [
26
+ "dist",
27
+ "README.md"
28
+ ],
29
+ "scripts": {
30
+ "build": "rm -rf dist tsconfig.tsbuildinfo && tsc -p tsconfig.json",
31
+ "prepublishOnly": "bun run build"
32
+ },
33
+ "peerDependencies": {
34
+ "just-bash": ">=3.0.1"
35
+ },
36
+ "peerDependenciesMeta": {
37
+ "just-bash": {
38
+ "optional": true
39
+ }
40
+ }
41
+ }