@skroyc/librarian 0.1.0 → 0.2.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.
Files changed (76) hide show
  1. package/README.md +4 -16
  2. package/dist/agents/context-schema.d.ts +1 -1
  3. package/dist/agents/context-schema.d.ts.map +1 -1
  4. package/dist/agents/context-schema.js +5 -2
  5. package/dist/agents/context-schema.js.map +1 -1
  6. package/dist/agents/react-agent.d.ts.map +1 -1
  7. package/dist/agents/react-agent.js +36 -27
  8. package/dist/agents/react-agent.js.map +1 -1
  9. package/dist/agents/tool-runtime.d.ts.map +1 -1
  10. package/dist/cli.d.ts +1 -1
  11. package/dist/cli.d.ts.map +1 -1
  12. package/dist/cli.js +53 -49
  13. package/dist/cli.js.map +1 -1
  14. package/dist/config.d.ts +1 -1
  15. package/dist/config.d.ts.map +1 -1
  16. package/dist/config.js +115 -69
  17. package/dist/config.js.map +1 -1
  18. package/dist/index.d.ts +1 -1
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +246 -150
  21. package/dist/index.js.map +1 -1
  22. package/dist/tools/file-finding.tool.d.ts +1 -1
  23. package/dist/tools/file-finding.tool.d.ts.map +1 -1
  24. package/dist/tools/file-finding.tool.js +70 -130
  25. package/dist/tools/file-finding.tool.js.map +1 -1
  26. package/dist/tools/file-listing.tool.d.ts +7 -1
  27. package/dist/tools/file-listing.tool.d.ts.map +1 -1
  28. package/dist/tools/file-listing.tool.js +96 -80
  29. package/dist/tools/file-listing.tool.js.map +1 -1
  30. package/dist/tools/file-reading.tool.d.ts +4 -1
  31. package/dist/tools/file-reading.tool.d.ts.map +1 -1
  32. package/dist/tools/file-reading.tool.js +107 -45
  33. package/dist/tools/file-reading.tool.js.map +1 -1
  34. package/dist/tools/grep-content.tool.d.ts +13 -1
  35. package/dist/tools/grep-content.tool.d.ts.map +1 -1
  36. package/dist/tools/grep-content.tool.js +186 -144
  37. package/dist/tools/grep-content.tool.js.map +1 -1
  38. package/dist/utils/error-utils.d.ts +9 -0
  39. package/dist/utils/error-utils.d.ts.map +1 -0
  40. package/dist/utils/error-utils.js +61 -0
  41. package/dist/utils/error-utils.js.map +1 -0
  42. package/dist/utils/file-utils.d.ts +1 -0
  43. package/dist/utils/file-utils.d.ts.map +1 -1
  44. package/dist/utils/file-utils.js +81 -9
  45. package/dist/utils/file-utils.js.map +1 -1
  46. package/dist/utils/format-utils.d.ts +25 -0
  47. package/dist/utils/format-utils.d.ts.map +1 -0
  48. package/dist/utils/format-utils.js +111 -0
  49. package/dist/utils/format-utils.js.map +1 -0
  50. package/dist/utils/gitignore-service.d.ts +10 -0
  51. package/dist/utils/gitignore-service.d.ts.map +1 -0
  52. package/dist/utils/gitignore-service.js +91 -0
  53. package/dist/utils/gitignore-service.js.map +1 -0
  54. package/dist/utils/logger.d.ts +2 -2
  55. package/dist/utils/logger.d.ts.map +1 -1
  56. package/dist/utils/logger.js +35 -34
  57. package/dist/utils/logger.js.map +1 -1
  58. package/dist/utils/path-utils.js +3 -3
  59. package/dist/utils/path-utils.js.map +1 -1
  60. package/package.json +1 -1
  61. package/src/agents/context-schema.ts +5 -2
  62. package/src/agents/react-agent.ts +667 -641
  63. package/src/agents/tool-runtime.ts +4 -4
  64. package/src/cli.ts +95 -57
  65. package/src/config.ts +192 -90
  66. package/src/index.ts +402 -180
  67. package/src/tools/file-finding.tool.ts +198 -310
  68. package/src/tools/file-listing.tool.ts +245 -202
  69. package/src/tools/file-reading.tool.ts +225 -138
  70. package/src/tools/grep-content.tool.ts +387 -307
  71. package/src/utils/error-utils.ts +95 -0
  72. package/src/utils/file-utils.ts +104 -19
  73. package/src/utils/format-utils.ts +190 -0
  74. package/src/utils/gitignore-service.ts +123 -0
  75. package/src/utils/logger.ts +112 -77
  76. package/src/utils/path-utils.ts +3 -3
