bash-tool 1.3.2 → 1.3.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.
@@ -5,10 +5,19 @@ export interface LoadFilesOptions {
5
5
  include?: string;
6
6
  };
7
7
  }
8
+ export interface FileEntry {
9
+ path: string;
10
+ content: Buffer;
11
+ }
8
12
  /**
9
- * Load files from inline definitions and/or a directory on disk.
10
- * Returns a record of relative paths to file contents.
13
+ * Stream files from inline definitions and/or a directory on disk.
14
+ * Yields files one at a time to avoid loading everything into memory.
11
15
  * If both are provided, inline files take precedence (override directory files).
12
16
  */
13
- export declare function loadFiles(options: LoadFilesOptions): Promise<Record<string, string>>;
17
+ export declare function streamFiles(options: LoadFilesOptions): AsyncGenerator<FileEntry>;
18
+ /**
19
+ * Get file paths from options without loading content.
20
+ * Useful for tool prompts and OverlayFs.
21
+ */
22
+ export declare function getFilePaths(options: LoadFilesOptions): Promise<string[]>;
14
23
  //# sourceMappingURL=loader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/files/loader.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,eAAe,CAAC,EAAE;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED;;;;GAIG;AACH,wBAAsB,SAAS,CAC7B,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAgCjC"}
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/files/loader.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,eAAe,CAAC,EAAE;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAuB,WAAW,CAChC,OAAO,EAAE,gBAAgB,GACxB,cAAc,CAAC,SAAS,CAAC,CAgC3B;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,MAAM,EAAE,CAAC,CA0BnB"}
@@ -2,34 +2,64 @@ import fs from "node:fs/promises";
2
2
  import path from "node:path";
3
3
  import fg from "fast-glob";
4
4
  /**
5
- * Load files from inline definitions and/or a directory on disk.
6
- * Returns a record of relative paths to file contents.
5
+ * Stream files from inline definitions and/or a directory on disk.
6
+ * Yields files one at a time to avoid loading everything into memory.
7
7
  * If both are provided, inline files take precedence (override directory files).
8
8
  */
