hoomanjs 1.32.0 → 1.33.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 (60) hide show
  1. package/README.md +9 -0
  2. package/dist/acp/utils/tool-kind.js +1 -1
  3. package/dist/acp/utils/tool-kind.js.map +1 -1
  4. package/dist/acp/utils/tool-locations.js +1 -1
  5. package/dist/acp/utils/tool-locations.js.map +1 -1
  6. package/dist/chat/app.js.map +1 -1
  7. package/dist/core/agent/index.js +2 -1
  8. package/dist/core/agent/index.js.map +1 -1
  9. package/dist/core/models/ollama/index.js +4 -0
  10. package/dist/core/models/ollama/index.js.map +1 -1
  11. package/dist/core/modes/definitions.js +2 -2
  12. package/dist/core/modes/definitions.js.map +1 -1
  13. package/dist/core/prompts/harness/behaviour.md +10 -16
  14. package/dist/core/prompts/harness/communication.md +10 -19
  15. package/dist/core/prompts/harness/execution.md +8 -22
  16. package/dist/core/prompts/harness/guardrails.md +11 -18
  17. package/dist/core/prompts/modes/ask.md +6 -17
  18. package/dist/core/prompts/modes/plan.md +8 -25
  19. package/dist/core/prompts/runtime.js +2 -1
  20. package/dist/core/prompts/runtime.js.map +1 -1
  21. package/dist/core/prompts/static/filesystem.md +6 -36
  22. package/dist/core/prompts/static/planning.md +9 -32
  23. package/dist/core/prompts/static/shell.md +7 -30
  24. package/dist/core/prompts/static/skills.md +5 -16
  25. package/dist/core/prompts/static/web-search.md +6 -41
  26. package/dist/core/ripgrep/bootstrap.d.ts +1 -0
  27. package/dist/core/ripgrep/bootstrap.js +191 -0
  28. package/dist/core/ripgrep/bootstrap.js.map +1 -0
  29. package/dist/core/ripgrep/exec.d.ts +38 -0
  30. package/dist/core/ripgrep/exec.js +320 -0
  31. package/dist/core/ripgrep/exec.js.map +1 -0
  32. package/dist/core/ripgrep/index.d.ts +2 -0
  33. package/dist/core/ripgrep/index.js +3 -0
  34. package/dist/core/ripgrep/index.js.map +1 -0
  35. package/dist/core/ripgrep/tool.d.ts +18 -0
  36. package/dist/core/ripgrep/tool.js +101 -0
  37. package/dist/core/ripgrep/tool.js.map +1 -0
  38. package/dist/core/state/tool-approvals.js +1 -1
  39. package/dist/core/state/tool-approvals.js.map +1 -1
  40. package/dist/core/subagents/research.js +1 -1
  41. package/dist/core/subagents/research.js.map +1 -1
  42. package/dist/core/tools/filesystem.d.ts +0 -5
  43. package/dist/core/tools/filesystem.js +2 -60
  44. package/dist/core/tools/filesystem.js.map +1 -1
  45. package/dist/core/tools/grep.d.ts +1 -0
  46. package/dist/core/tools/grep.js +2 -0
  47. package/dist/core/tools/grep.js.map +1 -0
  48. package/dist/core/tools/index.d.ts +1 -0
  49. package/dist/core/tools/index.js +1 -0
  50. package/dist/core/tools/index.js.map +1 -1
  51. package/dist/core/utils/paths.d.ts +3 -0
  52. package/dist/core/utils/paths.js +3 -0
  53. package/dist/core/utils/paths.js.map +1 -1
  54. package/dist/core/utils/ripgrep.d.ts +1 -0
  55. package/dist/core/utils/ripgrep.js +2 -0
  56. package/dist/core/utils/ripgrep.js.map +1 -0
  57. package/dist/index.d.ts +1 -1
  58. package/dist/index.js +1 -1
  59. package/dist/index.js.map +1 -1
  60. package/package.json +3 -3