@@ -1,121 +1,127 @@
1
- import { tool } from "langchain";
2
- import { z } from "zod";
3
1
  import fs from "node:fs/promises";
4
2
  import path from "node:path";
3
+ import { tool } from "langchain";
4
+ import { z } from "zod";
5
+ import { formatToolError, getToolSuggestion } from "../utils/error-utils.js";
6
+ import { getFileLineCount } from "../utils/file-utils.js";
7
+ import { formatDirectoryTree, } from "../utils/format-utils.js";
8
+ import { GitIgnoreService } from "../utils/gitignore-service.js";
5
9
  import { logger } from "../utils/logger.js";
6
- async function shouldIgnoreFile(filePath) {
7
- const basename = path.basename(filePath);
8
- if (basename.startsWith(".") && basename !== ".env") {
9
- const ignoredItems = [
10
- "node_modules",
11
- ".git",
12
- ".DS_Store",
13
- ".idea",
14
- ".vscode",
15
- ".pytest_cache",
16
- ];
17
- if (ignoredItems.includes(basename)) {
18
- return true;
19
- }
10
+ async function listDirectoryDFS(dirPath, includeHidden = false, recursive = false, maxDepth = 1, currentDepth = 0, gitignore) {
11
+ if (currentDepth >= maxDepth) {
12
+ return [];
20
13
  }
21
- const commonBuildDirs = ["dist", "build", "out", "target", "coverage"];
22
- if (commonBuildDirs.includes(basename) &&
23
- (await fs
24
- .stat(filePath)
25
- .then((s) => s.isDirectory())
26
- .catch(() => false))) {
27
- return true;
28
- }
29
- return false;
30
- }
31
- async function listDirectory(dirPath, includeHidden = false) {
32
14
  const entries = await fs.readdir(dirPath, { withFileTypes: true });
33
- const fileEntries = [];
15
+ const filteredEntries = [];
34
16
  for (const entry of entries) {
17
+ const fullPath = path.join(dirPath, entry.name);
35
18
  if (!includeHidden && entry.name.startsWith(".")) {
36
19
  continue;
37
20
  }
21
+ if (gitignore?.shouldIgnore(fullPath, entry.isDirectory())) {
22
+ continue;
23
+ }
24
+ filteredEntries.push(entry);
25
+ }
26
+ filteredEntries.sort((a, b) => {
27
+ if (a.isDirectory() !== b.isDirectory()) {
28
+ return a.isDirectory() ? -1 : 1;
29
+ }
30
+ return a.name.localeCompare(b.name);
31
+ });
32
+ const fileEntries = [];
33
+ for (const entry of filteredEntries) {
38
34
  const fullPath = path.join(dirPath, entry.name);
39
35
  try {
40
- if (!includeHidden && (await shouldIgnoreFile(fullPath))) {
41
- continue;
42
- }
43
36
  const stats = await fs.stat(fullPath);
44
- const name = path.basename(fullPath);
45
- logger.debug("TOOL", "Processing file entry", {
46
- name,
47
- isDirectory: stats.isDirectory(),
48
- });
49
37
  const metadata = {
50
- name,
38
+ name: entry.name,
51
39
  path: fullPath,
52
40
  isDirectory: stats.isDirectory(),
53
- size: stats.isFile() ? stats.size : undefined,
54
- modified: stats.mtime,
55
- permissions: stats.mode?.toString(8),
41
+ ...(stats.isFile() && { size: stats.size }),
42
+ depth: currentDepth,
56
43
  };
57
44
  fileEntries.push(metadata);
58
45
  }
59
46
  catch {
60
47
  }
61
48
  }
62
- fileEntries.sort((a, b) => {
63
- if (a.isDirectory !== b.isDirectory) {
64
- return a.isDirectory ? -1 : 1;
49
+ const CONCURRENCY_LIMIT = 50;
50
+ const files = fileEntries.filter((e) => !e.isDirectory);
51
+ for (let i = 0; i < files.length; i += CONCURRENCY_LIMIT) {
52
+ const batch = files.slice(i, i + CONCURRENCY_LIMIT);
53
+ let retries = 3;
54
+ while (retries > 0) {
55
+ try {
56
+ await Promise.all(batch.map(async (e) => {
57
+ e.lineCount = await getFileLineCount(e.path);
58
+ }));
59
+ break;
60
+ }
61
+ catch (error) {
62
+ if (error.code === "EMFILE" && retries > 0) {
63
+ retries--;
64
+ await new Promise((resolve) => setTimeout(resolve, 100));
65
+ }
66
+ else {
67
+ throw error;
68
+ }
69
+ }
65
70
  }
66
- return a.name.localeCompare(b.name);
67
- });
68
- return {
69
- entries: fileEntries,
70
- totalCount: fileEntries.length,
71
- filteredCount: fileEntries.length,
72
- };
71
+ }
72
+ const resultEntries = [];
73
+ for (const entry of fileEntries) {
74
+ const willRecurse = entry.isDirectory && recursive && currentDepth + 1 < maxDepth;
75
+ if (!(entry.isDirectory && recursive) ||
76
+ willRecurse ||
77
+ (entry.isDirectory && currentDepth === 0)) {
78
+ resultEntries.push(entry);
79
+ }
80
+ if (willRecurse) {
81
+ const subEntries = await listDirectoryDFS(entry.path, includeHidden, recursive, maxDepth, currentDepth + 1, gitignore);
82
+ resultEntries.push(...subEntries);
83
+ }
84
+ }
85
+ return resultEntries;
73
86
  }
74
- export const fileListTool = tool(async ({ directoryPath = ".", includeHidden = false }, config) => {
75
- const timingId = logger.timingStart("fileList");
76
- logger.info("TOOL", "file_list called", { directoryPath, includeHidden });
87
+ export const listTool = tool(async ({ directoryPath = ".", includeHidden = false, recursive = false, maxDepth = 1, }, config) => {
88
+ const timingId = logger.timingStart("list");
89
+ logger.info("TOOL", "list called", {
90
+ directoryPath,
91
+ includeHidden,
92
+ recursive,
93
+ maxDepth,
94
+ });
77
95
  try {
78
96
  const workingDir = config?.context?.workingDir;
79
97
  if (!workingDir) {
80
98
  throw new Error("Context with workingDir is required for file operations");
81
99
  }
82
- logger.debug("TOOL", "Working directory", {
83
- workingDir: workingDir.replace(Bun.env.HOME || "", "~"),
84
- });
85
100
  const resolvedPath = path.resolve(workingDir, directoryPath);
86
101
  const resolvedWorkingDir = path.resolve(workingDir);
87
102
  const relativePath = path.relative(resolvedWorkingDir, resolvedPath);
88
- logger.debug("TOOL", "Path validation", {
89
- resolvedPath: resolvedPath.replace(Bun.env.HOME || "", "~"),
90
- resolvedWorkingDir: resolvedWorkingDir.replace(Bun.env.HOME || "", "~"),
91
- relativePath,
92
- validated: !relativePath.startsWith(".."),
93
- });
94
103
  if (relativePath.startsWith("..")) {
95
- logger.error("PATH", "Directory path escapes working directory sandbox", undefined, { directoryPath, relativePath });
96
104
  throw new Error(`Directory path "${directoryPath}" attempts to escape working directory sandbox`);
97
105
  }
98
- const listing = await listDirectory(resolvedPath, includeHidden);
99
- let result = `Contents of directory: ${resolvedPath}\n\n`;
100
- result += `Total entries: ${listing.totalCount}\n\n`;
101
- for (const entry of listing.entries) {
102
- const type = entry.isDirectory ? "DIR" : "FILE";
103
- const size = entry.size ? ` (${entry.size} bytes)` : "";
104
- const lineCount = entry.lineCount ? ` (${entry.lineCount} lines)` : "";
105
- result += `${type} ${entry.name}${size}${lineCount}\n`;
106
- }
107
- logger.timingEnd(timingId, "TOOL", "file_list completed");
108
- logger.debug("TOOL", "Directory listing successful", {
109
- directoryPath,
110
- entryCount: listing.totalCount,
111
- dirCount: listing.entries.filter((e) => e.isDirectory).length,
112
- fileCount: listing.entries.filter((e) => !e.isDirectory).length,
113
- });
106
+ const gitignore = new GitIgnoreService(workingDir);
107
+ await gitignore.initialize();
108
+ const entries = await listDirectoryDFS(resolvedPath, includeHidden, recursive, maxDepth, 0, gitignore);
109
+ const treeOutput = formatDirectoryTree(entries);
110
+ const displayPath = relativePath === "" ? "." : relativePath;
111
+ let result = `Contents of directory: ${displayPath}\n\n`;
112
+ result += `Total entries: ${entries.length}\n\n`;
113
+ result += treeOutput;
114
+ logger.timingEnd(timingId, "TOOL", "list completed");
114
115
  return result;
115
116
  }
116
117
  catch (error) {
117
118
  logger.error("TOOL", "list failed", error instanceof Error ? error : new Error(String(error)), { directoryPath });
118
- return `Error listing directory: ${error.message}`;
119
+ return formatToolError({
120
+ operation: "list",
121
+ path: directoryPath,
122
+ cause: error,
123
+ suggestion: getToolSuggestion("list", directoryPath),
124
+ });
119
125
  }
120
126
  }, {
121
127
  name: "list",
@@ -127,6 +133,16 @@ export const fileListTool = tool(async ({ directoryPath = ".", includeHidden = f
127
133
  .optional()
128
134
  .default(false)
129
135
  .describe("Whether to include hidden files and directories. Defaults to `false`"),
136
+ recursive: z
137
+ .boolean()
138
+ .optional()
139
+ .default(false)
140
+ .describe("Whether to list subdirectories recursively. Defaults to `false`"),
141
+ maxDepth: z
142
+ .number()
143
+ .optional()
144
+ .default(1)
145
+ .describe("Maximum depth for recursive listing. Defaults to 1"),
130
146
  }),
131
147
  });
132
148
  //# sourceMappingURL=file-listing.tool.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"file-listing.tool.js","sourceRoot":"","sources":["../../src/tools/file-listing.tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file-listing.tool.js","sourceRoot":"","sources":["../../src/tools/file-listing.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAEL,mBAAmB,GACpB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAM5C,KAAK,UAAU,gBAAgB,CAC7B,OAAe,EACf,aAAa,GAAG,KAAK,EACrB,SAAS,GAAG,KAAK,EACjB,QAAQ,GAAG,CAAC,EACZ,YAAY,GAAG,CAAC,EAChB,SAA4B;IAK5B,IAAI,YAAY,IAAI,QAAQ,EAAE,CAAC;QAC7B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAGnE,MAAM,eAAe,GAA+B,EAAE,CAAC;IACvD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAGhD,IAAI,CAAC,aAAa,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACjD,SAAS;QACX,CAAC;QAGD,IAAI,SAAS,EAAE,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;YAC3D,SAAS;QACX,CAAC;QAED,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAGD,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAC5B,IAAI,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;YACxC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,MAAM,WAAW,GAAsB,EAAE,CAAC;IAE1C,KAAK,MAAM,KAAK,IAAI,eAAe,EAAE,CAAC;QACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACtC,MAAM,QAAQ,GAAoB;gBAChC,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE;gBAChC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;gBAC3C,KAAK,EAAE,YAAY;aACpB,CAAC;YAEF,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;QAET,CAAC;IACH,CAAC;IAGD,MAAM,iBAAiB,GAAG,EAAE,CAAC;IAC7B,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IAExD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,iBAAiB,EAAE,CAAC;QACzD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,iBAAiB,CAAC,CAAC;QAGpD,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,OAAO,OAAO,GAAG,CAAC,EAAE,CAAC;YACnB,IAAI,CAAC;gBACH,MAAM,OAAO,CAAC,GAAG,CACf,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;oBACpB,CAAC,CAAC,SAAS,GAAG,MAAM,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBAC/C,CAAC,CAAC,CACH,CAAC;gBACF,MAAM;YACR,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;oBACtE,OAAO,EAAE,CAAC;oBACV,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;gBAC3D,CAAC;qBAAM,CAAC;oBACN,MAAM,KAAK,CAAC;gBACd,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAGD,MAAM,aAAa,GAAsB,EAAE,CAAC;IAC5C,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;QAGhC,MAAM,WAAW,GACf,KAAK,CAAC,WAAW,IAAI,SAAS,IAAI,YAAY,GAAG,CAAC,GAAG,QAAQ,CAAC;QAMhE,IACE,CAAC,CAAC,KAAK,CAAC,WAAW,IAAI,SAAS,CAAC;YACjC,WAAW;YACX,CAAC,KAAK,CAAC,WAAW,IAAI,YAAY,KAAK,CAAC,CAAC,EACzC,CAAC;YACD,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;QAGD,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,UAAU,GAAG,MAAM,gBAAgB,CACvC,KAAK,CAAC,IAAI,EACV,aAAa,EACb,SAAS,EACT,QAAQ,EACR,YAAY,GAAG,CAAC,EAChB,SAAS,CACV,CAAC;YACF,aAAa,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC;AAGD,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAC1B,KAAK,EACH,EACE,aAAa,GAAG,GAAG,EACnB,aAAa,GAAG,KAAK,EACrB,SAAS,GAAG,KAAK,EACjB,QAAQ,GAAG,CAAC,GACb,EACD,MAAM,EACN,EAAE;IACF,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAE5C,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE;QACjC,aAAa;QACb,aAAa;QACb,SAAS;QACT,QAAQ;KACT,CAAC,CAAC;IAEH,IAAI,CAAC;QAEH,MAAM,UAAU,GAAG,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC;QAC/C,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CACb,yDAAyD,CAC1D,CAAC;QACJ,CAAC;QAGD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;QAC7D,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACpD,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC;QAGrE,IAAI,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CACb,mBAAmB,aAAa,gDAAgD,CACjF,CAAC;QACJ,CAAC;QAGD,MAAM,SAAS,GAAG,IAAI,gBAAgB,CAAC,UAAU,CAAC,CAAC;QACnD,MAAM,SAAS,CAAC,UAAU,EAAE,CAAC;QAG7B,MAAM,OAAO,GAAG,MAAM,gBAAgB,CACpC,YAAY,EACZ,aAAa,EACb,SAAS,EACT,QAAQ,EACR,CAAC,EACD,SAAS,CACV,CAAC;QAGF,MAAM,UAAU,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAGhD,MAAM,WAAW,GAAG,YAAY,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC;QAC7D,IAAI,MAAM,GAAG,0BAA0B,WAAW,MAAM,CAAC;QACzD,MAAM,IAAI,kBAAkB,OAAO,CAAC,MAAM,MAAM,CAAC;QACjD,MAAM,IAAI,UAAU,CAAC;QAErB,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAC;QACrD,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CACV,MAAM,EACN,aAAa,EACb,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EACzD,EAAE,aAAa,EAAE,CAClB,CAAC;QAEF,OAAO,eAAe,CAAC;YACrB,SAAS,EAAE,MAAM;YACjB,IAAI,EAAE,aAAa;YACnB,KAAK,EAAE,KAAK;YACZ,UAAU,EAAE,iBAAiB,CAAC,MAAM,EAAE,aAAa,CAAC;SACrD,CAAC,CAAC;IACL,CAAC;AACH,CAAC,EACD;IACE,IAAI,EAAE,MAAM;IACZ,WAAW,EACT,oHAAoH;IACtH,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;QAChE,aAAa,EAAE,CAAC;aACb,OAAO,EAAE;aACT,QAAQ,EAAE;aACV,OAAO,CAAC,KAAK,CAAC;aACd,QAAQ,CACP,sEAAsE,CACvE;QACH,SAAS,EAAE,CAAC;aACT,OAAO,EAAE;aACT,QAAQ,EAAE;aACV,OAAO,CAAC,KAAK,CAAC;aACd,QAAQ,CACP,iEAAiE,CAClE;QACH,QAAQ,EAAE,CAAC;aACR,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,OAAO,CAAC,CAAC,CAAC;aACV,QAAQ,CAAC,oDAAoD,CAAC;KAClE,CAAC;CACH,CACF,CAAC"}
@@ -1,9 +1,12 @@
1
1
  import { z } from "zod";
2
- export declare const fileReadTool: import("langchain").DynamicStructuredTool<z.ZodObject<{
2
+ export declare const viewTool: import("langchain").DynamicStructuredTool<z.ZodObject<{
3
3
  filePath: z.ZodString;
4
+ viewRange: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
4
5
  }, z.core.$strip>, {
5
6
  filePath: string;
7
+ viewRange?: [number, number] | undefined;
6
8
  }, {
7
9
  filePath: string;
10
+ viewRange?: [number, number] | undefined;
8
11
  }, string>;
9
12
  //# sourceMappingURL=file-reading.tool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"file-reading.tool.d.ts","sourceRoot":"","sources":["../../src/tools/file-reading.tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAoDxB,eAAO,MAAM,YAAY;;;;;;UAoGxB,CAAC"}
1
+ {"version":3,"file":"file-reading.tool.d.ts","sourceRoot":"","sources":["../../src/tools/file-reading.tool.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAyIxB,eAAO,MAAM,QAAQ;;;;;;;;;UAqGpB,CAAC"}
@@ -1,8 +1,10 @@
1
+ import path from "node:path";
1
2
  import { tool } from "langchain";
2
3
  import { z } from "zod";
3
- import path from "node:path";
4
- import { logger } from "../utils/logger.js";
4
+ import { formatToolError, getToolSuggestion } from "../utils/error-utils.js";
5
5
  import { isTextFile } from "../utils/file-utils.js";
6
+ import { withLineNumbers } from "../utils/format-utils.js";
7
+ import { logger } from "../utils/logger.js";
6
8
  function isImageFile(filePath) {
7
9
  const imageExtensions = new Set([
8
10
  ".png",
@@ -34,79 +36,139 @@ function isAudioFile(filePath) {
34
36
  const ext = path.extname(filePath).toLowerCase();
35
37
  return audioExtensions.has(ext);
36
38
  }
37
- async function readFileContent(filePath) {
39
+ function isBinaryFile(filePath) {
40
+ const binaryExtensions = new Set([
41
+ ".pdf",
42
+ ".zip",
43
+ ".gz",
44
+ ".tar",
45
+ ".rar",
46
+ ".7z",
47
+ ".exe",
48
+ ".dll",
49
+ ".so",
50
+ ".dylib",
51
+ ".class",
52
+ ".jar",
53
+ ".war",
54
+ ".ear",
55
+ ]);
56
+ const ext = path.extname(filePath).toLowerCase();
57
+ return binaryExtensions.has(ext);
58
+ }
59
+ async function readLinesInRange(filePath, viewRange) {
60
+ const file = Bun.file(filePath);
61
+ const stream = file.stream();
62
+ const reader = stream.getReader();
63
+ const decoder = new TextDecoder();
64
+ const lines = [];
65
+ let currentLine = 1;
66
+ const startLine = viewRange ? viewRange[0] : 1;
67
+ const endLine = viewRange ? viewRange[1] : -1;
68
+ let totalLines = 0;
69
+ let partialLine = "";
38
70
  try {
39
- return await Bun.file(filePath).text();
71
+ while (true) {
72
+ let chunk;
73
+ try {
74
+ const { done, value } = await reader.read();
75
+ if (done) {
76
+ if (partialLine) {
77
+ totalLines++;
78
+ if (currentLine >= startLine &&
79
+ (endLine === -1 || currentLine <= endLine)) {
80
+ lines.push(partialLine);
81
+ }
82
+ }
83
+ break;
84
+ }
85
+ chunk = decoder.decode(value, { stream: true });
86
+ }
87
+ catch (readError) {
88
+ reader.releaseLock();
89
+ throw new Error(`Failed to read file ${filePath}: ${readError.message}`);
90
+ }
91
+ const chunkLines = (partialLine + chunk).split("\n");
92
+ partialLine = chunkLines.pop() || "";
93
+ for (const line of chunkLines) {
94
+ if (currentLine >= startLine &&
95
+ (endLine === -1 || currentLine <= endLine)) {
96
+ lines.push(line);
97
+ }
98
+ currentLine++;
99
+ totalLines++;
100
+ if (endLine !== -1 && currentLine > endLine) {
101
+ await reader.cancel();
102
+ return { lines, totalLines: -1 };
103
+ }
104
+ }
105
+ }
40
106
  }
41
- catch (error) {
42
- const errorMessage = error instanceof Error ? error.message : "Unknown error";
43
- throw new Error(`Failed to read file: ${errorMessage}`);
107
+ finally {
108
+ reader.releaseLock();
44
109
  }
110
+ return { lines, totalLines };
45
111
  }
46
- export const fileReadTool = tool(async ({ filePath }, config) => {
47
- const timingId = logger.timingStart("fileRead");
48
- logger.info("TOOL", "file_read called", { filePath });
112
+ export const viewTool = tool(async ({ filePath, viewRange }, config) => {
113
+ const timingId = logger.timingStart("view");
114
+ logger.info("TOOL", "view called", { filePath, viewRange });
49
115
  try {
116
+ if (viewRange) {
117
+ const [start, end] = viewRange;
118
+ if (start < 1) {
119
+ throw new Error(`Invalid viewRange: start must be >= 1, got ${start}`);
120
+ }
121
+ if (end !== -1 && end < start) {
122
+ throw new Error(`Invalid viewRange: end (${end}) must be >= start (${start}) or -1 for end of file`);
123
+ }
124
+ }
50
125
  const workingDir = config?.context?.workingDir;
51
126
  if (!workingDir) {
52
127
  throw new Error("Context with workingDir is required for file operations");
53
128
  }
54
- logger.debug("TOOL", "Working directory", {
55
- workingDir: workingDir.replace(Bun.env.HOME || "", "~"),
56
- });
57
129
  const resolvedPath = path.resolve(workingDir, filePath);
58
130
  const resolvedWorkingDir = path.resolve(workingDir);
59
131
  const relativePath = path.relative(resolvedWorkingDir, resolvedPath);
60
- logger.debug("TOOL", "Path validation", {
61
- resolvedPath: resolvedPath.replace(Bun.env.HOME || "", "~"),
62
- resolvedWorkingDir: resolvedWorkingDir.replace(Bun.env.HOME || "", "~"),
63
- relativePath,
64
- validated: !relativePath.startsWith(".."),
65
- });
66
132
  if (relativePath.startsWith("..")) {
67
- logger.error("PATH", "File path escapes working directory sandbox", undefined, { filePath, relativePath });
68
133
  throw new Error(`File path "${filePath}" attempts to escape the working directory sandbox`);
69
134
  }
70
135
  if (isImageFile(resolvedPath) || isAudioFile(resolvedPath)) {
71
- logger.debug("TOOL", "File is media file", {
72
- filePath,
73
- fileType: isImageFile(resolvedPath) ? "image" : "audio",
74
- });
75
136
  return `This is a media file (${isImageFile(resolvedPath) ? "image" : "audio"}). Media files cannot be read as text. Path: ${filePath}`;
76
137
  }
138
+ if (isBinaryFile(resolvedPath)) {
139
+ return `This is a binary file (${path.extname(filePath)}). Binary files cannot be read as text. Path: ${filePath}`;
140
+ }
77
141
  const isText = await isTextFile(resolvedPath);
78
142
  if (!isText) {
79
- logger.debug("TOOL", "File is not a text file", { filePath });
80
143
  return `This file is not a text file and cannot be read as text. Path: ${filePath}`;
81
144
  }
82
- logger.debug("TOOL", "File type validated as text", { filePath });
83
- const content = await readFileContent(resolvedPath);
84
- const maxContentLength = 50_000;
85
- if (content.length > maxContentLength) {
86
- logger.debug("TOOL", "File content truncated", {
87
- filePath,
88
- originalSize: content.length,
89
- maxSize: maxContentLength,
90
- });
91
- logger.timingEnd(timingId, "TOOL", "file_read completed (truncated)");
92
- return `File content is too large (${content.length} characters). First ${maxContentLength} characters:\n\n${content.substring(0, maxContentLength)}\n\n[Content truncated due to length]`;
145
+ const { lines } = await readLinesInRange(resolvedPath, viewRange);
146
+ if (lines.length === 0) {
147
+ return "[File is empty]";
93
148
  }
94
- logger.timingEnd(timingId, "TOOL", "file_read completed");
95
- logger.debug("TOOL", "File read successful", {
96
- filePath,
97
- contentLength: content.length,
98
- });
99
- return `Content of file: ${filePath}\n\n${content}`;
149
+ const startLine = viewRange ? Math.max(1, viewRange[0]) : 1;
150
+ const formattedContent = withLineNumbers(lines, startLine);
151
+ logger.timingEnd(timingId, "TOOL", "view completed");
152
+ return formattedContent;
100
153
  }
101
154
  catch (error) {
102
- logger.error("TOOL", "file_read failed", error instanceof Error ? error : new Error(String(error)), { filePath });
103
- return `Error reading file: ${error.message}`;
155
+ logger.error("TOOL", "view failed", error instanceof Error ? error : new Error(String(error)), { filePath });
156
+ return formatToolError({
157
+ operation: "view",
158
+ path: filePath,
159
+ cause: error,
160
+ suggestion: getToolSuggestion("view", filePath),
161
+ });
104
162
  }
105
163
  }, {
106
- name: "file_read",
164
+ name: "view",
107
165
  description: "Read the contents of a file. Use this to examine the content of a specific file.",
108
166
  schema: z.object({
109
167
  filePath: z.string().describe("The path to the file to read"),
168
+ viewRange: z
169
+ .tuple([z.number(), z.number()])
170
+ .optional()
171
+ .describe("Optional tuple of [start, end] line numbers to display. Use -1 for end of file."),
110
172
  }),
111
173
  });
112
174
  //# sourceMappingURL=file-reading.tool.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"file-reading.tool.js","sourceRoot":"","sources":["../../src/tools/file-reading.tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file-reading.tool.js","sourceRoot":"","sources":["../../src/tools/file-reading.tool.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { z } from "zod";
2
- export declare const grepContentTool: import("langchain").DynamicStructuredTool<z.ZodObject<{
2
+ export declare const grepTool: import("langchain").DynamicStructuredTool<z.ZodObject<{
3
3
  searchPath: z.ZodString;
4
4
  query: z.ZodString;
5
5
  patterns: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString>>>;
@@ -7,6 +7,10 @@ export declare const grepContentTool: import("langchain").DynamicStructuredTool<
7
7
  regex: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
8
8
  recursive: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
9
9
  maxResults: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
10
+ contextBefore: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
11
+ contextAfter: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
12
+ exclude: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString>>>;
13
+ includeHidden: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
10
14
  }, z.core.$strip>, {
11
15
  searchPath: string;
12
16
  query: string;
@@ -15,6 +19,10 @@ export declare const grepContentTool: import("langchain").DynamicStructuredTool<
15
19
  regex: boolean;
16
20
  recursive: boolean;
17
21
  maxResults: number;
22
+ contextBefore: number;
23
+ contextAfter: number;
24
+ exclude: string[];
25
+ includeHidden: boolean;
18
26
  }, {
19
27
  searchPath: string;
20
28
  query: string;
@@ -23,5 +31,9 @@ export declare const grepContentTool: import("langchain").DynamicStructuredTool<
23
31
  regex?: boolean | undefined;
24
32
  recursive?: boolean | undefined;
25
33
  maxResults?: number | undefined;
34
+ contextBefore?: number | undefined;
35
+ contextAfter?: number | undefined;
36
+ exclude?: string[] | undefined;
37
+ includeHidden?: boolean | undefined;
26
38
  }, string>;
27
39
  //# sourceMappingURL=grep-content.tool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"grep-content.tool.d.ts","sourceRoot":"","sources":["../../src/tools/grep-content.tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAgNxB,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;UAmH3B,CAAC"}
1
+ {"version":3,"file":"grep-content.tool.d.ts","sourceRoot":"","sources":["../../src/tools/grep-content.tool.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA4KxB,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAoOpB,CAAC"}