9
- export async function loadFiles(options) {
10
- const result = {};
11
- // Load from directory first (so inline can override)
9
+ export async function* streamFiles(options) {
10
+ const yieldedPaths = new Set();
11
+ // Yield inline files first (they take precedence)
12
+ if (options.files) {
13
+ for (const [relativePath, content] of Object.entries(options.files)) {
14
+ yieldedPaths.add(relativePath);
15
+ yield { path: relativePath, content: Buffer.from(content) };
16
+ }
17
+ }
18
+ // Stream from directory (skip files already yielded from inline)
12
19
  if (options.uploadDirectory) {
13
20
  const { source, include = "**/*" } = options.uploadDirectory;
14
21
  const absoluteSource = path.resolve(source);
15
- const files = await fg(include, {
22
+ const foundPaths = await fg(include, {
16
23
  cwd: absoluteSource,
17
24
  dot: true,
18
25
  onlyFiles: true,
19
26
  ignore: ["**/node_modules/**", "**/.git/**"],
20
27
  });
21
- await Promise.all(files.map(async (relativePath) => {
28
+ for (const relativePath of foundPaths) {
29
+ if (yieldedPaths.has(relativePath)) {
30
+ continue; // Skip - inline file takes precedence
31
+ }
22
32
  const absolutePath = path.join(absoluteSource, relativePath);
23
- const content = await fs.readFile(absolutePath, "utf-8");
24
- result[relativePath] = content;
25
- }));
33
+ const content = await fs.readFile(absolutePath);
34
+ yield { path: relativePath, content };
35
+ }
36
+ }
37
+ }
38
+ /**
39
+ * Get file paths from options without loading content.
40
+ * Useful for tool prompts and OverlayFs.
41
+ */
42
+ export async function getFilePaths(options) {
43
+ const paths = [];
44
+ if (options.uploadDirectory) {
45
+ const { source, include = "**/*" } = options.uploadDirectory;
46
+ const absoluteSource = path.resolve(source);
47
+ const foundPaths = await fg(include, {
48
+ cwd: absoluteSource,
49
+ dot: true,
50
+ onlyFiles: true,
51
+ ignore: ["**/node_modules/**", "**/.git/**"],
52
+ });
53
+ paths.push(...foundPaths);
26
54
  }
27
- // Merge inline files (override directory files)
55
+ // Add inline file paths (may override some from directory)
28
56
  if (options.files) {
29
- for (const [relativePath, content] of Object.entries(options.files)) {
30
- result[relativePath] = content;
57
+ for (const relativePath of Object.keys(options.files)) {
58
+ if (!paths.includes(relativePath)) {
59
+ paths.push(relativePath);
60
+ }
31
61
  }
32
62
  }
33
- return result;
63
+ return paths;
34
64
  }
35
65
  //# sourceMappingURL=loader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/files/loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,WAAW,CAAC;AAU3B;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,OAAyB;IAEzB,MAAM,MAAM,GAA2B,EAAE,CAAC;IAE1C,qDAAqD;IACrD,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;QAC5B,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC;QAC7D,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAE5C,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,OAAO,EAAE;YAC9B,GAAG,EAAE,cAAc;YACnB,GAAG,EAAE,IAAI;YACT,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,CAAC,oBAAoB,EAAE,YAAY,CAAC;SAC7C,CAAC,CAAC;QAEH,MAAM,OAAO,CAAC,GAAG,CACf,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE;YAC/B,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;YAC7D,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YACzD,MAAM,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC;QACjC,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAED,gDAAgD;IAChD,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,KAAK,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACpE,MAAM,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC;QACjC,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/files/loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,WAAW,CAAC;AAe3B;;;;GAIG;AACH,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,WAAW,CAChC,OAAyB;IAEzB,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;IAEvC,kDAAkD;IAClD,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,KAAK,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACpE,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAC/B,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9D,CAAC;IACH,CAAC;IAED,iEAAiE;IACjE,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;QAC5B,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC;QAC7D,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAE5C,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,OAAO,EAAE;YACnC,GAAG,EAAE,cAAc;YACnB,GAAG,EAAE,IAAI;YACT,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,CAAC,oBAAoB,EAAE,YAAY,CAAC;SAC7C,CAAC,CAAC;QAEH,KAAK,MAAM,YAAY,IAAI,UAAU,EAAE,CAAC;YACtC,IAAI,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;gBACnC,SAAS,CAAC,sCAAsC;YAClD,CAAC;YACD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;YAC7D,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;YAChD,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;QACxC,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,OAAyB;IAEzB,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;QAC5B,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC;QAC7D,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAE5C,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,OAAO,EAAE;YACnC,GAAG,EAAE,cAAc;YACnB,GAAG,EAAE,IAAI;YACT,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,CAAC,oBAAoB,EAAE,YAAY,CAAC;SAC7C,CAAC,CAAC;QACH,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;IAC5B,CAAC;IAED,2DAA2D;IAC3D,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,KAAK,MAAM,YAAY,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACtD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;gBAClC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -22,12 +22,23 @@ export interface JustBashSandboxOptions {
22
22
  files?: Record<string, string>;
23
23
  /** Working directory */
24
24
  cwd?: string;
25
+ /**
26
+ * Use OverlayFs with this directory as root.
27
+ * Reads come from disk, writes stay in memory.
28
+ * When provided, `files` is ignored.
29
+ */
30
+ overlayRoot?: string;
25
31
  }
26
32
  /**
27
33
  * Creates a Sandbox implementation using just-bash (virtual bash environment).
28
34
  * Dynamically imports just-bash to keep it as an optional peer dependency.
35
+ *
36
+ * When `overlayRoot` is provided, uses OverlayFs for copy-on-write over a real directory.
37
+ * This avoids loading all files into memory - reads come from disk, writes stay in memory.
29
38
  */
30
- export declare function createJustBashSandbox(options?: JustBashSandboxOptions): Promise<Sandbox>;
39
+ export declare function createJustBashSandbox(options?: JustBashSandboxOptions): Promise<Sandbox & {
40
+ mountPoint?: string;
41
+ }>;
31
42
  /**
32
43
  * Check if an object is a just-bash Bash instance using duck-typing.
33
44
  */
@@ -1 +1 @@
1
- {"version":3,"file":"just-bash.d.ts","sourceRoot":"","sources":["../../src/sandbox/just-bash.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,OAAO,EAAE,MAAM,aAAa,CAAC;AAE1D;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;QACjC,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;IACH,EAAE,EAAE;QACF,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;QAC5C,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;KAC7D,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,wBAAwB;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,OAAO,CAAC,CAuClB;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,YAAY,CAK5D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAuBhE"}
1
+ {"version":3,"file":"just-bash.d.ts","sourceRoot":"","sources":["../../src/sandbox/just-bash.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,OAAO,EAAE,MAAM,aAAa,CAAC;AAE1D;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;QACjC,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;IACH,EAAE,EAAE;QACF,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;QAC5C,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;KAC7D,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,wBAAwB;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,OAAO,GAAG;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA8D5C;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,YAAY,CAK5D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CA2BhE"}
@@ -1,22 +1,42 @@
1
1
  /**
2
2
  * Creates a Sandbox implementation using just-bash (virtual bash environment).
3
3
  * Dynamically imports just-bash to keep it as an optional peer dependency.
4
+ *
5
+ * When `overlayRoot` is provided, uses OverlayFs for copy-on-write over a real directory.
6
+ * This avoids loading all files into memory - reads come from disk, writes stay in memory.
4
7
  */
5
8
  export async function createJustBashSandbox(options = {}) {
6
9
  // Dynamic import to handle optional peer dependency
7
10
  let Bash;
11
+ let OverlayFs;
8
12
  try {
9
13
  const module = await import("just-bash");
10
14
  Bash = module.Bash;
15
+ OverlayFs = module.OverlayFs;
11
16
  }
12
17
  catch {
13
18
  throw new Error('just-bash is not installed. Either install it with "npm install just-bash" or provide your own sandbox via the sandbox option.');
14
19
  }
15
- const bashEnv = new Bash({
16
- files: options.files,
17
- cwd: options.cwd,
18
- });
20
+ let bashEnv;
21
+ let mountPoint;
22
+ if (options.overlayRoot && OverlayFs) {
23
+ // Use OverlayFs for copy-on-write over a real directory
24
+ const overlay = new OverlayFs({ root: options.overlayRoot });
25
+ mountPoint = overlay.getMountPoint();
26
+ bashEnv = new Bash({
27
+ fs: overlay,
28
+ cwd: options.cwd ?? mountPoint,
29
+ });
30
+ }
31
+ else {
32
+ // Use in-memory filesystem with provided files
33
+ bashEnv = new Bash({
34
+ files: options.files,
35
+ cwd: options.cwd,
36
+ });
37
+ }
19
38
  return {
39
+ mountPoint,
20
40
  async executeCommand(command) {
21
41
  const result = await bashEnv.exec(command);
22
42
  return {
@@ -30,7 +50,10 @@ export async function createJustBashSandbox(options = {}) {
30
50
  },
31
51
  async writeFiles(files) {
32
52
  for (const file of files) {
33
- await bashEnv.fs.writeFile(file.path, file.content);
53
+ const content = typeof file.content === "string"
54
+ ? file.content
55
+ : file.content.toString("utf-8");
56
+ await bashEnv.fs.writeFile(file.path, content);
34
57
  }
35
58
  },
36
59
  };
@@ -63,7 +86,10 @@ export function wrapJustBash(bashInstance) {
63
86
  },
64
87
  async writeFiles(files) {
65
88
  for (const file of files) {
66
- await bashInstance.fs.writeFile(file.path, file.content);
89
+ const content = typeof file.content === "string"
90
+ ? file.content
91
+ : file.content.toString("utf-8");
92
+ await bashInstance.fs.writeFile(file.path, content);
67
93
  }
68
94
  },
69
95
  };
@@ -1 +1 @@
1
- {"version":3,"file":"just-bash.js","sourceRoot":"","sources":["../../src/sandbox/just-bash.ts"],"names":[],"mappings":"AA4BA;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,UAAkC,EAAE;IAEpC,oDAAoD;IACpD,IAAI,IAAqC,CAAC;IAC1C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;QACzC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CACb,gIAAgI,CACjI,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC;QACvB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,GAAG,EAAE,OAAO,CAAC,GAAG;KACjB,CAAC,CAAC;IAEH,OAAO;QACL,KAAK,CAAC,cAAc,CAAC,OAAe;YAClC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC3C,OAAO;gBACL,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;aAC1B,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,QAAQ,CAAC,QAAgB;YAC7B,OAAO,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACvC,CAAC;QAED,KAAK,CAAC,UAAU,CACd,KAA+C;YAE/C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACtD,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,GAAY;IACrC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAClD,MAAM,SAAS,GAAG,GAA8B,CAAC;IACjD,0CAA0C;IAC1C,OAAO,OAAO,SAAS,CAAC,IAAI,KAAK,UAAU,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,YAA0B;IACrD,OAAO;QACL,KAAK,CAAC,cAAc,CAAC,OAAe;YAClC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAChD,OAAO;gBACL,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;aAC1B,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,QAAQ,CAAC,QAAgB;YAC7B,OAAO,YAAY,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC5C,CAAC;QAED,KAAK,CAAC,UAAU,CACd,KAA+C;YAE/C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,YAAY,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"just-bash.js","sourceRoot":"","sources":["../../src/sandbox/just-bash.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"vercel.d.ts","sourceRoot":"","sources":["../../src/sandbox/vercel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,OAAO,EAAE,MAAM,aAAa,CAAC;AAE1D;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,CACV,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,MAAM,EAAE,KACZ,OAAO,CAAC;QACX,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;YAAE,MAAM,CAAC,EAAE,WAAW,CAAA;SAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;QAC7D,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;YAAE,MAAM,CAAC,EAAE,WAAW,CAAA;SAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;KAC9D,CAAC,CAAC;IACH,QAAQ,EAAE,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAC5E,UAAU,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,iBAAiB,CAUtE;AAaD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,iBAAiB,GAAG,OAAO,CAkC3E"}
1
+ {"version":3,"file":"vercel.d.ts","sourceRoot":"","sources":["../../src/sandbox/vercel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,OAAO,EAAE,MAAM,aAAa,CAAC;AAE1D;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,CACV,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,MAAM,EAAE,KACZ,OAAO,CAAC;QACX,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;YAAE,MAAM,CAAC,EAAE,WAAW,CAAA;SAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;QAC7D,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;YAAE,MAAM,CAAC,EAAE,WAAW,CAAA;SAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;KAC9D,CAAC,CAAC;IACH,QAAQ,EAAE,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAC5E,UAAU,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,iBAAiB,CAUtE;AAaD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,iBAAiB,GAAG,OAAO,CAqC3E"}
@@ -46,9 +46,12 @@ export function wrapVercelSandbox(vercelSandbox) {
46
46
  return streamToString(stream);
47
47
  },
48
48
  async writeFiles(files) {
49
+ // Convert all content to Buffer (binary) and write
49
50
  await vercelSandbox.writeFiles(files.map((f) => ({
50
51
  path: f.path,
51
- content: Buffer.from(f.content, "utf-8"),
52
+ content: Buffer.isBuffer(f.content)
53
+ ? f.content
54
+ : Buffer.from(f.content),
52
55
  })));
53
56
  },
54
57
  };
@@ -1 +1 @@
1
- {"version":3,"file":"vercel.js","sourceRoot":"","sources":["../../src/sandbox/vercel.ts"],"names":[],"mappings":"AAoBA;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,GAAY;IAC1C,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAClD,MAAM,SAAS,GAAG,GAA8B,CAAC;IACjD,oEAAoE;IACpE,OAAO,CACL,OAAO,SAAS,CAAC,SAAS,KAAK,QAAQ;QACvC,OAAO,SAAS,CAAC,UAAU,KAAK,UAAU;QAC1C,OAAO,SAAS,CAAC,QAAQ,KAAK,UAAU;QACxC,OAAO,SAAS,CAAC,UAAU,KAAK,UAAU,CAC3C,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,cAAc,CAAC,MAA6B;IACzD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,aAAgC;IAChE,OAAO;QACL,KAAK,CAAC,cAAc,CAAC,OAAe;YAClC,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;YACvE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBACzC,MAAM,CAAC,MAAM,EAAE;gBACf,MAAM,CAAC,MAAM,EAAE;aAChB,CAAC,CAAC;YACH,OAAO;gBACL,MAAM;gBACN,MAAM;gBACN,QAAQ,EAAE,MAAM,CAAC,QAAQ;aAC1B,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,QAAQ,CAAC,QAAgB;YAC7B,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YAChE,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBACpB,MAAM,IAAI,KAAK,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAC;YACjD,CAAC;YACD,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC;QAChC,CAAC;QAED,KAAK,CAAC,UAAU,CACd,KAA+C;YAE/C,MAAM,aAAa,CAAC,UAAU,CAC5B,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAChB,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC;aACzC,CAAC,CAAC,CACJ,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"vercel.js","sourceRoot":"","sources":["../../src/sandbox/vercel.ts"],"names":[],"mappings":"AAoBA;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,GAAY;IAC1C,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAClD,MAAM,SAAS,GAAG,GAA8B,CAAC;IACjD,oEAAoE;IACpE,OAAO,CACL,OAAO,SAAS,CAAC,SAAS,KAAK,QAAQ;QACvC,OAAO,SAAS,CAAC,UAAU,KAAK,UAAU;QAC1C,OAAO,SAAS,CAAC,QAAQ,KAAK,UAAU;QACxC,OAAO,SAAS,CAAC,UAAU,KAAK,UAAU,CAC3C,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,cAAc,CAAC,MAA6B;IACzD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,aAAgC;IAChE,OAAO;QACL,KAAK,CAAC,cAAc,CAAC,OAAe;YAClC,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;YACvE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBACzC,MAAM,CAAC,MAAM,EAAE;gBACf,MAAM,CAAC,MAAM,EAAE;aAChB,CAAC,CAAC;YACH,OAAO;gBACL,MAAM;gBACN,MAAM;gBACN,QAAQ,EAAE,MAAM,CAAC,QAAQ;aAC1B,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,QAAQ,CAAC,QAAgB;YAC7B,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YAChE,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBACpB,MAAM,IAAI,KAAK,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAC;YACjD,CAAC;YACD,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC;QAChC,CAAC;QAED,KAAK,CAAC,UAAU,CACd,KAAwD;YAExD,mDAAmD;YACnD,MAAM,aAAa,CAAC,UAAU,CAC5B,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAChB,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;oBACjC,CAAC,CAAC,CAAC,CAAC,OAAO;oBACX,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;aAC3B,CAAC,CAAC,CACJ,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../src/tool.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAW,MAAM,YAAY,CAAC;AAK9E;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,cAAc,CAClC,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,WAAW,CAAC,CAqFtB"}
1
+ {"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../src/tool.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAW,MAAM,YAAY,CAAC;AAO9E;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,cAAc,CAClC,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,WAAW,CAAC,CAkKtB"}
package/dist/tool.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import path from "node:path";
2
- import { loadFiles } from "./files/loader.js";
2
+ import { getFilePaths, streamFiles } from "./files/loader.js";
3
3
  import { createJustBashSandbox, isJustBash, wrapJustBash, } from "./sandbox/just-bash.js";
4
4
  import { isVercelSandbox, wrapVercelSandbox } from "./sandbox/vercel.js";
5
5
  import { createBashExecuteTool } from "./tools/bash.js";
@@ -8,6 +8,8 @@ import { createWriteFileTool } from "./tools/write-file.js";
8
8
  import { createToolPrompt } from "./tools-prompt.js";
9
9
  const DEFAULT_DESTINATION = "/workspace";
10
10
  const VERCEL_SANDBOX_DESTINATION = "/vercel/sandbox/workspace";
11
+ const WRITE_BATCH_SIZE = 20;
12
+ const DEFAULT_MAX_FILES = 1000;
11
13
  /**
12
14
  * Creates a bash tool with tools for AI agents.
13
15
  *
@@ -40,22 +42,15 @@ export async function createBashTool(options = {}) {
40
42
  ? VERCEL_SANDBOX_DESTINATION
41
43
  : DEFAULT_DESTINATION;
42
44
  const destination = options.destination ?? defaultDestination;
43
- // 1. Load files from disk and/or inline
44
- const loadedFiles = await loadFiles({
45
- files: options.files,
46
- uploadDirectory: options.uploadDirectory,
47
- });
48
- // 2. Prefix all file paths with destination
49
- const filesWithDestination = {};
50
- for (const [relativePath, content] of Object.entries(loadedFiles)) {
51
- const absolutePath = path.posix.join(destination, relativePath);
52
- filesWithDestination[absolutePath] = content;
53
- }
54
45
  // 3. Create or wrap sandbox
55
46
  let sandbox;
56
47
  let usingJustBash = false;
48
+ let fileList = [];
49
+ let workingDir = destination;
50
+ const maxFiles = options.maxFiles ?? DEFAULT_MAX_FILES;
57
51
  let fileWrittenPromise;
58
52
  if (options.sandbox) {
53
+ // External sandbox provided - stream files and write in batches
59
54
  // Check @vercel/sandbox first (more specific check)
60
55
  if (isVercelSandbox(options.sandbox)) {
61
56
  sandbox = wrapVercelSandbox(options.sandbox);
@@ -67,22 +62,91 @@ export async function createBashTool(options = {}) {
67
62
  else {
68
63
  sandbox = options.sandbox;
69
64
  }
70
- // Write files to existing sandbox in one call
71
- const filesToWrite = Object.entries(filesWithDestination).map(([filePath, content]) => ({ path: filePath, content }));
72
- if (filesToWrite.length > 0) {
73
- fileWrittenPromise = sandbox.writeFiles(filesToWrite);
65
+ // Get file paths for tool prompt (without loading content)
66
+ fileList = await getFilePaths({
67
+ files: options.files,
68
+ uploadDirectory: options.uploadDirectory,
69
+ });
70
+ // Check file limit
71
+ if (maxFiles > 0 && fileList.length > maxFiles) {
72
+ throw new Error(`Too many files to upload: ${fileList.length} files exceeds the limit of ${maxFiles}. ` +
73
+ `Either increase maxFiles, use a more restrictive include pattern in uploadDirectory, ` +
74
+ `or write files to the sandbox yourself before calling createBashTool.`);
74
75
  }
76
+ // Stream files and write in batches to avoid memory issues
77
+ fileWrittenPromise = (async () => {
78
+ let batch = [];
79
+ for await (const file of streamFiles({
80
+ files: options.files,
81
+ uploadDirectory: options.uploadDirectory,
82
+ })) {
83
+ batch.push({
84
+ path: path.posix.join(destination, file.path),
85
+ content: file.content,
86
+ });
87
+ if (batch.length >= WRITE_BATCH_SIZE) {
88
+ await sandbox.writeFiles(batch);
89
+ batch = [];
90
+ }
91
+ }
92
+ // Write remaining files
93
+ if (batch.length > 0) {
94
+ await sandbox.writeFiles(batch);
95
+ }
96
+ })();
75
97
  }
76
98
  else {
77
- // Create just-bash sandbox with files
78
- sandbox = await createJustBashSandbox({
79
- files: filesWithDestination,
80
- cwd: destination,
81
- });
99
+ // No external sandbox - use just-bash
82
100
  usingJustBash = true;
101
+ if (options.uploadDirectory && !options.files) {
102
+ // Use OverlayFs for uploadDirectory (avoids loading all files into memory)
103
+ const overlayRoot = path.resolve(options.uploadDirectory.source);
104
+ const result = await createJustBashSandbox({
105
+ overlayRoot,
106
+ });
107
+ sandbox = result;
108
+ // Get file paths without loading content (for tool prompt)
109
+ fileList = await getFilePaths({
110
+ uploadDirectory: options.uploadDirectory,
111
+ });
112
+ // Check file limit (even for OverlayFs, we list files for the tool prompt)
113
+ if (maxFiles > 0 && fileList.length > maxFiles) {
114
+ throw new Error(`Too many files: ${fileList.length} files exceeds the limit of ${maxFiles}. ` +
115
+ `Either increase maxFiles or use a more restrictive include pattern in uploadDirectory.`);
116
+ }
117
+ // Use the OverlayFs mount point as working directory
118
+ if (result.mountPoint) {
119
+ workingDir = result.mountPoint;
120
+ }
121
+ }
122
+ else {
123
+ // Load files into memory for in-memory filesystem
124
+ // For just-bash we need all files upfront, but stream to avoid peak memory
125
+ const filesWithDestination = {};
126
+ for await (const file of streamFiles({
127
+ files: options.files,
128
+ uploadDirectory: options.uploadDirectory,
129
+ })) {
130
+ const absolutePath = path.posix.join(destination, file.path);
131
+ filesWithDestination[absolutePath] = file.content.toString("utf-8");
132
+ }
133
+ fileList = await getFilePaths({
134
+ files: options.files,
135
+ uploadDirectory: options.uploadDirectory,
136
+ });
137
+ // Check file limit
138
+ if (maxFiles > 0 && fileList.length > maxFiles) {
139
+ throw new Error(`Too many files to load: ${fileList.length} files exceeds the limit of ${maxFiles}. ` +
140
+ `Either increase maxFiles, use a more restrictive include pattern in uploadDirectory, ` +
141
+ `or provide your own sandbox with files already written.`);
142
+ }
143
+ sandbox = await createJustBashSandbox({
144
+ files: filesWithDestination,
145
+ cwd: destination,
146
+ });
147
+ }
83
148
  }
84
149
  // 4. Discover available tools and generate prompt
85
- const fileList = Object.keys(loadedFiles);
86
150
  const [toolPrompt, _] = await Promise.all([
87
151
  createToolPrompt({
88
152
  sandbox,
@@ -95,7 +159,7 @@ export async function createBashTool(options = {}) {
95
159
  // 5. Create tools
96
160
  const bash = createBashExecuteTool({
97
161
  sandbox,
98
- cwd: destination,
162
+ cwd: workingDir,
99
163
  files: fileList,
100
164
  toolPrompt,
101
165
  extraInstructions: options.extraInstructions,
@@ -105,8 +169,8 @@ export async function createBashTool(options = {}) {
105
169
  });
106
170
  const tools = {
107
171
  bash,
108
- readFile: createReadFileTool({ sandbox, cwd: destination }),
109
- writeFile: createWriteFileTool({ sandbox, cwd: destination }),
172
+ readFile: createReadFileTool({ sandbox, cwd: workingDir }),
173
+ writeFile: createWriteFileTool({ sandbox, cwd: workingDir }),
110
174
  };
111
175
  return { bash, tools, sandbox };
112
176
  }
package/dist/tool.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tool.js","sourceRoot":"","sources":["../src/tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool.js","sourceRoot":"","sources":["../src/tool.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -10,7 +10,7 @@ export interface Sandbox {
10
10
  readFile(path: string): Promise<string>;
11
11
  writeFiles(files: Array<{
12
12
  path: string;
13
- content: string;
13
+ content: string | Buffer;
14
14
  }>): Promise<void>;
15
15
  }
16
16
  /**
@@ -129,6 +129,13 @@ export interface CreateBashToolOptions {
129
129
  * @default 30000
130
130
  */
131
131
  maxOutputLength?: number;
132
+ /**
133
+ * Maximum number of files to upload to the sandbox.
134
+ * If exceeded, an error is thrown guiding you to handle the upload yourself.
135
+ * Set to 0 to disable the limit.
136
+ * @default 1000
137
+ */
138
+ maxFiles?: number;
132
139
  }
133
140
  import type { createBashExecuteTool } from "./tools/bash.js";
134
141
  import type { createReadFileTool } from "./tools/read-file.js";
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "1.3.2",
6
+ "version": "1.3.4",
7
7
  "description": "Generic bash tool for AI agents, compatible with AI SDK",
8
8
  "type": "module",
9
9
  "main": "dist/index.js",