@@ -0,0 +1,320 @@
1
+ import { execFile } from "node:child_process";
2
+ import fs from "node:fs/promises";
3
+ import path from "node:path";
4
+ import { promisify } from "node:util";
5
+ import { normalizeUserPath } from "../utils/normalize-user-path.js";
6
+ const execFileAsync = promisify(execFile);
7
+ const DEFAULT_RESULT_LIMIT = 500;
8
+ const MAX_BUFFER_BYTES = 20 * 1024 * 1024;
9
+ const DEFAULT_TIMEOUT_MS = 60_000;
10
+ function toJsonValue(value) {
11
+ return JSON.parse(JSON.stringify(value));
12
+ }
13
+ function normalizeForGlob(inputPath) {
14
+ return inputPath.replace(/\\/g, "/");
15
+ }
16
+ function globToRegExp(pattern) {
17
+ const normalized = normalizeForGlob(pattern);
18
+ let regex = "^";
19
+ for (let i = 0; i < normalized.length; i += 1) {
20
+ const char = normalized[i];
21
+ const next = normalized[i + 1];
22
+ if (char === "*" && next === "*") {
23
+ regex += ".*";
24
+ i += 1;
25
+ continue;
26
+ }
27
+ if (char === "*") {
28
+ regex += "[^/]*";
29
+ continue;
30
+ }
31
+ if (char === "?") {
32
+ regex += "[^/]";
33
+ continue;
34
+ }
35
+ regex += /[\\^$+?.()|[\]{}]/.test(char) ? `\\${char}` : char;
36
+ }
37
+ regex += "$";
38
+ return new RegExp(regex, "i");
39
+ }
40
+ function decodeExecOutput(value) {
41
+ if (typeof value === "string") {
42
+ return value;
43
+ }
44
+ if (Buffer.isBuffer(value)) {
45
+ return value.toString("utf8");
46
+ }
47
+ return "";
48
+ }
49
+ function parseLimit(input) {
50
+ return input.head_limit ?? input.max_results ?? DEFAULT_RESULT_LIMIT;
51
+ }
52
+ function paginate(input, options) {
53
+ const offset = options.offset ?? 0;
54
+ const limit = options.limit;
55
+ const items = input.slice(offset, offset + limit);
56
+ return {
57
+ totalCount: input.length,
58
+ truncated: offset + items.length < input.length,
59
+ items,
60
+ offset,
61
+ limit,
62
+ };
63
+ }
64
+ export async function executeRipgrep(rgPath, args, options) {
65
+ const timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;
66
+ try {
67
+ const result = await execFileAsync(rgPath, args, {
68
+ cwd: options.cwd,
69
+ windowsHide: true,
70
+ maxBuffer: MAX_BUFFER_BYTES,
71
+ signal: options.signal,
72
+ timeout: timeoutMs,
73
+ env: {
74
+ ...process.env,
75
+ NO_COLOR: "1",
76
+ FORCE_COLOR: "0",
77
+ },
78
+ });
79
+ return {
80
+ stdout: decodeExecOutput(result.stdout),
81
+ stderr: decodeExecOutput(result.stderr),
82
+ code: 0,
83
+ };
84
+ }
85
+ catch (error) {
86
+ const err = error;
87
+ const stdout = decodeExecOutput(err.stdout);
88
+ const stderr = decodeExecOutput(err.stderr);
89
+ const code = typeof err.code === "number" ? err.code : -1;
90
+ // ripgrep exits 1 when no matches are found.
91
+ if (code === 1) {
92
+ return { stdout, stderr, code };
93
+ }
94
+ if (options.signal?.aborted) {
95
+ throw new Error("ripgrep command was cancelled.");
96
+ }
97
+ if (code === 2 &&
98
+ (stderr.includes("regex parse error") ||
99
+ stderr.includes("error parsing regex"))) {
100
+ throw new Error(`Invalid ripgrep pattern: ${stderr.trim()}`);
101
+ }
102
+ const message = stderr.trim() || err.message || "ripgrep execution failed.";
103
+ throw new Error(`ripgrep failed: ${message}`);
104
+ }
105
+ }
106
+ function appendSearchFlags(args, input) {
107
+ if (input.case_insensitive) {
108
+ args.push("-i");
109
+ }
110
+ if (input.fixed_strings) {
111
+ args.push("-F");
112
+ }
113
+ if (input.multiline) {
114
+ args.push("-U", "--multiline-dotall");
115
+ }
116
+ if (input.no_ignore) {
117
+ args.push("--no-ignore");
118
+ }
119
+ if (input.type) {
120
+ args.push(`--type=${input.type}`);
121
+ }
122
+ if (input.glob) {
123
+ args.push(`--glob=${input.glob}`);
124
+ }
125
+ for (const pattern of input.exclude_patterns ?? []) {
126
+ args.push(`--glob=!${pattern}`);
127
+ }
128
+ if (typeof input.context === "number") {
129
+ args.push("-C", String(input.context));
130
+ }
131
+ else {
132
+ if (typeof input.before === "number") {
133
+ args.push("-B", String(input.before));
134
+ }
135
+ if (typeof input.after === "number") {
136
+ args.push("-A", String(input.after));
137
+ }
138
+ }
139
+ }
140
+ async function requireExistingPath(inputPath) {
141
+ const targetPath = normalizeUserPath(inputPath);
142
+ const stat = await fs.stat(targetPath).catch(() => null);
143
+ if (!stat) {
144
+ throw new Error(`Path does not exist: ${targetPath}`);
145
+ }
146
+ return {
147
+ targetPath,
148
+ isFile: stat.isFile(),
149
+ isDirectory: stat.isDirectory(),
150
+ };
151
+ }
152
+ export async function runPathsMode(rgPath, input, context) {
153
+ const resolved = await requireExistingPath(input.path);
154
+ if (!resolved.isDirectory) {
155
+ throw new Error(`output_mode=paths requires a directory path, got: ${resolved.targetPath}`);
156
+ }
157
+ const command = await executeRipgrep(rgPath, ["--no-config", "--files", "--hidden", "--no-ignore", "."], {
158
+ cwd: resolved.targetPath,
159
+ signal: context?.agent.cancelSignal,
160
+ });
161
+ const matcher = globToRegExp(input.pattern);
162
+ const excludes = (input.exclude_patterns ?? []).map(globToRegExp);
163
+ const allMatches = [];
164
+ for (const line of command.stdout.split(/\r?\n/)) {
165
+ const relative = line.trim();
166
+ if (!relative) {
167
+ continue;
168
+ }
169
+ const normalized = normalizeForGlob(relative);
170
+ if (excludes.some((exclude) => exclude.test(normalized))) {
171
+ continue;
172
+ }
173
+ if (!matcher.test(normalized) && !matcher.test(path.basename(normalized))) {
174
+ continue;
175
+ }
176
+ allMatches.push(path.resolve(resolved.targetPath, relative));
177
+ }
178
+ const page = paginate(allMatches, {
179
+ offset: input.offset,
180
+ limit: parseLimit(input),
181
+ });
182
+ return toJsonValue({
183
+ path: resolved.targetPath,
184
+ pattern: input.pattern,
185
+ output_mode: "paths",
186
+ count: page.items.length,
187
+ total_count: page.totalCount,
188
+ offset: page.offset,
189
+ head_limit: page.limit,
190
+ truncated: page.truncated,
191
+ matches: page.items,
192
+ });
193
+ }
194
+ export async function runContentMode(rgPath, mode, input, context) {
195
+ const resolved = await requireExistingPath(input.path);
196
+ if (!resolved.isDirectory && !resolved.isFile) {
197
+ throw new Error(`Path is not searchable: ${resolved.targetPath}`);
198
+ }
199
+ const cwd = resolved.isDirectory
200
+ ? resolved.targetPath
201
+ : path.dirname(resolved.targetPath);
202
+ const searchTarget = resolved.isDirectory
203
+ ? "."
204
+ : path.basename(resolved.targetPath);
205
+ const args = ["--no-config", "--hidden", "--color", "never"];
206
+ if (mode === "content") {
207
+ args.push("--json", "--line-number", "--column", "--no-heading");
208
+ }
209
+ else if (mode === "files_with_matches") {
210
+ args.push("-l");
211
+ }
212
+ else {
213
+ args.push("--count", "--with-filename");
214
+ }
215
+ appendSearchFlags(args, input);
216
+ args.push("--", input.pattern, searchTarget);
217
+ const execution = await executeRipgrep(rgPath, args, {
218
+ cwd,
219
+ signal: context?.agent.cancelSignal,
220
+ });
221
+ if (mode === "content") {
222
+ const parsed = [];
223
+ for (const line of execution.stdout.split(/\r?\n/)) {
224
+ const jsonLine = line.trim();
225
+ if (!jsonLine) {
226
+ continue;
227
+ }
228
+ try {
229
+ const event = JSON.parse(jsonLine);
230
+ if (event.type !== "match" || !event.data?.path?.text) {
231
+ continue;
232
+ }
233
+ parsed.push({
234
+ file: path.resolve(cwd, event.data.path.text),
235
+ line: event.data.line_number ?? 0,
236
+ column: typeof event.data.submatches?.[0]?.start === "number"
237
+ ? event.data.submatches[0].start + 1
238
+ : null,
239
+ content: (event.data.lines?.text ?? "").replace(/\r?\n$/, ""),
240
+ });
241
+ }
242
+ catch {
243
+ continue;
244
+ }
245
+ }
246
+ const page = paginate(parsed, {
247
+ offset: input.offset,
248
+ limit: parseLimit(input),
249
+ });
250
+ return toJsonValue({
251
+ path: resolved.targetPath,
252
+ pattern: input.pattern,
253
+ output_mode: mode,
254
+ count: page.items.length,
255
+ total_count: page.totalCount,
256
+ offset: page.offset,
257
+ head_limit: page.limit,
258
+ truncated: page.truncated,
259
+ matches: page.items,
260
+ });
261
+ }
262
+ if (mode === "files_with_matches") {
263
+ const parsed = execution.stdout
264
+ .split(/\r?\n/)
265
+ .map((line) => line.trim())
266
+ .filter(Boolean)
267
+ .map((filePath) => path.resolve(cwd, filePath));
268
+ const page = paginate(parsed, {
269
+ offset: input.offset,
270
+ limit: parseLimit(input),
271
+ });
272
+ return toJsonValue({
273
+ path: resolved.targetPath,
274
+ pattern: input.pattern,
275
+ output_mode: mode,
276
+ count: page.items.length,
277
+ total_count: page.totalCount,
278
+ offset: page.offset,
279
+ head_limit: page.limit,
280
+ truncated: page.truncated,
281
+ files: page.items,
282
+ });
283
+ }
284
+ const counts = [];
285
+ for (const line of execution.stdout.split(/\r?\n/)) {
286
+ const trimmed = line.trim();
287
+ if (!trimmed) {
288
+ continue;
289
+ }
290
+ const suffix = trimmed.match(/:(\d+)$/);
291
+ if (!suffix || typeof suffix.index !== "number") {
292
+ continue;
293
+ }
294
+ const filePart = trimmed.slice(0, suffix.index);
295
+ const count = Number.parseInt(suffix[1], 10);
296
+ if (!Number.isFinite(count)) {
297
+ continue;
298
+ }
299
+ counts.push({
300
+ file: path.resolve(cwd, filePart),
301
+ count,
302
+ });
303
+ }
304
+ const page = paginate(counts, {
305
+ offset: input.offset,
306
+ limit: parseLimit(input),
307
+ });
308
+ return toJsonValue({
309
+ path: resolved.targetPath,
310
+ pattern: input.pattern,
311
+ output_mode: mode,
312
+ count: page.items.length,
313
+ total_count: page.totalCount,
314
+ offset: page.offset,
315
+ head_limit: page.limit,
316
+ truncated: page.truncated,
317
+ counts: page.items,
318
+ });
319
+ }
320
+ //# sourceMappingURL=exec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exec.js","sourceRoot":"","sources":["../../../src/core/ripgrep/exec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { ensureRipgrepPath } from "./bootstrap.js";
2
+ export { createGrepTools } from "./tool.js";
@@ -0,0 +1,3 @@
1
+ export { ensureRipgrepPath } from "./bootstrap.js";
2
+ export { createGrepTools } from "./tool.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/ripgrep/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,18 @@
1
+ export declare function createGrepTools(): import("@strands-agents/sdk").InvokableTool<{
2
+ pattern: string;
3
+ path: string;
4
+ output_mode: "content" | "paths" | "files_with_matches" | "count";
5
+ glob?: string | undefined;
6
+ type?: string | undefined;
7
+ exclude_patterns?: string[] | undefined;
8
+ context?: number | undefined;
9
+ before?: number | undefined;
10
+ after?: number | undefined;
11
+ case_insensitive?: boolean | undefined;
12
+ fixed_strings?: boolean | undefined;
13
+ multiline?: boolean | undefined;
14
+ no_ignore?: boolean | undefined;
15
+ head_limit?: number | undefined;
16
+ offset?: number | undefined;
17
+ max_results?: number | undefined;
18
+ }, import("@strands-agents/sdk").JSONValue>[];
@@ -0,0 +1,101 @@
1
+ import { tool } from "@strands-agents/sdk";
2
+ import { z } from "zod";
3
+ import { ensureRipgrepPath } from "./bootstrap.js";
4
+ import { runContentMode, runPathsMode } from "./exec.js";
5
+ function createGrepSchema() {
6
+ return z.object({
7
+ pattern: z.string().min(1).describe("Regex pattern to search for."),
8
+ path: z
9
+ .string()
10
+ .optional()
11
+ .default(".")
12
+ .describe("Directory or file path to search from."),
13
+ output_mode: z
14
+ .enum(["paths", "content", "files_with_matches", "count"])
15
+ .optional()
16
+ .default("paths")
17
+ .describe("Output mode for search results."),
18
+ glob: z
19
+ .string()
20
+ .optional()
21
+ .describe("Include only files matching this glob (ripgrep --glob)."),
22
+ type: z
23
+ .string()
24
+ .optional()
25
+ .describe("Restrict to a ripgrep file type (e.g. ts, js, py)."),
26
+ exclude_patterns: z
27
+ .array(z.string())
28
+ .optional()
29
+ .describe("Glob patterns to exclude from results."),
30
+ context: z
31
+ .number()
32
+ .int()
33
+ .min(0)
34
+ .optional()
35
+ .describe("Context lines around matches."),
36
+ before: z
37
+ .number()
38
+ .int()
39
+ .min(0)
40
+ .optional()
41
+ .describe("Lines before each match."),
42
+ after: z
43
+ .number()
44
+ .int()
45
+ .min(0)
46
+ .optional()
47
+ .describe("Lines after each match."),
48
+ case_insensitive: z
49
+ .boolean()
50
+ .optional()
51
+ .describe("Search case-insensitively (ripgrep -i)."),
52
+ fixed_strings: z
53
+ .boolean()
54
+ .optional()
55
+ .describe("Treat pattern as a literal string (ripgrep -F)."),
56
+ multiline: z
57
+ .boolean()
58
+ .optional()
59
+ .describe("Enable multiline matching (ripgrep -U --multiline-dotall)."),
60
+ no_ignore: z
61
+ .boolean()
62
+ .optional()
63
+ .describe("Ignore .gitignore/.ignore rules during search."),
64
+ head_limit: z
65
+ .number()
66
+ .int()
67
+ .min(1)
68
+ .optional()
69
+ .describe("Maximum number of results to return."),
70
+ offset: z
71
+ .number()
72
+ .int()
73
+ .min(0)
74
+ .optional()
75
+ .describe("Skip the first N results before returning output."),
76
+ max_results: z
77
+ .number()
78
+ .int()
79
+ .min(1)
80
+ .optional()
81
+ .describe("Compatibility alias for head_limit."),
82
+ });
83
+ }
84
+ export function createGrepTools() {
85
+ const schema = createGrepSchema();
86
+ return [
87
+ tool({
88
+ name: "grep",
89
+ description: "Search paths or file contents using ripgrep. Supports search_files-style filename matching and richer content search modes.",
90
+ inputSchema: schema,
91
+ callback: async (input, context) => {
92
+ const rgPath = await ensureRipgrepPath();
93
+ if (input.output_mode === "paths") {
94
+ return runPathsMode(rgPath, input, context);
95
+ }
96
+ return runContentMode(rgPath, input.output_mode, input, context);
97
+ },
98
+ }),
99
+ ];
100
+ }
101
+ //# sourceMappingURL=tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool.js","sourceRoot":"","sources":["../../../src/core/ripgrep/tool.ts"],"names":[],"mappings":"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"}
@@ -33,7 +33,7 @@ export const INTERNAL_ALWAYS_ALLOWED = new Set([
33
33
  "directory_tree",
34
34
  "get_file_info",
35
35
  "list_directory",
36
- "search_files",
36
+ "grep",
37
37
  // Planning session (mode / plan file)
38
38
  ENTER_PLAN_MODE_TOOL,
39
39
  EXIT_PLAN_MODE_TOOL,
@@ -1 +1 @@
1
- {"version":3,"file":"tool-approvals.js","sourceRoot":"","sources":["../../../src/core/state/tool-approvals.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-approvals.js","sourceRoot":"","sources":["../../../src/core/state/tool-approvals.ts"],"names":[],"mappings":"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"}
@@ -13,7 +13,7 @@ export const RESEARCH_SUBAGENT = {
13
13
  "read_multiple_files",
14
14
  "list_directory",
15
15
  "directory_tree",
16
- "search_files",
16
+ "grep",
17
17
  "get_file_info",
18
18
  "fetch",
19
19
  "web_search",
@@ -1 +1 @@
1
- {"version":3,"file":"research.js","sourceRoot":"","sources":["../../../src/core/subagents/research.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,YAAY,CAAC;AAEpC,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AAExE,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC;AAC/B,MAAM,aAAa,GAAG,aAAa,CAAC;AAiBpC,MAAM,CAAC,MAAM,iBAAiB,GAA2B;IACvD,EAAE,EAAE,UAAU;IACd,IAAI,EAAE,UAAU;IAChB,YAAY,EAAE,oBAAoB;IAClC,WAAW,EAAE,8CAA8C;IAC3D,KAAK,EAAE;QACL,WAAW;QACX,qBAAqB;QACrB,gBAAgB;QAChB,gBAAgB;QAChB,cAAc;QACd,eAAe;QACf,OAAO;QACP,YAAY;QACZ,OAAO;KACR;CACF,CAAC;AAEF,SAAS,aAAa,CAAC,MAAc;IACnC,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,WAAW,EAAE,2BAA2B,EAAE;QAC1C,UAAU,EAAE,MAAM,CAAC,UAAU;KAC9B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,MAAc,EACd,OAAuE;IAEvE,MAAM,KAAK,GAAG,iBAAiB,CAAC;IAChC,MAAM,UAAU,GAAG,OAAO,EAAE,UAAU,CAAC;IACvC,IAAI,CAAC,gBAAgB,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CACb,aAAa,KAAK,CAAC,EAAE,kCAAkC,KAAK,CAAC,YAAY,EAAE,CAC5E,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAG,iBAAiB,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAChE,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CACb,aAAa,KAAK,CAAC,EAAE,iCAAiC,KAAK,CAAC,YAAY,EAAE,CAC3E,CAAC;IACJ,CAAC;IAED,MAAM,oBAAoB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACxE,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,EAAE,oBAAoB,CAAC;SAC3E,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,aAAa,CAAC;SACnB,IAAI,EAAE,CAAC;IAEV,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CACb,aAAa,KAAK,CAAC,EAAE,2CAA2C,CACjE,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,UAAU;QACtB,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IAErB,OAAO;QACL,GAAG,KAAK;QACR,YAAY;QACZ,KAAK;KACN,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"research.js","sourceRoot":"","sources":["../../../src/core/subagents/research.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,YAAY,CAAC;AAEpC,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AAExE,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC;AAC/B,MAAM,aAAa,GAAG,aAAa,CAAC;AAiBpC,MAAM,CAAC,MAAM,iBAAiB,GAA2B;IACvD,EAAE,EAAE,UAAU;IACd,IAAI,EAAE,UAAU;IAChB,YAAY,EAAE,oBAAoB;IAClC,WAAW,EAAE,8CAA8C;IAC3D,KAAK,EAAE;QACL,WAAW;QACX,qBAAqB;QACrB,gBAAgB;QAChB,gBAAgB;QAChB,MAAM;QACN,eAAe;QACf,OAAO;QACP,YAAY;QACZ,OAAO;KACR;CACF,CAAC;AAEF,SAAS,aAAa,CAAC,MAAc;IACnC,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,WAAW,EAAE,2BAA2B,EAAE;QAC1C,UAAU,EAAE,MAAM,CAAC,UAAU;KAC9B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,MAAc,EACd,OAAuE;IAEvE,MAAM,KAAK,GAAG,iBAAiB,CAAC;IAChC,MAAM,UAAU,GAAG,OAAO,EAAE,UAAU,CAAC;IACvC,IAAI,CAAC,gBAAgB,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CACb,aAAa,KAAK,CAAC,EAAE,kCAAkC,KAAK,CAAC,YAAY,EAAE,CAC5E,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAG,iBAAiB,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAChE,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CACb,aAAa,KAAK,CAAC,EAAE,iCAAiC,KAAK,CAAC,YAAY,EAAE,CAC3E,CAAC;IACJ,CAAC;IAED,MAAM,oBAAoB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACxE,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,EAAE,oBAAoB,CAAC;SAC3E,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,aAAa,CAAC;SACnB,IAAI,EAAE,CAAC;IAEV,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CACb,aAAa,KAAK,CAAC,EAAE,2CAA2C,CACjE,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,UAAU;QACtB,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IAErB,OAAO;QACL,GAAG,KAAK;QACR,YAAY;QACZ,KAAK;KACN,CAAC;AACJ,CAAC"}
@@ -28,9 +28,4 @@ export declare function createFilesystemTools(): (import("@strands-agents/sdk").
28
28
  source: string;
29
29
  destination: string;
30
30
  overwrite?: boolean | undefined;
31
- }, JSONValue> | import("@strands-agents/sdk").InvokableTool<{
32
- path: string;
33
- pattern: string;
34
- exclude_patterns?: string[] | undefined;
35
- max_results?: number | undefined;
36
31
  }, JSONValue>)[];
@@ -9,7 +9,6 @@ import { readAttachmentAsBlocksOrBase64, } from "../utils/attachments.js";
9
9
  import { z } from "zod";
10
10
  const DEFAULT_READ_LIMIT = 250;
11
11
  const DEFAULT_MAX_READ_BYTES = 1024 * 1024;
12
- const DEFAULT_SEARCH_MAX_RESULTS = 500;
13
12
  const DEFAULT_TREE_DEPTH = 4;
14
13
  const SNIPPET_RADIUS = 3;
15
14
  const FAST_READ_MAX_BYTES = 10 * 1024 * 1024;
@@ -33,7 +32,8 @@ function resolveReadTimeAgentInstructions(filePath, context) {
33
32
  if (!context) {
34
33
  return undefined;
35
34
  }
36
- const loadedPaths = runtimeResolvedAgentInstructionPaths.get(context.agent) ?? new Set();
35
+ const loadedPaths = runtimeResolvedAgentInstructionPaths.get(context.agent) ??
36
+ new Set();
37
37
  const resolved = resolveAgentInstructionsForFile(filePath, {
38
38
  excludePaths: [...loadedPaths],
39
39
  });
@@ -424,36 +424,6 @@ async function buildTree(rootPath, options) {
424
424
  }
425
425
  return build(rootPath, 1);
426
426
  }
427
- async function searchFiles(rootPath, pattern, options) {
428
- const matcher = globToRegExp(pattern);
429
- const excludes = (options?.excludePatterns ?? []).map(globToRegExp);
430
- const maxResults = options?.maxResults ?? DEFAULT_SEARCH_MAX_RESULTS;
431
- const results = [];
432
- async function visit(currentPath) {
433
- if (results.length >= maxResults) {
434
- return;
435
- }
436
- const entries = await fs.readdir(currentPath, { withFileTypes: true });
437
- for (const entry of entries) {
438
- if (results.length >= maxResults) {
439
- return;
440
- }
441
- const fullPath = path.join(currentPath, entry.name);
442
- const relative = normalizeForGlob(path.relative(rootPath, fullPath) || entry.name);
443
- if (excludes.some((exclude) => exclude.test(relative))) {
444
- continue;
445
- }
446
- if (matcher.test(relative) || matcher.test(entry.name)) {
447
- results.push(fullPath);
448
- }
449
- if (entry.isDirectory()) {
450
- await visit(fullPath);
451
- }
452
- }
453
- }
454
- await visit(rootPath);
455
- return results;
456
- }
457
427
  function createFilesystemSchema() {
458
428
  return {
459
429
  readFile: z.object({
@@ -534,14 +504,6 @@ function createFilesystemSchema() {
534
504
  .optional()
535
505
  .describe("Overwrite destination if it exists."),
536
506
  }),
537
- searchFiles: z.object({
538
- path: z.string().describe("Root directory to search."),
539
- pattern: z
540
- .string()
541
- .describe("Glob-style pattern, e.g. '**/*.ts' or '*.md'."),
542
- exclude_patterns: z.array(z.string()).optional(),
543
- max_results: z.number().int().min(1).optional(),
544
- }),
545
507
  getFileInfo: z.object({
546
508
  path: z.string().describe("File or directory path."),
547
509
  }),
@@ -763,26 +725,6 @@ export function createFilesystemTools() {
763
725
  });
764
726
  },
765
727
  }),
766
- tool({
767
- name: "search_files",
768
- description: "Recursively search for files and directories under a root path using glob-style matching.",
769
- inputSchema: schema.searchFiles,
770
- callback: async (input) => {
771
- const rootPath = normalizeUserPath(input.path);
772
- await ensureExists(rootPath);
773
- await ensureDirectory(rootPath);
774
- const matches = await searchFiles(rootPath, input.pattern, {
775
- excludePatterns: input.exclude_patterns,
776
- maxResults: input.max_results,
777
- });
778
- return toJsonValue({
779
- path: rootPath,
780
- pattern: input.pattern,
781
- count: matches.length,
782
- matches,
783
- });
784
- },
785
- }),
786
728
  tool({
787
729
  name: "get_file_info",
788
730
  description: "Get metadata for a file or directory, including timestamps, size, type, and permissions.",